@aceshooting/lyra-ui 23.0.0 → 24.1.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/CHANGELOG.md +16 -39
- package/README.md +72 -35
- package/custom-elements.json +1 -1
- package/design-tokens.json +1 -1
- package/dist/cli/lyra-rename-ledger.mjs +1 -1
- package/dist/cli/migration-contract.json +1 -1
- package/dist/cli/migration-contract.mjs +1 -1
- package/dist/cli/migration-renames.mjs +2 -2
- package/dist/cli/migration-transforms.mjs +2 -2
- package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +1 -4
- package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -3
- package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +1 -4
- package/dist/components/agent-tools/compare-panel/compare-panel.class.js +1 -1
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts +1 -7
- package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
- package/dist/components/agent-tools/context-inspector/context-inspector.class.d.ts +1 -1
- package/dist/components/agent-tools/evaluation-run/evaluation-run.class.d.ts +2 -5
- package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +1 -3
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +1 -4
- package/dist/components/agent-tools/terminal/terminal.class.js +2 -2
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts +1 -7
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +1 -4
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -3
- package/dist/components/charts/chart/lite-chart-axis-layout.d.ts +13 -0
- package/dist/components/charts/chart/lite-chart-axis-layout.js +1 -0
- package/dist/components/charts/chart/lite-chart.class.d.ts +1 -11
- package/dist/components/charts/chart/lite-chart.class.js +4 -4
- package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +13 -3
- package/dist/components/conversation/agent-workspace/agent-workspace.class.js +1 -2
- package/dist/components/conversation/chat-message/chat-message.class.d.ts +3 -9
- package/dist/components/conversation/chat-message/chat-message.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-base.class.js +1 -1
- package/dist/components/conversation/code-block/code-block-core.class.d.ts +6 -8
- package/dist/components/conversation/code-block/code-block-shared.d.ts +1 -4
- package/dist/components/conversation/code-block/code-block.class.d.ts +4 -6
- package/dist/components/conversation/markdown/markdown-base.class.d.ts +1 -3
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-core.class.d.ts +1 -4
- package/dist/components/conversation/markdown/markdown.class.d.ts +1 -4
- package/dist/components/conversation/message-actions/message-actions.class.d.ts +1 -4
- package/dist/components/conversation/message-actions/message-actions.class.js +1 -1
- package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +1 -4
- package/dist/components/conversation/message-feedback/message-feedback.class.js +2 -2
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +2 -5
- package/dist/components/conversation/message-parts/message-parts.class.js +3 -3
- package/dist/components/conversation/streaming-text/streaming-text-base.class.d.ts +1 -1
- package/dist/components/conversation/streaming-text/streaming-text-core.class.d.ts +2 -0
- package/dist/components/conversation/streaming-text/streaming-text-core.class.js +0 -1
- package/dist/components/conversation/streaming-text/streaming-text.class.d.ts +2 -0
- package/dist/components/conversation/streaming-text/streaming-text.class.js +0 -1
- package/dist/components/conversation/thread-list/thread-list.class.d.ts +6 -17
- package/dist/components/conversation/thread-list/thread-list.class.js +6 -6
- package/dist/components/data/context-meter/context-meter.class.d.ts +1 -6
- package/dist/components/data/context-meter/context-meter.class.js +1 -1
- package/dist/components/data/data-grid/data-grid.class.d.ts +0 -1
- package/dist/components/data/data-grid/data-grid.class.js +2 -2
- package/dist/components/data/document-library/document-library.class.d.ts +6 -13
- package/dist/components/data/document-library/document-library.class.js +1 -2
- package/dist/components/data/heatmap/heatmap-grid-navigation.d.ts +7 -0
- package/dist/components/data/heatmap/heatmap-grid-navigation.js +1 -0
- package/dist/components/data/heatmap/heatmap.class.d.ts +3 -23
- package/dist/components/data/heatmap/heatmap.class.js +2 -2
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +3 -9
- package/dist/components/data/sequence-strip/sequence-strip.class.js +3 -3
- package/dist/components/data/table/table.class.d.ts +5 -14
- package/dist/components/data/table/table.class.js +6 -6
- package/dist/components/forms/button/button.class.d.ts +2 -2
- package/dist/components/forms/button/button.class.js +9 -9
- package/dist/components/forms/combobox/combobox.class.d.ts +1 -4
- package/dist/components/forms/combobox/combobox.class.js +2 -2
- package/dist/components/forms/input/time-input.class.d.ts +1 -1
- package/dist/components/forms/input/time-input.class.js +1 -1
- package/dist/components/forms/select/select.class.d.ts +1 -2
- package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +3 -1
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail-item.class.d.ts +3 -6
- package/dist/components/layout/app-rail/app-rail-item.class.js +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +2 -4
- package/dist/components/layout/app-rail/app-rail.class.js +1 -1
- package/dist/components/layout/app-rail-group/app-rail-group.class.d.ts +2 -6
- package/dist/components/layout/app-rail-group/app-rail-group.class.js +1 -1
- package/dist/components/layout/carousel/carousel.class.d.ts +1 -4
- package/dist/components/layout/carousel/carousel.class.js +2 -2
- package/dist/components/layout/command-palette/command-palette.class.js +1 -1
- package/dist/components/layout/details/details.class.d.ts +2 -4
- package/dist/components/layout/details/details.class.js +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.d.ts +3 -7
- package/dist/components/layout/dock-panel/dock-panel.class.js +1 -1
- package/dist/components/layout/menu/menu.class.js +1 -1
- package/dist/components/layout/multi-split/multi-split.class.d.ts +2 -4
- package/dist/components/layout/multi-split/multi-split.class.js +1 -1
- package/dist/components/layout/navigation-menu-item/navigation-menu-item.class.d.ts +2 -4
- package/dist/components/layout/navigation-menu-item/navigation-menu-item.class.js +1 -1
- package/dist/components/layout/reorder-list/reorder-item.class.d.ts +1 -4
- package/dist/components/layout/reorder-list/reorder-item.class.js +2 -2
- package/dist/components/media/attachment-trigger/attachment-trigger.class.d.ts +5 -9
- package/dist/components/media/attachment-trigger/attachment-trigger.class.js +5 -5
- package/dist/components/media/av-player/av-player.class.js +3 -3
- package/dist/components/media/file-input/file-input.class.d.ts +3 -6
- package/dist/components/media/file-input/file-input.class.js +3 -3
- package/dist/components/media/lightbox/lightbox.class.d.ts +11 -20
- package/dist/components/media/lightbox/lightbox.class.js +1 -1
- package/dist/components/media/map/map-data-layers.d.ts +20 -0
- package/dist/components/media/map/map-data-layers.js +1 -0
- package/dist/components/media/map/map.class.js +3 -3
- package/dist/components/media/media-time.d.ts +2 -0
- package/dist/components/media/media-time.js +1 -0
- package/dist/components/media/video/video.class.js +5 -5
- package/dist/components/media/video-playlist/video-playlist.class.js +2 -2
- package/dist/components/overlays/callout/callout.class.d.ts +2 -5
- package/dist/components/overlays/callout/callout.class.js +2 -2
- package/dist/components/overlays/dialog/dialog.class.d.ts +4 -7
- package/dist/components/overlays/dialog/dialog.class.js +2 -2
- package/dist/components/overlays/overlay/dropdown.class.d.ts +5 -10
- package/dist/components/overlays/overlay/dropdown.class.js +2 -2
- package/dist/components/overlays/overlay/popover.class.d.ts +2 -3
- package/dist/components/overlays/popup/popup.class.js +1 -1
- package/dist/components/overlays/progress/progress-bar.class.d.ts +1 -4
- package/dist/components/overlays/progress/progress-bar.class.js +2 -2
- package/dist/components/overlays/progress/progress-ring.class.d.ts +1 -4
- package/dist/components/overlays/progress/progress-ring.class.js +2 -2
- package/dist/components/overlays/progress/progress-shared.d.ts +3 -3
- package/dist/components/overlays/progress/progress-shared.js +1 -1
- package/dist/components/overlays/toast/toast-item.class.js +1 -1
- package/dist/components/retrieval/graph/graph.class.d.ts +5 -10
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +7 -14
- package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +2 -3
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +2 -8
- package/dist/components/retrieval/memory-panel/memory-panel.class.js +0 -4
- package/dist/components/retrieval/rag-answer/rag-answer.class.js +1 -1
- package/dist/components/utility/export-button/export-button.class.d.ts +6 -10
- package/dist/components/utility/export-button/export-button.class.js +1 -1
- package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
- package/dist/components/viewers/geojson-view/geojson-view.class.d.ts +1 -1
- package/dist/components/viewers/highlight-layer/highlight-layer-timing.js +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
- package/dist/events.d.ts +17 -78
- package/dist/framework-types.d.ts +1 -1
- package/dist/internal/catalog-picker.js +1 -1
- package/dist/internal/css-motion-time.d.ts +7 -0
- package/dist/internal/css-motion-time.js +1 -0
- package/dist/internal/data-state-renderer.d.ts +1 -3
- package/dist/internal/data-state-renderer.js +1 -1
- package/dist/internal/localization-runtime.d.ts +2 -0
- package/dist/internal/localization-runtime.js +1 -1
- package/dist/internal/lyra-element.js +2 -2
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/looks/data.css +1 -1
- package/dist/looks/terminal.css +1 -1
- package/dist/lyra.d.ts +1 -592
- package/dist/lyra.js +1 -1
- package/dist/testing/event-factory.d.ts +2 -2
- package/dist/testing/interaction-drivers.d.ts +5 -3
- package/dist/testing/lyra-tag-event-map.js +1 -1
- package/dist/theme/looks/data.d.ts +1 -1
- package/dist/theme/looks/data.js +1 -1
- package/dist/theme/looks/terminal.d.ts +1 -1
- package/dist/theme/looks/terminal.js +1 -1
- package/dist/theme/theme.d.ts +2 -80
- package/dist/theme/theme.js +1 -1
- package/llms/components/lr-agent-workspace.md +24 -2
- package/llms/components/lr-alert.md +1 -1
- package/llms/components/lr-animation.md +1 -1
- package/llms/components/lr-app-rail.md +8 -10
- package/llms/components/lr-approval-queue.md +2 -4
- package/llms/components/lr-attachment-trigger.md +3 -4
- package/llms/components/lr-badge.md +2 -2
- package/llms/components/lr-button.md +45 -99
- package/llms/components/lr-callout.md +3 -4
- package/llms/components/lr-carousel.md +3 -5
- package/llms/components/lr-chat-message.md +1 -2
- package/llms/components/lr-claim-evidence.md +1 -1
- package/llms/components/lr-code-block-core.md +2 -2
- package/llms/components/lr-code-block.md +5 -6
- package/llms/components/lr-color-picker.md +1 -1
- package/llms/components/lr-combobox.md +5 -6
- package/llms/components/lr-compare-panel.md +2 -4
- package/llms/components/lr-confirm-bar.md +3 -7
- package/llms/components/lr-context-inspector.md +3 -2
- package/llms/components/lr-context-menu.md +2 -2
- package/llms/components/lr-context-meter.md +2 -4
- package/llms/components/lr-copy-button.md +1 -1
- package/llms/components/lr-data-grid.md +4 -7
- package/llms/components/lr-details.md +3 -3
- package/llms/components/lr-dialog.md +4 -6
- package/llms/components/lr-dock-panel.md +5 -6
- package/llms/components/lr-document-library.md +5 -7
- package/llms/components/lr-drawer.md +3 -3
- package/llms/components/lr-dropdown.md +4 -5
- package/llms/components/lr-eval-run.md +3 -5
- package/llms/components/lr-export-button.md +4 -7
- package/llms/components/lr-file-input.md +0 -5
- package/llms/components/lr-funnel.md +1 -1
- package/llms/components/lr-graph.md +3 -7
- package/llms/components/lr-icon.md +1 -1
- package/llms/components/lr-include.md +1 -1
- package/llms/components/lr-input.md +31 -79
- package/llms/components/lr-json-viewer.md +1 -1
- package/llms/components/lr-knowledge-base.md +4 -6
- package/llms/components/lr-knowledge-graph-explorer.md +2 -5
- package/llms/components/lr-known-date.md +1 -1
- package/llms/components/lr-lightbox.md +9 -7
- package/llms/components/lr-lite-chart.md +1 -5
- package/llms/components/lr-markdown-core.md +3 -4
- package/llms/components/lr-markdown.md +3 -5
- package/llms/components/lr-mcp-app.md +1 -1
- package/llms/components/lr-message-actions.md +2 -3
- package/llms/components/lr-message-feedback.md +1 -3
- package/llms/components/lr-message-parts.md +4 -5
- package/llms/components/lr-multi-split.md +8 -7
- package/llms/components/lr-native-time-input.md +1 -1
- package/llms/components/lr-navigation-menu.md +5 -5
- package/llms/components/lr-number-input.md +3 -1
- package/llms/components/lr-otp-input.md +2 -0
- package/llms/components/lr-page.md +1 -1
- package/llms/components/lr-pan-zoom.md +1 -1
- package/llms/components/lr-phone-input.md +3 -1
- package/llms/components/lr-popover.md +2 -2
- package/llms/components/lr-progress-bar.md +3 -5
- package/llms/components/lr-progress-ring.md +5 -7
- package/llms/components/lr-prompt-input.md +1 -1
- package/llms/components/lr-prompt-queue.md +1 -1
- package/llms/components/lr-prompt-studio.md +1 -1
- package/llms/components/lr-rag-eval-dashboard.md +1 -1
- package/llms/components/lr-rating.md +2 -2
- package/llms/components/lr-realtime-session.md +1 -1
- package/llms/components/lr-reorder-item.md +1 -1
- package/llms/components/lr-reorder-list.md +2 -3
- package/llms/components/lr-retrieval-compare.md +1 -1
- package/llms/components/lr-select.md +3 -1
- package/llms/components/lr-selection-toolbar.md +1 -1
- package/llms/components/lr-sequence-strip.md +3 -8
- package/llms/components/lr-span-waterfall.md +1 -1
- package/llms/components/lr-split-panel.md +1 -1
- package/llms/components/lr-streaming-text-core.md +2 -1
- package/llms/components/lr-streaming-text.md +3 -2
- package/llms/components/lr-subagent-panel.md +1 -1
- package/llms/components/lr-swatch-picker.md +7 -6
- package/llms/components/lr-switch.md +3 -1
- package/llms/components/lr-table.md +33 -85
- package/llms/components/lr-terminal.md +2 -5
- package/llms/components/lr-textarea.md +1 -1
- package/llms/components/lr-thread-list.md +8 -14
- package/llms/components/lr-time-input.md +1 -1
- package/llms/components/lr-toggle-group.md +2 -2
- package/llms/components/lr-toggle.md +1 -1
- package/llms/components/lr-tool-approval-dialog.md +4 -7
- package/llms/components/lr-tool-call-block.md +1 -1
- package/llms/components/lr-tool-timeline.md +2 -5
- package/llms/components/lr-video-playlist.md +1 -1
- package/llms/components/lr-video.md +1 -1
- package/llms/components/lr-widget-renderer.md +7 -6
- package/llms/components/lr-zoomable-frame.md +1 -1
- package/llms/index.md +3 -618
- package/llms/migration.md +614 -614
- package/llms/shared/events-and-types.md +32 -31
- package/llms/shared/frameworks-and-ssr.md +7 -3
- package/llms/shared/imports-and-registration.md +22 -22
- package/llms/shared/localization-and-rtl.md +2 -2
- package/llms/shared/native-styles-and-utilities.md +263 -0
- package/llms/shared/styles-and-tokens.md +85 -676
- package/llms/shared/testing-and-utilities.md +12 -11
- package/llms/shared/v23-to-v24-migration.md +167 -0
- package/llms/shared.md +149 -494
- package/llms/tokens.md +3 -3
- package/llms.txt +9 -4
- package/package.json +7 -311
- package/registrations.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
- package/dist/ssr-loader.d.ts +0 -2
- package/dist/ssr-loader.js +0 -1
- package/dist/theme/presets/shadcn.d.ts +0 -22
- package/dist/theme/presets/shadcn.js +0 -1
- package/dist/theme/presets.d.ts +0 -49
- package/dist/theme/presets.js +0 -1
- package/dist/themes/shadcn.css +0 -1
|
@@ -16,44 +16,21 @@
|
|
|
16
16
|
|
|
17
17
|
## `lr-button`
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
`
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
relationship on the current action. Existing accessible names and `aria-controls` relationships
|
|
35
|
-
retain their separate contracts.
|
|
36
|
-
|
|
37
|
-
Set `href` to a safe link URL and the root renders as a real `<a part="base" href=…>` instead — a
|
|
38
|
-
link styled as a button (e.g. a CTA). Native navigation is then the activation, so the submit/reset
|
|
39
|
-
handling and `type` have no effect in that mode. A disabled link button (its own `disabled` or an
|
|
40
|
-
ancestor `<fieldset disabled>`) renders the anchor with `aria-disabled="true"` and **no `href`**, so
|
|
41
|
-
it is neither focusable nor navigable; it also dims to `--lr-opacity-disabled` with a `not-allowed`
|
|
42
|
-
cursor and no hover/press feedback, exactly like the disabled `<button>` path (an `<a>` can never
|
|
43
|
-
match `:disabled`, so that arm of the styling keys off `aria-disabled` instead). An
|
|
44
|
-
unsafe/unparseable `href` falls back to the native `<button>`.
|
|
45
|
-
|
|
46
|
-
The label does **not** grow to fill a stretched button. `[part="label"]` shrink-wraps its text and
|
|
47
|
-
the whole icon+label pair centres under `--lr-button-justify`, so the icon-to-text distance is
|
|
48
|
-
exactly `--lr-button-gap`. Before 16.0.0 the label was `flex: 1 1 auto`, which parked every spare
|
|
49
|
-
pixel inside the label box and — because the native `<button>` UA stylesheet centres text, which the
|
|
50
|
-
label wrapper inherited — floated the text in the middle of a wide empty row. A `with-caret` button,
|
|
51
|
-
and one with an `end`/`suffix` adornment, keep the growing label so that trailing affordance stays
|
|
52
|
-
pinned to the trailing content edge. `--lr-button-label-grow: 1` restores the old stretch and `0`
|
|
53
|
-
opts a caret/end-adornment row out of pinning. The label is also `text-align: start` now, which
|
|
54
|
-
fixes two side effects of the inherited centring: a label narrower than its own text centred the
|
|
55
|
-
overflow so the ellipsis appeared at the end while the start of the word was clipped, and the `<a>`
|
|
56
|
-
root (which never inherited the centring) disagreed with the `<button>` root across a mode switch.
|
|
19
|
+
Renders a native `<button>` or, with a safe `href`, a native `<a>`. Submit/reset use the
|
|
20
|
+
browser-resolved form owner, including an external `form` owner, and run as default actions of the
|
|
21
|
+
composed `click`; `preventDefault()` vetoes them, while `stopPropagation()` alone does not. The
|
|
22
|
+
form's later `submit`/`reset` event can be canceled separately. Link mode navigates instead, and a
|
|
23
|
+
disabled link has `aria-disabled="true"` with no `href`, focus, or navigation.
|
|
24
|
+
|
|
25
|
+
Host `aria-keyshortcuts` and `aria-describedby` follow the internal button or link reactively.
|
|
26
|
+
Description IDs resolve in the host root, preserving order, unresolved IDs, and duplicates; source
|
|
27
|
+
replacement, removal, reconnection, and adoption update the relationship. Accessible names and
|
|
28
|
+
`aria-controls` have separate contracts below.
|
|
29
|
+
|
|
30
|
+
`[part="label"]` shrink-wraps with `text-align: start`, keeping ellipsis at the trailing edge.
|
|
31
|
+
The icon and label stay centered under `--lr-button-justify`, separated by `--lr-button-gap`.
|
|
32
|
+
`with-caret` or an `end`/`suffix` adornment makes the label grow to pin trailing content; use
|
|
33
|
+
`--lr-button-label-grow: 1` to opt into that stretch or `0` to opt out.
|
|
57
34
|
|
|
58
35
|
**Properties:**
|
|
59
36
|
|
|
@@ -63,7 +40,8 @@ root (which never inherited the centring) disagreed with the `<button>` root acr
|
|
|
63
40
|
so a `mailto:` href paired with `download` falls back to the native `<button>`. Unset (the default)
|
|
64
41
|
renders a plain `<button>`, unchanged. `type` (submit/reset) has no effect while the anchor
|
|
65
42
|
renders. While the button is disabled the anchor is rendered **without** `href` (keeping
|
|
66
|
-
`aria-disabled="true"`), so
|
|
43
|
+
`aria-disabled="true"`), so it cannot navigate; it also uses `--lr-opacity-disabled`, a
|
|
44
|
+
`not-allowed` cursor, and no hover/press feedback. An unsafe/unparseable value
|
|
67
45
|
falls back to the native `<button>`
|
|
68
46
|
- `target?: string` — native anchor `target`, used only while `href` resolves to a link. Setting it
|
|
69
47
|
(e.g. `'_blank'`) automatically force-adds `noopener noreferrer` to the rendered anchor's
|
|
@@ -81,15 +59,11 @@ root (which never inherited the centring) disagreed with the `<button>` root acr
|
|
|
81
59
|
`primary` → `brand`, and `text` → neutral `appearance="plain"`. The Lyra/Web Awesome default is
|
|
82
60
|
intentionally still `neutral`
|
|
83
61
|
- `appearance: 'accent' | 'filled' | 'outlined' | 'filled-outlined' | 'plain' | 'quiet' | 'link' =
|
|
84
|
-
'accent'` (reflected) — the
|
|
85
|
-
|
|
86
|
-
`<lr-button>` now paints the loud fill it used to need `appearance="accent"` for. The two are no
|
|
87
|
-
longer near-duplicates: `'accent'` takes the active `variant`'s **loud** fill
|
|
62
|
+
'accent'` (reflected) — the shared fill vocabulary plus two button-specific tiers. `'accent'`
|
|
63
|
+
takes the active `variant`'s **loud** fill
|
|
88
64
|
(`--lr-button-accent-fill`) with the foreground guaranteed legible on it, while `'filled'` takes
|
|
89
65
|
that variant's **quiet** tint (`--lr-button-fill`) — a secondary-action fill that still reads as a
|
|
90
|
-
fill rather than as the page surface.
|
|
91
|
-
`'accent'` resolved to the same loud token and rendered identically, while `variant="neutral"`'s
|
|
92
|
-
`'filled'` was the page surface, i.e. no fill at all. `'filled-outlined'` is `'filled'`'s fill and
|
|
66
|
+
fill rather than as the page surface. `'filled-outlined'` is `'filled'`'s fill and
|
|
93
67
|
foreground carrying the outlined tier's border colour, for a filled button that must still read as
|
|
94
68
|
bounded on a same-toned surface. `'quiet'` is a de-emphasized tier:
|
|
95
69
|
transparent background with a bordered, muted-text chrome; its text/border tokens are **not**
|
|
@@ -164,21 +138,12 @@ root (which never inherited the centring) disagreed with the `<button>` root acr
|
|
|
164
138
|
- `formTarget?: string` (attribute `formtarget`) — overrides the form owner's `target`. Distinct
|
|
165
139
|
from `target`, which is the anchor target used in link mode
|
|
166
140
|
|
|
167
|
-
All five
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
one. While that stand-in exists it _is_ the form's submitter, so **`SubmitEvent.submitter` is the
|
|
174
|
-
transient native button, not this host**. With none of those properties set, submission stays a
|
|
175
|
-
plain `requestSubmit()` with a `null` submitter, and all of it is inert in link mode.
|
|
176
|
-
For each string override, presence rather than truthiness chooses the transient path and its raw
|
|
177
|
-
attribute is copied, so explicit empty values remain distinguishable from absence. Only the
|
|
178
|
-
canonical native/upstream spellings are supported; the former hyphenated Lyra aliases were
|
|
179
|
-
removed.
|
|
180
|
-
|
|
181
|
-
Each size tier's `min-block-size` floor is exposed as its own token (see below).
|
|
141
|
+
All five default to `undefined`/`false`. When one or `name`/`value` is set, the component inserts a
|
|
142
|
+
transient native submit button after the host, passes it to `requestSubmit()`, and removes it in the
|
|
143
|
+
same synchronous step even if submission fails. Its `name`/`value` reaches `FormData`, its `form*`
|
|
144
|
+
overrides apply, and **`SubmitEvent.submitter` is that native button, not the host**. With none
|
|
145
|
+
set, `requestSubmit()` has a `null` submitter. Presence, including an explicitly empty string,
|
|
146
|
+
selects the transient path; string attributes are copied verbatim. Link mode ignores all of this.
|
|
182
147
|
|
|
183
148
|
**Getters/methods:** `click()`, `focus(options?)`, and `blur()` — forwarded to the internal base
|
|
184
149
|
element (the `<button>`, or the `<a>` in anchor mode); `click()` also runs the component's
|
|
@@ -189,9 +154,7 @@ consumer error and restores the current `required`/`value` constraint. `formStat
|
|
|
189
154
|
restores `value` for session history/autofill without changing submitter-only form-data semantics.
|
|
190
155
|
|
|
191
156
|
**Events:** a plain native `click` bubbles and composes through the shadow boundary unmodified
|
|
192
|
-
(disabled while `disabled` or `loading`).
|
|
193
|
-
listener path has accepted the default action; calling `preventDefault()` on the host or an
|
|
194
|
-
ancestor therefore vetoes it, while propagation control by itself does not. The internal button's
|
|
157
|
+
(disabled while `disabled` or `loading`). The internal button's
|
|
195
158
|
`focus` and `blur` — which do not
|
|
196
159
|
cross the shadow boundary on their own — are re-dispatched from the host as bubbling, composed
|
|
197
160
|
events. `lr-invalid` (no
|
|
@@ -220,9 +183,8 @@ set), `spinner` (present only while `loading`).
|
|
|
220
183
|
**CSS custom states:** `disabled` (including fieldset-disablement and loading), `icon-button`
|
|
221
184
|
(one text-free default-slot element), `link` (safe anchor mode), and `loading`.
|
|
222
185
|
|
|
223
|
-
**Themeable custom properties.**
|
|
224
|
-
|
|
225
|
-
block of its own — the ones marked variant-independent are the exceptions:
|
|
186
|
+
**Themeable custom properties.** Colour slots follow the active `variant`'s semantic colour row
|
|
187
|
+
unless marked variant-independent:
|
|
226
188
|
|
|
227
189
|
- `--lr-button-accent` (default `--lr-color-fill-loud`) — text/glyph colour for the chrome-less
|
|
228
190
|
tiers (`outlined`, `plain`, `link`), i.e. the variant's loud fill borrowed as a foreground.
|
|
@@ -261,13 +223,9 @@ text/border counterparts, letting e.g. `appearance="quiet"` (which has its own r
|
|
|
261
223
|
default**. Chromatic `plain` text moves toward body text during hover/press to retain contrast
|
|
262
224
|
against the moving fill; the other appearances keep their resting text colour. The hover colour
|
|
263
225
|
override also applies while pressed, and the border fallback remains the resting border colour.
|
|
264
|
-
`appearance="link"` ignores `--lr-button-hover-color`
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
which no longer exists — a `filter: brightness()` multiplies every channel, so it moved a mid-toned
|
|
268
|
-
fill but did nothing at all to a pure white or pure black one, and it dimmed the label and icons
|
|
269
|
-
along with the box. Retuning `--lr-button-fill` or `--lr-button-accent-fill` now retunes that tier's
|
|
270
|
-
hover and press with it.
|
|
226
|
+
`appearance="link"` ignores `--lr-button-hover-color` and renders without a border, so
|
|
227
|
+
`--lr-button-hover-border` has no effect there. Retuning either fill token also retunes its tier's
|
|
228
|
+
hover and press. For removed historical tokens, see the [release history archive](https://github.com/aceshooting/lyra-ui/tree/main/docs/changelog).
|
|
271
229
|
|
|
272
230
|
`--lr-button-width` (default `100%`) is the internal control's inline size, so it follows the host's
|
|
273
231
|
own width; override it to `auto` for a compact inline composition. `--lr-button-active-scale`
|
|
@@ -279,11 +237,9 @@ the `loading` spinner's rotation period; that token itself collapses to `0.001ms
|
|
|
279
237
|
The per-`size` `min-block-size` floors are `--lr-button-size-2xs`, `--lr-button-size-xs`,
|
|
280
238
|
`--lr-button-size-s`, `--lr-button-size-m`, `--lr-button-size-l` and
|
|
281
239
|
`--lr-button-size-xl`. Each defaults to the matching tier of the shared form-control ladder
|
|
282
|
-
(`--lr-form-control-height-2xs` … `-xl`, i.e. 1.25rem, 1.5rem, 1.875rem, 2.5rem, 3rem, 3.5rem)
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
density/floor parity, not guaranteed pixel-height parity: content and nested actions can make a
|
|
286
|
-
composed control such as `lr-date-input` taller. Each token is read only by its own tier
|
|
240
|
+
(`--lr-form-control-height-2xs` … `-xl`, i.e. 1.25rem, 1.5rem, 1.875rem, 2.5rem, 3rem, 3.5rem).
|
|
241
|
+
These are minimum-height floors; content and nested actions can make a composed control taller.
|
|
242
|
+
Each token is read only by its own tier
|
|
287
243
|
(`--lr-button-size-s` also serves `size="small"`, and so on for the other two aliases), and all are
|
|
288
244
|
ignored by `appearance="link"`.
|
|
289
245
|
Retheming `--lr-theme-form-control-height-*` moves every control on the ladder together.
|
|
@@ -301,16 +257,14 @@ changes its private default to `--lr-radius-pill`. `--lr-button-caret-size` (def
|
|
|
301
257
|
`var(--lr-size-0-75em)`) is the `with-caret`
|
|
302
258
|
chevron's font size — declared in `em`, so it tracks every `size` tier through the button's own font
|
|
303
259
|
size instead of needing a per-tier value.
|
|
304
|
-
`--lr-button-shadow` is **undeclared by default**, so `box-shadow` falls back to `none
|
|
305
|
-
|
|
306
|
-
elevated/floating action button) without a `::part(base)` rule. `appearance="link"` always renders
|
|
260
|
+
`--lr-button-shadow` is **undeclared by default**, so `box-shadow` falls back to `none`; set it
|
|
261
|
+
for a drop shadow without a `::part(base)` rule. `appearance="link"` always renders
|
|
307
262
|
with no shadow regardless of this token — a zero-chrome inline link has no box to elevate.
|
|
308
263
|
`--lr-button-justify` (default `center`) is the `justify-content` of the internal button's row. With
|
|
309
264
|
the label no longer growing, this is what positions the icon+label pair inside a stretched control:
|
|
310
265
|
`flex-start` packs it against the leading edge, `space-between` pushes the adornments apart.
|
|
311
|
-
`--lr-button-label-grow` (default `0`) is the `flex-grow` of `[part="label"]`; `1`
|
|
312
|
-
|
|
313
|
-
overrides the automatic grow a `with-caret`/`end`-adornment button applies.
|
|
266
|
+
`--lr-button-label-grow` (default `0`) is the `flex-grow` of `[part="label"]`; `1` fills spare
|
|
267
|
+
space, and an explicit value overrides the grow applied by `with-caret`/`end` adornments.
|
|
314
268
|
|
|
315
269
|
**Retuning one `size` tier's geometry, without a `::part(base)` rule.** Four more properties carry
|
|
316
270
|
the active tier's geometry. Every `:host([size='…'])` rule changes only private defaults — no
|
|
@@ -376,10 +330,8 @@ box no matter what tier or override is in play.
|
|
|
376
330
|
|
|
377
331
|
**Known gotchas:**
|
|
378
332
|
|
|
379
|
-
-
|
|
380
|
-
|
|
381
|
-
are resolved onto the focused internal control through `ariaDescribedByElements`; external
|
|
382
|
-
`aria-labelledby` is not copied across the shadow boundary.
|
|
333
|
+
- Host `aria-describedby` targets resolve onto the focused internal control through
|
|
334
|
+
`ariaDescribedByElements`; external `aria-labelledby` is not copied across the shadow boundary.
|
|
383
335
|
- For a toggle that owns its pressed state — a vetoable request, `lr-change`, and optional grouping
|
|
384
336
|
behind one tab stop — use `lr-toggle` / `lr-toggle-group` rather than flipping host `aria-pressed`
|
|
385
337
|
in a click handler.
|
|
@@ -387,13 +339,12 @@ box no matter what tier or override is in play.
|
|
|
387
339
|
For toggle buttons, host `aria-pressed="true|false|mixed"` reaches the focused native button —
|
|
388
340
|
BUTTONS only. A link button (`href` set) never receives it, because `role="link"` does not support
|
|
389
341
|
`aria-pressed`; remove `href` and the same host attribute starts reaching the `<button>` that
|
|
390
|
-
replaces the anchor.
|
|
391
|
-
forwarded onto the anchor as well, asserting a state `role="link"` does not have. Navigation can
|
|
342
|
+
replaces the anchor. Navigation can
|
|
392
343
|
use the global `aria-current="page|step|location|date|time|true|false"`, which does reach the
|
|
393
344
|
anchor. Both states update reactively, including native `ariaPressed`/`ariaCurrent` property
|
|
394
345
|
assignments, attribute removal and `href` changes. Empty or unsupported tokens are omitted. The native button/link role
|
|
395
346
|
remains unchanged for an enabled control: use pressed state for button toggles and current state
|
|
396
|
-
for navigation links. A
|
|
347
|
+
for navigation links. A disabled link button drops `href` and
|
|
397
348
|
therefore also drops the anchor's implicit role, so it renders an explicit `role="link"` — without
|
|
398
349
|
it, the forwarded `aria-label`/`aria-haspopup`/`aria-expanded`/`aria-current` would sit on a
|
|
399
350
|
role-less generic element, which is prohibited.
|
|
@@ -406,12 +357,7 @@ box no matter what tier or override is in play.
|
|
|
406
357
|
- Is form-associated (`static formAssociated = true` + `attachInternals()`), so it participates in
|
|
407
358
|
an ancestor `<form>.elements` the same way `wa-button` does — a sibling text field's own
|
|
408
359
|
Enter-to-submit lookup (which scans `form.elements` for a `type === 'submit'` control) finds it.
|
|
409
|
-
-
|
|
410
|
-
|
|
411
|
-
connected throughout synchronous `requestSubmit()` handling, so a `submit` listener can read
|
|
412
|
-
its `name`, `value` and `form*` fields and construct `FormData` with it. It is removed after
|
|
413
|
-
submission handling returns; its identity is distinct from the `lr-button` host.
|
|
414
|
-
- The `form*` overrides and `type` are all inert while `href` renders the anchor — native navigation
|
|
415
|
-
is the activation there, and an anchor has no submit/reset concept.
|
|
360
|
+
- A `submit` listener can read the transient native submitter's `name`, `value`, and `form*` fields
|
|
361
|
+
while it remains connected during synchronous `requestSubmit()` handling.
|
|
416
362
|
|
|
417
363
|
---
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- **Family** `components/overlays/` — see `llms/index.md` for its siblings
|
|
8
8
|
- **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [overlays](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/overlays.md)
|
|
10
|
-
- **
|
|
10
|
+
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
12
|
- **Themeable via** 8 parts, 7 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
@@ -40,8 +40,7 @@ property and rich-slot heading wrapper at that semantic level, invalid untyped v
|
|
|
40
40
|
carries when it first mounts; see the announcement paragraph that closes this section),
|
|
41
41
|
`open: boolean = true`
|
|
42
42
|
(reflected as a presence attribute — `open="false"` is accepted in plain markup; `false` removes the
|
|
43
|
-
semantic content and hides the host surface),
|
|
44
|
-
used only when the host has no `aria-label` attribute). In markup, name the callout with the host
|
|
43
|
+
semantic content and hides the host surface). In markup, name the callout with the host
|
|
45
44
|
`aria-label`, which has highest precedence by presence, including an explicitly empty value.
|
|
46
45
|
|
|
47
46
|
Every reflected closed set normalizes identically from markup and untyped JavaScript writes:
|
|
@@ -132,7 +131,7 @@ any nested level. `display:none`/`content-visibility:hidden` prune a branch; a
|
|
|
132
131
|
stay silent. Nested forwarding slots expose their flattened assigned text instead of fallback
|
|
133
132
|
content, and later assignment plus assigned-node text/style/visibility mutations are observed.
|
|
134
133
|
Mutations that leave that accessible text unchanged are deduplicated. A nonempty host
|
|
135
|
-
`aria-label`
|
|
134
|
+
`aria-label` prefixes visible update text as context, with an
|
|
136
135
|
equality check preventing duplicate copy. The complete localized
|
|
137
136
|
`calloutAnnouncementWithContext: '{context}: {content}'` message owns both fields, their order, and
|
|
138
137
|
punctuation; override that key through `strings` rather than prejoining either field. An explicitly
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- **Family** `components/layout/` — see `llms/index.md` for its siblings
|
|
8
8
|
- **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [layout](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/layout.md)
|
|
10
|
-
- **
|
|
10
|
+
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
12
|
- **Themeable via** 18 parts, 18 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
@@ -62,10 +62,8 @@ slide itself; they do not change the active slide or move focus away from it.
|
|
|
62
62
|
custom, shadow-wrapped, labelled, disabled, and editable controls retain their own pointer input.
|
|
63
63
|
- `slides: number` (read-only) — live assigned-slide count, updated after dynamic child changes.
|
|
64
64
|
- `aria-label` (host attribute) — names the carousel landmark, taking precedence by presence,
|
|
65
|
-
including an explicitly empty value
|
|
66
|
-
|
|
67
|
-
`aria-label`. Omitting it reads back `undefined` and uses the localized `carouselLabel` default;
|
|
68
|
-
an explicitly empty value is used as-is.
|
|
65
|
+
including an explicitly empty value; when absent, the component uses the localized
|
|
66
|
+
`carouselLabel` default.
|
|
69
67
|
|
|
70
68
|
**9.0 cleanup:** the redundant Lyra-only `index`, `showIndicators`, and `goTo()` aliases were
|
|
71
69
|
removed. Use mapped `currentSlide`, `pagination`, and `goToSlide()`. The writable/reflected
|
|
@@ -63,8 +63,7 @@ after the write fulfills.
|
|
|
63
63
|
|
|
64
64
|
**Events:** `lr-message-retry` (`detail: { messageId?: string }`; fired by the built-in retry button,
|
|
65
65
|
only rendered when `status="failed"`). `lr-toggle-request` is cancelable and carries
|
|
66
|
-
`{ expanded: boolean
|
|
67
|
-
proposed state; the deprecated `collapsed` key is its inverse and is removed in 23.0.0; preventing
|
|
66
|
+
`{ expanded: boolean }` (`ChatMessageToggleDetail`) — `expanded` is the proposed state; preventing
|
|
68
67
|
it vetoes the built-in collapse/expand transaction. `lr-toggle` carries that same detail after the
|
|
69
68
|
accepted state is committed.
|
|
70
69
|
|
|
@@ -67,5 +67,5 @@ Selection is controlled: activation emits the complete claim but does not assign
|
|
|
67
67
|
**Slots:** none. **Optional peer deps:** none.
|
|
68
68
|
|
|
69
69
|
```ts
|
|
70
|
-
import "@aceshooting/lyra-ui/components/
|
|
70
|
+
import "@aceshooting/lyra-ui/components/lr-claim-evidence.js";
|
|
71
71
|
```
|
|
@@ -85,7 +85,7 @@ toggle, the loading-skeleton behavior while the fine-grained highlighter resolve
|
|
|
85
85
|
If `languages` changes while highlighting is loading, only results for the current map can update
|
|
86
86
|
the displayed code. For a
|
|
87
87
|
TypeScript annotation, use `import type { ShikiLanguageSource } from
|
|
88
|
-
'@aceshooting/lyra-ui/components/
|
|
88
|
+
'@aceshooting/lyra-ui/components/lr-code-block-core.js'`; the type-only
|
|
89
89
|
granular import emits no registration side effect.
|
|
90
90
|
- `copyAppearance: 'text' | 'icon' = 'text'` (attribute `copy-appearance`, reflected) — identical to
|
|
91
91
|
`<lr-code-block>`'s own property: `'text'` is the labelled button, `'icon'` swaps the visible label
|
|
@@ -138,7 +138,7 @@ constant also avoids repeated component snapshots.
|
|
|
138
138
|
```ts
|
|
139
139
|
import { html } from "lit";
|
|
140
140
|
import jsonGrammar from "shiki/langs/json.mjs";
|
|
141
|
-
import "@aceshooting/lyra-ui/components/
|
|
141
|
+
import "@aceshooting/lyra-ui/components/lr-code-block-core.js";
|
|
142
142
|
|
|
143
143
|
const languages = { json: jsonGrammar };
|
|
144
144
|
const view = html`<lr-code-block-core
|
|
@@ -83,7 +83,7 @@ highlighted markup.
|
|
|
83
83
|
for that language — an additive, opt-in escape hatch for a build scoped to just the languages a
|
|
84
84
|
consumer actually needs. A `language` absent from this map (or `languages` left unset) falls back
|
|
85
85
|
to the default dynamic-import path unchanged. For a TypeScript annotation, use
|
|
86
|
-
`import type { ShikiLanguageInput } from '@aceshooting/lyra-ui/components/
|
|
86
|
+
`import type { ShikiLanguageInput } from '@aceshooting/lyra-ui/components/lr-code-block.js'`;
|
|
87
87
|
the type-only granular import emits no registration side effect.
|
|
88
88
|
The map key need not be the grammar module's own registered name or one of its declared
|
|
89
89
|
aliases — Lyra derives the Shiki `langAlias` mapping this needs automatically, so a key such as
|
|
@@ -104,10 +104,9 @@ when the anchor isn't a `line-range`, the id isn't found, or the start line is o
|
|
|
104
104
|
was written successfully), `lr-error` (`detail: null` — generic notification when clipboard writing
|
|
105
105
|
fails), `lr-copy-error` (frozen `detail: { ok: false, text, reason, error }`, where `reason` is
|
|
106
106
|
`'unsupported' | 'denied' | 'failed'`), `lr-toggle-request` (cancelable;
|
|
107
|
-
`detail: { expanded
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
collapsed: boolean }` — the committed state after the request is accepted),
|
|
107
|
+
`detail: { expanded }` is the proposed next state; canceling leaves the host `collapsed` property
|
|
108
|
+
unchanged),
|
|
109
|
+
`lr-toggle` (`detail: { expanded: boolean }` — the committed state after the request is accepted),
|
|
111
110
|
`lr-line-activate` (`detail: { line: number }` — a gutter line number was activated while
|
|
112
111
|
`activatableLines` is set),
|
|
113
112
|
`lr-text-select` (`detail: { text, anchor, rects }` — a text selection inside the code body ended;
|
|
@@ -205,7 +204,7 @@ highlighting.
|
|
|
205
204
|
|
|
206
205
|
```ts
|
|
207
206
|
import { html } from "lit";
|
|
208
|
-
import "@aceshooting/lyra-ui/components/
|
|
207
|
+
import "@aceshooting/lyra-ui/components/lr-code-block.js";
|
|
209
208
|
|
|
210
209
|
const view = html`<lr-code-block
|
|
211
210
|
language="typescript"
|
|
@@ -317,7 +317,7 @@ of authoring `positioning-strategy`/`hoist` on each instance.
|
|
|
317
317
|
swatches="#e11d48;#2563eb;#16a34a"
|
|
318
318
|
></lr-color-picker>
|
|
319
319
|
<script type="module">
|
|
320
|
-
import "@aceshooting/lyra-ui/components/
|
|
320
|
+
import "@aceshooting/lyra-ui/components/lr-color-picker.js";
|
|
321
321
|
const picker = document.querySelector("lr-color-picker");
|
|
322
322
|
// Objects give each entry a real accessible name:
|
|
323
323
|
picker.swatches = [
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- **Family** `components/forms/` — see `llms/index.md` for its siblings
|
|
8
8
|
- **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [forms](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/forms.md)
|
|
10
|
-
- **
|
|
10
|
+
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
12
|
- **Themeable via** 34 parts, 36 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Documented with** `lr-option` (same section below)
|
|
@@ -70,7 +70,7 @@ focus explicitly — the browser does not replay the focus event after custom-el
|
|
|
70
70
|
input.addEventListener("focus", async () => {
|
|
71
71
|
if (!combobox.hidden) return;
|
|
72
72
|
registration ??= import(
|
|
73
|
-
"@aceshooting/lyra-ui/components/
|
|
73
|
+
"@aceshooting/lyra-ui/components/lr-combobox.js"
|
|
74
74
|
).catch((error) => {
|
|
75
75
|
registration = undefined; // let a later interaction retry
|
|
76
76
|
throw error;
|
|
@@ -416,16 +416,13 @@ async `source` call plus the exact query string that call was made with (the rej
|
|
|
416
416
|
query, not necessarily the live `query`/`inputValue`, which may have moved on — or been cleared by
|
|
417
417
|
closing the listbox — by the time the rejection settles). The rendered copy stays localized and
|
|
418
418
|
never shows the raw error.
|
|
419
|
-
`lr-retry-request`
|
|
419
|
+
`lr-retry-request` is cancelable; the built-in failed-load action calls `refresh()`, and `preventDefault()`
|
|
420
420
|
leaves the failure on screen. While the failure state is the only popup content, the popup swaps
|
|
421
421
|
`role="listbox"` for `role="dialog"` (the input gains the matching `aria-haspopup="dialog"` and
|
|
422
422
|
drops `aria-activedescendant`, and the popup carries the localized failure heading as its accessible
|
|
423
423
|
name). `dialog` is one of the four popup roles WAI-ARIA lets a `role="combobox"` own, so the still
|
|
424
424
|
expanded `aria-controls` target keeps a valid owner while holding a retry `button` that is not a
|
|
425
425
|
legal listbox child. A successful retry restores `role="listbox"`.
|
|
426
|
-
`lr-retry` is the deprecated cancelable alias, dispatched after `lr-retry-request` with the same
|
|
427
|
-
null detail. Either event can veto the built-in refresh; subscribe to one spelling. Removal of the
|
|
428
|
-
alias is not before 24.0.0.
|
|
429
426
|
|
|
430
427
|
**The clear button covers two axes, and announces only the one that moved.** A combobox owns both a
|
|
431
428
|
committed selection and an in-progress filter query, so the button renders whenever either has
|
|
@@ -732,3 +729,5 @@ synchronous and fires no `input`/`change`/`lr-change` event.
|
|
|
732
729
|
- `part="tag-label"` — The selected-tag label. Kept on one line and truncated with an ellipsis at `--tag-max-size` (default `var(--lr-size-5rem)`), rather than wrapped. Note that `lr-select`'s tag of the same name defaults to `var(--lr-size-12rem)`, so the same `--tag-max-size` value yields a wider tag there.
|
|
733
730
|
|
|
734
731
|
---
|
|
732
|
+
|
|
733
|
+
<a id="popup-select-keyboard"></a>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- **Family** `components/agent-tools/` — see `llms/index.md` for its siblings
|
|
8
8
|
- **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [agent-tools](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/agent-tools.md)
|
|
10
|
-
- **
|
|
10
|
+
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
12
|
- **Themeable via** 9 parts, 5 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
@@ -42,11 +42,9 @@ scroll position. `disabled: boolean = false` (reflected) disables every vote but
|
|
|
42
42
|
**Slots:** `a` (the first output — any content, a chat message, markdown, a viewer), `b` (the second
|
|
43
43
|
output), and `prompt` (optional shared-input header above both panes).
|
|
44
44
|
|
|
45
|
-
**Events:** `lr-vote-request`
|
|
45
|
+
**Events:** `lr-vote-request` — `detail: { choice: 'a' | 'b' | 'tie' | 'both-bad'; itemId: string }`.
|
|
46
46
|
This is a cancelable veto point emitted before `vote` changes; call `preventDefault()` to preserve
|
|
47
47
|
the prior vote.
|
|
48
|
-
`lr-vote` is the deprecated cancelable alias, dispatched after `lr-vote-request` with the same
|
|
49
|
-
detail. Either event can veto the vote change; subscribe to one spelling, not both.
|
|
50
48
|
|
|
51
49
|
|
|
52
50
|
**CSS parts:** `base` (the outer wrapper), `prompt` (the optional prompt header, hidden when the
|
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
- **Family** `components/agent-tools/` — see `llms/index.md` for its siblings
|
|
8
8
|
- **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [agent-tools](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/agent-tools.md)
|
|
10
|
-
- **
|
|
11
|
-
- **Deprecated event** `lr-deny` since `22.0.0`; use event `addEventListener('lr-deny-request', event => { /* Call preventDefault() to veto the proposed action. */ })`; removal not before `24.0.0` — Cancelable proposals use request event names. The historical event remains a veto alias during its compatibility window.
|
|
10
|
+
- **Deprecations** none
|
|
12
11
|
- **Optional peers** none
|
|
13
12
|
- **Themeable via** 19 parts, 5 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
14
13
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
@@ -107,13 +106,10 @@ deliberately *not* affected: while a decision is awaiting resolution, focus stil
|
|
|
107
106
|
**Slots:** default — supplementary body content between the heading and the actions (e.g. a
|
|
108
107
|
`lr-diff-view`). `footer` — extra content at the start of the action row.
|
|
109
108
|
|
|
110
|
-
**Events:** `lr-approve-request`
|
|
111
|
-
`lr-tool-approval-dialog`'s own `args` detail; cancelable), `lr-deny-request`
|
|
109
|
+
**Events:** `lr-approve-request` (`detail: { args, waitUntil }` — `args` is the `args` prop as-is, matching
|
|
110
|
+
`lr-tool-approval-dialog`'s own `args` detail; cancelable), `lr-deny-request` (`detail: { waitUntil }`, the
|
|
112
111
|
same resolver and no denial data of its own; cancelable), `lr-decision-settled`
|
|
113
112
|
(`detail: { decision }`; non-cancelable).
|
|
114
|
-
`lr-approve` and `lr-deny` are deprecated cancelable aliases of their respective requests. Each
|
|
115
|
-
follows its request with the same detail, including `waitUntil`; either spelling can veto.
|
|
116
|
-
Subscribe to one spelling per action to avoid handling the same proposal twice.
|
|
117
113
|
|
|
118
114
|
`waitUntil(promise: Promise<unknown>) => void` is ExtendableEvent-style. Calling it from the
|
|
119
115
|
listener holds the bar in its `pendingAction` presentation — `loading` on the activated control,
|
|
@@ -49,8 +49,9 @@ end: number; reason?: string }` marks character ranges within `text` that are re
|
|
|
49
49
|
**Events:** `lr-citation-activate` (`detail: { sourceId: string; index: number }`, surfaced by a
|
|
50
50
|
segment's embedded `lr-citation-badge`), `lr-citation-open` (`detail: { sourceId: string; index:
|
|
51
51
|
number; href?: string }`, the "full preview" signal), `lr-copy` (`detail: { ok: true; text: string }`, from the
|
|
52
|
-
embedded `lr-copy-button`), `lr-export` (`detail: { format: string }`,
|
|
53
|
-
`lr-export-button
|
|
52
|
+
embedded `lr-copy-button`), cancelable `lr-export-request` (`detail: { format: string }`, surfaced by
|
|
53
|
+
the embedded `lr-export-button`; call `preventDefault()` to handle the request without its built-in
|
|
54
|
+
download), `lr-export-complete` (`detail: { format: 'csv' | 'json' }`, after a non-cancelled export
|
|
54
55
|
finishes), `lr-error` (the embedded clipboard write failed), `lr-copy-error` (`detail: { ok: false;
|
|
55
56
|
text: string; reason: string; error: unknown }`, the detailed clipboard failure),
|
|
56
57
|
`lr-toolbar-actions-change` (no detail, surfaced unchanged when the embedded copy button's logical
|
|
@@ -31,8 +31,8 @@ The menu content is exactly what `lr-dropdown` takes, so every row type composes
|
|
|
31
31
|
|
|
32
32
|
```html
|
|
33
33
|
<script type="module">
|
|
34
|
-
import '@aceshooting/lyra-ui/components/
|
|
35
|
-
import '@aceshooting/lyra-ui/components/
|
|
34
|
+
import '@aceshooting/lyra-ui/components/lr-context-menu.js';
|
|
35
|
+
import '@aceshooting/lyra-ui/components/lr-menu-label.js';
|
|
36
36
|
</script>
|
|
37
37
|
|
|
38
38
|
<lr-context-menu label="File actions">
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- **Family** `components/data/` — see `llms/index.md` for its siblings
|
|
8
8
|
- **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [data](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/data.md)
|
|
10
|
-
- **
|
|
10
|
+
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
12
|
- **Themeable via** 17 parts, 14 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
@@ -87,9 +87,7 @@ library event. **Cancelable, and a real veto point**: the default action is this
|
|
|
87
87
|
`index` in its own `selectedIndices`, so `preventDefault()` keeps the current selection and hands
|
|
88
88
|
that state entirely to the consumer. Never emitted in the default presentational mode. Because the
|
|
89
89
|
event dispatches synchronously *before* the write, a listener reading `selectedIndices` inside its
|
|
90
|
-
own handler sees the pre-activation value.
|
|
91
|
-
after the request and before that write, with the same detail. Either event can veto; vetoing only
|
|
92
|
-
the legacy alias issues a development warning. Reentrant activation during dispatch is ignored.
|
|
90
|
+
own handler sees the pre-activation value. Reentrant activation during dispatch is ignored.
|
|
93
91
|
Replacing the segment collection, disabling interaction, or disconnecting during dispatch cancels
|
|
94
92
|
the default write.
|
|
95
93
|
|
|
@@ -138,7 +138,7 @@ for an application-level fallback:
|
|
|
138
138
|
value="npm install @aceshooting/lyra-ui"
|
|
139
139
|
></lr-copy-button>
|
|
140
140
|
<script type="module">
|
|
141
|
-
import "@aceshooting/lyra-ui/components/
|
|
141
|
+
import "@aceshooting/lyra-ui/components/lr-copy-button.js";
|
|
142
142
|
|
|
143
143
|
const button = document.getElementById("copy");
|
|
144
144
|
button.addEventListener("lr-copy", (event) =>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- **Family** `components/data/` — see `llms/index.md` for its siblings
|
|
8
8
|
- **Status** `experimental` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [data](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/data.md)
|
|
10
|
-
- **
|
|
10
|
+
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
12
|
- **Themeable via** 59 parts, 28 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
13
13
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
@@ -27,7 +27,7 @@ shadow root, runs that control without also emitting `lr-cell-click`. Passive ce
|
|
|
27
27
|
to activate the cell.
|
|
28
28
|
|
|
29
29
|
```js
|
|
30
|
-
import "@aceshooting/lyra-ui/components/
|
|
30
|
+
import "@aceshooting/lyra-ui/components/lr-data-grid.js";
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
Give the grid an accessible name with `label` or a host `aria-label`; the host attribute wins.
|
|
@@ -216,17 +216,14 @@ contract;
|
|
|
216
216
|
`lr-copy` (frozen `{ ok: true, text }` after fulfillment); `lr-copy-error`
|
|
217
217
|
(frozen `{ ok: false, text, reason, error }` after failure); `lr-error` (compatibility failure
|
|
218
218
|
notification with no raw platform error text); `lr-data-error` does NOT itself set the built-in
|
|
219
|
-
`error` state (see `error` above); `lr-retry-request`
|
|
219
|
+
`error` state (see `error` above); `lr-retry-request` (`detail: null`, cancelable) — the built-in
|
|
220
220
|
`[part='retry-button']` was activated, only rendered while `error` is set; the default action
|
|
221
221
|
clears `error`, `preventDefault()` leaves it set instead. Every library event bubbles and is
|
|
222
|
-
composed; only `lr-cell-contextmenu`, `lr-sort-request`, `lr-retry-request
|
|
222
|
+
composed; only `lr-cell-contextmenu`, `lr-sort-request`, and `lr-retry-request` are cancelable. Structured
|
|
223
223
|
details and their owned collections are frozen. The toolbar search and active column-filter inputs
|
|
224
224
|
re-dispatch `focus` and `blur` once from the grid host as bubbling, composed native `FocusEvent`s,
|
|
225
225
|
preserving `relatedTarget` so delegated ancestors can observe editor entry and exit without
|
|
226
226
|
crossing the shadow boundary.
|
|
227
|
-
`lr-retry` is the deprecated cancelable alias, dispatched after `lr-retry-request` with the same
|
|
228
|
-
null detail. Either event can veto clearing the error; subscribe to one spelling. Removal of the
|
|
229
|
-
alias is not before 24.0.0.
|
|
230
227
|
|
|
231
228
|
**Row context menus with `lr-context-menu`.** Wrap the grid in an `lr-context-menu` region and
|
|
232
229
|
leave `lr-cell-contextmenu` **un-prevented**: preventing it suppresses the native menu, and the
|
|
@@ -149,9 +149,9 @@ invariant.
|
|
|
149
149
|
|
|
150
150
|
The Details events `lr-show` and `lr-hide` have no detail payload and are cancelable; preventing
|
|
151
151
|
either leaves the panel in its previous state. Accepted changes emit `lr-toggle` with
|
|
152
|
-
`detail: { expanded,
|
|
153
|
-
|
|
154
|
-
|
|
152
|
+
`detail: { expanded, source }` (`expanded` is the new state), then the non-cancelable
|
|
153
|
+
`lr-after-show` or `lr-after-hide` once rendering and motion settle. `source` is `user` for a
|
|
154
|
+
summary click or keyboard activation,
|
|
155
155
|
`programmatic` for `show()`, `hide()`, or assigning `open`, and `peer` when another Details with
|
|
156
156
|
the same non-empty `name` closes this one. The full orders are `lr-show` → `lr-toggle` →
|
|
157
157
|
`lr-after-show` and `lr-hide` → `lr-toggle` → `lr-after-hide`. Initially open markup emits
|