+
+
+::: info Bra meddelande
+
+- feat: add new prop `foo` on component `FBar`
+- fix: fix styling issue when clicking on `FBaz`
+
+:::
+
+
+
+
+::: danger Undvik
+
+- feat: add new prop
+- fix: fix styling
+
+:::
+
+
+
+
+Läs mer om [brytnade ändringar](#brytande-andringar).
+
+Vi använder [Commitlint][commitlint] för att upprätthålla formatet på commitmeddelanden.
+Commitlint anropas från git `commit-msg` hook (via `husky` från `.husky/commit-msg`) och är konfigurerat med att använda [`@forsakringskassan/commitlint-config`][commitlint-config].
+
+Läs mer om [git hooks](#git-hooks).
+
+[commitlint]: https://commitlint.js.org/
+[commitlint-config]: https://github.com/Forsakringskassan/commitlint-config
+
+Om det behövs kan man kringgå `commitlint` med `--no-verify`:
+
+```bash
+git commit --no-verify -m 'non-conforming message'
+```
+
+För feature-branches rekommenderar vi detta arbetsflödet för dina commits:
+
+1. För varje distinkt feature eller buggrättning, skapa en specifik och fristående commit (tänk på det som att den skulle gå att lägga en egen PR och mergas separat från övriga commits i din branch). Denna commit ska använda `feat` eller `fix` som type.
+2. Behöver du bygga vidare på en tidigare commit (i din branch) kan du antingen använda `git commit --fixup` eller skapar en ny commit med `refactor` som type.
+3. Innan det är dags för merge gör du en sista rebase över master där du slår ihop lämpliga commits, framförallt fixups men även de commits som använder `refactor` (var syfte inte är att göra en refaktorisering av kod som inte skapats i denna branch).
+
+## Changelog
+
+Changelog genereras automatiskt med [conventional-changelog][conventional-changelog] vid release.
+Konfigurationen kommer från [@forsakringskassan/semantic-release-config][semantic-release-config-changelog].
+
+Changelogen genereras utifrån en filtrerad lista med commits från föregående release.
+De commits som tas hänsyn till är commits där commitmeddelande använder:
+
+- Type `feat` (ny feature).
+- Type `fix` (buggrättning).
+- Type `perf (prestandaförbättring).
+- Type `revert` (revert av tidigare commit).
+- Commits som innehåller brytande ändringar. Läs mer om [brytande ändringar](#brytande-ändringar).
+
+Övriga commits visas ej i changelog.
+
+Den filtrerade listan grupperas därefter efter typ:
+
+1. Brytande ändringar
+2. Features
+3. Buggrättningar
+
+Exempelvis om vi har följande lista med commits sen föregående release:
+
+```
+fix: fix bug in component A (fixes XYZ-1234)
+feat: new component B (refs XYZ-4321)
+refactor: rewrite component C (refs XYZ-2345)
+fix: fix another bug in component A (fixes XYZ-5432)
+```
+
+Efter filtrering kommer listan reduceras till:
+
+```
+fix: fix bug in component A (fixes XYZ-1234)
+feat: new component B (refs XYZ-4321)
+fix: fix another bug in component A (fixes XYZ-5432)
+```
+
+Scope, om det inte explicit är satt, fylls i automatiskt:
+
+```
+fix(@fkui/vue): fix bug in component A (fixes XYZ-1234)
+feat(@fkui/design,@fkui/vue): new component B (refs XYZ-4321)
+fix(@fkui/logic): fix another bug in component A (fixes XYZ-5432)
+```
+
+Efter gruppering kommer listan transformerats till:
+
+```
+feat:
+ - feat(@fkui/design,@fkui/vue): new component B (refs XYZ-4321)
+
+fix:
+ - fix(@fkui/vue): fix bug in component A (fixes XYZ-1234)
+ - fix(@fkui/logic): fix another bug in component A (fixes XYZ-5432)
+```
+
+och utifrån det genereras följande nya rader i Changelog:
+
+```md
+## v1.2.3 (1999-12-31)
+
+### Features
+
+- **@fkui/design**, **@fkui/vue**: new component B (refs XYZ-4321)
+
+### Bug fixes
+
+- **@fkui/vue**: fix bug in component A (fixes XYZ-1234)
+- **@fkui/logic**: fix another bug in component A (fixes XYZ-5432)
+```
+
+Kom ihåg att om du använder squash merge för att merga din Pull Request så måste du skriva ett nytt commit-meddelande (i korrekt [format](#commits)), använd inte det commitmeddelande som föreslås som default.
+
+[conventional-changelog]: https://github.com/conventional-changelog/conventional-changelog
+[semantic-release-config-changelog]: https://github.com/Forsakringskassan/semantic-release-config/blob/main/packages/semantic-release-common/lib/changelog.js
+
+## Release
+
+Vi använder [Semantic Release][semantic-release] med [`semantic-release-lerna`][semantic-release-lerna] för att hantera releaser.
+
+Semantic release tar hand om:
+
+- Välja ut nästa versionsnummer utifrån de commits som skapats sen föregående release.
+- Uppdatera `package.json` filer med nytt versionsnummer, inklusive beroenden mellan paket.
+- Vid behov, bygga om leverabler (leverabler som är beroende av ett uppdaterat versionsnummer).
+- Uppdatera Changelog.
+- Skicka ut announcement till chatt "Ny release v1.2.3".
+- Publicera NPM-paket som ändrats sen föregående release, inklusive dependee paket.
+- Skapa tag i Git.
+
+Semantic release är konfigurerat med `@forsakringskassan/semantic-release-monorepo-config`, vars konfiguration ger:
+
+- Versioner är latched på minor-versioner, dvs alla paket kommer alltid ha samma major och minor men patch tillåts ändras.
+- Nästkommande version använder `fix` för patch, `feat` för minor och breaking för major.
+- Vilka commits som är relevanta att visa i changelog och vilket stycke.
+
+Semantic release inspekterar taggar för att avgöra vilken den företående versionen är.
+
+Vi går emot semantic release rekommendation och kör inte semantic-release vid varje commit på branchen utan vi triggar manuellt ett CI-jobb som kör semantic-release.
+Motiveringen är att vårat arbetsflöde i git inte fungerar väl med att släppa löpande varje commit samt att det finns visst manuellt arbete som behöver utföras.
+
+Läs mer om releaseprocess.
+
+I FKUI använder vi `master` som primär branch och vanliga releaser utgår från den branchen.
+
+[semantic-release]: https://semantic-release.gitbook.io/semantic-release
+[semantic-release-lerna]: https://github.com/ext/semantic-release-lerna/
+
+### Maintenance releaser
+
+Semantic release är konfigurerat att utöver `master` tillåta releaser från brancher likt `release/N.x` (exempelvis `release/4.x`).
+Det innebär att major versionen kommer vara v4.
+Det är viktigt att behålla branchen efteråt om man vill släppa fler releaser, behåller man inte den är det viktigt att senaste git taggen används när man skapar om branchen annars får man konflikter i versioner.
+
+## Git hooks
+
+Vi använder `husky` för att hantera git hooks, i `.husky` katalogen hittar du uppsättningen hooks som används.
+
+- `commit-msg` anropar `commitlint` för att validera formatet på commitmeddelande. Läs mer om commitlint.
+- `pre-commit` anropar `lint-staged` för att automatiskt korrigera formatering med prettier samt korrigera eslint fel. Läs mer om statisk kodanalys.
+
+## VSCode
+
+Vi använder Volar (`vue.volar`).
+
+Workspace kommer med en lista med rekommenderade extensions och är förinställd att fungera med dessa.
+
+## CI/CD
+
+:::alt toolchain-cicd
+
+:::
+
+## Underhåll
+
+I `scripts` finns repon lämpliga för diverse underhåll.
+Se dokumentation för respektive vad de gör och hur det används.
+
+[npm-install]: https://docs.npmjs.com/cli/v10/commands/npm-install
+[npm-ci]: https://docs.npmjs.com/cli/v10/commands/npm-ci
+[npm-exec]: https://docs.npmjs.com/cli/v10/commands/npm-exec
+[npx]: https://docs.npmjs.com/cli/v10/commands/npx
diff --git a/docs/guide/toolchain/pakethantering.md b/docs/guide/toolchain/pakethantering.md
new file mode 100644
index 0000000000..7c11442aa1
--- /dev/null
+++ b/docs/guide/toolchain/pakethantering.md
@@ -0,0 +1,75 @@
+---
+title: Pakethantering
+layout: content-with-menu
+---
+
+## Beroenden
+
+alla beroenden som paketet använder ska läggas in paketets egna package.json
+
+--save-exact
+--save-dev
+--save-prod
+
+Läs mer om [npm install](https://docs.npmjs.com/cli/v8/commands/npm-install)
+
+vi använder renovate
+
+### Interna beroenden
+
+Interna beroenden mellan paket måste också deklareras i `package.json`:
+
+- `devDependency`: här deklarerar vi exakt den version av beroendet som ska användas och **måste** motsvara versionen som finns i monorepot. Denna används enbart för utveckling av FKUI och påverkar inte konsumenter.
+- `peerDependency`: här deklarerar vi den major version av beroendet som ska användas. Konsumenten av FKUI nyttjar denna för att hålla ihop versioner.
+
+````json
+{
+ "name": "@fkui/foobar",
+ "version": "5.1.0",
+ "devDependencies": {
+ "@fkui/dependency": "5.1.0"
+ },
+ "peerDependency": {
+ "@fkui/dependency": "^5"
+ }
+}
+
+Kör `npm install` i root och verfiera i `package-lock.json` att inte en kopia installerats.
+
+Om din diff i `package-lock.json` lägger till rader likt nedan så installeras en kopia, se till att versionen av ditt beroende matchar versionen som finns i monorepot.
+
+```diff
++ "packages/vue/node_modules/@fkui/date": {
++ "version": "5.31.0",
++ "resolved": "https://registry.npmjs.com/@fkui/date/-/date-5.31.0.tgz",
++ "integrity": "sha512-DTQkWkHNIsR+OZiGLQKirKg/IJDBS2TY2zg6QLOVvTvwtgBFLsz2wlyyc9uMT09MVUUrRGnslThrZehhsd9TXg==",
++ "dev": true,
++ "license": "MIT",
++ "engines": {
++ "node": ">= 16",
++ "npm": ">= 7"
++ }
++ }
+````
+
+## Skapa nytt paket
+
+1. Skapa en ny katalog i `packages` eller `internal`.
+
+- `packages` används när paketet ska publiceras och användas av konsumenter.
+- `internal` används när paketet ej ska publiceras men nyttjas internt av FKUI.
+
+2. Skapa en ny `package.json`:
+ 1. Sätt `name` till `@fkui/${namn}` där `${namn}` motsvarar katalogens namn
+ 2. Sätt `version` samma version som finns i root `package.json`. Om din PR är långlivad kom ihåg att uppdatera `version` varje gång en ny release släpps tills din PR är merged.
+ 3. Om paketet är internt sätt `private` flaggan till `true`.
+3. Kör `npm install`
+
+Läs mer om package.json
+
+## Ta bort paket
+
+1. Ta bort eventuella beroenden till paketet.
+2. Ta bort katalogen som innehåller paketet.
+3. Kör `npm install`.
+4. Eftersom NPM inte städar bort samtliga referenser i `package-lock.json` öppna filen i din editor och sök upp kvarstående block som refererar till paketet.
diff --git a/docs/guide/toolchain/testverktyg.md b/docs/guide/toolchain/testverktyg.md
new file mode 100644
index 0000000000..e8803c5f5b
--- /dev/null
+++ b/docs/guide/toolchain/testverktyg.md
@@ -0,0 +1,123 @@
+---
+title: Testverktyg
+layout: content-with-menu
+---
+
+## Testfall
+
+Testfall i FKUI implementeras med två verktyg:
+
+- Jest för enhetstester
+- Cypress för komponenttester och E2E-tester
+
+Som en tumregel använder vi enhetstester för att testa logik, komponenttester för att testa interaktion och i undantagsfall E2E-tester för att testa integration.
+
+Samtliga tester körs från CI-miljö vid branch-byggen.
+PR-byggen kör inte komponenttester eller E2E-tester.
+
+Läs mer om [testning](testning).
+
+### Jest
+
+Paket utan ramverksspecifika komponenter samt logik för Vue-komponenter testas med Jest.
+Förrutom i undantagsfall testar vi inte interaktion med komponenter med Jest om än JSDOM och `@vue/test-utils` hanterar det.
+
+Enhetstester placeras i samma katalog som filen som ska testas och använder `${filename}.spec.ts` som filnamn.
+
+För Jest finns två färdiga presets:
+
+- `@forsakringskassan/jest-config`: för paket som är skriva i ren typescript, ej ramverksspecifikt.
+- `@forsakringskassan/jest-config-vue`: för paket med Vue-komponenter.
+
+Båda konfigurationer genererar både coverage och test resultat i maskinläsbart format i `coverage` samt `test-results` katalogerna.
+CI-miljö läser in samtliga filer.
+
+Jest anropas från respektive paket via `test` scriptet.
+`test` scriptet i root anropar i sin tur `test` i respektive paket.
+
+Läs mer om [@fkui/test-utils](test-utils).
+
+### Komponenttester (Cypress)
+
+Paket med Vue-komponenter testar vi interaktion och utseende med komponenten med Cypress Komponenttest.
+
+Komponenttester placeras i samma katalog som komponenten för komponenten och använder `${component}.cy.ts` som filnamn.
+
+Varje komponent bör ha minst ett komponenttest som testar det visuella utseendet i form av ett screenshot sk "screenshottester"
+Vi använder oss av `@forsakringskassan/cypress-visual-regression` för att skriva tester med skärmdumpar: visuell regressionstest.
+
+Läs mer om [screenshottester][testning].
+
+Cypress är konfigurerat i rootens `cypress.config.ts` och anropas direkt från root med `npm exec cypress open` (headed) alternativt `npm exec cypress run` (headless).
+
+Cypress är konfigurerat med följande plugins:
+
+- `@forsakringskassan/cypress-axe` för tillgänglighetstester med Axe.
+- `@forsakringskassan/cypress-visual-regression` för screenshottester (visuel regression).
+- `cypress-html-validate` för HTML validering.
+
+Konfigurationen genererar test resultat i maskinläsbart format i `test-results` katalogen.
+CI-miljö läser in filen.
+
+`tsconfig.json` i respektive paket med Cypress komponenttester pekar ut en separat `tsconfig.cypress.json` med specifik typescript konfiguration för Cypress:
+
+```json
+{
+ "extends": "../../cypress/tsconfig.json",
+ "compilerOptions": {
+ "composite": true
+ },
+ "include": [
+ "src/@types/cypress.d.ts",
+ "src/**/*.ts",
+ "src/**/*.vue",
+ "src/**/*.cy.ts"
+ ],
+ "exclude": ["src/**/*.spec.ts"]
+}
+```
+
+Läs mer om [tsconfig.json](#tsconfig-json).
+
+### E2E (Cypress)
+
+I undantagsfall kan E2E-tester användas där man vill testa ett större sammanhang.
+E2E-tester kör mot den genererade dokumentationen och kräver att den byggts och startats som en separat process.
+
+För att bygga och starta dokumentation:
+
+```bash
+npm run build
+npm run build:docs
+npm start
+```
+
+Därefter i en annan terminal kan E2E-tester startas:
+
+```bash
+npm exec cypress open
+```
+
+E2E-tester ska endast användas som en sista utväg.
+
+För konfiguration se [komponenttester](#komponenttester-cypress).
+
+## Statisk kodanalys och lintning
+
+FKUI använder flera verktyg för statisk kodanalys och lintning:
+
+- Prettier för att formatera kod.
+- ESLint för lintning av javascript-, typescript- och Vue-filer.
+- HTML-Validate för validering och analys av HTML i komponenter och exempel.
+- Stylelint för lintning av css- och sass-filer.
+
+Samtliga verktyg körs och är konfigurerade från root men i undantagsfall konfigureras verktygen om i respektive paket.
+Flera verktyg använder färdiga mallar för sin konfiguration, se respektive konfigurationsfil och dokumentation för detaljer.
+
+Vid commit anropas både Prettier och ESLint via husky (konfigurerat i `.husky/pre-commit`). Läs mer om git hooks.
+
+### Eslint
+
+Använder `@forsakringskassan/eslint-config`.
+
+Läs mer om dokumentationsexempel.