@klodd/ds 3.17.2 → 3.19.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/css/00-primitives.css +20 -11
- package/css/components/button.css +6 -2
- package/css/components/dropdown.css +1 -1
- package/css/components/feedback.css +1 -1
- package/css/components/hero.css +16 -8
- package/css/components/inline-edit.css +1 -1
- package/css/components/input.css +5 -1
- package/css/components/swipe-stack.css +1 -1
- package/css/components/tab-bar.css +1 -1
- package/css/components/tooltip.css +1 -1
- package/package.json +1 -1
- package/references/DESIGN-LANGUAGE.md +29 -18
package/css/00-primitives.css
CHANGED
|
@@ -328,19 +328,28 @@
|
|
|
328
328
|
==== RADIUS - pixel-numerisk
|
|
329
329
|
--radius-N dar N = exakt antal pixlar.
|
|
330
330
|
--radius-full = 9999px (pill-form OCH cirkel for kvadratiska element).
|
|
331
|
+
|
|
332
|
+
Pill-doktrin (DESIGN-LANGUAGE.md sektion 1, 2026-05-13):
|
|
333
|
+
komponenter ska anvanda BARA en av fyra:
|
|
334
|
+
--radius-4 thin bars + skeleton-placeholder
|
|
335
|
+
--radius-14 kort/paneler/containers
|
|
336
|
+
50% / full cirklar + pills (knappar, inputs, en-rads-element med kant)
|
|
337
|
+
|
|
338
|
+
--radius-10 borttagen 2026-05-13 efter pill-konsolidering.
|
|
339
|
+
Ovriga tokens (2/6/8/12/16/20/24) ar legacy - anvand inte i
|
|
340
|
+
komponent-CSS. Kvar enbart for bakat-kompat under deprecation.
|
|
331
341
|
================================================================ */
|
|
332
342
|
:root {
|
|
333
|
-
--radius-2: 2px; /*
|
|
334
|
-
--radius-4: 4px; /*
|
|
335
|
-
--radius-6: 6px; /*
|
|
336
|
-
--radius-8: 8px; /*
|
|
337
|
-
--radius-
|
|
338
|
-
--radius-
|
|
339
|
-
--radius-
|
|
340
|
-
--radius-
|
|
341
|
-
--radius-
|
|
342
|
-
--radius-
|
|
343
|
-
--radius-full: 9999px; /* chips, knappar, nav, avatars */
|
|
343
|
+
--radius-2: 2px; /* legacy - anvand inte */
|
|
344
|
+
--radius-4: 4px; /* thin bars, skeleton-placeholder */
|
|
345
|
+
--radius-6: 6px; /* legacy - anvand inte */
|
|
346
|
+
--radius-8: 8px; /* legacy - anvand inte */
|
|
347
|
+
--radius-12: 12px; /* legacy - anvand inte */
|
|
348
|
+
--radius-14: 14px; /* kort, paneler, containers, textarea */
|
|
349
|
+
--radius-16: 16px; /* legacy - anvand inte */
|
|
350
|
+
--radius-20: 20px; /* legacy - anvand inte */
|
|
351
|
+
--radius-24: 24px; /* legacy - anvand inte (sheet-top via sheet-token) */
|
|
352
|
+
--radius-full: 9999px; /* pills, knappar, inputs, en-rads-element, avatars */
|
|
344
353
|
}
|
|
345
354
|
|
|
346
355
|
|
|
@@ -24,7 +24,11 @@
|
|
|
24
24
|
/* ================================================================
|
|
25
25
|
==== BAS
|
|
26
26
|
Alla knappar har samma fundamental: 44px touch-target, medium-vikt,
|
|
27
|
-
|
|
27
|
+
pill-radius, smooth transitions, fokusring.
|
|
28
|
+
|
|
29
|
+
Pill-doktrin (DESIGN-LANGUAGE.md sektion 1, 2026-05-13): knappar
|
|
30
|
+
och en-rads-element med kant ska ha radius-full. Bara kort/paneler
|
|
31
|
+
har 14px radius.
|
|
28
32
|
================================================================ */
|
|
29
33
|
.btn {
|
|
30
34
|
display: inline-flex;
|
|
@@ -40,7 +44,7 @@
|
|
|
40
44
|
color: var(--text-default);
|
|
41
45
|
background: transparent;
|
|
42
46
|
border: 1px solid transparent;
|
|
43
|
-
border-radius: var(--radius-
|
|
47
|
+
border-radius: var(--radius-full);
|
|
44
48
|
cursor: pointer;
|
|
45
49
|
text-decoration: none;
|
|
46
50
|
white-space: nowrap;
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
min-width: 160px;
|
|
29
29
|
background: var(--surface-overlay);
|
|
30
30
|
border: 1px solid var(--border-default);
|
|
31
|
-
border-radius: var(--radius-
|
|
31
|
+
border-radius: var(--radius-14);
|
|
32
32
|
padding: var(--space-4) 0;
|
|
33
33
|
/* Sprint 3a 2026-05-12: surface-overlay (parent) + border-default ger
|
|
34
34
|
djupkanslag istallet for shadow. Dark-mode-doktrin (regel 10). */
|
package/css/components/hero.css
CHANGED
|
@@ -36,12 +36,15 @@
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
.hero__label {
|
|
39
|
+
/* 2026-05-13: text-transform: uppercase borttaget. Labels skrivs
|
|
40
|
+
sentence-case i template ("Din dagsbudget", inte "DIN DAGSBUDGET").
|
|
41
|
+
Det matchar svensk grafisk konvention + var hero-hierarki kommer
|
|
42
|
+
fran font-size och weight, inte fran caps. */
|
|
39
43
|
font-size: var(--fs-12);
|
|
40
44
|
font-weight: var(--fw-medium);
|
|
41
45
|
color: var(--text-muted);
|
|
42
|
-
letter-spacing: var(--ls-
|
|
43
|
-
|
|
44
|
-
margin: 0 0 var(--space-8);
|
|
46
|
+
letter-spacing: var(--ls-tight);
|
|
47
|
+
margin: 0 0 var(--space-12);
|
|
45
48
|
}
|
|
46
49
|
|
|
47
50
|
.hero__label--muted {
|
|
@@ -49,7 +52,6 @@
|
|
|
49
52
|
font-weight: var(--fw-regular);
|
|
50
53
|
color: var(--text-disabled);
|
|
51
54
|
letter-spacing: 0.03em;
|
|
52
|
-
text-transform: lowercase;
|
|
53
55
|
opacity: 0.7;
|
|
54
56
|
}
|
|
55
57
|
|
|
@@ -60,7 +62,7 @@
|
|
|
60
62
|
letter-spacing: var(--ls-tightest, -0.04em);
|
|
61
63
|
color: var(--text-default);
|
|
62
64
|
line-height: var(--lh-tight);
|
|
63
|
-
margin: 0 0 var(--space-
|
|
65
|
+
margin: 0 0 var(--space-12);
|
|
64
66
|
font-variant-numeric: tabular-nums;
|
|
65
67
|
}
|
|
66
68
|
|
|
@@ -75,11 +77,17 @@
|
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
.hero__amount-row {
|
|
80
|
+
/* 2026-05-13: justify-content center → flex-start och gap 10 → 16.
|
|
81
|
+
Amount-row anvands inom .panel/.collapsible-kontext (Ekonom
|
|
82
|
+
Gemensamma utgifter) dar parent ar text-align:left. Center-just
|
|
83
|
+
overrode den left-align via flex. Nu foljer amount-row parent-
|
|
84
|
+
justification. Gap-16 ger luft mellan summa och adjacent
|
|
85
|
+
actions-knappar (btn-copy, btn-bank). */
|
|
78
86
|
display: flex;
|
|
79
87
|
align-items: center;
|
|
80
|
-
justify-content:
|
|
81
|
-
gap: var(--space-
|
|
82
|
-
margin-bottom: var(--space-
|
|
88
|
+
justify-content: flex-start;
|
|
89
|
+
gap: var(--space-16);
|
|
90
|
+
margin-bottom: var(--space-12);
|
|
83
91
|
}
|
|
84
92
|
|
|
85
93
|
.hero__amount-row .hero__amount,
|
|
@@ -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-full);
|
|
70
70
|
color: var(--text-default);
|
|
71
71
|
font-family: inherit;
|
|
72
72
|
font-size: var(--fs-16);
|
package/css/components/input.css
CHANGED
|
@@ -27,6 +27,9 @@
|
|
|
27
27
|
|
|
28
28
|
/* ================================================================
|
|
29
29
|
==== BAS
|
|
30
|
+
Pill-doktrin (DESIGN-LANGUAGE.md sektion 1, 2026-05-13): en-rads-
|
|
31
|
+
element med kant har radius-full. .input + .select är en-rads,
|
|
32
|
+
.textarea är multi-rad och behåller container-radius (14).
|
|
30
33
|
================================================================ */
|
|
31
34
|
.input,
|
|
32
35
|
.textarea,
|
|
@@ -41,7 +44,7 @@
|
|
|
41
44
|
color: var(--text-default);
|
|
42
45
|
background: var(--surface-sunken);
|
|
43
46
|
border: 1px solid var(--border-default);
|
|
44
|
-
border-radius: var(--radius-
|
|
47
|
+
border-radius: var(--radius-full);
|
|
45
48
|
outline: none;
|
|
46
49
|
transition:
|
|
47
50
|
border-color var(--dur-base) var(--ease-spring-snappy),
|
|
@@ -55,6 +58,7 @@
|
|
|
55
58
|
min-height: 96px;
|
|
56
59
|
padding: var(--space-12) var(--space-14);
|
|
57
60
|
line-height: var(--lh-base);
|
|
61
|
+
border-radius: var(--radius-14);
|
|
58
62
|
resize: vertical;
|
|
59
63
|
}
|
|
60
64
|
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
font-weight: var(--fw-medium);
|
|
145
145
|
letter-spacing: 0.05em;
|
|
146
146
|
text-transform: uppercase;
|
|
147
|
-
border-radius: var(--radius-
|
|
147
|
+
border-radius: var(--radius-full);
|
|
148
148
|
border: 2px solid currentColor;
|
|
149
149
|
opacity: 0;
|
|
150
150
|
transition: opacity var(--dur-fast) var(--ease-default);
|
|
@@ -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-full);
|
|
39
39
|
border: 1px solid var(--border-default);
|
|
40
40
|
white-space: nowrap;
|
|
41
41
|
pointer-events: none;
|
package/package.json
CHANGED
|
@@ -12,30 +12,41 @@ annat utan att layout-rytm bryts.
|
|
|
12
12
|
Etablerad 2026-05-12 baserat på audit av 17 vyer (se
|
|
13
13
|
`AUDIT-VISUAL-COHERENCE-2026-05-12.md`).
|
|
14
14
|
|
|
15
|
-
## 1. Border-radius-skala (
|
|
15
|
+
## 1. Border-radius-skala (fyra värden, pill-doktrin)
|
|
16
16
|
|
|
17
17
|
**Regel:** all border-radius i komponent-CSS ska vara EN av:
|
|
18
18
|
|
|
19
19
|
| Värde | Token | Användning |
|
|
20
20
|
|---|---|---|
|
|
21
|
-
| 4px | `--radius-4` | Thin
|
|
22
|
-
|
|
|
23
|
-
| 14px | `--radius-14` | All cards/containers: card, panel, hub-card, job-card, swipe-card, banner, form-card, stat-card, list-row, setting-row, toast, dialog, sheet, collapsible, offline-wrap, sheet-content fields |
|
|
21
|
+
| 4px | `--radius-4` | Thin bars: progress, skeleton-placeholder, split-bar-segment |
|
|
22
|
+
| 14px | `--radius-14` | Kort/paneler/containers: card, panel, hub-card, job-card, swipe-card, banner, form-card, stat-card, list-row, setting-row, toast, dialog, sheet, collapsible, offline-wrap, dropdown-menu, textarea (multi-rad) |
|
|
24
23
|
| 50% | (calculated) | Avatars, icon-circles, toggle-thumb |
|
|
25
|
-
| 9999px | `--radius-full` | Pills:
|
|
26
|
-
|
|
27
|
-
**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
24
|
+
| 9999px | `--radius-full` | Pills: alla knappar (.btn), inputs (single-rad), tab-bar__item, status-pill, score-pill, swipe-action-btn, swipe-decision-overlay, tooltip, badge, chip, dot-separator, alla en-rads-element med kant |
|
|
25
|
+
|
|
26
|
+
**Pill-doktrin (2026-05-13):** "Bara kort ska ha radius i hörnen.
|
|
27
|
+
Alla knappar och en-rads-element som har en kant ska ha en pill-form."
|
|
28
|
+
(Calle 2026-05-13.) Calle's tidigare audit-observation "olika former
|
|
29
|
+
nära varandra" var BR-spridningen + button-radius-10. Pill-formen
|
|
30
|
+
löser bägge.
|
|
31
|
+
|
|
32
|
+
**Förbjudet:** 2px, 6px, 8px, 10px, 12px, 16px, 18px, 20px, 22px, 24px på
|
|
33
|
+
komponent-element. (--radius-10 borttagen 2026-05-13.) Övriga tokens
|
|
34
|
+
existerar i primitives som legacy men appliceras INTE i komponent-CSS.
|
|
35
|
+
|
|
36
|
+
**Rationale:** ögat skiljer på fyra kategorier:
|
|
37
|
+
- thin-bar (4px) - aldrig en kant, bara fill för progress
|
|
38
|
+
- container (14px) - kort, paneler, multi-rad-block
|
|
39
|
+
- circle (50%) - kvadratiska element som ska vara perfekt runda
|
|
40
|
+
- pill (full) - alla en-rads interaktiva element + alla en-rads med kant
|
|
41
|
+
|
|
42
|
+
Färre värden ger starkare visuell rytm. Pill-formen på knappar
|
|
43
|
+
markerar interaktivitet tydligare än mjuk 10px-radius och matchar
|
|
44
|
+
iOS-konvention (Apple HIG, SF Symbols badges).
|
|
45
|
+
|
|
46
|
+
**Migration-not:** Sprint 3b 2026-05-12 konsoliderade till fem värden
|
|
47
|
+
(4/10/14/50%/9999). 2026-05-13 reduceras till fyra (4/14/50%/9999) -
|
|
48
|
+
radius-10 → radius-full för button + en-rads-element med kant. App-
|
|
49
|
+
domain-CSS följer samma regel.
|
|
39
50
|
|
|
40
51
|
## 2. Shadow-policy (restriktiv)
|
|
41
52
|
|