Kom i gang som utvikler
Designsystemet Punkt skal hjelpe deg som utvikler i Origo Ă„ komme raskt i gang med Ă„ bygge digitale lĂžsninger som fĂžlger Oslo kommunes visuelle identitet og som er universelt utformet.
Koden til Punkt er delt opp i ulike pakker:
- punkt-assets - Ikoner, fonter og logoer
- punkt-css - Stilsett og -hjelpere for Punkts ressurser og komponenter
- punkt-elements - Punkts Web Components-komponenter
- punkt-react - Punkts React-komponenter
- punkt-testing-utils - VerktĂžy for Ă„ forenkle enhetstesting
Minstekravet for Ă„ komme igang med Punkt er Ă„ installere assets
og css
. Deretter kan du velge om du trenger elements
eller react
.
assets
, css
og elements
kan brukes fra vÄr CDN uten noen byggesteg, og det Þnskes. Men de fleste velger Ä installere pakkene inn i sitt prosjekt. Se egne CDN-instrukser dersom du Þnsker Ä bruke Punkt fra CDN. Alle andre instrukser forutsetter at du laster ned vÄre pakker fra NPM.
Designsystemet Punkt leveres ogsÄ som et bibliotek i designverktÞyet Figma. I tverfaglige team er det naturlig at utviklere og designere jobber tett sammen ogsÄ i designprosessen. Vi anbefaler at alle utviklere har tilgang til Punkt i Figma.
CSS og assets
Punkt CSS er basert pÄ Sass
, og for Ä fÄ mest mulig utbytte av vÄre stilsett anbefaler vi at dere bruker SCSS
-filene vÄre fremfor de genererte CSS-filene.
Start med Ă„ legge til de nĂždvendige pakker i prosjektet ditt:
npm add -D sass
npm add @oslokommune/punkt-assets
npm add @oslokommune/punkt-css
Deretter kan du inkludere Punkt i hoved-stilsettet ditt:
/* Overstyr stien til fontene. */
@use "@oslokommune/punkt-css/dist/scss/abstracts/variables" with (
$font-path: "@oslokommune/punkt-assets/dist"
);
/* Hent inn Punkts stiler */
@use "@oslokommune/punkt-css/dist/scss/pkt";
Og vips er du i gang! Det er mulig du mÄ fjerne noen av dine lokale stiler (f.eks. font-family) dersom de krasjer med Punkt.
Les mer om verktÞyene og hjelpeklassene vÄre under de forskjellige Ressurser-sidene.
React
VÊr oppmerksom pÄ at Punkt React er avhengig av Punkt CSS. En del av vÄre React-komponenter tar internt i bruk komponenter fra Punkt Elements. Mer om dette lenger ned.
For Ă„ installere Punkt React:
npm add @oslokommune/punkt-react
Det er alt du strengt tatt trenger Ä gjÞre. For instrukser om hvordan du tar i bruk komponentene og hva du kan gjÞre med dem kan du lese pÄ de enkelte komponenters dokumentasjonssider.
Eksempel:
import { PktButton, PktInput } from "@oslokommune/punkt-react";
...
<PktTextInput label="First name" id="firstName" />
<PktButton skin="primary" variant="icon-left" iconName="user">
Testbutton
</PktButton>
OBS: VÄre React-komponenter bruker ikoner og ressurser fra vÄr CDN. Dersom du bruker en Content Security Policy (CSP) mÄ du Äpne for Ä hente ressurser fra https://punkt-cdn.oslo.kommune.no/
.
Dersom du har enhetstester i lĂžsningen din kan det vĂŠre at du mĂ„ tilrettelegge litt spesielt for de React-komponenter som internt tar i bruk Punkt Elements. Sjekk komponentens dokumentasjon under avsnittene for âImplementasjon i kodeâ om du er usikker.
Elements
Punkt Elements er vÄre komponenter som er bygger pÄ web components-teknologi. Det betyr at de kan tas i bruk i alle frontendrammeverk og til og med rett i HTML.
For Ă„ installere komponentene:
npm add @oslokommune/punkt-elements
Og deretter kan du finne instrukser for hver komponent under âImplementasjon i kodeâ pĂ„ komponentens dokumentasjonsside.
Eksempel:
import @oslokommune/punkt-elements/dist/pkt-textinput.js;
import @oslokommune/punkt-elements/dist/pkt-button.js;
<pkt-textinput label="Fornavn" name="fornavn"></pkt-textinput>
<pkt-button type="submit"><span>Dette er en knapp</span></pkt-button>
VÊr oppmerksom pÄ at dersom du skal ha reaktivt innhold (innhold som kan forandre seg programmatisk) i komponentene anbefaler vi at det pakkes inn i en span
eller div
eller liknende.
CDN
Dersom du Þnsker Ä ta i bruk CSS, ressurser og Elements-komponenter fra CDN kan det enkelt gjÞres ved Ä inkludere disse rett inn i prosjektet ditt. VÊr dog oppmerksom pÄ at dersom du bruker CSP kan du stÞte pÄ utfordringer. Legg inn https://punkt-cdn.oslo.kommune.no/
i CSP-reglene dine om sÄ.
Vi anbefaler Ä enkelt og greit inkludere hele CSS-rammeverket vÄrt, men om du heller vil velge ut hva du Þnsker Ä inkludere kan du finne rett fil ved Ä lete i vÄr CDN.
Her er et eksempel pÄ hvordan du kan ta i bruk Punkt i en ren HTML-side:
<!doctype html>
<html lang="no">
<head>
<meta charset="utf-8" />
<title>Punkt</title>
<link
href="https://punkt-cdn.oslo.kommune.no/latest/css/pkt.min.css"
rel="stylesheet"
/>
<script
src="https://punkt-cdn.oslo.kommune.no/latest/elements/pkt-consent.js"
type="module"
></script>
</head>
<body>
<pkt-consent
id="osloConsent"
triggerType="link"
triggerText="Ă
pne samtykkemodal"
devMode
></pkt-consent>
<script>
const consent = document.querySelector("#osloConsent");
consent.addEventListener("toggle-consent", (event) => {
console.log(event.detail);
});
</script>
</body>
</html>
Akkurat nÄ har vi en liten bug i Punkt Elements som gjÞr at for Ä fÄ komponentene til Ä oppfÞre seg riktig fra CDN mÄ du legge inn denne kodesnutten fÞr du laster inn komponentene:
<script>
// Workaround for "process is not defined" i nettlesermiljĂžer
window.process = window.process || {};
window.process.env = window.process.env || {};
window.process.env.NODE_ENV = window.process.env.NODE_ENV || "production";
</script>
Trenger du hjelp?
Dersom du stÞter pÄ noen problemer eller utfordringer mÄ du ikke nÞle med Ä ta kontakt med oss! Den enkleste mÄten Ä fÄ kontakt med oss er pÄ Slack-kanalen vÄr, men vi har ogsÄ en epost-adresse du kan nÄ oss pÄ: punkt@origo.oslo.kommune.no.