@klodd/ds 3.3.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/SKILL.md +56 -0
  2. package/bin/klodd-ds.js +25 -0
  3. package/bin/precache.js +43 -0
  4. package/bin/sync.js +33 -0
  5. package/bin/verify.js +66 -0
  6. package/css/00-primitives.css +13 -4
  7. package/css/10-semantic.css +3 -3
  8. package/css/components/dropdown.css +1 -1
  9. package/css/components/setting-row.css +1 -1
  10. package/css/components/tab-bar.css +1 -1
  11. package/css/components/tooltip.css +1 -1
  12. package/css/utilities.css +101 -67
  13. package/package.json +12 -3
  14. package/references/01-tokens.md +182 -0
  15. package/references/02-components.md +260 -0
  16. package/references/03-quality-bar.md +238 -0
  17. package/references/04-locked-decisions/0001-three-layer-token-architecture.md +41 -0
  18. package/references/04-locked-decisions/0002-bem-naming.md +37 -0
  19. package/references/04-locked-decisions/0003-radix-colors-oklch.md +39 -0
  20. package/references/04-locked-decisions/0004-pixel-numeric-spacing.md +31 -0
  21. package/references/04-locked-decisions/0005-data-app-theming.md +42 -0
  22. package/references/04-locked-decisions/0006-mauve-neutral.md +40 -0
  23. package/references/04-locked-decisions/0007-font-weight-400-500.md +46 -0
  24. package/references/04-locked-decisions/0008-npm-package-distribution.md +40 -0
  25. package/references/05-open-decisions/0001-tx-row-to-list-row-migration-CLOSED.md +80 -0
  26. package/references/05-open-decisions/0002-parallel-classnames-cleanup-CLOSED.md +75 -0
  27. package/references/05-open-decisions/0003-js-duplicates-migration-CLOSED.md +79 -0
  28. package/references/05-open-decisions/0004-halsomentorn-legacy-css.md +51 -0
  29. package/references/05-open-decisions/0005-cat-class-location-CLOSED.md +37 -0
  30. package/references/05-open-decisions/0006-bar-kind-template-migration-CLOSED.md +75 -0
  31. package/references/05-open-decisions/0007-ekonom-base-import-gap-CLOSED.md +111 -0
@@ -0,0 +1,75 @@
1
+ # 0006 - Ekonom bar_kind()-helper - migration till kategori-id for colored-bar
2
+
3
+ ## Status
4
+ **Closed 2026-05-08** via Option A (utoka bar_kind() till kategori-id).
5
+ Ekonom-commit [4ea9415](https://github.com/drawn124578/ekonom/commit/4ea9415).
6
+
7
+ bar_kind() i routers/kategorier.py returnerar nu cat.key (mat, el,
8
+ vatten, etc.) istallet for variant-modifiers ('default'/'wealth'/'accent').
9
+ ekonom.css .cat-bar-fill far ny background: var(--bar-accent, var(--text-tertiary))
10
+ sa --bar-accent (satt av .cat-bar-{kid}-modifier i ekonom-domain.css)
11
+ faktiskt blir bakgrund. 8 distinkta kategori-farger istallet for 3
12
+ generic varianter. Pytest 636/636.
13
+
14
+ ## Context
15
+ v3.1.0 introducerade paketets `.colored-bar`-komponent + Ekonoms
16
+ bindings-klasser `.cat-bar-mat` / `.cat-bar-el` ... / `.cat-bar-privat`
17
+ som mappar app-tokens (--cat-X-icon) till paketets `--bar-accent`.
18
+
19
+ CSS-bindningarna ar redo att anvandas. Templates anvander dock idag
20
+ ett ANNAT monster:
21
+
22
+ ```html
23
+ <div class="cat-bar-track">
24
+ <div class="cat-bar-fill cat-bar-{{ bar_kind(g.category) }}"
25
+ data-bar-width="{{ pct }}%"></div>
26
+ </div>
27
+ ```
28
+
29
+ Python-helpern `bar_kind(category)` returnerar idag en av tre
30
+ **variant-modifiers**: `default`, `wealth`, `accent`. Inte kategori-id.
31
+
32
+ Aktivering av det nya kategori-monstret kraver att antingen:
33
+ - `bar_kind()` utokas att returnera kategori-id (mat, el, noje osv.)
34
+ - Templates byter klassnamn fran `cat-bar-{kind}` till
35
+ `colored-bar cat-bar-{category-id}`
36
+
37
+ ## Considered options
38
+
39
+ ### Option A: Utoka bar_kind() att returnera kategori-id
40
+ **Pros:**
41
+ - Aktiverar det nya kategori-monstret fullt ut
42
+ - Templates fortsatter anvanda `cat-bar-{{ bar_kind(g) }}`-syntax -
43
+ bara inneliggande varde andras
44
+ - Visuellt rikare resultat (8 distinkta kategori-farger istallet for
45
+ 3 generic varianter)
46
+ **Cons:**
47
+ - Andrar Python-logik pa `bar_kind()` - kraver test-uppdatering
48
+ - Templates behover ocksa lagga till `colored-bar`-klassen parallellt:
49
+ `class="colored-bar cat-bar-{{ bar_kind(g) }}"`
50
+ - Behover bestamma vad bar_kind() returnerar for icke-kategori-rader
51
+ (wealth, accent-varianter for special-data)
52
+
53
+ ### Option B: Behall variant-modifiers som de ar
54
+ **Pros:**
55
+ - Inga template- eller Python-andringar
56
+ - Default/wealth/accent-monstret ar etablerat och fungerar
57
+ - CSS-bindningarna lever passivt for framtida anvandning utan att
58
+ blockera nuvarande funktionalitet
59
+ **Cons:**
60
+ - Det nya kategori-monstret ar redo i CSS men oanvant
61
+ - Inga visuella forbattringar pa kategori-bars
62
+
63
+ ## Pending decision criteria
64
+ - Sprint-prioritet: ar visuellt rikare kategori-fargning vard att kosta
65
+ Python-logik-andring + template-edit?
66
+ - Samordning med MADR 0001 (.tx-row -> .list-row): bagge migrationer
67
+ beror Ekonoms transaction-listor och kan delas pa samma sprint for
68
+ effektivitet
69
+
70
+ ## Notes
71
+ - CSS-bindningarna `.cat-bar-X` lever sedan v3.1.0 (Ekonom-commit
72
+ f011c2f). Inga paket-andringar behovs - bara app-side adoption
73
+ - Fortsatt fungerande default/wealth/accent-monster betyder INGEN
74
+ forsamring vid val av Option B
75
+ - Ingen tidsgrans pa beslutet
@@ -0,0 +1,111 @@
1
+ # 0007 - Ekonoms main.css-kedja importerar inte paketets ds/base/-mapp
2
+
3
+ ## Status
4
+ **Closed 2026-05-07** via Option A med selektiv import. Ekonoms
5
+ main.css importerar nu paketets `ds/base/layout.css` direkt. Skip
6
+ av `pwa.css` (dubblett mot Ekonoms egen) och `typography.css`
7
+ (Inter Google Fonts-konflikt med Sprint D2).
8
+
9
+ ## Context
10
+ Jubb och Ekonom har olika CSS-arkitektur for hur paketets `base/`-mapp
11
+ laddas:
12
+
13
+ **Jubb:** paketets `base/`-filer kopieras till `app/static/css/base/`
14
+ (rotnivå). `main.css` importerar `base/typography.css` direkt:
15
+
16
+ ```css
17
+ /* Jubbs main.css */
18
+ @import url("ds/base.css");
19
+ @import url("base/typography.css"); /* paketets fil, rotniva */
20
+ @import url("ds/components.css");
21
+ ...
22
+ ```
23
+
24
+ **Ekonom:** paketets `base/`-filer kopieras till `app/static/css/ds/base/`-
25
+ undermapp (for att inte krocka med Ekonoms egna `app/static/css/base/`
26
+ filer). `main.css` importerar via `ds/bundles/ekonom.css` som bara
27
+ inkluderar Ekonom-specifika `ds/base.css`, INTE paketets nyare filer:
28
+
29
+ ```css
30
+ /* Ekonoms main.css */
31
+ @import url("ds/bundles/ekonom.css");
32
+
33
+ /* ds/bundles/ekonom.css */
34
+ @import url("../ekonom-domain.css");
35
+ @import url("../base.css"); /* Ekonoms egen, inte paketet */
36
+ @import url("../components.css");
37
+ @import url("../utilities.css");
38
+ @import url("../ekonom.css");
39
+ @import url("../components/inline-edit.css");
40
+ ```
41
+
42
+ `ds/base/typography.css`, `ds/base/pwa.css`, `ds/base/layout.css`
43
+ (paketets versioner) kopieras till disk via build:ds men laddas aldrig.
44
+
45
+ ### Konsekvens
46
+
47
+ Framtida paket-uppdateringar i `base/`-mappen kraver manuella hot-fixes
48
+ i Ekonom. Konkret exempel: v3.2.0 introducerade Inter @import i
49
+ `base/typography.css`. Jubb fick det automatiskt - Ekonom kravde commit
50
+ `5d59f1c` med Inter @import direkt i `main.css`.
51
+
52
+ ## Considered options
53
+
54
+ ### Option A: Lagg till explicita @import-rader i Ekonoms main.css
55
+ ```css
56
+ /* Ekonoms main.css */
57
+ @import url("ds/base/typography.css");
58
+ @import url("ds/base/layout.css");
59
+ @import url("ds/bundles/ekonom.css");
60
+ ```
61
+
62
+ **Pros:**
63
+ - Enklast
64
+ - Minst risk
65
+ - Paketets base/-filer aktiveras automatiskt vid build:ds
66
+ - Bibehaller Ekonoms befintliga ds/-undermapp-arkitektur
67
+ **Cons:**
68
+ - Lite duplicering om paketet utvidgas med ytterligare base/-filer
69
+ (man maste komma ihag att lagga till @import)
70
+ - `base/pwa.css` skips eftersom den redan laddas via base.html-link
71
+
72
+ ### Option B: Skriv om build:ds-scriptet att kopiera + auto-importera
73
+ build:ds genererar en `ds/base/_index.css` som listar alla `base/-`
74
+ filer i paketet. main.css importerar `ds/base/_index.css`.
75
+
76
+ **Pros:**
77
+ - Helt automatisk - inga manuella @import-rader behovs
78
+ **Cons:**
79
+ - Mer komplex build-script
80
+ - Genererad fil i ds/-mappen som ingen redigerar manuellt - cognitive
81
+ overhead
82
+
83
+ ### Option C: Harmonisera Ekonoms mappstruktur med Jubbs
84
+ Flytta paketets `base/`-filer till Ekonoms `app/static/css/base/`-
85
+ rotniva (overskriver Ekonoms egna). Kraver migration av Ekonoms
86
+ befintliga `base/pwa.css` och `base/typography.css`.
87
+
88
+ **Pros:**
89
+ - Identisk arkitektur Jubb/Ekonom
90
+ - Inga manuella @import behovs
91
+ **Cons:**
92
+ - Mer invasivt - kraver hantering av krockande filnamn
93
+ - Ekonoms befintliga `app/static/css/base/typography.css` har Ekonom-
94
+ specifika styling-regler som inte ar i paketet
95
+ - Storre risk for visuell regression
96
+
97
+ ## Recommendation
98
+ **Option A.** Enklast, minst risk, kan ske i samma sprint som annan
99
+ Ekonom-cleanup (eventuellt MADR 0001 .tx-row -> .list-row eller MADR
100
+ 0002 parallel-classnames-cleanup).
101
+
102
+ ## Pending decision criteria
103
+ - Ar paketets `base/`-utokningar tillrackligt vanliga for att
104
+ rattfardiga Option B (auto-importer)?
105
+ - Ar Ekonoms befintliga `base/`-mapp viktig att behalla, eller kan
106
+ Option C utforas i en cleanup-sprint?
107
+
108
+ ## Notes
109
+ - Hot-fix via Option A ar redan delvis utford for Inter (commit 5d59f1c
110
+ i Ekonom lagger till Google Fonts @import direkt i main.css). Inte
111
+ ren Option A men en proxy-losning som fungerar