@adia-ai/web-components 0.7.3 → 0.7.5
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/CHANGELOG.md +31 -0
- package/components/accordion/accordion.css +2 -2
- package/components/action-list/action-list.css +2 -2
- package/components/agent-artifact/agent-artifact.css +31 -31
- package/components/agent-feedback-bar/agent-feedback-bar.css +10 -10
- package/components/agent-questions/agent-questions.css +59 -57
- package/components/agent-reasoning/agent-reasoning.css +54 -54
- package/components/agent-suggestions/agent-suggestions.css +4 -4
- package/components/agent-trace/agent-trace.css +53 -53
- package/components/alert/alert.css +53 -53
- package/components/avatar/avatar.css +27 -27
- package/components/badge/badge.css +56 -53
- package/components/block/block.css +16 -16
- package/components/blockquote/blockquote.css +16 -16
- package/components/breadcrumb/breadcrumb.css +23 -23
- package/components/button/button.css +123 -101
- package/components/calendar-grid/calendar-grid.css +95 -92
- package/components/calendar-picker/calendar-picker.css +141 -139
- package/components/canvas/canvas.css +12 -12
- package/components/card/card.css +83 -83
- package/components/chart/chart.css +218 -218
- package/components/chart-legend/chart-legend.css +26 -26
- package/components/check/check.css +40 -40
- package/components/code/code.css +125 -125
- package/components/col/col.css +15 -15
- package/components/color-picker/color-picker.css +55 -55
- package/components/combobox/combobox.css +64 -62
- package/components/command/command.css +91 -91
- package/components/context-menu/context-menu.css +1 -1
- package/components/date-range-picker/date-range-picker.css +59 -59
- package/components/datetime-picker/datetime-picker.css +25 -25
- package/components/demo-toggle/demo-toggle.css +27 -27
- package/components/description-list/description-list.css +18 -18
- package/components/divider/divider.css +24 -24
- package/components/embed/embed.css +6 -6
- package/components/empty-state/empty-state.css +29 -29
- package/components/feed/feed.css +12 -12
- package/components/field/field.css +28 -28
- package/components/field/field.test.js +2 -2
- package/components/fields/fields.css +5 -5
- package/components/grid/grid.a2ui.json +10 -0
- package/components/grid/grid.css +23 -5
- package/components/grid/grid.d.ts +4 -0
- package/components/grid/grid.yaml +13 -0
- package/components/heatmap/heatmap.css +61 -61
- package/components/icon/icon.css +12 -12
- package/components/image/image.css +14 -14
- package/components/inline-edit/inline-edit.css +16 -16
- package/components/inline-message/inline-message.css +16 -16
- package/components/input/input.css +69 -66
- package/components/inspector/inspector.css +6 -6
- package/components/integration-card/integration-card.css +41 -41
- package/components/integration-card/integration-card.test.js +4 -4
- package/components/kbd/kbd.css +47 -40
- package/components/link/link.css +12 -12
- package/components/list/list.css +8 -8
- package/components/list-window/list-window.css +10 -10
- package/components/loading-overlay/loading-overlay.css +17 -18
- package/components/loading-overlay/loading-overlay.test.js +8 -8
- package/components/mark/mark.css +16 -16
- package/components/menu/menu.css +9 -9
- package/components/modal/modal.class.js +5 -9
- package/components/modal/modal.css +43 -43
- package/components/nav/nav.css +40 -40
- package/components/nav-group/nav-group.css +54 -54
- package/components/nav-item/nav-item.css +44 -44
- package/components/noodles/noodles.css +31 -31
- package/components/number-format/number-format.css +4 -4
- package/components/option-card/option-card.css +70 -70
- package/components/otp-input/otp-input.css +29 -29
- package/components/page/page.a2ui.json +1 -1
- package/components/page/page.css +27 -27
- package/components/page/page.d.ts +1 -1
- package/components/page/page.yaml +1 -1
- package/components/pagination/pagination.css +6 -6
- package/components/pane/pane.css +57 -57
- package/components/password-strength/password-strength.css +32 -32
- package/components/pipeline-status/pipeline-status.css +67 -67
- package/components/popover/popover.css +11 -11
- package/components/preview/preview.css +21 -21
- package/components/progress/progress.css +23 -23
- package/components/progress-row/progress-row.css +17 -17
- package/components/qr-code/qr-code.css +4 -4
- package/components/radio/radio.css +39 -39
- package/components/range/range.css +58 -55
- package/components/rating/rating.css +28 -28
- package/components/relative-time/relative-time.css +6 -6
- package/components/richtext/richtext.css +133 -133
- package/components/row/row.css +19 -19
- package/components/search/search.css +5 -5
- package/components/segment/segment.css +29 -24
- package/components/segmented/segmented.css +30 -25
- package/components/select/select.css +95 -93
- package/components/skeleton/skeleton.css +14 -14
- package/components/skip-nav/skip-nav.css +4 -4
- package/components/slider/slider.css +61 -61
- package/components/spinner/spinner.css +40 -40
- package/components/spinner/spinner.test.js +10 -12
- package/components/stack/stack.css +11 -11
- package/components/stat/stat.css +27 -27
- package/components/step-progress/step-progress.css +20 -20
- package/components/stepper/stepper.css +29 -29
- package/components/stream/stream.css +12 -12
- package/components/swatch/swatch.css +68 -68
- package/components/swiper/swiper.class.js +5 -12
- package/components/swiper/swiper.css +57 -57
- package/components/switch/switch.css +53 -53
- package/components/table/table.css +166 -163
- package/components/table-toolbar/table-toolbar.css +33 -33
- package/components/tabs/tabs.css +54 -51
- package/components/tag/tag.css +74 -71
- package/components/tag/tag.test.js +14 -14
- package/components/tags-input/tags-input.css +51 -49
- package/components/text/text.css +44 -44
- package/components/textarea/textarea.css +49 -46
- package/components/time-picker/time-picker.css +47 -47
- package/components/timeline/timeline.css +54 -54
- package/components/toast/toast.css +58 -58
- package/components/toc/toc.css +28 -28
- package/components/toggle-group/toggle-group.css +9 -6
- package/components/toggle-scheme/toggle-scheme.css +2 -2
- package/components/toolbar/toolbar.css +18 -18
- package/components/tooltip/tooltip.css +2 -2
- package/components/tour/tour.css +4 -4
- package/components/tree/tree.css +37 -37
- package/components/upload/upload.css +49 -49
- package/dist/host.min.css +1 -0
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +2 -2
- package/package.json +1 -1
- package/styles/api/text.css +9 -2
- package/styles/foundation/space.css +19 -18
- package/styles/host.css +48 -0
- package/styles/prose.css +187 -173
- package/styles/type/scale.css +6 -0
- package/styles/typography.css +10 -5
- package/styles/verse.css +122 -0
|
@@ -2,49 +2,50 @@
|
|
|
2
2
|
inside `@scope` don't match the scope root. Plain selectors outside work.
|
|
3
3
|
See docs/BROWSER-COMPAT.md §3a. */
|
|
4
4
|
input-ui[variant="ghost"]:hover {
|
|
5
|
-
--input-bg
|
|
5
|
+
--input-bg: var(--a-bg-muted);
|
|
6
6
|
}
|
|
7
7
|
input-ui:not([disabled]) [slot="field"]:hover {
|
|
8
|
-
background: var(--input-bg-hover
|
|
9
|
-
border-color: var(--input-border-hover
|
|
10
|
-
color: var(--input-fg-hover
|
|
8
|
+
background: var(--input-bg-hover);
|
|
9
|
+
border-color: var(--input-border-hover);
|
|
10
|
+
color: var(--input-fg-hover);
|
|
11
11
|
}
|
|
12
12
|
input-ui:not([disabled]) [slot="field"]:hover [slot="prefix"],
|
|
13
13
|
input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
14
|
-
color: var(--input-affix-fg-hover
|
|
14
|
+
color: var(--input-affix-fg-hover);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
@scope (input-ui) {
|
|
18
18
|
:where(:scope) {
|
|
19
19
|
/* ── Tokens (wired to --a-ui-*) ── */
|
|
20
|
-
--input-bg
|
|
21
|
-
--input-fg
|
|
22
|
-
--input-border
|
|
23
|
-
--input-border-hover
|
|
24
|
-
--input-focus-ring
|
|
25
|
-
--input-focus-ring-invalid
|
|
26
|
-
--input-radius
|
|
27
|
-
--input-height
|
|
28
|
-
--input-px
|
|
29
|
-
--input-font-size
|
|
30
|
-
--input-
|
|
31
|
-
--input-
|
|
32
|
-
--input-
|
|
33
|
-
--input-
|
|
20
|
+
--input-bg: var(--a-ui-bg);
|
|
21
|
+
--input-fg: var(--a-ui-text);
|
|
22
|
+
--input-border: var(--a-ui-border);
|
|
23
|
+
--input-border-hover: var(--a-ui-border-hover);
|
|
24
|
+
--input-focus-ring: var(--a-focus-ring);
|
|
25
|
+
--input-focus-ring-invalid: var(--a-focus-ring-invalid);
|
|
26
|
+
--input-radius: var(--a-radius);
|
|
27
|
+
--input-height: var(--a-size);
|
|
28
|
+
--input-px: var(--a-ui-px);
|
|
29
|
+
--input-font-size: var(--a-ui-size);
|
|
30
|
+
--input-font-family: var(--a-font-family-ui);
|
|
31
|
+
--input-placeholder-fg: var(--a-ui-text-placeholder);
|
|
32
|
+
--input-affix-fg: var(--a-ui-text-placeholder);
|
|
33
|
+
--input-field-gap: var(--a-space-1);
|
|
34
|
+
--input-label-min-width: 8ch;
|
|
34
35
|
|
|
35
36
|
/* ── Transitions ── */
|
|
36
|
-
--input-duration
|
|
37
|
-
--input-easing
|
|
37
|
+
--input-duration: var(--a-duration-fast);
|
|
38
|
+
--input-easing: var(--a-easing);
|
|
38
39
|
|
|
39
40
|
/* ── State: hover/focus ── */
|
|
40
|
-
--input-bg-hover
|
|
41
|
-
--input-fg-hover
|
|
42
|
-
--input-affix-fg-hover
|
|
43
|
-
--input-fg-focus
|
|
41
|
+
--input-bg-hover: var(--a-ui-bg-hover);
|
|
42
|
+
--input-fg-hover: var(--a-ui-text-hover);
|
|
43
|
+
--input-affix-fg-hover: var(--a-ui-text-subtle);
|
|
44
|
+
--input-fg-focus: var(--a-ui-text-active);
|
|
44
45
|
|
|
45
46
|
/* ── State: disabled ── */
|
|
46
|
-
--input-bg-disabled
|
|
47
|
-
--input-fg-disabled
|
|
47
|
+
--input-bg-disabled: var(--a-ui-bg-disabled);
|
|
48
|
+
--input-fg-disabled: var(--a-ui-text-disabled);
|
|
48
49
|
text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
|
|
49
50
|
}
|
|
50
51
|
|
|
@@ -65,9 +66,9 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
65
66
|
label wider than the floor grows past it. */
|
|
66
67
|
[slot="label"] {
|
|
67
68
|
flex-shrink: 0;
|
|
68
|
-
min-width: var(--input-label-min-width
|
|
69
|
-
color: var(--input-affix-fg
|
|
70
|
-
font-size: var(--input-font-size
|
|
69
|
+
min-width: var(--input-label-min-width);
|
|
70
|
+
color: var(--input-affix-fg);
|
|
71
|
+
font-size: var(--input-font-size);
|
|
71
72
|
user-select: none;
|
|
72
73
|
pointer-events: none;
|
|
73
74
|
}
|
|
@@ -76,15 +77,17 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
76
77
|
[slot="field"] {
|
|
77
78
|
display: flex;
|
|
78
79
|
align-items: center;
|
|
79
|
-
gap: var(--input-field-gap
|
|
80
|
-
min-height: var(--input-height
|
|
81
|
-
padding: 0 var(--input-px
|
|
82
|
-
border: 1px solid var(--input-border
|
|
83
|
-
border-radius: var(--input-radius
|
|
84
|
-
background: var(--input-bg
|
|
85
|
-
color: var(--input-fg
|
|
80
|
+
gap: var(--input-field-gap);
|
|
81
|
+
min-height: var(--input-height);
|
|
82
|
+
padding: 0 var(--input-px);
|
|
83
|
+
border: 1px solid var(--input-border);
|
|
84
|
+
border-radius: var(--input-radius);
|
|
85
|
+
background: var(--input-bg);
|
|
86
|
+
color: var(--input-fg);
|
|
86
87
|
font: inherit;
|
|
87
|
-
|
|
88
|
+
/* font-family floor — see segment.css rationale. */
|
|
89
|
+
font-family: var(--input-font-family);
|
|
90
|
+
font-size: var(--input-font-size);
|
|
88
91
|
/* line-height: 1.4 (not 1) so descender-bearing glyphs (g, j, p, q, y)
|
|
89
92
|
have room inside [slot="text"]'s line box. With line-height: 1 the
|
|
90
93
|
line box equals the em-square and descenders extend below it; the
|
|
@@ -96,22 +99,22 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
96
99
|
/* Cover every property the hover / focus / invalid states change so
|
|
97
100
|
the field doesn't half-snap (border slides, but bg/colour/ring snap). */
|
|
98
101
|
transition:
|
|
99
|
-
background var(--input-duration
|
|
100
|
-
border-color var(--input-duration
|
|
101
|
-
color var(--input-duration
|
|
102
|
-
box-shadow var(--input-duration
|
|
102
|
+
background var(--input-duration) var(--input-easing),
|
|
103
|
+
border-color var(--input-duration) var(--input-easing),
|
|
104
|
+
color var(--input-duration) var(--input-easing),
|
|
105
|
+
box-shadow var(--input-duration) var(--input-easing);
|
|
103
106
|
}
|
|
104
107
|
/* hover rules moved outside @scope — see Safari 17.x bug note at top. */
|
|
105
108
|
:scope:not([disabled]):focus-within [slot="field"] {
|
|
106
109
|
/* Canonical ring — consumes the L3 --input-focus-ring token
|
|
107
110
|
which aliases --a-focus-ring. Border stays stable; the ring
|
|
108
111
|
is the focus affordance (WCAG 2.2 SC 2.4.11/2.4.13). */
|
|
109
|
-
box-shadow: var(--input-focus-ring
|
|
110
|
-
color: var(--input-fg-focus
|
|
112
|
+
box-shadow: var(--input-focus-ring);
|
|
113
|
+
color: var(--input-fg-focus);
|
|
111
114
|
}
|
|
112
115
|
:scope[aria-invalid="true"]:not([disabled]):focus-within [slot="field"],
|
|
113
116
|
:scope[error]:not([disabled]):focus-within [slot="field"] {
|
|
114
|
-
box-shadow: var(--input-focus-ring-invalid
|
|
117
|
+
box-shadow: var(--input-focus-ring-invalid);
|
|
115
118
|
}
|
|
116
119
|
|
|
117
120
|
/* Text (contenteditable span) */
|
|
@@ -139,7 +142,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
139
142
|
}
|
|
140
143
|
|
|
141
144
|
input[slot="text"]::placeholder {
|
|
142
|
-
color: var(--input-placeholder-fg
|
|
145
|
+
color: var(--input-placeholder-fg);
|
|
143
146
|
}
|
|
144
147
|
|
|
145
148
|
/* Placeholder (contenteditable only).
|
|
@@ -152,7 +155,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
152
155
|
so the caret renders at the actual content-start where it belongs. */
|
|
153
156
|
span[slot="text"][data-empty]::before {
|
|
154
157
|
content: attr(data-placeholder);
|
|
155
|
-
color: var(--input-placeholder-fg
|
|
158
|
+
color: var(--input-placeholder-fg);
|
|
156
159
|
pointer-events: none;
|
|
157
160
|
position: absolute;
|
|
158
161
|
inset: 0;
|
|
@@ -171,7 +174,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
171
174
|
font-weight: var(--a-weight-medium, 500);
|
|
172
175
|
/* Reserve space for the absolutely-positioned controls column so the
|
|
173
176
|
value never collides with the stepper buttons. */
|
|
174
|
-
padding-inline-end: var(--input-controls-width, calc(var(--input-height
|
|
177
|
+
padding-inline-end: var(--input-controls-width, calc(var(--input-height) * 0.7));
|
|
175
178
|
}
|
|
176
179
|
|
|
177
180
|
/* Suffix sits flush after the value in number mode (no auto margin so
|
|
@@ -182,7 +185,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
182
185
|
suffix never collides with the stepper buttons. The padding moves
|
|
183
186
|
from `[slot="text"]` to `[slot="suffix"]` when a suffix is present
|
|
184
187
|
— only one element needs the reservation since they're adjacent. */
|
|
185
|
-
margin-inline-end: var(--input-controls-width, calc(var(--input-height
|
|
188
|
+
margin-inline-end: var(--input-controls-width, calc(var(--input-height) * 0.7));
|
|
186
189
|
}
|
|
187
190
|
[data-number]:has([slot="suffix"]) [slot="text"] {
|
|
188
191
|
padding-inline-end: 0;
|
|
@@ -198,8 +201,8 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
198
201
|
inset-inline-end: 0;
|
|
199
202
|
display: grid;
|
|
200
203
|
grid-template-rows: 1fr 1fr;
|
|
201
|
-
border-inline-start: 1px solid var(--input-border
|
|
202
|
-
width: var(--input-controls-width, calc(var(--input-height
|
|
204
|
+
border-inline-start: 1px solid var(--input-border);
|
|
205
|
+
width: var(--input-controls-width, calc(var(--input-height) * 0.7));
|
|
203
206
|
user-select: none;
|
|
204
207
|
overflow: hidden;
|
|
205
208
|
}
|
|
@@ -215,7 +218,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
215
218
|
--button-height: 0;
|
|
216
219
|
--button-radius: 0;
|
|
217
220
|
--button-bg: transparent;
|
|
218
|
-
--button-fg: var(--input-affix-fg
|
|
221
|
+
--button-fg: var(--input-affix-fg);
|
|
219
222
|
--button-px: 0;
|
|
220
223
|
min-width: 0;
|
|
221
224
|
min-height: 0;
|
|
@@ -231,7 +234,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
231
234
|
any value inherited from its parent button-ui. Tying it to
|
|
232
235
|
--input-height keeps the caret proportional across sm/md/lg. */
|
|
233
236
|
[data-number] [slot="controls"] icon-ui {
|
|
234
|
-
--icon-size: calc(var(--input-height
|
|
237
|
+
--icon-size: calc(var(--input-height) * 0.4);
|
|
235
238
|
}
|
|
236
239
|
[data-number] [slot="controls"] button-ui:hover {
|
|
237
240
|
--button-bg: var(--a-ui-bg-hover);
|
|
@@ -248,11 +251,11 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
248
251
|
inline-start border on the column + the bottom-border on the upper
|
|
249
252
|
button. */
|
|
250
253
|
[data-number] [slot="controls"] button-ui:first-child {
|
|
251
|
-
border-bottom: 1px solid var(--input-border
|
|
252
|
-
border-start-end-radius: calc(var(--input-radius
|
|
254
|
+
border-bottom: 1px solid var(--input-border);
|
|
255
|
+
border-start-end-radius: calc(var(--input-radius) - 1px);
|
|
253
256
|
}
|
|
254
257
|
[data-number] [slot="controls"] button-ui:last-child {
|
|
255
|
-
border-end-end-radius: calc(var(--input-radius
|
|
258
|
+
border-end-end-radius: calc(var(--input-radius) - 1px);
|
|
256
259
|
}
|
|
257
260
|
|
|
258
261
|
/* Raw mode strips the chrome — also strip the controls column's
|
|
@@ -279,8 +282,8 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
279
282
|
display: inline-flex;
|
|
280
283
|
align-items: center;
|
|
281
284
|
flex-shrink: 0;
|
|
282
|
-
color: var(--input-affix-fg
|
|
283
|
-
font-size: var(--input-font-size
|
|
285
|
+
color: var(--input-affix-fg);
|
|
286
|
+
font-size: var(--input-font-size);
|
|
284
287
|
line-height: 1;
|
|
285
288
|
user-select: none;
|
|
286
289
|
pointer-events: none;
|
|
@@ -330,10 +333,10 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
330
333
|
instead so the button visually matches the input's intrinsic size. */
|
|
331
334
|
[slot="field"] > [slot="leading"] button-ui,
|
|
332
335
|
[slot="field"] > [slot="trailing"] button-ui {
|
|
333
|
-
--button-height: calc(var(--input-height
|
|
336
|
+
--button-height: calc(var(--input-height) - 4px);
|
|
334
337
|
--button-bg: transparent;
|
|
335
338
|
--button-border: transparent;
|
|
336
|
-
--button-fg: var(--input-affix-fg
|
|
339
|
+
--button-fg: var(--input-affix-fg);
|
|
337
340
|
--button-px: var(--a-space-1);
|
|
338
341
|
}
|
|
339
342
|
|
|
@@ -348,13 +351,13 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
348
351
|
absolutely positioned at inset-inline-end: 0; trailing sits in the
|
|
349
352
|
flex flow.) Same pattern as [slot="suffix"] in number mode. */
|
|
350
353
|
[data-number]:has(> [slot="trailing"]) > [slot="trailing"] {
|
|
351
|
-
margin-inline-end: var(--input-controls-width, calc(var(--input-height
|
|
354
|
+
margin-inline-end: var(--input-controls-width, calc(var(--input-height) * 0.7));
|
|
352
355
|
}
|
|
353
356
|
|
|
354
357
|
/* Disabled */
|
|
355
358
|
:scope[disabled] [slot="field"] {
|
|
356
|
-
background: var(--input-bg-disabled
|
|
357
|
-
color: var(--input-fg-disabled
|
|
359
|
+
background: var(--input-bg-disabled);
|
|
360
|
+
color: var(--input-fg-disabled);
|
|
358
361
|
cursor: not-allowed;
|
|
359
362
|
}
|
|
360
363
|
|
|
@@ -371,9 +374,9 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
371
374
|
|
|
372
375
|
/* Ghost variant */
|
|
373
376
|
:scope[variant="ghost"] {
|
|
374
|
-
--input-bg
|
|
375
|
-
--input-border
|
|
376
|
-
--input-border-hover
|
|
377
|
+
--input-bg: transparent;
|
|
378
|
+
--input-border: transparent;
|
|
379
|
+
--input-border-hover: transparent;
|
|
377
380
|
}
|
|
378
381
|
/* :scope[variant="ghost"]:hover moved outside @scope — see Safari
|
|
379
382
|
17.x bug note at top of file. */
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
@scope (inspector-ui) {
|
|
2
2
|
:where(:scope) {
|
|
3
|
-
--inspector-pane-font-size
|
|
4
|
-
--inspector-border
|
|
5
|
-
--inspector-radius
|
|
3
|
+
--inspector-pane-font-size: var(--a-ui-tiny);
|
|
4
|
+
--inspector-border: 1px solid var(--a-border-subtle);
|
|
5
|
+
--inspector-radius: var(--a-radius);
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
:scope {
|
|
9
9
|
display: flex;
|
|
10
10
|
flex-direction: column;
|
|
11
11
|
overflow: hidden;
|
|
12
|
-
border: var(--inspector-border
|
|
13
|
-
border-radius: var(--inspector-radius
|
|
12
|
+
border: var(--inspector-border);
|
|
13
|
+
border-radius: var(--inspector-radius);
|
|
14
14
|
min-width: 0;
|
|
15
15
|
}
|
|
16
16
|
|
|
@@ -26,6 +26,6 @@
|
|
|
26
26
|
:scope tab-ui > code-ui {
|
|
27
27
|
display: block;
|
|
28
28
|
overflow: auto;
|
|
29
|
-
font-size: var(--inspector-pane-font-size
|
|
29
|
+
font-size: var(--inspector-pane-font-size);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
@scope (integration-card-ui) {
|
|
2
2
|
:where(:scope) {
|
|
3
3
|
/* ── Layout ── */
|
|
4
|
-
--integration-card-bg
|
|
5
|
-
--integration-card-border
|
|
6
|
-
--integration-card-radius
|
|
7
|
-
--integration-card-px
|
|
8
|
-
--integration-card-py
|
|
9
|
-
--integration-card-gap
|
|
4
|
+
--integration-card-bg: var(--a-bg);
|
|
5
|
+
--integration-card-border: 1px solid var(--a-border-subtle);
|
|
6
|
+
--integration-card-radius: var(--a-radius-md);
|
|
7
|
+
--integration-card-px: var(--a-space-4);
|
|
8
|
+
--integration-card-py: var(--a-space-4);
|
|
9
|
+
--integration-card-gap: var(--a-space-3);
|
|
10
10
|
|
|
11
11
|
/* ── Inner rhythm ── */
|
|
12
|
-
--integration-card-row-gap
|
|
13
|
-
--integration-card-text-gap
|
|
12
|
+
--integration-card-row-gap: var(--a-space-3);
|
|
13
|
+
--integration-card-text-gap: var(--a-space-1);
|
|
14
14
|
|
|
15
15
|
/* ── Logo ── */
|
|
16
|
-
--integration-card-logo-size
|
|
17
|
-
--integration-card-logo-radius
|
|
16
|
+
--integration-card-logo-size: var(--a-space-7);
|
|
17
|
+
--integration-card-logo-radius: var(--a-radius-sm);
|
|
18
18
|
|
|
19
19
|
/* ── Typography ── */
|
|
20
|
-
--integration-card-heading-fg
|
|
21
|
-
--integration-card-heading-size
|
|
22
|
-
--integration-card-heading-weight
|
|
23
|
-
--integration-card-description-fg
|
|
24
|
-
--integration-card-description-size
|
|
25
|
-
--integration-card-error-fg
|
|
26
|
-
--integration-card-error-size
|
|
20
|
+
--integration-card-heading-fg: var(--a-fg-strong);
|
|
21
|
+
--integration-card-heading-size: var(--a-ui-size);
|
|
22
|
+
--integration-card-heading-weight: var(--a-weight-medium);
|
|
23
|
+
--integration-card-description-fg: var(--a-fg-muted);
|
|
24
|
+
--integration-card-description-size: var(--a-ui-sm);
|
|
25
|
+
--integration-card-error-fg: var(--a-danger-text);
|
|
26
|
+
--integration-card-error-size: var(--a-ui-sm);
|
|
27
27
|
|
|
28
28
|
/* ── States ── */
|
|
29
|
-
--integration-card-disabled-opacity
|
|
29
|
+
--integration-card-disabled-opacity: 0.6;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
/* ── Base — vertical stack: body row + (description) + (error) + footer ── */
|
|
@@ -34,27 +34,27 @@
|
|
|
34
34
|
box-sizing: border-box;
|
|
35
35
|
display: grid;
|
|
36
36
|
grid-template-rows: auto 1fr auto;
|
|
37
|
-
gap: var(--integration-card-gap
|
|
38
|
-
padding: var(--integration-card-py
|
|
39
|
-
background: var(--integration-card-bg
|
|
40
|
-
border: var(--integration-card-border
|
|
41
|
-
border-radius: var(--integration-card-radius
|
|
37
|
+
gap: var(--integration-card-gap);
|
|
38
|
+
padding: var(--integration-card-py) var(--integration-card-px);
|
|
39
|
+
background: var(--integration-card-bg);
|
|
40
|
+
border: var(--integration-card-border);
|
|
41
|
+
border-radius: var(--integration-card-radius);
|
|
42
42
|
width: stretch;
|
|
43
43
|
min-width: 0;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
/* ── Status-driven border tints ── */
|
|
47
47
|
:scope[status="connected"] {
|
|
48
|
-
--integration-card-border
|
|
48
|
+
--integration-card-border: 1px solid var(--a-success-border, var(--a-success-strong));
|
|
49
49
|
}
|
|
50
50
|
:scope[status="error"] {
|
|
51
|
-
--integration-card-border
|
|
51
|
+
--integration-card-border: 1px solid var(--a-danger-border, var(--a-danger-strong));
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
/* ── Coming-soon + disabled → opacity reduction ── */
|
|
55
55
|
:scope[status="coming-soon"],
|
|
56
56
|
:scope[disabled] {
|
|
57
|
-
opacity: var(--integration-card-disabled-opacity
|
|
57
|
+
opacity: var(--integration-card-disabled-opacity);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
/* ── Body row — logo | heading | status badge ── */
|
|
@@ -62,15 +62,15 @@
|
|
|
62
62
|
display: grid;
|
|
63
63
|
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
64
64
|
align-items: center;
|
|
65
|
-
column-gap: var(--integration-card-row-gap
|
|
65
|
+
column-gap: var(--integration-card-row-gap);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
/* ── Logo square ── */
|
|
69
69
|
:scope > [data-integration-card-body] > [data-integration-card-logo] {
|
|
70
70
|
grid-column: 1;
|
|
71
|
-
inline-size: var(--integration-card-logo-size
|
|
72
|
-
block-size: var(--integration-card-logo-size
|
|
73
|
-
border-radius: var(--integration-card-logo-radius
|
|
71
|
+
inline-size: var(--integration-card-logo-size);
|
|
72
|
+
block-size: var(--integration-card-logo-size);
|
|
73
|
+
border-radius: var(--integration-card-logo-radius);
|
|
74
74
|
display: inline-flex;
|
|
75
75
|
align-items: center;
|
|
76
76
|
justify-content: center;
|
|
@@ -87,16 +87,16 @@
|
|
|
87
87
|
display: block;
|
|
88
88
|
}
|
|
89
89
|
:scope [data-integration-card-logo] > icon-ui {
|
|
90
|
-
--a-icon-size: calc(var(--integration-card-logo-size
|
|
90
|
+
--a-icon-size: calc(var(--integration-card-logo-size) - var(--a-space-1));
|
|
91
91
|
color: var(--a-fg-muted);
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
/* ── Heading (provider name) ── */
|
|
95
95
|
:scope > [data-integration-card-body] > [data-integration-card-heading] {
|
|
96
96
|
grid-column: 2;
|
|
97
|
-
color: var(--integration-card-heading-fg
|
|
98
|
-
font-size: var(--integration-card-heading-size
|
|
99
|
-
font-weight: var(--integration-card-heading-weight
|
|
97
|
+
color: var(--integration-card-heading-fg);
|
|
98
|
+
font-size: var(--integration-card-heading-size);
|
|
99
|
+
font-weight: var(--integration-card-heading-weight);
|
|
100
100
|
line-height: 1.3;
|
|
101
101
|
min-width: 0;
|
|
102
102
|
overflow: hidden;
|
|
@@ -116,8 +116,8 @@
|
|
|
116
116
|
/* ── Description ── */
|
|
117
117
|
:scope > [data-integration-card-description] {
|
|
118
118
|
margin: 0;
|
|
119
|
-
color: var(--integration-card-description-fg
|
|
120
|
-
font-size: var(--integration-card-description-size
|
|
119
|
+
color: var(--integration-card-description-fg);
|
|
120
|
+
font-size: var(--integration-card-description-size);
|
|
121
121
|
line-height: 1.4;
|
|
122
122
|
}
|
|
123
123
|
:scope > [data-integration-card-description][hidden] {
|
|
@@ -129,16 +129,16 @@
|
|
|
129
129
|
:scope > p:not([data-integration-card-description]):not([data-integration-card-error]),
|
|
130
130
|
:scope > small:not([data-integration-card-error]) {
|
|
131
131
|
margin: 0;
|
|
132
|
-
color: var(--integration-card-description-fg
|
|
133
|
-
font-size: var(--integration-card-description-size
|
|
132
|
+
color: var(--integration-card-description-fg);
|
|
133
|
+
font-size: var(--integration-card-description-size);
|
|
134
134
|
line-height: 1.4;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
/* ── Error message ── */
|
|
138
138
|
:scope > [data-integration-card-error] {
|
|
139
139
|
margin: 0;
|
|
140
|
-
color: var(--integration-card-error-fg
|
|
141
|
-
font-size: var(--integration-card-error-size
|
|
140
|
+
color: var(--integration-card-error-fg);
|
|
141
|
+
font-size: var(--integration-card-error-size);
|
|
142
142
|
line-height: 1.4;
|
|
143
143
|
}
|
|
144
144
|
:scope > [data-integration-card-error][hidden] {
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
:scope > [data-integration-card-footer] {
|
|
150
150
|
display: flex;
|
|
151
151
|
align-items: center;
|
|
152
|
-
gap: var(--integration-card-row-gap
|
|
152
|
+
gap: var(--integration-card-row-gap);
|
|
153
153
|
margin: 0;
|
|
154
154
|
padding: 0;
|
|
155
155
|
}
|
|
@@ -286,10 +286,10 @@ describe('integration-card-ui — CSS contract (source-grep)', () => {
|
|
|
286
286
|
|
|
287
287
|
expect(CSS).toMatch(/@scope\s*\(\s*integration-card-ui\s*\)/);
|
|
288
288
|
expect(CSS).toMatch(/:where\(:scope\)\s*\{/);
|
|
289
|
-
//
|
|
290
|
-
expect(CSS).toMatch(/--integration-card-bg
|
|
291
|
-
expect(CSS).toMatch(/--integration-card-border
|
|
292
|
-
expect(CSS).toMatch(/--integration-card-radius
|
|
289
|
+
// Token declarations use the un-suffixed component-named tokens per component-token-contract.md
|
|
290
|
+
expect(CSS).toMatch(/--integration-card-bg:/);
|
|
291
|
+
expect(CSS).toMatch(/--integration-card-border:/);
|
|
292
|
+
expect(CSS).toMatch(/--integration-card-radius:/);
|
|
293
293
|
});
|
|
294
294
|
|
|
295
295
|
it('keeps status-driven border tint (status="connected") inside @scope', async () => {
|
package/components/kbd/kbd.css
CHANGED
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
@scope (kbd-ui) {
|
|
2
2
|
:where(:scope) {
|
|
3
3
|
/* ── Tokens ── */
|
|
4
|
-
--kbd-bg
|
|
5
|
-
--kbd-fg
|
|
6
|
-
--kbd-border
|
|
7
|
-
--kbd-radius
|
|
8
|
-
--kbd-font
|
|
4
|
+
--kbd-bg: var(--a-bg-muted);
|
|
5
|
+
--kbd-fg: var(--a-fg);
|
|
6
|
+
--kbd-border: var(--a-border-subtle);
|
|
7
|
+
--kbd-radius: var(--a-radius-sm);
|
|
8
|
+
--kbd-font: var(--a-font-family-code);
|
|
9
|
+
--kbd-px: var(--a-space-1);
|
|
10
|
+
--kbd-weight: var(--a-weight-medium);
|
|
9
11
|
|
|
10
|
-
/* Size —
|
|
11
|
-
larger than sm
|
|
12
|
-
md and sm resolved to --a-ui-tiny
|
|
13
|
-
|
|
14
|
-
--kbd-
|
|
15
|
-
--kbd-
|
|
16
|
-
--kbd-
|
|
17
|
-
--kbd-
|
|
12
|
+
/* Size tiers — sm 10 / md 12 / lg 14 glyph ramp (--a-ui-tiny/xs/md).
|
|
13
|
+
md reads distinctly larger than sm inside the 20px cap; previously
|
|
14
|
+
md and sm both resolved to --a-ui-tiny so the glyphs were identical.
|
|
15
|
+
md is the default; the [size] rules below re-point the active token. */
|
|
16
|
+
--kbd-font-size-sm: var(--a-ui-tiny);
|
|
17
|
+
--kbd-font-size-md: var(--a-ui-xs);
|
|
18
|
+
--kbd-font-size-lg: var(--a-ui-md);
|
|
19
|
+
--kbd-font-size: var(--kbd-font-size-md);
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
--kbd-
|
|
21
|
-
--kbd-height-
|
|
22
|
-
--kbd-
|
|
21
|
+
--kbd-height-sm: 1rem;
|
|
22
|
+
--kbd-height-md: 1.25rem;
|
|
23
|
+
--kbd-height-lg: 1.5rem;
|
|
24
|
+
--kbd-height: var(--kbd-height-md);
|
|
25
|
+
|
|
26
|
+
--kbd-min-width-sm: 1rem;
|
|
27
|
+
--kbd-min-width-md: 1.25rem;
|
|
28
|
+
--kbd-min-width-lg: 1.5rem;
|
|
29
|
+
--kbd-min-width: var(--kbd-min-width-md);
|
|
23
30
|
|
|
24
|
-
/* Size: lg — glyph --a-ui-md (14px), the top of the three-tier ramp
|
|
25
|
-
(sm 10 / md 12 / lg 14). */
|
|
26
|
-
--kbd-font-size-lg-default: var(--a-ui-md);
|
|
27
|
-
--kbd-height-lg-default: 1.5rem;
|
|
28
|
-
--kbd-min-width-lg-default: 1.5rem;
|
|
29
31
|
text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
|
|
30
|
-
}
|
|
32
|
+
}
|
|
31
33
|
|
|
32
34
|
:scope {
|
|
33
35
|
/* ── Base ── */
|
|
@@ -35,32 +37,37 @@
|
|
|
35
37
|
display: inline-flex;
|
|
36
38
|
align-items: center;
|
|
37
39
|
justify-content: center;
|
|
38
|
-
min-width: var(--kbd-min-width
|
|
39
|
-
height: var(--kbd-height
|
|
40
|
-
padding-inline: var(--kbd-px
|
|
41
|
-
font-family: var(--kbd-font
|
|
42
|
-
font-size: var(--kbd-font-size
|
|
43
|
-
font-weight: var(--kbd-weight
|
|
40
|
+
min-width: var(--kbd-min-width);
|
|
41
|
+
height: var(--kbd-height);
|
|
42
|
+
padding-inline: var(--kbd-px);
|
|
43
|
+
font-family: var(--kbd-font);
|
|
44
|
+
font-size: var(--kbd-font-size);
|
|
45
|
+
font-weight: var(--kbd-weight);
|
|
44
46
|
line-height: 1;
|
|
45
|
-
color: var(--kbd-fg
|
|
46
|
-
background: var(--kbd-bg
|
|
47
|
-
border: 1px solid var(--kbd-border
|
|
47
|
+
color: var(--kbd-fg);
|
|
48
|
+
background: var(--kbd-bg);
|
|
49
|
+
border: 1px solid var(--kbd-border);
|
|
48
50
|
border-bottom-width: 2px;
|
|
49
|
-
border-radius: var(--kbd-radius
|
|
51
|
+
border-radius: var(--kbd-radius);
|
|
50
52
|
vertical-align: middle;
|
|
51
53
|
white-space: nowrap;
|
|
52
54
|
user-select: none;
|
|
53
55
|
}
|
|
54
56
|
|
|
55
|
-
/* Sizes */
|
|
57
|
+
/* Sizes — re-point the active token to the matching tier. */
|
|
56
58
|
:scope[size="sm"] {
|
|
57
|
-
--kbd-font-size
|
|
58
|
-
--kbd-height
|
|
59
|
-
--kbd-min-width
|
|
59
|
+
--kbd-font-size: var(--kbd-font-size-sm);
|
|
60
|
+
--kbd-height: var(--kbd-height-sm);
|
|
61
|
+
--kbd-min-width: var(--kbd-min-width-sm);
|
|
62
|
+
}
|
|
63
|
+
:scope[size="md"] {
|
|
64
|
+
--kbd-font-size: var(--kbd-font-size-md);
|
|
65
|
+
--kbd-height: var(--kbd-height-md);
|
|
66
|
+
--kbd-min-width: var(--kbd-min-width-md);
|
|
60
67
|
}
|
|
61
68
|
:scope[size="lg"] {
|
|
62
|
-
--kbd-font-size
|
|
63
|
-
--kbd-height
|
|
64
|
-
--kbd-min-width
|
|
69
|
+
--kbd-font-size: var(--kbd-font-size-lg);
|
|
70
|
+
--kbd-height: var(--kbd-height-lg);
|
|
71
|
+
--kbd-min-width: var(--kbd-min-width-lg);
|
|
65
72
|
}
|
|
66
73
|
}
|