@adia-ai/web-components 0.8.40 → 0.8.41
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 +50 -3
- package/MIGRATION.md +1042 -16
- package/README.md +25 -30
- package/USAGE.md +26 -0
- 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 +24 -2
- package/components/action-list/action-item.yaml +28 -3
- package/components/action-list/action-list.a2ui.json +6 -1
- package/components/action-list/action-list.class.js +52 -11
- package/components/action-list/action-list.css +43 -3
- package/components/action-list/action-list.d.ts +4 -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 +9 -4
- package/components/chart/chart.class.js +6 -6
- package/components/chart/chart.css +6 -4
- package/components/chart/chart.d.ts +1 -1
- package/components/chart/chart.yaml +5 -3
- package/components/chart-legend/chart-legend.a2ui.json +1 -0
- 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-input/color-input.a2ui.json +1 -0
- package/components/color-picker/color-picker.a2ui.json +1 -0
- 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 +1 -0
- 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 +1 -0
- package/components/field/field.examples.md +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/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/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 +3 -1
- package/components/menu/menu-item.yaml +6 -0
- package/components/menu/menu-label.a2ui.json +1 -0
- package/components/menu/menu.a2ui.json +3 -2
- package/components/menu/menu.class.js +2 -2
- package/components/menu/menu.d.ts +2 -2
- 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 +6 -0
- package/components/pane/pane.class.js +3 -3
- package/components/pane/pane.css +2 -2
- package/components/pane/pane.yaml +3 -0
- 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/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 +38 -19
- 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/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 +437 -489
- 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 +91 -104
- package/dist/web-components.sheet.js +1 -1
- package/package.json +4 -2
- package/patterns/conversion-funnel/conversion-funnel.examples.html +15 -15
- 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/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
|
@@ -16,7 +16,10 @@ 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
|
+
subtitle, forwards activation to the parent action-list. Row contract
|
|
21
|
+
converges on <menu-item-ui>: icon/text/subtitle/value/variant/disabled
|
|
22
|
+
props and icon/text/subtitle/trailing slot overrides (#1363 C5).
|
|
20
23
|
|
|
21
24
|
props:
|
|
22
25
|
icon:
|
|
@@ -25,13 +28,18 @@ props:
|
|
|
25
28
|
text:
|
|
26
29
|
description: Action label.
|
|
27
30
|
type: string
|
|
31
|
+
subtitle:
|
|
32
|
+
description: Optional secondary description line rendered under the label.
|
|
33
|
+
type: string
|
|
34
|
+
default: ''
|
|
28
35
|
value:
|
|
29
36
|
description: Identifier passed to the action-list change/activate handlers.
|
|
30
37
|
type: string
|
|
31
38
|
variant:
|
|
32
|
-
description: Visual variant (default |
|
|
39
|
+
description: Visual variant (default | danger).
|
|
33
40
|
type: string
|
|
34
41
|
default: 'default'
|
|
42
|
+
enum: [default, danger]
|
|
35
43
|
disabled:
|
|
36
44
|
description: Disables click + keyboard activation; aria-disabled is set.
|
|
37
45
|
type: boolean
|
|
@@ -43,6 +51,17 @@ slots:
|
|
|
43
51
|
Override the [icon] glyph with a custom slotted element (custom
|
|
44
52
|
icon-ui, image, avatar). Mutually exclusive with the [icon]
|
|
45
53
|
attribute — slot child wins.
|
|
54
|
+
text:
|
|
55
|
+
description: Custom label content; falls through to [text] prop if not slotted.
|
|
56
|
+
subtitle:
|
|
57
|
+
description: >-
|
|
58
|
+
Custom secondary-line content override; falls through to [subtitle]
|
|
59
|
+
prop if not slotted.
|
|
60
|
+
trailing:
|
|
61
|
+
description: >-
|
|
62
|
+
Trailing element pinned to the far edge (shortcut hint, badge, caret).
|
|
63
|
+
Supersedes the unnamed default slot this row previously used for
|
|
64
|
+
trailing content — see MIGRATION GUIDE.
|
|
46
65
|
|
|
47
66
|
keywords:
|
|
48
67
|
- action-item
|
|
@@ -60,10 +79,16 @@ related:
|
|
|
60
79
|
- Button
|
|
61
80
|
|
|
62
81
|
a2ui:
|
|
82
|
+
allowedParents:
|
|
83
|
+
- ActionList
|
|
63
84
|
rules:
|
|
64
|
-
- rule: 'Child of <action-list-ui> — one inline-action row with icon + label + optional
|
|
85
|
+
- rule: 'Child of <action-list-ui> — one inline-action row with icon + label + optional subtitle + optional trailing shortcut/badge.'
|
|
65
86
|
reason: 'Action-list cluster contract.'
|
|
66
87
|
- rule: 'Different from <menu-item-ui>: action-items live inline in content surfaces; menu-items live inside <menu-ui> popovers.'
|
|
67
88
|
reason: 'Context boundary.'
|
|
68
89
|
- rule: 'For navigation entries (route-changing) use <nav-item-ui> instead.'
|
|
69
90
|
reason: 'Different intent — actions vs navigation.'
|
|
91
|
+
- 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.'
|
|
92
|
+
reason: 'Converged with <menu-item-ui>''s danger-variant guidance (#1363 C5).'
|
|
93
|
+
- rule: 'Prefer [icon]/[text]/[subtitle] props over slotted markup; use slot="icon"/"text"/"subtitle"/"trailing" only for custom markup (e.g. a slotted <kbd> shortcut hint).'
|
|
94
|
+
reason: 'Row-contract convergence with <menu-item-ui> (#1363 C5).'
|
|
@@ -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,7 @@ 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
|
+
subtitle: { type: String, default: '', reflect: true },
|
|
97
98
|
value: { type: String, default: '', reflect: true },
|
|
98
99
|
variant: { type: String, default: 'default', reflect: true },
|
|
99
100
|
disabled: { type: Boolean, default: false, reflect: true },
|
|
@@ -101,6 +102,21 @@ export class UIActionItem extends UIElement {
|
|
|
101
102
|
|
|
102
103
|
static template = () => null;
|
|
103
104
|
|
|
105
|
+
// Set when connected()/render() stamped this fallback child from a prop —
|
|
106
|
+
// never touch a consumer-authored slot="icon"/"text"/"subtitle" child
|
|
107
|
+
// (ADR-0010, slot content is source of truth). Mirrors menu-item-ui's
|
|
108
|
+
// UIMenuItem stamp-marking exactly (CodeRabbit review, PR #1429).
|
|
109
|
+
#stampMark(el) { el.dataset.actionItemStamped = '1'; return el; }
|
|
110
|
+
#wasStamped(el) { return el?.dataset?.actionItemStamped === '1'; }
|
|
111
|
+
|
|
112
|
+
#ownChild(selector) {
|
|
113
|
+
// wrapper-trap-ok: finds component-stamped children (data-action-item-stamped) — consumer children are read but never overwritten
|
|
114
|
+
for (const ch of this.children) {
|
|
115
|
+
if (ch.matches(selector)) return ch;
|
|
116
|
+
}
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
|
|
104
120
|
connected() {
|
|
105
121
|
// Adopt-or-stamp (gh#753): a consumer-authored role survives connect —
|
|
106
122
|
// only stamp "listitem" when the host has no author-set role at all.
|
|
@@ -111,21 +127,28 @@ export class UIActionItem extends UIElement {
|
|
|
111
127
|
}
|
|
112
128
|
|
|
113
129
|
#stamp() {
|
|
114
|
-
if (this
|
|
130
|
+
if (this.#ownChild('[slot="text"]')) return;
|
|
115
131
|
|
|
116
|
-
if (this.icon) {
|
|
117
|
-
const iconEl = document.createElement('icon-ui');
|
|
132
|
+
if (this.icon && !this.#ownChild('[slot="icon"]')) {
|
|
133
|
+
const iconEl = this.#stampMark(document.createElement('icon-ui'));
|
|
118
134
|
iconEl.setAttribute('slot', 'icon');
|
|
119
135
|
iconEl.setAttribute('name', this.icon);
|
|
120
136
|
this.appendChild(iconEl);
|
|
121
137
|
}
|
|
122
138
|
|
|
123
139
|
if (this.text) {
|
|
124
|
-
const span = document.createElement('span');
|
|
140
|
+
const span = this.#stampMark(document.createElement('span'));
|
|
125
141
|
span.setAttribute('slot', 'text');
|
|
126
142
|
span.textContent = this.text;
|
|
127
143
|
this.appendChild(span);
|
|
128
144
|
}
|
|
145
|
+
|
|
146
|
+
if (this.subtitle && !this.#ownChild('[slot="subtitle"]')) {
|
|
147
|
+
const sub = this.#stampMark(document.createElement('span'));
|
|
148
|
+
sub.setAttribute('slot', 'subtitle');
|
|
149
|
+
sub.textContent = this.subtitle;
|
|
150
|
+
this.appendChild(sub);
|
|
151
|
+
}
|
|
129
152
|
}
|
|
130
153
|
|
|
131
154
|
#syncAria() {
|
|
@@ -139,21 +162,39 @@ export class UIActionItem extends UIElement {
|
|
|
139
162
|
}
|
|
140
163
|
|
|
141
164
|
render() {
|
|
142
|
-
|
|
165
|
+
// Sync icon — only touch elements we stamped.
|
|
166
|
+
const iconEl = this.#ownChild('[slot="icon"]');
|
|
143
167
|
if (this.icon) {
|
|
144
|
-
if (iconEl)
|
|
145
|
-
|
|
146
|
-
|
|
168
|
+
if (iconEl) {
|
|
169
|
+
if (this.#wasStamped(iconEl)) iconEl.setAttribute('name', this.icon);
|
|
170
|
+
} else {
|
|
171
|
+
const el = this.#stampMark(document.createElement('icon-ui'));
|
|
147
172
|
el.setAttribute('slot', 'icon');
|
|
148
173
|
el.setAttribute('name', this.icon);
|
|
149
174
|
this.prepend(el);
|
|
150
175
|
}
|
|
151
|
-
} else if (iconEl) {
|
|
176
|
+
} else if (this.#wasStamped(iconEl)) {
|
|
152
177
|
iconEl.remove();
|
|
153
178
|
}
|
|
154
179
|
|
|
155
|
-
|
|
156
|
-
|
|
180
|
+
// Sync text — only touch elements we stamped.
|
|
181
|
+
const textEl = this.#ownChild('[slot="text"]');
|
|
182
|
+
if (this.#wasStamped(textEl)) textEl.textContent = this.text;
|
|
183
|
+
|
|
184
|
+
// Sync subtitle — only touch elements we stamped.
|
|
185
|
+
const subEl = this.#ownChild('[slot="subtitle"]');
|
|
186
|
+
if (this.subtitle) {
|
|
187
|
+
if (subEl) {
|
|
188
|
+
if (this.#wasStamped(subEl)) subEl.textContent = this.subtitle;
|
|
189
|
+
} else {
|
|
190
|
+
const sub = this.#stampMark(document.createElement('span'));
|
|
191
|
+
sub.setAttribute('slot', 'subtitle');
|
|
192
|
+
sub.textContent = this.subtitle;
|
|
193
|
+
this.appendChild(sub);
|
|
194
|
+
}
|
|
195
|
+
} else if (this.#wasStamped(subEl)) {
|
|
196
|
+
subEl.remove();
|
|
197
|
+
}
|
|
157
198
|
|
|
158
199
|
this.#syncAria();
|
|
159
200
|
}
|
|
@@ -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 */
|
|
@@ -38,10 +38,12 @@ export class UIActionItem extends UIElement {
|
|
|
38
38
|
disabled: boolean;
|
|
39
39
|
/** Leading icon name (Phosphor). */
|
|
40
40
|
icon: string;
|
|
41
|
+
/** Optional secondary description line rendered under the label. */
|
|
42
|
+
subtitle: string;
|
|
41
43
|
/** Action label. */
|
|
42
44
|
text: string;
|
|
43
45
|
/** Identifier passed to the action-list change/activate handlers. */
|
|
44
46
|
value: string;
|
|
45
|
-
/** Visual variant (default |
|
|
46
|
-
variant:
|
|
47
|
+
/** Visual variant (default | danger). */
|
|
48
|
+
variant: 'default' | 'danger';
|
|
47
49
|
}
|
|
@@ -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."
|
|
@@ -61,15 +61,16 @@
|
|
|
61
61
|
"training feedback"
|
|
62
62
|
],
|
|
63
63
|
"name": "UIAgentTrace",
|
|
64
|
+
"parts": {
|
|
65
|
+
"default": {
|
|
66
|
+
"description": "Template-owned anatomy, not a light-DOM insertion point (gh#1454). `#buildShell()` unconditionally wipes the host (`this.innerHTML = ''`) and rebuilds a `<details>` root from the `pills`/`metrics`/`feedback` properties — no pre-existing children are captured or preserved."
|
|
67
|
+
}
|
|
68
|
+
},
|
|
64
69
|
"related": [
|
|
65
70
|
"agent-reasoning-ui",
|
|
66
71
|
"agent-feedback-bar-ui"
|
|
67
72
|
],
|
|
68
|
-
"slots": {
|
|
69
|
-
"default": {
|
|
70
|
-
"description": "Default slot — primary child content."
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
+
"slots": {},
|
|
73
74
|
"states": [
|
|
74
75
|
{
|
|
75
76
|
"description": "Default, ready for interaction.",
|
|
@@ -29,9 +29,13 @@ events:
|
|
|
29
29
|
collapsed:
|
|
30
30
|
type: boolean
|
|
31
31
|
description: Whether the trace is now collapsed.
|
|
32
|
-
|
|
32
|
+
parts:
|
|
33
33
|
default:
|
|
34
|
-
description:
|
|
34
|
+
description: >-
|
|
35
|
+
Template-owned anatomy, not a light-DOM insertion point (gh#1454).
|
|
36
|
+
`#buildShell()` unconditionally wipes the host (`this.innerHTML = ''`)
|
|
37
|
+
and rebuilds a `<details>` root from the `pills`/`metrics`/`feedback`
|
|
38
|
+
properties — no pre-existing children are captured or preserved.
|
|
35
39
|
states:
|
|
36
40
|
- name: idle
|
|
37
41
|
description: Default, ready for interaction.
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
/* ── Typography ── */
|
|
16
16
|
--alert-font: var(--a-ui-size);
|
|
17
|
-
--alert-line-height: var(--a-ui-line-height,
|
|
17
|
+
--alert-line-height: var(--a-ui-line-height, var(--a-font-leading-relaxed));
|
|
18
18
|
|
|
19
19
|
/* ── SPEC-006 dunning pattern tokens ── */
|
|
20
20
|
--alert-amount-font: var(--a-font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
|
|
@@ -23,7 +23,12 @@
|
|
|
23
23
|
},
|
|
24
24
|
"size": {
|
|
25
25
|
"description": "Forwards to each child <avatar-ui> (sm|md|lg). Empty uses the per-avatar size. For denser or larger sets, set [scale] on an ancestor.",
|
|
26
|
-
"type": "string"
|
|
26
|
+
"type": "string",
|
|
27
|
+
"enum": [
|
|
28
|
+
"sm",
|
|
29
|
+
"md",
|
|
30
|
+
"lg"
|
|
31
|
+
]
|
|
27
32
|
}
|
|
28
33
|
},
|
|
29
34
|
"required": [
|
|
@@ -45,6 +50,7 @@
|
|
|
45
50
|
"overflow-avatars"
|
|
46
51
|
],
|
|
47
52
|
"name": "UIAvatarGroup",
|
|
53
|
+
"parts": {},
|
|
48
54
|
"related": [
|
|
49
55
|
"Avatar",
|
|
50
56
|
"Tag"
|
|
@@ -88,24 +88,25 @@
|
|
|
88
88
|
"user"
|
|
89
89
|
],
|
|
90
90
|
"name": "UIAvatar",
|
|
91
|
-
"
|
|
92
|
-
"input",
|
|
93
|
-
"button",
|
|
94
|
-
"check-box",
|
|
95
|
-
"badge",
|
|
96
|
-
"avatar-group"
|
|
97
|
-
],
|
|
98
|
-
"slots": {
|
|
91
|
+
"parts": {
|
|
99
92
|
"icon": {
|
|
100
|
-
"description": "Phosphor icon rendered inside the avatar circle (system-event avatars)"
|
|
93
|
+
"description": "Phosphor icon rendered inside the avatar circle (system-event avatars) — template-owned anatomy part, not a light-DOM insertion point (gh#1454). render() always creates it from the `icon` prop; no consumer override path exists in source."
|
|
101
94
|
},
|
|
102
95
|
"img": {
|
|
103
|
-
"description": "Avatar image element"
|
|
96
|
+
"description": "Avatar image element — template-owned anatomy part, not a light-DOM insertion point (gh#1454). render() always creates it from the `src` prop; no consumer override path exists in source."
|
|
104
97
|
},
|
|
105
98
|
"initials": {
|
|
106
|
-
"description": "Initials text span"
|
|
99
|
+
"description": "Initials text span — template-owned anatomy part, not a light-DOM insertion point (gh#1454). render() always creates it from the `text` prop; no consumer override path exists in source."
|
|
107
100
|
}
|
|
108
101
|
},
|
|
102
|
+
"related": [
|
|
103
|
+
"input",
|
|
104
|
+
"button",
|
|
105
|
+
"check-box",
|
|
106
|
+
"badge",
|
|
107
|
+
"avatar-group"
|
|
108
|
+
],
|
|
109
|
+
"slots": {},
|
|
109
110
|
"states": [
|
|
110
111
|
{
|
|
111
112
|
"description": "Default, ready for interaction.",
|
|
@@ -35,5 +35,5 @@ export class UIAvatarGroup extends UIElement {
|
|
|
35
35
|
/** Maximum avatars to show before the +N overflow indicator. */
|
|
36
36
|
max: number;
|
|
37
37
|
/** Forwards to each child <avatar-ui> (sm|md|lg). Empty uses the per-avatar size. For denser or larger sets, set [scale] on an ancestor. */
|
|
38
|
-
size:
|
|
38
|
+
size: 'sm' | 'md' | 'lg';
|
|
39
39
|
}
|