@aceshooting/lyra-ui 21.0.0 → 21.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 +56 -0
- package/README.md +6 -3
- package/custom-elements.json +1 -1
- package/dist/ai/runtime.js +1 -1
- package/dist/ai/types.d.ts +13 -5
- package/dist/cli/lyra-rename-ledger.mjs +1 -0
- package/dist/cli/migrate-wa.mjs +33 -13
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +5 -3
- package/dist/components/agent-tools/agent-trace/agent-trace.class.js +3 -2
- package/dist/components/agent-tools/tool-call-block/tool-call-block.class.d.ts +15 -3
- package/dist/components/agent-tools/tool-call-block/tool-call-block.class.js +3 -3
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +24 -8
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +3 -3
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +4 -0
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.d.ts +9 -5
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +1 -1
- package/dist/components/agent-tools/tool-status.js +2 -2
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +8 -0
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +3 -2
- package/dist/components/agent-tools/tool-timeline/tool-timeline.styles.js +1 -1
- package/dist/components/agent-tools/trace-tree/span.d.ts +2 -2
- package/dist/components/charts/chart/box-plot.class.d.ts +3 -1
- package/dist/components/charts/chart/box-plot.class.js +9 -9
- package/dist/components/charts/chart/chart-bidi.d.ts +109 -0
- package/dist/components/charts/chart/chart-bidi.js +1 -0
- package/dist/components/charts/chart/chart.class.d.ts +17 -2
- package/dist/components/charts/chart/chart.class.js +10 -8
- package/dist/components/charts/chart/histogram.class.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +24 -5
- package/dist/components/charts/chart/lite-chart.class.js +9 -9
- package/dist/components/charts/chart/lite-chart.styles.js +1 -1
- package/dist/components/conversation/code-block/shiki-dark-theme.d.ts +2 -2
- package/dist/components/conversation/code-block/shiki-dark-theme.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.d.ts +18 -2
- package/dist/components/conversation/conversation-item/conversation-item.class.js +3 -3
- package/dist/components/conversation/conversation-item/conversation-item.styles.js +1 -1
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-core.class.d.ts +3 -1
- package/dist/components/conversation/markdown/markdown.class.d.ts +3 -1
- package/dist/components/conversation/message-actions/message-actions.class.d.ts +7 -2
- package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +6 -2
- package/dist/components/conversation/message-parts/message-parts.class.js +5 -3
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +3 -2
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/conversation/streaming-text/streaming-text-base.class.d.ts +1 -5
- package/dist/components/conversation/streaming-text/streaming-text-base.class.js +2 -2
- package/dist/components/conversation/streaming-text/streaming-text-core.class.d.ts +7 -1
- package/dist/components/conversation/streaming-text/streaming-text-core.class.js +3 -4
- package/dist/components/conversation/streaming-text/streaming-text.class.d.ts +7 -1
- package/dist/components/conversation/streaming-text/streaming-text.class.js +3 -4
- package/dist/components/conversation/thread-list/thread-list.class.d.ts +13 -2
- package/dist/components/conversation/thread-list/thread-list.class.js +3 -3
- package/dist/components/data/data-grid/data-grid.class.js +1 -1
- package/dist/components/data/document-library/document-library.class.js +2 -0
- package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -1
- package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
- package/dist/components/data/flow-node/flow-node.class.d.ts +6 -2
- package/dist/components/data/flow-node/flow-node.class.js +6 -2
- package/dist/components/data/flow-node/flow-node.styles.js +1 -1
- package/dist/components/data/gauge/gauge.styles.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +3 -0
- package/dist/components/data/heatmap/heatmap.class.js +2 -2
- package/dist/components/data/heatmap/heatmap.styles.js +1 -1
- package/dist/components/data/sparkline/sparkline.class.d.ts +5 -3
- package/dist/components/data/stat/stat.class.d.ts +4 -3
- package/dist/components/data/table/table.class.d.ts +32 -5
- package/dist/components/data/table/table.class.js +3 -2
- package/dist/components/forms/button/button.class.d.ts +7 -1
- package/dist/components/forms/button/button.styles.js +1 -1
- package/dist/components/forms/date-picker/date-input.styles.js +1 -1
- package/dist/components/forms/input/input.styles.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +1 -0
- package/dist/components/layout/app-rail/app-rail.class.d.ts +50 -11
- package/dist/components/layout/app-rail/app-rail.class.js +2 -2
- package/dist/components/layout/command-palette/command-palette.class.js +1 -1
- package/dist/components/layout/menu/menu.class.d.ts +6 -5
- package/dist/components/layout/split-panel/split-panel.class.d.ts +2 -1
- package/dist/components/media/flag/language-map.d.ts +8 -0
- package/dist/components/media/flag/language-map.js +1 -1
- package/dist/components/media/map/map-loader.d.ts +7 -1
- package/dist/components/media/map/map.class.d.ts +111 -5
- package/dist/components/media/map/map.class.js +3 -3
- package/dist/components/media/media-card/media-card.class.d.ts +18 -5
- package/dist/components/media/media-card/media-card.class.js +1 -1
- package/dist/components/overlays/overlay/popover.class.d.ts +20 -0
- package/dist/components/overlays/overlay/popover.class.js +2 -2
- package/dist/components/retrieval/graph/graph.class.d.ts +3 -3
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +5 -3
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +3 -2
- package/dist/components/retrieval/mind-map/mind-map.class.d.ts +3 -3
- package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +4 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +5 -1
- package/dist/components/retrieval/source-picker/source-picker.class.d.ts +4 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +5 -1
- package/dist/components/utility/icon/icon.class.d.ts +9 -3
- package/dist/components/utility/icon/icon.class.js +1 -1
- package/dist/components/utility/mutation-observer/mutation-observer.class.d.ts +14 -8
- package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +6 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.js +7 -1
- package/dist/components/viewers/document-viewer/registry.d.ts +12 -3
- package/dist/components/viewers/geojson-view/geojson-view.class.d.ts +13 -5
- package/dist/components/viewers/geojson-view/geojson-view.class.js +1 -1
- package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +3 -2
- package/dist/custom-elements-jsx.d.ts +1 -1
- package/dist/events.d.ts +644 -1242
- package/dist/internal/anchored-overlay-runtime.d.ts +2 -2
- package/dist/internal/cell-range.d.ts +0 -6
- package/dist/internal/cell-range.js +1 -1
- package/dist/internal/css-token-length.d.ts +7 -0
- package/dist/internal/css-token-length.js +1 -0
- package/dist/internal/default-strings.generated.d.ts +1 -1
- package/dist/internal/default-strings.generated.js +1 -1
- package/dist/internal/deferred-focus-return.d.ts +7 -4
- package/dist/internal/deferred-focus-return.js +1 -1
- package/dist/internal/dev-mode-attribute-warning.d.ts +35 -0
- package/dist/internal/dev-mode-attribute-warning.js +1 -1
- package/dist/internal/localization-runtime.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +2 -2
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/papaparse-loader.d.ts +1 -1
- package/dist/internal/papaparse-loader.js +1 -1
- package/dist/internal/positioner.d.ts +10 -0
- package/dist/internal/positioner.js +1 -1
- package/dist/internal/shared-unions.d.ts +2 -1
- package/dist/internal/slotted-overlay-controller.d.ts +20 -0
- package/dist/internal/slotted-overlay-controller.js +1 -0
- package/dist/internal/text-quote.d.ts +1 -1
- package/dist/internal/text-quote.js +1 -1
- package/dist/internal/theme-observation.d.ts +4 -0
- package/dist/internal/theme-observation.js +1 -0
- package/dist/internal/theme-watcher.js +1 -1
- package/dist/localization.d.ts +6 -1
- package/dist/localization.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/lyra.js +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/testing/lyra-tag-event-map.js +1 -1
- package/dist/translations/ar/agent-tools.js +1 -1
- package/dist/translations/cs/agent-tools.js +1 -1
- package/dist/translations/da/agent-tools.js +1 -1
- package/dist/translations/de/agent-tools.js +1 -1
- package/dist/translations/de-CH/agent-tools.js +1 -1
- package/dist/translations/es/agent-tools.js +1 -1
- package/dist/translations/fa/agent-tools.js +1 -1
- package/dist/translations/fi/agent-tools.js +1 -1
- package/dist/translations/fr/agent-tools.js +1 -1
- package/dist/translations/he/agent-tools.js +1 -1
- package/dist/translations/hi/agent-tools.js +1 -1
- package/dist/translations/hr/agent-tools.js +1 -1
- package/dist/translations/hu/agent-tools.js +1 -1
- package/dist/translations/id/agent-tools.js +1 -1
- package/dist/translations/it/agent-tools.js +1 -1
- package/dist/translations/ja/agent-tools.js +1 -1
- package/dist/translations/kk/agent-tools.js +1 -1
- package/dist/translations/ko/agent-tools.js +1 -1
- package/dist/translations/nb/agent-tools.js +1 -1
- package/dist/translations/nl/agent-tools.js +1 -1
- package/dist/translations/nn/agent-tools.js +1 -1
- package/dist/translations/pl/agent-tools.js +1 -1
- package/dist/translations/pt-BR/agent-tools.js +1 -1
- package/dist/translations/pt-PT/agent-tools.js +1 -1
- package/dist/translations/pt-PT/charts.js +1 -1
- package/dist/translations/pt-PT/conversation.js +1 -1
- package/dist/translations/pt-PT/data.js +1 -1
- package/dist/translations/pt-PT/forms.js +1 -1
- package/dist/translations/pt-PT/layout.js +1 -1
- package/dist/translations/pt-PT/media.js +1 -1
- package/dist/translations/pt-PT/retrieval.js +1 -1
- package/dist/translations/pt-PT/shared.js +1 -1
- package/dist/translations/pt-PT/utility.js +1 -1
- package/dist/translations/pt-PT/viewers.js +2 -2
- package/dist/translations/ro/agent-tools.js +1 -1
- package/dist/translations/ru/agent-tools.js +1 -1
- package/dist/translations/sl/agent-tools.js +1 -1
- package/dist/translations/sv/agent-tools.js +1 -1
- package/dist/translations/tr/agent-tools.js +1 -1
- package/dist/translations/uk/agent-tools.js +1 -1
- package/dist/translations/zh-CN/agent-tools.js +1 -1
- package/dist/translations/zh-TW/agent-tools.js +1 -1
- package/dist/utilities/index.d.ts +1 -1
- package/dist/utilities/index.js +1 -1
- package/dist/utilities/localization.d.ts +28 -10
- package/dist/vue.d.ts +1 -1
- package/llms/components/lr-accordion-item.md +2 -344
- package/llms/components/lr-accordion.md +2 -344
- package/llms/components/lr-app-rail-group.md +2 -721
- package/llms/components/lr-app-rail-item.md +2 -721
- package/llms/components/lr-app-rail.md +29 -4
- package/llms/components/lr-bar-chart.md +2 -87
- package/llms/components/lr-box-plot.md +1 -1
- package/llms/components/lr-breadcrumb-item.md +2 -67
- package/llms/components/lr-bubble-chart.md +2 -87
- package/llms/components/lr-button.md +7 -0
- package/llms/components/lr-chart.md +4 -5
- package/llms/components/lr-chip-group.md +2 -272
- package/llms/components/lr-conversation-item.md +20 -2
- package/llms/components/lr-date-input.md +2 -457
- package/llms/components/lr-date-picker.md +6 -2
- package/llms/components/lr-document-library.md +3 -3
- package/llms/components/lr-document-viewer.md +14 -5
- package/llms/components/lr-doughnut-chart.md +2 -87
- package/llms/components/lr-dropdown-item.md +2 -306
- package/llms/components/lr-dropdown.md +6 -0
- package/llms/components/lr-flag.md +9 -1
- package/llms/components/lr-flow-node.md +4 -1
- package/llms/components/lr-geojson-view.md +3 -90
- package/llms/components/lr-geojson-viewer.md +13 -5
- package/llms/components/lr-icon-button.md +4 -1
- package/llms/components/lr-icon.md +14 -6
- package/llms/components/lr-input.md +9 -2
- package/llms/components/lr-lite-chart.md +17 -9
- package/llms/components/lr-map.md +87 -2
- package/llms/components/lr-markdown-core.md +5 -4
- package/llms/components/lr-markdown.md +4 -2
- package/llms/components/lr-media-card.md +10 -5
- package/llms/components/lr-menu-item.md +2 -306
- package/llms/components/lr-menu.md +9 -6
- package/llms/components/lr-menubar-item.md +2 -125
- package/llms/components/lr-message-actions.md +4 -1
- package/llms/components/lr-message-parts.md +14 -5
- package/llms/components/lr-mutation-observer.md +12 -6
- package/llms/components/lr-navigation-menu-item.md +2 -237
- package/llms/components/lr-number-input.md +4 -0
- package/llms/components/lr-option.md +2 -712
- package/llms/components/lr-pie-chart.md +2 -87
- package/llms/components/lr-polar-area-chart.md +2 -87
- package/llms/components/lr-popover.md +10 -0
- package/llms/components/lr-prompt-input.md +5 -1
- package/llms/components/lr-radar-chart.md +2 -87
- package/llms/components/lr-reorder-item.md +2 -157
- package/llms/components/lr-result-field.md +2 -117
- package/llms/components/lr-retrieval-results.md +3 -1
- package/llms/components/lr-rubric-form.md +3 -2
- package/llms/components/lr-scatter-chart.md +2 -87
- package/llms/components/lr-selection-toolbar.md +4 -2
- package/llms/components/lr-source-card.md +2 -186
- package/llms/components/lr-source-picker.md +3 -1
- package/llms/components/lr-sparkline.md +9 -4
- package/llms/components/lr-split-panel.md +5 -3
- package/llms/components/lr-stat.md +4 -3
- package/llms/components/lr-streaming-text-core.md +7 -5
- package/llms/components/lr-streaming-text.md +9 -6
- package/llms/components/lr-swatch-picker.md +130 -0
- package/llms/components/lr-tag.md +2 -177
- package/llms/components/lr-thread-list.md +27 -4
- package/llms/components/lr-timeline-item.md +2 -120
- package/llms/components/lr-toast-item.md +2 -223
- package/llms/components/lr-tool-call-block.md +12 -3
- package/llms/components/lr-tool-call-chip.md +12 -6
- package/llms/components/lr-tool-param-form.md +3 -2
- package/llms/components/lr-tool-result-dialog.md +7 -3
- package/llms/components/lr-tool-result-view.md +4 -3
- package/llms/components/lr-tool-timeline.md +12 -5
- package/llms/components/lr-tree-item.md +2 -354
- package/llms/index.md +22 -4
- package/llms/migration.md +75 -1
- package/llms/peers.md +1 -1
- package/llms/shared.md +86 -39
- package/llms-full.txt +739 -163
- package/package.json +6 -6
- package/registrations.json +1 -1
- package/vscode-css-data.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
|
@@ -9,91 +9,6 @@
|
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
|
|
10
10
|
- **Deprecations** none
|
|
11
11
|
- **Optional peers** `chart.js`, `chartjs-plugin-annotation`, `chartjs-plugin-datalabels`, `chartjs-plugin-zoom` — see `llms/peers.md`
|
|
12
|
-
- **Themeable via** 16 parts, 37 custom properties — see
|
|
13
|
-
- **Documented with** `lr-line-chart
|
|
12
|
+
- **Themeable via** 16 parts, 37 custom properties — see `lr-line-chart.md`
|
|
13
|
+
- **Documented with** `lr-line-chart`: see [lr-line-chart.md](./lr-line-chart.md).
|
|
14
14
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## Typed subclasses: `lr-line-chart`, `lr-bar-chart`, `lr-pie-chart`, `lr-doughnut-chart`, `lr-radar-chart`, `lr-polar-area-chart`, `lr-bubble-chart`, `lr-scatter-chart`
|
|
19
|
-
|
|
20
|
-
Each is `LyraChart` with a named default `type` — respectively `line`, `bar`, `pie`, `doughnut`,
|
|
21
|
-
`radar`, `polarArea`, `bubble`, `scatter`. In parity with the mirrored tags, `type` remains writable
|
|
22
|
-
and accepts the full `LyraChartType` vocabulary; the tag name is a convenient default, not a lock.
|
|
23
|
-
|
|
24
|
-
Everything else is inherited verbatim from `lr-chart`; each name below has the same type, default,
|
|
25
|
-
and behavior there. **See `llms/components/lr-chart.md` for the details, code example, and gotchas
|
|
26
|
-
of every entry in these lists.**
|
|
27
|
-
|
|
28
|
-
**Properties:** `description`, `grid`, `axes`, `compact`, `indexAxis` (`index-axis`), `label`, `hiddenDatasets`, `legendPosition`
|
|
29
|
-
(`legend-position`), `hiddenDatums`, `legendMode` (`legend-mode`), `legendDisplay` (`legend-display`),
|
|
30
|
-
`max`, `min`, `plugins`, `scaleType` (`scale-type`), `annotations`,
|
|
31
|
-
`stacked`, `stackedAxes`, `withoutAnimation` (`without-animation`),
|
|
32
|
-
`withoutLegend` (`without-legend`), `withoutTooltip` (`without-tooltip`), `xLabel` (`x-label`),
|
|
33
|
-
`yLabel` (`y-label`), plus additive `labels`, `datasets`, `valueFormatter`, `formatter`,
|
|
34
|
-
`tooltipTitleFormatter`, `tooltipFooterFormatter`, `area`, `zoom`,
|
|
35
|
-
`height`, `y2Label` (`y2-label`), `beginAtZero` (`begin-at-zero`), `dataLabels`
|
|
36
|
-
(`data-labels`), `stackTotals` (`stack-totals`), `config`, `showDataTable`
|
|
37
|
-
(`show-data-table`), `dataTableToggle` (`data-table-toggle`), `chartArea` (readonly), and `chart`.
|
|
38
|
-
`type` differs only in its initial value.
|
|
39
|
-
|
|
40
|
-
**Methods:** `appendData(label, values, maxPoints?)`, `exportData('csv' | 'png')`, `renderChart()`, `resetZoom()`,
|
|
41
|
-
`refreshTheme()`.
|
|
42
|
-
|
|
43
|
-
**Events:** `lr-zoom` (`detail: { zoomed: boolean }`), `lr-datum-activate`, `lr-point-click` (`detail: { datasetIndex,
|
|
44
|
-
index, label, value }`), `lr-legend-visibility-change-request` (cancelable), and
|
|
45
|
-
`lr-legend-visibility-change` (commit; both legend events carry `datasetIndex`, `visible`, and the
|
|
46
|
-
complete `hiddenDatasets` snapshot). `lr-before-legend-visibility-change` is a **deprecated** alias
|
|
47
|
-
of `lr-legend-visibility-change-request` (removal not before 21.0.0).
|
|
48
|
-
Radial category legends additionally emit `lr-datum-visibility-change-request` (cancelable) and
|
|
49
|
-
`lr-datum-visibility-change`, carrying `index`, `visible` and the frozen `hiddenDatums` snapshot.
|
|
50
|
-
`lr-before-datum-visibility-change` is a **deprecated** alias of `lr-datum-visibility-change-request`
|
|
51
|
-
(removal not before 21.0.0).
|
|
52
|
-
|
|
53
|
-
**Slots:** default JSON configuration script, `data-table`, `center`.
|
|
54
|
-
|
|
55
|
-
**CSS parts:** `base`, `plot`, `canvas`, `legend`, `legend-item`, `legend-item-hidden`, `legend-swatch`,
|
|
56
|
-
`reset-zoom-button`, `description`, `notices`, `data-table`, `data-table-toggle`, `data-truncation`, `feature-warning`, `center`, `error` (neutral visible message
|
|
57
|
-
rendered in place of `canvas` when the optional `chart.js` peer dependency fails to load; the
|
|
58
|
-
failure transition is announced through the shared document-level light-DOM assertive sink — see
|
|
59
|
-
`llms/components/lr-chart.md`).
|
|
60
|
-
|
|
61
|
-
**Themeable custom properties:** `--lr-chart-height`, `--lr-chart-grid-color`,
|
|
62
|
-
`--lr-chart-tick-color`, `--lr-chart-tick-font-size`, `--lr-chart-legend-color`, `--lr-chart-tooltip-bg`,
|
|
63
|
-
`--lr-chart-tooltip-text`, `--lr-chart-legend-item-hover-bg`,
|
|
64
|
-
`--lr-chart-legend-item-active-bg`, `--lr-chart-data-table-button-hover-bg`,
|
|
65
|
-
`--lr-chart-data-table-button-active-bg`, `--lr-chart-data-table-toggle-hover-bg`,
|
|
66
|
-
`--lr-chart-data-table-toggle-active-bg`, `--lr-chart-reset-zoom-button-hover-bg`,
|
|
67
|
-
`--lr-chart-reset-zoom-button-active-bg`, `--lr-chart-canvas-hover-outline-width`, and
|
|
68
|
-
`--lr-chart-canvas-hover-outline-color`, `--lr-chart-pattern-step`, plus `--lr-chart-legend-side-max` — all inherited from `LyraChart`, identical in meaning and default (see
|
|
69
|
-
`lr-chart` above); each of the eight variants below reads the same set, so one rule retunes them
|
|
70
|
-
together. The mirrored hooks are `--border-color-1`,
|
|
71
|
-
`--border-color-2`, `--border-color-3`, `--border-color-4`, `--border-color-5`,
|
|
72
|
-
`--border-color-6`, `--fill-color-1`, `--fill-color-2`, `--fill-color-3`, `--fill-color-4`,
|
|
73
|
-
`--fill-color-5`, `--fill-color-6`, `--border-radius`, `--border-width`, `--grid-border-width`,
|
|
74
|
-
`--grid-color`, `--line-border-width`, and `--point-radius`, also identical to the core chart.
|
|
75
|
-
|
|
76
|
-
**Optional peer deps:** same as `lr-chart` — `chart.js`, plus `chartjs-plugin-zoom` only once
|
|
77
|
-
`zoom` is set, `chartjs-plugin-datalabels` only once `data-labels`/`stack-totals` is set, and
|
|
78
|
-
`chartjs-plugin-annotation` only once `annotations` contains a usable entry.
|
|
79
|
-
|
|
80
|
-
```html
|
|
81
|
-
<lr-bar-chart></lr-bar-chart>
|
|
82
|
-
<lr-pie-chart></lr-pie-chart>
|
|
83
|
-
<script>
|
|
84
|
-
document.querySelector('lr-bar-chart').labels = ['A', 'B'];
|
|
85
|
-
document.querySelector('lr-bar-chart').datasets = [{ label: 'Count', data: [4, 9] }];
|
|
86
|
-
|
|
87
|
-
document.querySelector('lr-pie-chart').labels = ['A', 'B', 'C'];
|
|
88
|
-
document.querySelector('lr-pie-chart').datasets = [{ label: 'Share', data: [30, 45, 25], color: ['#2563eb', '#16a34a', '#dc2626'] }];
|
|
89
|
-
</script>
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
**Known gotchas (in addition to the core `lr-chart` list in `llms/components/lr-chart.md`):**
|
|
93
|
-
- Changing `type` after construction may rebuild the underlying Chart.js instance; any active zoom
|
|
94
|
-
state is reset and announced before the new type renders.
|
|
95
|
-
- `lr-bubble-chart` consumes the exported `LyraChartPoint` shape directly. Set `x`/`y`, optional `r`
|
|
96
|
-
for bubble radius, and optional `label` for the point-level accessible/event/export label; no
|
|
97
|
-
runtime cast is needed.
|
|
98
|
-
|
|
99
|
-
---
|
|
@@ -64,8 +64,10 @@ movement starts from the action that received the event rather than stale contro
|
|
|
64
64
|
private so controlled rect updates cannot be silently overridden by stale authored CSS.
|
|
65
65
|
**Themeable custom properties:** `--lr-selection-toolbar-placement-gap` (default
|
|
66
66
|
`var(--lr-space-s)`) is the non-negative distance from the selection and from viewport edges while
|
|
67
|
-
the toolbar avoids collisions. It accepts unitless pixel values
|
|
68
|
-
|
|
67
|
+
the toolbar avoids collisions. It accepts unitless pixel values, `px`, `rem`, and `em` values, and
|
|
68
|
+
CSS length math (`calc()`, `min()`, `max()`, `clamp()`) resolved in its live theme scope. Percentages
|
|
69
|
+
have no placement-gap basis. Invalid values fall back to the default and negative values clamp to
|
|
70
|
+
`0`. Collision math uses the active
|
|
69
71
|
`visualViewport` bounds and offsets when available, including after visual-viewport changes.
|
|
70
72
|
|
|
71
73
|
The toolbar is a floating surface and paints from the **shared overlay-surface family** (16.0.0):
|
|
@@ -9,190 +9,6 @@
|
|
|
9
9
|
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
|
|
10
10
|
- **Deprecations** none
|
|
11
11
|
- **Optional peers** none
|
|
12
|
-
- **Themeable via** 5 parts, 3 custom properties — see
|
|
13
|
-
- **Documented with** `lr-source-list
|
|
12
|
+
- **Themeable via** 5 parts, 3 custom properties — see `lr-source-list.md`
|
|
13
|
+
- **Documented with** `lr-source-list`: see [lr-source-list.md](./lr-source-list.md).
|
|
14
14
|
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## `lr-source-list` / `lr-source-card`
|
|
19
|
-
|
|
20
|
-
A collapsible "Sources" panel for one chat message (`lr-source-list`) that groups a set of
|
|
21
|
-
`lr-source-card` entries. First-party invention (no Web Awesome equivalent). Cards are meant to be
|
|
22
|
-
direct light-DOM children of the list (plain composition — no `.items` array prop, the same shape
|
|
23
|
-
`<lr-multi-split>`'s panels take), though `lr-source-card` renders and functions fine standalone.
|
|
24
|
-
|
|
25
|
-
### `lr-source-list`
|
|
26
|
-
|
|
27
|
-
**Properties:**
|
|
28
|
-
|
|
29
|
-
- `expanded: boolean = false` (reflected) — whether the card list is currently shown. Starts
|
|
30
|
-
collapsed by default so a message's sources don't eat vertical space until asked for.
|
|
31
|
-
- `label?: string` — header text used when `label-plural` isn't set, e.g. `"Sources"`.
|
|
32
|
-
- `labelPlural: string = ''` (attribute `label-plural`) — fully consumer-built, already-pluralized
|
|
33
|
-
header summary, e.g. `"3 sources"` or `"1 source"`; this component never counts or pluralizes on
|
|
34
|
-
its own. Takes precedence over `label` when both are set. If neither is set, the header falls back
|
|
35
|
-
to the localized `sourceListDefaultLabel` string (English default: `"Sources"`).
|
|
36
|
-
- `compact: boolean = false` (reflected) — tighter header and list padding/gap, for a panel
|
|
37
|
-
rendered repeatedly down a message transcript — same convention as this list's own slotted
|
|
38
|
-
`lr-source-card` children's `compact`. Purely a density knob: the outer border and surface stay,
|
|
39
|
-
so pair it with `frame="plain"` to remove card chrome.
|
|
40
|
-
- `frame: LyraFrame = 'card'` (reflected) — container treatment, in the library-wide `frame`
|
|
41
|
-
vocabulary (`'card' | 'plain'`). `'card'` (the default) keeps the bordered, filled outer
|
|
42
|
-
container. `'plain'` removes that outer border, background, and corner radius so a list nested
|
|
43
|
-
inside existing message chrome does not double it. Plain preserves the header/list divider and
|
|
44
|
-
whichever regular or compact padding applies.
|
|
45
|
-
|
|
46
|
-
**Getters:** `sourceCount: number` — read-only, live-updated count of the currently-slotted children,
|
|
47
|
-
handy for building a `label-plural` string reactively, e.g. `` list.labelPlural = `${list.sourceCount} sources` ``.
|
|
48
|
-
|
|
49
|
-
**Events:** `lr-toggle` (`detail: { expanded: boolean }`) — the header was activated, expanding or
|
|
50
|
-
collapsing the list.
|
|
51
|
-
|
|
52
|
-
**Slots:** default — `<lr-source-card>` elements, neutral `<div>`/`<span>` wrappers, or
|
|
53
|
-
author-owned `role="listitem"` entries. When every assigned child is one of those list-compatible
|
|
54
|
-
forms, `[part="list"]` supplies `role="list"` and neutral, unroled children temporarily receive
|
|
55
|
-
`role="listitem"`. Native controls and children with another explicit or native semantic role retain
|
|
56
|
-
their own semantics; their presence omits list/listitem roles rather than creating an invalid ARIA
|
|
57
|
-
list context. When every assigned child returns to this list-compatible allowlist, the
|
|
58
|
-
list/listitem semantics return.
|
|
59
|
-
|
|
60
|
-
**CSS parts:** `base` (outer container), `header` (the clickable `<button>` toggling `expanded`),
|
|
61
|
-
`toggle` (the chevron indicator inside the header), `list` (wrapper around the default slot, `hidden`
|
|
62
|
-
while collapsed).
|
|
63
|
-
|
|
64
|
-
**Themeable custom properties:** `--lr-source-list-compact-header-padding` (default
|
|
65
|
-
`var(--lr-space-2xs) var(--lr-space-s)`) and `--lr-source-list-compact-header-gap` (default
|
|
66
|
-
`var(--lr-space-2xs)`) — `[part="header"]` padding/gap while `compact`; `--lr-source-list-compact-gap`
|
|
67
|
-
(default `var(--lr-space-2xs)`) and `--lr-source-list-compact-list-padding` (default
|
|
68
|
-
`var(--lr-space-s)`) — `[part="list"]` gap/padding while `compact`. All four are inline `var()`
|
|
69
|
-
fallbacks at their point of use, so any can be set on the element or an ancestor. Otherwise shared
|
|
70
|
-
tokens — `--lr-color-border`, `--lr-color-border-subtle`, `--lr-color-surface`,
|
|
71
|
-
`--lr-color-text`, `--lr-color-brand` / `-brand-quiet`, `--lr-radius`, `--lr-space-xs`/`-s`/
|
|
72
|
-
`-m`, `--lr-transition-fast`, `--lr-focus-ring-*`.
|
|
73
|
-
|
|
74
|
-
**Optional peer deps:** none.
|
|
75
|
-
|
|
76
|
-
### `lr-source-card`
|
|
77
|
-
|
|
78
|
-
**Properties:**
|
|
79
|
-
|
|
80
|
-
- `sourceId: string = ''` (attribute `source-id`) — stable identifier matching a
|
|
81
|
-
`<lr-citation-badge>` elsewhere on the page.
|
|
82
|
-
- `title: string = ''` — the source's display title, e.g. a filename. Falls back to `"Untitled
|
|
83
|
-
source"` when empty.
|
|
84
|
-
- `page?: string | number` — optional page reference, e.g. `12` or `"iv"`, rendered as-is (never
|
|
85
|
-
parsed/validated as a number), appended to the title as `" — p. {page}"`.
|
|
86
|
-
- `href?: string` — optional URL, echoed back (unopened) in `lr-open`'s detail.
|
|
87
|
-
- `compact: boolean = false` (reflected) — tighter root padding and row gap, for the dense citation
|
|
88
|
-
lists these cards usually render in — the same convention as `lr-empty`'s `compact`. Purely a
|
|
89
|
-
density knob: the border and background stay. `false` (the default) keeps the full card padding.
|
|
90
|
-
- `frame: LyraFrame = 'card'` (reflected) — container treatment, in the library-wide `frame`
|
|
91
|
-
vocabulary (`'card' | 'plain'`). `'card'` (the default) keeps the bordered, filled, padded box;
|
|
92
|
-
`'plain'` removes the border, background, padding and corner radius, so a card inside a
|
|
93
|
-
`<lr-source-list>` (or any container already drawing its own border/dividers) doesn't double it.
|
|
94
|
-
`plain` wins over `compact` when both are set — nothing left to tighten. The title and toggle keep
|
|
95
|
-
their brand color and hover underline under `plain`, since neither ever depended on the card
|
|
96
|
-
chrome. Use the shared `LyraFrame` type when authoring this property.
|
|
97
|
-
- `disabled: boolean = false` (reflected) — turns off this card's OWN controls. The `title` button
|
|
98
|
-
and the "Show more"/"Show less" `toggle` both render `disabled`, so neither one can emit `lr-open`
|
|
99
|
-
or `lr-expand` and neither remains in the tab order, and the card paints at
|
|
100
|
-
`--lr-opacity-disabled` with a `not-allowed` cursor on both. The one `lr-expand` a disabled card
|
|
101
|
-
can still emit is the automatic collapse when the `full` slot empties while expanded — that
|
|
102
|
-
reports a state change the card genuinely made, exactly as it does when enabled. Both buttons
|
|
103
|
-
carry the native `:disabled`, so `::part(title):disabled` / `::part(toggle):disabled` restyle the
|
|
104
|
-
disabled affordance from outside. Every self-rendered sub-control is
|
|
105
|
-
gated, not just the primary one: a card whose title is inert but whose disclosure toggle still
|
|
106
|
-
expands reads as half-broken rather than disabled. Slotted `excerpt`/`full` content stays yours
|
|
107
|
-
to disable. Not form-associated, so an ancestor `<fieldset disabled>` does not cascade here.
|
|
108
|
-
- `aria-pressed` and `aria-current` (attributes only) — forwarded reactively onto the `title`
|
|
109
|
-
button, the control that carries this card's action, the same mechanism `<lr-button>` and
|
|
110
|
-
`<lr-icon-button>` use. `aria-pressed` accepts `'true' | 'false' | 'mixed'`; `aria-current`
|
|
111
|
-
accepts `'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'`. Anything outside
|
|
112
|
-
those sets is dropped rather than passed through. The `toggle` button never receives either — it
|
|
113
|
-
already owns `aria-expanded` for its own disclosure state, and two conflicting state claims on
|
|
114
|
-
one control is worse than one. This is what lets a single-select citation list announce which
|
|
115
|
-
source is the active one.
|
|
116
|
-
|
|
117
|
-
**Events:**
|
|
118
|
-
|
|
119
|
-
- `lr-expand` (`detail: { sourceId: string; expanded: boolean }`) — the per-card "Show
|
|
120
|
-
more"/"Show less" toggle was activated. Unrelated to the parent `lr-source-list`'s own
|
|
121
|
-
expand/collapse, which only ever hides/shows the _set_ of cards, never a single card's own content.
|
|
122
|
-
- `lr-open` (`detail: { sourceId: string; href?: string }`) — the title was activated. This
|
|
123
|
-
component never navigates on its own (a controlled component, the same convention
|
|
124
|
-
`<lr-tool-call-chip>`'s `lr-tool-call-chip-select` follows); a listener decides what "open"
|
|
125
|
-
means.
|
|
126
|
-
|
|
127
|
-
**Slots:** `excerpt` (a short preview; when left empty, the `excerpt` part collapses away entirely —
|
|
128
|
-
its wrapper is `hidden`, not just visually empty), `full` (the complete source text/chunk, hidden
|
|
129
|
-
behind the "Show more"/"Show less" toggle — when left empty, no toggle renders at all; removing all
|
|
130
|
-
`full`-slotted content while expanded auto-collapses it back).
|
|
131
|
-
|
|
132
|
-
**CSS parts:** `base` (outer container), `title` (the clickable title/page heading, a `<button>`),
|
|
133
|
-
`excerpt` (wrapper around the `excerpt` slot, `hidden` when the slot has no assigned content), `full`
|
|
134
|
-
(wrapper around the `full` slot, `hidden` while collapsed), `toggle` (the "Show more"/"Show less"
|
|
135
|
-
button — only rendered when the `full` slot has content).
|
|
136
|
-
|
|
137
|
-
**Themeable custom properties:** `--lr-source-card-bg` (default `var(--lr-color-surface)`) —
|
|
138
|
-
`[part='base']`'s RESTING background, the companion to the `compact` tier's levers below;
|
|
139
|
-
`frame='plain'` still drops the fill entirely. `--lr-source-card-compact-padding` (default
|
|
140
|
-
`var(--lr-space-xs)`) —
|
|
141
|
-
`[part='base']`'s padding while `compact`; `--lr-source-card-compact-gap` (default
|
|
142
|
-
`var(--lr-space-2xs)`) — the gap between `[part='base']`'s rows while `compact`. Both apply only in
|
|
143
|
-
the `compact` state, so a dense citation list can be tuned without re-pointing shared spacing tokens
|
|
144
|
-
elsewhere. Plus shared tokens — `--lr-color-border-subtle`, `--lr-color-surface`,
|
|
145
|
-
`--lr-color-text` / `-text-quiet`, `--lr-color-brand`, `--lr-radius`, `--lr-space-xs`/`-s`,
|
|
146
|
-
`--lr-focus-ring-*`.
|
|
147
|
-
|
|
148
|
-
**Optional peer deps:** none.
|
|
149
|
-
|
|
150
|
-
```html
|
|
151
|
-
<lr-source-list label-plural="2 sources">
|
|
152
|
-
<lr-source-card source-id="doc-1" title="annual_report.pdf" page="12">
|
|
153
|
-
<span slot="excerpt">Revenue grew 12% year over year...</span>
|
|
154
|
-
<span slot="full"
|
|
155
|
-
>Revenue grew 12% year over year, driven primarily by...</span
|
|
156
|
-
>
|
|
157
|
-
</lr-source-card>
|
|
158
|
-
<lr-source-card source-id="doc-2" title="q3_notes.md">
|
|
159
|
-
<span slot="excerpt">No matching full-text chunk for this source.</span>
|
|
160
|
-
</lr-source-card>
|
|
161
|
-
</lr-source-list>
|
|
162
|
-
<script type="module">
|
|
163
|
-
// Elsewhere, a <lr-citation-badge>'s activation handler can scroll to and
|
|
164
|
-
// highlight the matching card -- neither component needs extra API surface
|
|
165
|
-
// for that, only source-id to be targeted by:
|
|
166
|
-
document.addEventListener("lr-citation-activate", (e) => {
|
|
167
|
-
const card = document.querySelector(
|
|
168
|
-
`lr-source-card[source-id="${e.detail.sourceId}"]`
|
|
169
|
-
);
|
|
170
|
-
card?.scrollIntoView({ block: "center" });
|
|
171
|
-
});
|
|
172
|
-
</script>
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
`lr-source-list` removes the card list from the accessibility tree (not just visually hides it)
|
|
176
|
-
while collapsed, via the native `hidden` attribute on `[part="list"]` — a screen reader user tabbing
|
|
177
|
-
past the header never lands on off-screen source cards they can't currently see. Both components
|
|
178
|
-
track slot presence in JS state (`slottedCount` on the list, `hasFullSlot` on the card) rather than
|
|
179
|
-
relying on CSS `:empty`, since a `[part]` wrapper always contains a literal `<slot>` child regardless
|
|
180
|
-
of assigned content; both also reconcile that state in `firstUpdated()` as a fallback for slot-
|
|
181
|
-
forwarding scenarios or engines that don't fire `slotchange` for content already present at parse
|
|
182
|
-
time.
|
|
183
|
-
|
|
184
|
-
**Known gotchas:**
|
|
185
|
-
|
|
186
|
-
- `lr-source-list` does not automatically build an “N sources” plural summary: provide
|
|
187
|
-
`labelPlural` when that is wanted. Its no-label fallback is localized through
|
|
188
|
-
`sourceListDefaultLabel`, and a per-instance `.strings` override reaches the rendered header.
|
|
189
|
-
- `lr-source-card`'s own expand/collapse (`full` slot, `lr-expand` event) is completely
|
|
190
|
-
independent of the parent list's `expanded`/`lr-toggle` — collapsing the list doesn't reset an
|
|
191
|
-
individual card's `fullExpanded` state, and there is no cross-talk between the two components at
|
|
192
|
-
all beyond DOM nesting.
|
|
193
|
-
- `lr-source-card` actively strips a bare host-level `title` attribute right after Lit syncs it into
|
|
194
|
-
the `title` property — otherwise the whole card would grow an unsolicited native tooltip repeating
|
|
195
|
-
the title text on hover. Set `title` only as a property/attribute meant to become the rendered
|
|
196
|
-
heading; don't rely on it surviving as a DOM attribute afterward.
|
|
197
|
-
|
|
198
|
-
---
|
|
@@ -58,7 +58,9 @@ string; mimeType?: string; name?: string; children?: LyraSourceEntry[] }`; flat
|
|
|
58
58
|
**Events:** `lr-sources-change` (`detail: { selectedSourceIds }`, the complete updated leaf-id array,
|
|
59
59
|
fired after every toggle including select-all. Also fired when a `sources` reassignment prunes a
|
|
60
60
|
previously-selected id that is no longer a valid leaf. Not fired when a consumer sets
|
|
61
|
-
`selectedSourceIds` directly; that assignment is normalized silently).
|
|
61
|
+
`selectedSourceIds` directly; that assignment is normalized silently). The select-all checkbox's
|
|
62
|
+
own `lr-checkbox-toggle-request`, native `input`/`change`, and `lr-input`/`lr-change` stay inside
|
|
63
|
+
the component; `lr-sources-change` is the host-level report of that toggle.
|
|
62
64
|
|
|
63
65
|
**Slots:** none.
|
|
64
66
|
|
|
@@ -7,6 +7,8 @@
|
|
|
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: [llms-full.txt](../../llms-full.txt)
|
|
10
|
+
- **Deprecated css-property** `--lr-sparkline-stroke-width` since `21.1.0`; use css-property `--line-width (the same value, declared on lr-sparkline itself)`; removal not before `23.0.0` — --lr-sparkline-stroke-width predates the mirrored Web Awesome --line-width and is read only as its fallback, so it has no effect wherever --line-width is set. Scope the replacement to lr-sparkline, because the unprefixed --line-width also reaches any other element that reads it. It keeps working through the 22.x line; a stylesheet cannot be observed using it, so it never logs a warning.
|
|
11
|
+
- **Deprecated part** `area` since `21.1.0`; use part `::part(fill)`; removal not before `23.0.0` — area is a Lyra-only alias for the mirrored fill part on the same path; fill is the Web Awesome name. The area token stays on that path through the 22.x line; a stylesheet cannot be observed using a part, so it never logs a warning.
|
|
10
12
|
- **Deprecated part** `base` since `8.0.0`; use part `::part(sparkline)`; removal not before `10.0.0` — The sparkline part names the rendered SVG wrapper unambiguously; base remains on that same node during the compatibility window. That version is a policy floor, not a plan: `wa-sparkline` still publishes its own deprecated `base` part, so this alias is removed only when upstream's is.
|
|
11
13
|
- **Optional peers** none
|
|
12
14
|
- **Themeable via** 6 parts, 4 custom properties — see this component's own `@csspart`/`@cssprop` list below
|
|
@@ -56,14 +58,17 @@ space-separated samples restores the attribute-driven path.
|
|
|
56
58
|
**Slots:** none.
|
|
57
59
|
|
|
58
60
|
**CSS parts:** `sparkline` and deprecated `base` are aliases on the same outer SVG, `fill` is the
|
|
59
|
-
area path for solid/gradient appearance, `line` is the stroke path
|
|
60
|
-
|
|
61
|
+
area path for solid/gradient appearance, `line` is the stroke path, and the additive `bar` is each
|
|
62
|
+
extension-mode rectangle. `area` is a deprecated alias of `fill` on the same path (removal not
|
|
63
|
+
before 23.0.0); use `::part(fill)`.
|
|
61
64
|
|
|
62
65
|
**Themeable custom properties:** `--fill-color` (area/gradient stop color), `--line-color` (stroke
|
|
63
66
|
color), and `--line-width` (stroke width). Each reads through the live CSS cascade; line/fill
|
|
64
67
|
default to the selected `trend`'s semantic Lyra tokens and `--line-width` falls back through the
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
deprecated `--lr-sparkline-stroke-width` (removal not before 23.0.0) to `--lr-border-width-medium`.
|
|
69
|
+
Replace that alias with `--line-width` scoped to the element (`lr-sparkline { --line-width: 2px; }`),
|
|
70
|
+
since the unprefixed name also reaches any other element that reads it. No canvas bridge or manual
|
|
71
|
+
refresh is needed. Styling hooks cannot be observed, so neither deprecated alias logs a warning.
|
|
67
72
|
|
|
68
73
|
**Optional peer deps:** none.
|
|
69
74
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- **Family** `components/layout/` — see `llms/index.md` for its siblings
|
|
8
8
|
- **Status** `stable` since `8.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: [llms-full.txt](../../llms-full.txt)
|
|
10
|
-
- **
|
|
10
|
+
- **Deprecated part** `split-panel` since `21.1.0`; use part `::part(base)`; removal not before `23.0.0` — split-panel is a Lyra-only second token on the same outer wrapper as base. Neither pinned wa-split-panel nor sl-split-panel publishes a wrapper part, so base, the root part name used across the library, remains the single supported spelling. The removal-not-before version is a policy floor, not a plan: should either upstream publish a component-named wrapper part, this alias stays for as long as upstream ships it.
|
|
11
11
|
- **Optional peers** none
|
|
12
12
|
- **Themeable via** 6 parts, 10 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`
|
|
@@ -66,9 +66,11 @@ custom-handle content inside the separator; its assigned subtree is inert, so th
|
|
|
66
66
|
the sole pointer/keyboard resize control). Under RTL, logical start/end and horizontal pointer/arrow
|
|
67
67
|
behavior mirror together; vertical behavior does not invert.
|
|
68
68
|
|
|
69
|
-
**CSS parts:** `base split-panel` (both tokens are on the same outer wrapper
|
|
69
|
+
**CSS parts:** `base split-panel` (both tokens are on the same outer wrapper; `split-panel` is a
|
|
70
|
+
deprecated alias of `base`, removal not before 23.0.0, so style `::part(base)`), `start panel` and
|
|
70
71
|
`end panel` (each pane exposes its individual token plus the shared `panel` token), `divider`
|
|
71
|
-
(focusable `role="separator"`, with value/min/max and disabled ARIA state).
|
|
72
|
+
(focusable `role="separator"`, with value/min/max and disabled ARIA state). The deprecated part
|
|
73
|
+
still matches until its removal; being a stylesheet selector, it logs no runtime warning.
|
|
72
74
|
|
|
73
75
|
**Themeable custom properties:** `--divider-width` (default `4px`), `--divider-hit-area` (requested
|
|
74
76
|
default `12px`, with Lyra's `--lr-icon-button-size` minimum target remaining the floor), `--min`
|
|
@@ -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: [llms-full.txt](../../llms-full.txt)
|
|
10
|
-
- **
|
|
10
|
+
- **Deprecated slot** default slot since `21.1.0`; use slot `slot="start"`; removal not before `23.0.0` — start is the library-wide adornment slot and already takes precedence when both are filled; retiring the unnamed icon alias stops an unnamed child from silently becoming the leading icon. lr-stat has no upstream counterpart, so no mirrored slot is affected.
|
|
11
11
|
- **Optional peers** none
|
|
12
12
|
- **Themeable via** 14 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`
|
|
@@ -94,8 +94,9 @@ value: string; readonly exactValue?: string }`; at most the first 10,000 rows ar
|
|
|
94
94
|
|
|
95
95
|
**Events:** none.
|
|
96
96
|
|
|
97
|
-
**Slots:** `start` (canonical leading icon), default (
|
|
98
|
-
|
|
97
|
+
**Slots:** `start` (canonical leading icon), default (deprecated leading-icon alias, removal not
|
|
98
|
+
before 23.0.0: it still renders while `start` is empty and `start` takes precedence when both are
|
|
99
|
+
filled; move the icon to `slot="start"`), `caption` (rich caption content —
|
|
99
100
|
overrides the `caption` attribute when slotted content is provided), `spark` (a sparkline, e.g. `<lr-sparkline
|
|
100
101
|
slot="spark">`, or other compact trend visual — `lr-stat` only reserves the slot and doesn't
|
|
101
102
|
render one itself), `sub` (rich sub-line content — overrides the `sub` attribute when slotted content
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- **Family** `components/conversation/` — see `llms/index.md` for its siblings
|
|
8
8
|
- **Status** `experimental` since `16.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: [llms-full.txt](../../llms-full.txt)
|
|
10
|
-
- **
|
|
10
|
+
- **Deprecated property** `codeBlockChrome` / `code-block-chrome` since `21.1.0`; use property `code-block-header`; removal not before `23.0.0` — code-block-chrome is a second spelling of code-block-header with identical behavior: either one enables the code-block headers of the composed Markdown element, which now always receives code-block-header. One name per concept removes a choice with no difference. It keeps enabling the headers through the 22.x line, and setting it logs a one-time development warning.
|
|
11
11
|
- **Optional peers** `dompurify`, `katex`, `marked`, `shiki` — see `llms/peers.md`
|
|
12
12
|
- **Themeable via** 25 parts, 2 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`
|
|
@@ -48,12 +48,14 @@ attribute names, and defaults described under `<lr-streaming-text>`'s own **Prop
|
|
|
48
48
|
`rel="noopener noreferrer"` whenever a `target` is emitted); `internalLinkPrefix: string = ''`
|
|
49
49
|
(attribute `internal-link-prefix`); `headingOffset: number = 0` (attribute `heading-offset`);
|
|
50
50
|
`streamingRender: MarkdownStreamingRender = 'plain'` (attribute `streaming-render`, not reflected);
|
|
51
|
-
`codeBlockHeader: boolean = false` (attribute `code-block-header`) and its
|
|
52
|
-
`codeBlockChrome: boolean = false` (attribute `code-block-chrome
|
|
51
|
+
`codeBlockHeader: boolean = false` (attribute `code-block-header`) and its deprecated
|
|
52
|
+
compatibility alias `codeBlockChrome: boolean = false` (attribute `code-block-chrome`; removal not
|
|
53
|
+
before 23.0.0); `highlightCode: boolean = true`
|
|
53
54
|
(attribute `highlight-code`); `headingAnchors: boolean = false` (attribute `heading-anchors`);
|
|
54
55
|
`math: boolean = false`; `maxHeight: string = ''` (attribute `max-height`). All are forwarded to
|
|
55
56
|
the composed `<lr-markdown-core>`, with matching behavior and defaults. `streamingRender` controls
|
|
56
|
-
progressive output, and `codeBlockHeader` (or its `codeBlockChrome` alias
|
|
57
|
+
progressive output, and `codeBlockHeader` (or its deprecated `codeBlockChrome` alias, which reaches
|
|
58
|
+
the composed element as `codeBlockHeader`) enables the localized
|
|
57
59
|
code label and source-copy action.
|
|
58
60
|
|
|
59
61
|
**Exported helper:** `looksLikeMarkdown(text: string): boolean` — the same standalone heuristic
|
|
@@ -104,6 +106,6 @@ The Markdown part set also includes `task-list`, `task-item`, `task-item-checked
|
|
|
104
106
|
`task-checkbox`, `table-wrapper`, `code-block-frame`, `code-block-copy-success`,
|
|
105
107
|
`code-block-copy-error` and `streaming-tail`. `codeBlockHeader: boolean = false`
|
|
106
108
|
(attribute `code-block-header`) enables the code-block header; `codeBlockChrome` (attribute
|
|
107
|
-
`code-block-chrome`) is its compatibility alias. Successful and
|
|
109
|
+
`code-block-chrome`) is its deprecated compatibility alias (removal not before 23.0.0). Successful and
|
|
108
110
|
failed writes pass through as `lr-copy` and `lr-copy-error`, carrying the immutable clipboard
|
|
109
111
|
outcome, bubbling and composed.
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
- **Family** `components/conversation/` — 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: [llms-full.txt](../../llms-full.txt)
|
|
10
|
-
- **
|
|
10
|
+
- **Deprecated property** `codeBlockChrome` / `code-block-chrome` since `21.1.0`; use property `code-block-header`; removal not before `23.0.0` — code-block-chrome is a second spelling of code-block-header with identical behavior: either one enables the code-block headers of the composed Markdown element, which now always receives code-block-header. One name per concept removes a choice with no difference. It keeps enabling the headers through the 22.x line, and setting it logs a one-time development warning.
|
|
11
11
|
- **Optional peers** `dompurify`, `katex`, `marked`, `shiki` — see `llms/peers.md`
|
|
12
12
|
- **Themeable via** 25 parts, 2 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`
|
|
@@ -61,9 +61,11 @@ properties existed:
|
|
|
61
61
|
- `headingOffset: number = 0` (attribute `heading-offset`) — forwarded to the composed
|
|
62
62
|
`<lr-markdown>`'s own `headingOffset`.
|
|
63
63
|
- `streamingRender: MarkdownStreamingRender = 'plain'` (attribute `streaming-render`, not reflected)
|
|
64
|
-
and `codeBlockHeader: boolean = false` (attribute `code-block-header`), with its
|
|
65
|
-
alias `codeBlockChrome: boolean = false` (attribute `code-block-chrome
|
|
66
|
-
|
|
64
|
+
and `codeBlockHeader: boolean = false` (attribute `code-block-header`), with its deprecated
|
|
65
|
+
compatibility alias `codeBlockChrome: boolean = false` (attribute `code-block-chrome`; removal not
|
|
66
|
+
before 23.0.0; setting it logs a one-time development warning) — forwarded to the composed
|
|
67
|
+
Markdown element, which receives either header option as its own `codeBlockHeader`. Their
|
|
68
|
+
settled-block streaming behavior, code-copy behavior, and defaults match
|
|
67
69
|
`<lr-markdown>`; see its **Properties** section above.
|
|
68
70
|
Use `streaming-render="progressive"` with `content-mode="markdown"`: in `auto` mode the element
|
|
69
71
|
switches from plain text to Markdown when detection first succeeds, which replaces the displayed
|
|
@@ -159,7 +161,8 @@ showing the previous stream's stale final content for the length of the window.
|
|
|
159
161
|
|
|
160
162
|
Rendering itself is never reimplemented here: Markdown mode composes `<lr-markdown>` directly,
|
|
161
163
|
forwarding this component's own `streaming` through as that component's `streaming` hint prop,
|
|
162
|
-
`streamingRender`, `codeBlockHeader
|
|
164
|
+
`streamingRender`, `codeBlockHeader` (on when either this element's `codeBlockHeader` or its
|
|
165
|
+
deprecated `codeBlockChrome` is), `languages` verbatim, and the rest of `<lr-markdown>`'s
|
|
163
166
|
configuration surface verbatim too (`tabSize`, `htmlMode`, `gfm`, `linkTarget`,
|
|
164
167
|
`internalLinkPrefix`, `headingOffset`, `highlightCode`, `headingAnchors`, `math`, `maxHeight` —
|
|
165
168
|
see **Properties** above); plain-text mode
|
|
@@ -190,6 +193,6 @@ The Markdown part set also includes `task-list`, `task-item`, `task-item-checked
|
|
|
190
193
|
`task-checkbox`, `table-wrapper`, `code-block-frame`, `code-block-copy-success`,
|
|
191
194
|
`code-block-copy-error` and `streaming-tail`. `codeBlockHeader: boolean = false`
|
|
192
195
|
(attribute `code-block-header`) enables the code-block header; `codeBlockChrome` (attribute
|
|
193
|
-
`code-block-chrome`) is its compatibility alias. Successful and
|
|
196
|
+
`code-block-chrome`) is its deprecated compatibility alias (removal not before 23.0.0). Successful and
|
|
194
197
|
failed writes pass through as `lr-copy` and `lr-copy-error`, carrying the immutable clipboard
|
|
195
198
|
outcome, bubbling and composed.
|
|
@@ -212,4 +212,134 @@ class AccentTrigger extends LitElement {
|
|
|
212
212
|
tuning the gap and hit size small enough to avoid wrapping is a guess that breaks at the next
|
|
213
213
|
swatch added.
|
|
214
214
|
|
|
215
|
+
### gemstoneAccentPicker — the signature accent selector
|
|
216
|
+
|
|
217
|
+
`gemstoneAccentPicker` names the canonical composition of `lr-icon-button`, `lr-popover`, and
|
|
218
|
+
`lr-swatch-picker mode="gemstone"`. It is a **pattern name, not an exported component or tag**.
|
|
219
|
+
Use it for application accent selection: a glowing current-gem trigger, one compact
|
|
220
|
+
“Gemstone: selected name” caption, and all nine canonical gemstones, in `GEMSTONE_KEYS` order, in
|
|
221
|
+
one row. Localize the caption, trigger, dialog, radiogroup, and item names. Omit introductory copy
|
|
222
|
+
and a second selected-name paragraph.
|
|
223
|
+
|
|
224
|
+
The consuming Lit component imports these granular entries and lists
|
|
225
|
+
`gemstoneSelectedGlyphStyles` in its `static styles` ahead of the CSS that follows.
|
|
226
|
+
`components/forms/icon-button/icon-button-register.js` can replace `icon-button.js` when no icon
|
|
227
|
+
button in the application uses `icon` or `src`:
|
|
228
|
+
|
|
229
|
+
```ts
|
|
230
|
+
import '@aceshooting/lyra-ui/components/forms/icon-button/icon-button.js';
|
|
231
|
+
import '@aceshooting/lyra-ui/components/overlays/overlay/popover.js';
|
|
232
|
+
import '@aceshooting/lyra-ui/components/forms/swatch-picker/swatch-picker.js';
|
|
233
|
+
import {
|
|
234
|
+
GEMSTONE_KEYS,
|
|
235
|
+
GEMSTONES,
|
|
236
|
+
gemstoneGlyph,
|
|
237
|
+
gemstoneSelectedGlyphStyles,
|
|
238
|
+
type GemstoneKey,
|
|
239
|
+
} from '@aceshooting/lyra-ui/theme/gemstones.js';
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
`--accent-color`, `--caption-color`, and `--text-color` are application-owned theme tokens.
|
|
243
|
+
`--lr-overlay-max-inline-size` lifts the popup's default 20rem cap so the 20rem palette plus the
|
|
244
|
+
popover's own padding fits. Both `--lr-gemstone-selected-*` values reach the trigger glyph and the
|
|
245
|
+
picker's checked glyph alike: a 0.42rem halo at 92% of the accent. Leave
|
|
246
|
+
`--lr-gemstone-selected-shine-duration` unset to keep the default 1.8s shine. The
|
|
247
|
+
`--lr-icon-button-*` values keep the trigger free of a rectangular fill at rest, on hover, and
|
|
248
|
+
while pressed:
|
|
249
|
+
|
|
250
|
+
```css
|
|
251
|
+
.gemstone-accent-picker {
|
|
252
|
+
--lr-overlay-max-inline-size: 22rem;
|
|
253
|
+
--lr-gemstone-selected-color: color-mix(in srgb, var(--accent-color) 92%, transparent);
|
|
254
|
+
--lr-gemstone-selected-blur: .42rem;
|
|
255
|
+
}
|
|
256
|
+
.gemstone-accent-picker lr-icon-button {
|
|
257
|
+
--lr-icon-button-background: transparent;
|
|
258
|
+
--lr-icon-button-background-hover: transparent;
|
|
259
|
+
--lr-icon-button-background-active: transparent;
|
|
260
|
+
--lr-icon-button-border: none;
|
|
261
|
+
}
|
|
262
|
+
.gem { display: inline-flex; inline-size: 1.15rem; block-size: 1.15rem; }
|
|
263
|
+
.gem svg { inline-size: 100%; block-size: 100%; }
|
|
264
|
+
.palette {
|
|
265
|
+
box-sizing: border-box;
|
|
266
|
+
display: flex;
|
|
267
|
+
flex-direction: column;
|
|
268
|
+
gap: .15rem;
|
|
269
|
+
inline-size: 20rem;
|
|
270
|
+
padding: .3rem;
|
|
271
|
+
}
|
|
272
|
+
.heading {
|
|
273
|
+
margin: .2rem .3rem .5rem;
|
|
274
|
+
color: var(--caption-color);
|
|
275
|
+
font-size: .75rem;
|
|
276
|
+
font-weight: 600;
|
|
277
|
+
}
|
|
278
|
+
.name { color: var(--text-color); }
|
|
279
|
+
.palette lr-swatch-picker {
|
|
280
|
+
padding: 0 .3rem .3rem;
|
|
281
|
+
--lr-swatch-picker-hit-size: 1.75rem;
|
|
282
|
+
--lr-swatch-picker-wrap: nowrap;
|
|
283
|
+
--lr-swatch-picker-gap: .25rem;
|
|
284
|
+
}
|
|
285
|
+
@media (max-width: 30rem) {
|
|
286
|
+
.palette { inline-size: auto; }
|
|
287
|
+
.palette lr-swatch-picker {
|
|
288
|
+
--lr-swatch-picker-hit-size: 1.5rem;
|
|
289
|
+
--lr-swatch-picker-gap: .125rem;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
At the default 16px root font size, `1.75rem`/`.25rem` give 28px targets with 4px gaps, and
|
|
295
|
+
`1.5rem`/`.125rem` give 24px targets with 2px gaps. Below 30rem the palette shrinks to its row, so
|
|
296
|
+
the popup fits a 320px viewport without scrolling. A `calc(100dvw - 2.5rem)` palette overflows the
|
|
297
|
+
popup by 2px there. Apply `data-lr-gemstone-selected` to the transparent glyph wrapper, not the
|
|
298
|
+
whole trigger, so the halo follows the gem's silhouette. The focus ring belongs to keyboard focus;
|
|
299
|
+
do not add a permanent circular selection border. Leave the popover's default content padding and
|
|
300
|
+
arrow intact.
|
|
301
|
+
|
|
302
|
+
This Lit template assumes `selected` is a `GemstoneKey`. `accentLabel` names the dialog and the
|
|
303
|
+
radiogroup. `triggerLabel(name)` (“Accent color: Ruby”), `captionLabel` (“Gemstone:”, with the
|
|
304
|
+
locale's own separator), and `translateGemstone()` come from the application's catalog.
|
|
305
|
+
`onAccentChange()` validates the string and updates application state:
|
|
306
|
+
|
|
307
|
+
```ts
|
|
308
|
+
// Build once per locale. A new array on every render re-creates every swatch and briefly blurs
|
|
309
|
+
// the focused one.
|
|
310
|
+
const items = GEMSTONE_KEYS.map((key) => ({
|
|
311
|
+
value: key,
|
|
312
|
+
color: GEMSTONES[key].fill,
|
|
313
|
+
label: translateGemstone(key),
|
|
314
|
+
gemstone: key,
|
|
315
|
+
}));
|
|
316
|
+
|
|
317
|
+
const name = translateGemstone(selected);
|
|
318
|
+
html`
|
|
319
|
+
<lr-popover class="gemstone-accent-picker" placement="bottom-end"
|
|
320
|
+
popup-role="dialog" aria-label=${accentLabel}>
|
|
321
|
+
<lr-icon-button slot="trigger" label=${triggerLabel(name)}>
|
|
322
|
+
<span class="gem" data-lr-gemstone-selected aria-hidden="true">${gemstoneGlyph(GEMSTONES[selected].fill)}</span>
|
|
323
|
+
</lr-icon-button>
|
|
324
|
+
<div class="palette">
|
|
325
|
+
<p class="heading">${captionLabel} <span class="name">${name}</span></p>
|
|
326
|
+
<lr-swatch-picker mode="gemstone" aria-label=${accentLabel}
|
|
327
|
+
.items=${items} .value=${selected}
|
|
328
|
+
@lr-change=${(event: CustomEvent<{ value: string }>) => onAccentChange(event.detail.value)}>
|
|
329
|
+
</lr-swatch-picker>
|
|
330
|
+
</div>
|
|
331
|
+
</lr-popover>
|
|
332
|
+
`;
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
The parts already supply the behavior, so do not re-implement it. The picker is a roving-tabindex
|
|
336
|
+
`radiogroup` with `aria-checked` and a `:focus-visible` ring per swatch, and its Arrow keys swap
|
|
337
|
+
under RTL. The popover keeps `bottom-end` on the logical end under RTL and returns focus to the
|
|
338
|
+
trigger on Escape. `gemstoneSelectedGlyphStyles` stops the shine under
|
|
339
|
+
`prefers-reduced-motion: reduce`. Verify 320px and desktop layouts, enlarged text, and both color
|
|
340
|
+
modes. In a sidebar or settings panel, the caption and row may appear inline with the same glow
|
|
341
|
+
and spacing; use the compact tier when the container is narrow and allow wrapping if even that
|
|
342
|
+
tier cannot fit. Never shrink targets below 24px. Application theme application, default accent,
|
|
343
|
+
validation, and persistence remain caller-owned.
|
|
344
|
+
|
|
215
345
|
---
|