An open API service indexing awesome lists of open source software.

https://github.com/fremtind/jokul

Jøkul er et designsystem utviklet av Fremtind.
https://github.com/fremtind/jokul

design-system designsystem fremtind react sass scss

Last synced: 2 months ago
JSON representation

Jøkul er et designsystem utviklet av Fremtind.

Awesome Lists containing this project

README

          

# Jøkul

[Jøkul](https://jokul.fremtind.no) er et designsystem utviklet av [Fremtind](https://fremtind.no).

Jøkul gir deg ferdige React-komponenter samt CSS- og SCSS-stilark for de grunnleggende komponentene og designmønstrene til Fremtind. De følger Fremtinds designprinsipper.

React-komponentene våre er den raskeste og enkleste måten å ta i bruk Jøkul. Alle komponenter og stilark leveres nå som én konsolidert pakke: `@fremtind/jokul`. CSSen er tilgjengelig som separate stilark, så om du ikke bruker React kan du fremdeles bruke Jøkul.

## Kom i gang

For å starte utviklingsserveren for Jøkul lokalt må du først ha installert:

- [Node](https://nodejs.org/en)-versjonen definert i [`.nvmrc`](./.nvmrc), gjerne via [Node Version Manager (NVM)](https://github.com/nvm-sh/nvm).
- [pnpm](https://pnpm.io/installation#using-corepack), gjerne via `corepack` eller `npm`.
- På de nye Fremtind-Macene kan det hende at du må installere `corepack` via Homebrew for at det skal fungere ordentlig: Installer med `brew install corepack`, og gjør klar med `corepack install` inne i Jøkul-mappa.

## Oppstart og utvikling

For å komme i gang med Jøkul-prosjektet, klon repoet og installer avhengighetene:

- Kjør `pnpm i` på rot i repoet for å installere avhengighetene.
- Kjør `pnpm dev` for å starte portal + Storybook.
- Kjør `pnpm dev:portal` for kun portalen.
- Kjør `pnpm dev:storybook` for kun Storybook.

### Oppsett av linting og formatering

Vi bruker verktøyet [Biome](https://biomejs.dev/) for både formatering og linting av koden i prosjektet. Linting og formatering skjer automatisk ved commit, men vi anbefaler også at du setter opp IDEen din til å bruke Biome så den ikke krangler med våre innstillinger.

Det finnes plugins for både [VSCode](https://marketplace.visualstudio.com/items?itemName=biomejs.biome) og [IntelliJ](https://plugins.jetbrains.com/plugin/22761-biome), som må installeres for å få funksjonaliteten i editoren. Etter å ha installert plugin-en må du fortelle editoren at den skal bruke Biome for formatering og linting.

#### Oppsett av Biome i VSCode

Etter å ha installert plugin-en, åpne innstillingene og søk på `format`. Velg Biome under valget "Editor: Default Formatter". **NB!** vi anbefaler at du gjør dette under "Workspace", siden de fleste andre prosjekter bruker Prettier for formatering.

Skjermbilde 2025-05-23 kl  10 08 09

Deretter kan du søke etter `eslint` og fjerne avkrysningen ved "Eslint: Enable", for å unngå at Eslint krangler med Biome. Sørg også for at "Eslint > Format: Enable" er skrudd av. Disse endringene bør også gjøres under "Workspace".

Skjermbilde 2025-05-23 kl  10 10 41

### Tips under utvikling

- Kjør `pnpm reboot` om du kommer tilbake til Jøkul-prosjektet etter en stund, eller noe ikke fungerer som du forventer.
- Om du opplever feil fra `nx`, prøv `pnpm dlx nx reset` og kjør kommandoen på nytt.

## Releases

Repoet bruker Changesets på standard måte med `.changeset/config.json`, changeset-filer i `.changeset/` og `changesets/action` i GitHub Actions.

Vi bruker to tydelige release-brancher:

- `main` publiserer stabile versjoner.
- `release/next` publiserer prereleases med npm-taggen `next`.

Dette er splittet i to egne GitHub Actions-workflows: én for stabile releases og én for prereleases.

I tillegg synkes `release/next` automatisk med `main` ved hver push til `main`, slik at prerelease-branchen holder seg oppdatert med det som allerede er merged og publisert stabilt. Hvis synken treffer mergekonflikter gjenbrukes en fast sync-branch og én sync-PR inn mot `release/next` for manuell konfliktløsning. Når sync-PR-en ikke lenger trengs, ryddes sync-branchen opp automatisk så lenge den ikke inneholder egne commits som mangler i `release/next`.

### Relevante scripts

- `pnpm changeset` oppretter en changeset.
- `pnpm release:version` kjører `changeset version`.
- `pnpm release:pre:enter` kjører `changeset pre enter next`.
- `pnpm release:pre:exit` kjører `changeset pre exit`.
- `pnpm release:publish` bygger og publiserer.

### Anbefalt prerelease-flyt

`release/next` er den faste branchen for prereleases.

1. Gå til `release/next`.
2. Hvis vi starter en ny prerelease-runde og `.changeset/pre.json` ikke finnes, kjør `pnpm release:pre:enter`.
3. Hvis `.changeset/pre.json` ble opprettet eller endret, commit filen til `release/next`.
4. Lag en branch fra `release/next`.
5. Gjør endringene dine på branchen.
6. Hvis endringen skal publiseres, kjør `pnpm changeset`.
7. Lag en PR inn mot `release/next`.
8. Når PR-en merges til `release/next`, håndterer CI prerelease-versjonering og publisering med `next`.
9. Når innholdet i `release/next` er ferdig testet og klart for stabil release, kjør `pnpm release:pre:exit`, deretter `pnpm release:version`, og commit resultatet på `release/next`.
10. Merge `release/next` tilbake til `main`. Neste publisering fra `main` går da ut som en vanlig stabil versjon.

Steg 2 og 3 er bare nødvendig når vi starter en ny prerelease-runde. Filen `.changeset/pre.json` forteller Changesets og CI at `release/next` er i prerelease-modus med taggen `next`.

Kort sagt: `main` er for stabile releases, og `release/next` er for testing og publisering av prereleases.

### Bruk av pakkene

Vi har en egen guide som hjelper deg med å [komme i gang](https://github.com/fremtind/jokul/tree/main/packages/jokul#fremtindjokul) som ny bruker av Jøkul.

## Dokumentasjon

I [dokumentasjonen](https://jokul.fremtind.no/) finner du:

- Informasjon om hvordan du bruker Jøkul.
- Designprinsippene til Fremtind.
- Detaljert dokumentasjon for hver komponent, inkludert eksempler.
- Guider for ulike ting, blant annet [hvordan gjøre endringer i Jøkul](https://jokul.fremtind.no/guider/hvordan-endre-jokul).
- [Bloggen vår](https://jokul.fremtind.no/blog/), med jevnlige oppsummeringer av hva som er nytt i Jøkul.

## Code of Conduct

Jøkul er et åpent og positivt felleskap der alle skal føle seg velkommen. Gjør deg kjent med [våre etiske regler for bidragsytere](./CODE_OF_CONDUCT.md) før du deltar med bidrag.

## Lisens

Jøkul er distribuert under [MIT-lisensen](./LICENSE) for åpen kildekode.

## Bidragsytere

Takk for bidrag fra disse flotte menneskene ([emoji-oversikt](https://allcontributors.org/docs/en/emoji-key)):



Pio Rasch-Halvorsen
Pio Rasch-Halvorsen

💻 👀 📖 🐛
Glenn A. Brownlee
Glenn A. Brownlee

📆 📋 🐛
Leiv Fredrik Berge
Leiv Fredrik Berge

💻 📖 🚇 👀
Simen Sægrov
Simen Sægrov

💻 👀 🐛
Steinop
Steinop

🎨
ambientconflict
ambientconflict

💻
Nicolai Hagen
Nicolai Hagen

💻


Stian Liknes
Stian Liknes

💻
hhannestad
hhannestad

🎨
idalower
idalower

📖
Gorild
Gorild

📖 👀
Mikkel Blytt
Mikkel Blytt

🎨 📖
Martinvks
Martinvks

💻
Kristoffer Nordström
Kristoffer Nordström

💻


Frida Thorkildsen Solhaug
Frida Thorkildsen Solhaug

💻 👀
Vegard Sørlie
Vegard Sørlie

💻 🐛
Bjørn Ole Bakke
Bjørn Ole Bakke

💻
almli
almli

💻
Thomas Rognes
Thomas Rognes

💻
Sigve Hagesæter
Sigve Hagesæter

🐛
EspenSmith
EspenSmith

🤔


Murstam
Murstam

🎨
fremtind-bot
fremtind-bot

📖
Jo Emil Holen
Jo Emil Holen

💻 📖 🐛 📝 👀
eduardodir
eduardodir

💻
Sercan Leylek
Sercan Leylek

💻 📝 🐛
CamillaDahlstroem
CamillaDahlstroem

🎨
Mikail Arslan
Mikail Arslan

💻 🚇


Fridaks
Fridaks

💻
Lars-Are Gudmundsen
Lars-Are Gudmundsen

💻
Audun Berdal
Audun Berdal

💻 📖
fremtind-tony
fremtind-tony

📖
Jarle Berentzen
Jarle Berentzen

💻
stormoen
stormoen

🎨
Kenneth Apeland
Kenneth Apeland

💻 📝 🐛 👀


Henrik Hermansen
Henrik Hermansen

💻
Bjørne Oma
Bjørne Oma

💻 🐛 👀
William Killerud
William Killerud

📖 🚇 💻 🐛 📝
Espen Kvalvik
Espen Kvalvik

💻 🐛
Adrian Andersen
Adrian Andersen

🚇
Kathrine
Kathrine

🎨
Tom
Tom

💻 🐛


Knut Eirik Leira Hjelle
Knut Eirik Leira Hjelle

🐛 💻
karimarkhus
karimarkhus

🐛 🎨
Håvard Pedersen
Håvard Pedersen

🐛 💻 👀
Øyvind Nordbø
Øyvind Nordbø

🎨
David Aasterud
David Aasterud

🐛 💻
Mats Sommervold
Mats Sommervold

📖
Christopher T. Hennum
Christopher T. Hennum

🐛 💻


Marius Ingjer
Marius Ingjer

🐛
Francis Paulin
Francis Paulin

💻
hegebjo
hegebjo

💻
Mathias Rundgreen
Mathias Rundgreen

🐛
Elise Brenna
Elise Brenna

💻
maciejost
maciejost

💻
sigrande
sigrande

🐛 💻


markusleitvoll
markusleitvoll

🐛
Glenn Arnold Barosen
Glenn Arnold Barosen

🤔 👀
Kristian Ulvund
Kristian Ulvund

📖 💻

Dette prosjektet følger retningslinjene i spesifikasjonen [all-contributors](https://github.com/all-contributors/all-contributors). Vi setter pris på alle bidrag!