@klodd/ds 3.8.0 → 3.9.1
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 +2 -36
- package/css/components/auth.css +7 -0
- package/css/components/button.css +12 -0
- package/css/components/kv-list.css +84 -0
- package/css/components/nav.css +8 -1
- package/css/components/offline.css +53 -0
- package/css/index.css +4 -0
- package/package.json +1 -1
- package/references/02-components.md +22 -8
- package/references/03-quality-bar.md +1 -1
- package/references/05-open-decisions/0003-js-duplicates-migration-CLOSED.md +4 -2
- package/references/05-open-decisions/0004-halsomentorn-legacy-css-CLOSED.md +1 -2
- package/references/05-open-decisions/{0009-ekonom-css-legacy-cleanup.md → 0009-ekonom-css-legacy-cleanup-CLOSED.md} +7 -1
- package/references/05-open-decisions/{0007-banner-body-migration.md → 0010-banner-body-migration-CLOSED.md} +2 -2
- package/references/05-open-decisions/{0008-hbar-migration-ekonom.md → 0011-hbar-migration-ekonom-CLOSED.md} +2 -2
- package/references/05-open-decisions/0012-maskable-icons.md +19 -0
- package/references/05-open-decisions/0013-jubb-kv-list-migration.md +84 -0
package/SKILL.md
CHANGED
|
@@ -7,7 +7,7 @@ description: Design memory for the @klodd/ds shared design system across all Klo
|
|
|
7
7
|
|
|
8
8
|
## Vad detta är
|
|
9
9
|
Gemensamt designsystem på npm (`@klodd/ds@3.x`). Tre-lagers tokens,
|
|
10
|
-
|
|
10
|
+
37+ komponenter (sheet-content tillagd v3.5.1), konsumeras av Jubb
|
|
11
11
|
och Ekonom. Fler appar planerade.
|
|
12
12
|
Denna Skill fångar både reglerna ("vad") och resonemanget ("varför").
|
|
13
13
|
|
|
@@ -108,38 +108,4 @@ En källa, alla projekt ser samma skill automatiskt. Ändringar i
|
|
|
108
108
|
`~/dev/klodd-ds/SKILL.md`, `POLICY.md` eller `references/` syns
|
|
109
109
|
omedelbart i nästa CC-session - ingen synk-fas behövs.
|
|
110
110
|
|
|
111
|
-
Updated: 2026-05-
|
|
112
|
-
sheet-content.css-komponent (24 BEM-klasser för Sprint-65-pattern),
|
|
113
|
-
foreman-typografi-utokning (.text-caption/-tiny/-num/-num--display/-positive/-warning),
|
|
114
|
-
btn-modifiers (--block, --add), .heading (17px medium tight), och utokningar
|
|
115
|
-
i panel/setting-row/chip.
|
|
116
|
-
v3.5.2 rattade .panel--attention__pill (felaktig BEM) till .panel__pill +
|
|
117
|
-
context-styling via .panel--attention .panel__pill.
|
|
118
|
-
v3.5.3 lagger till .heading-utan-N (17px) for dialog-titlar och sheet-rubriker.
|
|
119
|
-
v3.5.4 (Sprint D-3) introducerar --fs-16 token (16px) for iOS-anti-zoom
|
|
120
|
-
pa inputs och applicerar pa inline-edit__input. Token ar dokumenterad
|
|
121
|
-
som BARA for input-element - vanlig text anvander fortfarande 15 eller 17.
|
|
122
|
-
v3.5.5 (Sprint E) konsoliderar :focus-visible over 7 komponenter (chip,
|
|
123
|
-
list-row, tab-bar, nav, swipe-stack, inline-edit) - 11 nya selectorer
|
|
124
|
-
fick outline 2px solid var(--border-focus) med outline-offset 2px. Plus
|
|
125
|
-
.tab outline-offset normaliserad 1px->2px. input.css och .inline-edit__input
|
|
126
|
-
ar dokumenterade undantag som behaller :focus (text-input-konvention).
|
|
127
|
-
v3.5.6 (Sprint F) konsoliderar BEM over 5 komponenter (card, dropdown,
|
|
128
|
-
hero-roll, overlay, nav) - 23 flat-hyphen element-klasser konverterade
|
|
129
|
-
till .block__element-syntax. Inkluderar JS-koordinering pa hero-roll,
|
|
130
|
-
sheet-drag, turbo-nav, nav-optimistic dar querySelector/classList
|
|
131
|
-
adresserar de bytta klasserna. .bottom-nav-item.active konverterad till
|
|
132
|
-
BEM-modifier .bottom-nav__item--active. tooltip-wrapper bevarad som
|
|
133
|
-
compound block per references/03-quality-bar.md regel 1.
|
|
134
|
-
v3.5.7 (Sprint G) uppdaterar hub-card.css med Ekonoms tightare design
|
|
135
|
-
(padding 14/16, border-radius 14, hub-list gap 10, active scale 0.985)
|
|
136
|
-
nar Ekonoms LEGACY-version raderades. Sprint G hanterade aven domain-CSS
|
|
137
|
-
BEM-migration i app-repos (icke-paket-fil) - 4 tier: A=dead-code-radering
|
|
138
|
-
(14 klasser), B=paket-dubblett-radering (.hub-card + .hub-list ur Ekonoms
|
|
139
|
-
LEGACY), C=BEM-byten (9 block-grupper: amort-bar, cat-tx-stack, cat-row,
|
|
140
|
-
cat-list-row state-modifiers, sub-row state-modifiers, job-card, hero-amount-card,
|
|
141
|
-
source-bar, score-bar), D=compound-block-undantag (cat-bar/equity-bar/
|
|
142
|
-
budget-bar/hbar/cat-tx). Plus base.css Sprint F-miss fixad (bottom-nav-item,
|
|
143
|
-
sheet-handle som descendant-selektorer i touch-cleanup + press-feedback).
|
|
144
|
-
Jubb fick paritet med Ekonom: bundles/jubb.css + jubb-domain.css scaffold.
|
|
145
|
-
Sprint C fas 2 template-migration pagaar.)
|
|
111
|
+
Updated: 2026-05-10 (matchar @klodd/ds 3.9.0)
|
package/css/components/auth.css
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
- --primary solid accent
|
|
8
8
|
- --secondary surface med border
|
|
9
9
|
- --ghost transparent text
|
|
10
|
+
- --positive transparent + positive-border (Ekonom-lyft Sprint 5)
|
|
10
11
|
- --danger solid danger
|
|
11
12
|
|
|
12
13
|
Standardstorlekar:
|
|
@@ -117,6 +118,17 @@
|
|
|
117
118
|
}
|
|
118
119
|
}
|
|
119
120
|
|
|
121
|
+
/* --positive: transparent + positive-border. Bekraftande action
|
|
122
|
+
(t.ex. "Gemensam"-flagga i review_queue). Lyft fran Ekonom v3.9.0. */
|
|
123
|
+
.btn--positive {
|
|
124
|
+
background: transparent;
|
|
125
|
+
color: var(--positive);
|
|
126
|
+
border-color: var(--positive-border);
|
|
127
|
+
}
|
|
128
|
+
@media (hover: hover) and (pointer: fine) {
|
|
129
|
+
.btn--positive:hover { background: var(--positive-dim); }
|
|
130
|
+
}
|
|
131
|
+
|
|
120
132
|
/* --danger: solid danger. Destruktiv action. */
|
|
121
133
|
.btn--danger {
|
|
122
134
|
background: var(--bg-danger);
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/* ================================================================
|
|
2
|
+
components/kv-list.css
|
|
3
|
+
Key-value list - generiskt monster for metadata-rader med
|
|
4
|
+
label till vanster och varde till hoger. Anvands for metric-
|
|
5
|
+
breakdowns, statistik-paneler, settings-summaries.
|
|
6
|
+
|
|
7
|
+
Blocks:
|
|
8
|
+
.kv-list - <ul>-wrapper, nollstaller list-styling
|
|
9
|
+
|
|
10
|
+
Element:
|
|
11
|
+
.kv-list__item - en rad (justify-content: space-between)
|
|
12
|
+
.kv-budget-header - rubrik-rad for budget-expandering
|
|
13
|
+
(compound-block per regel 11)
|
|
14
|
+
.kv-budget-body - expanderat innehall (compound-block)
|
|
15
|
+
|
|
16
|
+
Modifiers (pa .kv-list__item):
|
|
17
|
+
--strong - primary text + medium weight
|
|
18
|
+
--sub - secondary text + smaller font
|
|
19
|
+
--divider - horisontell separator-rad
|
|
20
|
+
--budget - block-display for burndown-rad med expanderbar header
|
|
21
|
+
|
|
22
|
+
Lyft fran Ekonoms ekonom.css LEGACY-sektion i v3.9.0 (Sprint 5,
|
|
23
|
+
MADR 0009). Generaliserade BEM-namn ersatter Ekonoms ursprungliga
|
|
24
|
+
.kv-strong/.kv-sub/.kv-divider/.kv-budget-row klasser.
|
|
25
|
+
================================================================ */
|
|
26
|
+
.kv-list {
|
|
27
|
+
list-style: none;
|
|
28
|
+
padding: 0;
|
|
29
|
+
margin: 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.kv-list__item {
|
|
33
|
+
display: flex;
|
|
34
|
+
justify-content: space-between;
|
|
35
|
+
align-items: baseline;
|
|
36
|
+
padding: var(--space-8) 0;
|
|
37
|
+
font-size: var(--fs-13);
|
|
38
|
+
color: var(--text-subtle);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.kv-list__item--strong {
|
|
42
|
+
color: var(--text-default);
|
|
43
|
+
font-weight: var(--fw-medium);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.kv-list__item--sub {
|
|
47
|
+
font-size: var(--fs-11);
|
|
48
|
+
color: var(--text-subtle);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.kv-list__item--divider {
|
|
52
|
+
border-bottom: 1px solid var(--border-subtle);
|
|
53
|
+
padding: 0;
|
|
54
|
+
margin: var(--space-4) 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.kv-list__item--budget {
|
|
58
|
+
display: block;
|
|
59
|
+
padding: 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.kv-budget-header {
|
|
63
|
+
display: flex;
|
|
64
|
+
justify-content: space-between;
|
|
65
|
+
align-items: baseline;
|
|
66
|
+
padding: var(--space-8) 0;
|
|
67
|
+
cursor: pointer;
|
|
68
|
+
user-select: none;
|
|
69
|
+
-webkit-tap-highlight-color: transparent;
|
|
70
|
+
touch-action: manipulation;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.kv-budget-body {
|
|
74
|
+
padding: var(--space-4) 0 var(--space-8) 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.kv-budget-body .kv-list__item--sub {
|
|
78
|
+
display: flex;
|
|
79
|
+
justify-content: space-between;
|
|
80
|
+
align-items: baseline;
|
|
81
|
+
font-size: var(--fs-11);
|
|
82
|
+
color: var(--text-subtle);
|
|
83
|
+
padding: var(--space-4) 0;
|
|
84
|
+
}
|
package/css/components/nav.css
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
HTML-relationer:
|
|
11
11
|
.bottom-nav > .bottom-nav__item (BEM-element)
|
|
12
|
-
.topbar > .topbar__back/__title/__action (BEM-element)
|
|
12
|
+
.topbar > .topbar__back/__title/__action/__logo (BEM-element)
|
|
13
13
|
|
|
14
14
|
Modifiers/States:
|
|
15
15
|
.bottom-nav__item--active - aktiv pod (Sprint F BEM-konvertering)
|
|
@@ -176,6 +176,13 @@
|
|
|
176
176
|
outline-offset: 2px;
|
|
177
177
|
}
|
|
178
178
|
|
|
179
|
+
.topbar__logo {
|
|
180
|
+
font-size: var(--fs-14);
|
|
181
|
+
font-weight: var(--fw-medium);
|
|
182
|
+
letter-spacing: var(--ls-snug);
|
|
183
|
+
color: var(--text-default);
|
|
184
|
+
}
|
|
185
|
+
|
|
179
186
|
@media (prefers-reduced-motion: reduce) {
|
|
180
187
|
.bottom-nav__item:active { transform: none; }
|
|
181
188
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/* ================================================================
|
|
2
|
+
components/offline.css
|
|
3
|
+
Offline-page layout - visas av service worker vid natverksfel.
|
|
4
|
+
Generiskt PWA-monster for alla appar med offline-support.
|
|
5
|
+
|
|
6
|
+
Blocks (compound, alla anvands tillsammans):
|
|
7
|
+
.offline-wrap - centrerad full-page container (min-height 70vh)
|
|
8
|
+
.offline-icon - stor ikon-display (64x64, surface-raised)
|
|
9
|
+
.offline-title - primar rubrik (fs-22, medium)
|
|
10
|
+
.offline-text - beskrivande text (max-width 320px)
|
|
11
|
+
|
|
12
|
+
Lyft fran Ekonoms ekonom.css LEGACY-sektion i v3.9.0 (Sprint 5,
|
|
13
|
+
MADR 0009). Compound-block-monster per regel 11 - alla 4 blocks
|
|
14
|
+
anvands tillsammans pa offline.html.
|
|
15
|
+
================================================================ */
|
|
16
|
+
.offline-wrap {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column;
|
|
19
|
+
align-items: center;
|
|
20
|
+
justify-content: center;
|
|
21
|
+
min-height: 70vh;
|
|
22
|
+
text-align: center;
|
|
23
|
+
padding: var(--space-32) var(--space-20);
|
|
24
|
+
gap: var(--space-16);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.offline-icon {
|
|
28
|
+
width: 64px;
|
|
29
|
+
height: 64px;
|
|
30
|
+
background: var(--surface-raised);
|
|
31
|
+
border: 1px solid var(--border-default);
|
|
32
|
+
border-radius: var(--radius-20);
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
justify-content: center;
|
|
36
|
+
color: var(--text-subtle);
|
|
37
|
+
margin-bottom: var(--space-8);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.offline-title {
|
|
41
|
+
font-size: var(--fs-22);
|
|
42
|
+
font-weight: var(--fw-medium);
|
|
43
|
+
letter-spacing: var(--ls-tight);
|
|
44
|
+
color: var(--text-default);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.offline-text {
|
|
48
|
+
font-size: var(--fs-14);
|
|
49
|
+
color: var(--text-subtle);
|
|
50
|
+
max-width: 320px;
|
|
51
|
+
line-height: var(--lh-base);
|
|
52
|
+
margin-bottom: var(--space-8);
|
|
53
|
+
}
|
package/css/index.css
CHANGED
|
@@ -65,3 +65,7 @@
|
|
|
65
65
|
|
|
66
66
|
/* v3.5.1 - sheet-content (sprint-65 form-monster, generiska BEM-namn) */
|
|
67
67
|
@import './components/sheet-content.css';
|
|
68
|
+
|
|
69
|
+
/* v3.9.0 - lyft fran Ekonoms LEGACY-sektion (Sprint 5 MADR 0009) */
|
|
70
|
+
@import './components/kv-list.css';
|
|
71
|
+
@import './components/offline.css';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@klodd/ds",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.9.1",
|
|
4
4
|
"description": "Klodd Design System - shared tokens, typography, components and JS for Jubb, Ekonom, and future apps. v3.5.3 (2026-05-09): tillagg .heading (17px medium tight) i base/typography.css for dialog-titlar och sheet-rubriker. Tackar luckan mellan .heading-2 (18px) och .heading-3 (15px) - matchar Ekonoms gamla .heading-class.",
|
|
5
5
|
"main": "css/index.css",
|
|
6
6
|
"bin": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Komponentkatalog
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
37 komponent-filer i `@klodd/ds@3.x`. Alla refererar bara semantic tokens -
|
|
4
4
|
inga primitives. BEM-konvention (block__element--modifier).
|
|
5
5
|
|
|
6
6
|
## Klassificeringsformat
|
|
@@ -19,7 +19,7 @@ För varje entry gäller:
|
|
|
19
19
|
|
|
20
20
|
### button (`button.css`)
|
|
21
21
|
- **Blocks:** `.btn`
|
|
22
|
-
- **Modifiers:** `.btn--primary/-secondary/-ghost/-danger`, `.btn--sm/-lg/-icon/-circle`, `.btn--block/-add`, `.btn--loading`
|
|
22
|
+
- **Modifiers:** `.btn--primary/-secondary/-ghost/-positive/-danger`, `.btn--sm/-lg/-icon/-circle`, `.btn--block/-add`, `.btn--loading`
|
|
23
23
|
- **Anvand:** alla aktioner med tap-target >=44px
|
|
24
24
|
- **INTE:** Cirkel-link i topbar (anvand `.btn--icon.btn--circle`)
|
|
25
25
|
- **Tokens:** `--surface-default/-hover/-active`, `--text-default/-on-accent`, `--border-default/-focus`, `--accent-9/-10`, `--bg-danger`, `--touch-min`
|
|
@@ -48,8 +48,8 @@ För varje entry gäller:
|
|
|
48
48
|
- **Tokens:** `--surface-raised/-overlay/-hover`, `--border-subtle/-default/-focus`
|
|
49
49
|
|
|
50
50
|
### nav (`nav.css`)
|
|
51
|
-
- **Blocks:** `.bottom-nav`, `.topbar
|
|
52
|
-
- **Element:** `.bottom-nav__item`, `.topbar__back`, `.topbar__title`, `.topbar__action`
|
|
51
|
+
- **Blocks:** `.bottom-nav`, `.topbar`
|
|
52
|
+
- **Element:** `.bottom-nav__item`, `.topbar__back`, `.topbar__title`, `.topbar__action`, `.topbar__logo`
|
|
53
53
|
- **Modifiers:** `.bottom-nav__item--active` (Sprint F BEM-konvertering)
|
|
54
54
|
- **States:** `.tab.active`
|
|
55
55
|
- **Anvand:** Mobile bottom-nav (fixed), in-flow topbar, segmented tabs
|
|
@@ -162,12 +162,11 @@ För varje entry gäller:
|
|
|
162
162
|
- **INTE:** Klickbart kort med rich content (anvand `.hub-card`)
|
|
163
163
|
|
|
164
164
|
### collapsible (`collapsible.css`)
|
|
165
|
-
- **Blocks:** `.collapsible
|
|
165
|
+
- **Blocks:** `.collapsible`
|
|
166
166
|
- **Element:** `.collapsible__header`, `.collapsible__header-text`, `.collapsible__chev`, `.collapsible__body`
|
|
167
|
-
- **States:** `[data-expanded]` pa `.collapsible
|
|
167
|
+
- **States:** `[data-expanded]` pa `.collapsible`
|
|
168
168
|
- **Anvand:** Panel som expanderar pa klick. JS togglar `data-expanded`
|
|
169
169
|
- **INTE:** Modal-content (anvand `.dialog` eller `.sheet`)
|
|
170
|
-
- **Special:** BEM-stam-mismatch - block heter `.collapsible-card` men element heter `.collapsible__X` (utan `-card`-suffix). Oppen punkt for rename, se sprint-rapport 2026-05-09.
|
|
171
170
|
|
|
172
171
|
### hbar (`hbar.css`)
|
|
173
172
|
- **Blocks:** `.hbar`
|
|
@@ -221,6 +220,7 @@ För varje entry gäller:
|
|
|
221
220
|
### auth (`auth.css`)
|
|
222
221
|
- **Blocks:** `.auth-container`
|
|
223
222
|
- **Element:** `.auth-container__title`, `.auth-container__subtitle`
|
|
223
|
+
- **Modifiers:** `.auth-container--narrow` (max-width 480px, ej full-page-centrerad - for onboarding-vyer)
|
|
224
224
|
- **Anvand:** Centrerad layout for inloggning + onboarding
|
|
225
225
|
- **INTE:** Settings-vyer
|
|
226
226
|
|
|
@@ -271,6 +271,20 @@ För varje entry gäller:
|
|
|
271
271
|
- **Tokens:** `--bar-accent` (sattes av app-bindning), `--accent-9` (default)
|
|
272
272
|
- **Pattern:** Se "Kategori-monstret" nedan
|
|
273
273
|
|
|
274
|
+
### kv-list (`kv-list.css`) - v3.9.0
|
|
275
|
+
- **Blocks:** `.kv-list` (`<ul>`-wrapper)
|
|
276
|
+
- **Element:** `.kv-list__item`, `.kv-budget-header` (compound, klickbar header), `.kv-budget-body` (compound, expanderat innehall)
|
|
277
|
+
- **Modifiers:** `.kv-list__item--strong/-sub/-divider/-budget`
|
|
278
|
+
- **Anvand:** Key-value list for metric-breakdowns, statistik-paneler, settings-summaries
|
|
279
|
+
- **INTE:** List av actions (anvand `.list-row` eller `.setting-row`)
|
|
280
|
+
- **Special:** `.kv-budget-header` + `.kv-budget-body` ar compound-blocks per regel 11 - lyftade fran Ekonoms LEGACY utan rename for att bibehalla template-kompabilitet.
|
|
281
|
+
|
|
282
|
+
### offline (`offline.css`) - v3.9.0
|
|
283
|
+
- **Blocks (compound):** `.offline-wrap`, `.offline-icon`, `.offline-title`, `.offline-text`
|
|
284
|
+
- **Anvand:** Offline-page layout som SW visar vid natverksfel
|
|
285
|
+
- **INTE:** Inline empty-state i listor (anvand `.empty-state` fran feedback.css)
|
|
286
|
+
- **Special:** Alla 4 blocks anvands tillsammans i offline.html. Compound-block-monster per regel 11.
|
|
287
|
+
|
|
274
288
|
### sheet-content (`sheet-content.css`) - v3.5.1
|
|
275
289
|
- **Blocks:** `.sheet` (kompletterar `.sheet` fran `overlay.css` med innehall-typografi och form-monster)
|
|
276
290
|
- **Element:** `.sheet__title`, `.sheet__description`, `.sheet__form`, `.sheet__field`, `.sheet__field-label`, `.sheet__hint`, `.sheet__items`, `.sheet__item`, `.sheet__actions`, `.sheet__toggle`, `.sheet__subform`, `.sheet__save`, `.sheet__delete`, `.sheet__handle`, `.sheet__body`, `.sheet__divider` (kompletterande element)
|
|
@@ -339,4 +353,4 @@ Jubb, Ekonom, framtida appar foljer samma monster med sina egna tokens.
|
|
|
339
353
|
- **`var(--gray-9)` i komponent-CSS.** Komponenter laser bara semantic.
|
|
340
354
|
- **Egen .button-style.** Anvand `.btn` med modifier istallet.
|
|
341
355
|
- **`font-weight: 700`.** Anvand `--fw-medium` (500). Display-siffror ar dokumenterat undantag.
|
|
342
|
-
- **Anta att alla komponent-filer har ett root-block.** 17 av
|
|
356
|
+
- **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`.
|
|
@@ -212,7 +212,7 @@ Varje interaktiv komponent SKA ha:
|
|
|
212
212
|
|
|
213
213
|
## 11. En fil kan innehalla flera root-blocks
|
|
214
214
|
|
|
215
|
-
I 17 av
|
|
215
|
+
I 17 av 37 komponent-filer i paketet definieras flera root-blocks i
|
|
216
216
|
samma fil (`form.css`, `nav.css`, `chip.css`, `swipe-stack.css`,
|
|
217
217
|
`feedback.css`, `hub-card.css` m.fl.). Det ar en medveten konvention,
|
|
218
218
|
inte ett undantag eller teknisk skuld.
|
|
@@ -9,8 +9,10 @@ base.html: <script src="/static/js/{bar-styles,hero-roll}.js"> bytt till
|
|
|
9
9
|
raderade (app/static/js/bar-styles.js + app/static/js/hero-roll.js).
|
|
10
10
|
Pytest 636/636.
|
|
11
11
|
|
|
12
|
-
Jubb status
|
|
13
|
-
|
|
12
|
+
**Jubb status (verifierat 2026-05-10):** Jubb har 0 app-egen kopior i
|
|
13
|
+
`app/static/js/`-roten. Bara paket-syncade versioner i `app/static/js/ds/`
|
|
14
|
+
finns (`bar-styles.js`, `hero-roll.js`). Hela MADR 0003 ar nu LOST -
|
|
15
|
+
ingen drift kvar i nagon app.
|
|
14
16
|
|
|
15
17
|
## Context
|
|
16
18
|
Bade Jubb och Ekonom har for tillfallet `bar-styles.js` och
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# 0004 - Halsomentorn legacy-CSS i Ekonom
|
|
2
2
|
|
|
3
3
|
## Status
|
|
4
|
-
Closed
|
|
5
|
-
tills Halsomentorn-projektet eventuellt ateruptas. Ingen action kravs.
|
|
4
|
+
Closed. halsomentorn.css raderad ur Ekonom i Sprint D-1 (2026-05-09). Projektet är arkiverat.
|
|
6
5
|
|
|
7
6
|
## Context
|
|
8
7
|
Ekonoms `app/static/css/ds/halsomentorn.css` ar 1783 rader CSS som
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
# 0009 - ekonom.css LEGACY-sektion cleanup
|
|
2
2
|
|
|
3
3
|
## Status
|
|
4
|
-
|
|
4
|
+
Closed 2026-05-10 i Sprint 5 via @klodd/ds 3.9.0. Fem klasser/family lyfta
|
|
5
|
+
till paketet (`.topbar__logo` i nav.css, ny `kv-list.css` med BEM-element,
|
|
6
|
+
ny `offline.css` med compound-blocks, `.auth-container--narrow`-modifier
|
|
7
|
+
i auth.css, `.btn--positive`-variant i button.css). Fyra klasser stannar
|
|
8
|
+
i Ekonoms `ekonom.css` LEGACY-sektion: `.btn-copy/.btn-bank`,
|
|
9
|
+
`.bank-row-icon`, `.profile-panel-centered`, `.rule-arrow/.rule-cat` -
|
|
10
|
+
alla Ekonom-specifika utan generisk paket-anvandning.
|
|
5
11
|
|
|
6
12
|
## Context
|
|
7
13
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 0010 - .banner-body migration i sync_result.html
|
|
2
2
|
|
|
3
3
|
## Status
|
|
4
|
-
|
|
4
|
+
Closed 2026-05-10 via mekanisk substitution. Ekonom-commit [5d5b273](https://github.com/drawn124578/ekonom/commit/5d5b273).
|
|
5
5
|
|
|
6
6
|
## Context
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 0011 - .hbar-* dash → BEM-migration i Ekonom
|
|
2
2
|
|
|
3
3
|
## Status
|
|
4
|
-
|
|
4
|
+
Closed 2026-05-10 via mekanisk substitution + radering av dash-form-definitioner i ekonom.css CHARTS-sektion (37 rader). Ekonom-commit [5d5b273](https://github.com/drawn124578/ekonom/commit/5d5b273).
|
|
5
5
|
|
|
6
6
|
## Context
|
|
7
7
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# 0012 - Maskable PWA-ikoner
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
Pending.
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
Jubb och Ekonom har PWA-ikoner men saknar maskable-varianter med
|
|
8
|
+
safe-zone-padding. Utan maskable-ikoner riskerar ikonen att klippas
|
|
9
|
+
på Android-enheter med adaptiva ikoner.
|
|
10
|
+
|
|
11
|
+
SVG-källfiler är klara. Bakgrundsfärg ska vara steg 3 av respektive
|
|
12
|
+
apps accent-ramp (--accent-3: Blue-3 för Jubb, Plum-3 för Ekonom).
|
|
13
|
+
|
|
14
|
+
## Återstår
|
|
15
|
+
- PNG-export med safe-zone-padding (72px ikon i 108px canvas)
|
|
16
|
+
- purpose="maskable" i web manifest för båda appar
|
|
17
|
+
|
|
18
|
+
## Beroenden
|
|
19
|
+
Kräver designer-export. Inte en CC-uppgift förrän PNG-filer levereras.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# 0013 - Jubb kv-list template-migration
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
Pending.
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
Sprint 5 (3.9.0, MADR 0009) lyfte kv-list till @klodd/ds som BEM-
|
|
8
|
+
komponent (.kv-list, .kv-list__item, .kv-list__item--strong/-sub/
|
|
9
|
+
-divider/-budget). Ekonom-templates migrerades samtidigt.
|
|
10
|
+
|
|
11
|
+
Jubb fick inte motsvarande migration. Jubbs jubb.css behåller en
|
|
12
|
+
flat-namnskonvention (.kv-row, .kv-key, .kv-value) som 5 templates
|
|
13
|
+
beror på via 10 separata `<ul class="kv-list">`-instanser med ~40
|
|
14
|
+
individuella .kv-row/.kv-key/.kv-value-träffar:
|
|
15
|
+
- runs.html (2 listor)
|
|
16
|
+
- job_detail.html (1 lista)
|
|
17
|
+
- dashboard.html (1 lista)
|
|
18
|
+
- insights.html (4 listor)
|
|
19
|
+
- jobs_list.html (2 listor)
|
|
20
|
+
|
|
21
|
+
## API-mismatch
|
|
22
|
+
|
|
23
|
+
Templates använder:
|
|
24
|
+
|
|
25
|
+
```html
|
|
26
|
+
<ul class="kv-list">
|
|
27
|
+
<li class="kv-row">
|
|
28
|
+
<span class="kv-key">label</span>
|
|
29
|
+
<span class="kv-value">value</span>
|
|
30
|
+
</li>
|
|
31
|
+
</ul>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Paketets API (kv-list.css 3.9.0):
|
|
35
|
+
|
|
36
|
+
```html
|
|
37
|
+
<ul class="kv-list">
|
|
38
|
+
<li class="kv-list__item">
|
|
39
|
+
label
|
|
40
|
+
value
|
|
41
|
+
</li>
|
|
42
|
+
</ul>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Paketets .kv-list__item har display: flex + justify-content:
|
|
46
|
+
space-between direkt på li-en. Två children placeras på vänster
|
|
47
|
+
och höger utan wrapper-spans. Jubbs nuvarande .kv-value bidrar
|
|
48
|
+
med color: var(--text-default), font-variant-numeric: tabular-nums
|
|
49
|
+
och inline-flex med gap som behöver återskapas i ny layout (möjliga
|
|
50
|
+
vägar: ny .kv-list__item--num-modifier i paketet, eller behåll en
|
|
51
|
+
lättviktig .kv-value-utility i Jubb).
|
|
52
|
+
|
|
53
|
+
## Återstår
|
|
54
|
+
|
|
55
|
+
- HTML-migration i 5 templates: `<li class="kv-row">` blir
|
|
56
|
+
`<li class="kv-list__item">`
|
|
57
|
+
- Bedömning per template: droppa .kv-key/.kv-value-spans, eller
|
|
58
|
+
behåll dem för tabular-nums/color
|
|
59
|
+
- Visuell verifiering per vy efter migration (runs, job_detail,
|
|
60
|
+
dashboard, insights, jobs_list)
|
|
61
|
+
- Tester: kontrollera om pytest-asserts refererar kv-row/-key/-value
|
|
62
|
+
- Slutsteg: radera Jubbs lokala .kv-list, .kv-list li, .kv-row,
|
|
63
|
+
.kv-key, .kv-value ur jubb.css
|
|
64
|
+
|
|
65
|
+
## Beroenden
|
|
66
|
+
|
|
67
|
+
- Visuell verifiering per vy via Chrome MCP eller dev-server
|
|
68
|
+
- Tester kan kräva uppdatering om kv-* selectors finns i pytest-asserts
|
|
69
|
+
|
|
70
|
+
## Avvisade alternativ
|
|
71
|
+
|
|
72
|
+
Option C (lyft .kv-row/.kv-key/.kv-value till paketet som alias för
|
|
73
|
+
flat-konvention): avvisad per ADR 0009 (no-flat-components-css).
|
|
74
|
+
Sprint 5 MADR 0009 etablerade att Ekonoms ursprungliga flat-namn
|
|
75
|
+
ersätts med generaliserade BEM-namn (.kv-list__item) i paketet. Att
|
|
76
|
+
åter-introducera flat-namn skulle åter-öppna ADR 0009 utan ny
|
|
77
|
+
arkitektonisk motivering.
|
|
78
|
+
|
|
79
|
+
## Sprint 6-leverabel
|
|
80
|
+
|
|
81
|
+
Sprint 6 fas 4 raderar dead kv-delar (.kv-list li.kv-strong/-sub/
|
|
82
|
+
-divider/-budget-row, .kv-budget-header, .kv-budget-body - 0
|
|
83
|
+
template-träffar) men behåller .kv-list, .kv-list li, .kv-row,
|
|
84
|
+
.kv-key, .kv-value tills denna MADR genomförs.
|