@adia-ai/web-components 0.8.40 → 0.8.42
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 +71 -3
- package/MIGRATION.md +1229 -16
- package/README.md +25 -30
- package/USAGE.md +30 -4
- package/bin/audit-template-children.mjs +556 -0
- package/components/accordion/accordion-item.a2ui.json +4 -0
- package/components/accordion/accordion-item.yaml +2 -0
- package/components/accordion/accordion.a2ui.json +4 -0
- package/components/accordion/accordion.yaml +2 -0
- package/components/action-list/action-item.a2ui.json +29 -2
- package/components/action-list/action-item.yaml +46 -3
- package/components/action-list/action-list.a2ui.json +6 -1
- package/components/action-list/action-list.class.js +114 -11
- package/components/action-list/action-list.css +43 -3
- package/components/action-list/action-list.d.ts +6 -2
- package/components/action-list/action-list.yaml +5 -0
- package/components/adia-mark/adia-mark.a2ui.json +1 -0
- package/components/adia-wordmark/adia-wordmark.a2ui.json +1 -0
- package/components/agent-artifact/agent-artifact.a2ui.json +1 -0
- package/components/agent-feedback-bar/agent-feedback-bar.a2ui.json +6 -5
- package/components/agent-feedback-bar/agent-feedback-bar.yaml +6 -2
- package/components/agent-questions/agent-questions.a2ui.json +1 -0
- package/components/agent-reasoning/agent-reasoning.a2ui.json +6 -5
- package/components/agent-reasoning/agent-reasoning.yaml +6 -2
- package/components/agent-suggestions/agent-suggestions.a2ui.json +11 -2
- package/components/agent-suggestions/agent-suggestions.class.js +2 -1
- package/components/agent-suggestions/agent-suggestions.d.ts +4 -4
- package/components/agent-suggestions/agent-suggestions.yaml +4 -2
- package/components/agent-trace/agent-trace.a2ui.json +6 -5
- package/components/agent-trace/agent-trace.yaml +6 -2
- package/components/alert/alert.a2ui.json +1 -0
- package/components/alert/alert.css +1 -1
- package/components/anchor-bar/anchor-bar.a2ui.json +1 -0
- package/components/aside/aside.a2ui.json +1 -0
- package/components/avatar/avatar-group.a2ui.json +7 -1
- package/components/avatar/avatar-group.yaml +1 -0
- package/components/avatar/avatar.a2ui.json +12 -11
- package/components/avatar/avatar.d.ts +1 -1
- package/components/avatar/avatar.yaml +4 -4
- package/components/badge/badge.a2ui.json +1 -0
- package/components/block/block.a2ui.json +1 -0
- package/components/blockquote/blockquote.a2ui.json +1 -0
- package/components/breadcrumb/breadcrumb.a2ui.json +1 -0
- package/components/button/button.a2ui.json +1 -3
- package/components/button/button.yaml +1 -3
- package/components/calendar-grid/calendar-grid.a2ui.json +1 -0
- package/components/calendar-grid/calendar-grid.class.js +2 -1
- package/components/calendar-picker/calendar-picker.a2ui.json +143 -24
- package/components/calendar-picker/calendar-picker.class.js +490 -197
- package/components/calendar-picker/calendar-picker.css +120 -171
- package/components/calendar-picker/calendar-picker.yaml +225 -47
- package/components/canvas/canvas.a2ui.json +6 -5
- package/components/canvas/canvas.d.ts +37 -0
- package/components/canvas/canvas.js +72 -3
- package/components/canvas/canvas.yaml +6 -2
- package/components/card/card.a2ui.json +25 -2
- package/components/card/card.class.js +3 -0
- package/components/card/card.css +31 -1
- package/components/card/card.d.ts +2 -2
- package/components/card/card.examples.md +3 -3
- package/components/card/card.yaml +28 -4
- package/components/chart/chart.a2ui.json +27 -7
- package/components/chart/chart.class.js +64 -22
- package/components/chart/chart.css +6 -4
- package/components/chart/chart.d.ts +10 -4
- package/components/chart/chart.yaml +40 -6
- package/components/chart-legend/chart-legend.a2ui.json +7 -1
- package/components/chart-legend/chart-legend.class.js +59 -6
- package/components/chart-legend/chart-legend.css +5 -2
- package/components/chart-legend/chart-legend.d.ts +3 -1
- package/components/chart-legend/chart-legend.yaml +15 -1
- package/components/chat-thread/chat-input.a2ui.json +1 -0
- package/components/chat-thread/chat-thread.a2ui.json +10 -9
- package/components/chat-thread/chat-thread.yaml +13 -20
- package/components/check/check.a2ui.json +10 -9
- package/components/check/check.yaml +4 -4
- package/components/code/code.a2ui.json +1 -0
- package/components/col/col.a2ui.json +1 -0
- package/components/color-area/color-area.a2ui.json +148 -0
- package/components/color-area/color-area.class.js +657 -0
- package/components/color-area/color-area.css +188 -0
- package/components/color-area/color-area.d.ts +66 -0
- package/components/color-area/color-area.examples.md +19 -0
- package/components/color-area/color-area.js +17 -0
- package/components/color-area/color-area.yaml +183 -0
- package/components/color-input/color-input.a2ui.json +6 -5
- package/components/color-input/color-input.class.js +9 -6
- package/components/color-input/color-input.css +1 -1
- package/components/color-input/color-input.js +2 -2
- package/components/color-input/color-input.yaml +14 -12
- package/components/color-picker/color-picker.a2ui.json +16 -12
- package/components/color-picker/color-picker.class.js +24 -633
- package/components/color-picker/color-picker.css +14 -182
- package/components/color-picker/color-picker.yaml +41 -41
- package/components/combobox/combobox.a2ui.json +3 -2
- package/components/combobox/combobox.yaml +2 -2
- package/components/command/command.a2ui.json +12 -10
- package/components/command/command.class.js +3 -2
- package/components/command/command.yaml +17 -4
- package/components/context-menu/context-menu.a2ui.json +1 -0
- package/components/date-range-picker/date-range-picker.a2ui.json +2 -1
- package/components/date-range-picker/date-range-picker.yaml +1 -1
- package/components/datetime-picker/datetime-picker.a2ui.json +15 -108
- package/components/datetime-picker/datetime-picker.class.js +37 -690
- package/components/datetime-picker/datetime-picker.css +11 -183
- package/components/datetime-picker/datetime-picker.d.ts +4 -5
- package/components/datetime-picker/datetime-picker.yaml +44 -135
- package/components/demo-toggle/demo-toggle.a2ui.json +1 -0
- package/components/demo-toggle/demo-toggle.css +1 -1
- package/components/description-list/description-list.a2ui.json +2 -1
- package/components/description-list/description-list.css +1 -1
- package/components/description-list/description-list.d.ts +1 -1
- package/components/description-list/description-list.yaml +1 -1
- package/components/display-field/display-field.a2ui.json +1 -0
- package/components/divider/divider.a2ui.json +1 -0
- package/components/drawer/drawer.a2ui.json +1 -3
- package/components/drawer/drawer.css +1 -1
- package/components/drawer/drawer.yaml +0 -2
- package/components/drilldown/drilldown.a2ui.json +22 -20
- package/components/drilldown/drilldown.class.js +4 -3
- package/components/drilldown/drilldown.css +6 -6
- package/components/drilldown/drilldown.yaml +40 -9
- package/components/embed/embed.a2ui.json +6 -5
- package/components/embed/embed.yaml +2 -2
- package/components/empty-state/empty-state.a2ui.json +1 -0
- package/components/feed/feed-item.a2ui.json +25 -5
- package/components/feed/feed-item.yaml +28 -7
- package/components/feed/feed.a2ui.json +9 -2
- package/components/feed/feed.class.js +19 -12
- package/components/feed/feed.css +8 -8
- package/components/feed/feed.yaml +14 -1
- package/components/field/field.a2ui.json +2 -1
- package/components/field/field.class.js +4 -1
- package/components/field/field.examples.md +1 -1
- package/components/field/field.yaml +1 -1
- package/components/fields/fields.a2ui.json +1 -0
- package/components/fields/fields.examples.md +1 -1
- package/components/footer/footer.a2ui.json +1 -0
- package/components/frame/frame.a2ui.json +1 -0
- package/components/grid/grid.a2ui.json +1 -0
- package/components/header/header.a2ui.json +3 -2
- package/components/header/header.yaml +3 -3
- package/components/heatmap/heatmap.a2ui.json +2 -1
- package/components/heatmap/heatmap.class.js +1 -1
- package/components/heatmap/heatmap.css +4 -4
- package/components/heatmap/heatmap.yaml +1 -1
- package/components/icon/icon.a2ui.json +1 -0
- package/components/image/image.a2ui.json +28 -14
- package/components/image/image.class.js +38 -23
- package/components/image/image.css +18 -8
- package/components/image/image.d.ts +2 -2
- package/components/image/image.examples.md +3 -3
- package/components/image/image.yaml +23 -7
- package/components/index.js +1 -0
- package/components/inline-edit/inline-edit.a2ui.json +1 -0
- package/components/inline-message/inline-message.a2ui.json +3 -1
- package/components/inline-message/inline-message.class.js +3 -1
- package/components/inline-message/inline-message.d.ts +2 -2
- package/components/inline-message/inline-message.yaml +2 -1
- package/components/input/input.a2ui.json +66 -16
- package/components/input/input.class.js +64 -7
- package/components/input/input.css +14 -14
- package/components/input/input.d.ts +9 -4
- package/components/input/input.yaml +83 -10
- package/components/inspector/inspector.a2ui.json +1 -0
- package/components/integration-card/integration-card.a2ui.json +1 -0
- package/components/integration-card/integration-card.examples.md +2 -1
- package/components/kbd/kbd.a2ui.json +1 -0
- package/components/link/link.a2ui.json +2 -1
- package/components/link/link.yaml +1 -1
- package/components/list/list-item.a2ui.json +9 -0
- package/components/list/list-item.yaml +12 -0
- package/components/list/list.a2ui.json +9 -3
- package/components/list/list.class.js +14 -1
- package/components/list/list.css +12 -1
- package/components/list/list.d.ts +7 -5
- package/components/list/list.yaml +16 -6
- package/components/list-window/list-window.a2ui.json +1 -0
- package/components/list-window/list-window.class.js +2 -1
- package/components/loading-overlay/loading-overlay.a2ui.json +1 -0
- package/components/mark/mark.a2ui.json +2 -1
- package/components/mark/mark.yaml +1 -1
- package/components/menu/menu-divider.a2ui.json +1 -0
- package/components/menu/menu-item.a2ui.json +11 -4
- package/components/menu/menu-item.yaml +30 -3
- package/components/menu/menu-label.a2ui.json +1 -0
- package/components/menu/menu.a2ui.json +3 -2
- package/components/menu/menu.class.js +36 -8
- package/components/menu/menu.d.ts +5 -3
- package/components/menu/menu.yaml +3 -3
- package/components/modal/modal.a2ui.json +1 -0
- package/components/nav/nav.a2ui.json +1 -0
- package/components/nav/nav.class.js +14 -3
- package/components/nav-group/nav-group.a2ui.json +1 -0
- package/components/nav-group/nav-group.class.js +3 -1
- package/components/nav-item/nav-item.a2ui.json +1 -0
- package/components/noodles/noodles.a2ui.json +1 -0
- package/components/noodles/noodles.class.js +5 -1
- package/components/number-format/number-format.a2ui.json +1 -0
- package/components/option-card/option-card.a2ui.json +1 -0
- package/components/otp-input/otp-input.a2ui.json +3 -2
- package/components/otp-input/otp-input.yaml +9 -2
- package/components/page/page.a2ui.json +13 -0
- package/components/page/page.d.ts +1 -1
- package/components/page/page.yaml +1 -0
- package/components/pagination/pagination.a2ui.json +1 -0
- package/components/pagination/pagination.class.js +3 -2
- package/components/pane/pane.a2ui.json +17 -1
- package/components/pane/pane.class.js +35 -6
- package/components/pane/pane.css +17 -12
- package/components/pane/pane.d.ts +10 -7
- package/components/pane/pane.yaml +18 -1
- package/components/password-strength/password-strength.a2ui.json +1 -0
- package/components/pipeline-status/pipeline-status.a2ui.json +1 -0
- package/components/popover/popover.a2ui.json +7 -6
- package/components/popover/popover.class.js +2 -2
- package/components/popover/popover.d.ts +2 -2
- package/components/popover/popover.yaml +4 -4
- package/components/preview/preview.a2ui.json +1 -0
- package/components/preview/preview.class.js +5 -1
- package/components/progress/progress.a2ui.json +47 -24
- package/components/progress/progress.class.js +66 -11
- package/components/progress/progress.css +44 -26
- package/components/progress/progress.d.ts +7 -5
- package/components/progress/progress.examples.md +2 -2
- package/components/progress/progress.yaml +235 -53
- package/components/progress-row/progress-row.a2ui.json +16 -12
- package/components/progress-row/progress-row.d.ts +2 -2
- package/components/progress-row/progress-row.examples.md +2 -14
- package/components/progress-row/progress-row.yaml +28 -36
- package/components/qr-code/qr-code.a2ui.json +3 -2
- package/components/qr-code/qr-code.class.js +4 -4
- package/components/qr-code/qr-code.css +1 -1
- package/components/qr-code/qr-code.yaml +5 -3
- package/components/radio/radio.a2ui.json +8 -7
- package/components/radio/radio.class.js +8 -0
- package/components/radio/radio.yaml +3 -3
- package/components/radio-group/radio-group.a2ui.json +5 -3
- package/components/radio-group/radio-group.class.js +11 -0
- package/components/radio-group/radio-group.yaml +7 -1
- package/components/range/range.a2ui.json +6 -0
- package/components/range/range.class.js +2 -2
- package/components/range/range.css +2 -2
- package/components/range/range.yaml +3 -0
- package/components/rating/rating.a2ui.json +1 -0
- package/components/relative-time/relative-time.a2ui.json +1 -0
- package/components/richtext/richtext.a2ui.json +2 -1
- package/components/richtext/richtext.yaml +1 -1
- package/components/row/row.a2ui.json +1 -0
- package/components/search/search.a2ui.json +1 -0
- package/components/search/search.class.js +4 -1
- package/components/section/section.a2ui.json +1 -0
- package/components/segment/segment.a2ui.json +21 -10
- package/components/segment/segment.css +15 -0
- package/components/segment/segment.d.ts +2 -1
- package/components/segment/segment.yaml +20 -13
- package/components/segmented/segmented.a2ui.json +36 -7
- package/components/segmented/segmented.class.js +113 -22
- package/components/segmented/segmented.css +3 -0
- package/components/segmented/segmented.d.ts +3 -1
- package/components/segmented/segmented.yaml +80 -8
- package/components/select/select.a2ui.json +18 -13
- package/components/select/select.class.js +61 -37
- package/components/select/select.css +15 -13
- package/components/select/select.yaml +18 -7
- package/components/skeleton/skeleton.a2ui.json +8 -7
- package/components/skeleton/skeleton.class.js +8 -7
- package/components/skeleton/skeleton.css +21 -6
- package/components/skeleton/skeleton.d.ts +2 -2
- package/components/skeleton/skeleton.examples.md +2 -2
- package/components/skeleton/skeleton.yaml +3 -2
- package/components/skip-nav/skip-nav.a2ui.json +1 -0
- package/components/slider/slider.a2ui.json +6 -0
- package/components/slider/slider.class.js +20 -3
- package/components/slider/slider.css +2 -2
- package/components/slider/slider.yaml +3 -0
- package/components/spinner/spinner.a2ui.json +1 -0
- package/components/stack/stack.a2ui.json +1 -0
- package/components/stat/stat.a2ui.json +1 -0
- package/components/stat/stat.js +2 -2
- package/components/step-progress/step-progress.a2ui.json +1 -0
- package/components/step-progress/step-progress.yaml +1 -1
- package/components/stepper/stepper-item.a2ui.json +7 -3
- package/components/stepper/stepper-item.yaml +15 -5
- package/components/stepper/stepper.a2ui.json +5 -1
- package/components/stepper/stepper.class.js +31 -16
- package/components/stepper/stepper.d.ts +1 -1
- package/components/stepper/stepper.yaml +4 -2
- package/components/stream/stream.a2ui.json +1 -0
- package/components/swatch/swatch.a2ui.json +1 -0
- package/components/swatch/swatch.yaml +1 -1
- package/components/swiper/swiper.a2ui.json +1 -0
- package/components/swiper/swiper.class.js +5 -1
- package/components/switch/switch.a2ui.json +12 -11
- package/components/switch/switch.css +1 -1
- package/components/switch/switch.yaml +6 -6
- package/components/table/table.a2ui.json +1 -0
- package/components/table/table.class.js +14 -12
- package/components/table/table.css +11 -9
- package/components/table-toolbar/table-toolbar.a2ui.json +1 -0
- package/components/table-toolbar/table-toolbar.class.js +53 -22
- package/components/table-toolbar/table-toolbar.css +1 -1
- package/components/tabs/tab.a2ui.json +9 -0
- package/components/tabs/tab.js +4 -0
- package/components/tabs/tab.yaml +15 -0
- package/components/tabs/tabs.a2ui.json +9 -4
- package/components/tabs/tabs.class.js +13 -1
- package/components/tabs/tabs.css +8 -0
- package/components/tabs/tabs.d.ts +2 -0
- package/components/tabs/tabs.yaml +9 -2
- package/components/tag/tag.a2ui.json +1 -0
- package/components/tags-input/tags-input.a2ui.json +22 -17
- package/components/tags-input/tags-input.class.js +13 -11
- package/components/tags-input/tags-input.css +10 -6
- package/components/tags-input/tags-input.d.ts +16 -7
- package/components/tags-input/tags-input.examples.md +2 -2
- package/components/tags-input/tags-input.yaml +25 -8
- package/components/text/text.a2ui.json +6 -5
- package/components/text/text.css +10 -5
- package/components/text/text.d.ts +2 -2
- package/components/text/text.yaml +9 -4
- package/components/textarea/textarea.a2ui.json +2 -1
- package/components/textarea/textarea.yaml +1 -1
- package/components/theme-provider/theme-provider.a2ui.json +2 -1
- package/components/theme-provider/theme-provider.d.ts +5 -3
- package/components/theme-provider/theme-provider.yaml +5 -3
- package/components/time-picker/time-picker.a2ui.json +1 -0
- package/components/time-picker/time-picker.class.js +4 -2
- package/components/timeline/timeline-item.a2ui.json +26 -3
- package/components/timeline/timeline-item.yaml +22 -7
- package/components/timeline/timeline.a2ui.json +4 -0
- package/components/timeline/timeline.class.js +29 -18
- package/components/timeline/timeline.d.ts +3 -3
- package/components/timeline/timeline.yaml +2 -0
- package/components/toast/toast.a2ui.json +10 -3
- package/components/toast/toast.yaml +20 -13
- package/components/toc/toc.a2ui.json +1 -0
- package/components/toggle-group/toggle-group.a2ui.json +7 -3
- package/components/toggle-group/toggle-group.class.js +40 -1
- package/components/toggle-group/toggle-group.css +6 -1
- package/components/toggle-group/toggle-group.d.ts +2 -2
- package/components/toggle-group/toggle-group.yaml +21 -12
- package/components/toggle-group/toggle-option.a2ui.json +7 -3
- package/components/toggle-group/toggle-option.yaml +13 -7
- package/components/toggle-scheme/toggle-scheme.a2ui.json +2 -1
- package/components/toggle-scheme/toggle-scheme.yaml +1 -1
- package/components/toolbar/toolbar-group.a2ui.json +1 -0
- package/components/toolbar/toolbar.a2ui.json +1 -0
- package/components/toolbar/toolbar.class.js +3 -0
- package/components/tooltip/tooltip.a2ui.json +1 -0
- package/components/tour/tour-step.a2ui.json +4 -0
- package/components/tour/tour-step.yaml +2 -0
- package/components/tour/tour.a2ui.json +4 -0
- package/components/tour/tour.yaml +2 -0
- package/components/tree/tree-item.a2ui.json +5 -0
- package/components/tree/tree-item.yaml +3 -0
- package/components/tree/tree.a2ui.json +4 -0
- package/components/tree/tree.class.js +2 -1
- package/components/tree/tree.yaml +2 -0
- package/components/upload/upload.a2ui.json +8 -1
- package/components/upload/upload.class.js +35 -5
- package/components/upload/upload.css +28 -0
- package/components/upload/upload.d.ts +16 -0
- package/components/upload/upload.yaml +27 -7
- package/components/visually-hidden/visually-hidden.a2ui.json +1 -0
- package/core/dom.d.ts +11 -0
- package/core/dom.js +34 -0
- package/core/form.js +7 -0
- package/core/icons.js +5 -0
- package/core/index.d.ts +1 -0
- package/core/index.js +1 -0
- package/core/responsive.js +16 -4
- package/core/template.js +2 -1
- package/custom-elements.json +710 -587
- package/dist/host.min.css +1 -1
- package/dist/host.sheet.js +1 -1
- package/dist/theme-provider.min.js +5 -5
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +92 -105
- package/dist/web-components.sheet.js +1 -1
- package/index.d.ts +12 -1
- package/package.json +4 -2
- package/patterns/admin-shell/admin-shell.examples.html +2 -2
- package/patterns/conversion-funnel/conversion-funnel.examples.html +15 -15
- package/patterns/form-system/form-system.examples.html +1 -1
- package/patterns/inline-dialog/inline-dialog.examples.html +2 -2
- package/patterns/inline-dialog/inline-dialog.html +4 -0
- package/patterns/timezone-selector/timezone-selector.examples.html +1 -1
- package/patterns/timezone-selector/timezone-selector.html +2 -2
- package/styles/api/text.css +7 -0
- package/styles/components.css +1 -0
- package/traits/_catalog.json +129 -41
- package/traits/anchor-positioning/anchor-positioning.js +1 -0
- package/traits/announcer/announcer.js +1 -0
- package/traits/arrow-grid-nav/arrow-grid-nav.js +1 -0
- package/traits/attention-pulse/attention-pulse.js +1 -0
- package/traits/count-up/count-up.js +1 -0
- package/traits/define.js +78 -0
- package/traits/focus-restore/focus-restore.js +2 -1
- package/traits/haptic-feedback/haptic-feedback.js +1 -0
- package/traits/input-mask/input-mask.js +1 -0
- package/traits/intersection-observer/intersection-observer.js +1 -0
- package/traits/layout-animation/layout-animation.js +1 -0
- package/traits/noise-texture/noise-texture.js +1 -0
- package/traits/resize-observer/resize-observer.js +1 -0
- package/traits/scroll-progress/scroll-progress.js +1 -0
- package/traits/snap-to-grid/snap-to-grid.js +1 -0
- package/traits/sound-feedback/sound-feedback.js +1 -0
- package/traits/spring-animate/spring-animate.js +1 -0
- package/traits/validation/validation.js +1 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://adiaui.dev/a2ui/v0_9/components/ActionItem.json",
|
|
4
4
|
"title": "ActionItem",
|
|
5
|
-
"description": "Child of <action-list-ui>. One actionable row — icon + label, forwards activation to the parent action-list.",
|
|
5
|
+
"description": "Child of <action-list-ui>. One actionable row — icon + label + optional\ndescription, forwards activation to the parent action-list. Row contract\nconverges on <menu-item-ui>: icon/text/description/value/variant/disabled\nprops and icon/text/subtitle/trailing slot overrides (#1363 C5).\n(`subtitle` is a deprecated alias for `description` — ADR-0063, gh#1571.)",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"allOf": [
|
|
8
8
|
{
|
|
@@ -13,6 +13,11 @@
|
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"properties": {
|
|
16
|
+
"description": {
|
|
17
|
+
"description": "Optional secondary description line rendered under the label. Canonical spelling (ADR-0063, gh#1571) replacing `subtitle` — converges action-item onto the same spelling <menu-item-ui> adopted under gh#1563.",
|
|
18
|
+
"type": "string",
|
|
19
|
+
"default": ""
|
|
20
|
+
},
|
|
16
21
|
"component": {
|
|
17
22
|
"const": "ActionItem"
|
|
18
23
|
},
|
|
@@ -25,6 +30,11 @@
|
|
|
25
30
|
"description": "Leading icon name (Phosphor).",
|
|
26
31
|
"type": "string"
|
|
27
32
|
},
|
|
33
|
+
"subtitle": {
|
|
34
|
+
"description": "DEPRECATED (ADR-0063, gh#1571) — use `description` instead. Same type/default/rendered position; kept working as a dual-read compat shim (one-time console.warn when it's the name that resolves). Removed in 0.9.0. (The `subtitle` SLOT below is a separate surface, deliberately left unrenamed in this pass — see its own description.)",
|
|
35
|
+
"type": "string",
|
|
36
|
+
"default": ""
|
|
37
|
+
},
|
|
28
38
|
"text": {
|
|
29
39
|
"description": "Action label.",
|
|
30
40
|
"type": "string"
|
|
@@ -34,8 +44,12 @@
|
|
|
34
44
|
"type": "string"
|
|
35
45
|
},
|
|
36
46
|
"variant": {
|
|
37
|
-
"description": "Visual variant (default |
|
|
47
|
+
"description": "Visual variant (default | danger).",
|
|
38
48
|
"type": "string",
|
|
49
|
+
"enum": [
|
|
50
|
+
"default",
|
|
51
|
+
"danger"
|
|
52
|
+
],
|
|
39
53
|
"default": "default"
|
|
40
54
|
}
|
|
41
55
|
},
|
|
@@ -44,6 +58,9 @@
|
|
|
44
58
|
],
|
|
45
59
|
"unevaluatedProperties": false,
|
|
46
60
|
"x-adiaui": {
|
|
61
|
+
"allowedParents": [
|
|
62
|
+
"ActionList"
|
|
63
|
+
],
|
|
47
64
|
"anti_patterns": [],
|
|
48
65
|
"category": "navigation",
|
|
49
66
|
"composes": [],
|
|
@@ -57,6 +74,7 @@
|
|
|
57
74
|
"action-list-row"
|
|
58
75
|
],
|
|
59
76
|
"name": "UIActionItem",
|
|
77
|
+
"parts": {},
|
|
60
78
|
"related": [
|
|
61
79
|
"ActionList",
|
|
62
80
|
"MenuItem",
|
|
@@ -65,6 +83,15 @@
|
|
|
65
83
|
"slots": {
|
|
66
84
|
"icon": {
|
|
67
85
|
"description": "Override the [icon] glyph with a custom slotted element (custom icon-ui, image, avatar). Mutually exclusive with the [icon] attribute — slot child wins."
|
|
86
|
+
},
|
|
87
|
+
"subtitle": {
|
|
88
|
+
"description": "Custom secondary-line content override; falls through to the [description] prop (or its deprecated [subtitle] alias — ADR-0063, gh#1571) if not slotted. The slot's own name is unchanged by that rename — this is a distinct, deliberately-unrenamed surface."
|
|
89
|
+
},
|
|
90
|
+
"text": {
|
|
91
|
+
"description": "Custom label content; falls through to [text] prop if not slotted."
|
|
92
|
+
},
|
|
93
|
+
"trailing": {
|
|
94
|
+
"description": "Trailing element pinned to the far edge (shortcut hint, badge, caret). Supersedes the unnamed default slot this row previously used for trailing content — see MIGRATION GUIDE."
|
|
68
95
|
}
|
|
69
96
|
},
|
|
70
97
|
"states": [],
|
|
@@ -16,7 +16,11 @@ component: ActionItem
|
|
|
16
16
|
category: navigation
|
|
17
17
|
version: 1
|
|
18
18
|
description: |-
|
|
19
|
-
Child of <action-list-ui>. One actionable row — icon + label
|
|
19
|
+
Child of <action-list-ui>. One actionable row — icon + label + optional
|
|
20
|
+
description, forwards activation to the parent action-list. Row contract
|
|
21
|
+
converges on <menu-item-ui>: icon/text/description/value/variant/disabled
|
|
22
|
+
props and icon/text/subtitle/trailing slot overrides (#1363 C5).
|
|
23
|
+
(`subtitle` is a deprecated alias for `description` — ADR-0063, gh#1571.)
|
|
20
24
|
|
|
21
25
|
props:
|
|
22
26
|
icon:
|
|
@@ -25,13 +29,31 @@ props:
|
|
|
25
29
|
text:
|
|
26
30
|
description: Action label.
|
|
27
31
|
type: string
|
|
32
|
+
subtitle:
|
|
33
|
+
description: >-
|
|
34
|
+
DEPRECATED (ADR-0063, gh#1571) — use `description` instead. Same
|
|
35
|
+
type/default/rendered position; kept working as a dual-read compat
|
|
36
|
+
shim (one-time console.warn when it's the name that resolves).
|
|
37
|
+
Removed in 0.9.0. (The `subtitle` SLOT below is a separate surface,
|
|
38
|
+
deliberately left unrenamed in this pass — see its own description.)
|
|
39
|
+
type: string
|
|
40
|
+
default: ''
|
|
41
|
+
description:
|
|
42
|
+
description: >-
|
|
43
|
+
Optional secondary description line rendered under the label.
|
|
44
|
+
Canonical spelling (ADR-0063, gh#1571) replacing `subtitle` —
|
|
45
|
+
converges action-item onto the same spelling <menu-item-ui> adopted
|
|
46
|
+
under gh#1563.
|
|
47
|
+
type: string
|
|
48
|
+
default: ''
|
|
28
49
|
value:
|
|
29
50
|
description: Identifier passed to the action-list change/activate handlers.
|
|
30
51
|
type: string
|
|
31
52
|
variant:
|
|
32
|
-
description: Visual variant (default |
|
|
53
|
+
description: Visual variant (default | danger).
|
|
33
54
|
type: string
|
|
34
55
|
default: 'default'
|
|
56
|
+
enum: [default, danger]
|
|
35
57
|
disabled:
|
|
36
58
|
description: Disables click + keyboard activation; aria-disabled is set.
|
|
37
59
|
type: boolean
|
|
@@ -43,6 +65,19 @@ slots:
|
|
|
43
65
|
Override the [icon] glyph with a custom slotted element (custom
|
|
44
66
|
icon-ui, image, avatar). Mutually exclusive with the [icon]
|
|
45
67
|
attribute — slot child wins.
|
|
68
|
+
text:
|
|
69
|
+
description: Custom label content; falls through to [text] prop if not slotted.
|
|
70
|
+
subtitle:
|
|
71
|
+
description: >-
|
|
72
|
+
Custom secondary-line content override; falls through to the
|
|
73
|
+
[description] prop (or its deprecated [subtitle] alias — ADR-0063,
|
|
74
|
+
gh#1571) if not slotted. The slot's own name is unchanged by that
|
|
75
|
+
rename — this is a distinct, deliberately-unrenamed surface.
|
|
76
|
+
trailing:
|
|
77
|
+
description: >-
|
|
78
|
+
Trailing element pinned to the far edge (shortcut hint, badge, caret).
|
|
79
|
+
Supersedes the unnamed default slot this row previously used for
|
|
80
|
+
trailing content — see MIGRATION GUIDE.
|
|
46
81
|
|
|
47
82
|
keywords:
|
|
48
83
|
- action-item
|
|
@@ -60,10 +95,18 @@ related:
|
|
|
60
95
|
- Button
|
|
61
96
|
|
|
62
97
|
a2ui:
|
|
98
|
+
allowedParents:
|
|
99
|
+
- ActionList
|
|
63
100
|
rules:
|
|
64
|
-
- rule: 'Child of <action-list-ui> — one inline-action row with icon + label + optional
|
|
101
|
+
- rule: 'Child of <action-list-ui> — one inline-action row with icon + label + optional description + optional trailing shortcut/badge.'
|
|
65
102
|
reason: 'Action-list cluster contract.'
|
|
66
103
|
- rule: 'Different from <menu-item-ui>: action-items live inline in content surfaces; menu-items live inside <menu-ui> popovers.'
|
|
67
104
|
reason: 'Context boundary.'
|
|
68
105
|
- rule: 'For navigation entries (route-changing) use <nav-item-ui> instead.'
|
|
69
106
|
reason: 'Different intent — actions vs navigation.'
|
|
107
|
+
- rule: 'Use [variant="danger"] exclusively for destructive/irreversible actions (Delete, Remove). Pair danger items with an explicit confirm flow when the action cannot be undone.'
|
|
108
|
+
reason: 'Converged with <menu-item-ui>''s danger-variant guidance (#1363 C5).'
|
|
109
|
+
- rule: 'Prefer [icon]/[text]/[description] props over slotted markup; use slot="icon"/"text"/"subtitle"/"trailing" only for custom markup (e.g. a slotted <kbd> shortcut hint).'
|
|
110
|
+
reason: 'Row-contract convergence with <menu-item-ui> (#1363 C5).'
|
|
111
|
+
- rule: 'NOTE (ADR-0063, gh#1571): [subtitle] is now a deprecated alias for [description] — kept as a dual-read compat shim (new-name precedence, one-time console.warn), removed at the 0.9.0 cut.'
|
|
112
|
+
reason: 'Convergence with <menu-item-ui>''s own subtitle -> description rename (gh#1563).'
|
|
@@ -22,6 +22,9 @@
|
|
|
22
22
|
],
|
|
23
23
|
"unevaluatedProperties": false,
|
|
24
24
|
"x-adiaui": {
|
|
25
|
+
"allowedChildren": [
|
|
26
|
+
"ActionItem"
|
|
27
|
+
],
|
|
25
28
|
"anti_patterns": [],
|
|
26
29
|
"category": "navigation",
|
|
27
30
|
"composes": [
|
|
@@ -60,10 +63,12 @@
|
|
|
60
63
|
"list"
|
|
61
64
|
],
|
|
62
65
|
"name": "UIActionList",
|
|
66
|
+
"parts": {},
|
|
63
67
|
"related": [
|
|
64
68
|
"ActionItem",
|
|
65
69
|
"Menu",
|
|
66
|
-
"Button"
|
|
70
|
+
"Button",
|
|
71
|
+
"List"
|
|
67
72
|
],
|
|
68
73
|
"slots": {
|
|
69
74
|
"default": {
|
|
@@ -94,6 +94,14 @@ export class UIActionItem extends UIElement {
|
|
|
94
94
|
static properties = {
|
|
95
95
|
icon: { type: String, default: '', reflect: true },
|
|
96
96
|
text: { type: String, default: '', reflect: true },
|
|
97
|
+
// ADR-0063 (gh#1571) — `subtitle` is DEPRECATED (action-item was the
|
|
98
|
+
// corpus's remaining `subtitle` outlier once <menu-item-ui> converged
|
|
99
|
+
// under gh#1563); `description` is canonical. `subtitle` stays declared
|
|
100
|
+
// (dual-read compat, additive). The `subtitle` SLOT (a separate
|
|
101
|
+
// surface — see action-item.yaml) is deliberately unchanged; only the
|
|
102
|
+
// PROP renames.
|
|
103
|
+
subtitle: { type: String, default: '', reflect: true },
|
|
104
|
+
description: { type: String, default: '', reflect: true },
|
|
97
105
|
value: { type: String, default: '', reflect: true },
|
|
98
106
|
variant: { type: String, default: 'default', reflect: true },
|
|
99
107
|
disabled: { type: Boolean, default: false, reflect: true },
|
|
@@ -101,7 +109,71 @@ export class UIActionItem extends UIElement {
|
|
|
101
109
|
|
|
102
110
|
static template = () => null;
|
|
103
111
|
|
|
112
|
+
// ADR-0063 (gh#1571) one-shot-per-class deprecation warn for [subtitle].
|
|
113
|
+
static #warnedSubtitle = false;
|
|
114
|
+
|
|
115
|
+
// Guards + tracks the [subtitle] -> [description] compat mirror (below).
|
|
116
|
+
// action-item-ui (unlike menu-item-ui) has pre-existing tests that set
|
|
117
|
+
// [subtitle] AFTER mount and expect the rendered row to keep tracking it
|
|
118
|
+
// (gh#1374) — a resolve-once-at-connect shim (menu-item-ui's own shape)
|
|
119
|
+
// would silently stop mirroring once `description` picks up its first
|
|
120
|
+
// reflected value. `#mirroring` suppresses the authored-flag while WE
|
|
121
|
+
// write `this.description` ourselves; `#descriptionAuthored` latches
|
|
122
|
+
// true the moment a REAL (non-mirrored) `description` attribute shows
|
|
123
|
+
// up, so [description] wins permanently from that point on, even
|
|
124
|
+
// across later [subtitle] attribute churn.
|
|
125
|
+
#mirroring = false;
|
|
126
|
+
#descriptionAuthored = false;
|
|
127
|
+
|
|
128
|
+
attributeChangedCallback(name, oldVal, val) {
|
|
129
|
+
if (name === 'description' && !this.#mirroring) this.#descriptionAuthored = true;
|
|
130
|
+
super.attributeChangedCallback(name, oldVal, val);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// ADR-0063 (gh#1571) compat shim. New-name precedence: once [description]
|
|
134
|
+
// has ever been authored directly, it wins outright and [subtitle] is
|
|
135
|
+
// ignored from then on. Until then, [subtitle] mirrors into [description]
|
|
136
|
+
// on every resolve (initial connect AND every subsequent render), so a
|
|
137
|
+
// post-mount [subtitle] update keeps propagating exactly like it did
|
|
138
|
+
// before this shim existed.
|
|
139
|
+
#resolveSubtitleCompat() {
|
|
140
|
+
if (this.#descriptionAuthored) return;
|
|
141
|
+
const mirrored = this.hasAttribute('subtitle') ? this.subtitle : '';
|
|
142
|
+
if (this.description === mirrored) return;
|
|
143
|
+
this.#mirroring = true;
|
|
144
|
+
this.description = mirrored;
|
|
145
|
+
this.#mirroring = false;
|
|
146
|
+
if (mirrored && !UIActionItem.#warnedSubtitle) {
|
|
147
|
+
UIActionItem.#warnedSubtitle = true;
|
|
148
|
+
// eslint-disable-next-line no-console
|
|
149
|
+
console.warn(
|
|
150
|
+
'[AdiaUI] <action-item-ui [subtitle]> is deprecated — use ' +
|
|
151
|
+
'[description] instead (ADR-0063, gh#1571). Kept working as-is; ' +
|
|
152
|
+
'no behavior change.',
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Set when connected()/render() stamped this fallback child from a prop —
|
|
158
|
+
// never touch a consumer-authored slot="icon"/"text"/"subtitle" child
|
|
159
|
+
// (ADR-0010, slot content is source of truth). Mirrors menu-item-ui's
|
|
160
|
+
// UIMenuItem stamp-marking exactly (CodeRabbit review, PR #1429).
|
|
161
|
+
#stampMark(el) { el.dataset.actionItemStamped = '1'; return el; }
|
|
162
|
+
#wasStamped(el) { return el?.dataset?.actionItemStamped === '1'; }
|
|
163
|
+
|
|
164
|
+
#ownChild(selector) {
|
|
165
|
+
// wrapper-trap-ok: finds component-stamped children (data-action-item-stamped) — consumer children are read but never overwritten
|
|
166
|
+
for (const ch of this.children) {
|
|
167
|
+
if (ch.matches(selector)) return ch;
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
|
|
104
172
|
connected() {
|
|
173
|
+
// ADR-0063 (gh#1571) compat shim — resolve BEFORE #stamp() reads
|
|
174
|
+
// `this.description`, so there's no wrong-then-right flash.
|
|
175
|
+
this.#resolveSubtitleCompat();
|
|
176
|
+
|
|
105
177
|
// Adopt-or-stamp (gh#753): a consumer-authored role survives connect —
|
|
106
178
|
// only stamp "listitem" when the host has no author-set role at all.
|
|
107
179
|
if (!this.hasAttribute('role')) this.setAttribute('role', 'listitem');
|
|
@@ -111,21 +183,28 @@ export class UIActionItem extends UIElement {
|
|
|
111
183
|
}
|
|
112
184
|
|
|
113
185
|
#stamp() {
|
|
114
|
-
if (this
|
|
186
|
+
if (this.#ownChild('[slot="text"]')) return;
|
|
115
187
|
|
|
116
|
-
if (this.icon) {
|
|
117
|
-
const iconEl = document.createElement('icon-ui');
|
|
188
|
+
if (this.icon && !this.#ownChild('[slot="icon"]')) {
|
|
189
|
+
const iconEl = this.#stampMark(document.createElement('icon-ui'));
|
|
118
190
|
iconEl.setAttribute('slot', 'icon');
|
|
119
191
|
iconEl.setAttribute('name', this.icon);
|
|
120
192
|
this.appendChild(iconEl);
|
|
121
193
|
}
|
|
122
194
|
|
|
123
195
|
if (this.text) {
|
|
124
|
-
const span = document.createElement('span');
|
|
196
|
+
const span = this.#stampMark(document.createElement('span'));
|
|
125
197
|
span.setAttribute('slot', 'text');
|
|
126
198
|
span.textContent = this.text;
|
|
127
199
|
this.appendChild(span);
|
|
128
200
|
}
|
|
201
|
+
|
|
202
|
+
if (this.description && !this.#ownChild('[slot="subtitle"]')) {
|
|
203
|
+
const sub = this.#stampMark(document.createElement('span'));
|
|
204
|
+
sub.setAttribute('slot', 'subtitle');
|
|
205
|
+
sub.textContent = this.description;
|
|
206
|
+
this.appendChild(sub);
|
|
207
|
+
}
|
|
129
208
|
}
|
|
130
209
|
|
|
131
210
|
#syncAria() {
|
|
@@ -139,21 +218,45 @@ export class UIActionItem extends UIElement {
|
|
|
139
218
|
}
|
|
140
219
|
|
|
141
220
|
render() {
|
|
142
|
-
|
|
221
|
+
// ADR-0063 (gh#1571) compat shim — re-resolve on every render so a
|
|
222
|
+
// post-mount [subtitle] update keeps mirroring into [description]
|
|
223
|
+
// until an author sets [description] directly (see #resolveSubtitleCompat).
|
|
224
|
+
this.#resolveSubtitleCompat();
|
|
225
|
+
|
|
226
|
+
// Sync icon — only touch elements we stamped.
|
|
227
|
+
const iconEl = this.#ownChild('[slot="icon"]');
|
|
143
228
|
if (this.icon) {
|
|
144
|
-
if (iconEl)
|
|
145
|
-
|
|
146
|
-
|
|
229
|
+
if (iconEl) {
|
|
230
|
+
if (this.#wasStamped(iconEl)) iconEl.setAttribute('name', this.icon);
|
|
231
|
+
} else {
|
|
232
|
+
const el = this.#stampMark(document.createElement('icon-ui'));
|
|
147
233
|
el.setAttribute('slot', 'icon');
|
|
148
234
|
el.setAttribute('name', this.icon);
|
|
149
235
|
this.prepend(el);
|
|
150
236
|
}
|
|
151
|
-
} else if (iconEl) {
|
|
237
|
+
} else if (this.#wasStamped(iconEl)) {
|
|
152
238
|
iconEl.remove();
|
|
153
239
|
}
|
|
154
240
|
|
|
155
|
-
|
|
156
|
-
|
|
241
|
+
// Sync text — only touch elements we stamped.
|
|
242
|
+
const textEl = this.#ownChild('[slot="text"]');
|
|
243
|
+
if (this.#wasStamped(textEl)) textEl.textContent = this.text;
|
|
244
|
+
|
|
245
|
+
// Sync subtitle (backed by the `description` prop — ADR-0063, gh#1571)
|
|
246
|
+
// — only touch elements we stamped.
|
|
247
|
+
const subEl = this.#ownChild('[slot="subtitle"]');
|
|
248
|
+
if (this.description) {
|
|
249
|
+
if (subEl) {
|
|
250
|
+
if (this.#wasStamped(subEl)) subEl.textContent = this.description;
|
|
251
|
+
} else {
|
|
252
|
+
const sub = this.#stampMark(document.createElement('span'));
|
|
253
|
+
sub.setAttribute('slot', 'subtitle');
|
|
254
|
+
sub.textContent = this.description;
|
|
255
|
+
this.appendChild(sub);
|
|
256
|
+
}
|
|
257
|
+
} else if (this.#wasStamped(subEl)) {
|
|
258
|
+
subEl.remove();
|
|
259
|
+
}
|
|
157
260
|
|
|
158
261
|
this.#syncAria();
|
|
159
262
|
}
|
|
@@ -47,6 +47,8 @@ action-item-ui:hover [slot="icon"] {
|
|
|
47
47
|
|
|
48
48
|
--action-item-font-size: var(--a-ui-size);
|
|
49
49
|
--action-item-icon-size: var(--action-item-font-size);
|
|
50
|
+
--action-item-subtitle-size: var(--a-ui-sm);
|
|
51
|
+
--action-item-subtitle-fg: var(--a-fg-muted);
|
|
50
52
|
|
|
51
53
|
--action-item-focus-ring: var(--a-focus-ring);
|
|
52
54
|
|
|
@@ -98,11 +100,49 @@ action-item-ui:hover [slot="icon"] {
|
|
|
98
100
|
text-overflow: ellipsis;
|
|
99
101
|
}
|
|
100
102
|
|
|
101
|
-
/*
|
|
102
|
-
|
|
103
|
+
/* Trailing (shortcut hint, badge, caret) — pinned to the far edge.
|
|
104
|
+
Converged onto <menu-item-ui>'s named-slot contract (#1363 C5); the
|
|
105
|
+
unnamed default slot this row previously used for trailing content had
|
|
106
|
+
zero known consumers (verified across the monorepo at dispatch time —
|
|
107
|
+
see MIGRATION GUIDE) and is retired in favor of an explicit slot. */
|
|
108
|
+
[slot="trailing"] {
|
|
103
109
|
flex-shrink: 0;
|
|
104
110
|
margin-inline-start: auto;
|
|
105
|
-
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* ── Subtitle — two-line anatomy, mirrors <menu-item-ui> ──
|
|
114
|
+
Content-driven: a present [slot="subtitle"] switches the row to a
|
|
115
|
+
grid so the subtitle sits under the label while icon and trailing
|
|
116
|
+
content span both lines. */
|
|
117
|
+
:scope:has(> [slot="subtitle"]) {
|
|
118
|
+
display: grid;
|
|
119
|
+
grid-template-columns: auto 1fr auto;
|
|
120
|
+
align-items: center;
|
|
121
|
+
column-gap: var(--action-item-gap);
|
|
122
|
+
row-gap: 0;
|
|
123
|
+
}
|
|
124
|
+
:scope:has(> [slot="subtitle"]) > [slot="icon"] {
|
|
125
|
+
grid-column: 1;
|
|
126
|
+
grid-row: 1 / span 2;
|
|
127
|
+
}
|
|
128
|
+
:scope:has(> [slot="subtitle"]) > [slot="text"] {
|
|
129
|
+
grid-column: 2;
|
|
130
|
+
grid-row: 1;
|
|
131
|
+
}
|
|
132
|
+
:scope:has(> [slot="subtitle"]) > [slot="trailing"] {
|
|
133
|
+
grid-column: 3;
|
|
134
|
+
grid-row: 1 / span 2;
|
|
135
|
+
margin-inline-start: 0;
|
|
136
|
+
}
|
|
137
|
+
:scope > [slot="subtitle"] {
|
|
138
|
+
grid-column: 2;
|
|
139
|
+
grid-row: 2;
|
|
140
|
+
min-width: 0;
|
|
141
|
+
font-size: var(--action-item-subtitle-size);
|
|
142
|
+
color: var(--action-item-subtitle-fg);
|
|
143
|
+
white-space: nowrap;
|
|
144
|
+
overflow: hidden;
|
|
145
|
+
text-overflow: ellipsis;
|
|
106
146
|
}
|
|
107
147
|
|
|
108
148
|
/* Variant: danger (destructive action) — only remaps tokens */
|
|
@@ -34,14 +34,18 @@ export class UIActionList extends UIElement {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
export class UIActionItem extends UIElement {
|
|
37
|
+
/** Optional secondary description line rendered under the label. Canonical spelling (ADR-0063, gh#1571) replacing `subtitle` — converges action-item onto the same spelling <menu-item-ui> adopted under gh#1563. */
|
|
38
|
+
description: string;
|
|
37
39
|
/** Disables click + keyboard activation; aria-disabled is set. */
|
|
38
40
|
disabled: boolean;
|
|
39
41
|
/** Leading icon name (Phosphor). */
|
|
40
42
|
icon: string;
|
|
43
|
+
/** DEPRECATED (ADR-0063, gh#1571) — use `description` instead. Same type/default/rendered position; kept working as a dual-read compat shim (one-time console.warn when it's the name that resolves). Removed in 0.9.0. (The `subtitle` SLOT below is a separate surface, deliberately left unrenamed in this pass — see its own description.) */
|
|
44
|
+
subtitle: string;
|
|
41
45
|
/** Action label. */
|
|
42
46
|
text: string;
|
|
43
47
|
/** Identifier passed to the action-list change/activate handlers. */
|
|
44
48
|
value: string;
|
|
45
|
-
/** Visual variant (default |
|
|
46
|
-
variant:
|
|
49
|
+
/** Visual variant (default | danger). */
|
|
50
|
+
variant: 'default' | 'danger';
|
|
47
51
|
}
|
|
@@ -36,6 +36,8 @@ states:
|
|
|
36
36
|
traits: []
|
|
37
37
|
tokens: {}
|
|
38
38
|
a2ui:
|
|
39
|
+
allowedChildren:
|
|
40
|
+
- ActionItem
|
|
39
41
|
rules:
|
|
40
42
|
- rule: 'Hosts <action-item-ui> children as a vertical command list inline in content surfaces.'
|
|
41
43
|
reason: 'Cluster contract.'
|
|
@@ -43,6 +45,8 @@ a2ui:
|
|
|
43
45
|
reason: 'Inline vs popover.'
|
|
44
46
|
- rule: 'Typical use: command palettes, settings panels, agent suggestion lists.'
|
|
45
47
|
reason: 'Surface examples.'
|
|
48
|
+
- rule: 'For a persisted, non-firing single selection (highlight the current row, no keyboard-activated command) use <list-ui selectable> instead — action-list-ui always fires and never holds a selected state.'
|
|
49
|
+
reason: 'Container-level decision (#1363 C5): kept as its own component rather than a <list-ui> mode axis; rationale in gh#1374 Findings.'
|
|
46
50
|
anti_patterns: []
|
|
47
51
|
examples:
|
|
48
52
|
- name: basic-action-list
|
|
@@ -79,3 +83,4 @@ related:
|
|
|
79
83
|
- ActionItem
|
|
80
84
|
- Menu
|
|
81
85
|
- Button
|
|
86
|
+
- List
|
|
@@ -71,15 +71,16 @@
|
|
|
71
71
|
"bookmark"
|
|
72
72
|
],
|
|
73
73
|
"name": "UIAgentFeedbackBar",
|
|
74
|
+
"parts": {
|
|
75
|
+
"default": {
|
|
76
|
+
"description": "Template-owned anatomy, not a light-DOM insertion point (gh#1454). `#build()` unconditionally wipes the host (`this.innerHTML = ''`) and rebuilds a fixed thumbs-up/thumbs-down/save row from props — no pre-existing children are captured or preserved."
|
|
77
|
+
}
|
|
78
|
+
},
|
|
74
79
|
"related": [
|
|
75
80
|
"agent-suggestions-ui",
|
|
76
81
|
"agent-trace-ui"
|
|
77
82
|
],
|
|
78
|
-
"slots": {
|
|
79
|
-
"default": {
|
|
80
|
-
"description": "Default slot — primary child content."
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
+
"slots": {},
|
|
83
84
|
"states": [
|
|
84
85
|
{
|
|
85
86
|
"description": "Default, ready for interaction.",
|
|
@@ -44,9 +44,13 @@ events:
|
|
|
44
44
|
description: Rating value selected by the user.
|
|
45
45
|
feedback-save:
|
|
46
46
|
description: "Fired on feedback-save."
|
|
47
|
-
|
|
47
|
+
parts:
|
|
48
48
|
default:
|
|
49
|
-
description:
|
|
49
|
+
description: >-
|
|
50
|
+
Template-owned anatomy, not a light-DOM insertion point (gh#1454).
|
|
51
|
+
`#build()` unconditionally wipes the host (`this.innerHTML = ''`) and
|
|
52
|
+
rebuilds a fixed thumbs-up/thumbs-down/save row from props — no
|
|
53
|
+
pre-existing children are captured or preserved.
|
|
50
54
|
states:
|
|
51
55
|
- name: idle
|
|
52
56
|
description: Default, ready for interaction.
|
|
@@ -105,15 +105,16 @@
|
|
|
105
105
|
"iteration"
|
|
106
106
|
],
|
|
107
107
|
"name": "UIAgentReasoning",
|
|
108
|
+
"parts": {
|
|
109
|
+
"default": {
|
|
110
|
+
"description": "Template-owned anatomy, not a light-DOM insertion point (gh#938, gh#1454): the component rebuilds its body from the addStep()/addThought() pipeline (`this.innerHTML = ''` then rebuild) and does not consume authored children."
|
|
111
|
+
}
|
|
112
|
+
},
|
|
108
113
|
"related": [
|
|
109
114
|
"agent-trace-ui",
|
|
110
115
|
"pipeline-status-ui"
|
|
111
116
|
],
|
|
112
|
-
"slots": {
|
|
113
|
-
"default": {
|
|
114
|
-
"description": "Default slot — NOT a step-authoring surface: the component rebuilds its body from the addStep()/addThought() pipeline and does not consume authored children (gh#938)."
|
|
115
|
-
}
|
|
116
|
-
},
|
|
117
|
+
"slots": {},
|
|
117
118
|
"states": [
|
|
118
119
|
{
|
|
119
120
|
"description": "Default, ready for interaction.",
|
|
@@ -55,9 +55,13 @@ events:
|
|
|
55
55
|
collapsed:
|
|
56
56
|
type: boolean
|
|
57
57
|
description: Whether the reasoning section is now collapsed.
|
|
58
|
-
|
|
58
|
+
parts:
|
|
59
59
|
default:
|
|
60
|
-
description:
|
|
60
|
+
description: >-
|
|
61
|
+
Template-owned anatomy, not a light-DOM insertion point (gh#938,
|
|
62
|
+
gh#1454): the component rebuilds its body from the
|
|
63
|
+
addStep()/addThought() pipeline (`this.innerHTML = ''` then rebuild)
|
|
64
|
+
and does not consume authored children.
|
|
61
65
|
states:
|
|
62
66
|
- name: idle
|
|
63
67
|
description: Default, ready for interaction.
|
|
@@ -22,13 +22,21 @@
|
|
|
22
22
|
"default": false
|
|
23
23
|
},
|
|
24
24
|
"size": {
|
|
25
|
-
"description": "sm | md",
|
|
25
|
+
"description": "sm | md — forwarded to each chip's <button-ui size>.",
|
|
26
26
|
"type": "string",
|
|
27
|
+
"enum": [
|
|
28
|
+
"sm",
|
|
29
|
+
"md"
|
|
30
|
+
],
|
|
27
31
|
"default": "sm"
|
|
28
32
|
},
|
|
29
33
|
"variant": {
|
|
30
|
-
"description": "outline | ghost
|
|
34
|
+
"description": "outline | ghost — forwarded to each chip's <button-ui variant>.",
|
|
31
35
|
"type": "string",
|
|
36
|
+
"enum": [
|
|
37
|
+
"outline",
|
|
38
|
+
"ghost"
|
|
39
|
+
],
|
|
32
40
|
"default": "outline"
|
|
33
41
|
}
|
|
34
42
|
},
|
|
@@ -75,6 +83,7 @@
|
|
|
75
83
|
"quick replies"
|
|
76
84
|
],
|
|
77
85
|
"name": "UIAgentSuggestions",
|
|
86
|
+
"parts": {},
|
|
78
87
|
"related": [
|
|
79
88
|
"agent-questions-ui",
|
|
80
89
|
"agent-feedback-bar-ui"
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
* });
|
|
30
30
|
*
|
|
31
31
|
* Attributes:
|
|
32
|
-
* variant — outline (default) | ghost
|
|
32
|
+
* variant — outline (default) | ghost (forwarded to each chip's button-ui;
|
|
33
|
+
* "subtle" is not a real button-ui variant — dropped gh#1378)
|
|
33
34
|
* size — sm (default) | md
|
|
34
35
|
* disabled — disable all chips
|
|
35
36
|
*
|
|
@@ -32,10 +32,10 @@ export type AgentSuggestionsSuggestionSelectEvent = CustomEvent<AgentSuggestions
|
|
|
32
32
|
export class UIAgentSuggestions extends UIElement {
|
|
33
33
|
/** Disable all chips. */
|
|
34
34
|
disabled: boolean;
|
|
35
|
-
/** sm | md */
|
|
36
|
-
size:
|
|
37
|
-
/** outline | ghost
|
|
38
|
-
variant:
|
|
35
|
+
/** sm | md — forwarded to each chip's <button-ui size>. */
|
|
36
|
+
size: 'sm' | 'md';
|
|
37
|
+
/** outline | ghost — forwarded to each chip's <button-ui variant>. */
|
|
38
|
+
variant: 'outline' | 'ghost';
|
|
39
39
|
|
|
40
40
|
addEventListener(type: 'suggestion-select', listener: (ev: AgentSuggestionsSuggestionSelectEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
|
|
41
41
|
addEventListener<K extends keyof HTMLElementEventMap>(
|
|
@@ -25,13 +25,15 @@ props:
|
|
|
25
25
|
default: false
|
|
26
26
|
reflect: true
|
|
27
27
|
size:
|
|
28
|
-
description: sm | md
|
|
28
|
+
description: sm | md — forwarded to each chip's <button-ui size>.
|
|
29
29
|
type: string
|
|
30
30
|
default: sm
|
|
31
|
+
enum: [sm, md]
|
|
31
32
|
variant:
|
|
32
|
-
description: outline | ghost
|
|
33
|
+
description: outline | ghost — forwarded to each chip's <button-ui variant>.
|
|
33
34
|
type: string
|
|
34
35
|
default: outline
|
|
36
|
+
enum: [outline, ghost]
|
|
35
37
|
events:
|
|
36
38
|
suggestion-select:
|
|
37
39
|
description: "Fired on suggestion-select."
|