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:

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.

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.