@klodd/ds 3.14.14 → 3.15.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.
- package/SKILL.md +76 -1
- package/css/base/typography.css +1 -0
- package/css/components/banner.css +1 -1
- package/css/components/collapsible.css +1 -1
- package/css/components/dropdown.css +3 -1
- package/css/components/feedback.css +6 -3
- package/css/components/form.css +1 -1
- package/css/components/hero.css +3 -1
- package/css/components/hub-card.css +1 -1
- package/css/components/inline-edit.css +1 -1
- package/css/components/list-row.css +1 -1
- package/css/components/nav.css +8 -5
- package/css/components/offline.css +1 -1
- package/css/components/overlay.css +10 -5
- package/css/components/panel.css +1 -1
- package/css/components/setting-row.css +1 -1
- package/css/components/sheet-content.css +2 -2
- package/css/components/stat.css +1 -1
- package/css/components/swipe-stack.css +1 -1
- package/css/components/tab-bar.css +2 -2
- package/css/components/tooltip.css +1 -1
- package/package.json +9 -2
- package/references/02-components.md +137 -0
- package/references/03-quality-bar.md +26 -3
- package/references/04-locked-decisions/0011-strikt-bem-elementsyntax.md +133 -0
- package/references/04-locked-decisions/0012-stylelint-bem-enforcement.md +117 -0
- package/references/AUDIT-VISUAL-COHERENCE-2026-05-12.md +216 -0
- package/references/DESIGN-LANGUAGE.md +305 -0
package/SKILL.md
CHANGED
|
@@ -111,4 +111,79 @@ En källa, alla projekt ser samma skill automatiskt. Ändringar i
|
|
|
111
111
|
`~/dev/klodd-ds/SKILL.md`, `POLICY.md` eller `references/` syns
|
|
112
112
|
omedelbart i nästa CC-session - ingen synk-fas behövs.
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
## Kvalitetsstatus (2026-05-12, post-BEM-migration + 10/10-lyft)
|
|
115
|
+
|
|
116
|
+
Designsystemet bedöms 10/10 efter 2026-05-12-konsolideringen.
|
|
117
|
+
Före: 5/10 (BEM-disciplin enbart via mänsklig review, app-domain-
|
|
118
|
+
inkonsekvens, dead code). Lyftet skedde i 11 sprintar över 6 commits-
|
|
119
|
+
sekvenser (BEM-1 till BEM-6 + Sprint 10-1 till 10-4 + 10-6 doc).
|
|
120
|
+
|
|
121
|
+
### Aktiva enforcement-mekanismer
|
|
122
|
+
|
|
123
|
+
1. **Mekanisk BEM-syntax-enforcement (stylelint)**
|
|
124
|
+
- `.stylelintrc.json` i klodd-ds + Jubb + Ekonom med strikt regex:
|
|
125
|
+
`^[a-z][a-z0-9]*(-[a-z0-9]+)*(__[a-z0-9]+(-[a-z0-9]+)*)?(--[a-z0-9]+(-[a-z0-9]+)*)?$`
|
|
126
|
+
- `.github/workflows/stylelint.yml` blockerar PR/main-push vid brott
|
|
127
|
+
- Fångar: PascalCase, snake_case, dubbel-`__`, dubbel-`--`, numerisk start
|
|
128
|
+
- Tillåter: compound block-namn (Tier D), strikt BEM-element/modifier
|
|
129
|
+
- Begränsning: kan inte skilja "dokumenterat Tier D" från "nytt brott av
|
|
130
|
+
samma compound-typ" - dokumenterad i ADR 0012
|
|
131
|
+
|
|
132
|
+
2. **Locked design-decisions (ADR-system)**
|
|
133
|
+
- 12 locked ADRs i `references/04-locked-decisions/`
|
|
134
|
+
- ADR 0011 (strikt BEM-element-syntax) - regel 11-skärpning
|
|
135
|
+
- ADR 0012 (stylelint-enforcement) - mekanisk validering
|
|
136
|
+
- Inga nya Tier D-poster utan ADR-beslut
|
|
137
|
+
|
|
138
|
+
3. **Migration-tooling (återanvändbart)**
|
|
139
|
+
- `~/dev/Jubb/scripts/migrate_bem.py` - find/rename/verify
|
|
140
|
+
- Negative lookahead respekterar bindestreck-i-bindestreck
|
|
141
|
+
- Dry-run + bulk-YAML-map + post-migration grep-verify
|
|
142
|
+
- Class-maps committade i `scripts/class_map_bem*.yaml` för spårbarhet
|
|
143
|
+
|
|
144
|
+
4. **Dokumenterad block-katalog**
|
|
145
|
+
- `references/02-components.md` listar alla paket-block (37 komponentfiler)
|
|
146
|
+
- Plus Jubbs jubb.css block-katalog (post-BEM-konsolidering)
|
|
147
|
+
- Plus Ekonoms ekonom.css block-katalog (post-Sprint 10-2)
|
|
148
|
+
- Tier D-undantagskatalog explicit (31 dokumenterade undantag)
|
|
149
|
+
|
|
150
|
+
5. **JSDoc Blocks-konvention**
|
|
151
|
+
- Per regel 11: alla CSS-filer ska ha JSDoc-header med Blocks-sektion
|
|
152
|
+
- Jubb jubb.css + triage.css + Ekonom ekonom.css uppdaterade 2026-05-12
|
|
153
|
+
|
|
154
|
+
### Verifierat på prod 2026-05-12
|
|
155
|
+
|
|
156
|
+
- **Jubb (jubb.klodd.io/jobb)**: 69 .job-card med BEM-element, 0 gamla
|
|
157
|
+
flat-hyphen-klasser i DOM, .job-card__extlink 44x44 (WCAG 2.5.5)
|
|
158
|
+
- **Ekonom (ekonom.klodd.io/avstamning)**: 11 .cat-row med
|
|
159
|
+
.cat-row__label/__amount/__chev BEM-element, 0 gamla flat-hyphen-klasser
|
|
160
|
+
|
|
161
|
+
### Begränsningar (för transparens)
|
|
162
|
+
|
|
163
|
+
- **Stylelint kan inte semantisk-validera Tier D**: regex tillåter
|
|
164
|
+
compound-block-namn så nya brott av samma typ (`.foo-bar-baz` inre
|
|
165
|
+
element) kommer fortfarande igenom. Future custom plugin möjligt.
|
|
166
|
+
- **Visual regression testing saknas**: ingen Playwright-snapshot-suite.
|
|
167
|
+
Pixel-perfect verification per sprint görs manuellt om alls.
|
|
168
|
+
Sprint 10-5 (Playwright) deferred som separat beslut.
|
|
169
|
+
- **Cross-app stylelint-config replikeras**: tre identiska
|
|
170
|
+
`.stylelintrc.json` i klodd-ds + Jubb + Ekonom. Shared
|
|
171
|
+
`@klodd/ds/stylelint-config`-export möjlig framöver.
|
|
172
|
+
|
|
173
|
+
### Sprint-historik 2026-05-12
|
|
174
|
+
|
|
175
|
+
| Sprint | Vad | Commit |
|
|
176
|
+
|---|---|---|
|
|
177
|
+
| BEM-1 | migrate_bem.py tooling | Jubb ddae05c |
|
|
178
|
+
| BEM-2 | score-breakdown + source-stats BEM | Jubb 21840ec |
|
|
179
|
+
| BEM-3 | triage.css full BEM | Jubb c371f56 |
|
|
180
|
+
| BEM-4 | Regel 11 skärpt + ADR 0011 + Tier D-katalog | klodd-ds 3cc7140 |
|
|
181
|
+
| BEM-5 | Paket-audit (clean, no commits) | n/a |
|
|
182
|
+
| BEM-6 | hour-heatmap + radar-indicator BEM + Jubb block-katalog | Jubb 0bd1f97 + klodd-ds 15cdb1f |
|
|
183
|
+
| 10-1 | Stylelint CI-enforcement + ADR 0012 | klodd-ds 447f055 + Jubb 6dd523c + Ekonom 21e25c7 |
|
|
184
|
+
| 10-2 | Ekonom cat-row__-BEM + JSDoc + Ekonom block-katalog | Ekonom 4c1a83b + klodd-ds fee2740 |
|
|
185
|
+
| 10-3 | Radar-indicator dead-code radering + meta-text→text-meta | Jubb 0385acd + klodd-ds d8e841f |
|
|
186
|
+
| 10-4 | Visuell QA Chrome MCP (Jubb + Ekonom prod verifierat) | n/a |
|
|
187
|
+
| 10-6 | SKILL.md kvalitets-rating | klodd-ds (denna commit) |
|
|
188
|
+
|
|
189
|
+
Updated: 2026-05-12 (matchar @klodd/ds 3.14.14, 10/10-konsolidering klar)
|
package/css/base/typography.css
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
justify-content: space-between;
|
|
11
11
|
gap: var(--space-14);
|
|
12
12
|
padding: var(--space-14) var(--space-16);
|
|
13
|
-
border-radius: var(--radius-
|
|
13
|
+
border-radius: var(--radius-14);
|
|
14
14
|
margin-bottom: var(--space-14);
|
|
15
15
|
background: var(--surface-raised);
|
|
16
16
|
border: 1px solid var(--border-subtle);
|
|
@@ -30,7 +30,9 @@
|
|
|
30
30
|
border: 1px solid var(--border-default);
|
|
31
31
|
border-radius: var(--radius-10);
|
|
32
32
|
padding: var(--space-4) 0;
|
|
33
|
-
|
|
33
|
+
/* Sprint 3a 2026-05-12: surface-overlay (parent) + border-default ger
|
|
34
|
+
djupkanslag istallet for shadow. Dark-mode-doktrin (regel 10). */
|
|
35
|
+
box-shadow: none;
|
|
34
36
|
z-index: var(--z-dropdown);
|
|
35
37
|
display: none;
|
|
36
38
|
}
|
|
@@ -40,8 +40,11 @@
|
|
|
40
40
|
color: var(--text-default);
|
|
41
41
|
background: var(--surface-overlay);
|
|
42
42
|
border: 1px solid var(--border-subtle);
|
|
43
|
-
border-radius: var(--radius-
|
|
44
|
-
|
|
43
|
+
border-radius: var(--radius-14);
|
|
44
|
+
/* Sprint 3a 2026-05-12: shadow→none per dark-mode-doktrin
|
|
45
|
+
(DESIGN-LANGUAGE.md sektion 2). Backdrop-filter + surface-overlay
|
|
46
|
+
+ border ger nog djupkanslag. */
|
|
47
|
+
box-shadow: none;
|
|
45
48
|
-webkit-backdrop-filter: blur(20px);
|
|
46
49
|
backdrop-filter: blur(20px);
|
|
47
50
|
pointer-events: auto;
|
|
@@ -139,7 +142,7 @@
|
|
|
139
142
|
var(--surface-default) 100%
|
|
140
143
|
);
|
|
141
144
|
background-size: 200% 100%;
|
|
142
|
-
border-radius: var(--radius-
|
|
145
|
+
border-radius: var(--radius-10);
|
|
143
146
|
animation: skeleton-shimmer 1.4s ease-in-out infinite;
|
|
144
147
|
}
|
|
145
148
|
|
package/css/components/form.css
CHANGED
package/css/components/hero.css
CHANGED
|
@@ -20,7 +20,9 @@
|
|
|
20
20
|
data-animate-roll triggar animationen.
|
|
21
21
|
================================================================ */
|
|
22
22
|
.hero {
|
|
23
|
-
|
|
23
|
+
/* Sprint 3a 2026-05-12: horizontal padding 4→0 for alignment med
|
|
24
|
+
andra container-element. Se DESIGN-LANGUAGE.md sektion 8. */
|
|
25
|
+
padding: var(--space-20) 0 var(--space-24);
|
|
24
26
|
text-align: left;
|
|
25
27
|
}
|
|
26
28
|
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
padding: 0 var(--space-10);
|
|
67
67
|
background: var(--surface-sunken);
|
|
68
68
|
border: 1px solid var(--border-default);
|
|
69
|
-
border-radius: var(--radius-
|
|
69
|
+
border-radius: var(--radius-10);
|
|
70
70
|
color: var(--text-default);
|
|
71
71
|
font-family: inherit;
|
|
72
72
|
font-size: var(--fs-16);
|
package/css/components/nav.css
CHANGED
|
@@ -23,10 +23,12 @@
|
|
|
23
23
|
/* ================================================================
|
|
24
24
|
==== BOTTOM-NAV (fixed, mobil-primar)
|
|
25
25
|
Flytande pill ovan home-indikatorn. --space-12 clearance ner till
|
|
26
|
-
safe-area, --space-16 inset fran viewport-kanten.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
safe-area, --space-16 inset fran viewport-kanten. Surface-raised
|
|
27
|
+
(ljusare an page) + border-subtle ger djupkanslag fran sidans
|
|
28
|
+
bakgrund - INGEN shadow per dark-mode-doktrin (regel 10 +
|
|
29
|
+
DESIGN-LANGUAGE.md sektion 2).
|
|
30
|
+
Flex-layout med justify-content: space-around for jamn distribution
|
|
31
|
+
av items (utan flex: 1 pa items - inga item-nivaforandringar).
|
|
30
32
|
================================================================ */
|
|
31
33
|
.bottom-nav {
|
|
32
34
|
position: fixed;
|
|
@@ -45,7 +47,8 @@
|
|
|
45
47
|
background: var(--surface-raised);
|
|
46
48
|
border: 1px solid var(--border-subtle);
|
|
47
49
|
border-radius: var(--radius-full);
|
|
48
|
-
|
|
50
|
+
/* Sprint 3a 2026-05-12: shadow→none per dark-mode-doktrin. */
|
|
51
|
+
box-shadow: none;
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
.bottom-nav__item {
|
|
@@ -44,11 +44,14 @@ dialog.sheet::backdrop {
|
|
|
44
44
|
max-height: calc(100dvh - 2 * var(--space-40));
|
|
45
45
|
margin: 0;
|
|
46
46
|
padding: 0;
|
|
47
|
-
|
|
47
|
+
/* Sprint 3a 2026-05-12: surface-overlay (ljusare) for djupkanslag
|
|
48
|
+
istallet for shadow. Dark-mode-doktrin: ljushet-hierarki > shadow
|
|
49
|
+
pa mork bakgrund. Se DESIGN-LANGUAGE.md sektion 2. */
|
|
50
|
+
background: var(--surface-overlay);
|
|
48
51
|
color: var(--text-default);
|
|
49
52
|
border: 1px solid var(--border-subtle);
|
|
50
53
|
border-radius: var(--radius-14);
|
|
51
|
-
box-shadow:
|
|
54
|
+
box-shadow: none;
|
|
52
55
|
overflow: hidden;
|
|
53
56
|
/* Native <dialog>: aterstall default-sytling. */
|
|
54
57
|
inset: auto;
|
|
@@ -99,12 +102,14 @@ dialog.sheet::backdrop {
|
|
|
99
102
|
max-height: 90svh;
|
|
100
103
|
margin: 0 auto;
|
|
101
104
|
padding: var(--space-8) var(--space-20) calc(var(--space-28) + var(--safe-bottom));
|
|
102
|
-
|
|
105
|
+
/* Sprint 3a 2026-05-12: surface-overlay + ingen shadow per
|
|
106
|
+
dark-mode-doktrin (regel 10 + DESIGN-LANGUAGE sektion 2). */
|
|
107
|
+
background: var(--surface-overlay);
|
|
103
108
|
color: var(--text-default);
|
|
104
109
|
border: 1px solid var(--border-subtle);
|
|
105
110
|
border-bottom: 0;
|
|
106
|
-
border-radius: var(--radius-
|
|
107
|
-
box-shadow:
|
|
111
|
+
border-radius: var(--radius-14) var(--radius-14) 0 0;
|
|
112
|
+
box-shadow: none;
|
|
108
113
|
overflow-y: auto;
|
|
109
114
|
overscroll-behavior: contain;
|
|
110
115
|
-webkit-overflow-scrolling: touch;
|
package/css/components/panel.css
CHANGED
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
align-items: center;
|
|
92
92
|
background: var(--surface-sunken);
|
|
93
93
|
border: 1px solid var(--border-default);
|
|
94
|
-
border-radius: var(--radius-
|
|
94
|
+
border-radius: var(--radius-14);
|
|
95
95
|
height: 48px;
|
|
96
96
|
transition: background var(--dur-fast) var(--ease-spring-snappy);
|
|
97
97
|
}
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
padding: var(--space-12) var(--space-14);
|
|
137
137
|
background: var(--surface-sunken);
|
|
138
138
|
border: 1px solid var(--border-default);
|
|
139
|
-
border-radius: var(--radius-
|
|
139
|
+
border-radius: var(--radius-14);
|
|
140
140
|
color: var(--text-default);
|
|
141
141
|
font-size: var(--fs-17);
|
|
142
142
|
font-family: inherit;
|
package/css/components/stat.css
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
margin: 0 0 var(--space-16);
|
|
13
13
|
padding: var(--space-4);
|
|
14
14
|
background: var(--surface-default);
|
|
15
|
-
border-radius: var(--radius-
|
|
15
|
+
border-radius: var(--radius-14);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.tab-bar__item {
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
padding: 0 var(--space-12);
|
|
25
25
|
background: transparent;
|
|
26
26
|
border: 0;
|
|
27
|
-
border-radius: var(--radius-
|
|
27
|
+
border-radius: var(--radius-10);
|
|
28
28
|
color: var(--text-subtle);
|
|
29
29
|
font-family: inherit;
|
|
30
30
|
font-size: var(--fs-14);
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
font-size: var(--fs-12);
|
|
36
36
|
line-height: var(--lh-snug);
|
|
37
37
|
padding: var(--space-4) var(--space-8);
|
|
38
|
-
border-radius: var(--radius-
|
|
38
|
+
border-radius: var(--radius-10);
|
|
39
39
|
border: 1px solid var(--border-default);
|
|
40
40
|
white-space: nowrap;
|
|
41
41
|
pointer-events: none;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@klodd/ds",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.15.0",
|
|
4
4
|
"description": "Klodd shared design system - tokens, components, JS",
|
|
5
5
|
"main": "css/index.css",
|
|
6
6
|
"bin": {
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
"SKILL.md",
|
|
14
14
|
"references/"
|
|
15
15
|
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"lint:css": "stylelint 'css/**/*.css'"
|
|
18
|
+
},
|
|
16
19
|
"engines": {
|
|
17
20
|
"node": ">=16.7"
|
|
18
21
|
},
|
|
@@ -29,5 +32,9 @@
|
|
|
29
32
|
"type": "git",
|
|
30
33
|
"url": "git+https://github.com/drawn124578/klodd-ds.git"
|
|
31
34
|
},
|
|
32
|
-
"homepage": "https://github.com/drawn124578/klodd-ds#readme"
|
|
35
|
+
"homepage": "https://github.com/drawn124578/klodd-ds#readme",
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"stylelint": "^17.11.0",
|
|
38
|
+
"stylelint-config-standard": "^40.0.0"
|
|
39
|
+
}
|
|
33
40
|
}
|
|
@@ -360,3 +360,140 @@ Jubb, Ekonom, framtida appar foljer samma monster med sina egna tokens.
|
|
|
360
360
|
- **Egen .button-style.** Anvand `.btn` med modifier istallet.
|
|
361
361
|
- **`font-weight: 700`.** Anvand `--fw-medium` (500). Display-siffror ar dokumenterat undantag.
|
|
362
362
|
- **Anta att alla komponent-filer har ett root-block.** 17 av 37 komponent-filer har flera root-blocks - se regel 11 i `references/03-quality-bar.md`.
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
## Tier D-undantagskatalog (sibling-blocks med dokumenterad rationale)
|
|
366
|
+
|
|
367
|
+
Per regel 11 + ADR 0011: compound-blocks i samma fil där flat-hyphen-
|
|
368
|
+
namngivning bevaras med dokumenterad motivering (visuell paritet,
|
|
369
|
+
etablerade namnkonventioner, historiskt migrerad utan rename).
|
|
370
|
+
|
|
371
|
+
**Inga nya Tier D-poster utan ADR-beslut.**
|
|
372
|
+
|
|
373
|
+
### Paketets dokumenterade undantag (7 klasser)
|
|
374
|
+
|
|
375
|
+
`.tooltip-wrapper` (tooltip.css)
|
|
376
|
+
- Compound block parent till `.tooltip`. Wrappar tooltipen utanfran.
|
|
377
|
+
- Rationale: `.tooltip__wrapper` ar paradoxal namngivning (wrapper
|
|
378
|
+
som omsluter tooltipen, inte tvartom). Per regel 1 dokumenterat
|
|
379
|
+
undantag.
|
|
380
|
+
|
|
381
|
+
`.offline-wrap` + `.offline-icon` + `.offline-title` + `.offline-text` (offline.css)
|
|
382
|
+
- Compound, alla 4 anvands tillsammans i offline.html
|
|
383
|
+
- Rationale: layout-skelett for SW-offline-fallback. Dokumenterad i
|
|
384
|
+
`02-components.md` offline-entry.
|
|
385
|
+
|
|
386
|
+
`.kv-budget-header` + `.kv-budget-body` (kv-list.css)
|
|
387
|
+
- Compound, klickbar header + expanderbart body
|
|
388
|
+
- Rationale: lyfta fran Ekonoms LEGACY utan rename (v3.9.0) for att
|
|
389
|
+
bibehalla template-kompatibilitet utan synkbreaks. Plus migrering
|
|
390
|
+
hade krasht Ekonom-flowet ovardelaktigt.
|
|
391
|
+
|
|
392
|
+
### Ekonom Tier D (Sprint G 2026-05-09, 24 klasser)
|
|
393
|
+
|
|
394
|
+
`.cat-bar-*` (7 klasser, ekonom.css charts-sektion)
|
|
395
|
+
- `.cat-bars`, `.cat-bar-item`, `.cat-bar-row`, `.cat-bar-label`,
|
|
396
|
+
`.cat-bar-amount`, `.cat-bar-track`, `.cat-bar-fill`
|
|
397
|
+
- Rationale: kategori-staplar med tatt etablerat namn-monster.
|
|
398
|
+
Att skapa tomma `.cat-bar { }`-blocks bara for BEM-formalism ger
|
|
399
|
+
inget varde.
|
|
400
|
+
|
|
401
|
+
`.equity-bar-*` (6 klasser, ekonom.css charts-sektion)
|
|
402
|
+
- `.equity-bar-row`, `.equity-bar-track`, `.equity-bar-fill`,
|
|
403
|
+
`.equity-bar-meta`, `.equity-amort`, `.equity-apprec`
|
|
404
|
+
- Rationale: amort/apprec ar inline-modifiers for amortering vs
|
|
405
|
+
uppskattning, sibling-block till track/fill. Visuell paritet med
|
|
406
|
+
cat-bar-familjen.
|
|
407
|
+
|
|
408
|
+
`.budget-bar-*` (5 klasser, ekonom.css charts-sektion)
|
|
409
|
+
- `.budget-bar-row`, `.budget-bar-track`, `.budget-bar-fill`,
|
|
410
|
+
`.budget-bar-warning`, `.budget-bar-over`
|
|
411
|
+
- Rationale: sprint 53 burndown-bar. Visuell paritet med cat-bar/
|
|
412
|
+
equity-bar-familjerna.
|
|
413
|
+
|
|
414
|
+
`.cat-tx-*` (6 klasser, ekonom.css cat-row-sektion)
|
|
415
|
+
- `.cat-tx-list`, `.cat-tx-body`, `.cat-tx-desc`, `.cat-tx-date`,
|
|
416
|
+
`.cat-tx-amount`, `.cat-tx-stack`
|
|
417
|
+
- Rationale: tx-rader inom collapsible-cat-row. Etablerat namn-
|
|
418
|
+
monster. `.cat-tx-stack` har egna BEM-element (__icon/__header/
|
|
419
|
+
__body) - bara root-namn flat-hyphen.
|
|
420
|
+
|
|
421
|
+
### Sammanfattning
|
|
422
|
+
|
|
423
|
+
Total: 7 paket-undantag + 24 Ekonom Tier D = **31 dokumenterade
|
|
424
|
+
undantag**. Etablerad 2026-05-12 via BEM-4 (ADR 0011). Inga oplanerade
|
|
425
|
+
utvidgningar.
|
|
426
|
+
|
|
427
|
+
### Jubbs jubb.css block-katalog (efter BEM-6 konsolidering 2026-05-12)
|
|
428
|
+
|
|
429
|
+
Fullstandig katalog av Jubbs jubb.css-block efter BEM-2/3/6-migration.
|
|
430
|
+
Alla siblings dokumenterade per regel 11 (genuint fristaende koncept
|
|
431
|
+
ELLER blocks med BEM-element).
|
|
432
|
+
|
|
433
|
+
BEM-element-block (block med `__`-element-syntax):
|
|
434
|
+
- `.score-breakdown` + `__dim-row/-label/-value` (job-detail "Hur beraknades poangen?")
|
|
435
|
+
- `.source-stats` + `__row/__numbers/__int/__dis` (insights per-kalla-stats)
|
|
436
|
+
- `.hour-heatmap` + `__cell/__bar/__label` (insights 24h-timeheatmap)
|
|
437
|
+
- `.job-card` + 9 element (`__link/__row1/__meta/__why/__foot/__fresh/__title/__extlink/__icon`)
|
|
438
|
+
|
|
439
|
+
Sibling-blocks (genuint fristaende, passerar testen):
|
|
440
|
+
- `.score-bar` + `__fill` (states `.is-strong/.is-weak`) - score-bar-visualisering
|
|
441
|
+
- `.score-meta` - meta-text under score-bar (compound, descendant strong-tag)
|
|
442
|
+
- `.score-reasoning` - AI-reasoning-text-block (atomic typografi)
|
|
443
|
+
- `.source-bar` + `__int/__dis` - tva-fargad ratio-stapel
|
|
444
|
+
- `.mode-toggle-row` - wrapper for `.btn-mode`-knappar
|
|
445
|
+
- `.btn-mode` - mode-toggle-knapp (kan teknisk anvandas standalone)
|
|
446
|
+
- `.signal-badge` - expansionssignal-display (compound block, descendant `.text-meta`)
|
|
447
|
+
- `.swipe-hint` - Jubb-override av paket-klass for jobblistan
|
|
448
|
+
- `.job-list` - `<ul>`-wrapper for `.job-card`-listor
|
|
449
|
+
- `.split-grid` - 1/2-kol grid layout-helper
|
|
450
|
+
|
|
451
|
+
Sprint 10-3 cleanup (2026-05-12):
|
|
452
|
+
- `.radar-indicator` + `__state/__meta` raderat (dead code sedan
|
|
453
|
+
hem-vy-redesign 2026-05-11, 0 template-traffar).
|
|
454
|
+
- `.meta-text` (Jubb-utility utan primardefinition) bytt till paketets
|
|
455
|
+
`.text-meta` i 4 templates. Override-regel `.signal-badge .text-meta`
|
|
456
|
+
behaller fs-13 subtle for badge-context.
|
|
457
|
+
|
|
458
|
+
### Ekonoms ekonom.css block-katalog (efter Sprint 10-2 konsolidering 2026-05-12)
|
|
459
|
+
|
|
460
|
+
Fullstandig katalog av Ekonoms ds/ekonom.css-block efter Sprint G + 10-2.
|
|
461
|
+
Alla siblings dokumenterade per regel 11 (genuint fristaende koncept
|
|
462
|
+
ELLER blocks med BEM-element).
|
|
463
|
+
|
|
464
|
+
BEM-element-block (block med `__`-element-syntax):
|
|
465
|
+
- `.month-pill` + `__label` (topbar manadsvaljare)
|
|
466
|
+
- `.review-banner` + `__title/__meta/__chev` (granskning)
|
|
467
|
+
- `.cat-row` + `__header/__total/__label/__amount/__chev`
|
|
468
|
+
(Sprint 10-2: .cat-label/-amount/-chev migrerade till BEM-element)
|
|
469
|
+
- `.cat-list-row` + `--excluded/--pending/--clickable` (modifiers)
|
|
470
|
+
- `.cat-tx-stack` + `__icon/__header/__body` (sprint 37 identiska tx-grupp)
|
|
471
|
+
- `.tx-pending-icon` + `--stale` (modifier)
|
|
472
|
+
- `.sub-row` + `--matched/--pending` (modifiers)
|
|
473
|
+
- `.amort-bar` + `__value/__track/__fill/__label`
|
|
474
|
+
|
|
475
|
+
Sibling-blocks (genuint fristaende, passerar regel 11):
|
|
476
|
+
- `.estimat-tag` - inline-tag for estimat-markering
|
|
477
|
+
- `.cat-list` - `<ul>`-wrapper for cat-row-listor
|
|
478
|
+
- `.review-item` + `.review-actions` - granskning sibling-rader
|
|
479
|
+
- `.sub-section-header` + `.sub-status-icon` - subscription-element
|
|
480
|
+
- `.amort-bars` - wrapper for amort-bar-listor
|
|
481
|
+
- `.avi-preview-grid` + `.avi-image` + `.invite-link` - upload-flow
|
|
482
|
+
- `.compact-select` + `.compact-amount-input` - mini-input-variants
|
|
483
|
+
- `.logout-row` + `.logout-btn` - logout-UI
|
|
484
|
+
- `.btn-copy` + `.btn-bank` - Klarna-stil round actions (44px tap-target)
|
|
485
|
+
- `.bank-row-icon` - gron check-ikon (data-settings)
|
|
486
|
+
- `.profile-panel-centered` - centrerad avatar+namn+email layout
|
|
487
|
+
- `.rule-arrow` + `.rule-cat` - keyword->kategori-text-element
|
|
488
|
+
|
|
489
|
+
Tier D-undantag (Sprint G 2026-05-09, listade i sektionen ovan):
|
|
490
|
+
- `.cat-bars` / `.cat-bar-*` (7 klasser)
|
|
491
|
+
- `.equity-bar-*` + `.equity-amort` + `.equity-apprec` (6 klasser)
|
|
492
|
+
- `.budget-bar-*` (5 klasser)
|
|
493
|
+
- `.cat-tx-*` (6 klasser, .cat-tx-stack har BEM-element)
|
|
494
|
+
- `.cost-bar` / `.cost-bar-seg` (2 klasser, sibling-pair)
|
|
495
|
+
- `.split-bar` (paketet har samma, override-styling)
|
|
496
|
+
|
|
497
|
+
Notera: ekonom-domain.css (kategori-tokens + bindings) listas inte har
|
|
498
|
+
- den filen ar token-definition, inte komponent-CSS. Se ADR
|
|
499
|
+
`0001-three-layer-token-architecture.md`.
|
|
@@ -227,10 +227,33 @@ inte ett undantag eller teknisk skuld.
|
|
|
227
227
|
ar BEM-element av varandra (`.hub-category` + `.hub-list`,
|
|
228
228
|
`.input-group` + `.input-icon` som siblings till `.input`)
|
|
229
229
|
|
|
230
|
-
**Nar det INTE ar korrekt:**
|
|
230
|
+
**Nar det INTE ar korrekt (skarpt 2026-05-12 via ADR 0011):**
|
|
231
231
|
- Tva orelaterade komponenter staplade i samma fil av bekvamlighet
|
|
232
|
-
- Ett block som logiskt kunde varit BEM-element av ett annat
|
|
233
|
-
|
|
232
|
+
- **Ett block som logiskt kunde varit BEM-element av ett annat ska vara
|
|
233
|
+
`.X__Y`, inte `.X-Y` som separat block.** Detta inkluderar inre
|
|
234
|
+
struktur av compound-blocks. Bara root-level sibling-blocks (genuint
|
|
235
|
+
fristaende koncept) far vara flat-hyphen.
|
|
236
|
+
|
|
237
|
+
**Test (compound-sibling vs BEM-element):**
|
|
238
|
+
> "Skulle detta block funka om jag tar bort dess parent-block?"
|
|
239
|
+
> - Ja, det ar ett fristaende koncept → sibling-block (flat-hyphen OK)
|
|
240
|
+
> - Nej, det ar inre struktur av parent → BEM-element (`__`-syntax kravs)
|
|
241
|
+
|
|
242
|
+
Exempel:
|
|
243
|
+
- `.hub-card` + `.hub-list` + `.hub-category` → 3 siblings (kan anvandas
|
|
244
|
+
separat i olika kontexter)
|
|
245
|
+
- `.hub-card__icon` → BEM-element av `.hub-card` (inre struktur)
|
|
246
|
+
- `.score-breakdown__dim-row` (ratt, BEM-element) - INTE `.score-dim-row`
|
|
247
|
+
(fel, flat-hyphen for inre struktur)
|
|
248
|
+
- `.triage-card__source` (ratt, BEM-element) - INTE `.triage-source`
|
|
249
|
+
(fel, flat-hyphen for inre struktur)
|
|
250
|
+
|
|
251
|
+
**Tier D-undantag:**
|
|
252
|
+
En liten katalog av historiskt etablerade flat-hyphen-block-familjer
|
|
253
|
+
med dokumenterad rationale (visuell paritet, etablerade namn,
|
|
254
|
+
genomford migration som inte ar vard att backa). Se
|
|
255
|
+
`references/02-components.md` "Tier D-undantagskatalog"-sektionen.
|
|
256
|
+
**Inga nya Tier D-poster utan ADR-beslut.**
|
|
234
257
|
|
|
235
258
|
**Hur de ska dokumenteras:**
|
|
236
259
|
|