@adia-ai/web-components 0.6.33 → 0.6.35
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 +64 -0
- package/color/index.js +1 -1
- package/components/accordion/accordion-item.yaml +2 -2
- package/components/accordion/accordion.css +2 -2
- package/components/accordion/accordion.js +1 -1
- package/components/action-list/action-item.yaml +2 -2
- package/components/action-list/action-list.css +2 -2
- package/components/action-list/action-list.js +1 -1
- package/components/agent-artifact/{class.js → agent-artifact.class.js} +1 -1
- package/components/agent-artifact/agent-artifact.css +31 -31
- package/components/agent-artifact/agent-artifact.js +1 -1
- package/components/agent-feedback-bar/agent-feedback-bar.css +10 -10
- package/components/agent-feedback-bar/agent-feedback-bar.js +1 -1
- package/components/agent-questions/agent-questions.css +57 -57
- package/components/agent-questions/agent-questions.js +1 -1
- package/components/agent-reasoning/agent-reasoning.css +62 -62
- package/components/agent-reasoning/agent-reasoning.js +1 -1
- package/components/agent-suggestions/agent-suggestions.css +4 -4
- package/components/agent-suggestions/agent-suggestions.js +1 -1
- package/components/agent-trace/agent-trace.css +53 -53
- package/components/alert/alert.a2ui.json +64 -1
- package/components/alert/{class.js → alert.class.js} +189 -2
- package/components/alert/alert.css +119 -41
- package/components/alert/alert.d.ts +14 -0
- package/components/alert/alert.js +1 -1
- package/components/alert/alert.test.js +184 -0
- package/components/alert/alert.yaml +114 -1
- package/components/avatar/avatar-group.yaml +2 -2
- package/components/avatar/avatar.css +27 -27
- package/components/avatar/avatar.js +1 -1
- package/components/badge/badge.css +27 -27
- package/components/badge/badge.js +1 -1
- package/components/block/block.css +16 -16
- package/components/block/block.js +1 -1
- package/components/breadcrumb/breadcrumb.css +23 -23
- package/components/breadcrumb/breadcrumb.js +1 -1
- package/components/button/button.css +101 -91
- package/components/button/button.js +1 -1
- package/components/calendar-grid/calendar-grid.a2ui.json +146 -0
- package/components/calendar-grid/calendar-grid.class.js +326 -0
- package/components/calendar-grid/calendar-grid.css +246 -0
- package/components/calendar-grid/calendar-grid.d.ts +41 -0
- package/components/calendar-grid/calendar-grid.js +17 -0
- package/components/calendar-grid/calendar-grid.yaml +136 -0
- package/components/calendar-picker/calendar-picker.css +139 -139
- package/components/calendar-picker/calendar-picker.js +1 -1
- package/components/canvas/canvas.css +12 -12
- package/components/card/card.css +83 -83
- package/components/card/card.js +1 -1
- package/components/chart/chart.css +224 -224
- package/components/chart/chart.js +1 -1
- package/components/chart-legend/chart-legend.css +26 -26
- package/components/chart-legend/chart-legend.js +1 -1
- package/components/chat-thread/chat-input.a2ui.json +1 -1
- package/components/chat-thread/chat-input.js +6 -1
- package/components/chat-thread/chat-input.yaml +4 -1
- package/components/chat-thread/chat-thread.js +1 -1
- package/components/check/check.css +40 -40
- package/components/check/check.js +1 -1
- package/components/code/code.css +125 -125
- package/components/code/code.js +1 -1
- package/components/col/col.css +15 -15
- package/components/col/col.js +1 -1
- package/components/color-input/color-input.js +1 -1
- package/components/color-picker/color-picker.css +55 -55
- package/components/color-picker/color-picker.js +1 -1
- package/components/combobox/combobox.a2ui.json +363 -0
- package/components/combobox/combobox.class.js +861 -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/command/command.js +1 -1
- package/components/date-range-picker/date-range-picker.a2ui.json +300 -0
- package/components/date-range-picker/date-range-picker.class.js +791 -0
- package/components/date-range-picker/date-range-picker.css +224 -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/datetime-picker.a2ui.json +334 -0
- package/components/datetime-picker/datetime-picker.class.js +706 -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/demo-toggle/demo-toggle.js +1 -1
- package/components/description-list/description-list.css +18 -18
- package/components/description-list/description-list.js +1 -1
- package/components/divider/divider.css +24 -24
- package/components/divider/divider.js +1 -1
- package/components/drawer/drawer.js +1 -1
- package/components/embed/embed.css +6 -6
- package/components/embed/embed.js +1 -1
- package/components/empty-state/empty-state.css +27 -27
- package/components/empty-state/empty-state.js +1 -1
- package/components/feed/feed.css +12 -12
- package/components/feed/feed.js +1 -1
- package/components/field/field.css +28 -28
- package/components/field/field.js +1 -1
- package/components/field/field.test.js +1 -1
- package/components/fields/fields.css +5 -5
- package/components/fields/fields.js +1 -1
- package/components/grid/grid.css +5 -5
- package/components/grid/grid.js +1 -1
- package/components/heatmap/heatmap.css +63 -63
- package/components/heatmap/heatmap.js +1 -1
- package/components/icon/icon.css +12 -12
- package/components/icon/icon.js +1 -1
- package/components/image/image.css +14 -14
- package/components/image/image.js +1 -1
- package/components/index.js +11 -0
- package/components/inline-message/inline-message.a2ui.json +143 -0
- package/components/inline-message/inline-message.class.js +169 -0
- package/components/inline-message/inline-message.css +75 -0
- package/components/inline-message/inline-message.d.ts +31 -0
- package/components/inline-message/inline-message.examples.md +19 -0
- package/components/inline-message/inline-message.js +17 -0
- package/components/inline-message/inline-message.test.js +203 -0
- package/components/inline-message/inline-message.yaml +205 -0
- package/components/input/input.css +67 -67
- package/components/input/input.js +1 -1
- package/components/input/input.yaml +5 -4
- package/components/inspector/inspector.css +6 -6
- package/components/inspector/inspector.js +1 -1
- package/components/integration-card/integration-card.a2ui.json +268 -0
- package/components/integration-card/integration-card.class.js +410 -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/kbd/kbd.js +1 -1
- package/components/link/link.css +12 -12
- package/components/link/link.js +1 -1
- package/components/list/list-item.yaml +2 -2
- package/components/list/list.css +8 -8
- package/components/list/list.js +1 -1
- package/components/list-window/list-window.a2ui.json +277 -0
- package/components/list-window/list-window.class.js +688 -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/loading-overlay/loading-overlay.a2ui.json +176 -0
- package/components/loading-overlay/loading-overlay.class.js +203 -0
- package/components/loading-overlay/loading-overlay.css +81 -0
- package/components/loading-overlay/loading-overlay.d.ts +24 -0
- package/components/loading-overlay/loading-overlay.examples.md +50 -0
- package/components/loading-overlay/loading-overlay.js +17 -0
- package/components/loading-overlay/loading-overlay.test.js +257 -0
- package/components/loading-overlay/loading-overlay.yaml +260 -0
- package/components/menu/menu-divider.yaml +1 -1
- package/components/menu/menu-item.yaml +1 -1
- package/components/menu/menu.a2ui.json +3 -0
- package/components/menu/menu.css +8 -8
- package/components/menu/menu.js +1 -1
- package/components/menu/menu.yaml +7 -0
- package/components/modal/{class.js → modal.class.js} +12 -1
- package/components/modal/modal.css +54 -44
- package/components/modal/modal.js +1 -1
- package/components/nav/nav.css +40 -40
- package/components/nav/nav.js +1 -1
- package/components/nav-group/nav-group.css +52 -52
- package/components/nav-group/nav-group.js +1 -1
- package/components/nav-item/nav-item.css +44 -44
- package/components/nav-item/nav-item.js +1 -1
- package/components/noodles/noodles.css +31 -31
- package/components/noodles/noodles.js +1 -1
- package/components/option-card/option-card.css +69 -69
- package/components/option-card/option-card.js +1 -1
- package/components/otp-input/otp-input.css +30 -30
- package/components/otp-input/otp-input.js +1 -1
- package/components/page/page.css +18 -18
- package/components/page/page.js +1 -1
- package/components/pagination/pagination.css +61 -61
- package/components/pagination/pagination.js +1 -1
- package/components/pane/pane.css +57 -57
- package/components/pane/pane.js +1 -1
- package/components/pipeline-status/pipeline-status.css +65 -65
- package/components/pipeline-status/pipeline-status.js +1 -1
- package/components/popover/popover.a2ui.json +8 -1
- package/components/popover/popover.css +17 -17
- package/components/popover/popover.js +1 -1
- package/components/popover/popover.yaml +14 -1
- package/components/progress/progress.css +23 -23
- package/components/progress/progress.js +1 -1
- package/components/progress-row/progress-row.css +17 -17
- package/components/progress-row/progress-row.js +1 -1
- package/components/radio/radio.css +39 -39
- package/components/radio/radio.js +1 -1
- package/components/range/range.css +55 -55
- package/components/range/range.js +1 -1
- package/components/rating/rating.css +28 -28
- package/components/rating/rating.js +1 -1
- package/components/richtext/richtext.css +133 -133
- package/components/richtext/richtext.js +1 -1
- package/components/row/row.css +19 -19
- package/components/row/row.js +1 -1
- package/components/search/search.css +5 -5
- package/components/search/search.js +1 -1
- package/components/segment/segment.css +24 -24
- package/components/segment/segment.js +1 -1
- package/components/segmented/segmented.css +25 -25
- package/components/segmented/segmented.js +1 -1
- package/components/select/select.a2ui.json +58 -4
- package/components/select/{class.js → select.class.js} +415 -6
- package/components/select/select.css +242 -84
- package/components/select/select.d.ts +31 -1
- package/components/select/select.js +1 -1
- package/components/select/select.test.js +202 -0
- package/components/select/select.yaml +126 -5
- package/components/skeleton/skeleton.css +14 -14
- package/components/skeleton/skeleton.js +1 -1
- package/components/slider/slider.css +46 -46
- package/components/slider/slider.js +1 -1
- package/components/spinner/spinner.a2ui.json +198 -0
- package/components/spinner/spinner.class.js +99 -0
- package/components/spinner/spinner.css +221 -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 +272 -0
- package/components/spinner/spinner.yaml +238 -0
- package/components/stack/stack.css +11 -11
- package/components/stack/stack.js +1 -1
- package/components/stat/stat.css +25 -25
- package/components/step-progress/step-progress.css +20 -20
- package/components/step-progress/step-progress.js +1 -1
- package/components/stepper/stepper-item.yaml +1 -1
- package/components/stepper/stepper.css +29 -29
- package/components/stepper/stepper.js +1 -1
- package/components/stream/stream.css +12 -12
- package/components/stream/stream.js +1 -1
- package/components/swatch/swatch.css +68 -68
- package/components/swatch/swatch.js +1 -1
- package/components/swiper/swiper.css +57 -57
- package/components/swiper/swiper.js +1 -1
- package/components/switch/switch.css +52 -52
- package/components/switch/switch.js +1 -1
- package/components/table/table.css +163 -163
- package/components/table/table.js +1 -1
- package/components/table-toolbar/{class.js → table-toolbar.class.js} +1 -1
- package/components/table-toolbar/table-toolbar.css +32 -32
- package/components/table-toolbar/table-toolbar.js +1 -1
- package/components/tabs/tab.yaml +2 -2
- package/components/tabs/tabs.css +51 -51
- package/components/tabs/tabs.js +1 -1
- package/components/tag/tag.css +48 -48
- package/components/tag/tag.js +1 -1
- package/components/tags-input/tags-input.a2ui.json +337 -0
- package/components/tags-input/tags-input.class.js +776 -0
- package/components/tags-input/tags-input.css +201 -0
- package/components/tags-input/tags-input.d.ts +120 -0
- package/components/tags-input/tags-input.examples.md +92 -0
- package/components/tags-input/tags-input.js +17 -0
- package/components/tags-input/tags-input.test.js +368 -0
- package/components/tags-input/tags-input.yaml +367 -0
- package/components/text/text.css +44 -44
- package/components/text/text.js +1 -1
- package/components/textarea/textarea.a2ui.json +1 -1
- package/components/textarea/textarea.css +46 -46
- package/components/textarea/textarea.js +1 -1
- package/components/textarea/textarea.yaml +11 -8
- package/components/time-picker/time-picker.a2ui.json +267 -0
- package/components/time-picker/time-picker.class.js +693 -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-item.yaml +2 -2
- package/components/timeline/{class.js → timeline.class.js} +1 -1
- package/components/timeline/timeline.css +50 -50
- package/components/timeline/timeline.js +1 -1
- package/components/toast/toast.css +58 -58
- package/components/toast/toast.js +1 -1
- package/components/toggle-group/toggle-group.css +6 -6
- package/components/toggle-group/toggle-group.js +1 -1
- package/components/toggle-group/toggle-option.yaml +1 -1
- package/components/toggle-scheme/toggle-scheme.css +2 -2
- package/components/toggle-scheme/toggle-scheme.js +1 -1
- package/components/toolbar/toolbar-group.yaml +1 -1
- package/components/toolbar/toolbar.css +17 -17
- package/components/toolbar/toolbar.js +1 -1
- package/components/tooltip/tooltip.css +2 -2
- package/components/tooltip/tooltip.js +1 -1
- package/components/tree/tree-item.yaml +1 -1
- package/components/tree/tree.css +37 -37
- package/components/tree/tree.js +1 -1
- package/components/upload/upload.css +49 -49
- package/components/upload/upload.js +1 -1
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +146 -87
- package/package.json +3 -3
- package/styles/components.css +11 -0
- /package/components/accordion/{class.js → accordion.class.js} +0 -0
- /package/components/action-list/{class.js → action-list.class.js} +0 -0
- /package/components/agent-feedback-bar/{class.js → agent-feedback-bar.class.js} +0 -0
- /package/components/agent-questions/{class.js → agent-questions.class.js} +0 -0
- /package/components/agent-reasoning/{class.js → agent-reasoning.class.js} +0 -0
- /package/components/agent-suggestions/{class.js → agent-suggestions.class.js} +0 -0
- /package/components/avatar/{class.js → avatar.class.js} +0 -0
- /package/components/badge/{class.js → badge.class.js} +0 -0
- /package/components/block/{class.js → block.class.js} +0 -0
- /package/components/breadcrumb/{class.js → breadcrumb.class.js} +0 -0
- /package/components/button/{class.js → button.class.js} +0 -0
- /package/components/calendar-picker/{class.js → calendar-picker.class.js} +0 -0
- /package/components/card/{class.js → card.class.js} +0 -0
- /package/components/chart/{class.js → chart.class.js} +0 -0
- /package/components/chart-legend/{class.js → chart-legend.class.js} +0 -0
- /package/components/chat-thread/{class.js → chat-thread.class.js} +0 -0
- /package/components/check/{class.js → check.class.js} +0 -0
- /package/components/code/{class.js → code.class.js} +0 -0
- /package/components/col/{class.js → col.class.js} +0 -0
- /package/components/color-input/{class.js → color-input.class.js} +0 -0
- /package/components/color-picker/{class.js → color-picker.class.js} +0 -0
- /package/components/command/{class.js → command.class.js} +0 -0
- /package/components/demo-toggle/{class.js → demo-toggle.class.js} +0 -0
- /package/components/description-list/{class.js → description-list.class.js} +0 -0
- /package/components/divider/{class.js → divider.class.js} +0 -0
- /package/components/drawer/{class.js → drawer.class.js} +0 -0
- /package/components/embed/{class.js → embed.class.js} +0 -0
- /package/components/empty-state/{class.js → empty-state.class.js} +0 -0
- /package/components/feed/{class.js → feed.class.js} +0 -0
- /package/components/field/{class.js → field.class.js} +0 -0
- /package/components/fields/{class.js → fields.class.js} +0 -0
- /package/components/grid/{class.js → grid.class.js} +0 -0
- /package/components/heatmap/{class.js → heatmap.class.js} +0 -0
- /package/components/icon/{class.js → icon.class.js} +0 -0
- /package/components/image/{class.js → image.class.js} +0 -0
- /package/components/input/{class.js → input.class.js} +0 -0
- /package/components/inspector/{class.js → inspector.class.js} +0 -0
- /package/components/kbd/{class.js → kbd.class.js} +0 -0
- /package/components/link/{class.js → link.class.js} +0 -0
- /package/components/list/{class.js → list.class.js} +0 -0
- /package/components/menu/{class.js → menu.class.js} +0 -0
- /package/components/nav/{class.js → nav.class.js} +0 -0
- /package/components/nav-group/{class.js → nav-group.class.js} +0 -0
- /package/components/nav-item/{class.js → nav-item.class.js} +0 -0
- /package/components/noodles/{class.js → noodles.class.js} +0 -0
- /package/components/option-card/{class.js → option-card.class.js} +0 -0
- /package/components/otp-input/{class.js → otp-input.class.js} +0 -0
- /package/components/page/{class.js → page.class.js} +0 -0
- /package/components/pagination/{class.js → pagination.class.js} +0 -0
- /package/components/pane/{class.js → pane.class.js} +0 -0
- /package/components/pipeline-status/{class.js → pipeline-status.class.js} +0 -0
- /package/components/popover/{class.js → popover.class.js} +0 -0
- /package/components/progress/{class.js → progress.class.js} +0 -0
- /package/components/progress-row/{class.js → progress-row.class.js} +0 -0
- /package/components/radio/{class.js → radio.class.js} +0 -0
- /package/components/range/{class.js → range.class.js} +0 -0
- /package/components/rating/{class.js → rating.class.js} +0 -0
- /package/components/richtext/{class.js → richtext.class.js} +0 -0
- /package/components/row/{class.js → row.class.js} +0 -0
- /package/components/search/{class.js → search.class.js} +0 -0
- /package/components/segment/{class.js → segment.class.js} +0 -0
- /package/components/segmented/{class.js → segmented.class.js} +0 -0
- /package/components/skeleton/{class.js → skeleton.class.js} +0 -0
- /package/components/slider/{class.js → slider.class.js} +0 -0
- /package/components/stack/{class.js → stack.class.js} +0 -0
- /package/components/step-progress/{class.js → step-progress.class.js} +0 -0
- /package/components/stepper/{class.js → stepper.class.js} +0 -0
- /package/components/stream/{class.js → stream.class.js} +0 -0
- /package/components/swatch/{class.js → swatch.class.js} +0 -0
- /package/components/swiper/{class.js → swiper.class.js} +0 -0
- /package/components/switch/{class.js → switch.class.js} +0 -0
- /package/components/table/{class.js → table.class.js} +0 -0
- /package/components/tabs/{class.js → tabs.class.js} +0 -0
- /package/components/tag/{class.js → tag.class.js} +0 -0
- /package/components/text/{class.js → text.class.js} +0 -0
- /package/components/textarea/{class.js → textarea.class.js} +0 -0
- /package/components/toast/{class.js → toast.class.js} +0 -0
- /package/components/toggle-group/{class.js → toggle-group.class.js} +0 -0
- /package/components/toggle-scheme/{class.js → toggle-scheme.class.js} +0 -0
- /package/components/toolbar/{class.js → toolbar.class.js} +0 -0
- /package/components/tooltip/{class.js → tooltip.class.js} +0 -0
- /package/components/tree/{class.js → tree.class.js} +0 -0
- /package/components/upload/{class.js → upload.class.js} +0 -0
|
@@ -2,49 +2,49 @@
|
|
|
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: var(--a-bg-muted);
|
|
5
|
+
--input-bg-default: 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, var(--input-bg-hover-default));
|
|
9
|
+
border-color: var(--input-border-hover, var(--input-border-hover-default));
|
|
10
|
+
color: var(--input-fg-hover, var(--input-fg-hover-default));
|
|
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, var(--input-affix-fg-hover-default));
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
@scope (input-ui) {
|
|
18
18
|
:where(:scope) {
|
|
19
19
|
/* ── Tokens (wired to --a-ui-*) ── */
|
|
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-placeholder-fg: var(--a-ui-text-placeholder);
|
|
31
|
-
--input-affix-fg: var(--a-ui-text-placeholder);
|
|
32
|
-
--input-field-gap: var(--a-space-1);
|
|
33
|
-
--input-label-min-width: 8ch;
|
|
20
|
+
--input-bg-default: var(--a-ui-bg);
|
|
21
|
+
--input-fg-default: var(--a-ui-text);
|
|
22
|
+
--input-border-default: var(--a-ui-border);
|
|
23
|
+
--input-border-hover-default: var(--a-ui-border-hover);
|
|
24
|
+
--input-focus-ring-default: var(--a-focus-ring);
|
|
25
|
+
--input-focus-ring-invalid-default: var(--a-focus-ring-invalid);
|
|
26
|
+
--input-radius-default: var(--a-radius);
|
|
27
|
+
--input-height-default: var(--a-size);
|
|
28
|
+
--input-px-default: var(--a-ui-px);
|
|
29
|
+
--input-font-size-default: var(--a-ui-size);
|
|
30
|
+
--input-placeholder-fg-default: var(--a-ui-text-placeholder);
|
|
31
|
+
--input-affix-fg-default: var(--a-ui-text-placeholder);
|
|
32
|
+
--input-field-gap-default: var(--a-space-1);
|
|
33
|
+
--input-label-min-width-default: 8ch;
|
|
34
34
|
|
|
35
35
|
/* ── Transitions ── */
|
|
36
|
-
--input-duration: var(--a-duration-fast);
|
|
37
|
-
--input-easing: var(--a-easing);
|
|
36
|
+
--input-duration-default: var(--a-duration-fast);
|
|
37
|
+
--input-easing-default: var(--a-easing);
|
|
38
38
|
|
|
39
39
|
/* ── State: hover/focus ── */
|
|
40
|
-
--input-bg-hover: var(--a-ui-bg-hover);
|
|
41
|
-
--input-fg-hover: var(--a-ui-text-hover);
|
|
42
|
-
--input-affix-fg-hover: var(--a-ui-text-subtle);
|
|
43
|
-
--input-fg-focus: var(--a-ui-text-active);
|
|
40
|
+
--input-bg-hover-default: var(--a-ui-bg-hover);
|
|
41
|
+
--input-fg-hover-default: var(--a-ui-text-hover);
|
|
42
|
+
--input-affix-fg-hover-default: var(--a-ui-text-subtle);
|
|
43
|
+
--input-fg-focus-default: var(--a-ui-text-active);
|
|
44
44
|
|
|
45
45
|
/* ── State: disabled ── */
|
|
46
|
-
--input-bg-disabled: var(--a-ui-bg-disabled);
|
|
47
|
-
--input-fg-disabled: var(--a-ui-text-disabled);
|
|
46
|
+
--input-bg-disabled-default: var(--a-ui-bg-disabled);
|
|
47
|
+
--input-fg-disabled-default: var(--a-ui-text-disabled);
|
|
48
48
|
text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
|
|
49
49
|
}
|
|
50
50
|
|
|
@@ -65,9 +65,9 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
65
65
|
label wider than the floor grows past it. */
|
|
66
66
|
[slot="label"] {
|
|
67
67
|
flex-shrink: 0;
|
|
68
|
-
min-width: var(--input-label-min-width);
|
|
69
|
-
color: var(--input-affix-fg);
|
|
70
|
-
font-size: var(--input-font-size);
|
|
68
|
+
min-width: var(--input-label-min-width, var(--input-label-min-width-default));
|
|
69
|
+
color: var(--input-affix-fg, var(--input-affix-fg-default));
|
|
70
|
+
font-size: var(--input-font-size, var(--input-font-size-default));
|
|
71
71
|
user-select: none;
|
|
72
72
|
pointer-events: none;
|
|
73
73
|
}
|
|
@@ -76,15 +76,15 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
76
76
|
[slot="field"] {
|
|
77
77
|
display: flex;
|
|
78
78
|
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);
|
|
79
|
+
gap: var(--input-field-gap, var(--input-field-gap-default));
|
|
80
|
+
min-height: var(--input-height, var(--input-height-default));
|
|
81
|
+
padding: 0 var(--input-px, var(--input-px-default));
|
|
82
|
+
border: 1px solid var(--input-border, var(--input-border-default));
|
|
83
|
+
border-radius: var(--input-radius, var(--input-radius-default));
|
|
84
|
+
background: var(--input-bg, var(--input-bg-default));
|
|
85
|
+
color: var(--input-fg, var(--input-fg-default));
|
|
86
86
|
font: inherit;
|
|
87
|
-
font-size: var(--input-font-size);
|
|
87
|
+
font-size: var(--input-font-size, var(--input-font-size-default));
|
|
88
88
|
/* line-height: 1.4 (not 1) so descender-bearing glyphs (g, j, p, q, y)
|
|
89
89
|
have room inside [slot="text"]'s line box. With line-height: 1 the
|
|
90
90
|
line box equals the em-square and descenders extend below it; the
|
|
@@ -96,22 +96,22 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
96
96
|
/* Cover every property the hover / focus / invalid states change so
|
|
97
97
|
the field doesn't half-snap (border slides, but bg/colour/ring snap). */
|
|
98
98
|
transition:
|
|
99
|
-
background var(--input-duration) var(--input-easing),
|
|
100
|
-
border-color var(--input-duration) var(--input-easing),
|
|
101
|
-
color var(--input-duration) var(--input-easing),
|
|
102
|
-
box-shadow var(--input-duration) var(--input-easing);
|
|
99
|
+
background var(--input-duration, var(--input-duration-default)) var(--input-easing, var(--input-easing-default)),
|
|
100
|
+
border-color var(--input-duration, var(--input-duration-default)) var(--input-easing, var(--input-easing-default)),
|
|
101
|
+
color var(--input-duration, var(--input-duration-default)) var(--input-easing, var(--input-easing-default)),
|
|
102
|
+
box-shadow var(--input-duration, var(--input-duration-default)) var(--input-easing, var(--input-easing-default));
|
|
103
103
|
}
|
|
104
104
|
/* hover rules moved outside @scope — see Safari 17.x bug note at top. */
|
|
105
105
|
:scope:not([disabled]):focus-within [slot="field"] {
|
|
106
106
|
/* Canonical ring — consumes the L3 --input-focus-ring token
|
|
107
107
|
which aliases --a-focus-ring. Border stays stable; the ring
|
|
108
108
|
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);
|
|
109
|
+
box-shadow: var(--input-focus-ring, var(--input-focus-ring-default));
|
|
110
|
+
color: var(--input-fg-focus, var(--input-fg-focus-default));
|
|
111
111
|
}
|
|
112
112
|
:scope[aria-invalid="true"]:not([disabled]):focus-within [slot="field"],
|
|
113
113
|
:scope[error]:not([disabled]):focus-within [slot="field"] {
|
|
114
|
-
box-shadow: var(--input-focus-ring-invalid);
|
|
114
|
+
box-shadow: var(--input-focus-ring-invalid, var(--input-focus-ring-invalid-default));
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
/* Text (contenteditable span) */
|
|
@@ -135,13 +135,13 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
input[slot="text"]::placeholder {
|
|
138
|
-
color: var(--input-placeholder-fg);
|
|
138
|
+
color: var(--input-placeholder-fg, var(--input-placeholder-fg-default));
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
/* Placeholder (contenteditable only) */
|
|
142
142
|
span[slot="text"][data-empty]::before {
|
|
143
143
|
content: attr(data-placeholder);
|
|
144
|
-
color: var(--input-placeholder-fg);
|
|
144
|
+
color: var(--input-placeholder-fg, var(--input-placeholder-fg-default));
|
|
145
145
|
pointer-events: none;
|
|
146
146
|
}
|
|
147
147
|
|
|
@@ -157,7 +157,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
157
157
|
font-weight: var(--a-weight-medium, 500);
|
|
158
158
|
/* Reserve space for the absolutely-positioned controls column so the
|
|
159
159
|
value never collides with the stepper buttons. */
|
|
160
|
-
padding-inline-end: var(--input-controls-width, calc(var(--input-height) * 0.7));
|
|
160
|
+
padding-inline-end: var(--input-controls-width, calc(var(--input-height, var(--input-height-default)) * 0.7));
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
/* Suffix sits flush after the value in number mode (no auto margin so
|
|
@@ -168,7 +168,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
168
168
|
suffix never collides with the stepper buttons. The padding moves
|
|
169
169
|
from `[slot="text"]` to `[slot="suffix"]` when a suffix is present
|
|
170
170
|
— only one element needs the reservation since they're adjacent. */
|
|
171
|
-
margin-inline-end: var(--input-controls-width, calc(var(--input-height) * 0.7));
|
|
171
|
+
margin-inline-end: var(--input-controls-width, calc(var(--input-height, var(--input-height-default)) * 0.7));
|
|
172
172
|
}
|
|
173
173
|
[data-number]:has([slot="suffix"]) [slot="text"] {
|
|
174
174
|
padding-inline-end: 0;
|
|
@@ -184,8 +184,8 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
184
184
|
inset-inline-end: 0;
|
|
185
185
|
display: grid;
|
|
186
186
|
grid-template-rows: 1fr 1fr;
|
|
187
|
-
border-inline-start: 1px solid var(--input-border);
|
|
188
|
-
width: var(--input-controls-width, calc(var(--input-height) * 0.7));
|
|
187
|
+
border-inline-start: 1px solid var(--input-border, var(--input-border-default));
|
|
188
|
+
width: var(--input-controls-width, calc(var(--input-height, var(--input-height-default)) * 0.7));
|
|
189
189
|
user-select: none;
|
|
190
190
|
overflow: hidden;
|
|
191
191
|
}
|
|
@@ -201,7 +201,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
201
201
|
--button-height: 0;
|
|
202
202
|
--button-radius: 0;
|
|
203
203
|
--button-bg: transparent;
|
|
204
|
-
--button-fg: var(--input-affix-fg);
|
|
204
|
+
--button-fg: var(--input-affix-fg, var(--input-affix-fg-default));
|
|
205
205
|
--button-px: 0;
|
|
206
206
|
min-width: 0;
|
|
207
207
|
min-height: 0;
|
|
@@ -217,7 +217,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
217
217
|
any value inherited from its parent button-ui. Tying it to
|
|
218
218
|
--input-height keeps the chevron proportional across sm/md/lg. */
|
|
219
219
|
[data-number] [slot="controls"] icon-ui {
|
|
220
|
-
--icon-size: calc(var(--input-height) * 0.4);
|
|
220
|
+
--icon-size: calc(var(--input-height, var(--input-height-default)) * 0.4);
|
|
221
221
|
}
|
|
222
222
|
[data-number] [slot="controls"] button-ui:hover {
|
|
223
223
|
--button-bg: var(--a-ui-bg-hover);
|
|
@@ -234,11 +234,11 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
234
234
|
inline-start border on the column + the bottom-border on the upper
|
|
235
235
|
button. */
|
|
236
236
|
[data-number] [slot="controls"] button-ui:first-child {
|
|
237
|
-
border-bottom: 1px solid var(--input-border);
|
|
238
|
-
border-start-end-radius: calc(var(--input-radius) - 1px);
|
|
237
|
+
border-bottom: 1px solid var(--input-border, var(--input-border-default));
|
|
238
|
+
border-start-end-radius: calc(var(--input-radius, var(--input-radius-default)) - 1px);
|
|
239
239
|
}
|
|
240
240
|
[data-number] [slot="controls"] button-ui:last-child {
|
|
241
|
-
border-end-end-radius: calc(var(--input-radius) - 1px);
|
|
241
|
+
border-end-end-radius: calc(var(--input-radius, var(--input-radius-default)) - 1px);
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
/* Raw mode strips the chrome — also strip the controls column's
|
|
@@ -265,8 +265,8 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
265
265
|
display: inline-flex;
|
|
266
266
|
align-items: center;
|
|
267
267
|
flex-shrink: 0;
|
|
268
|
-
color: var(--input-affix-fg);
|
|
269
|
-
font-size: var(--input-font-size);
|
|
268
|
+
color: var(--input-affix-fg, var(--input-affix-fg-default));
|
|
269
|
+
font-size: var(--input-font-size, var(--input-font-size-default));
|
|
270
270
|
line-height: 1;
|
|
271
271
|
user-select: none;
|
|
272
272
|
pointer-events: none;
|
|
@@ -278,7 +278,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
278
278
|
|
|
279
279
|
/* §199 (v0.5.7) — Leading + trailing affordance slots inside the field.
|
|
280
280
|
Consumer authors `<button-ui slot="leading|trailing">` as a direct
|
|
281
|
-
child of <input-ui>; class.js#installAffordances moves it into
|
|
281
|
+
child of <input-ui>; input.class.js#installAffordances moves it into
|
|
282
282
|
[slot="field"] at the right insertion point on connected(). CSS
|
|
283
283
|
normalizes the chrome here.
|
|
284
284
|
|
|
@@ -312,10 +312,10 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
312
312
|
instead so the button visually matches the input's intrinsic size. */
|
|
313
313
|
[slot="field"] > [slot="leading"] button-ui,
|
|
314
314
|
[slot="field"] > [slot="trailing"] button-ui {
|
|
315
|
-
--button-height: calc(var(--input-height) - 4px);
|
|
315
|
+
--button-height: calc(var(--input-height, var(--input-height-default)) - 4px);
|
|
316
316
|
--button-bg: transparent;
|
|
317
317
|
--button-border: transparent;
|
|
318
|
-
--button-fg: var(--input-affix-fg);
|
|
318
|
+
--button-fg: var(--input-affix-fg, var(--input-affix-fg-default));
|
|
319
319
|
--button-px: var(--a-space-1);
|
|
320
320
|
}
|
|
321
321
|
|
|
@@ -330,13 +330,13 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
330
330
|
absolutely positioned at inset-inline-end: 0; trailing sits in the
|
|
331
331
|
flex flow.) Same pattern as [slot="suffix"] in number mode. */
|
|
332
332
|
[data-number]:has(> [slot="trailing"]) > [slot="trailing"] {
|
|
333
|
-
margin-inline-end: var(--input-controls-width, calc(var(--input-height) * 0.7));
|
|
333
|
+
margin-inline-end: var(--input-controls-width, calc(var(--input-height, var(--input-height-default)) * 0.7));
|
|
334
334
|
}
|
|
335
335
|
|
|
336
336
|
/* Disabled */
|
|
337
337
|
:scope[disabled] [slot="field"] {
|
|
338
|
-
background: var(--input-bg-disabled);
|
|
339
|
-
color: var(--input-fg-disabled);
|
|
338
|
+
background: var(--input-bg-disabled, var(--input-bg-disabled-default));
|
|
339
|
+
color: var(--input-fg-disabled, var(--input-fg-disabled-default));
|
|
340
340
|
cursor: not-allowed;
|
|
341
341
|
}
|
|
342
342
|
|
|
@@ -353,9 +353,9 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
|
|
|
353
353
|
|
|
354
354
|
/* Ghost variant */
|
|
355
355
|
:scope[variant="ghost"] {
|
|
356
|
-
--input-bg: transparent;
|
|
357
|
-
--input-border: transparent;
|
|
358
|
-
--input-border-hover: transparent;
|
|
356
|
+
--input-bg-default: transparent;
|
|
357
|
+
--input-border-default: transparent;
|
|
358
|
+
--input-border-hover-default: transparent;
|
|
359
359
|
}
|
|
360
360
|
/* :scope[variant="ghost"]:hover moved outside @scope — see Safari
|
|
361
361
|
17.x bug note at top of file. */
|
|
@@ -262,10 +262,11 @@ a2ui:
|
|
|
262
262
|
Number. Never substitute a native <input type="number">.
|
|
263
263
|
- >-
|
|
264
264
|
Inside <chat-composer>, the canonical inner input is
|
|
265
|
-
<chat-input-ui
|
|
266
|
-
|
|
267
|
-
primitive
|
|
268
|
-
|
|
265
|
+
<chat-input-ui> (chat variant subclass — adds the send button +
|
|
266
|
+
model picker + paste-to-attach plumbing). The plain <input-ui>
|
|
267
|
+
primitive ALSO fires a bubbling `submit` event on Enter
|
|
268
|
+
(unconditional, no opt-in attribute); <chat-input-ui> simply
|
|
269
|
+
builds on that semantic.
|
|
269
270
|
anti_patterns: []
|
|
270
271
|
examples:
|
|
271
272
|
- name: quantity-stepper
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
@scope (inspector-ui) {
|
|
2
2
|
:where(:scope) {
|
|
3
|
-
--inspector-pane-font-size: var(--a-ui-tiny);
|
|
4
|
-
--inspector-border: 1px solid var(--a-border-subtle);
|
|
5
|
-
--inspector-radius: var(--a-radius);
|
|
3
|
+
--inspector-pane-font-size-default: var(--a-ui-tiny);
|
|
4
|
+
--inspector-border-default: 1px solid var(--a-border-subtle);
|
|
5
|
+
--inspector-radius-default: 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, var(--inspector-border-default));
|
|
13
|
+
border-radius: var(--inspector-radius, var(--inspector-radius-default));
|
|
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, var(--inspector-pane-font-size-default));
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://adiaui.dev/a2ui/v0_9/components/IntegrationCard.json",
|
|
4
|
+
"title": "IntegrationCard",
|
|
5
|
+
"description": "Single-tile primitive representing one third-party integration (Slack, GitHub, Stripe, …). Shows the provider logo + name + description + status pill + a single primary action button whose label and variant are derived from `status`. Composes into a grid via the SPEC-063 integrations-page composite. One tile = one provider; the button variant is computed from `status`, not a separate prop. Distinct from <option-card-ui> (a single-select radio with no status / async action) and <card-ui> (the generic bordered surface this specializes).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"allOf": [
|
|
8
|
+
{
|
|
9
|
+
"$ref": "common_types.json#/$defs/ComponentCommon"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"$ref": "common_types.json#/$defs/CatalogComponentCommon"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"properties": {
|
|
16
|
+
"description": {
|
|
17
|
+
"description": "One-line description of what the integration does.",
|
|
18
|
+
"type": "string",
|
|
19
|
+
"default": ""
|
|
20
|
+
},
|
|
21
|
+
"component": {
|
|
22
|
+
"const": "IntegrationCard"
|
|
23
|
+
},
|
|
24
|
+
"disabled": {
|
|
25
|
+
"description": "Disables the action button.",
|
|
26
|
+
"type": "boolean",
|
|
27
|
+
"default": false
|
|
28
|
+
},
|
|
29
|
+
"error-message": {
|
|
30
|
+
"description": "When `status=\"error\"`, the message to show below the description. Ignored for other statuses.",
|
|
31
|
+
"$ref": "common_types.json#/$defs/DynamicString"
|
|
32
|
+
},
|
|
33
|
+
"logo": {
|
|
34
|
+
"description": "Logo URL (preferred — renders as <img>) or icon name (renders as <icon-ui>). URLs are sniffed by presence of `/`.",
|
|
35
|
+
"type": "string",
|
|
36
|
+
"default": ""
|
|
37
|
+
},
|
|
38
|
+
"name": {
|
|
39
|
+
"description": "Display name shown as the card title. Required.",
|
|
40
|
+
"type": "string",
|
|
41
|
+
"default": ""
|
|
42
|
+
},
|
|
43
|
+
"provider": {
|
|
44
|
+
"description": "Provider key — `slack`, `github`, etc. — used for analytics + a11y label. Required.",
|
|
45
|
+
"type": "string",
|
|
46
|
+
"default": ""
|
|
47
|
+
},
|
|
48
|
+
"status": {
|
|
49
|
+
"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.",
|
|
50
|
+
"$ref": "common_types.json#/$defs/DynamicString"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"required": [
|
|
54
|
+
"component",
|
|
55
|
+
"provider",
|
|
56
|
+
"name"
|
|
57
|
+
],
|
|
58
|
+
"unevaluatedProperties": false,
|
|
59
|
+
"x-adiaui": {
|
|
60
|
+
"anti_patterns": [
|
|
61
|
+
{
|
|
62
|
+
"fix": "{\"component\": \"IntegrationCard\", \"provider\": \"slack\",\n \"name\": \"Slack\", \"status\": \"available\"}\n",
|
|
63
|
+
"why": "Manually slotting a Button bypasses the card's status-driven\nbutton semantics. The card renders its own button AND the\nslotted one, producing two actions side-by-side.\n",
|
|
64
|
+
"wrong": "{\"component\": \"IntegrationCard\", \"provider\": \"slack\",\n \"children\": [{\"component\": \"Button\", \"label\": \"Connect\"}]}\n"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"fix": "{\"component\": \"IntegrationCard\", \"provider\": \"slack\",\n \"name\": \"Slack\", \"logo\": \"/slack.svg\", \"status\": \"available\"}\n",
|
|
68
|
+
"why": "Re-implements IntegrationCard with primitives. Loses status\nbadge semantics, accessible-name wiring, and the typed\nconnect/configure events.\n",
|
|
69
|
+
"wrong": "{\"component\": \"Card\", \"children\": [\n {\"component\": \"Image\", \"src\": \"/slack.svg\"},\n {\"component\": \"Text\", \"value\": \"Slack\"},\n {\"component\": \"Button\", \"label\": \"Connect\"}]}\n"
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"category": "display",
|
|
73
|
+
"composes": [
|
|
74
|
+
"icon-ui",
|
|
75
|
+
"badge-ui",
|
|
76
|
+
"button-ui"
|
|
77
|
+
],
|
|
78
|
+
"events": {
|
|
79
|
+
"configure": {
|
|
80
|
+
"description": "Fired when the user clicks the action button while `status=\"connected\"`.",
|
|
81
|
+
"detail": {
|
|
82
|
+
"provider": {
|
|
83
|
+
"description": "The provider key for this card.",
|
|
84
|
+
"type": "string"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"connect": {
|
|
89
|
+
"description": "Fired when the user clicks the action button while `status=\"available\"`.",
|
|
90
|
+
"detail": {
|
|
91
|
+
"provider": {
|
|
92
|
+
"description": "The provider key for this card.",
|
|
93
|
+
"type": "string"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"disconnect": {
|
|
98
|
+
"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.",
|
|
99
|
+
"detail": {
|
|
100
|
+
"provider": {
|
|
101
|
+
"description": "The provider key for this card.",
|
|
102
|
+
"type": "string"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"retry": {
|
|
107
|
+
"description": "Fired when the user clicks the action button while `status=\"error\"`.",
|
|
108
|
+
"detail": {
|
|
109
|
+
"provider": {
|
|
110
|
+
"description": "The provider key for this card.",
|
|
111
|
+
"type": "string"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"examples": [
|
|
117
|
+
{
|
|
118
|
+
"description": "Available integration with logo, description, and primary Connect button.",
|
|
119
|
+
"a2ui": "{\n \"id\": \"card-slack\",\n \"component\": \"IntegrationCard\",\n \"provider\": \"slack\",\n \"name\": \"Slack\",\n \"logo\": \"/integrations/slack.svg\",\n \"description\": \"Send AI replies and notifications to channels.\",\n \"status\": \"available\"\n}",
|
|
120
|
+
"name": "available"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"description": "Connected integration with success badge and outline Configure button.",
|
|
124
|
+
"a2ui": "{\n \"id\": \"card-github\",\n \"component\": \"IntegrationCard\",\n \"provider\": \"github\",\n \"name\": \"GitHub\",\n \"logo\": \"/integrations/github.svg\",\n \"description\": \"Sync issues and pull requests.\",\n \"status\": \"connected\"\n}",
|
|
125
|
+
"name": "connected"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"description": "Error integration with danger badge, error message, and Retry button.",
|
|
129
|
+
"a2ui": "{\n \"id\": \"card-stripe\",\n \"component\": \"IntegrationCard\",\n \"provider\": \"stripe\",\n \"name\": \"Stripe\",\n \"description\": \"Charge customers and reconcile invoices.\",\n \"status\": \"error\",\n \"error-message\": \"Token expired — re-authenticate.\"\n}",
|
|
130
|
+
"name": "error"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"description": "Coming-soon integration with no action button.",
|
|
134
|
+
"a2ui": "{\n \"id\": \"card-zapier\",\n \"component\": \"IntegrationCard\",\n \"provider\": \"zapier\",\n \"name\": \"Zapier\",\n \"description\": \"Trigger Zaps from AdiaUI events.\",\n \"status\": \"coming-soon\"\n}",
|
|
135
|
+
"name": "coming-soon"
|
|
136
|
+
}
|
|
137
|
+
],
|
|
138
|
+
"keywords": [
|
|
139
|
+
"integration",
|
|
140
|
+
"connect",
|
|
141
|
+
"provider",
|
|
142
|
+
"slack",
|
|
143
|
+
"github",
|
|
144
|
+
"stripe",
|
|
145
|
+
"oauth",
|
|
146
|
+
"third-party",
|
|
147
|
+
"settings",
|
|
148
|
+
"integrations",
|
|
149
|
+
"card",
|
|
150
|
+
"tile"
|
|
151
|
+
],
|
|
152
|
+
"name": "UIIntegrationCard",
|
|
153
|
+
"related": [
|
|
154
|
+
"card",
|
|
155
|
+
"badge",
|
|
156
|
+
"button",
|
|
157
|
+
"menu"
|
|
158
|
+
],
|
|
159
|
+
"slots": {
|
|
160
|
+
"default": {
|
|
161
|
+
"description": "Optional override for the description. When a non-empty default slot is provided it supersedes the `description` prop."
|
|
162
|
+
},
|
|
163
|
+
"actions": {
|
|
164
|
+
"description": "Optional secondary actions — typically a <menu-ui> overflow carrying `Reauthenticate` / `Disconnect` entries. Collapses when empty."
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
"states": [
|
|
168
|
+
{
|
|
169
|
+
"description": "Default — `[status=\"available\"]`.",
|
|
170
|
+
"name": "idle"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"description": "Ready to connect.",
|
|
174
|
+
"attribute": "status=\"available\"",
|
|
175
|
+
"name": "available"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"description": "Linked — success-tinted border, check badge, outline `Configure` button.",
|
|
179
|
+
"attribute": "status=\"connected\"",
|
|
180
|
+
"name": "connected"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"description": "Connection failed — danger-tinted border, error message visible, outline `Retry` button.",
|
|
184
|
+
"attribute": "status=\"error\"",
|
|
185
|
+
"name": "error"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"description": "Awaiting response — button shows spinner, non-interactive.",
|
|
189
|
+
"attribute": "status=\"pending\"",
|
|
190
|
+
"name": "pending"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"description": "Listed but not yet enabled — opacity reduced, button hidden, \"Coming soon\" badge shown.",
|
|
194
|
+
"attribute": "status=\"coming-soon\"",
|
|
195
|
+
"name": "coming-soon"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"description": "Non-interactive; dimmed.",
|
|
199
|
+
"attribute": "disabled",
|
|
200
|
+
"name": "disabled"
|
|
201
|
+
}
|
|
202
|
+
],
|
|
203
|
+
"status": "stable",
|
|
204
|
+
"synonyms": {
|
|
205
|
+
"connect": [
|
|
206
|
+
"integration",
|
|
207
|
+
"oauth",
|
|
208
|
+
"connection"
|
|
209
|
+
],
|
|
210
|
+
"integration": [
|
|
211
|
+
"integration",
|
|
212
|
+
"connect",
|
|
213
|
+
"provider",
|
|
214
|
+
"third-party"
|
|
215
|
+
],
|
|
216
|
+
"oauth": [
|
|
217
|
+
"integration",
|
|
218
|
+
"connect",
|
|
219
|
+
"auth"
|
|
220
|
+
],
|
|
221
|
+
"provider": [
|
|
222
|
+
"integration",
|
|
223
|
+
"third-party",
|
|
224
|
+
"service"
|
|
225
|
+
],
|
|
226
|
+
"settings": [
|
|
227
|
+
"settings",
|
|
228
|
+
"integration",
|
|
229
|
+
"account"
|
|
230
|
+
]
|
|
231
|
+
},
|
|
232
|
+
"tag": "integration-card-ui",
|
|
233
|
+
"tokens": {
|
|
234
|
+
"--integration-card-bg": {
|
|
235
|
+
"description": "Card background. Defaults to `--a-bg`."
|
|
236
|
+
},
|
|
237
|
+
"--integration-card-border": {
|
|
238
|
+
"description": "Card border color. Defaults to `--a-border`."
|
|
239
|
+
},
|
|
240
|
+
"--integration-card-description-fg": {
|
|
241
|
+
"description": "Description text color."
|
|
242
|
+
},
|
|
243
|
+
"--integration-card-error-fg": {
|
|
244
|
+
"description": "Error-message text color (used when `status=\"error\"`)."
|
|
245
|
+
},
|
|
246
|
+
"--integration-card-gap": {
|
|
247
|
+
"description": "Vertical rhythm between header / body / footer."
|
|
248
|
+
},
|
|
249
|
+
"--integration-card-heading-fg": {
|
|
250
|
+
"description": "Provider name color."
|
|
251
|
+
},
|
|
252
|
+
"--integration-card-logo-size": {
|
|
253
|
+
"description": "Logo square dimension. Defaults to `--a-space-7`."
|
|
254
|
+
},
|
|
255
|
+
"--integration-card-px": {
|
|
256
|
+
"description": "Horizontal padding. Defaults to `--a-space-4`."
|
|
257
|
+
},
|
|
258
|
+
"--integration-card-py": {
|
|
259
|
+
"description": "Vertical padding. Defaults to `--a-space-4`."
|
|
260
|
+
},
|
|
261
|
+
"--integration-card-radius": {
|
|
262
|
+
"description": "Card corner radius. Defaults to `--a-radius-md`."
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
"traits": [],
|
|
266
|
+
"version": 1
|
|
267
|
+
}
|
|
268
|
+
}
|