@visitwonders/assembly 0.15.0 → 0.16.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/README.md +8 -0
- package/dist/_app_/data/pagination-cluster.js +1 -0
- package/dist/_app_/data/pagination.js +1 -0
- package/dist/action/button.css +30 -19
- package/dist/data/index.js +1 -0
- package/dist/data/index.js.map +1 -1
- package/dist/data/pagination-cluster.js +106 -0
- package/dist/data/pagination-cluster.js.map +1 -0
- package/dist/data/pagination.css +216 -0
- package/dist/data/pagination.js +287 -0
- package/dist/data/pagination.js.map +1 -0
- package/dist/form/calendar.css +6 -6
- package/dist/form/checkbox.css +25 -24
- package/dist/form/date-range-picker.css +1 -1
- package/dist/form/input.css +16 -15
- package/dist/form/multi-combobox.css +2 -2
- package/dist/form/multi-select.css +2 -2
- package/dist/form/radio.css +19 -16
- package/dist/form/toggle.css +4 -2
- package/dist/status/tag.css +2 -2
- package/dist/styles/semantic/colors.css +31 -5
- package/dist/styles/semantic/component.css +154 -0
- package/dist/styles/semantic/effects.css +9 -3
- package/dist/styles/semantic/typography.css +60 -0
- package/dist/styles/tokens.css +3 -0
- package/dist/styles.css +258 -8
- package/dist/typography/{heading-css-726c4c3109f2b741657733e1ba103c67.css → heading-css-eca8b0ae619f69fcbe9535f4700db421.css} +35 -3
- package/dist/typography/heading.js +34 -39
- package/dist/typography/{text-css-935f55e9cd74b06a5ce61330c4c79ef9.css → text-css-a4c06f76a813db6b613c4f3c22e6bb85.css} +23 -9
- package/dist/typography/text.js +1 -1
- package/package.json +6 -6
package/dist/form/radio.css
CHANGED
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
display: flex;
|
|
33
33
|
align-items: center;
|
|
34
34
|
justify-content: center;
|
|
35
|
-
border: var(--border-width-1) solid var(--color-border-
|
|
35
|
+
border: var(--border-width-1) solid var(--color-input-border-default);
|
|
36
36
|
border-radius: var(--radius-round);
|
|
37
|
-
background-color: var(--color-bg-
|
|
37
|
+
background-color: var(--color-input-bg-default);
|
|
38
38
|
transition: all var(--transition-fast);
|
|
39
39
|
}
|
|
40
40
|
|
|
@@ -65,43 +65,46 @@
|
|
|
65
65
|
|
|
66
66
|
/* Hover */
|
|
67
67
|
.radio-label-wrapper_e6dda4f5d:hover .radio-control_e6dda4f5d {
|
|
68
|
-
border-color: var(--color-border-
|
|
68
|
+
border-color: var(--color-input-border-hover);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
.radio-wrapper_e6dda4f5d[data-disabled="true"] .radio-label-wrapper_e6dda4f5d:hover .radio-control_e6dda4f5d {
|
|
72
|
-
border-color: var(--color-border-
|
|
72
|
+
border-color: var(--color-input-border-disabled);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
/* Focus */
|
|
76
76
|
.radio-input_e6dda4f5d:focus-visible + .radio-control_e6dda4f5d {
|
|
77
|
-
border-color: var(--color-border-focus);
|
|
77
|
+
border-color: var(--color-input-border-focus);
|
|
78
78
|
box-shadow: var(--focus-ring);
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
/* Checked
|
|
81
|
+
/* Checked — anchored to the shared `--color-bg-control-checked`
|
|
82
|
+
token, in line with the other selected-state controls. Folded
|
|
83
|
+
the pre-existing radio debt that pinned the dot to
|
|
84
|
+
`--color-border-focus` and `--color-text-link-hover`. */
|
|
82
85
|
.radio-input_e6dda4f5d:checked + .radio-control_e6dda4f5d {
|
|
83
|
-
border-color: var(--color-border
|
|
86
|
+
border-color: var(--color-input-checked-border);
|
|
84
87
|
}
|
|
85
88
|
|
|
86
89
|
.radio-input_e6dda4f5d:checked + .radio-control_e6dda4f5d .radio-dot_e6dda4f5d {
|
|
87
|
-
background-color: var(--color-
|
|
90
|
+
background-color: var(--color-input-checked-bg);
|
|
88
91
|
}
|
|
89
92
|
|
|
90
93
|
.radio-label-wrapper_e6dda4f5d:hover .radio-input_e6dda4f5d:checked + .radio-control_e6dda4f5d {
|
|
91
|
-
border-color: var(--color-
|
|
94
|
+
border-color: var(--color-input-checked-bg-hover);
|
|
92
95
|
}
|
|
93
96
|
|
|
94
97
|
.radio-label-wrapper_e6dda4f5d:hover .radio-input_e6dda4f5d:checked + .radio-control_e6dda4f5d .radio-dot_e6dda4f5d {
|
|
95
|
-
background-color: var(--color-
|
|
98
|
+
background-color: var(--color-input-checked-bg-hover);
|
|
96
99
|
}
|
|
97
100
|
|
|
98
|
-
/* Invalid */
|
|
101
|
+
/* Invalid — error path goes through `--color-input-border-error`. */
|
|
99
102
|
.radio-wrapper_e6dda4f5d[data-invalid="true"] .radio-control_e6dda4f5d {
|
|
100
|
-
border-color: var(--color-border-
|
|
103
|
+
border-color: var(--color-input-border-error);
|
|
101
104
|
}
|
|
102
105
|
|
|
103
106
|
.radio-wrapper_e6dda4f5d[data-invalid="true"] .radio-input_e6dda4f5d:checked + .radio-control_e6dda4f5d {
|
|
104
|
-
border-color: var(--color-border-
|
|
107
|
+
border-color: var(--color-input-border-error);
|
|
105
108
|
}
|
|
106
109
|
|
|
107
110
|
.radio-wrapper_e6dda4f5d[data-invalid="true"]
|
|
@@ -119,12 +122,12 @@
|
|
|
119
122
|
|
|
120
123
|
/* Disabled */
|
|
121
124
|
.radio-input_e6dda4f5d:disabled + .radio-control_e6dda4f5d {
|
|
122
|
-
background-color: var(--color-bg-disabled);
|
|
123
|
-
border-color: var(--color-border-
|
|
125
|
+
background-color: var(--color-input-bg-disabled);
|
|
126
|
+
border-color: var(--color-input-border-disabled);
|
|
124
127
|
}
|
|
125
128
|
|
|
126
129
|
.radio-input_e6dda4f5d:disabled:checked + .radio-control_e6dda4f5d .radio-dot_e6dda4f5d {
|
|
127
|
-
background-color: var(--color-text-disabled);
|
|
130
|
+
background-color: var(--color-input-text-disabled);
|
|
128
131
|
}
|
|
129
132
|
|
|
130
133
|
/* Label */
|
package/dist/form/toggle.css
CHANGED
|
@@ -108,9 +108,11 @@
|
|
|
108
108
|
transform: scale(0.95);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
/* Checked state - track
|
|
111
|
+
/* Checked state - track (default tone). Sentiment variants below
|
|
112
|
+
intentionally bypass `--color-bg-control-checked` to expose the
|
|
113
|
+
sentiment-specific fill — architect-confirmed override. */
|
|
112
114
|
.track_eb612ecfd.checked_eb612ecfd {
|
|
113
|
-
background-color: var(--color-bg-
|
|
115
|
+
background-color: var(--color-bg-control-checked);
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
/* Checked + hover */
|
package/dist/status/tag.css
CHANGED
|
@@ -54,7 +54,7 @@ button.e873402ac.tag-content_e873402ac,a.e873402ac.tag-content_e873402ac {
|
|
|
54
54
|
|
|
55
55
|
button.e873402ac.tag-content_e873402ac:focus-visible,a.e873402ac.tag-content_e873402ac:focus-visible {
|
|
56
56
|
outline: none;
|
|
57
|
-
box-shadow: inset 0 0 0 2px var(--color-focus-ring-
|
|
57
|
+
box-shadow: inset 0 0 0 2px var(--color-focus-ring-outer);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
/* ===================================
|
|
@@ -337,7 +337,7 @@ button.e873402ac.tag-content_e873402ac:focus-visible,a.e873402ac.tag-content_e87
|
|
|
337
337
|
.tag-remove_e873402ac:focus-visible {
|
|
338
338
|
outline: none;
|
|
339
339
|
opacity: 1;
|
|
340
|
-
box-shadow: 0 0 0 2px var(--color-focus-ring-
|
|
340
|
+
box-shadow: 0 0 0 2px var(--color-focus-ring-outer);
|
|
341
341
|
}
|
|
342
342
|
|
|
343
343
|
.tag-remove_e873402ac:disabled {
|
|
@@ -17,6 +17,15 @@
|
|
|
17
17
|
--color-bg-inverse: var(--gray-900); /* Dark background for contrast */
|
|
18
18
|
--color-bg-disabled: var(--gray-100); /* Disabled backgrounds */
|
|
19
19
|
|
|
20
|
+
/* Status Surfaces — for panels, banners, callouts, toasts.
|
|
21
|
+
Distinct from `bg-{semantic}-subtle` (tinted hover/badge backgrounds)
|
|
22
|
+
and `bg-fill-{semantic}` (solid status fills). Surface tier sits at
|
|
23
|
+
the same level as `bg-surface` but carries status sentiment. */
|
|
24
|
+
--color-bg-surface-success: var(--green-50);
|
|
25
|
+
--color-bg-surface-warning: var(--amber-50);
|
|
26
|
+
--color-bg-surface-critical: var(--red-50);
|
|
27
|
+
--color-bg-surface-info: var(--cyan-50);
|
|
28
|
+
|
|
20
29
|
/* Hover States */
|
|
21
30
|
--color-bg-hover-subtle: var(--gray-50);
|
|
22
31
|
|
|
@@ -33,13 +42,19 @@
|
|
|
33
42
|
--color-bg-fill-interactive-selected: var(--gray-175);
|
|
34
43
|
--color-bg-fill-interactive-disabled: var(--gray-50);
|
|
35
44
|
|
|
36
|
-
/* Accent Fill (Selected controls — checkboxes, toggles, radios
|
|
45
|
+
/* Accent Fill (Selected controls — checkboxes, toggles, radios,
|
|
46
|
+
calendar selected day, multi-select chips, date-range fill) */
|
|
37
47
|
--color-bg-fill-accent: var(--indigo-500);
|
|
38
48
|
--color-bg-fill-accent-hover: var(--indigo-600);
|
|
39
49
|
--color-bg-fill-accent-active: var(--indigo-700);
|
|
40
50
|
--color-bg-fill-accent-disabled: var(--indigo-300);
|
|
41
51
|
|
|
42
|
-
/*
|
|
52
|
+
/* Accent Fill — Subtle (tinted accent backgrounds, e.g. table row
|
|
53
|
+
selected). Sits in the same range as the other `*-subtle` tints. */
|
|
54
|
+
--color-bg-fill-accent-subtle: var(--indigo-50);
|
|
55
|
+
--color-bg-fill-accent-subtle-hover: var(--indigo-100);
|
|
56
|
+
|
|
57
|
+
/* reserved — no consumers yet, validate value when first used */
|
|
43
58
|
--color-bg-fill-secondary: var(--cyan-600);
|
|
44
59
|
--color-bg-fill-secondary-hover: var(--cyan-700);
|
|
45
60
|
--color-bg-fill-secondary-active: var(--cyan-800);
|
|
@@ -135,6 +150,15 @@
|
|
|
135
150
|
--color-border-control-active: var(--gray-500);
|
|
136
151
|
--color-border-control-disabled: var(--gray-300);
|
|
137
152
|
--color-border-control-readonly: var(--gray-300);
|
|
153
|
+
/* Aliased to `--color-border-critical` so consumers reach for the
|
|
154
|
+
error-state intent rather than the raw critical token. */
|
|
155
|
+
--color-border-control-error: var(--color-border-critical);
|
|
156
|
+
|
|
157
|
+
/* Control Fill — Checked (selected affordance for checkbox, toggle,
|
|
158
|
+
radio, multi-select, multi-combobox, calendar selected day,
|
|
159
|
+
date-range range fill). Aliased to `--color-bg-fill-accent` so all
|
|
160
|
+
"checked/selected" controls share one anchor. */
|
|
161
|
+
--color-bg-control-checked: var(--color-bg-fill-accent);
|
|
138
162
|
|
|
139
163
|
/* Brand/Primary Border */
|
|
140
164
|
--color-border-primary: var(--indigo-700);
|
|
@@ -142,9 +166,11 @@
|
|
|
142
166
|
/* Focus Border */
|
|
143
167
|
--color-border-focus: var(--indigo-500);
|
|
144
168
|
|
|
145
|
-
/* Focus Ring
|
|
146
|
-
|
|
147
|
-
|
|
169
|
+
/* Focus Ring — two-stop composite (WCAG 2.2 non-text-contrast).
|
|
170
|
+
`inner` separates the ring from the focused element; `outer` carries
|
|
171
|
+
the ring colour. Composed in `effects.css` as `--focus-ring`. */
|
|
172
|
+
--color-focus-ring-inner: var(--white);
|
|
173
|
+
--color-focus-ring-outer: var(--indigo-500);
|
|
148
174
|
|
|
149
175
|
/* Semantic Borders */
|
|
150
176
|
--color-border-neutral: var(--gray-900);
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/* ===================================
|
|
2
|
+
* Component-Tier Tokens (Layer 3)
|
|
3
|
+
*
|
|
4
|
+
* Action and Input matrices. Every cell aliases a layer-2 generic — no
|
|
5
|
+
* flat hex. Variants compose in component CSS (e.g. button.css picks
|
|
6
|
+
* which property carries the tone colour for `outline` vs `solid`).
|
|
7
|
+
*
|
|
8
|
+
* The rest of Assembly's components consume semantic tokens directly;
|
|
9
|
+
* only action + input have a layer-3 surface. See
|
|
10
|
+
* `docs/component-tokens.md` for the rationale and the cell-by-cell
|
|
11
|
+
* spec — this file mirrors it.
|
|
12
|
+
* =================================== */
|
|
13
|
+
:root {
|
|
14
|
+
/* ===================================
|
|
15
|
+
* Action Matrix
|
|
16
|
+
* Shape: --color-action-{tone}-{property}-{state}
|
|
17
|
+
* tones = primary | neutral | critical
|
|
18
|
+
* properties = bg | border | text | icon
|
|
19
|
+
* states = default | hover | focus | pressed | disabled
|
|
20
|
+
* =================================== */
|
|
21
|
+
|
|
22
|
+
/* Primary — bg */
|
|
23
|
+
--color-action-primary-bg-default: var(--color-bg-fill-primary);
|
|
24
|
+
--color-action-primary-bg-hover: var(--color-bg-fill-primary-hover);
|
|
25
|
+
--color-action-primary-bg-focus: var(--color-bg-fill-primary);
|
|
26
|
+
--color-action-primary-bg-pressed: var(--color-bg-fill-primary-active);
|
|
27
|
+
--color-action-primary-bg-disabled: var(--color-bg-fill-primary-disabled);
|
|
28
|
+
|
|
29
|
+
/* Primary — border */
|
|
30
|
+
--color-action-primary-border-default: var(--color-border-primary);
|
|
31
|
+
--color-action-primary-border-hover: var(--color-border-primary);
|
|
32
|
+
--color-action-primary-border-focus: var(--color-border-focus);
|
|
33
|
+
--color-action-primary-border-pressed: var(--color-border-primary);
|
|
34
|
+
--color-action-primary-border-disabled: var(--color-border-control-disabled);
|
|
35
|
+
|
|
36
|
+
/* Primary — text */
|
|
37
|
+
--color-action-primary-text-default: var(--color-text-on-primary);
|
|
38
|
+
--color-action-primary-text-hover: var(--color-text-on-primary);
|
|
39
|
+
--color-action-primary-text-focus: var(--color-text-on-primary);
|
|
40
|
+
--color-action-primary-text-pressed: var(--color-text-on-primary);
|
|
41
|
+
--color-action-primary-text-disabled: var(--color-text-disabled);
|
|
42
|
+
|
|
43
|
+
/* Primary — icon */
|
|
44
|
+
--color-action-primary-icon-default: var(--color-text-on-primary);
|
|
45
|
+
--color-action-primary-icon-hover: var(--color-text-on-primary);
|
|
46
|
+
--color-action-primary-icon-focus: var(--color-text-on-primary);
|
|
47
|
+
--color-action-primary-icon-pressed: var(--color-text-on-primary);
|
|
48
|
+
--color-action-primary-icon-disabled: var(--color-text-disabled);
|
|
49
|
+
|
|
50
|
+
/* Neutral — bg */
|
|
51
|
+
--color-action-neutral-bg-default: var(--color-bg-fill-interactive);
|
|
52
|
+
--color-action-neutral-bg-hover: var(--color-bg-fill-interactive-hover);
|
|
53
|
+
--color-action-neutral-bg-focus: var(--color-bg-fill-interactive);
|
|
54
|
+
--color-action-neutral-bg-pressed: var(--color-bg-fill-interactive-active);
|
|
55
|
+
--color-action-neutral-bg-disabled: var(--color-bg-fill-interactive-disabled);
|
|
56
|
+
|
|
57
|
+
/* Neutral — border */
|
|
58
|
+
--color-action-neutral-border-default: var(--color-border-control);
|
|
59
|
+
--color-action-neutral-border-hover: var(--color-border-control-hover);
|
|
60
|
+
--color-action-neutral-border-focus: var(--color-border-focus);
|
|
61
|
+
--color-action-neutral-border-pressed: var(--color-border-control-active);
|
|
62
|
+
--color-action-neutral-border-disabled: var(--color-border-control-disabled);
|
|
63
|
+
|
|
64
|
+
/* Neutral — text */
|
|
65
|
+
--color-action-neutral-text-default: var(--color-text);
|
|
66
|
+
--color-action-neutral-text-hover: var(--color-text);
|
|
67
|
+
--color-action-neutral-text-focus: var(--color-text);
|
|
68
|
+
--color-action-neutral-text-pressed: var(--color-text);
|
|
69
|
+
--color-action-neutral-text-disabled: var(--color-text-disabled);
|
|
70
|
+
|
|
71
|
+
/* Neutral — icon */
|
|
72
|
+
--color-action-neutral-icon-default: var(--color-icon);
|
|
73
|
+
--color-action-neutral-icon-hover: var(--color-icon-interactive-hover);
|
|
74
|
+
--color-action-neutral-icon-focus: var(--color-icon);
|
|
75
|
+
--color-action-neutral-icon-pressed: var(--color-icon);
|
|
76
|
+
--color-action-neutral-icon-disabled: var(--color-icon-disabled);
|
|
77
|
+
|
|
78
|
+
/* Critical — bg */
|
|
79
|
+
--color-action-critical-bg-default: var(--color-bg-fill-critical);
|
|
80
|
+
--color-action-critical-bg-hover: var(--color-bg-fill-critical-hover);
|
|
81
|
+
--color-action-critical-bg-focus: var(--color-bg-fill-critical);
|
|
82
|
+
--color-action-critical-bg-pressed: var(--color-bg-fill-critical-active);
|
|
83
|
+
--color-action-critical-bg-disabled: var(
|
|
84
|
+
--color-bg-fill-interactive-disabled
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
/* Critical — border */
|
|
88
|
+
--color-action-critical-border-default: var(--color-border-critical);
|
|
89
|
+
--color-action-critical-border-hover: var(--color-border-critical);
|
|
90
|
+
--color-action-critical-border-focus: var(--color-border-critical);
|
|
91
|
+
--color-action-critical-border-pressed: var(--color-border-critical);
|
|
92
|
+
--color-action-critical-border-disabled: var(--color-border-control-disabled);
|
|
93
|
+
|
|
94
|
+
/* Critical — text */
|
|
95
|
+
--color-action-critical-text-default: var(--color-text-on-critical);
|
|
96
|
+
--color-action-critical-text-hover: var(--color-text-on-critical);
|
|
97
|
+
--color-action-critical-text-focus: var(--color-text-on-critical);
|
|
98
|
+
--color-action-critical-text-pressed: var(--color-text-on-critical);
|
|
99
|
+
--color-action-critical-text-disabled: var(--color-text-disabled);
|
|
100
|
+
|
|
101
|
+
/* Critical — icon */
|
|
102
|
+
--color-action-critical-icon-default: var(--color-text-on-critical);
|
|
103
|
+
--color-action-critical-icon-hover: var(--color-text-on-critical);
|
|
104
|
+
--color-action-critical-icon-focus: var(--color-text-on-critical);
|
|
105
|
+
--color-action-critical-icon-pressed: var(--color-text-on-critical);
|
|
106
|
+
--color-action-critical-icon-disabled: var(--color-text-disabled);
|
|
107
|
+
|
|
108
|
+
/* ===================================
|
|
109
|
+
* Input Matrix
|
|
110
|
+
* Shape: --color-input-{property}-{state}
|
|
111
|
+
* properties = bg | border | text | icon | checked
|
|
112
|
+
* states = default | hover | focus | disabled | error
|
|
113
|
+
*
|
|
114
|
+
* `checked` is the selected-state affordance; it collapses the state
|
|
115
|
+
* axis (the "checked" affordance itself is a state). Inputs without a
|
|
116
|
+
* checked affordance (text inputs, textareas) ignore the `checked-*`
|
|
117
|
+
* cells.
|
|
118
|
+
* =================================== */
|
|
119
|
+
|
|
120
|
+
/* bg */
|
|
121
|
+
--color-input-bg-default: var(--color-bg-surface);
|
|
122
|
+
--color-input-bg-hover: var(--color-bg-surface);
|
|
123
|
+
--color-input-bg-focus: var(--color-bg-surface);
|
|
124
|
+
--color-input-bg-disabled: var(--color-bg-disabled);
|
|
125
|
+
--color-input-bg-error: var(--color-bg-surface);
|
|
126
|
+
|
|
127
|
+
/* border */
|
|
128
|
+
--color-input-border-default: var(--color-border-control);
|
|
129
|
+
--color-input-border-hover: var(--color-border-control-hover);
|
|
130
|
+
--color-input-border-focus: var(--color-border-focus);
|
|
131
|
+
--color-input-border-disabled: var(--color-border-control-disabled);
|
|
132
|
+
--color-input-border-error: var(--color-border-control-error);
|
|
133
|
+
|
|
134
|
+
/* text */
|
|
135
|
+
--color-input-text-default: var(--color-text);
|
|
136
|
+
--color-input-text-hover: var(--color-text);
|
|
137
|
+
--color-input-text-focus: var(--color-text);
|
|
138
|
+
--color-input-text-disabled: var(--color-text-disabled);
|
|
139
|
+
--color-input-text-error: var(--color-text);
|
|
140
|
+
|
|
141
|
+
/* icon */
|
|
142
|
+
--color-input-icon-default: var(--color-icon-secondary);
|
|
143
|
+
--color-input-icon-hover: var(--color-icon);
|
|
144
|
+
--color-input-icon-focus: var(--color-icon);
|
|
145
|
+
--color-input-icon-disabled: var(--color-icon-disabled);
|
|
146
|
+
--color-input-icon-error: var(--color-icon-critical);
|
|
147
|
+
|
|
148
|
+
/* checked (selected affordance) */
|
|
149
|
+
--color-input-checked-bg: var(--color-bg-control-checked);
|
|
150
|
+
--color-input-checked-bg-hover: var(--color-bg-fill-accent-hover);
|
|
151
|
+
--color-input-checked-border: var(--color-bg-control-checked);
|
|
152
|
+
--color-input-checked-icon: var(--color-text-on-accent);
|
|
153
|
+
--color-input-checked-disabled: var(--color-bg-fill-accent-disabled);
|
|
154
|
+
}
|
|
@@ -3,9 +3,15 @@
|
|
|
3
3
|
--shadow-surface: var(--shadow-xs);
|
|
4
4
|
--shadow-modal: var(--shadow-lg);
|
|
5
5
|
|
|
6
|
-
/* Focus Ring
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
/* Focus Ring — two-stop composite. Inner stop separates the ring from
|
|
7
|
+
the focused surface; outer stop carries the ring colour. Meets WCAG
|
|
8
|
+
2.2 non-text-contrast on light + dark surfaces. */
|
|
9
|
+
--focus-ring:
|
|
10
|
+
0 0 0 2px var(--color-focus-ring-inner),
|
|
11
|
+
0 0 0 4px var(--color-focus-ring-outer);
|
|
12
|
+
--focus-ring-critical:
|
|
13
|
+
0 0 0 2px var(--color-focus-ring-inner),
|
|
14
|
+
0 0 0 4px var(--color-border-critical);
|
|
9
15
|
|
|
10
16
|
/* Z-Index Semantic Layers */
|
|
11
17
|
--z-dropdown: var(--z-100);
|
|
@@ -29,4 +29,64 @@
|
|
|
29
29
|
--letter-spacing-tight: -0.025em;
|
|
30
30
|
--letter-spacing-normal: 0;
|
|
31
31
|
--letter-spacing-wide: 0.025em;
|
|
32
|
+
|
|
33
|
+
/* ===================================
|
|
34
|
+
* Typography Roles — Bundled Sub-tokens
|
|
35
|
+
*
|
|
36
|
+
* Role names (display | page | section | subsection for headings;
|
|
37
|
+
* sm | md | lg for body) survive a redesign that re-scales the type
|
|
38
|
+
* ramp. Components consume the four sub-tokens (size, weight, leading,
|
|
39
|
+
* tracking) per role rather than composing atomic font-size +
|
|
40
|
+
* line-height + weight per call site. Sub-tokens not `font:`
|
|
41
|
+
* shorthand — shorthand resets font-stretch/variant and cannot carry
|
|
42
|
+
* letter-spacing.
|
|
43
|
+
*
|
|
44
|
+
* Heading mapping (locked, see WON-580):
|
|
45
|
+
* level=1 → page (default page title)
|
|
46
|
+
* level=2 → section (first-level section header)
|
|
47
|
+
* level=3-6 → subsection (size step-down via @size override)
|
|
48
|
+
* `display` is an opt-in @size — never a level default.
|
|
49
|
+
* =================================== */
|
|
50
|
+
|
|
51
|
+
/* Heading — Display (opt-in via @size="display") */
|
|
52
|
+
--typography-heading-display-size: var(--font-size-5xl); /* 30px */
|
|
53
|
+
--typography-heading-display-weight: var(--font-weight-medium);
|
|
54
|
+
--typography-heading-display-leading: var(--line-height-36);
|
|
55
|
+
--typography-heading-display-tracking: var(--letter-spacing-tight);
|
|
56
|
+
|
|
57
|
+
/* Heading — Page (level=1 default) */
|
|
58
|
+
--typography-heading-page-size: var(--font-size-4xl); /* 24px */
|
|
59
|
+
--typography-heading-page-weight: var(--font-weight-medium);
|
|
60
|
+
--typography-heading-page-leading: var(--line-height-28);
|
|
61
|
+
--typography-heading-page-tracking: var(--letter-spacing-tight);
|
|
62
|
+
|
|
63
|
+
/* Heading — Section (level=2 default) */
|
|
64
|
+
--typography-heading-section-size: var(--font-size-3xl); /* 20px */
|
|
65
|
+
--typography-heading-section-weight: var(--font-weight-medium);
|
|
66
|
+
--typography-heading-section-leading: var(--line-height-24);
|
|
67
|
+
--typography-heading-section-tracking: var(--letter-spacing-normal);
|
|
68
|
+
|
|
69
|
+
/* Heading — Subsection (level=3 default; 4-6 step down via @size) */
|
|
70
|
+
--typography-heading-subsection-size: var(--font-size-2xl); /* 18px */
|
|
71
|
+
--typography-heading-subsection-weight: var(--font-weight-medium);
|
|
72
|
+
--typography-heading-subsection-leading: var(--line-height-24);
|
|
73
|
+
--typography-heading-subsection-tracking: var(--letter-spacing-normal);
|
|
74
|
+
|
|
75
|
+
/* Body — Small (captions, dense table cells, helper text) */
|
|
76
|
+
--typography-body-sm-size: var(--font-size-sm); /* 12px */
|
|
77
|
+
--typography-body-sm-weight: var(--font-weight-regular);
|
|
78
|
+
--typography-body-sm-leading: var(--line-height-tight); /* 16px */
|
|
79
|
+
--typography-body-sm-tracking: var(--letter-spacing-normal);
|
|
80
|
+
|
|
81
|
+
/* Body — Medium (default body text) */
|
|
82
|
+
--typography-body-md-size: var(--font-size-md); /* 13px */
|
|
83
|
+
--typography-body-md-weight: var(--font-weight-regular);
|
|
84
|
+
--typography-body-md-leading: var(--line-height-normal); /* 20px */
|
|
85
|
+
--typography-body-md-tracking: var(--letter-spacing-normal);
|
|
86
|
+
|
|
87
|
+
/* Body — Large (lead paragraphs, emphasized body) */
|
|
88
|
+
--typography-body-lg-size: var(--font-size-lg); /* 14px */
|
|
89
|
+
--typography-body-lg-weight: var(--font-weight-regular);
|
|
90
|
+
--typography-body-lg-leading: var(--line-height-normal); /* 20px */
|
|
91
|
+
--typography-body-lg-tracking: var(--letter-spacing-normal);
|
|
32
92
|
}
|
package/dist/styles/tokens.css
CHANGED
|
@@ -21,6 +21,9 @@
|
|
|
21
21
|
@import url("./semantic/effects.css");
|
|
22
22
|
@import url("./semantic/motion.css");
|
|
23
23
|
|
|
24
|
+
/* Component-tier tokens (Action + Input matrices only) */
|
|
25
|
+
@import url("./semantic/component.css");
|
|
26
|
+
|
|
24
27
|
/* Base styles */
|
|
25
28
|
@import url("./base/typography.css");
|
|
26
29
|
|