@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
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
@scope (breadcrumb-ui) {
|
|
2
2
|
:where(:scope) {
|
|
3
3
|
/* ── Layout ── */
|
|
4
|
-
--breadcrumb-gap
|
|
5
|
-
--breadcrumb-max-width
|
|
4
|
+
--breadcrumb-gap: var(--a-space-1);
|
|
5
|
+
--breadcrumb-max-width: 12rem;
|
|
6
6
|
|
|
7
7
|
/* ── Typography ── */
|
|
8
|
-
--breadcrumb-font-size
|
|
9
|
-
--breadcrumb-current-weight
|
|
8
|
+
--breadcrumb-font-size: var(--a-ui-size);
|
|
9
|
+
--breadcrumb-current-weight: var(--a-weight-medium);
|
|
10
10
|
|
|
11
11
|
/* ── Colors ── */
|
|
12
|
-
--breadcrumb-fg
|
|
13
|
-
--breadcrumb-fg-hover
|
|
14
|
-
--breadcrumb-separator-fg
|
|
15
|
-
--breadcrumb-current-fg
|
|
12
|
+
--breadcrumb-fg: var(--a-fg-subtle);
|
|
13
|
+
--breadcrumb-fg-hover: var(--a-fg);
|
|
14
|
+
--breadcrumb-separator-fg: var(--a-fg-muted);
|
|
15
|
+
--breadcrumb-current-fg: var(--a-fg-strong);
|
|
16
16
|
|
|
17
17
|
/* ── Transition ── */
|
|
18
|
-
--breadcrumb-duration
|
|
19
|
-
--breadcrumb-easing
|
|
18
|
+
--breadcrumb-duration: var(--a-duration-fast);
|
|
19
|
+
--breadcrumb-easing: var(--a-easing);
|
|
20
20
|
|
|
21
21
|
/* ── Link ── */
|
|
22
|
-
--breadcrumb-link-radius
|
|
23
|
-
--breadcrumb-link-focus-ring
|
|
22
|
+
--breadcrumb-link-radius: var(--a-radius-sm);
|
|
23
|
+
--breadcrumb-link-focus-ring: var(--a-focus-ring);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
:scope {
|
|
27
27
|
box-sizing: border-box;
|
|
28
28
|
display: flex;
|
|
29
29
|
align-items: center;
|
|
30
|
-
gap: var(--breadcrumb-gap
|
|
31
|
-
font-size: var(--breadcrumb-font-size
|
|
30
|
+
gap: var(--breadcrumb-gap);
|
|
31
|
+
font-size: var(--breadcrumb-font-size);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
/* Display convention (ADR-0037): block-level by default; [inline] opts back to inline-level. */
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
|
|
37
37
|
/* Separator — standalone span, never inside <a> */
|
|
38
38
|
[data-sep] {
|
|
39
|
-
color: var(--breadcrumb-separator-fg
|
|
39
|
+
color: var(--breadcrumb-separator-fg);
|
|
40
40
|
flex-shrink: 0;
|
|
41
41
|
pointer-events: none;
|
|
42
42
|
user-select: none;
|
|
@@ -49,32 +49,32 @@
|
|
|
49
49
|
overflow: hidden;
|
|
50
50
|
text-overflow: ellipsis;
|
|
51
51
|
white-space: nowrap;
|
|
52
|
-
max-width: var(--breadcrumb-max-width
|
|
53
|
-
color: var(--breadcrumb-fg
|
|
52
|
+
max-width: var(--breadcrumb-max-width);
|
|
53
|
+
color: var(--breadcrumb-fg);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
/* Links */
|
|
57
57
|
a[data-item] {
|
|
58
58
|
text-decoration: none;
|
|
59
|
-
border-radius: var(--breadcrumb-link-radius
|
|
60
|
-
transition: color var(--breadcrumb-duration
|
|
59
|
+
border-radius: var(--breadcrumb-link-radius);
|
|
60
|
+
transition: color var(--breadcrumb-duration) var(--breadcrumb-easing);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
a[data-item]:hover {
|
|
64
|
-
color: var(--breadcrumb-fg-hover
|
|
64
|
+
color: var(--breadcrumb-fg-hover);
|
|
65
65
|
text-decoration: underline;
|
|
66
66
|
text-underline-offset: 2px;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
a[data-item]:focus-visible {
|
|
70
70
|
outline: none;
|
|
71
|
-
box-shadow: var(--breadcrumb-link-focus-ring
|
|
71
|
+
box-shadow: var(--breadcrumb-link-focus-ring);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
/* Current (last item) */
|
|
75
75
|
[data-item][aria-current] {
|
|
76
|
-
color: var(--breadcrumb-current-fg
|
|
77
|
-
font-weight: var(--breadcrumb-current-weight
|
|
76
|
+
color: var(--breadcrumb-current-fg);
|
|
77
|
+
font-weight: var(--breadcrumb-current-weight);
|
|
78
78
|
pointer-events: none;
|
|
79
79
|
text-decoration: none;
|
|
80
80
|
}
|
|
@@ -6,80 +6,79 @@ button-ui:active { transform: scale(0.97); }
|
|
|
6
6
|
|
|
7
7
|
button-ui:not([disabled]):hover,
|
|
8
8
|
button-ui[variant="primary"]:not([disabled]):hover {
|
|
9
|
-
--button-bg
|
|
10
|
-
--button-fg
|
|
11
|
-
--button-border
|
|
9
|
+
--button-bg: var(--button-bg-hover);
|
|
10
|
+
--button-fg: var(--button-fg-hover);
|
|
11
|
+
--button-border: var(--button-border-hover);
|
|
12
12
|
}
|
|
13
13
|
button-ui[variant="ghost"]:not([disabled]):hover {
|
|
14
|
-
--button-bg
|
|
15
|
-
--button-fg
|
|
16
|
-
--button-border
|
|
14
|
+
--button-bg: var(--button-bg-ghost-hover);
|
|
15
|
+
--button-fg: var(--button-fg-ghost-hover);
|
|
16
|
+
--button-border: var(--button-border-ghost-hover);
|
|
17
17
|
}
|
|
18
18
|
button-ui[variant="outline"]:not([disabled]):hover {
|
|
19
|
-
--button-fg
|
|
20
|
-
--button-border
|
|
19
|
+
--button-fg: var(--button-fg-hover);
|
|
20
|
+
--button-border: var(--button-border-hover);
|
|
21
21
|
}
|
|
22
22
|
button-ui[color="danger"]:not([disabled]):hover {
|
|
23
|
-
--button-bg
|
|
24
|
-
--button-fg
|
|
25
|
-
--button-border
|
|
23
|
+
--button-bg: var(--button-bg-hover);
|
|
24
|
+
--button-fg: var(--button-fg-hover);
|
|
25
|
+
--button-border: var(--button-border-hover);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
@scope (button-ui) {
|
|
29
29
|
:where(:scope) {
|
|
30
|
-
/*
|
|
31
|
-
tokens
|
|
32
|
-
--button-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
--button-
|
|
37
|
-
--button-
|
|
38
|
-
--button-
|
|
39
|
-
--button-
|
|
40
|
-
--button-
|
|
41
|
-
--button-
|
|
42
|
-
--button-font-
|
|
43
|
-
--button-
|
|
44
|
-
--button-
|
|
45
|
-
--button-
|
|
46
|
-
--button-
|
|
47
|
-
--button-
|
|
48
|
-
--button-
|
|
49
|
-
--button-
|
|
50
|
-
--button-
|
|
51
|
-
--button-
|
|
52
|
-
--button-
|
|
53
|
-
--button-
|
|
54
|
-
--button-fg-ghost-
|
|
55
|
-
--button-
|
|
56
|
-
--button-
|
|
57
|
-
--button-border-ghost-
|
|
58
|
-
--button-
|
|
59
|
-
--button-
|
|
60
|
-
--button-
|
|
61
|
-
--button-bg-
|
|
62
|
-
--button-
|
|
63
|
-
--button-
|
|
64
|
-
--button-border-disabled-default: transparent;
|
|
30
|
+
/* Component tokens — the un-suffixed `--button-*` names ARE the
|
|
31
|
+
component's tokens; variants/states re-point them below. Consumers
|
|
32
|
+
override per-element (`button-ui { --button-bg: … }` or inline) or
|
|
33
|
+
via `@layer overrides`. See docs/specs/component-token-contract.md. */
|
|
34
|
+
--button-bg: var(--a-ui-bg);
|
|
35
|
+
--button-fg: var(--a-ui-text);
|
|
36
|
+
--button-border: transparent;
|
|
37
|
+
--button-height: var(--a-size);
|
|
38
|
+
--button-px: var(--a-ui-px);
|
|
39
|
+
--button-radius: var(--a-radius);
|
|
40
|
+
--button-font-size: var(--a-ui-size);
|
|
41
|
+
--button-font-weight: var(--a-ui-weight);
|
|
42
|
+
--button-font-family: var(--a-font-family-ui);
|
|
43
|
+
--button-gap: var(--a-space-1);
|
|
44
|
+
--button-bg-hover: var(--a-ui-bg-hover);
|
|
45
|
+
--button-fg-hover: var(--a-ui-text-hover);
|
|
46
|
+
--button-border-hover: transparent;
|
|
47
|
+
--button-bg-primary: var(--a-primary);
|
|
48
|
+
--button-fg-primary: var(--a-chrome-light);
|
|
49
|
+
--button-bg-outline: transparent;
|
|
50
|
+
--button-fg-outline: var(--a-fg);
|
|
51
|
+
--button-border-outline: var(--a-ui-border);
|
|
52
|
+
--button-bg-ghost: transparent;
|
|
53
|
+
--button-fg-ghost: var(--a-fg-subtle);
|
|
54
|
+
--button-fg-ghost-hover: var(--a-fg-strong);
|
|
55
|
+
--button-bg-ghost-hover: var(--a-bg-hover);
|
|
56
|
+
--button-border-ghost: transparent;
|
|
57
|
+
--button-border-ghost-hover: transparent;
|
|
58
|
+
--button-bg-danger: var(--a-danger);
|
|
59
|
+
--button-fg-danger: var(--a-chrome-light); /* white on the saturated fill — see color rules */
|
|
60
|
+
--button-bg-hover-danger: var(--a-danger);
|
|
61
|
+
--button-bg-disabled: var(--a-ui-bg-disabled);
|
|
62
|
+
--button-fg-disabled: var(--a-ui-text-disabled);
|
|
63
|
+
--button-border-disabled: transparent;
|
|
65
64
|
|
|
66
65
|
/* ── Transition ── */
|
|
67
|
-
--button-duration
|
|
68
|
-
--button-easing
|
|
66
|
+
--button-duration: var(--a-duration-fast);
|
|
67
|
+
--button-easing: var(--a-easing);
|
|
69
68
|
|
|
70
69
|
/* ── State ── */
|
|
71
|
-
--button-focus-ring
|
|
70
|
+
--button-focus-ring: var(--a-focus-ring);
|
|
72
71
|
|
|
73
72
|
/* ── Trailing slot ── */
|
|
74
|
-
--button-trailing-font-size
|
|
73
|
+
--button-trailing-font-size: var(--a-ui-sm);
|
|
75
74
|
/* kbd-pill tracks the button's OWN text color (currentColor) so it reads
|
|
76
75
|
on any variant fill — on a primary button the fixed --a-fg-muted gray
|
|
77
76
|
was nearly invisible against the white label. Border is a translucent
|
|
78
77
|
slice of the same color so the pill outline adapts too. */
|
|
79
|
-
--button-trailing-fg
|
|
80
|
-
--button-trailing-border
|
|
81
|
-
--button-trailing-radius
|
|
82
|
-
--button-trailing-px
|
|
78
|
+
--button-trailing-fg: currentColor;
|
|
79
|
+
--button-trailing-border: color-mix(in oklab, currentColor 28%, transparent);
|
|
80
|
+
--button-trailing-radius: var(--a-radius-sm);
|
|
81
|
+
--button-trailing-px: var(--a-space-0-5);
|
|
83
82
|
}
|
|
84
83
|
|
|
85
84
|
:scope {
|
|
@@ -87,27 +86,29 @@ button-ui[color="danger"]:not([disabled]):hover {
|
|
|
87
86
|
display: flex;
|
|
88
87
|
align-items: center;
|
|
89
88
|
justify-content: center;
|
|
90
|
-
gap: var(--button-gap
|
|
91
|
-
min-width: var(--button-height
|
|
92
|
-
min-height: var(--button-height
|
|
89
|
+
gap: var(--button-gap);
|
|
90
|
+
min-width: var(--button-height); /* keep button at least as wide as it is tall */
|
|
91
|
+
min-height: var(--button-height);
|
|
93
92
|
overflow: hidden;
|
|
94
|
-
padding-inline: var(--button-px
|
|
95
|
-
border: 1px solid var(--button-border
|
|
96
|
-
border-radius: var(--button-radius
|
|
97
|
-
background: var(--button-bg
|
|
98
|
-
color: var(--button-fg
|
|
93
|
+
padding-inline: var(--button-px);
|
|
94
|
+
border: 1px solid var(--button-border);
|
|
95
|
+
border-radius: var(--button-radius);
|
|
96
|
+
background: var(--button-bg);
|
|
97
|
+
color: var(--button-fg);
|
|
99
98
|
font: inherit;
|
|
100
|
-
|
|
101
|
-
font-
|
|
99
|
+
/* font-family floor — see segment.css rationale. */
|
|
100
|
+
font-family: var(--button-font-family);
|
|
101
|
+
font-size: var(--button-font-size);
|
|
102
|
+
font-weight: var(--button-font-weight);
|
|
102
103
|
line-height: 1;
|
|
103
104
|
cursor: pointer;
|
|
104
105
|
user-select: none;
|
|
105
106
|
transition:
|
|
106
|
-
background var(--button-duration
|
|
107
|
-
border-color var(--button-duration
|
|
108
|
-
color var(--button-duration
|
|
109
|
-
opacity var(--button-duration
|
|
110
|
-
transform var(--button-duration
|
|
107
|
+
background var(--button-duration) var(--button-easing),
|
|
108
|
+
border-color var(--button-duration) var(--button-easing),
|
|
109
|
+
color var(--button-duration) var(--button-easing),
|
|
110
|
+
opacity var(--button-duration) var(--button-easing),
|
|
111
|
+
transform var(--button-duration) var(--button-easing);
|
|
111
112
|
white-space: nowrap;
|
|
112
113
|
}
|
|
113
114
|
:scope[text]::after {
|
|
@@ -140,38 +141,36 @@ button-ui[color="danger"]:not([disabled]):hover {
|
|
|
140
141
|
[slot="trailing"] {
|
|
141
142
|
order: 99;
|
|
142
143
|
margin-inline-start: auto;
|
|
143
|
-
font-size: var(--button-trailing-font-size
|
|
144
|
-
color: var(--button-trailing-fg
|
|
144
|
+
font-size: var(--button-trailing-font-size);
|
|
145
|
+
color: var(--button-trailing-fg);
|
|
145
146
|
font-family: inherit;
|
|
146
|
-
border: 1px solid var(--button-trailing-border
|
|
147
|
-
border-radius: var(--button-trailing-radius
|
|
148
|
-
padding: 0 var(--button-trailing-px
|
|
147
|
+
border: 1px solid var(--button-trailing-border);
|
|
148
|
+
border-radius: var(--button-trailing-radius);
|
|
149
|
+
padding: 0 var(--button-trailing-px);
|
|
149
150
|
line-height: 1;
|
|
150
151
|
}
|
|
151
152
|
|
|
152
153
|
/* :scope:active moved outside @scope — see Safari 17.x bug note at top. */
|
|
153
|
-
:scope:focus-visible { outline: none; box-shadow: var(--button-focus-ring
|
|
154
|
+
:scope:focus-visible { outline: none; box-shadow: var(--button-focus-ring); }
|
|
154
155
|
|
|
155
156
|
/* ── Variants (rest state) ──
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
un-suffixed name (--button-bg etc.) wins at the use site via
|
|
159
|
-
`var(--button-bg, var(--button-bg-default))`. */
|
|
157
|
+
Variant/state blocks re-point the component tokens (--button-bg etc.);
|
|
158
|
+
the base layout in :scope stays untouched. */
|
|
160
159
|
:scope[variant="primary"] {
|
|
161
|
-
--button-bg
|
|
162
|
-
--button-fg
|
|
160
|
+
--button-bg: var(--button-bg-primary);
|
|
161
|
+
--button-fg: var(--button-fg-primary);
|
|
163
162
|
}
|
|
164
163
|
|
|
165
164
|
:scope[variant="outline"] {
|
|
166
|
-
--button-bg
|
|
167
|
-
--button-fg
|
|
168
|
-
--button-border
|
|
165
|
+
--button-bg: var(--button-bg-outline);
|
|
166
|
+
--button-fg: var(--button-fg-outline);
|
|
167
|
+
--button-border: var(--button-border-outline);
|
|
169
168
|
}
|
|
170
169
|
|
|
171
170
|
:scope[variant="ghost"] {
|
|
172
|
-
--button-bg
|
|
173
|
-
--button-fg
|
|
174
|
-
--button-border
|
|
171
|
+
--button-bg: var(--button-bg-ghost);
|
|
172
|
+
--button-fg: var(--button-fg-ghost);
|
|
173
|
+
--button-border: var(--button-border-ghost);
|
|
175
174
|
}
|
|
176
175
|
|
|
177
176
|
/* ── Color (semantic axis) ──
|
|
@@ -180,30 +179,53 @@ button-ui[color="danger"]:not([disabled]):hover {
|
|
|
180
179
|
vs `<button-ui variant="outline" color="danger">`.
|
|
181
180
|
`variant="danger"` is a deprecated alias migrated to color via JS. */
|
|
182
181
|
:scope[color="danger"] {
|
|
183
|
-
--button-bg
|
|
184
|
-
--button-fg
|
|
182
|
+
--button-bg: var(--button-bg-danger);
|
|
183
|
+
--button-fg: var(--button-fg-danger);
|
|
185
184
|
}
|
|
186
185
|
:scope[color="success"] {
|
|
187
186
|
/* Consume the L3 `-bg` alias, not the L2 `-strong` step. Currently
|
|
188
187
|
resolves identically (both = `-50`), but consuming `-bg` future-
|
|
189
188
|
proofs if the surface-step ever redirects (as -warning-bg did
|
|
190
|
-
in v0.6.36 to fix muddy contrast).
|
|
191
|
-
|
|
192
|
-
|
|
189
|
+
in v0.6.36 to fix muddy contrast).
|
|
190
|
+
Text is --a-chrome-light (white) on the saturated fill, like primary
|
|
191
|
+
(--button-fg-primary). --a-success-fg is success-COLORED text — near
|
|
192
|
+
invisible on the fill (feedback_text_on_accent_disc). Warning is the
|
|
193
|
+
exception: its --a-warning-bg fill is light, so it keeps dark -fg. */
|
|
194
|
+
--button-bg: var(--a-success-bg);
|
|
195
|
+
--button-fg: var(--a-chrome-light);
|
|
193
196
|
}
|
|
194
197
|
:scope[color="info"] {
|
|
195
|
-
--button-bg
|
|
196
|
-
--button-fg
|
|
198
|
+
--button-bg: var(--a-info-bg);
|
|
199
|
+
--button-fg: var(--a-chrome-light);
|
|
197
200
|
}
|
|
198
201
|
:scope[color="warning"] {
|
|
199
202
|
/* `--a-warning-bg` (bright amber, scheme-independent) not
|
|
200
203
|
`-strong` (mid-tone). The pair `-strong` + `-fg` gives muddy
|
|
201
204
|
brown-on-brown — the L3 `-bg` is the canonical solid-warning
|
|
202
205
|
surface paired with `-fg` (dark text). */
|
|
203
|
-
--button-bg
|
|
204
|
-
--button-fg
|
|
206
|
+
--button-bg: var(--a-warning-bg);
|
|
207
|
+
--button-fg: var(--a-warning-fg);
|
|
205
208
|
}
|
|
206
209
|
|
|
210
|
+
/* ── Color × non-solid variants ──
|
|
211
|
+
The [color] rules above set a SOLID fill — that's the default rendering
|
|
212
|
+
(bare `color="danger"`). But with variant="outline"/"ghost" the button
|
|
213
|
+
must COMPOSE, not fill. These combined selectors (specificity 0,3,0) beat
|
|
214
|
+
the 0,2,0 [color] rules regardless of source order, restoring a transparent
|
|
215
|
+
fill + colored text (+ colored border for outline). Without them,
|
|
216
|
+
`variant="outline" color="success"` renders as a solid green pill — the
|
|
217
|
+
demo's "Approve" button (button.examples.html:50). --a-X-text is the
|
|
218
|
+
family-colored text designed to read on a neutral page surface; -border is
|
|
219
|
+
the L3 colored border alias. */
|
|
220
|
+
:scope[variant="outline"][color="danger"] { --button-bg: transparent; --button-fg: var(--a-danger-text); --button-border: var(--a-danger-border); }
|
|
221
|
+
:scope[variant="outline"][color="info"] { --button-bg: transparent; --button-fg: var(--a-info-text); --button-border: var(--a-info-border); }
|
|
222
|
+
:scope[variant="outline"][color="success"] { --button-bg: transparent; --button-fg: var(--a-success-text); --button-border: var(--a-success-border); }
|
|
223
|
+
:scope[variant="outline"][color="warning"] { --button-bg: transparent; --button-fg: var(--a-warning-text); --button-border: var(--a-warning-border); }
|
|
224
|
+
:scope[variant="ghost"][color="danger"] { --button-bg: transparent; --button-fg: var(--a-danger-text); }
|
|
225
|
+
:scope[variant="ghost"][color="info"] { --button-bg: transparent; --button-fg: var(--a-info-text); }
|
|
226
|
+
:scope[variant="ghost"][color="success"] { --button-bg: transparent; --button-fg: var(--a-success-text); }
|
|
227
|
+
:scope[variant="ghost"][color="warning"] { --button-bg: transparent; --button-fg: var(--a-warning-text); }
|
|
228
|
+
|
|
207
229
|
/* Hover rules moved outside @scope — see Safari 17.x bug note at
|
|
208
230
|
top of file. */
|
|
209
231
|
|
|
@@ -216,16 +238,16 @@ button-ui[color="danger"]:not([disabled]):hover {
|
|
|
216
238
|
|
|
217
239
|
/* Disabled */
|
|
218
240
|
:scope[disabled] {
|
|
219
|
-
--button-bg
|
|
220
|
-
--button-fg
|
|
221
|
-
--button-border
|
|
241
|
+
--button-bg: var(--button-bg-disabled);
|
|
242
|
+
--button-fg: var(--button-fg-disabled);
|
|
243
|
+
--button-border: var(--button-border-disabled);
|
|
222
244
|
pointer-events: none;
|
|
223
245
|
cursor: not-allowed;
|
|
224
246
|
}
|
|
225
247
|
|
|
226
248
|
/* Icon-only (no text) */
|
|
227
249
|
:scope:not([text]), :scope[text=""] {
|
|
228
|
-
--button-px
|
|
229
|
-
width: var(--button-height
|
|
250
|
+
--button-px: 0;
|
|
251
|
+
width: var(--button-height);
|
|
230
252
|
}
|
|
231
253
|
}
|