@aceshooting/lyra-ui 2.11.0 → 2.13.0
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/README.md +31 -2
- package/custom-elements.json +38146 -19163
- package/dist/components/app-rail/app-rail.class.d.ts.map +1 -1
- package/dist/components/app-rail/app-rail.class.js +2 -1
- package/dist/components/app-rail/app-rail.class.js.map +1 -1
- package/dist/components/attachment-chip/attachment-chip.class.d.ts +16 -22
- package/dist/components/attachment-chip/attachment-chip.class.d.ts.map +1 -1
- package/dist/components/attachment-chip/attachment-chip.class.js +37 -42
- package/dist/components/attachment-chip/attachment-chip.class.js.map +1 -1
- package/dist/components/attachment-chip/attachment-chip.styles.d.ts.map +1 -1
- package/dist/components/attachment-chip/attachment-chip.styles.js +3 -2
- package/dist/components/attachment-chip/attachment-chip.styles.js.map +1 -1
- package/dist/components/avatar/avatar.class.d.ts +4 -3
- package/dist/components/avatar/avatar.class.d.ts.map +1 -1
- package/dist/components/avatar/avatar.class.js +12 -6
- package/dist/components/avatar/avatar.class.js.map +1 -1
- package/dist/components/badge/badge.class.d.ts +21 -0
- package/dist/components/badge/badge.class.d.ts.map +1 -0
- package/dist/components/badge/badge.class.js +29 -0
- package/dist/components/badge/badge.class.js.map +1 -0
- package/dist/components/badge/badge.d.ts +2 -0
- package/dist/components/badge/badge.d.ts.map +1 -0
- package/dist/components/badge/badge.js +5 -0
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/badge/badge.styles.d.ts +2 -0
- package/dist/components/badge/badge.styles.d.ts.map +1 -0
- package/dist/components/badge/badge.styles.js +10 -0
- package/dist/components/badge/badge.styles.js.map +1 -0
- package/dist/components/badge/tag.class.d.ts +10 -0
- package/dist/components/badge/tag.class.d.ts.map +1 -0
- package/dist/components/badge/tag.class.js +5 -0
- package/dist/components/badge/tag.class.js.map +1 -0
- package/dist/components/badge/tag.d.ts +2 -0
- package/dist/components/badge/tag.d.ts.map +1 -0
- package/dist/components/badge/tag.js +5 -0
- package/dist/components/badge/tag.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb-item.class.d.ts +22 -0
- package/dist/components/breadcrumb/breadcrumb-item.class.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb-item.class.js +40 -0
- package/dist/components/breadcrumb/breadcrumb-item.class.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb-item.d.ts +2 -0
- package/dist/components/breadcrumb/breadcrumb-item.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb-item.js +5 -0
- package/dist/components/breadcrumb/breadcrumb-item.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.class.d.ts +20 -0
- package/dist/components/breadcrumb/breadcrumb.class.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.class.js +29 -0
- package/dist/components/breadcrumb/breadcrumb.class.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +2 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.js +5 -0
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.styles.d.ts +2 -0
- package/dist/components/breadcrumb/breadcrumb.styles.d.ts.map +1 -0
- package/dist/components/breadcrumb/breadcrumb.styles.js +8 -0
- package/dist/components/breadcrumb/breadcrumb.styles.js.map +1 -0
- package/dist/components/button/button.class.d.ts +8 -1
- package/dist/components/button/button.class.d.ts.map +1 -1
- package/dist/components/button/button.class.js +14 -2
- package/dist/components/button/button.class.js.map +1 -1
- package/dist/components/button/button.styles.d.ts.map +1 -1
- package/dist/components/button/button.styles.js +34 -0
- package/dist/components/button/button.styles.js.map +1 -1
- package/dist/components/button-group/button-group.class.d.ts +25 -0
- package/dist/components/button-group/button-group.class.d.ts.map +1 -0
- package/dist/components/button-group/button-group.class.js +39 -0
- package/dist/components/button-group/button-group.class.js.map +1 -0
- package/dist/components/button-group/button-group.d.ts +2 -0
- package/dist/components/button-group/button-group.d.ts.map +1 -0
- package/dist/components/button-group/button-group.js +5 -0
- package/dist/components/button-group/button-group.js.map +1 -0
- package/dist/components/button-group/button-group.styles.d.ts +2 -0
- package/dist/components/button-group/button-group.styles.d.ts.map +1 -0
- package/dist/components/button-group/button-group.styles.js +33 -0
- package/dist/components/button-group/button-group.styles.js.map +1 -0
- package/dist/components/callout/callout.class.d.ts +39 -0
- package/dist/components/callout/callout.class.d.ts.map +1 -0
- package/dist/components/callout/callout.class.js +85 -0
- package/dist/components/callout/callout.class.js.map +1 -0
- package/dist/components/callout/callout.d.ts +2 -0
- package/dist/components/callout/callout.d.ts.map +1 -0
- package/dist/components/callout/callout.js +5 -0
- package/dist/components/callout/callout.js.map +1 -0
- package/dist/components/callout/callout.styles.d.ts +2 -0
- package/dist/components/callout/callout.styles.d.ts.map +1 -0
- package/dist/components/callout/callout.styles.js +16 -0
- package/dist/components/callout/callout.styles.js.map +1 -0
- package/dist/components/card/card.class.d.ts +3 -0
- package/dist/components/card/card.class.d.ts.map +1 -1
- package/dist/components/card/card.class.js +3 -0
- package/dist/components/card/card.class.js.map +1 -1
- package/dist/components/card/card.styles.d.ts.map +1 -1
- package/dist/components/card/card.styles.js +7 -0
- package/dist/components/card/card.styles.js.map +1 -1
- package/dist/components/carousel/carousel-item.class.d.ts +21 -0
- package/dist/components/carousel/carousel-item.class.d.ts.map +1 -0
- package/dist/components/carousel/carousel-item.class.js +19 -0
- package/dist/components/carousel/carousel-item.class.js.map +1 -0
- package/dist/components/carousel/carousel-item.d.ts +2 -0
- package/dist/components/carousel/carousel-item.d.ts.map +1 -0
- package/dist/components/carousel/carousel-item.js +5 -0
- package/dist/components/carousel/carousel-item.js.map +1 -0
- package/dist/components/carousel/carousel-item.styles.d.ts +2 -0
- package/dist/components/carousel/carousel-item.styles.d.ts.map +1 -0
- package/dist/components/carousel/carousel-item.styles.js +12 -0
- package/dist/components/carousel/carousel-item.styles.js.map +1 -0
- package/dist/components/carousel/carousel.class.d.ts +61 -0
- package/dist/components/carousel/carousel.class.d.ts.map +1 -0
- package/dist/components/carousel/carousel.class.js +223 -0
- package/dist/components/carousel/carousel.class.js.map +1 -0
- package/dist/components/carousel/carousel.d.ts +3 -0
- package/dist/components/carousel/carousel.d.ts.map +1 -0
- package/dist/components/carousel/carousel.js +5 -0
- package/dist/components/carousel/carousel.js.map +1 -0
- package/dist/components/carousel/carousel.styles.d.ts +2 -0
- package/dist/components/carousel/carousel.styles.d.ts.map +1 -0
- package/dist/components/carousel/carousel.styles.js +81 -0
- package/dist/components/carousel/carousel.styles.js.map +1 -0
- package/dist/components/chart/box-plot.class.d.ts +4 -1
- package/dist/components/chart/box-plot.class.d.ts.map +1 -1
- package/dist/components/chart/box-plot.class.js +28 -8
- package/dist/components/chart/box-plot.class.js.map +1 -1
- package/dist/components/chart/box-plot.styles.d.ts.map +1 -1
- package/dist/components/chart/box-plot.styles.js +2 -0
- package/dist/components/chart/box-plot.styles.js.map +1 -1
- package/dist/components/chart/chart.class.d.ts +3 -1
- package/dist/components/chart/chart.class.d.ts.map +1 -1
- package/dist/components/chart/chart.class.js +17 -6
- package/dist/components/chart/chart.class.js.map +1 -1
- package/dist/components/chart/chart.styles.d.ts.map +1 -1
- package/dist/components/chart/chart.styles.js +2 -0
- package/dist/components/chart/chart.styles.js.map +1 -1
- package/dist/components/chart/histogram.class.d.ts +2 -0
- package/dist/components/chart/histogram.class.d.ts.map +1 -1
- package/dist/components/chart/histogram.class.js +6 -0
- package/dist/components/chart/histogram.class.js.map +1 -1
- package/dist/components/chart/lite-chart.class.d.ts +5 -5
- package/dist/components/chart/lite-chart.class.d.ts.map +1 -1
- package/dist/components/chart/lite-chart.class.js +35 -9
- package/dist/components/chart/lite-chart.class.js.map +1 -1
- package/dist/components/chart/lite-chart.styles.d.ts.map +1 -1
- package/dist/components/chart/lite-chart.styles.js +5 -0
- package/dist/components/chart/lite-chart.styles.js.map +1 -1
- package/dist/components/chat-composer/chat-composer.class.d.ts +28 -3
- package/dist/components/chat-composer/chat-composer.class.d.ts.map +1 -1
- package/dist/components/chat-composer/chat-composer.class.js +82 -4
- package/dist/components/chat-composer/chat-composer.class.js.map +1 -1
- package/dist/components/chat-message/chat-message.class.d.ts +3 -0
- package/dist/components/chat-message/chat-message.class.d.ts.map +1 -1
- package/dist/components/chat-message/chat-message.class.js +8 -6
- package/dist/components/chat-message/chat-message.class.js.map +1 -1
- package/dist/components/chat-message/chat-message.styles.d.ts.map +1 -1
- package/dist/components/chat-message/chat-message.styles.js +2 -1
- package/dist/components/chat-message/chat-message.styles.js.map +1 -1
- package/dist/components/checkbox/checkbox.class.d.ts +15 -2
- package/dist/components/checkbox/checkbox.class.d.ts.map +1 -1
- package/dist/components/checkbox/checkbox.class.js +28 -8
- package/dist/components/checkbox/checkbox.class.js.map +1 -1
- package/dist/components/chip/chip-group.class.d.ts +3 -3
- package/dist/components/chip/chip-group.class.d.ts.map +1 -1
- package/dist/components/chip/chip-group.class.js +3 -1
- package/dist/components/chip/chip-group.class.js.map +1 -1
- package/dist/components/citation-badge/citation-badge.class.d.ts +4 -1
- package/dist/components/citation-badge/citation-badge.class.d.ts.map +1 -1
- package/dist/components/citation-badge/citation-badge.class.js +8 -3
- package/dist/components/citation-badge/citation-badge.class.js.map +1 -1
- package/dist/components/code-block/code-block-core.class.d.ts +7 -1
- package/dist/components/code-block/code-block-core.class.d.ts.map +1 -1
- package/dist/components/code-block/code-block-core.class.js +11 -2
- package/dist/components/code-block/code-block-core.class.js.map +1 -1
- package/dist/components/code-block/code-block.class.d.ts +9 -0
- package/dist/components/code-block/code-block.class.d.ts.map +1 -1
- package/dist/components/code-block/code-block.class.js +13 -1
- package/dist/components/code-block/code-block.class.js.map +1 -1
- package/dist/components/color-picker/color-picker.class.d.ts +46 -0
- package/dist/components/color-picker/color-picker.class.d.ts.map +1 -0
- package/dist/components/color-picker/color-picker.class.js +81 -0
- package/dist/components/color-picker/color-picker.class.js.map +1 -0
- package/dist/components/color-picker/color-picker.d.ts +2 -0
- package/dist/components/color-picker/color-picker.d.ts.map +1 -0
- package/dist/components/color-picker/color-picker.js +5 -0
- package/dist/components/color-picker/color-picker.js.map +1 -0
- package/dist/components/color-picker/color-picker.styles.d.ts +2 -0
- package/dist/components/color-picker/color-picker.styles.d.ts.map +1 -0
- package/dist/components/color-picker/color-picker.styles.js +9 -0
- package/dist/components/color-picker/color-picker.styles.js.map +1 -0
- package/dist/components/combobox/combobox.class.d.ts +36 -0
- package/dist/components/combobox/combobox.class.d.ts.map +1 -1
- package/dist/components/combobox/combobox.class.js +111 -4
- package/dist/components/combobox/combobox.class.js.map +1 -1
- package/dist/components/combobox/option.class.d.ts.map +1 -1
- package/dist/components/combobox/option.class.js +3 -9
- package/dist/components/combobox/option.class.js.map +1 -1
- package/dist/components/combobox/option.styles.d.ts +2 -0
- package/dist/components/combobox/option.styles.d.ts.map +1 -0
- package/dist/components/combobox/option.styles.js +7 -0
- package/dist/components/combobox/option.styles.js.map +1 -0
- package/dist/components/context-meter/context-meter.class.d.ts +2 -0
- package/dist/components/context-meter/context-meter.class.d.ts.map +1 -1
- package/dist/components/context-meter/context-meter.class.js +18 -7
- package/dist/components/context-meter/context-meter.class.js.map +1 -1
- package/dist/components/context-meter/context-meter.styles.d.ts.map +1 -1
- package/dist/components/context-meter/context-meter.styles.js +3 -0
- package/dist/components/context-meter/context-meter.styles.js.map +1 -1
- package/dist/components/conversation-item/conversation-item.class.d.ts +5 -4
- package/dist/components/conversation-item/conversation-item.class.d.ts.map +1 -1
- package/dist/components/conversation-item/conversation-item.class.js +2 -0
- package/dist/components/conversation-item/conversation-item.class.js.map +1 -1
- package/dist/components/copy-button/copy-button.class.d.ts +10 -0
- package/dist/components/copy-button/copy-button.class.d.ts.map +1 -1
- package/dist/components/copy-button/copy-button.class.js +35 -4
- package/dist/components/copy-button/copy-button.class.js.map +1 -1
- package/dist/components/copy-button/copy-button.styles.d.ts.map +1 -1
- package/dist/components/copy-button/copy-button.styles.js +5 -1
- package/dist/components/copy-button/copy-button.styles.js.map +1 -1
- package/dist/components/date-picker/date-input.styles.d.ts.map +1 -1
- package/dist/components/date-picker/date-input.styles.js +4 -0
- package/dist/components/date-picker/date-input.styles.js.map +1 -1
- package/dist/components/details/accordion-item.class.d.ts +10 -0
- package/dist/components/details/accordion-item.class.d.ts.map +1 -0
- package/dist/components/details/accordion-item.class.js +5 -0
- package/dist/components/details/accordion-item.class.js.map +1 -0
- package/dist/components/details/accordion-item.d.ts +2 -0
- package/dist/components/details/accordion-item.d.ts.map +1 -0
- package/dist/components/details/accordion-item.js +5 -0
- package/dist/components/details/accordion-item.js.map +1 -0
- package/dist/components/details/accordion.class.d.ts +23 -0
- package/dist/components/details/accordion.class.d.ts.map +1 -0
- package/dist/components/details/accordion.class.js +48 -0
- package/dist/components/details/accordion.class.js.map +1 -0
- package/dist/components/details/accordion.d.ts +2 -0
- package/dist/components/details/accordion.d.ts.map +1 -0
- package/dist/components/details/accordion.js +5 -0
- package/dist/components/details/accordion.js.map +1 -0
- package/dist/components/details/details.class.d.ts +33 -0
- package/dist/components/details/details.class.d.ts.map +1 -0
- package/dist/components/details/details.class.js +63 -0
- package/dist/components/details/details.class.js.map +1 -0
- package/dist/components/details/details.d.ts +2 -0
- package/dist/components/details/details.d.ts.map +1 -0
- package/dist/components/details/details.js +5 -0
- package/dist/components/details/details.js.map +1 -0
- package/dist/components/details/details.styles.d.ts +2 -0
- package/dist/components/details/details.styles.d.ts.map +1 -0
- package/dist/components/details/details.styles.js +13 -0
- package/dist/components/details/details.styles.js.map +1 -0
- package/dist/components/diff-view/diff-view.styles.d.ts.map +1 -1
- package/dist/components/diff-view/diff-view.styles.js +3 -0
- package/dist/components/diff-view/diff-view.styles.js.map +1 -1
- package/dist/components/divider/divider.class.d.ts +20 -0
- package/dist/components/divider/divider.class.d.ts.map +1 -0
- package/dist/components/divider/divider.class.js +28 -0
- package/dist/components/divider/divider.class.js.map +1 -0
- package/dist/components/divider/divider.d.ts +2 -0
- package/dist/components/divider/divider.d.ts.map +1 -0
- package/dist/components/divider/divider.js +5 -0
- package/dist/components/divider/divider.js.map +1 -0
- package/dist/components/divider/divider.styles.d.ts +2 -0
- package/dist/components/divider/divider.styles.d.ts.map +1 -0
- package/dist/components/divider/divider.styles.js +8 -0
- package/dist/components/divider/divider.styles.js.map +1 -0
- package/dist/components/document-preview/document-preview.class.d.ts +14 -2
- package/dist/components/document-preview/document-preview.class.d.ts.map +1 -1
- package/dist/components/document-preview/document-preview.class.js +45 -6
- package/dist/components/document-preview/document-preview.class.js.map +1 -1
- package/dist/components/document-preview/document-preview.styles.js +1 -1
- package/dist/components/drawer/drawer.class.d.ts +26 -0
- package/dist/components/drawer/drawer.class.d.ts.map +1 -0
- package/dist/components/drawer/drawer.class.js +34 -0
- package/dist/components/drawer/drawer.class.js.map +1 -0
- package/dist/components/drawer/drawer.d.ts +3 -0
- package/dist/components/drawer/drawer.d.ts.map +1 -0
- package/dist/components/drawer/drawer.js +5 -0
- package/dist/components/drawer/drawer.js.map +1 -0
- package/dist/components/drawer/drawer.styles.d.ts +2 -0
- package/dist/components/drawer/drawer.styles.d.ts.map +1 -0
- package/dist/components/drawer/drawer.styles.js +73 -0
- package/dist/components/drawer/drawer.styles.js.map +1 -0
- package/dist/components/export-button/export-button.class.d.ts +9 -2
- package/dist/components/export-button/export-button.class.d.ts.map +1 -1
- package/dist/components/export-button/export-button.class.js +21 -3
- package/dist/components/export-button/export-button.class.js.map +1 -1
- package/dist/components/export-button/export-button.styles.d.ts.map +1 -1
- package/dist/components/export-button/export-button.styles.js +21 -2
- package/dist/components/export-button/export-button.styles.js.map +1 -1
- package/dist/components/file-input/file-input.class.d.ts +9 -3
- package/dist/components/file-input/file-input.class.d.ts.map +1 -1
- package/dist/components/file-input/file-input.class.js +23 -8
- package/dist/components/file-input/file-input.class.js.map +1 -1
- package/dist/components/flag/flag.class.d.ts +7 -1
- package/dist/components/flag/flag.class.d.ts.map +1 -1
- package/dist/components/flag/flag.class.js +11 -3
- package/dist/components/flag/flag.class.js.map +1 -1
- package/dist/components/flag/flag.styles.js +2 -2
- package/dist/components/format/format-bytes.class.d.ts +21 -0
- package/dist/components/format/format-bytes.class.d.ts.map +1 -0
- package/dist/components/format/format-bytes.class.js +46 -0
- package/dist/components/format/format-bytes.class.js.map +1 -0
- package/dist/components/format/format-bytes.d.ts +2 -0
- package/dist/components/format/format-bytes.d.ts.map +1 -0
- package/dist/components/format/format-bytes.js +5 -0
- package/dist/components/format/format-bytes.js.map +1 -0
- package/dist/components/format/format-date.class.d.ts +25 -0
- package/dist/components/format/format-date.class.d.ts.map +1 -0
- package/dist/components/format/format-date.class.js +59 -0
- package/dist/components/format/format-date.class.js.map +1 -0
- package/dist/components/format/format-date.d.ts +2 -0
- package/dist/components/format/format-date.d.ts.map +1 -0
- package/dist/components/format/format-date.js +5 -0
- package/dist/components/format/format-date.js.map +1 -0
- package/dist/components/format/format-number.class.d.ts +24 -0
- package/dist/components/format/format-number.class.d.ts.map +1 -0
- package/dist/components/format/format-number.class.js +58 -0
- package/dist/components/format/format-number.class.js.map +1 -0
- package/dist/components/format/format-number.d.ts +2 -0
- package/dist/components/format/format-number.d.ts.map +1 -0
- package/dist/components/format/format-number.js +5 -0
- package/dist/components/format/format-number.js.map +1 -0
- package/dist/components/format/format.styles.d.ts +2 -0
- package/dist/components/format/format.styles.d.ts.map +1 -0
- package/dist/components/format/format.styles.js +3 -0
- package/dist/components/format/format.styles.js.map +1 -0
- package/dist/components/format/relative-time.class.d.ts +29 -0
- package/dist/components/format/relative-time.class.d.ts.map +1 -0
- package/dist/components/format/relative-time.class.js +62 -0
- package/dist/components/format/relative-time.class.js.map +1 -0
- package/dist/components/format/relative-time.d.ts +2 -0
- package/dist/components/format/relative-time.d.ts.map +1 -0
- package/dist/components/format/relative-time.js +5 -0
- package/dist/components/format/relative-time.js.map +1 -0
- package/dist/components/generation-status/generation-status.class.d.ts.map +1 -1
- package/dist/components/generation-status/generation-status.class.js +35 -27
- package/dist/components/generation-status/generation-status.class.js.map +1 -1
- package/dist/components/graph/graph.class.d.ts +1 -0
- package/dist/components/graph/graph.class.d.ts.map +1 -1
- package/dist/components/graph/graph.class.js +11 -3
- package/dist/components/graph/graph.class.js.map +1 -1
- package/dist/components/heatmap/calendar-grid.d.ts +7 -1
- package/dist/components/heatmap/calendar-grid.d.ts.map +1 -1
- package/dist/components/heatmap/calendar-grid.js +9 -2
- package/dist/components/heatmap/calendar-grid.js.map +1 -1
- package/dist/components/heatmap/heatmap.class.d.ts +9 -0
- package/dist/components/heatmap/heatmap.class.d.ts.map +1 -1
- package/dist/components/heatmap/heatmap.class.js +33 -12
- package/dist/components/heatmap/heatmap.class.js.map +1 -1
- package/dist/components/heatmap/heatmap.styles.d.ts.map +1 -1
- package/dist/components/heatmap/heatmap.styles.js +6 -0
- package/dist/components/heatmap/heatmap.styles.js.map +1 -1
- package/dist/components/image-comparer/image-comparer.class.d.ts +43 -0
- package/dist/components/image-comparer/image-comparer.class.d.ts.map +1 -0
- package/dist/components/image-comparer/image-comparer.class.js +92 -0
- package/dist/components/image-comparer/image-comparer.class.js.map +1 -0
- package/dist/components/image-comparer/image-comparer.d.ts +3 -0
- package/dist/components/image-comparer/image-comparer.d.ts.map +1 -0
- package/dist/components/image-comparer/image-comparer.js +5 -0
- package/dist/components/image-comparer/image-comparer.js.map +1 -0
- package/dist/components/image-comparer/image-comparer.styles.d.ts +2 -0
- package/dist/components/image-comparer/image-comparer.styles.d.ts.map +1 -0
- package/dist/components/image-comparer/image-comparer.styles.js +70 -0
- package/dist/components/image-comparer/image-comparer.styles.js.map +1 -0
- package/dist/components/input/input.class.d.ts +12 -3
- package/dist/components/input/input.class.d.ts.map +1 -1
- package/dist/components/input/input.class.js +35 -2
- package/dist/components/input/input.class.js.map +1 -1
- package/dist/components/input/input.styles.d.ts.map +1 -1
- package/dist/components/input/input.styles.js +3 -0
- package/dist/components/input/input.styles.js.map +1 -1
- package/dist/components/input/number-input.class.d.ts +17 -0
- package/dist/components/input/number-input.class.d.ts.map +1 -0
- package/dist/components/input/number-input.class.js +18 -0
- package/dist/components/input/number-input.class.js.map +1 -0
- package/dist/components/input/number-input.d.ts +2 -0
- package/dist/components/input/number-input.d.ts.map +1 -0
- package/dist/components/input/number-input.js +5 -0
- package/dist/components/input/number-input.js.map +1 -0
- package/dist/components/input/time-input.class.d.ts +16 -0
- package/dist/components/input/time-input.class.d.ts.map +1 -0
- package/dist/components/input/time-input.class.js +17 -0
- package/dist/components/input/time-input.class.js.map +1 -0
- package/dist/components/input/time-input.d.ts +2 -0
- package/dist/components/input/time-input.d.ts.map +1 -0
- package/dist/components/input/time-input.js +5 -0
- package/dist/components/input/time-input.js.map +1 -0
- package/dist/components/intersection-observer/intersection-observer.class.d.ts +37 -0
- package/dist/components/intersection-observer/intersection-observer.class.d.ts.map +1 -0
- package/dist/components/intersection-observer/intersection-observer.class.js +77 -0
- package/dist/components/intersection-observer/intersection-observer.class.js.map +1 -0
- package/dist/components/intersection-observer/intersection-observer.d.ts +2 -0
- package/dist/components/intersection-observer/intersection-observer.d.ts.map +1 -0
- package/dist/components/intersection-observer/intersection-observer.js +5 -0
- package/dist/components/intersection-observer/intersection-observer.js.map +1 -0
- package/dist/components/intersection-observer/intersection-observer.styles.d.ts +2 -0
- package/dist/components/intersection-observer/intersection-observer.styles.d.ts.map +1 -0
- package/dist/components/intersection-observer/intersection-observer.styles.js +8 -0
- package/dist/components/intersection-observer/intersection-observer.styles.js.map +1 -0
- package/dist/components/json-viewer/json-viewer.class.js +1 -1
- package/dist/components/json-viewer/json-viewer.class.js.map +1 -1
- package/dist/components/json-viewer/json-viewer.styles.d.ts.map +1 -1
- package/dist/components/json-viewer/json-viewer.styles.js +7 -0
- package/dist/components/json-viewer/json-viewer.styles.js.map +1 -1
- package/dist/components/map/map.class.d.ts +3 -5
- package/dist/components/map/map.class.d.ts.map +1 -1
- package/dist/components/map/map.class.js +8 -6
- package/dist/components/map/map.class.js.map +1 -1
- package/dist/components/markdown/markdown.class.d.ts +5 -5
- package/dist/components/markdown/markdown.class.d.ts.map +1 -1
- package/dist/components/markdown/markdown.class.js +6 -6
- package/dist/components/markdown/markdown.class.js.map +1 -1
- package/dist/components/markdown/markdown.styles.d.ts.map +1 -1
- package/dist/components/markdown/markdown.styles.js +11 -4
- package/dist/components/markdown/markdown.styles.js.map +1 -1
- package/dist/components/media-card/media-card.class.d.ts +12 -1
- package/dist/components/media-card/media-card.class.d.ts.map +1 -1
- package/dist/components/media-card/media-card.class.js +27 -7
- package/dist/components/media-card/media-card.class.js.map +1 -1
- package/dist/components/mention-popover/mention-popover.styles.d.ts.map +1 -1
- package/dist/components/mention-popover/mention-popover.styles.js +2 -0
- package/dist/components/mention-popover/mention-popover.styles.js.map +1 -1
- package/dist/components/menu/dropdown-item.class.d.ts +18 -0
- package/dist/components/menu/dropdown-item.class.d.ts.map +1 -0
- package/dist/components/menu/dropdown-item.class.js +13 -0
- package/dist/components/menu/dropdown-item.class.js.map +1 -0
- package/dist/components/menu/dropdown-item.d.ts +2 -0
- package/dist/components/menu/dropdown-item.d.ts.map +1 -0
- package/dist/components/menu/dropdown-item.js +5 -0
- package/dist/components/menu/dropdown-item.js.map +1 -0
- package/dist/components/mutation-observer/mutation-observer.class.d.ts +40 -0
- package/dist/components/mutation-observer/mutation-observer.class.d.ts.map +1 -0
- package/dist/components/mutation-observer/mutation-observer.class.js +96 -0
- package/dist/components/mutation-observer/mutation-observer.class.js.map +1 -0
- package/dist/components/mutation-observer/mutation-observer.d.ts +2 -0
- package/dist/components/mutation-observer/mutation-observer.d.ts.map +1 -0
- package/dist/components/mutation-observer/mutation-observer.js +5 -0
- package/dist/components/mutation-observer/mutation-observer.js.map +1 -0
- package/dist/components/mutation-observer/mutation-observer.styles.d.ts +2 -0
- package/dist/components/mutation-observer/mutation-observer.styles.d.ts.map +1 -0
- package/dist/components/mutation-observer/mutation-observer.styles.js +8 -0
- package/dist/components/mutation-observer/mutation-observer.styles.js.map +1 -0
- package/dist/components/overlay/dropdown.class.d.ts +21 -0
- package/dist/components/overlay/dropdown.class.d.ts.map +1 -0
- package/dist/components/overlay/dropdown.class.js +18 -0
- package/dist/components/overlay/dropdown.class.js.map +1 -0
- package/dist/components/overlay/dropdown.d.ts +2 -0
- package/dist/components/overlay/dropdown.d.ts.map +1 -0
- package/dist/components/overlay/dropdown.js +5 -0
- package/dist/components/overlay/dropdown.js.map +1 -0
- package/dist/components/overlay/overlay.styles.d.ts +3 -0
- package/dist/components/overlay/overlay.styles.d.ts.map +1 -0
- package/dist/components/overlay/overlay.styles.js +29 -0
- package/dist/components/overlay/overlay.styles.js.map +1 -0
- package/dist/components/overlay/popover.class.d.ts +48 -0
- package/dist/components/overlay/popover.class.d.ts.map +1 -0
- package/dist/components/overlay/popover.class.js +132 -0
- package/dist/components/overlay/popover.class.js.map +1 -0
- package/dist/components/overlay/popover.d.ts +2 -0
- package/dist/components/overlay/popover.d.ts.map +1 -0
- package/dist/components/overlay/popover.js +5 -0
- package/dist/components/overlay/popover.js.map +1 -0
- package/dist/components/overlay/tooltip.class.d.ts +41 -0
- package/dist/components/overlay/tooltip.class.d.ts.map +1 -0
- package/dist/components/overlay/tooltip.class.js +118 -0
- package/dist/components/overlay/tooltip.class.js.map +1 -0
- package/dist/components/overlay/tooltip.d.ts +2 -0
- package/dist/components/overlay/tooltip.d.ts.map +1 -0
- package/dist/components/overlay/tooltip.js +5 -0
- package/dist/components/overlay/tooltip.js.map +1 -0
- package/dist/components/pagination/pagination.class.d.ts +11 -0
- package/dist/components/pagination/pagination.class.d.ts.map +1 -1
- package/dist/components/pagination/pagination.class.js +28 -1
- package/dist/components/pagination/pagination.class.js.map +1 -1
- package/dist/components/phone-input/phone-input.class.d.ts +16 -2
- package/dist/components/phone-input/phone-input.class.d.ts.map +1 -1
- package/dist/components/phone-input/phone-input.class.js +43 -2
- package/dist/components/phone-input/phone-input.class.js.map +1 -1
- package/dist/components/playback/playback.class.d.ts +11 -0
- package/dist/components/playback/playback.class.d.ts.map +1 -1
- package/dist/components/playback/playback.class.js +26 -1
- package/dist/components/playback/playback.class.js.map +1 -1
- package/dist/components/poll-status/poll-status.styles.d.ts.map +1 -1
- package/dist/components/poll-status/poll-status.styles.js +4 -0
- package/dist/components/poll-status/poll-status.styles.js.map +1 -1
- package/dist/components/progress/progress-bar.class.d.ts +30 -0
- package/dist/components/progress/progress-bar.class.d.ts.map +1 -0
- package/dist/components/progress/progress-bar.class.js +61 -0
- package/dist/components/progress/progress-bar.class.js.map +1 -0
- package/dist/components/progress/progress-bar.d.ts +2 -0
- package/dist/components/progress/progress-bar.d.ts.map +1 -0
- package/dist/components/progress/progress-bar.js +5 -0
- package/dist/components/progress/progress-bar.js.map +1 -0
- package/dist/components/progress/progress-ring.class.d.ts +27 -0
- package/dist/components/progress/progress-ring.class.d.ts.map +1 -0
- package/dist/components/progress/progress-ring.class.js +59 -0
- package/dist/components/progress/progress-ring.class.js.map +1 -0
- package/dist/components/progress/progress-ring.d.ts +2 -0
- package/dist/components/progress/progress-ring.d.ts.map +1 -0
- package/dist/components/progress/progress-ring.js +5 -0
- package/dist/components/progress/progress-ring.js.map +1 -0
- package/dist/components/progress/progress.styles.d.ts +3 -0
- package/dist/components/progress/progress.styles.d.ts.map +1 -0
- package/dist/components/progress/progress.styles.js +23 -0
- package/dist/components/progress/progress.styles.js.map +1 -0
- package/dist/components/radio/radio-group.class.d.ts +49 -0
- package/dist/components/radio/radio-group.class.d.ts.map +1 -0
- package/dist/components/radio/radio-group.class.js +137 -0
- package/dist/components/radio/radio-group.class.js.map +1 -0
- package/dist/components/radio/radio-group.d.ts +2 -0
- package/dist/components/radio/radio-group.d.ts.map +1 -0
- package/dist/components/radio/radio-group.js +5 -0
- package/dist/components/radio/radio-group.js.map +1 -0
- package/dist/components/radio/radio-group.styles.d.ts +2 -0
- package/dist/components/radio/radio-group.styles.d.ts.map +1 -0
- package/dist/components/radio/radio-group.styles.js +11 -0
- package/dist/components/radio/radio-group.styles.js.map +1 -0
- package/dist/components/radio/radio.class.d.ts +97 -0
- package/dist/components/radio/radio.class.d.ts.map +1 -0
- package/dist/components/radio/radio.class.js +159 -0
- package/dist/components/radio/radio.class.js.map +1 -0
- package/dist/components/radio/radio.d.ts +2 -0
- package/dist/components/radio/radio.d.ts.map +1 -0
- package/dist/components/radio/radio.js +5 -0
- package/dist/components/radio/radio.js.map +1 -0
- package/dist/components/radio/radio.styles.d.ts +2 -0
- package/dist/components/radio/radio.styles.d.ts.map +1 -0
- package/dist/components/radio/radio.styles.js +57 -0
- package/dist/components/radio/radio.styles.js.map +1 -0
- package/dist/components/rating/rating.class.d.ts +34 -0
- package/dist/components/rating/rating.class.d.ts.map +1 -0
- package/dist/components/rating/rating.class.js +92 -0
- package/dist/components/rating/rating.class.js.map +1 -0
- package/dist/components/rating/rating.d.ts +2 -0
- package/dist/components/rating/rating.d.ts.map +1 -0
- package/dist/components/rating/rating.js +5 -0
- package/dist/components/rating/rating.js.map +1 -0
- package/dist/components/rating/rating.styles.d.ts +2 -0
- package/dist/components/rating/rating.styles.d.ts.map +1 -0
- package/dist/components/rating/rating.styles.js +10 -0
- package/dist/components/rating/rating.styles.js.map +1 -0
- package/dist/components/resize-observer/resize-observer.class.d.ts +37 -0
- package/dist/components/resize-observer/resize-observer.class.d.ts.map +1 -0
- package/dist/components/resize-observer/resize-observer.class.js +74 -0
- package/dist/components/resize-observer/resize-observer.class.js.map +1 -0
- package/dist/components/resize-observer/resize-observer.d.ts +2 -0
- package/dist/components/resize-observer/resize-observer.d.ts.map +1 -0
- package/dist/components/resize-observer/resize-observer.js +5 -0
- package/dist/components/resize-observer/resize-observer.js.map +1 -0
- package/dist/components/resize-observer/resize-observer.styles.d.ts +2 -0
- package/dist/components/resize-observer/resize-observer.styles.d.ts.map +1 -0
- package/dist/components/resize-observer/resize-observer.styles.js +11 -0
- package/dist/components/resize-observer/resize-observer.styles.js.map +1 -0
- package/dist/components/scroller/scroller.class.d.ts +54 -0
- package/dist/components/scroller/scroller.class.d.ts.map +1 -0
- package/dist/components/scroller/scroller.class.js +138 -0
- package/dist/components/scroller/scroller.class.js.map +1 -0
- package/dist/components/scroller/scroller.d.ts +2 -0
- package/dist/components/scroller/scroller.d.ts.map +1 -0
- package/dist/components/scroller/scroller.js +5 -0
- package/dist/components/scroller/scroller.js.map +1 -0
- package/dist/components/scroller/scroller.styles.d.ts +2 -0
- package/dist/components/scroller/scroller.styles.d.ts.map +1 -0
- package/dist/components/scroller/scroller.styles.js +94 -0
- package/dist/components/scroller/scroller.styles.js.map +1 -0
- package/dist/components/segmented/segmented.styles.d.ts.map +1 -1
- package/dist/components/segmented/segmented.styles.js +3 -0
- package/dist/components/segmented/segmented.styles.js.map +1 -1
- package/dist/components/select/select.class.d.ts +10 -0
- package/dist/components/select/select.class.d.ts.map +1 -1
- package/dist/components/select/select.class.js +22 -2
- package/dist/components/select/select.class.js.map +1 -1
- package/dist/components/skeleton/skeleton.class.d.ts +5 -0
- package/dist/components/skeleton/skeleton.class.d.ts.map +1 -1
- package/dist/components/skeleton/skeleton.class.js +17 -2
- package/dist/components/skeleton/skeleton.class.js.map +1 -1
- package/dist/components/skeleton/skeleton.styles.js +2 -2
- package/dist/components/sparkline/sparkline.class.d.ts +3 -1
- package/dist/components/sparkline/sparkline.class.d.ts.map +1 -1
- package/dist/components/sparkline/sparkline.class.js +24 -8
- package/dist/components/sparkline/sparkline.class.js.map +1 -1
- package/dist/components/spinner/spinner.class.d.ts +24 -0
- package/dist/components/spinner/spinner.class.d.ts.map +1 -0
- package/dist/components/spinner/spinner.class.js +41 -0
- package/dist/components/spinner/spinner.class.js.map +1 -0
- package/dist/components/spinner/spinner.d.ts +2 -0
- package/dist/components/spinner/spinner.d.ts.map +1 -0
- package/dist/components/spinner/spinner.js +5 -0
- package/dist/components/spinner/spinner.js.map +1 -0
- package/dist/components/spinner/spinner.styles.d.ts +2 -0
- package/dist/components/spinner/spinner.styles.d.ts.map +1 -0
- package/dist/components/spinner/spinner.styles.js +17 -0
- package/dist/components/spinner/spinner.styles.js.map +1 -0
- package/dist/components/stepper/stepper.styles.d.ts.map +1 -1
- package/dist/components/stepper/stepper.styles.js +4 -0
- package/dist/components/stepper/stepper.styles.js.map +1 -1
- package/dist/components/table/table.class.d.ts +134 -0
- package/dist/components/table/table.class.d.ts.map +1 -1
- package/dist/components/table/table.class.js +446 -80
- package/dist/components/table/table.class.js.map +1 -1
- package/dist/components/table/table.styles.d.ts.map +1 -1
- package/dist/components/table/table.styles.js +95 -0
- package/dist/components/table/table.styles.js.map +1 -1
- package/dist/components/textarea/textarea.class.d.ts +6 -2
- package/dist/components/textarea/textarea.class.d.ts.map +1 -1
- package/dist/components/textarea/textarea.class.js +6 -2
- package/dist/components/textarea/textarea.class.js.map +1 -1
- package/dist/components/tool-call-chip/tool-call-chip.class.d.ts +8 -1
- package/dist/components/tool-call-chip/tool-call-chip.class.d.ts.map +1 -1
- package/dist/components/tool-call-chip/tool-call-chip.class.js +19 -16
- package/dist/components/tool-call-chip/tool-call-chip.class.js.map +1 -1
- package/dist/components/tool-call-chip/tool-call-chip.styles.d.ts.map +1 -1
- package/dist/components/tool-call-chip/tool-call-chip.styles.js +3 -2
- package/dist/components/tool-call-chip/tool-call-chip.styles.js.map +1 -1
- package/dist/components/tool-result-dialog/tool-result-dialog.class.d.ts +12 -1
- package/dist/components/tool-result-dialog/tool-result-dialog.class.d.ts.map +1 -1
- package/dist/components/tool-result-dialog/tool-result-dialog.class.js +25 -11
- package/dist/components/tool-result-dialog/tool-result-dialog.class.js.map +1 -1
- package/dist/components/tool-result-dialog/tool-result-dialog.styles.d.ts.map +1 -1
- package/dist/components/tool-result-dialog/tool-result-dialog.styles.js +3 -1
- package/dist/components/tool-result-dialog/tool-result-dialog.styles.js.map +1 -1
- package/dist/components/zoomable-frame/zoomable-frame.class.d.ts +48 -0
- package/dist/components/zoomable-frame/zoomable-frame.class.d.ts.map +1 -0
- package/dist/components/zoomable-frame/zoomable-frame.class.js +115 -0
- package/dist/components/zoomable-frame/zoomable-frame.class.js.map +1 -0
- package/dist/components/zoomable-frame/zoomable-frame.d.ts +3 -0
- package/dist/components/zoomable-frame/zoomable-frame.d.ts.map +1 -0
- package/dist/components/zoomable-frame/zoomable-frame.js +5 -0
- package/dist/components/zoomable-frame/zoomable-frame.js.map +1 -0
- package/dist/components/zoomable-frame/zoomable-frame.styles.d.ts +2 -0
- package/dist/components/zoomable-frame/zoomable-frame.styles.d.ts.map +1 -0
- package/dist/components/zoomable-frame/zoomable-frame.styles.js +77 -0
- package/dist/components/zoomable-frame/zoomable-frame.styles.js.map +1 -0
- package/dist/internal/localization.d.ts +1 -1
- package/dist/internal/localization.d.ts.map +1 -1
- package/dist/internal/localization.js +46 -0
- package/dist/internal/localization.js.map +1 -1
- package/dist/internal/root-registration-allowlist.d.ts +1 -1
- package/dist/internal/root-registration-allowlist.d.ts.map +1 -1
- package/dist/internal/root-registration-allowlist.js +36 -0
- package/dist/internal/root-registration-allowlist.js.map +1 -1
- package/dist/internal/tokens.styles.d.ts.map +1 -1
- package/dist/internal/tokens.styles.js +17 -0
- package/dist/internal/tokens.styles.js.map +1 -1
- package/dist/lyra.d.ts +97 -4
- package/dist/lyra.d.ts.map +1 -1
- package/dist/lyra.js +72 -0
- package/dist/lyra.js.map +1 -1
- package/dist/testing/happy-dom-shims.d.ts +5 -1
- package/dist/testing/happy-dom-shims.d.ts.map +1 -1
- package/dist/testing/happy-dom-shims.js +7 -1
- package/dist/testing/happy-dom-shims.js.map +1 -1
- package/llms-full.txt +643 -82
- package/llms.txt +13 -0
- package/package.json +73 -1
package/llms-full.txt
CHANGED
|
@@ -206,7 +206,13 @@ shared `FormAssociated` mixin — see gotchas).
|
|
|
206
206
|
- `errorText: string = ''` (attribute `error-text` — static error copy shown below the hint;
|
|
207
207
|
overridden by slotted `error` content when provided)
|
|
208
208
|
- `open: boolean = false` (reflected)
|
|
209
|
-
- `
|
|
209
|
+
- `clearable: boolean = false` (reflected) — displays the clear button while a value is selected
|
|
210
|
+
- `withClear: boolean = false` (attribute `with-clear`) — deprecated compatibility alias for
|
|
211
|
+
`clearable`; either property enables the same clear button
|
|
212
|
+
- `autocomplete: string = 'off'`, `inputMode: string = ''` (attribute `inputmode`),
|
|
213
|
+
`enterKeyHint: string = ''` (attribute `enterkeyhint`), `spellcheck: boolean = true`,
|
|
214
|
+
`autocapitalize: string = ''`, and `autoCorrect: string = ''` (attribute `autocorrect`) — native
|
|
215
|
+
editing-assistance attributes forwarded to the internal filter input
|
|
210
216
|
- `maxOptionsVisible: number = 3` (attribute `max-options-visible` — caps how many selected tags
|
|
211
217
|
show before collapsing to `+N`)
|
|
212
218
|
- `emptyText: string = 'No results'` (attribute `empty-text`)
|
|
@@ -229,6 +235,11 @@ shared `FormAssociated` mixin — see gotchas).
|
|
|
229
235
|
- `selectedRows: ComboboxSourceRow[]` (read-only getter) — structured rows for the current
|
|
230
236
|
selection, including any opaque `data` payload supplied by an async source. Selected async rows
|
|
231
237
|
remain available after the query changes or a later source result no longer contains them
|
|
238
|
+
- `selectionStart`, `selectionEnd`, and `selectionDirection` — selection getters/setters forwarded
|
|
239
|
+
to the internal input
|
|
240
|
+
|
|
241
|
+
**Methods:** `focus(options?)`, `blur()`, `select()`, `setSelectionRange()`, and `setRangeText()`
|
|
242
|
+
forward to the internal input. `setRangeText()` synchronizes the filter query and visible options.
|
|
232
243
|
|
|
233
244
|
`ComboboxSourceRow = { value: string; label: string; sub?: string; icon?: unknown; badge?: string |
|
|
234
245
|
number; accessibleLabel?: string; data?: unknown; dotColor?: string; group?: string; disabled?:
|
|
@@ -245,6 +256,7 @@ one bubbling/composed, non-cancelable plain `input` `Event`, immediately followe
|
|
|
245
256
|
of `change` `Event`. Re-picking the current single value and programmatic/default/reset/restore
|
|
246
257
|
writes are silent. The clear button emits one `lyra-clear` after its `input`/`change` pair.
|
|
247
258
|
`lyra-show` and `lyra-hide` report listbox visibility transitions.
|
|
259
|
+
The internal input's `focus` and `blur` are re-dispatched as bubbling, composed host events.
|
|
248
260
|
|
|
249
261
|
**Slots:** default (`<lyra-option>` children), `label`, `hint`, `error` (overrides the `errorText`
|
|
250
262
|
attribute when provided)
|
|
@@ -315,9 +327,8 @@ collection, while `form.reset()` still returns to the declarative selected defau
|
|
|
315
327
|
synchronous and fires no `input`/`change` event.
|
|
316
328
|
|
|
317
329
|
**Known gotchas:**
|
|
318
|
-
-
|
|
319
|
-
`clearable`
|
|
320
|
-
attribute name here.
|
|
330
|
+
- `with-clear` remains supported for compatibility, but new code should use the mirrored
|
|
331
|
+
`clearable` property/attribute.
|
|
321
332
|
- a host-level `aria-label` attribute on `<lyra-combobox>` now takes priority over `label`/
|
|
322
333
|
`placeholder`/`"Combobox"` when resolving the accessible name on `[part="combobox-input"]` —
|
|
323
334
|
previously it was silently ignored. Matches the same fallback on `<lyra-select>`.
|
|
@@ -716,7 +727,10 @@ shadow-internal native button doesn't participate in an ancestor form's submissi
|
|
|
716
727
|
|
|
717
728
|
**Properties:**
|
|
718
729
|
- `variant: 'neutral' | 'brand' | 'success' | 'warning' | 'danger' = 'neutral'` (reflected)
|
|
719
|
-
- `appearance: 'filled' | 'outlined' | 'plain' = 'filled'` (reflected)
|
|
730
|
+
- `appearance: 'accent' | 'filled' | 'outlined' | 'plain' = 'filled'` (reflected) — `'accent'` is a
|
|
731
|
+
loud, high-contrast filled tier (equivalent to `wa-button`'s own runtime-default appearance),
|
|
732
|
+
distinct from `'filled'` for `variant="neutral"` specifically (`'filled'` reads the ambient
|
|
733
|
+
surface color there; `'accent'` reads a solid neutral fill)
|
|
720
734
|
- `size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected)
|
|
721
735
|
- `type: 'button' | 'submit' | 'reset' = 'button'`
|
|
722
736
|
- `loading: boolean = false` (reflected) — shows an internal spinner and disables the button without
|
|
@@ -734,12 +748,18 @@ unmodified; disabled while `disabled` or `loading`).
|
|
|
734
748
|
|
|
735
749
|
**Themeable custom properties:** `--lyra-button-accent`, `--lyra-button-fill`,
|
|
736
750
|
`--lyra-button-on-fill`, `--lyra-button-border` (each swapped by the active `variant`, default
|
|
737
|
-
`neutral` falls back to plain text/surface/border tokens)
|
|
751
|
+
`neutral` falls back to plain text/surface/border tokens), `--lyra-button-accent-fill`,
|
|
752
|
+
`--lyra-button-accent-on-fill` (the `appearance="accent"` fill/foreground pair; `neutral` falls
|
|
753
|
+
back to `--wa-color-neutral-fill-loud`/`-on-loud`, every other variant reuses that variant's own
|
|
754
|
+
loud fill token), `--lyra-button-hover-brightness` (default `1.08`, the `:hover` filter intensity),
|
|
755
|
+
`--lyra-button-active-scale` (default `0.9875`, the `:active` press-scale, disabled under
|
|
756
|
+
`prefers-reduced-motion`).
|
|
738
757
|
|
|
739
758
|
**Optional peer deps:** none.
|
|
740
759
|
|
|
741
760
|
```html
|
|
742
761
|
<lyra-button variant="brand" appearance="filled">Save</lyra-button>
|
|
762
|
+
<lyra-button variant="neutral" appearance="accent">Save</lyra-button>
|
|
743
763
|
<lyra-button appearance="plain" aria-label="Close dialog"><svg slot="start">...</svg></lyra-button>
|
|
744
764
|
```
|
|
745
765
|
|
|
@@ -747,6 +767,9 @@ unmodified; disabled while `disabled` or `loading`).
|
|
|
747
767
|
- A host `aria-label` is forwarded to the internal button as a literal string (for an icon-only
|
|
748
768
|
button); an external `aria-labelledby`/`aria-describedby` idref is not copied across the shadow
|
|
749
769
|
boundary.
|
|
770
|
+
- Is form-associated (`static formAssociated = true` + `attachInternals()`), so it participates in
|
|
771
|
+
an ancestor `<form>.elements` the same way `wa-button` does — a sibling text field's own
|
|
772
|
+
Enter-to-submit lookup (which scans `form.elements` for a `type === 'submit'` control) finds it.
|
|
750
773
|
|
|
751
774
|
---
|
|
752
775
|
|
|
@@ -767,13 +790,17 @@ form-associated via the same `FormAssociated` mixin as `lyra-textarea`. Ships th
|
|
|
767
790
|
- `errorText: string = ''` (attribute `error-text`)
|
|
768
791
|
- `accessibleLabel: string | null = null` (attribute `aria-label`)
|
|
769
792
|
- `autocomplete: string = ''`
|
|
793
|
+
- `spellcheck: boolean = true` — forwarded to the native input, including `spellcheck="false"`
|
|
794
|
+
- `autocapitalize: string = ''` / `autoCorrect: string = ''`
|
|
795
|
+
- `inputMode: string = ''` / `enterKeyHint: string = ''`
|
|
770
796
|
- `min?: number` / `max?: number` / `step?: number` (attribute: false — `type="number"` only)
|
|
771
797
|
- `passwordVisible: boolean = false` (attribute `password-visible` — `type="password"` only)
|
|
772
798
|
- `name`/`disabled`/`required` (from `FormAssociated`)
|
|
773
799
|
|
|
774
|
-
**Events:** `lyra-input` (`detail: { value }`,
|
|
775
|
-
(`detail: { value }`, fired on the native
|
|
776
|
-
composed from the internal native input's
|
|
800
|
+
**Events:** native-style composed `input` and `change`, plus `lyra-input` (`detail: { value }`,
|
|
801
|
+
fired on every user-driven edit) and `lyra-change` (`detail: { value }`, fired on the native
|
|
802
|
+
`change` timing), `blur`/`focus` (re-dispatched bubbling + composed from the internal native input's
|
|
803
|
+
own `blur`/`focus`).
|
|
777
804
|
|
|
778
805
|
**Slots:** `label`, `hint`, `error`.
|
|
779
806
|
|
|
@@ -798,6 +825,18 @@ composed from the internal native input's own `blur`/`focus`).
|
|
|
798
825
|
`ElementInternals` — not a second hand-rolled regex check.
|
|
799
826
|
- `type="password"` always renders the `password-toggle` button; there is no separate opt-out.
|
|
800
827
|
|
|
828
|
+
## `lyra-number-input`
|
|
829
|
+
|
|
830
|
+
A migration-friendly numeric alias of `lyra-input`. It forces `type="number"` while retaining the
|
|
831
|
+
same form association, label/hint/error chrome, native editing passthrough, input/change events,
|
|
832
|
+
and `min`/`max`/`step` validation. It exposes the same properties, slots, events, and CSS parts as
|
|
833
|
+
`lyra-input`.
|
|
834
|
+
|
|
835
|
+
## `lyra-time-input`
|
|
836
|
+
|
|
837
|
+
A migration-friendly time alias of `lyra-input`. It forces the native `type="time"` while retaining
|
|
838
|
+
the same form association, chrome, native editing passthrough, events, slots, and CSS parts.
|
|
839
|
+
|
|
801
840
|
---
|
|
802
841
|
|
|
803
842
|
## `lyra-phone-input`
|
|
@@ -851,8 +890,9 @@ interface PhoneNumberAdapter {
|
|
|
851
890
|
- `label: string = ''`, `hint: string = ''`, `errorText: string = ''` (attribute `error-text`) —
|
|
852
891
|
visible form-field chrome; each has a matching named slot.
|
|
853
892
|
- `placeholder: string = ''` — forwarded to the native telephone input.
|
|
854
|
-
-
|
|
855
|
-
host `aria-label`, visible `label`, then
|
|
893
|
+
- `accessibleLabel: string | null = null` (attribute `aria-label`) — forwarded to the internal
|
|
894
|
+
telephone input. Name precedence is host `aria-label`, `phoneLabel`, visible `label`, then
|
|
895
|
+
`placeholder`.
|
|
856
896
|
- `phoneLabel: string = ''` (attribute `phone-label`) — explicit accessible-name override for the
|
|
857
897
|
native telephone input.
|
|
858
898
|
- `countryLabel: string = 'Select'` (attribute `country-label`) — country-selector accessible name;
|
|
@@ -867,6 +907,8 @@ interface PhoneNumberAdapter {
|
|
|
867
907
|
- readonly `input: HTMLInputElement | undefined` — the internal native telephone input.
|
|
868
908
|
- readonly `inputValue: string` — editable formatted/partial text, which remains available even when
|
|
869
909
|
canonical `value` is `''`.
|
|
910
|
+
- `selectionStart`, `selectionEnd`, and `selectionDirection` — native selection getters/setters
|
|
911
|
+
forwarded to the telephone input
|
|
870
912
|
- readonly `phoneStatus: PhoneNumberStatus` — current parse state. The host also reflects it through
|
|
871
913
|
`data-phone-status`.
|
|
872
914
|
- readonly `form`, `labels`, `validity`, `validationMessage`, `willValidate`, and
|
|
@@ -878,7 +920,9 @@ text remains in `inputValue`/the native input so validation never makes a number
|
|
|
878
920
|
but its canonical submitted `value` is blank. Native validation feedback is anchored to the
|
|
879
921
|
telephone input, not the adjacent country selector.
|
|
880
922
|
|
|
881
|
-
**Methods:** `focus(options?)`, `blur()`,
|
|
923
|
+
**Methods:** `focus(options?)`, `blur()`, `select()`, `setSelectionRange()`, and `setRangeText()`
|
|
924
|
+
forward to the native telephone input. Range-text edits reparse the number and synchronize the
|
|
925
|
+
canonical value, form value, and validity.
|
|
882
926
|
`setFormValue(value)`, `checkValidity()`, and `reportValidity()` come from `FormAssociated`.
|
|
883
927
|
`form.reset()` restores the original declarative `value` and the default country.
|
|
884
928
|
|
|
@@ -1061,6 +1105,8 @@ Zero-dependency inline SVG trend chart (mirrors `<wa-sparkline>`).
|
|
|
1061
1105
|
- `type: 'line' | 'bar' | 'area' = 'line'`
|
|
1062
1106
|
- `min?: number` (defaults to data minimum)
|
|
1063
1107
|
- `max?: number` (defaults to data maximum)
|
|
1108
|
+
- `accessibleLabel: string | null = null` (attribute `aria-label`) — overrides the localized
|
|
1109
|
+
generated summary on the internal SVG
|
|
1064
1110
|
|
|
1065
1111
|
**Events:** none.
|
|
1066
1112
|
|
|
@@ -1081,9 +1127,9 @@ the reviewed family (pure CSS cascade, no JS/`getComputedStyle` bridging needed)
|
|
|
1081
1127
|
```
|
|
1082
1128
|
|
|
1083
1129
|
**Known gotchas:**
|
|
1084
|
-
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1130
|
+
- The semantic `role="img"` and accessible name live on the SVG that owns the graphic. The generated
|
|
1131
|
+
summary is localized, formats the last value with `effectiveLocale`, and can be replaced through
|
|
1132
|
+
`accessibleLabel`/host `aria-label`. It remains a concise summary rather than a tabular fallback.
|
|
1087
1133
|
- flat data (every value equal, so the auto-computed range spans zero) now renders a centered
|
|
1088
1134
|
midline/mid-height bars instead of collapsing every point to the bottom edge, and a single-value
|
|
1089
1135
|
series renders a visible flat line (a zero-length path was previously invisible). **Every** `type`
|
|
@@ -1113,6 +1159,8 @@ Country/language flag image. Flag artwork ships in a **separate, optional peer p
|
|
|
1113
1159
|
alongside `src` since there's no `country`/`language` to derive a fallback `alt` from.)
|
|
1114
1160
|
- `label?: string` (accessible name / `alt` text — **defaults to a localized, human-readable region
|
|
1115
1161
|
name derived from the *resolved country* code via `Intl.DisplayNames` if omitted**, see gotchas)
|
|
1162
|
+
- `accessibleLabel: string | null = null` (attribute `aria-label`) — takes precedence over `label`
|
|
1163
|
+
and the derived region name; an explicit empty value marks the image decorative
|
|
1116
1164
|
- `round: boolean = false` (reflected — circular crop)
|
|
1117
1165
|
- `variant?: 'compact' | 'standard' | 'detailed'` (attribute `variant`, not reflected — picks a
|
|
1118
1166
|
fidelity tier for the ~65 codes whose source art embeds a coat of arms/seal/emblem; every other
|
|
@@ -1132,9 +1180,8 @@ Country/language flag image. Flag artwork ships in a **separate, optional peer p
|
|
|
1132
1180
|
**CSS parts:** `image`
|
|
1133
1181
|
|
|
1134
1182
|
**Themeable custom properties:** `--lyra-flag-radius` (default `calc(var(--lyra-radius) * 0.33)` —
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
ring around the flag image).
|
|
1183
|
+
non-`round` corner radius), `--lyra-flag-aspect-ratio` (default `4 / 3`), and
|
|
1184
|
+
`--lyra-flag-object-fit` (default `cover`); also consumes `--lyra-color-border` for the inset ring.
|
|
1138
1185
|
|
|
1139
1186
|
**Optional peer deps:** `@aceshooting/lyra-flags` — required for the component to actually render an
|
|
1140
1187
|
image when `country` or `language` is used. Import `components/flag/flag-peer.js` once to opt into
|
|
@@ -1172,8 +1219,8 @@ import '@aceshooting/lyra-ui/components/flag/flag-peer.js';
|
|
|
1172
1219
|
- Rendering is async even when the peer *is* installed: `src` resolves after an `import()` +
|
|
1173
1220
|
resolver call, so there's a brief loading-skeleton window on first paint/attribute change — don't
|
|
1174
1221
|
assume the `<img>` exists synchronously right after setting `country`/`language`.
|
|
1175
|
-
- if `label`
|
|
1176
|
-
`Intl.DisplayNames([
|
|
1222
|
+
- if both `aria-label` and `label` are omitted, the accessible name (`alt`) falls back to a localized
|
|
1223
|
+
region name via `Intl.DisplayNames([effectiveLocale], { type: 'region' })` (e.g. `"United Kingdom"`) instead of
|
|
1177
1224
|
a bare code — for `language="en"` that's derived from `"GB"` (the mapped country), not `"EN"` (the
|
|
1178
1225
|
language tag itself). Falls back further to the bare uppercase code if `Intl.DisplayNames` throws
|
|
1179
1226
|
for an unrecognized region or isn't available. You can still pass an explicit `label` (e.g.
|
|
@@ -1265,6 +1312,9 @@ Loading placeholder (`text`/`circle`/`rect` shapes, `pulse`/`sheen` effects).
|
|
|
1265
1312
|
- `label: string = 'Loading…'` — accessible name for this instance's own `role="status"` (rendered as
|
|
1266
1313
|
visually-hidden text inside `[part="base"]`); override with a description of what's actually
|
|
1267
1314
|
loading, e.g. `label="Loading chart"`
|
|
1315
|
+
- `announce: boolean = true` (reflected) — set false for decorative members of a skeleton group;
|
|
1316
|
+
removes the status role, live-region state, and visually hidden announcement while preserving
|
|
1317
|
+
the visual placeholder
|
|
1268
1318
|
|
|
1269
1319
|
**Events:** none.
|
|
1270
1320
|
|
|
@@ -1273,7 +1323,8 @@ Loading placeholder (`text`/`circle`/`rect` shapes, `pulse`/`sheen` effects).
|
|
|
1273
1323
|
**CSS parts:** `base`
|
|
1274
1324
|
|
|
1275
1325
|
**Themeable custom properties:** `--lyra-skeleton-w`, `--lyra-skeleton-h` (set/cleared by the
|
|
1276
|
-
`width`/`height` properties; default `100%` / `1em`)
|
|
1326
|
+
`width`/`height` properties; default `100%` / `1em`) and shared `--lyra-transition-ambient` for
|
|
1327
|
+
the pulse/sheen timing.
|
|
1277
1328
|
|
|
1278
1329
|
**Optional peer deps:** none.
|
|
1279
1330
|
|
|
@@ -1283,14 +1334,8 @@ Loading placeholder (`text`/`circle`/`rect` shapes, `pulse`/`sheen` effects).
|
|
|
1283
1334
|
```
|
|
1284
1335
|
|
|
1285
1336
|
**Known gotchas:**
|
|
1286
|
-
-
|
|
1287
|
-
`
|
|
1288
|
-
state (e.g. a 10×5 skeleton table = 50 instances) mounts 50 separate live regions at nearly the same
|
|
1289
|
-
tick — expect screen readers to announce the label dozens of times, not once, even if every
|
|
1290
|
-
instance shares the same default `label`. A more specific per-instance `label` doesn't fix the
|
|
1291
|
-
fan-out by itself; there's still no grouping primitive to dedupe it — if it matters, wrap your own
|
|
1292
|
-
single `role="status"` region around the set of skeletons and mark the individual ones
|
|
1293
|
-
`aria-hidden`.
|
|
1337
|
+
- Each instance announces by default. In a repeated skeleton layout, provide one parent status and
|
|
1338
|
+
set `announce="false"` on the decorative child placeholders to avoid duplicate announcements.
|
|
1294
1339
|
- no `lines`/`count` shorthand for "N lines of skeleton text" — stamp out N elements
|
|
1295
1340
|
yourself.
|
|
1296
1341
|
- Respects `prefers-reduced-motion` (both effects) — safe to leave as-is for that concern.
|
|
@@ -1371,25 +1416,27 @@ accent edge and value tint).
|
|
|
1371
1416
|
|
|
1372
1417
|
## `lyra-table`
|
|
1373
1418
|
|
|
1374
|
-
|
|
1375
|
-
|
|
1419
|
+
Sort/select-aware data table. Sorting remains consumer-controlled; optional filtering, pagination,
|
|
1420
|
+
and loading chrome are built in while remaining controlled at the public API boundary.
|
|
1376
1421
|
|
|
1377
1422
|
**Properties:**
|
|
1378
|
-
- `columns: TableColumn<T>[] = []` (attribute: false) — `{ key, label,
|
|
1379
|
-
'start'|'end', priority?: 'medium'|'low', sticky?: boolean
|
|
1423
|
+
- `columns: TableColumn<T>[] = []` (attribute: false) — `{ key, label, headerCell?, width?,
|
|
1424
|
+
minWidth?, sortable?, align?: 'start'|'end', priority?: 'medium'|'low', sticky?: boolean |
|
|
1425
|
+
'start' | 'end', footer?, cellStyle?, cell: (row) => unknown }` —
|
|
1380
1426
|
`priority` progressively hides that column via a `@container` query as `[part='base']` narrows
|
|
1381
1427
|
(`'low'` hides first, under a ~900px container width; `'medium'` next, under ~640px; both
|
|
1382
1428
|
breakpoints are fixed in `table.styles.ts`, not themeable tokens), reversible via
|
|
1383
|
-
`[part='reveal-columns-button']`; `sticky` pins that column's header
|
|
1384
|
-
|
|
1385
|
-
|
|
1429
|
+
`[part='reveal-columns-button']`; `sticky` pins that column's header/cells to the logical start
|
|
1430
|
+
(`true`/`'start'`) or end edge while the table scrolls horizontally — multiple sticky columns stack
|
|
1431
|
+
in logical order (each measures every earlier sticky column's rendered width via
|
|
1386
1432
|
`--lyra-table-sticky-offset`) instead of overlapping at the same edge; `footer` renders a
|
|
1387
1433
|
sticky-bottom footer cell for that column, computed from every currently-rendered row (post-sort,
|
|
1388
1434
|
pre-pagination) — e.g. a column total — omit it for a column with no footer value, and a
|
|
1389
1435
|
`[part='foot']` (`<tfoot>`) only renders at all when at least one column defines `footer`;
|
|
1390
1436
|
`cellStyle` is applied directly to the generated `<td>` via `styleMap` — e.g. a computed heat-tint
|
|
1391
1437
|
background a `cell()`-returned inner element can't paint into the cell's own padding — omit it for
|
|
1392
|
-
no per-cell style override (the default, unchanged output)
|
|
1438
|
+
no per-cell style override (the default, unchanged output); `editable` enables double-click
|
|
1439
|
+
editing, `editValue` supplies the editor value, and `editType` selects `text` or `number`
|
|
1393
1440
|
- `columnsHidden: boolean = false` (attribute `columns-hidden`, reflected) — computed/read-only: true
|
|
1394
1441
|
when a `priority` column is *actually* hidden right now by the `@container` breakpoints above, or
|
|
1395
1442
|
`showAllColumns` force-visible mode is currently active. Measured via a `ResizeObserver` on
|
|
@@ -1407,6 +1454,36 @@ of `rows` — this component only renders and emits intents.
|
|
|
1407
1454
|
when omitted, which is only safe while `rows` never reorders — set it whenever `rows` can be
|
|
1408
1455
|
sorted/filtered/re-ordered across renders, or selection/click can silently attach to the wrong row
|
|
1409
1456
|
- `selectedKey: string | number | null = null` (attribute: false) — **single**-selection only
|
|
1457
|
+
- `selectionMode: 'none'|'single'|'multiple' = 'none'` (attribute `selection-mode`, reflected) —
|
|
1458
|
+
opt-in self-managed row selection; the default remains presentational
|
|
1459
|
+
- `selectedKeys: Set<string | number> = new Set()` (attribute: false) — the selected raw row keys
|
|
1460
|
+
used by multiple selection
|
|
1461
|
+
- `filterable: boolean = false` (attribute `filterable`, reflected) — renders a localized search
|
|
1462
|
+
field above the grid
|
|
1463
|
+
- `filterText: string = ''` (attribute `filter-text`) — controlled filter text
|
|
1464
|
+
- `filter?: (row: T, text: string) => boolean` (attribute: false) — typed predicate used by the
|
|
1465
|
+
filter field; when omitted, rows are matched against their JSON representation
|
|
1466
|
+
- `filterLabel: string = ''` (attribute `filter-label`) and `filterPlaceholder: string = ''`
|
|
1467
|
+
(attribute `filter-placeholder`) — optional localized-label overrides
|
|
1468
|
+
- `loading: boolean = false` (attribute `loading`, reflected) and `loadingLabel: string = ''`
|
|
1469
|
+
(attribute `loading-label`) — renders a busy spinner and suppresses the grid while loading
|
|
1470
|
+
- `pageSize: number = 0` (attribute `page-size`) — positive values enable controlled pagination;
|
|
1471
|
+
zero disables the pagination footer
|
|
1472
|
+
- `page: number = 1` (attribute `page`, reflected) — controlled current page
|
|
1473
|
+
- `totalItems: number = -1` (attribute `total-items`) — server-side total item count; `-1` derives
|
|
1474
|
+
the total from filtered rows
|
|
1475
|
+
- `paginationMode: 'client'|'server' = 'client'` (attribute `pagination-mode`, reflected) — client
|
|
1476
|
+
mode slices rows; server mode renders the supplied page unchanged
|
|
1477
|
+
- Editable columns emit `lyra-cell-edit` on commit and never mutate the supplied row object.
|
|
1478
|
+
- `groupBy?: (row: T) => string | number` (attribute: false) — inserts a non-focusable full-width
|
|
1479
|
+
group row before each group
|
|
1480
|
+
- `groupLabel?: (key: string | number, rows: T[]) => unknown` (attribute: false) — custom group
|
|
1481
|
+
header content; without it, the group key is rendered as text
|
|
1482
|
+
- `expandedContent?: (row: T) => unknown` (attribute: false) — enables a leading expand toggle and
|
|
1483
|
+
renders a full-width detail row beneath expanded records
|
|
1484
|
+
- `canExpand?: (row: T) => boolean` (attribute: false) — optional per-row gate for expansion
|
|
1485
|
+
- `expandedKeys: Set<string | number> = new Set()` (attribute: false) — consumer-controlled expanded
|
|
1486
|
+
state; update it in response to `lyra-row-expand-toggle`
|
|
1410
1487
|
- `hasMore: boolean = false` (attribute `has-more`, reflected)
|
|
1411
1488
|
- `moreLabel: string = 'Load more'` (attribute `more-label`)
|
|
1412
1489
|
- `emptyHeading: string = 'No data'` (attribute `empty-heading`)
|
|
@@ -1417,17 +1494,27 @@ of `rows` — this component only renders and emits intents.
|
|
|
1417
1494
|
reveal-button's label while `priority`-hidden columns are hidden)
|
|
1418
1495
|
- `hideColumnsLabel: string = 'Show fewer columns'` (attribute `hide-columns-label` — the same
|
|
1419
1496
|
button's label once they've been revealed)
|
|
1497
|
+
- `showAllColumns: boolean = false` (attribute `show-all-columns`, reflected) — forces responsive
|
|
1498
|
+
priority columns visible and is updated by the built-in reveal button
|
|
1420
1499
|
|
|
1421
1500
|
**Events:** `lyra-sort` (`detail: { key }`, fired on sortable-header activation), `lyra-row-click`
|
|
1422
1501
|
(`detail: { row }`), `lyra-load-more` (fired on the "load more" button), `lyra-columns-hidden-change`
|
|
1423
|
-
(`detail: { hidden: boolean }`, fired only on a real `columnsHidden` transition)
|
|
1502
|
+
(`detail: { hidden: boolean }`, fired only on a real `columnsHidden` transition),
|
|
1503
|
+
`lyra-columns-revealed` (`detail: { revealed: boolean }`), and `lyra-row-expand-toggle`
|
|
1504
|
+
(`detail: { row, key }`; the table does not mutate `expandedKeys`), and
|
|
1505
|
+
`lyra-selection-change` (`detail: { keys }`) when selection is enabled, `lyra-filter-change`
|
|
1506
|
+
(`detail: { text }`), and `lyra-page-change` (`detail: { page }`) from the controlled
|
|
1507
|
+
filter/pagination surfaces, and `lyra-cell-edit` (`detail: { row, key, value }`) for editable
|
|
1508
|
+
columns
|
|
1424
1509
|
|
|
1425
1510
|
**Slots:** none — content comes entirely from `columns`/`rows`.
|
|
1426
1511
|
|
|
1427
1512
|
**CSS parts:** `base`, `table`, `head`, `header-cell`, `row`, `cell`, `more-button`, `sort-icon` (a
|
|
1428
1513
|
chevron indicator shown on the active sortable header, rotated per `sortDir`), `reveal-columns-button`
|
|
1429
1514
|
(shown only when `columnsHidden` is true), `foot` (the `<tfoot>`, only rendered when at least one
|
|
1430
|
-
column defines `footer`), `footer-row`
|
|
1515
|
+
column defines `footer`), `footer-row`, `footer-cell`, `expand-toggle-cell`, `row-expand-toggle`,
|
|
1516
|
+
`row-expand-icon`, `expanded-row`, `expanded-cell`, `filter-label`, `filter`, `loading`, and
|
|
1517
|
+
`pagination`, `cell-editor`, `group-row`, and `group-cell`
|
|
1431
1518
|
|
|
1432
1519
|
**Themeable custom properties:** `--lyra-table-max-height` (default `none`; controls the scrollable
|
|
1433
1520
|
body's `max-block-size`).
|
|
@@ -1510,6 +1597,9 @@ from its built-in default is treated as an explicit per-instance wording overrid
|
|
|
1510
1597
|
**Events:** `lyra-page-change` (`detail: { page: number }`, bubbles and composes, non-cancelable) —
|
|
1511
1598
|
emitted for a valid, different requested page. The host applies `event.detail.page` back to `page`
|
|
1512
1599
|
after routing, fetching, or any other policy decision.
|
|
1600
|
+
The internal page input's `focus` and `blur` are also bridged as bubbling, composed host events.
|
|
1601
|
+
|
|
1602
|
+
**Methods:** `focus(options?)` and `blur()` forward to the numeric page input.
|
|
1513
1603
|
|
|
1514
1604
|
**Slots:** none.
|
|
1515
1605
|
|
|
@@ -1625,8 +1715,12 @@ immediately) or multi-format (click opens a small menu).
|
|
|
1625
1715
|
not toggle it automatically
|
|
1626
1716
|
- `label: string = 'Export'` — trigger button text; also feeds the format-choice menu's `aria-label`
|
|
1627
1717
|
as `` `${label} format` `` so assistive tech gets an accessible name for the menu
|
|
1718
|
+
- `accessibleLabel: string = ''` (attribute `aria-label`) — overrides the trigger's accessible
|
|
1719
|
+
name and feeds the localized format-menu name without changing the visible label
|
|
1628
1720
|
- `open: boolean = false` (reflected)
|
|
1629
1721
|
|
|
1722
|
+
**Methods:** `focus(options?)` and `blur()` forward to the native trigger button.
|
|
1723
|
+
|
|
1630
1724
|
**Events:** `lyra-export` (`detail: { format: string }`, **cancelable** — call `preventDefault()` to
|
|
1631
1725
|
substitute your own server-generated download instead of the built-in client-side one),
|
|
1632
1726
|
`lyra-export-complete` (`detail: { format: 'csv' | 'json' }`, fires only after a non-cancelled
|
|
@@ -1684,6 +1778,9 @@ downloadBlob(content: string, filename: string, mime: string): void // trig
|
|
|
1684
1778
|
jump to the first/last item once open, Escape closes it and returns focus to the trigger button,
|
|
1685
1779
|
and a completed export also returns focus to the trigger — not just Escape/click-outside as
|
|
1686
1780
|
before.
|
|
1781
|
+
- the positioned menu is constrained to the inline/block space reported by the positioner, wraps
|
|
1782
|
+
long localized format labels/descriptions, scrolls when necessary, and disables its transition
|
|
1783
|
+
under reduced motion.
|
|
1687
1784
|
|
|
1688
1785
|
---
|
|
1689
1786
|
|
|
@@ -1697,6 +1794,13 @@ buttons, this has no code/JSON content model to adopt just to reuse the copy aff
|
|
|
1697
1794
|
|
|
1698
1795
|
**Properties:**
|
|
1699
1796
|
- `value: string = ''` — the plain text to copy.
|
|
1797
|
+
- `accessibleLabel: string | null = null` (attribute `aria-label`) — overrides the localized
|
|
1798
|
+
Copy/Copied accessible name without changing the icon
|
|
1799
|
+
- `disabled: boolean = false` (reflected)
|
|
1800
|
+
- `feedbackDuration: number = 1500` (attribute `feedback-duration`) — milliseconds before the
|
|
1801
|
+
copied checkmark returns to the copy icon; finite values are clamped at zero
|
|
1802
|
+
|
|
1803
|
+
**Methods:** `focus(options?)` and `blur()` forward to the native button.
|
|
1700
1804
|
|
|
1701
1805
|
**Events:** `lyra-copy` (`detail: { text: string }`) — fires on activation, always with the current
|
|
1702
1806
|
`value`, regardless of whether the OS clipboard write actually succeeded (same convention as
|
|
@@ -2112,10 +2216,11 @@ Steps an index through `[0, length)` on a fixed interval — play/pause for time
|
|
|
2112
2216
|
change-tracking sees it and auto-pauses on `hidden = true`)
|
|
2113
2217
|
|
|
2114
2218
|
**Methods:** `play()`, `pause()`, `toggle()`, `next()`, `previous()`, `goTo(index: number)` — all
|
|
2115
|
-
idempotent/clamped; `length <= 1` is a no-op degenerate case.
|
|
2219
|
+
idempotent/clamped; `length <= 1` is a no-op degenerate case. `focus(options?)` and `blur()` forward
|
|
2220
|
+
to the play button.
|
|
2116
2221
|
|
|
2117
2222
|
**Events:** `lyra-play`, `lyra-pause` (no detail), `lyra-step` (`detail: { index }`, fired on every
|
|
2118
|
-
tick and manual step)
|
|
2223
|
+
tick and manual step); internal `focus`/`blur` are bridged as bubbling, composed host events.
|
|
2119
2224
|
|
|
2120
2225
|
**Slots:** none.
|
|
2121
2226
|
|
|
@@ -2242,6 +2347,14 @@ click, or Enter/Space on the focused cell, fires `lyra-cell-click`.
|
|
|
2242
2347
|
`6` Saturday) for a row that would otherwise render a label and, when it returns a string, uses it
|
|
2243
2348
|
instead of the built-in `Intl.DateTimeFormat`-derived short weekday name. Unset (the default)
|
|
2244
2349
|
reproduces today's exact locale-derived output.
|
|
2350
|
+
- `monthLabelText?: (jsMonth: number, year: number) => string | undefined` (attribute: false,
|
|
2351
|
+
calendar mode only) — the month-axis analogue of `weekdayLabelText`: receives the real JS month
|
|
2352
|
+
index (`0` January .. `11` December) and full year for a month boundary that would otherwise
|
|
2353
|
+
render a label, and, when it returns a string, uses it instead of the built-in
|
|
2354
|
+
`Intl.DateTimeFormat`-derived short month name. Unset (the default) reproduces today's exact
|
|
2355
|
+
locale-derived output. Lets month labels track the same locale signal (e.g. an app's own i18n
|
|
2356
|
+
store) as `weekdayLabelText` and the component's other localizable strings, instead of always
|
|
2357
|
+
following the browser/OS-language default.
|
|
2245
2358
|
- `colorSteps?: string[]` (attribute: false) — a discrete array (≥2 entries) of CSS colors used as
|
|
2246
2359
|
exact ramp steps instead of linearly interpolating between `--lyra-heatmap-scale-lo`/`-hi`;
|
|
2247
2360
|
governs both `mode`s and both `scale` values, discretizing whichever scale would otherwise
|
|
@@ -2599,6 +2712,12 @@ Chart.js wrapper every other `lyra-*-chart` tag subclasses; supports both a simp
|
|
|
2599
2712
|
- `config?: Partial<ChartConfiguration>` (attribute: false) — deep-merged over the generated
|
|
2600
2713
|
config; any nested key wins without clobbering sibling generated keys. This is the raw Chart.js
|
|
2601
2714
|
escape hatch, so a caller-supplied `config.type` is passed through rather than normalized.
|
|
2715
|
+
- `accessibleLabel: string = ''` (attribute `accessible-label`) — canvas name override; a host
|
|
2716
|
+
`aria-label` has highest precedence
|
|
2717
|
+
- `accessibleDescription: string = ''` (attribute `accessible-description`) — overrides the
|
|
2718
|
+
localized data/trend summary
|
|
2719
|
+
- `showDataTable: boolean = false` (attribute `show-data-table`) — makes the always-available
|
|
2720
|
+
accessible data table visible rather than screen-reader-only
|
|
2602
2721
|
|
|
2603
2722
|
**Methods:** `resetZoom()` (reset any active zoom/pan to the original view), `refreshTheme()`
|
|
2604
2723
|
(forces a redraw so the `--lyra-chart-*` tokens below are re-read from the current computed style —
|
|
@@ -2642,9 +2761,8 @@ subset actually used.
|
|
|
2642
2761
|
```
|
|
2643
2762
|
|
|
2644
2763
|
**Known gotchas:**
|
|
2645
|
-
- `type`
|
|
2646
|
-
|
|
2647
|
-
needed. Each typed subclass below locks its *own* `type` via a real prototype accessor (see the
|
|
2764
|
+
- supported `type` values are normalized before reaching Chart.js; unknown runtime attribute or
|
|
2765
|
+
property values fall back to `line`. Each typed subclass below locks its *own* `type` via a real prototype accessor (see the
|
|
2648
2766
|
typed-subclasses section) — a genuine runtime lock, not just a compile-time default.
|
|
2649
2767
|
- no global theme-broadcast event exists to auto-retheme an already-drawn chart on a theme switch —
|
|
2650
2768
|
a consumer flipping something upstream (e.g. a `data-theme` attribute) that doesn't otherwise
|
|
@@ -2678,6 +2796,9 @@ subset actually used.
|
|
|
2678
2796
|
changed since the last draw (e.g. an unrelated property/state update, or a bare `requestUpdate()`).
|
|
2679
2797
|
`refreshTheme()` calls `draw()` directly and is unaffected by either gate — it always redraws, since
|
|
2680
2798
|
a theme change isn't reflected in any tracked property.
|
|
2799
|
+
- Chart.js receives `effectiveLocale`; generated summary values use the same locale. Cartesian y/y2
|
|
2800
|
+
axes swap logical sides under RTL, and host `aria-label` is forwarded to the canvas and data-table
|
|
2801
|
+
caption.
|
|
2681
2802
|
|
|
2682
2803
|
---
|
|
2683
2804
|
|
|
@@ -2746,11 +2867,18 @@ passthrough). Not a subclass of `LyraChart`.
|
|
|
2746
2867
|
column in a stacked chart. Empty (the default) reproduces the exact existing output: no bar
|
|
2747
2868
|
carries `data-selected`. This component takes no opinion on what the highlight looks like, only
|
|
2748
2869
|
which bars it applies to — style it via `::part(bar)[data-selected]`.
|
|
2870
|
+
- `minBarHeight?: number` (attribute `min-bar-height`) — optional minimum visible bar height for
|
|
2871
|
+
small non-zero values
|
|
2872
|
+
- `accessibleLabel?: string` (attribute `accessible-label`) — SVG accessible-name override; a host
|
|
2873
|
+
`aria-label` wins
|
|
2749
2874
|
|
|
2750
2875
|
**Events:** `lyra-point-click` — fired when a bar/point is activated (click, or Enter/Space while
|
|
2751
2876
|
focused). `detail: { datasetIndex: number, index: number, label: string | undefined, value: number
|
|
2752
2877
|
| null }` — same shape as `lyra-chart`'s `lyra-point-click`.
|
|
2753
2878
|
|
|
2879
|
+
The axis gutter/title and y-axis labels mirror to logical start under RTL. Built-in mark summaries
|
|
2880
|
+
are complete localized templates and format values with `effectiveLocale`.
|
|
2881
|
+
|
|
2754
2882
|
**Performance:** rendering is `IntersectionObserver`-gated and content-signature-memoized — `render()`
|
|
2755
2883
|
skips recomputing the grid/marks (and reuses the previous `TemplateResult`) while the host is scrolled
|
|
2756
2884
|
off-screen, or when none of the content-affecting properties (`type`, `labels`, `datasets`, `legend`,
|
|
@@ -2880,6 +3008,13 @@ browser). Does **not** extend `LyraChart` — a deliberately bespoke API.
|
|
|
2880
3008
|
- `height: string = '280px'`
|
|
2881
3009
|
- `yLabel: string = ''` (attribute `y-label`)
|
|
2882
3010
|
- `beginAtZero: boolean = true` (attribute `begin-at-zero`)
|
|
3011
|
+
- `accessibleLabel: string = ''` (attribute `accessible-label`) — canvas name override; host
|
|
3012
|
+
`aria-label` wins
|
|
3013
|
+
- `accessibleDescription: string = ''` (attribute `accessible-description`) — overrides the
|
|
3014
|
+
localized five-number summary
|
|
3015
|
+
- `showDataTable: boolean = false` (attribute `show-data-table`) — reveals the accessible data table
|
|
3016
|
+
|
|
3017
|
+
**Methods:** `refreshTheme()` re-reads canvas theme custom properties after an ancestor theme change.
|
|
2883
3018
|
|
|
2884
3019
|
**Events:** none.
|
|
2885
3020
|
|
|
@@ -2903,9 +3038,11 @@ independently of the base `chart-loader.ts`).
|
|
|
2903
3038
|
```
|
|
2904
3039
|
|
|
2905
3040
|
**Known gotchas:**
|
|
2906
|
-
- no raw `config` passthrough
|
|
2907
|
-
`labels`/`boxes`/`legend`/`height`/`yLabel`/`beginAtZero`; can't reach the underlying
|
|
3041
|
+
- no raw `config` passthrough — limited to the properties above; can't reach the underlying
|
|
2908
3042
|
controller's own options (`itemRadius`, `outlierRadius`, `coef`).
|
|
3043
|
+
- Chart.js receives `effectiveLocale`; generated numeric summaries use it, the y axis moves to
|
|
3044
|
+
logical start in RTL, canvas tooltip/axis colors are token-driven, and animation is disabled
|
|
3045
|
+
under reduced motion.
|
|
2909
3046
|
- The peer-dependency-missing failure path (`.catch()` → warn + resolve `null`) is untested —
|
|
2910
3047
|
verify it manually if shipping without the peer installed.
|
|
2911
3048
|
|
|
@@ -3030,8 +3167,11 @@ parsing (that's left entirely to the host).
|
|
|
3030
3167
|
**before** (and takes precedence over) `allowedMimeTypes`
|
|
3031
3168
|
- `maxFileSize: number = 0` (attribute `max-file-size` — bytes; `0` disables the check)
|
|
3032
3169
|
- `label: string = 'Drop files here or click to browse'`
|
|
3170
|
+
- `accessibleLabel: string = ''` (attribute `aria-label`) — overrides `label` as the internal
|
|
3171
|
+
dropzone/button accessible name without changing visible copy
|
|
3033
3172
|
|
|
3034
|
-
**Methods:** `openPicker()`
|
|
3173
|
+
**Methods:** `openPicker()` programmatically opens the native file dialog; `focus(options?)`
|
|
3174
|
+
forwards to the interactive dropzone.
|
|
3035
3175
|
|
|
3036
3176
|
**Events:** `lyra-files` (`detail: { files: File[], rejected: RejectedFile[] }`, fired on both drop
|
|
3037
3177
|
and manual file-picker selection) — `RejectedFile = { file: File; reason: 'type' | 'count' | 'size'
|
|
@@ -3088,6 +3228,219 @@ an extension-only `accept` list.
|
|
|
3088
3228
|
|
|
3089
3229
|
---
|
|
3090
3230
|
|
|
3231
|
+
## `lyra-drawer`
|
|
3232
|
+
|
|
3233
|
+
A modal panel anchored to one edge of the viewport. It inherits the dialog overlay contract:
|
|
3234
|
+
focus trapping, Escape and optional backdrop dismissal, document scroll locking, overlay stacking,
|
|
3235
|
+
accessible naming, and the cancelable `lyra-dialog-close` event.
|
|
3236
|
+
|
|
3237
|
+
**Properties:**
|
|
3238
|
+
- `open: boolean = false` (attribute `open`, reflected) — controls visibility
|
|
3239
|
+
- `placement: 'start'|'end'|'top'|'bottom' = 'start'` (attribute `placement`, reflected)
|
|
3240
|
+
- `heading?: string`, `label: string`, `closable: boolean`, and `noLightDismiss: boolean` — inherited
|
|
3241
|
+
dialog naming and dismissal options
|
|
3242
|
+
|
|
3243
|
+
**CSS parts:** `backdrop`, `panel`, `header`, `heading`, `close-button`, `label`, `body`, `footer`.
|
|
3244
|
+
|
|
3245
|
+
**Themeable custom properties:** `--lyra-drawer-width`, `--lyra-drawer-height`, and inherited
|
|
3246
|
+
dialog surface/overlay tokens.
|
|
3247
|
+
|
|
3248
|
+
```html
|
|
3249
|
+
<lyra-drawer open placement="end" heading="Filters" closable>
|
|
3250
|
+
<lyra-checkbox label="Only active"></lyra-checkbox>
|
|
3251
|
+
</lyra-drawer>
|
|
3252
|
+
```
|
|
3253
|
+
|
|
3254
|
+
---
|
|
3255
|
+
|
|
3256
|
+
## `lyra-carousel`
|
|
3257
|
+
|
|
3258
|
+
Accessible carousel for arbitrary slotted slide elements. It shows one assigned element at a time,
|
|
3259
|
+
adds slide semantics and localized position labels, and provides keyboard, button, and indicator
|
|
3260
|
+
navigation.
|
|
3261
|
+
|
|
3262
|
+
**Properties:**
|
|
3263
|
+
- `index: number = 0` (attribute `index`, reflected) — active slide index
|
|
3264
|
+
- `loop: boolean = false` (attribute `loop`, reflected) — wraps navigation at either end
|
|
3265
|
+
- `autoplay: boolean = false` (attribute `autoplay`, reflected) and `autoplayInterval: number = 5000`
|
|
3266
|
+
(attribute `autoplay-interval`) — optional timed advance; autoplay is disabled under reduced motion
|
|
3267
|
+
- `showIndicators: boolean = true` (attribute `show-indicators`) — renders slide indicator buttons
|
|
3268
|
+
- `accessibleLabel: string = ''` (attribute `accessible-label`) — fallback landmark name; a host
|
|
3269
|
+
`aria-label` takes precedence
|
|
3270
|
+
|
|
3271
|
+
**Methods:** `next()`, `previous()`, and `goTo(index)` update the active index and emit
|
|
3272
|
+
`lyra-slide-change` (`detail: { index }`).
|
|
3273
|
+
|
|
3274
|
+
**CSS parts:** `base`, `viewport`, `track`, `controls`, `previous-button`, `next-button`,
|
|
3275
|
+
`indicators`, and `indicator`.
|
|
3276
|
+
|
|
3277
|
+
```html
|
|
3278
|
+
<lyra-carousel aria-label="Screenshots">
|
|
3279
|
+
<img alt="Dashboard overview" src="overview.png">
|
|
3280
|
+
<img alt="Dashboard details" src="details.png">
|
|
3281
|
+
</lyra-carousel>
|
|
3282
|
+
```
|
|
3283
|
+
|
|
3284
|
+
---
|
|
3285
|
+
|
|
3286
|
+
## `lyra-carousel-item`
|
|
3287
|
+
|
|
3288
|
+
Optional semantic wrapper for one slide in `<lyra-carousel>`. The carousel also accepts arbitrary
|
|
3289
|
+
slotted elements, so this element is useful when a migration needs the explicit item tag.
|
|
3290
|
+
|
|
3291
|
+
**Slots:** default slide content.
|
|
3292
|
+
|
|
3293
|
+
**CSS parts:** `base`.
|
|
3294
|
+
|
|
3295
|
+
```html
|
|
3296
|
+
<lyra-carousel>
|
|
3297
|
+
<lyra-carousel-item>Dashboard overview</lyra-carousel-item>
|
|
3298
|
+
<lyra-carousel-item>Dashboard details</lyra-carousel-item>
|
|
3299
|
+
</lyra-carousel>
|
|
3300
|
+
```
|
|
3301
|
+
|
|
3302
|
+
---
|
|
3303
|
+
|
|
3304
|
+
## `lyra-button-group`
|
|
3305
|
+
|
|
3306
|
+
Responsive semantic grouping primitive for related action controls. It preserves the slotted
|
|
3307
|
+
controls and exposes `role="group"` on its internal wrapper.
|
|
3308
|
+
|
|
3309
|
+
**Properties:**
|
|
3310
|
+
- `orientation: 'horizontal' | 'vertical' = 'horizontal'` (reflected)
|
|
3311
|
+
- `label: string = ''` — accessible group name; a host `aria-label` is used when `label` is empty
|
|
3312
|
+
|
|
3313
|
+
**Slots:** default action controls.
|
|
3314
|
+
|
|
3315
|
+
**CSS parts:** `base`.
|
|
3316
|
+
|
|
3317
|
+
---
|
|
3318
|
+
|
|
3319
|
+
## `lyra-image-comparer`
|
|
3320
|
+
|
|
3321
|
+
Before/after comparison surface with two named slots and a keyboard-accessible native range handle.
|
|
3322
|
+
|
|
3323
|
+
**Properties:**
|
|
3324
|
+
- `position: number = 50` (attribute `position`, reflected) — divider position from 0 to 100
|
|
3325
|
+
- `orientation: 'horizontal'|'vertical' = 'horizontal'` (attribute `orientation`, reflected)
|
|
3326
|
+
- `accessibleLabel: string | null` (attribute `aria-label`) — accessible name for the comparison
|
|
3327
|
+
and its range handle
|
|
3328
|
+
- `beforeLabel`/`afterLabel` — fallback text for empty named slots
|
|
3329
|
+
|
|
3330
|
+
**Events:** `lyra-position-change` (`detail: { position }`), plus composed `focus` and `blur` events
|
|
3331
|
+
from the internal range handle.
|
|
3332
|
+
|
|
3333
|
+
**Slots:** `before`, `after`.
|
|
3334
|
+
|
|
3335
|
+
**CSS parts:** `base`, `before`, `after`, `divider`, and `handle`.
|
|
3336
|
+
|
|
3337
|
+
```html
|
|
3338
|
+
<lyra-image-comparer aria-label="Before and after">
|
|
3339
|
+
<img slot="before" alt="Before" src="before.png">
|
|
3340
|
+
<img slot="after" alt="After" src="after.png">
|
|
3341
|
+
</lyra-image-comparer>
|
|
3342
|
+
```
|
|
3343
|
+
|
|
3344
|
+
---
|
|
3345
|
+
|
|
3346
|
+
## `lyra-zoomable-frame`
|
|
3347
|
+
|
|
3348
|
+
Scrollable inspection frame with bounded zoom controls and keyboard shortcuts. Scrolling provides
|
|
3349
|
+
panning when zoomed content exceeds the viewport.
|
|
3350
|
+
|
|
3351
|
+
**Properties:**
|
|
3352
|
+
- `zoom: number = 1` (attribute `zoom`, reflected), `minZoom: number = 0.5`, `maxZoom: number = 4`,
|
|
3353
|
+
and `zoomStep: number = 0.25` — bounded zoom configuration
|
|
3354
|
+
- `src: string = ''` and `alt: string = ''` — optional image source; otherwise the default slot is
|
|
3355
|
+
rendered
|
|
3356
|
+
- `accessibleLabel: string | null` (attribute `aria-label`) — host-level accessible name
|
|
3357
|
+
|
|
3358
|
+
**Methods:** `zoomIn()`, `zoomOut()`, and `resetZoom()` update the zoom and emit
|
|
3359
|
+
`lyra-zoom-change` (`detail: { zoom }`). The viewport also accepts `+`, `-`, and `0` keyboard
|
|
3360
|
+
shortcuts.
|
|
3361
|
+
|
|
3362
|
+
**CSS parts:** `base`, `viewport`, `content`, `controls`, `zoom-out`, `zoom-in`, and `reset`.
|
|
3363
|
+
|
|
3364
|
+
```html
|
|
3365
|
+
<lyra-zoomable-frame src="map-preview.png" alt="Map preview" aria-label="Map preview"></lyra-zoomable-frame>
|
|
3366
|
+
```
|
|
3367
|
+
|
|
3368
|
+
---
|
|
3369
|
+
|
|
3370
|
+
## `lyra-scroller`
|
|
3371
|
+
|
|
3372
|
+
Responsive overflow surface with optional previous/next controls. The default slot remains the
|
|
3373
|
+
consumer's content, and the viewport is a native scroll container that works in narrow panels as
|
|
3374
|
+
well as full-width layouts.
|
|
3375
|
+
|
|
3376
|
+
**Properties:**
|
|
3377
|
+
- `orientation: 'horizontal' | 'vertical' = 'horizontal'` (reflected)
|
|
3378
|
+
- `controls: boolean = false` (reflected) — show previous/next controls
|
|
3379
|
+
- `hideScrollbar: boolean = false` (attribute `hide-scrollbar`, reflected)
|
|
3380
|
+
- `scrollStep: number = 0` (attribute `scroll-step`) — custom step; zero uses 80% of the viewport
|
|
3381
|
+
- `label: string = ''` — accessible region name; a host `aria-label` is used when set
|
|
3382
|
+
|
|
3383
|
+
**Events:** `lyra-scroll` with `scrollStart`, `scrollEnd`, `scrollLeft`, and `scrollTop` in the
|
|
3384
|
+
detail object.
|
|
3385
|
+
|
|
3386
|
+
**Slots:** default scrollable content.
|
|
3387
|
+
|
|
3388
|
+
**CSS parts:** `base`, `viewport`, `content`, `previous`, and `next`.
|
|
3389
|
+
|
|
3390
|
+
```html
|
|
3391
|
+
<lyra-scroller controls label="Project cards">
|
|
3392
|
+
<lyra-card>Solar</lyra-card>
|
|
3393
|
+
<lyra-card>Wind</lyra-card>
|
|
3394
|
+
<lyra-card>Battery</lyra-card>
|
|
3395
|
+
</lyra-scroller>
|
|
3396
|
+
```
|
|
3397
|
+
|
|
3398
|
+
---
|
|
3399
|
+
|
|
3400
|
+
## `lyra-resize-observer`
|
|
3401
|
+
|
|
3402
|
+
Lifecycle-managed wrapper around the native `ResizeObserver`. It observes all element children in
|
|
3403
|
+
the default slot and emits a composed event, while adding no layout of its own.
|
|
3404
|
+
|
|
3405
|
+
**Properties:** `disabled: boolean = false` (reflected) and `box: 'content-box' | 'border-box' |
|
|
3406
|
+
'device-pixel-content-box' = 'content-box'` (reflected).
|
|
3407
|
+
|
|
3408
|
+
**Events:** `lyra-resize` with `{ entries: ResizeObserverEntry[] }` in `detail`.
|
|
3409
|
+
|
|
3410
|
+
**Slots:** default observed elements. **CSS parts:** `base`.
|
|
3411
|
+
|
|
3412
|
+
---
|
|
3413
|
+
|
|
3414
|
+
## `lyra-intersection-observer`
|
|
3415
|
+
|
|
3416
|
+
Lifecycle-managed wrapper around the native `IntersectionObserver`. It observes all element children
|
|
3417
|
+
in the default slot and emits a composed event, while adding no layout of its own.
|
|
3418
|
+
|
|
3419
|
+
**Properties:** `disabled: boolean = false` (reflected), `rootMargin: string = '0px'` (attribute
|
|
3420
|
+
`root-margin`), `threshold: number | number[] = 0`, and `root: Element | null = null`.
|
|
3421
|
+
|
|
3422
|
+
**Events:** `lyra-intersection` with `{ entries: IntersectionObserverEntry[] }` in `detail`.
|
|
3423
|
+
|
|
3424
|
+
**Slots:** default observed elements. **CSS parts:** `base`.
|
|
3425
|
+
|
|
3426
|
+
---
|
|
3427
|
+
|
|
3428
|
+
## `lyra-mutation-observer`
|
|
3429
|
+
|
|
3430
|
+
Lifecycle-managed wrapper around the native `MutationObserver`. All element children in the default
|
|
3431
|
+
slot are observed and their mutation records are emitted as a composed event; the wrapper itself
|
|
3432
|
+
adds no layout.
|
|
3433
|
+
|
|
3434
|
+
**Properties:** `disabled: boolean = false` (reflected), `childList: boolean = true` (attribute
|
|
3435
|
+
`child-list`), `observeAttributes: boolean = false` (attribute `attributes`), `characterData: boolean = false` (attribute
|
|
3436
|
+
`character-data`), `subtree: boolean = true`, and `attributeFilter: string[] = []`.
|
|
3437
|
+
|
|
3438
|
+
**Events:** `lyra-mutation` with `{ records: MutationRecord[] }` in `detail`.
|
|
3439
|
+
|
|
3440
|
+
**Slots:** default observed elements. **CSS parts:** `base`.
|
|
3441
|
+
|
|
3442
|
+
---
|
|
3443
|
+
|
|
3091
3444
|
## `lyra-dialog` / `confirm()`
|
|
3092
3445
|
|
|
3093
3446
|
General-purpose modal/overlay plus a promise-based confirmation helper built on top of it.
|
|
@@ -3445,7 +3798,7 @@ keyboard.
|
|
|
3445
3798
|
|
|
3446
3799
|
A boolean form control. `role="checkbox"` with an `aria-checked` that can also be `"mixed"`, and a
|
|
3447
3800
|
visual box/checkmark. Structurally the same idea as `<lyra-switch>` (form-associated via
|
|
3448
|
-
`ElementInternals`, click and Space
|
|
3801
|
+
`ElementInternals`, click and Space toggle) but with checkbox semantics.
|
|
3449
3802
|
|
|
3450
3803
|
**Properties:**
|
|
3451
3804
|
- `checked: boolean = false` (reflected)
|
|
@@ -3458,8 +3811,11 @@ visual box/checkmark. Structurally the same idea as `<lyra-switch>` (form-associ
|
|
|
3458
3811
|
- `value: string = 'on'` — only contributed to form submission while `checked` (a native checkbox
|
|
3459
3812
|
submits nothing at all, not even an empty string, while unchecked)
|
|
3460
3813
|
|
|
3461
|
-
**Events:**
|
|
3462
|
-
|
|
3814
|
+
**Events:** user toggles emit bubbling/composed `input`, then `change`, then the compatibility
|
|
3815
|
+
`lyra-change` alias (`detail: { checked: boolean }`). Programmatic `.checked` assignments are
|
|
3816
|
+
silent. Internal `focus`/`blur` are re-dispatched as bubbling, composed host events.
|
|
3817
|
+
|
|
3818
|
+
**Methods:** `focus(options?)` and `blur()` forward to the internal checkbox control.
|
|
3463
3819
|
|
|
3464
3820
|
**Slots:** default — label text, rendered next to the box. Clicking it toggles the checkbox, the
|
|
3465
3821
|
same as clicking a native checkbox's associated `<label>`. If left empty, set `aria-label` on the
|
|
@@ -3785,8 +4141,9 @@ produced HTML in a single pass (no second DOM walk after insertion).
|
|
|
3785
4141
|
the page already finished loading); falls back to the normal async path (with its brief
|
|
3786
4142
|
plain-text-fallback first paint) when the cache isn't warm yet. `false` (the default) is
|
|
3787
4143
|
byte-identical to always taking the async path
|
|
3788
|
-
- `streaming: boolean = false` (reflected) —
|
|
3789
|
-
|
|
4144
|
+
- `streaming: boolean = false` (reflected) — marks the host `aria-busy="true"` while partial Markdown
|
|
4145
|
+
is still arriving and lets consumers target `lyra-markdown[streaming]`; busy state also remains
|
|
4146
|
+
true while parser dependencies are loading
|
|
3790
4147
|
|
|
3791
4148
|
**Events:** `lyra-link-click` (`detail: { href: string, internal: true }`, fired — with the click
|
|
3792
4149
|
prevented — when a rendered link's `href` starts with `internal-link-prefix`; ordinary external
|
|
@@ -4030,7 +4387,7 @@ decorative; `label` is the entire accessible content, nothing narrates individua
|
|
|
4030
4387
|
A compact inline pill representing one tool/function call an agent made mid-conversation, e.g.
|
|
4031
4388
|
`web_search: Searching web…` with a `running` spinner. First-party invention (no Web Awesome
|
|
4032
4389
|
equivalent). It owns no detail surface of its own — activating it (click or Enter/Space while
|
|
4033
|
-
focused)
|
|
4390
|
+
focused) fires `lyra-tool-call-chip-select`; a consumer wires that to opening a
|
|
4034
4391
|
`<lyra-tool-result-dialog>` (or anything else) at the call site, keeping the chip reusable wherever
|
|
4035
4392
|
a compact call summary is useful, with or without a detail surface behind it.
|
|
4036
4393
|
|
|
@@ -4047,10 +4404,11 @@ a compact call summary is useful, with or without a detail surface behind it.
|
|
|
4047
4404
|
- `icon: string = ''` — literal icon hint (e.g. an emoji) rendered when the `icon` slot is empty;
|
|
4048
4405
|
ignored once anything is assigned to `slot="icon"`
|
|
4049
4406
|
- `callId: string = ''` (attribute `call-id`) — unique identifier for this invocation, echoed back
|
|
4050
|
-
in `lyra-tool-chip-select`'s detail so a listener can correlate the click with the call it fired for
|
|
4407
|
+
in `lyra-tool-call-chip-select`'s detail so a listener can correlate the click with the call it fired for
|
|
4051
4408
|
|
|
4052
|
-
**Events:** `lyra-tool-chip-select` (`detail: { name: string; callId: string }`) — fired on
|
|
4053
|
-
Enter/Space activation of the pill.
|
|
4409
|
+
**Events:** `lyra-tool-call-chip-select` (`detail: { name: string; callId: string }`) — fired on
|
|
4410
|
+
click or Enter/Space activation of the pill. The deprecated `lyra-tool-chip-select` alias is fired
|
|
4411
|
+
alongside it for one minor compatibility cycle.
|
|
4054
4412
|
|
|
4055
4413
|
**Slots:** default (rich tooltip/detail content — e.g. the tool's raw arguments or a short preview —
|
|
4056
4414
|
shown in a floating tooltip on hover/focus; nothing renders at all, no hover affordance, when this
|
|
@@ -4080,7 +4438,7 @@ rules, not part of the public theming API); shared tokens referenced: `--lyra-co
|
|
|
4080
4438
|
summary="Searching web…"
|
|
4081
4439
|
duration-ms="820"
|
|
4082
4440
|
call-id="call_123"
|
|
4083
|
-
@lyra-tool-chip-select=${(e) => openDetail(e.detail.callId)}
|
|
4441
|
+
@lyra-tool-call-chip-select=${(e) => openDetail(e.detail.callId)}
|
|
4084
4442
|
>
|
|
4085
4443
|
<pre slot="icon" style="display:none"></pre>
|
|
4086
4444
|
<code>{"query": "lyra ui components"}</code>
|
|
@@ -4271,6 +4629,8 @@ overlay stack.
|
|
|
4271
4629
|
**Properties:**
|
|
4272
4630
|
- `open: boolean = false` (reflected) — whether the dialog is open; set this (or call `close()`) —
|
|
4273
4631
|
there is no separate `show()`/`hide()` pair
|
|
4632
|
+
- `accessibleLabel: string | null = null` (attribute `aria-label`) — directly names the internal
|
|
4633
|
+
dialog panel; otherwise the tool-name title supplies `aria-labelledby`
|
|
4274
4634
|
- `toolName: string = ''` (attribute `tool-name`) — the tool's name, rendered prominently in the
|
|
4275
4635
|
header
|
|
4276
4636
|
- `status: 'pending'|'running'|'success'|'error'|'denied' = 'pending'` (reflected) — drives the
|
|
@@ -4280,12 +4640,12 @@ overlay stack.
|
|
|
4280
4640
|
- `maximized: boolean = false` (reflected) — near-fullscreen presentation of the same open dialog
|
|
4281
4641
|
|
|
4282
4642
|
**Methods:** `close(reason: ToolResultDialogCloseReason = 'api'): void` — closes the dialog (no-op if
|
|
4283
|
-
already closed), emits `lyra-
|
|
4643
|
+
already closed), emits `lyra-close` with `reason`, and returns focus to whatever had it before
|
|
4284
4644
|
the dialog opened. Built-in triggers call this with `'escape'`/`'backdrop'`/`'close-button'`; a
|
|
4285
4645
|
consumer's own close affordance (e.g. a footer action button) should call it directly with its own
|
|
4286
4646
|
reason string so every dismissal path funnels through the same event.
|
|
4287
4647
|
|
|
4288
|
-
**Events:** `lyra-
|
|
4648
|
+
**Events:** `lyra-close` (`detail: ToolResultDialogCloseReason` — `'escape'|'backdrop'|
|
|
4289
4649
|
'close-button'|'api'|string`) fired exactly once per dismissal; `lyra-maximize-change` (`detail:
|
|
4290
4650
|
boolean`, the new `maximized` state) fired when the header's maximize/restore toggle is clicked.
|
|
4291
4651
|
|
|
@@ -4300,7 +4660,8 @@ tool name/status/duration), `tool-name`, `status`, `duration`, `header-actions`,
|
|
|
4300
4660
|
**Themeable custom properties:** `--lyra-tool-result-dialog-overlay-color` (default `rgb(0 0 0 /
|
|
4301
4661
|
0.5)` — the backdrop scrim color; component-specific since no shared overlay token exists),
|
|
4302
4662
|
`--lyra-tool-result-dialog-maximized-inset` (default `var(--lyra-space-l)` — inset applied to the
|
|
4303
|
-
panel while `[maximized]`, overridable e.g. to leave a persistent app rail visible),
|
|
4663
|
+
panel while `[maximized]`, overridable e.g. to leave a persistent app rail visible), and
|
|
4664
|
+
`--lyra-tool-result-dialog-spin` (default `1s linear`, stopped under reduced motion), plus shared
|
|
4304
4665
|
tokens `--lyra-color-surface/-border/-text-quiet/-brand/-brand-quiet/-success/-success-quiet/
|
|
4305
4666
|
-danger/-danger-quiet/-warning/-warning-quiet`, `--lyra-space-*`, `--lyra-radius`, `--lyra-shadow`,
|
|
4306
4667
|
`--lyra-icon-button-size`, `--lyra-focus-ring-*`, `--lyra-transition-base`.
|
|
@@ -4313,7 +4674,7 @@ tokens `--lyra-color-surface/-border/-text-quiet/-brand/-brand-quiet/-success/-s
|
|
|
4313
4674
|
status="success"
|
|
4314
4675
|
duration-ms="1240"
|
|
4315
4676
|
?open=${dialogOpen}
|
|
4316
|
-
@lyra-
|
|
4677
|
+
@lyra-close=${(e) => (dialogOpen = false)}
|
|
4317
4678
|
@lyra-maximize-change=${(e) => console.log('maximized:', e.detail)}
|
|
4318
4679
|
>
|
|
4319
4680
|
<lyra-tabs slot="body">
|
|
@@ -4344,7 +4705,7 @@ state, so no additional scroll-lock/focus-trap bookkeeping is needed for that tr
|
|
|
4344
4705
|
panel template so a slotted `<lyra-tabs>` (or any other light-DOM-scanning child) sees real
|
|
4345
4706
|
projected content rather than a forwarding `<slot>`, while still sharing the overlay stack
|
|
4346
4707
|
- `close()` is a no-op when `open` is already `false` — calling it twice in a row only fires
|
|
4347
|
-
`lyra-
|
|
4708
|
+
`lyra-close` once
|
|
4348
4709
|
- the `maximize`/`close` buttons are always the first elements in the Tab order while open,
|
|
4349
4710
|
regardless of visual position, followed by `body` then `footer` content
|
|
4350
4711
|
|
|
@@ -4374,14 +4735,24 @@ reveals the invalid state, and `form.reset()` clears the touched presentation.
|
|
|
4374
4735
|
built-in button's icon/label (send vs. stop) and whether Enter still submits
|
|
4375
4736
|
- `submitOnEnter: boolean = true` (reflected, attribute `submit-on-enter`) — when `false`, Enter
|
|
4376
4737
|
always inserts a newline instead of submitting
|
|
4738
|
+
- `stoppable: boolean = true` (reflected) — when false, busy states keep a disabled Send button
|
|
4739
|
+
instead of exposing a Stop action
|
|
4740
|
+
- `accessibleLabel: string | null = null` (attribute `aria-label`) — names the internal textarea;
|
|
4741
|
+
wins over placeholder and the localized composer label
|
|
4377
4742
|
- `spellcheck: boolean = true` — forwarded to the internal `<textarea>`
|
|
4378
4743
|
- `autocapitalize: string = ''` — forwarded to the internal `<textarea>`; empty omits the attribute
|
|
4379
4744
|
- `autoCorrect: string = ''` (attribute `autocorrect`) — forwarded to the internal `<textarea>`
|
|
4380
4745
|
(Safari/WebKit-specific); empty omits the attribute. Named `autoCorrect`, not `autocorrect`, only
|
|
4381
4746
|
to dodge a `lib.dom.d.ts` collision with `HTMLElement`'s own `boolean`-typed `autocorrect` IDL
|
|
4382
4747
|
member; the host attribute is explicitly mapped to plain `autocorrect`.
|
|
4748
|
+
- `wrap: 'hard' | 'soft' | 'off' = 'soft'`, `autocomplete: string = ''`, `inputMode: string = ''`
|
|
4749
|
+
(attribute `inputmode`), and `enterKeyHint: string = ''` (attribute `enterkeyhint`) — forwarded to
|
|
4750
|
+
the native textarea
|
|
4751
|
+
- `selectionStart`, `selectionEnd`, and `selectionDirection` — native selection getters/setters
|
|
4383
4752
|
|
|
4384
|
-
**Methods (own):**
|
|
4753
|
+
**Methods (own):** `focus(options?)`, `blur()`, `select()`, `setSelectionRange()`, and
|
|
4754
|
+
`setRangeText()` forward to the textarea; `setRangeText()` synchronizes reactive/form value and
|
|
4755
|
+
auto-sizing. `checkValidity()`/`reportValidity()` remain inherited.
|
|
4385
4756
|
|
|
4386
4757
|
**Events:**
|
|
4387
4758
|
- `lyra-input` (`detail: { value }`) — fired on every user-driven edit of the textarea, not a
|
|
@@ -4496,12 +4867,12 @@ wins when both are present.
|
|
|
4496
4867
|
attachment, leaving only the thumbnail. Has no effect for a non-image chip, or when `compact` is
|
|
4497
4868
|
unset. `false` (the default) reproduces the chip's exact existing output.
|
|
4498
4869
|
- `removeLabel: string = 'Remove'` (attribute `remove-label`) — verb used in the remove button's
|
|
4499
|
-
|
|
4870
|
+
accessible name; the default routes through the complete localized `removeWithContext` template
|
|
4500
4871
|
- `retryLabel: string = 'Retry'` (attribute `retry-label`) — verb used in the retry button's
|
|
4501
|
-
|
|
4872
|
+
accessible name; the default routes through the complete localized attachment template
|
|
4502
4873
|
- `uploadingLabel: string = 'Uploading'` (attribute `uploading-label`) — verb used in the visible
|
|
4503
|
-
uploading status
|
|
4504
|
-
|
|
4874
|
+
uploading status; the untouched default uses complete localized messages for progress,
|
|
4875
|
+
indeterminate state, and filename context so translators can reorder every value
|
|
4505
4876
|
- `uploadFailedLabel: string = 'Upload failed'` (attribute `upload-failed-label`) — visible status
|
|
4506
4877
|
text shown for `status="error"`; override for i18n/locale
|
|
4507
4878
|
|
|
@@ -4526,7 +4897,8 @@ generated internal id is used as a last resort.
|
|
|
4526
4897
|
`done` → success/success-quiet/transparent); `--lyra-attachment-chip-compact-thumbnail-size` (default
|
|
4527
4898
|
`1.75rem`), `--lyra-attachment-chip-compact-font-size` (default `var(--lyra-font-size-xs)`),
|
|
4528
4899
|
`--lyra-attachment-chip-compact-gap` (default `0.25rem`) — govern the chip's thumbnail size, text
|
|
4529
|
-
size, and internal gap while `compact` is set;
|
|
4900
|
+
size, and internal gap while `compact` is set; `--lyra-attachment-chip-spinner-duration` (default
|
|
4901
|
+
`0.8s`) controls the indeterminate rotation and stops under reduced motion; plus shared tokens `--lyra-space-xs`, `--lyra-space-s`,
|
|
4530
4902
|
`--lyra-radius`, `--lyra-color-text`, `--lyra-color-danger`, `--lyra-icon-button-size`,
|
|
4531
4903
|
`--lyra-transition-fast`, `--lyra-transition-base`, `--lyra-focus-ring-width`,
|
|
4532
4904
|
`--lyra-focus-ring-color`, `--lyra-focus-ring-offset`.
|
|
@@ -5287,7 +5659,8 @@ anything about `<lyra-source-card>`, it only carries the id through its event de
|
|
|
5287
5659
|
echoed back verbatim in both events; never read or validated by this component.
|
|
5288
5660
|
- `href: string = ''` — optional direct link target for the citation's source, carried into
|
|
5289
5661
|
`lyra-citation-open`'s detail as-is; this component never navigates.
|
|
5290
|
-
- `label: string = ''` — overrides the computed accessible name
|
|
5662
|
+
- `label: string = ''` — overrides the computed accessible name. The built-in citation/status
|
|
5663
|
+
summary is a complete localized template; a host `aria-label` has highest precedence.
|
|
5291
5664
|
|
|
5292
5665
|
**Events:**
|
|
5293
5666
|
- `lyra-citation-activate` (`detail: { sourceId: string; index: number }`) — fires on click, or on
|
|
@@ -5301,6 +5674,8 @@ anything about `<lyra-source-card>`, it only carries the id through its event de
|
|
|
5301
5674
|
**Slots:** default — rich preview/tooltip content (e.g. a filename + excerpt), shown in a floating
|
|
5302
5675
|
popover on hover/focus. This is *not* the badge's visible content (the badge always renders
|
|
5303
5676
|
`[index]`); nothing renders at all (no hover affordance) when this slot is empty.
|
|
5677
|
+
When populated, the button carries `aria-describedby` referencing the same-shadow-tree popover,
|
|
5678
|
+
which owns `role="tooltip"` whether currently shown or hidden.
|
|
5304
5679
|
|
|
5305
5680
|
**CSS parts:** `base` (the clickable `<button>`), `bracket` (each of the two literal `[`/`]` glyphs),
|
|
5306
5681
|
`index` (the citation number), `popover` (the floating preview panel, only meaningful while open).
|
|
@@ -5412,7 +5787,8 @@ while collapsed).
|
|
|
5412
5787
|
expand/collapse, which only ever hides/shows the *set* of cards, never a single card's own content.
|
|
5413
5788
|
- `lyra-open` (`detail: { sourceId: string; href?: string }`) — the title was activated. This
|
|
5414
5789
|
component never navigates on its own (a controlled component, the same convention
|
|
5415
|
-
`<lyra-tool-call-chip>`'s `lyra-tool-chip-select` follows); a listener decides what "open"
|
|
5790
|
+
`<lyra-tool-call-chip>`'s `lyra-tool-call-chip-select` follows); a listener decides what "open"
|
|
5791
|
+
means.
|
|
5416
5792
|
|
|
5417
5793
|
**Slots:** `excerpt` (a short preview; when left empty, the `excerpt` part collapses away entirely —
|
|
5418
5794
|
its wrapper is `hidden`, not just visually empty), `full` (the complete source text/chunk, hidden
|
|
@@ -6192,6 +6568,8 @@ and it's what every instance renders at zero extra bytes until shiki resolves.
|
|
|
6192
6568
|
`"json"`); when unset, or when shiki doesn't recognize it, the code renders as plain unhighlighted
|
|
6193
6569
|
text regardless of whether shiki itself is available
|
|
6194
6570
|
- `filename: string = ''` — shown in the header, when set
|
|
6571
|
+
- `accessibleLabel: string = ''` (attribute `aria-label`) — names the internal focusable code-body
|
|
6572
|
+
region; otherwise a localized filename/language description is generated
|
|
6195
6573
|
- `collapsible: boolean = false` (reflected) — shows the collapse/expand chevron button
|
|
6196
6574
|
- `collapsed: boolean = false` (reflected) — only has a visible effect while `collapsible` is also
|
|
6197
6575
|
true
|
|
@@ -6302,6 +6680,8 @@ toggle, the loading-skeleton behavior while the fine-grained highlighter resolve
|
|
|
6302
6680
|
key in `languages`, the code renders as plain unhighlighted text — this component has no
|
|
6303
6681
|
default/full-table highlighter to fall back to.
|
|
6304
6682
|
- `filename: string = ''` — shown in the header, when set.
|
|
6683
|
+
- `accessibleLabel: string = ''` (attribute `aria-label`) — names the internal focusable code-body
|
|
6684
|
+
region; otherwise a localized filename/language description is generated.
|
|
6305
6685
|
- `collapsible: boolean = false` (reflected) — shows the collapse/expand chevron button.
|
|
6306
6686
|
- `collapsed: boolean = false` (reflected) — only has a visible effect while `collapsible` is also
|
|
6307
6687
|
true.
|
|
@@ -6749,6 +7129,21 @@ not rendered at all for `type="normal"`)
|
|
|
6749
7129
|
|
|
6750
7130
|
**Optional peer deps:** none.
|
|
6751
7131
|
|
|
7132
|
+
### `lyra-dropdown-item`
|
|
7133
|
+
|
|
7134
|
+
Compatibility naming alias for `<lyra-menu-item>`. It is a subclass of the same implementation,
|
|
7135
|
+
so `value`, `disabled`, `destructive`, `type`, `checked`, `select()`, checkbox events, and menu
|
|
7136
|
+
roving focus behave identically.
|
|
7137
|
+
|
|
7138
|
+
**Slots:** default label content and optional `icon`.
|
|
7139
|
+
|
|
7140
|
+
```html
|
|
7141
|
+
<lyra-menu>
|
|
7142
|
+
<button slot="trigger">Actions</button>
|
|
7143
|
+
<lyra-dropdown-item value="archive">Archive</lyra-dropdown-item>
|
|
7144
|
+
</lyra-menu>
|
|
7145
|
+
```
|
|
7146
|
+
|
|
6752
7147
|
```html
|
|
6753
7148
|
<lyra-menu label="Row actions">
|
|
6754
7149
|
<button slot="trigger" aria-label="More actions">⋮</button>
|
|
@@ -6871,9 +7266,9 @@ children are the chips (the same shape `<lyra-split>`'s panels / `<lyra-source-l
|
|
|
6871
7266
|
no `.items` array prop).
|
|
6872
7267
|
|
|
6873
7268
|
**Properties:**
|
|
6874
|
-
- `maxVisible?: number` (attribute `max-visible`) — maximum number of
|
|
6875
|
-
the rest collapse behind a "+N" indicator;
|
|
6876
|
-
|
|
7269
|
+
- `maxVisible?: number` (attribute `max-visible`) — maximum number of assigned children shown before
|
|
7270
|
+
the rest collapse behind a "+N" indicator; flattened slot-forwarded children count the same as
|
|
7271
|
+
direct children. Unset means no limit
|
|
6877
7272
|
|
|
6878
7273
|
**Events:** `lyra-overflow-toggle` (`detail: { expanded }` — the overflow indicator was activated,
|
|
6879
7274
|
revealing or re-collapsing the excess children; fires only from that click, i.e. only when
|
|
@@ -7032,6 +7427,9 @@ used" summary.
|
|
|
7032
7427
|
- `label: string = ''` — overall accessible caption, e.g. `"128K context window"`. Also rendered
|
|
7033
7428
|
visually (`[part="label"]`) when set.
|
|
7034
7429
|
|
|
7430
|
+
Accessible summaries, segment tooltips, and ring titles format quantities using `effectiveLocale`.
|
|
7431
|
+
A host `aria-label` overrides the generated meter summary and is preserved across reactive updates.
|
|
7432
|
+
|
|
7035
7433
|
**Events:** none.
|
|
7036
7434
|
|
|
7037
7435
|
**Slots:** none.
|
|
@@ -7228,6 +7626,8 @@ fallback simply omits `[part="download-link"]` entirely.
|
|
|
7228
7626
|
`<img>`/the anchor.
|
|
7229
7627
|
- `mimeType: string = ''` (attribute `mime-type`) — drives format dispatch (see above).
|
|
7230
7628
|
- `filename: string = ''` — shown in the header and used as the download link's suggested filename.
|
|
7629
|
+
- `alt?: string` — image description. When omitted, the filename/localized image-preview fallback
|
|
7630
|
+
is used; an explicit empty string keeps a decorative preview's `alt=""` intact.
|
|
7231
7631
|
- `status: 'idle' | 'converting' | 'ready' | 'error' = 'idle'` (reflected) — host-owned lifecycle
|
|
7232
7632
|
state. `"converting"` shows the spinner regardless of `mimeType`/`src`; `"error"` shows
|
|
7233
7633
|
`errorMessage` regardless of either. `"idle"`/`"ready"` both resume normal format dispatch — a host
|
|
@@ -7262,8 +7662,8 @@ above; excludes `data:` even though the other two sinks allow it)
|
|
|
7262
7662
|
**Themeable custom properties:** `--lyra-document-preview-max-height` (default `none`) — the
|
|
7263
7663
|
consumer-tunable scroll cap on `[part="body"]`, set from `max-height`; `none` means the preview grows
|
|
7264
7664
|
with its content until a caller opts in. `--lyra-document-preview-font` (default `ui-monospace,
|
|
7265
|
-
SFMono-Regular, Menlo, Consolas, monospace`)
|
|
7266
|
-
|
|
7665
|
+
SFMono-Regular, Menlo, Consolas, monospace`) and `--lyra-document-preview-spin-duration` (default
|
|
7666
|
+
`0.8s`, stopped under reduced motion). Plus shared tokens
|
|
7267
7667
|
`--lyra-color-border`, `--lyra-radius`, `--lyra-color-surface`, `--lyra-space-s/-m/-l/-xs`,
|
|
7268
7668
|
`--lyra-color-text`, `--lyra-color-text-quiet`, `--lyra-color-danger`, `--lyra-color-brand`,
|
|
7269
7669
|
`--lyra-color-on-brand`, `--lyra-focus-ring-width/-color/-offset`, `--lyra-transition-fast`.
|
|
@@ -7304,6 +7704,8 @@ available, the region becomes a standard `role="progressbar"` instead, self-desc
|
|
|
7304
7704
|
- The component's own text/JSON `fetch(src)` is a *different* async operation from the host-driven
|
|
7305
7705
|
`status="converting"` conversion. A failed fetch fires `lyra-render-error` and renders
|
|
7306
7706
|
`[part="error"]` on its own; it never sets `status="error"` itself.
|
|
7707
|
+
- changing `src` aborts the superseded text fetch as well as ignoring any stale completion; removing
|
|
7708
|
+
the component aborts its active request.
|
|
7307
7709
|
- `progress` is only ever consulted for the host-driven `"converting"` state — this component's own
|
|
7308
7710
|
in-flight text fetch always renders the indeterminate spinner, with no numeric-progress path.
|
|
7309
7711
|
- The `unsupported` slot's initial presence is detected once, before the first render, by scanning
|
|
@@ -7340,6 +7742,8 @@ final.
|
|
|
7340
7742
|
filename, and folded into the accessible name.
|
|
7341
7743
|
- `alt: string = ''` — alt text for the image case (and reused as a video label fallback). Falls
|
|
7342
7744
|
back to `filename`, then a generic per-kind description.
|
|
7745
|
+
- `accessibleLabel: string = ''` (attribute `aria-label`) — overrides the localized action name on
|
|
7746
|
+
the actual button/link without replacing image alt text or the video control's own label
|
|
7343
7747
|
- `maxHeight: string = ''` (attribute `max-height`) — a CSS length (e.g. `"16rem"`); once set,
|
|
7344
7748
|
overrides the `--lyra-media-card-max-height` custom property for this instance only (applied
|
|
7345
7749
|
inline on `[part="base"]`, so it reliably wins over a `:host{}`-declared default from outside the
|
|
@@ -7638,6 +8042,8 @@ user-menu affordance.
|
|
|
7638
8042
|
- `src?: string` — image URL; takes priority over `initials` when set and loads successfully, falling
|
|
7639
8043
|
back to `initials` on a load error.
|
|
7640
8044
|
- `alt: string = ''` — image alt text; set alongside `src` for accessibility.
|
|
8045
|
+
- host `aria-label` — overrides `alt` as the image/fallback accessible name without changing the
|
|
8046
|
+
visible initials or image
|
|
7641
8047
|
- `size: 'sm' | 'md' | 'lg' = 'md'` (reflected).
|
|
7642
8048
|
- `shape: 'circle' | 'square' = 'circle'` (reflected).
|
|
7643
8049
|
- `tone: 'neutral' | 'brand' | 'success' | 'warning' | 'danger' = 'neutral'` (reflected) — recolors
|
|
@@ -7666,13 +8072,10 @@ var(--lyra-color-border))`, swapped per `tone`), `--lyra-avatar-color` (default
|
|
|
7666
8072
|
```
|
|
7667
8073
|
|
|
7668
8074
|
**Known gotchas:**
|
|
7669
|
-
- an image load failure falls back to `initials` automatically
|
|
7670
|
-
state
|
|
7671
|
-
|
|
7672
|
-
|
|
7673
|
-
is actually showing — so if `src`/`alt` are both set but the image fails to load, the rendered
|
|
7674
|
-
initials text is still hidden from assistive tech, leaving the avatar with no accessible name of
|
|
7675
|
-
its own unless the surrounding context supplies one.
|
|
8075
|
+
- an image load failure falls back to `initials` automatically. Changing `src` clears the failure
|
|
8076
|
+
state so the replacement URL gets its own load attempt.
|
|
8077
|
+
- when `alt` or host `aria-label` supplies a name, the base preserves that name through the
|
|
8078
|
+
initials fallback while hiding duplicate initials text from assistive technology.
|
|
7676
8079
|
|
|
7677
8080
|
---
|
|
7678
8081
|
|
|
@@ -7732,6 +8135,164 @@ the `footer` slot, hidden entirely when empty).
|
|
|
7732
8135
|
|
|
7733
8136
|
---
|
|
7734
8137
|
|
|
8138
|
+
## `lyra-radio`
|
|
8139
|
+
|
|
8140
|
+
A form-associated single-choice control. Use it alone or inside `lyra-radio-group`.
|
|
8141
|
+
|
|
8142
|
+
**Properties:** `checked`, `disabled`, `required`, `name`, and `value` (all reflected where
|
|
8143
|
+
applicable). A selected radio submits its value through `ElementInternals`.
|
|
8144
|
+
|
|
8145
|
+
**Events:** native-style composed `input` and `change`, plus `lyra-change` with
|
|
8146
|
+
`{ checked, value }`.
|
|
8147
|
+
|
|
8148
|
+
**Slots:** default label content.
|
|
8149
|
+
|
|
8150
|
+
**CSS parts:** `base`, `circle`, `dot`, `label`.
|
|
8151
|
+
|
|
8152
|
+
```html
|
|
8153
|
+
<lyra-radio name="format" value="json">JSON</lyra-radio>
|
|
8154
|
+
```
|
|
8155
|
+
|
|
8156
|
+
## `lyra-popover`
|
|
8157
|
+
|
|
8158
|
+
A click-triggered, light-dismiss floating surface positioned with the shared Floating UI positioner.
|
|
8159
|
+
|
|
8160
|
+
**Properties:** `open`, `placement`, `distance`, `accessibleLabel` (`aria-label`), and `popupRole` (`popup-role`).
|
|
8161
|
+
**Events:** `lyra-show`, `lyra-hide`. **Slots:** `trigger`, default content. **CSS parts:** `trigger`,
|
|
8162
|
+
`popup`, `content`.
|
|
8163
|
+
|
|
8164
|
+
## `lyra-tooltip`
|
|
8165
|
+
|
|
8166
|
+
A hover/focus tooltip positioned with the shared Floating UI positioner.
|
|
8167
|
+
|
|
8168
|
+
**Properties:** `open`, `manual`, `delay`, `placement`, `distance`, `content`, and
|
|
8169
|
+
`accessibleLabel` (`aria-label`). **Slots:** `trigger`, default content. **CSS parts:**
|
|
8170
|
+
`trigger`, `popup`.
|
|
8171
|
+
|
|
8172
|
+
## `lyra-dropdown`
|
|
8173
|
+
|
|
8174
|
+
A menu-role popover for consumer-supplied action content. Compose `lyra-menu` when full roving
|
|
8175
|
+
menu-item behavior is needed.
|
|
8176
|
+
|
|
8177
|
+
**Properties:** `open`, `placement`, `distance`, `accessibleLabel` (`aria-label`), and `popupRole` (`popup-role`).
|
|
8178
|
+
**Slots:** `trigger`, default menu content. **CSS parts:** `trigger`, `popup`, `content`.
|
|
8179
|
+
|
|
8180
|
+
## `lyra-radio-group`
|
|
8181
|
+
|
|
8182
|
+
A labeled, keyboard-navigable group of `lyra-radio` controls. Arrow keys, Home, and End move
|
|
8183
|
+
focus; arrow navigation selects the next enabled radio.
|
|
8184
|
+
|
|
8185
|
+
**Properties:** `label`, `hint`, `errorText` (`error-text`), `name`, `required`, `disabled`, and
|
|
8186
|
+
`aria-label` (through `accessibleLabel`).
|
|
8187
|
+
|
|
8188
|
+
**Events:** `lyra-change` with `{ value, radio }`.
|
|
8189
|
+
|
|
8190
|
+
**Slots:** default radios, `label`, `hint`, `error`.
|
|
8191
|
+
|
|
8192
|
+
**CSS parts:** `base`, `label`, `hint`, `error`.
|
|
8193
|
+
|
|
8194
|
+
## `lyra-spinner`
|
|
8195
|
+
|
|
8196
|
+
An indeterminate busy indicator with a localized `role="status"` name.
|
|
8197
|
+
|
|
8198
|
+
**Properties:** `labelPlacement` (`label-placement`): `'none' | 'after'` and `accessibleLabel`
|
|
8199
|
+
(`accessible-label`).
|
|
8200
|
+
|
|
8201
|
+
**Slots:** default optional visible label. **CSS parts:** `base`, `spinner`, `label`.
|
|
8202
|
+
|
|
8203
|
+
## `lyra-progress-bar`
|
|
8204
|
+
|
|
8205
|
+
A determinate or indeterminate progress bar.
|
|
8206
|
+
|
|
8207
|
+
**Properties:** `value`, `max`, `indeterminate`, `variant`, `showValue` (`show-value`), and
|
|
8208
|
+
`accessibleLabel` (`accessible-label`).
|
|
8209
|
+
The rendered progressbar exposes `aria-valuemin`, `aria-valuemax`, and `aria-valuenow` when
|
|
8210
|
+
determinate.
|
|
8211
|
+
|
|
8212
|
+
**Slots:** `label`. **CSS parts:** `base`, `track`, `indicator`, `label`.
|
|
8213
|
+
|
|
8214
|
+
## `lyra-progress-ring`
|
|
8215
|
+
|
|
8216
|
+
A circular progress indicator with the same value contract as `lyra-progress-bar`.
|
|
8217
|
+
|
|
8218
|
+
**Properties:** `value`, `max`, `indeterminate`, and `accessibleLabel` (`accessible-label`).
|
|
8219
|
+
**Slots:** default center label. **CSS parts:** `base`, `track`, `indicator`, `label`.
|
|
8220
|
+
|
|
8221
|
+
## `lyra-badge` and `lyra-tag`
|
|
8222
|
+
|
|
8223
|
+
Compact status labels. Both expose `variant: 'neutral' | 'brand' | 'success' | 'warning' | 'danger'`.
|
|
8224
|
+
The two tags share the same visual contract; `lyra-tag` is a semantic alias for migration-friendly
|
|
8225
|
+
markup.
|
|
8226
|
+
|
|
8227
|
+
**Slots:** default content. **CSS parts:** `base`.
|
|
8228
|
+
|
|
8229
|
+
## `lyra-callout`
|
|
8230
|
+
|
|
8231
|
+
An inline status, warning, or error surface.
|
|
8232
|
+
|
|
8233
|
+
**Properties:** `variant`, `heading`, `closable`, `open`, and `accessibleLabel` (`accessible-label`).
|
|
8234
|
+
|
|
8235
|
+
**Events:** cancelable `lyra-close`; the callout hides after the event unless a listener calls
|
|
8236
|
+
`preventDefault()`.
|
|
8237
|
+
|
|
8238
|
+
**Slots:** default message, `heading`, `icon`. **CSS parts:** `base`, `icon`, `content`, `heading`,
|
|
8239
|
+
`close-button`.
|
|
8240
|
+
|
|
8241
|
+
## `lyra-details`, `lyra-accordion`, and `lyra-accordion-item`
|
|
8242
|
+
|
|
8243
|
+
`lyra-details` is a native-semantics disclosure panel. `lyra-accordion` coordinates slotted
|
|
8244
|
+
details panels and closes siblings unless `multiple` is true. `lyra-accordion-item` is an
|
|
8245
|
+
accordion-compatible alias.
|
|
8246
|
+
|
|
8247
|
+
**Properties:** `open`, `disabled`, and `summary` on details/items; `multiple` on accordion.
|
|
8248
|
+
**Events:** `lyra-toggle` with `{ open }` from details/items. **Slots:** `summary` and default
|
|
8249
|
+
content on details/items; default panels on accordion. **CSS parts:** `base`, `summary`, `content`
|
|
8250
|
+
on details/items; `base` on accordion.
|
|
8251
|
+
|
|
8252
|
+
## `lyra-divider`
|
|
8253
|
+
|
|
8254
|
+
A semantic separator with `orientation: 'horizontal' | 'vertical'`. **CSS part:** `base`.
|
|
8255
|
+
|
|
8256
|
+
## `lyra-breadcrumb` and `lyra-breadcrumb-item`
|
|
8257
|
+
|
|
8258
|
+
Responsive navigation trail primitives. Breadcrumb has `accessibleLabel` (`accessible-label`);
|
|
8259
|
+
items have `href` and `current`. Breadcrumb slots default items; item slots default label content.
|
|
8260
|
+
Breadcrumb exposes `base`; item exposes `base`.
|
|
8261
|
+
|
|
8262
|
+
## `lyra-format-number`
|
|
8263
|
+
|
|
8264
|
+
Locale-aware `Intl.NumberFormat` output. **Properties:** `value`, `locale`, `currency`, `notation`,
|
|
8265
|
+
`minimumFractionDigits`, and `maximumFractionDigits`. Default slot is fallback content for a
|
|
8266
|
+
non-finite value.
|
|
8267
|
+
|
|
8268
|
+
## `lyra-format-date`
|
|
8269
|
+
|
|
8270
|
+
Locale-aware `Intl.DateTimeFormat` output. **Properties:** `date`, `locale`, `year`, `month`, `day`,
|
|
8271
|
+
`dateStyle`, and `timeStyle`. Default slot is fallback content for an invalid date.
|
|
8272
|
+
|
|
8273
|
+
## `lyra-format-bytes`
|
|
8274
|
+
|
|
8275
|
+
Locale-aware byte-size output. **Properties:** `value`, `locale`, `unitStep` (`unit-step`), and
|
|
8276
|
+
`decimals`.
|
|
8277
|
+
|
|
8278
|
+
## `lyra-relative-time`
|
|
8279
|
+
|
|
8280
|
+
Locale-aware relative time output. **Properties:** `date`, `locale`, `unit`, `numeric`, and `sync`.
|
|
8281
|
+
When `sync` is true the displayed value refreshes periodically.
|
|
8282
|
+
|
|
8283
|
+
## `lyra-rating`
|
|
8284
|
+
|
|
8285
|
+
A keyboard-accessible star rating control with slider semantics. **Properties:** `value`, `max`,
|
|
8286
|
+
`precision`, `readonly`, `disabled`, and `accessibleLabel` (`aria-label`). **Events:**
|
|
8287
|
+
`lyra-change` with `{ value }`. **CSS parts:** `base`, `star`.
|
|
8288
|
+
|
|
8289
|
+
## `lyra-color-picker`
|
|
8290
|
+
|
|
8291
|
+
A form-associated native color picker with label and hint chrome. **Properties:** the shared form
|
|
8292
|
+
properties `name`, `value`, `disabled`, and `required`, plus `label`, `hint`, and `accessibleLabel`
|
|
8293
|
+
(`aria-label`). **Slots:** `label`, `hint`. **Events:** composed `input` and `change`, plus
|
|
8294
|
+
`lyra-change` with `{ value }`. **CSS parts:** `form-control`, `label`, `input`, `hint`.
|
|
8295
|
+
|
|
7735
8296
|
## Cross-cutting notes
|
|
7736
8297
|
|
|
7737
8298
|
These apply across the whole library rather than to any one component:
|