@adia-ai/web-components 0.6.32 → 0.6.34
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 +44 -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 +57 -57
- package/components/agent-reasoning/agent-reasoning.css +62 -62
- package/components/agent-suggestions/agent-suggestions.css +4 -4
- package/components/agent-trace/agent-trace.css +53 -53
- package/components/alert/alert.css +41 -41
- package/components/avatar/avatar.css +27 -27
- package/components/badge/badge.css +27 -27
- package/components/block/block.css +16 -16
- package/components/breadcrumb/breadcrumb.css +23 -23
- package/components/button/button.css +101 -91
- package/components/calendar-grid/calendar-grid.a2ui.json +136 -0
- package/components/calendar-grid/calendar-grid.css +226 -0
- package/components/calendar-grid/calendar-grid.d.ts +37 -0
- package/components/calendar-grid/calendar-grid.js +17 -0
- package/components/calendar-grid/calendar-grid.yaml +116 -0
- package/components/calendar-grid/class.js +300 -0
- package/components/calendar-picker/calendar-picker.css +139 -139
- package/components/canvas/canvas.css +12 -12
- package/components/card/card.css +83 -83
- package/components/chart/chart.css +224 -224
- 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/class.js +861 -0
- package/components/combobox/combobox.a2ui.json +363 -0
- package/components/combobox/combobox.css +244 -0
- package/components/combobox/combobox.d.ts +113 -0
- package/components/combobox/combobox.examples.md +59 -0
- package/components/combobox/combobox.js +17 -0
- package/components/combobox/combobox.test.js +181 -0
- package/components/combobox/combobox.yaml +369 -0
- package/components/command/command.css +90 -90
- package/components/date-range-picker/class.js +775 -0
- package/components/date-range-picker/date-range-picker.a2ui.json +300 -0
- package/components/date-range-picker/date-range-picker.css +178 -0
- package/components/date-range-picker/date-range-picker.d.ts +82 -0
- package/components/date-range-picker/date-range-picker.examples.md +37 -0
- package/components/date-range-picker/date-range-picker.js +17 -0
- package/components/date-range-picker/date-range-picker.test.js +387 -0
- package/components/date-range-picker/date-range-picker.yaml +285 -0
- package/components/datetime-picker/class.js +706 -0
- package/components/datetime-picker/datetime-picker.a2ui.json +334 -0
- package/components/datetime-picker/datetime-picker.css +150 -0
- package/components/datetime-picker/datetime-picker.d.ts +86 -0
- package/components/datetime-picker/datetime-picker.examples.md +46 -0
- package/components/datetime-picker/datetime-picker.js +17 -0
- package/components/datetime-picker/datetime-picker.test.js +454 -0
- package/components/datetime-picker/datetime-picker.yaml +332 -0
- 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 +27 -27
- package/components/feed/feed.css +12 -12
- package/components/field/field.css +37 -28
- package/components/field/field.test.js +32 -0
- package/components/fields/fields.css +5 -5
- package/components/grid/grid.css +5 -5
- package/components/heatmap/heatmap.css +63 -63
- package/components/icon/icon.css +12 -12
- package/components/image/image.css +14 -14
- package/components/index.js +8 -0
- package/components/input/input.css +66 -66
- package/components/inspector/inspector.css +6 -6
- package/components/integration-card/class.js +410 -0
- package/components/integration-card/integration-card.a2ui.json +268 -0
- package/components/integration-card/integration-card.css +169 -0
- package/components/integration-card/integration-card.d.ts +63 -0
- package/components/integration-card/integration-card.examples.md +41 -0
- package/components/integration-card/integration-card.js +17 -0
- package/components/integration-card/integration-card.test.js +306 -0
- package/components/integration-card/integration-card.yaml +280 -0
- package/components/kbd/kbd.css +32 -32
- package/components/link/link.css +12 -12
- package/components/list/list.css +8 -8
- package/components/list-window/class.js +688 -0
- package/components/list-window/list-window.a2ui.json +277 -0
- package/components/list-window/list-window.css +124 -0
- package/components/list-window/list-window.d.ts +84 -0
- package/components/list-window/list-window.examples.md +73 -0
- package/components/list-window/list-window.js +17 -0
- package/components/list-window/list-window.test.js +303 -0
- package/components/list-window/list-window.yaml +270 -0
- package/components/menu/menu.css +8 -8
- package/components/modal/modal.css +43 -43
- package/components/nav/nav.css +40 -40
- package/components/nav-group/nav-group.css +52 -52
- package/components/nav-item/nav-item.css +44 -44
- package/components/noodles/noodles.css +31 -31
- package/components/option-card/option-card.css +69 -69
- package/components/otp-input/otp-input.css +30 -30
- package/components/page/page.css +18 -18
- package/components/pagination/pagination.css +61 -61
- package/components/pane/pane.css +57 -57
- package/components/pipeline-status/pipeline-status.css +65 -65
- package/components/popover/popover.css +17 -17
- package/components/progress/progress.css +23 -23
- package/components/progress-row/progress-row.css +17 -17
- package/components/radio/radio.css +39 -39
- package/components/range/range.css +55 -55
- package/components/rating/rating.css +28 -28
- 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 +24 -24
- package/components/segmented/segmented.css +25 -25
- package/components/select/select.css +84 -84
- package/components/skeleton/skeleton.css +14 -14
- package/components/slider/slider.css +46 -46
- package/components/spinner/class.js +69 -0
- package/components/spinner/spinner.a2ui.json +197 -0
- package/components/spinner/spinner.css +165 -0
- package/components/spinner/spinner.d.ts +26 -0
- package/components/spinner/spinner.examples.md +26 -0
- package/components/spinner/spinner.js +17 -0
- package/components/spinner/spinner.test.js +234 -0
- package/components/spinner/spinner.yaml +230 -0
- package/components/stack/stack.css +11 -11
- package/components/stat/stat.css +25 -25
- 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.css +57 -57
- package/components/switch/switch.css +52 -52
- package/components/table/class.js +9 -0
- package/components/table/table.a2ui.json +1 -1
- package/components/table/table.css +162 -162
- package/components/table/table.d.ts +1 -1
- package/components/table/table.test.js +53 -0
- package/components/table/table.yaml +13 -1
- package/components/table-toolbar/table-toolbar.css +32 -32
- package/components/tabs/tabs.css +51 -51
- package/components/tag/tag.css +48 -48
- package/components/text/text.css +44 -44
- package/components/textarea/textarea.css +46 -46
- package/components/time-picker/class.js +693 -0
- package/components/time-picker/time-picker.a2ui.json +267 -0
- package/components/time-picker/time-picker.css +122 -0
- package/components/time-picker/time-picker.d.ts +75 -0
- package/components/time-picker/time-picker.examples.md +35 -0
- package/components/time-picker/time-picker.js +17 -0
- package/components/time-picker/time-picker.test.js +287 -0
- package/components/time-picker/time-picker.yaml +256 -0
- package/components/timeline/timeline.css +50 -50
- package/components/toast/toast.css +58 -58
- package/components/toggle-group/toggle-group.css +6 -6
- package/components/toggle-scheme/toggle-scheme.css +2 -2
- package/components/toolbar/toolbar.css +17 -17
- package/components/tooltip/tooltip.css +2 -2
- package/components/tree/tree.css +37 -37
- package/components/upload/upload.css +49 -49
- package/dist/icons-manifest.js +3 -3
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +121 -83
- package/package.json +1 -1
- package/styles/components.css +8 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
$schema: ../../../../scripts/schemas/component.yaml.schema.json
|
|
2
|
+
name: UIIntegrationCard
|
|
3
|
+
tag: integration-card-ui
|
|
4
|
+
status: stable
|
|
5
|
+
component: IntegrationCard
|
|
6
|
+
category: display
|
|
7
|
+
version: 1
|
|
8
|
+
description: >-
|
|
9
|
+
Single-tile primitive representing one third-party integration
|
|
10
|
+
(Slack, GitHub, Stripe, …). Shows the provider logo + name +
|
|
11
|
+
description + status pill + a single primary action button whose
|
|
12
|
+
label and variant are derived from `status`. Composes into a grid
|
|
13
|
+
via the SPEC-063 integrations-page composite. One tile = one
|
|
14
|
+
provider; the button variant is computed from `status`, not a
|
|
15
|
+
separate prop. Distinct from <option-card-ui> (a single-select
|
|
16
|
+
radio with no status / async action) and <card-ui> (the generic
|
|
17
|
+
bordered surface this specializes).
|
|
18
|
+
# Per ADR-0027 — primitives that programmatically create other primitives
|
|
19
|
+
# do NOT auto-import them. Consumer (or demo shell) must explicitly import.
|
|
20
|
+
composes:
|
|
21
|
+
- icon-ui
|
|
22
|
+
- badge-ui
|
|
23
|
+
- button-ui
|
|
24
|
+
props:
|
|
25
|
+
provider:
|
|
26
|
+
description: Provider key — `slack`, `github`, etc. — used for analytics + a11y label. Required.
|
|
27
|
+
type: string
|
|
28
|
+
default: ""
|
|
29
|
+
required: true
|
|
30
|
+
reflect: true
|
|
31
|
+
name:
|
|
32
|
+
description: Display name shown as the card title. Required.
|
|
33
|
+
type: string
|
|
34
|
+
default: ""
|
|
35
|
+
required: true
|
|
36
|
+
logo:
|
|
37
|
+
description: Logo URL (preferred — renders as <img>) or icon name (renders as <icon-ui>). URLs are sniffed by presence of `/`.
|
|
38
|
+
type: string
|
|
39
|
+
default: ""
|
|
40
|
+
description:
|
|
41
|
+
description: One-line description of what the integration does.
|
|
42
|
+
type: string
|
|
43
|
+
default: ""
|
|
44
|
+
status:
|
|
45
|
+
description: Current connection state — drives the button label, variant, and visibility. `available` shows a primary `Connect`; `connected` shows an outline `Configure`; `error` shows an outline `Retry`; `pending` shows a non-interactive spinner; `coming-soon` hides the button.
|
|
46
|
+
type: string
|
|
47
|
+
default: available
|
|
48
|
+
enum:
|
|
49
|
+
- available
|
|
50
|
+
- connected
|
|
51
|
+
- error
|
|
52
|
+
- pending
|
|
53
|
+
- coming-soon
|
|
54
|
+
reflect: true
|
|
55
|
+
dynamic: true
|
|
56
|
+
error-message:
|
|
57
|
+
description: When `status="error"`, the message to show below the description. Ignored for other statuses.
|
|
58
|
+
type: string
|
|
59
|
+
default: ""
|
|
60
|
+
dynamic: true
|
|
61
|
+
disabled:
|
|
62
|
+
description: Disables the action button.
|
|
63
|
+
type: boolean
|
|
64
|
+
default: false
|
|
65
|
+
reflect: true
|
|
66
|
+
events:
|
|
67
|
+
connect:
|
|
68
|
+
description: Fired when the user clicks the action button while `status="available"`.
|
|
69
|
+
detail:
|
|
70
|
+
provider:
|
|
71
|
+
type: string
|
|
72
|
+
description: The provider key for this card.
|
|
73
|
+
configure:
|
|
74
|
+
description: Fired when the user clicks the action button while `status="connected"`.
|
|
75
|
+
detail:
|
|
76
|
+
provider:
|
|
77
|
+
type: string
|
|
78
|
+
description: The provider key for this card.
|
|
79
|
+
disconnect:
|
|
80
|
+
description: Fired when the consumer wires a `<menu-ui slot="actions">` overflow with a `disconnect` item. The card does not stamp this menu — it bubbles whatever consumer markup dispatches.
|
|
81
|
+
detail:
|
|
82
|
+
provider:
|
|
83
|
+
type: string
|
|
84
|
+
description: The provider key for this card.
|
|
85
|
+
retry:
|
|
86
|
+
description: Fired when the user clicks the action button while `status="error"`.
|
|
87
|
+
detail:
|
|
88
|
+
provider:
|
|
89
|
+
type: string
|
|
90
|
+
description: The provider key for this card.
|
|
91
|
+
slots:
|
|
92
|
+
default:
|
|
93
|
+
description: Optional override for the description. When a non-empty default slot is provided it supersedes the `description` prop.
|
|
94
|
+
actions:
|
|
95
|
+
description: Optional secondary actions — typically a <menu-ui> overflow carrying `Reauthenticate` / `Disconnect` entries. Collapses when empty.
|
|
96
|
+
states:
|
|
97
|
+
- name: idle
|
|
98
|
+
description: Default — `[status="available"]`.
|
|
99
|
+
- name: available
|
|
100
|
+
description: Ready to connect.
|
|
101
|
+
attribute: status="available"
|
|
102
|
+
- name: connected
|
|
103
|
+
description: Linked — success-tinted border, check badge, outline `Configure` button.
|
|
104
|
+
attribute: status="connected"
|
|
105
|
+
- name: error
|
|
106
|
+
description: Connection failed — danger-tinted border, error message visible, outline `Retry` button.
|
|
107
|
+
attribute: status="error"
|
|
108
|
+
- name: pending
|
|
109
|
+
description: Awaiting response — button shows spinner, non-interactive.
|
|
110
|
+
attribute: status="pending"
|
|
111
|
+
- name: coming-soon
|
|
112
|
+
description: Listed but not yet enabled — opacity reduced, button hidden, "Coming soon" badge shown.
|
|
113
|
+
attribute: status="coming-soon"
|
|
114
|
+
- name: disabled
|
|
115
|
+
description: Non-interactive; dimmed.
|
|
116
|
+
attribute: disabled
|
|
117
|
+
traits: []
|
|
118
|
+
tokens:
|
|
119
|
+
--integration-card-bg:
|
|
120
|
+
description: Card background. Defaults to `--a-bg`.
|
|
121
|
+
--integration-card-border:
|
|
122
|
+
description: Card border color. Defaults to `--a-border`.
|
|
123
|
+
--integration-card-radius:
|
|
124
|
+
description: Card corner radius. Defaults to `--a-radius-md`.
|
|
125
|
+
--integration-card-px:
|
|
126
|
+
description: Horizontal padding. Defaults to `--a-space-4`.
|
|
127
|
+
--integration-card-py:
|
|
128
|
+
description: Vertical padding. Defaults to `--a-space-4`.
|
|
129
|
+
--integration-card-gap:
|
|
130
|
+
description: Vertical rhythm between header / body / footer.
|
|
131
|
+
--integration-card-logo-size:
|
|
132
|
+
description: Logo square dimension. Defaults to `--a-space-7`.
|
|
133
|
+
--integration-card-heading-fg:
|
|
134
|
+
description: Provider name color.
|
|
135
|
+
--integration-card-description-fg:
|
|
136
|
+
description: Description text color.
|
|
137
|
+
--integration-card-error-fg:
|
|
138
|
+
description: Error-message text color (used when `status="error"`).
|
|
139
|
+
requiredIcons:
|
|
140
|
+
- check
|
|
141
|
+
- warning-circle
|
|
142
|
+
- arrow-clockwise
|
|
143
|
+
a2ui:
|
|
144
|
+
rules:
|
|
145
|
+
- >-
|
|
146
|
+
Use <integration-card-ui> for one tile in an integrations grid.
|
|
147
|
+
Set `provider` and `name` — both are required for analytics
|
|
148
|
+
keys and the accessible name. Set `description` so users
|
|
149
|
+
don't have to look the integration up externally.
|
|
150
|
+
- >-
|
|
151
|
+
`status` MUST be one of `available | connected | error |
|
|
152
|
+
pending | coming-soon`. The button label and variant are
|
|
153
|
+
DERIVED from `status` — never slot a <button-ui> directly in
|
|
154
|
+
the card body. Use the `actions` slot for an overflow
|
|
155
|
+
<menu-ui> with secondary actions like Reauthenticate or
|
|
156
|
+
Disconnect.
|
|
157
|
+
- >-
|
|
158
|
+
When `status="error"`, set `error-message` — otherwise the
|
|
159
|
+
user sees a Retry button with no context. The message renders
|
|
160
|
+
below the description in danger-text color.
|
|
161
|
+
- >-
|
|
162
|
+
`logo` accepts a URL (containing `/`, renders as <img>) or a
|
|
163
|
+
registered icon name (renders as <icon-ui>). Don't mix — one
|
|
164
|
+
provider gets one logo source.
|
|
165
|
+
- >-
|
|
166
|
+
Group integration cards in <grid-ui columns="auto-fit"> or
|
|
167
|
+
use <integrations-page-ui> (SPEC-063) for the canonical
|
|
168
|
+
Settings-panel grid. Never nest <card-ui> around an
|
|
169
|
+
<integration-card-ui> — it IS a card variant.
|
|
170
|
+
anti_patterns:
|
|
171
|
+
- wrong: |
|
|
172
|
+
{"component": "IntegrationCard", "provider": "slack",
|
|
173
|
+
"children": [{"component": "Button", "label": "Connect"}]}
|
|
174
|
+
why: |
|
|
175
|
+
Manually slotting a Button bypasses the card's status-driven
|
|
176
|
+
button semantics. The card renders its own button AND the
|
|
177
|
+
slotted one, producing two actions side-by-side.
|
|
178
|
+
fix: |
|
|
179
|
+
{"component": "IntegrationCard", "provider": "slack",
|
|
180
|
+
"name": "Slack", "status": "available"}
|
|
181
|
+
- wrong: |
|
|
182
|
+
{"component": "Card", "children": [
|
|
183
|
+
{"component": "Image", "src": "/slack.svg"},
|
|
184
|
+
{"component": "Text", "value": "Slack"},
|
|
185
|
+
{"component": "Button", "label": "Connect"}]}
|
|
186
|
+
why: |
|
|
187
|
+
Re-implements IntegrationCard with primitives. Loses status
|
|
188
|
+
badge semantics, accessible-name wiring, and the typed
|
|
189
|
+
connect/configure events.
|
|
190
|
+
fix: |
|
|
191
|
+
{"component": "IntegrationCard", "provider": "slack",
|
|
192
|
+
"name": "Slack", "logo": "/slack.svg", "status": "available"}
|
|
193
|
+
examples:
|
|
194
|
+
- name: available
|
|
195
|
+
description: Available integration with logo, description, and primary Connect button.
|
|
196
|
+
a2ui: >-
|
|
197
|
+
{
|
|
198
|
+
"id": "card-slack",
|
|
199
|
+
"component": "IntegrationCard",
|
|
200
|
+
"provider": "slack",
|
|
201
|
+
"name": "Slack",
|
|
202
|
+
"logo": "/integrations/slack.svg",
|
|
203
|
+
"description": "Send AI replies and notifications to channels.",
|
|
204
|
+
"status": "available"
|
|
205
|
+
}
|
|
206
|
+
- name: connected
|
|
207
|
+
description: Connected integration with success badge and outline Configure button.
|
|
208
|
+
a2ui: >-
|
|
209
|
+
{
|
|
210
|
+
"id": "card-github",
|
|
211
|
+
"component": "IntegrationCard",
|
|
212
|
+
"provider": "github",
|
|
213
|
+
"name": "GitHub",
|
|
214
|
+
"logo": "/integrations/github.svg",
|
|
215
|
+
"description": "Sync issues and pull requests.",
|
|
216
|
+
"status": "connected"
|
|
217
|
+
}
|
|
218
|
+
- name: error
|
|
219
|
+
description: Error integration with danger badge, error message, and Retry button.
|
|
220
|
+
a2ui: >-
|
|
221
|
+
{
|
|
222
|
+
"id": "card-stripe",
|
|
223
|
+
"component": "IntegrationCard",
|
|
224
|
+
"provider": "stripe",
|
|
225
|
+
"name": "Stripe",
|
|
226
|
+
"description": "Charge customers and reconcile invoices.",
|
|
227
|
+
"status": "error",
|
|
228
|
+
"error-message": "Token expired — re-authenticate."
|
|
229
|
+
}
|
|
230
|
+
- name: coming-soon
|
|
231
|
+
description: Coming-soon integration with no action button.
|
|
232
|
+
a2ui: >-
|
|
233
|
+
{
|
|
234
|
+
"id": "card-zapier",
|
|
235
|
+
"component": "IntegrationCard",
|
|
236
|
+
"provider": "zapier",
|
|
237
|
+
"name": "Zapier",
|
|
238
|
+
"description": "Trigger Zaps from AdiaUI events.",
|
|
239
|
+
"status": "coming-soon"
|
|
240
|
+
}
|
|
241
|
+
keywords:
|
|
242
|
+
- integration
|
|
243
|
+
- connect
|
|
244
|
+
- provider
|
|
245
|
+
- slack
|
|
246
|
+
- github
|
|
247
|
+
- stripe
|
|
248
|
+
- oauth
|
|
249
|
+
- third-party
|
|
250
|
+
- settings
|
|
251
|
+
- integrations
|
|
252
|
+
- card
|
|
253
|
+
- tile
|
|
254
|
+
synonyms:
|
|
255
|
+
integration:
|
|
256
|
+
- integration
|
|
257
|
+
- connect
|
|
258
|
+
- provider
|
|
259
|
+
- third-party
|
|
260
|
+
connect:
|
|
261
|
+
- integration
|
|
262
|
+
- oauth
|
|
263
|
+
- connection
|
|
264
|
+
provider:
|
|
265
|
+
- integration
|
|
266
|
+
- third-party
|
|
267
|
+
- service
|
|
268
|
+
oauth:
|
|
269
|
+
- integration
|
|
270
|
+
- connect
|
|
271
|
+
- auth
|
|
272
|
+
settings:
|
|
273
|
+
- settings
|
|
274
|
+
- integration
|
|
275
|
+
- account
|
|
276
|
+
related:
|
|
277
|
+
- card
|
|
278
|
+
- badge
|
|
279
|
+
- button
|
|
280
|
+
- menu
|
package/components/kbd/kbd.css
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
@scope (kbd-ui) {
|
|
2
2
|
:where(:scope) {
|
|
3
3
|
/* ── Tokens ── */
|
|
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);
|
|
4
|
+
--kbd-bg-default: var(--a-bg-muted);
|
|
5
|
+
--kbd-fg-default: var(--a-fg);
|
|
6
|
+
--kbd-border-default: var(--a-border-subtle);
|
|
7
|
+
--kbd-radius-default: var(--a-radius-sm);
|
|
8
|
+
--kbd-font-default: var(--a-font-family-code);
|
|
9
9
|
|
|
10
10
|
/* Size — defaults to md */
|
|
11
|
-
--kbd-font-size: var(--a-ui-tiny);
|
|
12
|
-
--kbd-height: 1.25rem;
|
|
13
|
-
--kbd-min-width: 1.25rem;
|
|
14
|
-
--kbd-px: var(--a-space-1);
|
|
15
|
-
--kbd-weight: var(--a-weight-medium);
|
|
11
|
+
--kbd-font-size-default: var(--a-ui-tiny);
|
|
12
|
+
--kbd-height-default: 1.25rem;
|
|
13
|
+
--kbd-min-width-default: 1.25rem;
|
|
14
|
+
--kbd-px-default: var(--a-space-1);
|
|
15
|
+
--kbd-weight-default: var(--a-weight-medium);
|
|
16
16
|
|
|
17
17
|
/* Size: sm */
|
|
18
|
-
--kbd-font-size-sm: var(--a-ui-tiny);
|
|
19
|
-
--kbd-height-sm: 1rem;
|
|
20
|
-
--kbd-min-width-sm: 1rem;
|
|
18
|
+
--kbd-font-size-sm-default: var(--a-ui-tiny);
|
|
19
|
+
--kbd-height-sm-default: 1rem;
|
|
20
|
+
--kbd-min-width-sm-default: 1rem;
|
|
21
21
|
|
|
22
22
|
/* Size: lg */
|
|
23
|
-
--kbd-font-size-lg: var(--a-ui-sm);
|
|
24
|
-
--kbd-height-lg: 1.5rem;
|
|
25
|
-
--kbd-min-width-lg: 1.5rem;
|
|
23
|
+
--kbd-font-size-lg-default: var(--a-ui-sm);
|
|
24
|
+
--kbd-height-lg-default: 1.5rem;
|
|
25
|
+
--kbd-min-width-lg-default: 1.5rem;
|
|
26
26
|
text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -32,18 +32,18 @@
|
|
|
32
32
|
display: inline-flex;
|
|
33
33
|
align-items: center;
|
|
34
34
|
justify-content: center;
|
|
35
|
-
min-width: var(--kbd-min-width);
|
|
36
|
-
height: var(--kbd-height);
|
|
37
|
-
padding-inline: var(--kbd-px);
|
|
38
|
-
font-family: var(--kbd-font);
|
|
39
|
-
font-size: var(--kbd-font-size);
|
|
40
|
-
font-weight: var(--kbd-weight);
|
|
35
|
+
min-width: var(--kbd-min-width, var(--kbd-min-width-default));
|
|
36
|
+
height: var(--kbd-height, var(--kbd-height-default));
|
|
37
|
+
padding-inline: var(--kbd-px, var(--kbd-px-default));
|
|
38
|
+
font-family: var(--kbd-font, var(--kbd-font-default));
|
|
39
|
+
font-size: var(--kbd-font-size, var(--kbd-font-size-default));
|
|
40
|
+
font-weight: var(--kbd-weight, var(--kbd-weight-default));
|
|
41
41
|
line-height: 1;
|
|
42
|
-
color: var(--kbd-fg);
|
|
43
|
-
background: var(--kbd-bg);
|
|
44
|
-
border: 1px solid var(--kbd-border);
|
|
42
|
+
color: var(--kbd-fg, var(--kbd-fg-default));
|
|
43
|
+
background: var(--kbd-bg, var(--kbd-bg-default));
|
|
44
|
+
border: 1px solid var(--kbd-border, var(--kbd-border-default));
|
|
45
45
|
border-bottom-width: 2px;
|
|
46
|
-
border-radius: var(--kbd-radius);
|
|
46
|
+
border-radius: var(--kbd-radius, var(--kbd-radius-default));
|
|
47
47
|
vertical-align: middle;
|
|
48
48
|
white-space: nowrap;
|
|
49
49
|
user-select: none;
|
|
@@ -51,13 +51,13 @@
|
|
|
51
51
|
|
|
52
52
|
/* Sizes */
|
|
53
53
|
:scope[size="sm"] {
|
|
54
|
-
--kbd-font-size: var(--kbd-font-size-sm);
|
|
55
|
-
--kbd-height: var(--kbd-height-sm);
|
|
56
|
-
--kbd-min-width: var(--kbd-min-width-sm);
|
|
54
|
+
--kbd-font-size-default: var(--kbd-font-size-sm, var(--kbd-font-size-sm-default));
|
|
55
|
+
--kbd-height-default: var(--kbd-height-sm, var(--kbd-height-sm-default));
|
|
56
|
+
--kbd-min-width-default: var(--kbd-min-width-sm, var(--kbd-min-width-sm-default));
|
|
57
57
|
}
|
|
58
58
|
:scope[size="lg"] {
|
|
59
|
-
--kbd-font-size: var(--kbd-font-size-lg);
|
|
60
|
-
--kbd-height: var(--kbd-height-lg);
|
|
61
|
-
--kbd-min-width: var(--kbd-min-width-lg);
|
|
59
|
+
--kbd-font-size-default: var(--kbd-font-size-lg, var(--kbd-font-size-lg-default));
|
|
60
|
+
--kbd-height-default: var(--kbd-height-lg, var(--kbd-height-lg-default));
|
|
61
|
+
--kbd-min-width-default: var(--kbd-min-width-lg, var(--kbd-min-width-lg-default));
|
|
62
62
|
}
|
|
63
63
|
}
|
package/components/link/link.css
CHANGED
|
@@ -7,16 +7,16 @@
|
|
|
7
7
|
|
|
8
8
|
@scope (link-ui) {
|
|
9
9
|
:where(:scope) {
|
|
10
|
-
--link-fg: var(--a-link);
|
|
11
|
-
--link-fg-hover: var(--a-link-hover);
|
|
12
|
-
--link-fg-visited: var(--a-link-visited);
|
|
13
|
-
--link-underline-offset: 2px;
|
|
14
|
-
--link-focus-ring: var(--a-focus-ring);
|
|
10
|
+
--link-fg-default: var(--a-link);
|
|
11
|
+
--link-fg-hover-default: var(--a-link-hover);
|
|
12
|
+
--link-fg-visited-default: var(--a-link-visited);
|
|
13
|
+
--link-underline-offset-default: 2px;
|
|
14
|
+
--link-focus-ring-default: var(--a-focus-ring);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
:scope {
|
|
18
18
|
display: inline;
|
|
19
|
-
color: var(--link-fg);
|
|
19
|
+
color: var(--link-fg, var(--link-fg-default));
|
|
20
20
|
/* The text-decoration is on the inner <a>, not the host, so that
|
|
21
21
|
host-level color overrides cascade correctly. */
|
|
22
22
|
}
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
:scope > a {
|
|
25
25
|
color: inherit;
|
|
26
26
|
text-decoration: underline;
|
|
27
|
-
text-underline-offset: var(--link-underline-offset);
|
|
27
|
+
text-underline-offset: var(--link-underline-offset, var(--link-underline-offset-default));
|
|
28
28
|
cursor: pointer;
|
|
29
29
|
/* Standard transition for color hover. */
|
|
30
30
|
transition: color var(--a-duration-fast) var(--a-easing);
|
|
@@ -38,17 +38,17 @@
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
:scope > a:hover {
|
|
41
|
-
color: var(--link-fg-hover);
|
|
41
|
+
color: var(--link-fg-hover, var(--link-fg-hover-default));
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
:scope > a:visited {
|
|
45
|
-
color: var(--link-fg-visited);
|
|
45
|
+
color: var(--link-fg-visited, var(--link-fg-visited-default));
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
/* Focus ring on the anchor (the actual focusable element). */
|
|
49
49
|
:scope > a:focus-visible {
|
|
50
50
|
outline: none;
|
|
51
|
-
box-shadow: var(--link-focus-ring);
|
|
51
|
+
box-shadow: var(--link-focus-ring, var(--link-focus-ring-default));
|
|
52
52
|
border-radius: var(--a-radius-sm);
|
|
53
53
|
}
|
|
54
54
|
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
affordance is implied by hover behavior + cursor. For "Already
|
|
68
68
|
have an account?" type prose where the link role is contextual. */
|
|
69
69
|
:scope[variant="quiet"] {
|
|
70
|
-
--link-fg: inherit;
|
|
71
|
-
--link-fg-hover: var(--a-link-hover);
|
|
70
|
+
--link-fg-default: inherit;
|
|
71
|
+
--link-fg-hover-default: var(--a-link-hover);
|
|
72
72
|
}
|
|
73
73
|
:scope[variant="quiet"] > a {
|
|
74
74
|
text-decoration: none;
|
package/components/list/list.css
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
@scope (list-ui) {
|
|
2
2
|
:where(:scope) {
|
|
3
3
|
/* ── Colors ── */
|
|
4
|
-
--list-divider-color: var(--a-border-subtle);
|
|
5
|
-
--list-bg-selected: var(--a-accent-muted);
|
|
6
|
-
--list-fg-selected: var(--a-accent-strong);
|
|
7
|
-
--list-border-selected: var(--a-accent-strong);
|
|
4
|
+
--list-divider-color-default: var(--a-border-subtle);
|
|
5
|
+
--list-bg-selected-default: var(--a-accent-muted);
|
|
6
|
+
--list-fg-selected-default: var(--a-accent-strong);
|
|
7
|
+
--list-border-selected-default: var(--a-accent-strong);
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
:scope {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
/* ── Divider ── */
|
|
19
19
|
:scope[divider] list-item-ui + list-item-ui {
|
|
20
|
-
border-top: 1px solid var(--list-divider-color);
|
|
20
|
+
border-top: 1px solid var(--list-divider-color, var(--list-divider-color-default));
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
/* ── Item padding / margin (controlled by list-ui attributes) ──
|
|
@@ -68,9 +68,9 @@
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
:scope[selectable] > [role="listitem"][aria-selected="true"] {
|
|
71
|
-
background: var(--list-bg-selected);
|
|
72
|
-
color: var(--list-fg-selected);
|
|
73
|
-
border-inline-start-color: var(--list-border-selected);
|
|
71
|
+
background: var(--list-bg-selected, var(--list-bg-selected-default));
|
|
72
|
+
color: var(--list-fg-selected, var(--list-fg-selected-default));
|
|
73
|
+
border-inline-start-color: var(--list-border-selected, var(--list-border-selected-default));
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
:scope[selectable] > [role="listitem"]:focus-visible {
|