Gå til innholdet

Kom i gang

Terminal window
npm install @fristil/designsystem

Pakken har ingen avhengigheter. Web-komponentene er vanlige HTMLElement-klasser, og ingenting registreres ved import alene, så en side som bare bruker CSS-komponentene tar ikke med noe JavaScript fra pakken. Tailwind-temaet er ren CSS, så pakken krever ingenting av Tailwind.

tokens.css definerer alle CSS-variablene. Alle andre stilark bygger på den, så den lastes først.

// main.js eller main.ts, øverst
import "@fristil/designsystem/tokens.css"
import "@fristil/designsystem/button.css"

Importer bare stilarkene du bruker. Det finnes ingen samlet CSS-fil, så en side med bare knapper laster ikke CSS for en datovelger.

Med tokens.css og button.css importert:

Ingen registrering, ingen oppstartskode. CSS-komponentene er bare klasser.

Ramme- og frittstående komponenter er egendefinerte elementer, og må registreres én gang når appen starter:

// main.ts, kjøres én gang
import "@fristil/designsystem/tokens.css"
import "@fristil/designsystem/field.css"
import { defineFsField } from "@fristil/designsystem/field"
defineFsField()

Flere kall er ufarlige, for funksjonen sjekker selv om elementet er registrert. Den gjør heller ingenting på en server, der det ikke finnes noen customElements å registrere i, så den kan stå i en fil som kjøres begge steder.

<fs-field required-marker="symbol">
<label>Fullt navn</label>
<input class="fs-input" type="text" name="navn" required />
</fs-field>

Får du en tom side, har define-funksjonen nesten alltid ikke kjørt.

Stilark

Hver komponent har sitt eget stilark, oppkalt etter siden sin: @fristil/designsystem/button.css, /checkbox.css, /table.css og så videre. Importer dem du bruker.

ImportInnhold
@fristil/designsystem/tokens.cssAlle CSS-variabler. Kreves av alt annet.
@fristil/designsystem/<komponent>.cssÉn komponent, med samme navn som siden dens
@fristil/designsystem/sr-only.css.fs-sr-only, tekst bare skjermlesere får
@fristil/designsystem/tailwind.cssFristils verdier som Tailwind-tema. Valgfri, se Tailwind.

Noen stilark samler det de trenger, så du slipper å importere delene hver for seg: field.css, error-summary.css, search.css og suggestion.css.

Alle web-komponentene trenger et stilark. Ingen av dem bruker shadow DOM, så elementene er alminnelige elementer med systemets klasser, og klassene må lastes på siden.

JavaScript og TypeScript

Hele komponent-API-et ligger i ett navnerom:

import { fs } from "@fristil/designsystem"
fs.button({ variant: "secondary" })
fs.input({ type: "email", state: "invalid" })
fs.badge({ color: "success" })

Skriv fs. i editoren, så ser du hva som finnes. Bruker du React, importer fra @fristil/designsystem/react. Kallene er de samme, men returverdien bruker className og htmlFor. Se Typesikker bruk.

ImportInnhold
@fristil/designsystemfs med alle komponentene, alle typene, og web component-registreringene
@fristil/designsystem/reactSamme fs, men med className og htmlFor
@fristil/designsystem/react-jsxTyper for de egendefinerte elementene i JSX
@fristil/designsystem/domsetAttributes: bruker et attributtsett på et element uten JSX
@fristil/designsystem/fielddefineFsField, klassen FsField
@fristil/designsystem/session-timeoutdefineFsSessionTimeout, klassen FsSessionTimeout
@fristil/designsystem/connection-statusdefineFsConnectionStatus, klassen FsConnectionStatus
@fristil/designsystem/tabsdefineFsTabs, klassen FsTabs
@fristil/designsystem/error-summarydefineFsErrorSummary, klassen FsErrorSummary
@fristil/designsystem/popoverdefineFsPopover, klassen FsPopover
@fristil/designsystem/toastdefineFsToast, klassen FsToast
@fristil/designsystem/suggestiondefineFsSuggestion, klassen FsSuggestion
@fristil/designsystem/dialogdefineFsDialog, klassen FsDialog
@fristil/designsystem/field-corecomputeFieldAttributes: det fs.field og <fs-field> deler
@fristil/designsystem/host-elementHostElement og defineElement: grunnlaget web-komponentene arver fra
@fristil/designsystem/tokenscssTokens, CssToken, Breakpoints, Containers

Hver komponent finnes også som eget inngangspunkt (@fristil/designsystem/button, /badge, /link og så videre) med en funksjon som heter det samme som komponenten.

fs er valgfritt. class="fs-button" data-variant="secondary" for hånd gir samme resultat; funksjonene finnes for å fange skrivefeil.

Pakken følger semantisk versjonering. Det offentlige API-et er større enn funksjonene: klassenavnene, data-*-attributtene, part-navnene, tokennavnene, --fs-*-variablene og oppføringene i exports er alle noe du kan bygge på, og de endres ikke uten et nytt hovedtall.

Hva som er endret i hver versjon står i CHANGELOG.md, som også følger med i pakken.

  • Rammeverk: konkret oppsett for ren HTML, React, Astro og Datastar
  • Design tokens: hvilke variabler som finnes, og hva de heter
  • Tailwind: oppsett og Fristils verdier som utility-klasser
  • Button: den enkleste komponenten å begynne med
  • Mønstre: hele skjemaer, lister og sider satt sammen