@aceshooting/lyra-ui 11.0.0 → 11.2.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 +151 -0
- package/README.md +8 -0
- package/custom-elements.json +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
- package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
- package/dist/components/agent-tools/agent-run/agent-run.class.js +1 -1
- package/dist/components/agent-tools/agent-trace/agent-trace.class.js +1 -1
- package/dist/components/agent-tools/browser-frame/browser-frame.class.js +1 -1
- package/dist/components/agent-tools/commit-card/commit-card.class.js +1 -1
- package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +1 -1
- package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
- package/dist/components/agent-tools/test-results/test-results.class.js +1 -1
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +2 -2
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +1 -0
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +1 -1
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
- package/dist/components/agent-tools/trace-tree/trace-tree.class.js +2 -2
- package/dist/components/charts/chart/bar-chart.class.js +1 -1
- package/dist/components/charts/chart/bubble-chart.class.js +1 -1
- package/dist/components/charts/chart/chart.class.js +1 -1
- package/dist/components/charts/chart/doughnut-chart.class.js +1 -1
- package/dist/components/charts/chart/histogram.class.js +1 -1
- package/dist/components/charts/chart/line-chart.class.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +32 -0
- package/dist/components/charts/chart/lite-chart.class.js +17 -4
- package/dist/components/charts/chart/lite-chart.styles.js +29 -0
- package/dist/components/charts/chart/pie-chart.class.js +1 -1
- package/dist/components/charts/chart/polar-area-chart.class.js +1 -1
- package/dist/components/charts/chart/radar-chart.class.js +1 -1
- package/dist/components/charts/chart/scatter-chart.class.js +1 -1
- package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
- package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
- package/dist/components/conversation/model-select/model-select.class.d.ts +1 -0
- package/dist/components/conversation/model-select/model-select.class.js +1 -1
- package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
- package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +1 -0
- package/dist/components/conversation/voice-picker/voice-picker.class.js +1 -1
- package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +1 -0
- package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +36 -1
- package/dist/components/data/heatmap/heatmap.class.js +1 -1
- package/dist/components/data/table/table.class.d.ts +19 -0
- package/dist/components/data/table/table.class.js +3 -3
- package/dist/components/forms/checkbox/checkbox.class.d.ts +1 -0
- package/dist/components/forms/checkbox/checkbox.class.js +1 -1
- package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +1 -0
- package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
- package/dist/components/forms/combobox/combobox.class.d.ts +1 -0
- package/dist/components/forms/combobox/combobox.class.js +1 -1
- package/dist/components/forms/date-picker/date-input.class.d.ts +12 -1
- package/dist/components/forms/date-picker/date-input.class.js +4 -2
- package/dist/components/forms/date-picker/date-picker.class.d.ts +30 -4
- package/dist/components/forms/date-picker/date-picker.class.js +4 -4
- package/dist/components/forms/locale-picker/locale-picker.class.d.ts +1 -0
- package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
- package/dist/components/forms/radio/radio-group.class.d.ts +1 -0
- package/dist/components/forms/radio/radio-group.class.js +1 -1
- package/dist/components/forms/radio/radio.class.d.ts +1 -0
- package/dist/components/forms/radio/radio.class.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +1 -0
- package/dist/components/forms/rubric-form/rubric-form.class.js +1 -1
- package/dist/components/forms/select/select.class.d.ts +1 -0
- package/dist/components/forms/select/select.class.js +1 -1
- package/dist/components/forms/slider/slider.class.d.ts +1 -0
- package/dist/components/forms/slider/slider.class.js +1 -1
- package/dist/components/forms/switch/switch.class.d.ts +1 -0
- package/dist/components/forms/switch/switch.class.js +1 -1
- package/dist/components/forms/time-range/time-range.class.d.ts +1 -0
- package/dist/components/forms/time-range/time-range.class.js +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +1 -0
- package/dist/components/forms/token-input/token-input.class.js +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.js +2 -2
- package/dist/components/media/attachment-trigger/attachment-trigger.class.js +2 -2
- package/dist/components/media/file-icon/file-icon.class.js +1 -1
- package/dist/components/media/file-input/file-input.class.d.ts +1 -0
- package/dist/components/media/file-input/file-input.class.js +1 -1
- package/dist/components/media/flag/flag-peer-bulk.d.ts +12 -0
- package/dist/components/media/flag/flag-peer-bulk.js +1 -0
- package/dist/components/media/flag/flag.class.d.ts +28 -0
- package/dist/components/media/flag/flag.class.js +2 -2
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
- package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +1 -1
- package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +2 -2
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
- package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
- package/dist/components/viewers/contact-viewer/contact-viewer.class.js +1 -1
- package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
- package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +1 -1
- package/dist/custom-elements-jsx.d.ts +5 -3
- package/dist/events.d.ts +7 -0
- package/dist/internal/canvas.js +1 -1
- package/dist/internal/form-associated.d.ts +1 -0
- package/dist/internal/form-associated.js +1 -1
- package/dist/internal/form-control-labels.js +1 -1
- package/dist/internal/lyra-element.js +1 -1
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/svelte.d.ts +5 -3
- package/dist/theme.css +32 -0
- package/dist/vue.d.ts +5 -3
- package/llms/components/lr-agent-eval-dashboard.md +1 -1
- package/llms/components/lr-agent-workspace.md +1 -1
- package/llms/components/lr-box-plot.md +2 -2
- package/llms/components/lr-chart.md +1 -1
- package/llms/components/lr-chunk-inspector.md +1 -1
- package/llms/components/lr-combobox.md +3 -3
- package/llms/components/lr-date-input.md +22 -6
- package/llms/components/lr-date-picker.md +21 -5
- package/llms/components/lr-entity-dossier.md +1 -1
- package/llms/components/lr-eval-run.md +1 -1
- package/llms/components/lr-flag.md +24 -1
- package/llms/components/lr-grounding-summary.md +1 -1
- package/llms/components/lr-heatmap.md +18 -6
- package/llms/components/lr-lite-chart.md +19 -3
- package/llms/components/lr-map.md +2 -2
- package/llms/components/lr-memory-panel.md +1 -1
- package/llms/components/lr-option.md +3 -3
- package/llms/components/lr-popover.md +1 -1
- package/llms/components/lr-provenance-panel.md +1 -1
- package/llms/components/lr-rag-answer.md +1 -1
- package/llms/components/lr-rag-eval-dashboard.md +1 -1
- package/llms/components/lr-retrieval-results.md +1 -1
- package/llms/components/lr-retrieval-trace.md +1 -1
- package/llms/peers.md +10 -10
- package/llms/shared.md +19 -0
- package/llms/tokens.md +12 -0
- package/llms-full.txt +109 -21
- package/package.json +6 -6
- package/vscode-css-data.json +14 -0
- package/vscode-html-data.json +17 -3
- package/web-types.json +30 -4
package/llms-full.txt
CHANGED
|
@@ -691,6 +691,15 @@ Three layers, and **which one you set decides how far the override reaches**:
|
|
|
691
691
|
3. **`--lr-<component>-*`** — per-component properties, for one element at a time. Listed in each
|
|
692
692
|
component's own section.
|
|
693
693
|
|
|
694
|
+
**Layer 2 (`--lr-*`) is declared only on each `lr-*` element's own shadow `:host`.** It never
|
|
695
|
+
reaches plain application CSS, and it never reaches your own custom elements, since neither is a
|
|
696
|
+
descendant of an `lr-*` shadow root — `body { color: var(--lr-color-text) }` in application CSS
|
|
697
|
+
resolves to nothing, silently, not an error. Retheme through layer 1 (`--lr-theme-*`), which
|
|
698
|
+
`theme.css` supplies at document scope and which inherits normally into every nested shadow root.
|
|
699
|
+
See [Where an override actually reaches](#where-an-override-actually-reaches) below for the full
|
|
700
|
+
inheritance rules, including the one documented exception (per-component `--lr-<component>-*`
|
|
701
|
+
hooks, layer 3, which do inherit through wrappers).
|
|
702
|
+
|
|
694
703
|
### The colour ramp and the semantic grid
|
|
695
704
|
|
|
696
705
|
Colour has two layers beneath the `--lr-*` tokens you normally read.
|
|
@@ -1718,6 +1727,16 @@ control) is a single tab stop using a roving `tabindex`; arrow keys move within
|
|
|
1718
1727
|
`Escape` dismisses the topmost dismissible overlay and returns focus to whatever opened it.
|
|
1719
1728
|
`ArrowLeft`/`ArrowRight` mean previous/next and swap under `dir="rtl"`.
|
|
1720
1729
|
|
|
1730
|
+
**`accessibleLabel` binds to one of two different attributes depending on the component, and the
|
|
1731
|
+
two are not interchangeable.** Most components (e.g. `lr-card`, `lr-stat`) expose it as a direct
|
|
1732
|
+
alias of the native `aria-label` attribute — `accessible-label="…"` does nothing on those; write
|
|
1733
|
+
`aria-label="…"` instead. A minority (e.g. `lr-callout`, `lr-table`) separately compute an internal
|
|
1734
|
+
accessible name and expose `accessibleLabel` through the bespoke `accessible-label` attribute
|
|
1735
|
+
instead, specifically so the host's own native `aria-label` can still independently override that
|
|
1736
|
+
computed name. Check the component's own reference section (or its class JSDoc) for which
|
|
1737
|
+
convention it uses before writing markup — an `accessible-label` attribute on an `aria-label`-only
|
|
1738
|
+
component is a silent no-op, not an error.
|
|
1739
|
+
|
|
1721
1740
|
**What that contract is verified by, precisely.** Every one of the 284 public tags carries at least
|
|
1722
1741
|
one axe-core assertion in its own directory's tests, in a test that mounts its own tag; contrast
|
|
1723
1742
|
(4.5:1 text, 3:1 control borders, in both the light and dark palettes), a 40px minimum target size,
|
|
@@ -4041,7 +4060,7 @@ An `lr-option` row remains bounded by its owning listbox: the default label elli
|
|
|
4041
4060
|
`start`/`end` (or `prefix`/`suffix`) adornment is capped at 40% of the row. Unbroken metadata
|
|
4042
4061
|
therefore cannot widen a 320px LTR or RTL picker.
|
|
4043
4062
|
|
|
4044
|
-
**Adornments in the popup (fixed in
|
|
4063
|
+
**Adornments in the popup (fixed in 11.0.0).** Before 11.0.0 this paragraph described behavior the
|
|
4045
4064
|
code did not have: `lr-combobox` builds its popup from normalized row *data* rather than from the
|
|
4046
4065
|
light-DOM nodes, so a slotted `start`/`end`/`prefix`/`suffix` adornment had nowhere to land and
|
|
4047
4066
|
simply never rendered — the documented slots and their documented parts were both dead inside the
|
|
@@ -4128,7 +4147,7 @@ An async `source` row can carry the same two fields (`start`, `end`) alongside i
|
|
|
4128
4147
|
- `maxOptionsVisible: number = 3` (attribute `max-options-visible` — caps how many selected **tags**
|
|
4129
4148
|
show before collapsing to `+N`; nothing to do with the suggestion list, see the three-caps note
|
|
4130
4149
|
below)
|
|
4131
|
-
- `visibleOptions?: number` (attribute `visible-options`, new in
|
|
4150
|
+
- `visibleOptions?: number` (attribute `visible-options`, new in 11.0.0) — bounds the popup to about
|
|
4132
4151
|
this many suggestion rows, leaving the rest reachable by scrolling. Purely presentational: every
|
|
4133
4152
|
row is still rendered. Measured from where row N actually starts rather than computed from a
|
|
4134
4153
|
token, because a row's height varies with `sub` lines, adornments and group labels. Unset imposes
|
|
@@ -4205,7 +4224,7 @@ alias. Set the boolean `autocorrect` IDL, or use `autocorrect="on"` / `autocorre
|
|
|
4205
4224
|
`ComboboxSourceRow = { readonly value: string; readonly label: string; readonly sub?: string; readonly icon?: unknown; readonly start?: unknown;
|
|
4206
4225
|
readonly end?: unknown; readonly badge?: string |
|
|
4207
4226
|
number; accessibleLabel?: string; data?: unknown; dotColor?: string; group?: string; disabled?:
|
|
4208
|
-
boolean }` — the row shape used by the async `source` path. `start` and `end` (new in
|
|
4227
|
+
boolean }` — the row shape used by the async `source` path. `start` and `end` (new in 11.0.0) are
|
|
4209
4228
|
the async counterparts of `<lr-option>`'s `start`/`end` adornment slots and render as the
|
|
4210
4229
|
`option-start` / `option-end` parts, inert and aria-hidden exactly like `icon`. `icon` renders as a decorative leading
|
|
4211
4230
|
visual whose rendered subtree stays visible but is inert and hidden from assistive technology;
|
|
@@ -4842,9 +4861,13 @@ Inline month-grid calendar, not form-associated (used standalone or embedded ins
|
|
|
4842
4861
|
**Properties (28):**
|
|
4843
4862
|
|
|
4844
4863
|
- `dayContent` (JS only): `LyraDatePickerDayContent | undefined`
|
|
4845
|
-
- `presets: LyraDateRangePreset[] = []` (JS only, new in
|
|
4846
|
-
`LyraDateRangePreset { label: string; start
|
|
4847
|
-
`YYYY-MM-DD`.
|
|
4864
|
+
- `presets: LyraDateRangePreset[] = []` (JS only, new in 11.0.0) —
|
|
4865
|
+
`LyraDateRangePreset { label: string; start?: string; end?: string }`, where `start`/`end` are ISO
|
|
4866
|
+
`YYYY-MM-DD`. **Either bound may be omitted (new in 11.1.0)** to mean an OPEN bound, resolving to
|
|
4867
|
+
the picker's `min` / `max` respectively — that is how an "All time" preset is expressed. When the
|
|
4868
|
+
corresponding `min`/`max` is unset there is nothing to resolve to (a `value` of
|
|
4869
|
+
`YYYY-MM-DD/YYYY-MM-DD` has no unbounded spelling), so that preset's button renders **disabled**
|
|
4870
|
+
rather than looking live and doing nothing when pressed. Renders a `[part="presets"]` quick-range button row above the calendar, for the
|
|
4848
4871
|
dashboard time-filter shape (Today / Last 7 days / Last 30 days / This month / All time).
|
|
4849
4872
|
**Range mode only** — a preset names two dates, so it is ignored for a single-date picker rather
|
|
4850
4873
|
than rendering a row that cannot do anything; unset renders nothing at all. Applying one commits
|
|
@@ -4855,6 +4878,16 @@ Inline month-grid calendar, not form-associated (used standalone or embedded ins
|
|
|
4855
4878
|
The active button carries `aria-pressed="true"` and `data-active`. Deliberately the same
|
|
4856
4879
|
`label`/`start`/`end` shape as `<lr-time-range>`'s `TimeRangePreset`, so the library has one
|
|
4857
4880
|
preset vocabulary rather than two — the only difference is the unit (ISO dates, not numbers)
|
|
4881
|
+
- `appliedPreset: LyraDateRangePreset | undefined` (read-only, new in 11.1.0) — the preset whose
|
|
4882
|
+
button produced the current `value`, or `undefined` when the range was picked by hand. Read it
|
|
4883
|
+
inside your own `change`/`input` handler. It exists because a dashboard filter has to persist
|
|
4884
|
+
*which* preset is active rather than the pair it froze to: "Last 7 days" must still mean the last
|
|
4885
|
+
7 days after tomorrow's reload. That fact is not recoverable from `value` — re-deriving it by
|
|
4886
|
+
string-matching is the mapping table `presets` exists to delete, and it is ambiguous anyway
|
|
4887
|
+
(Today and This month coincide on the 1st of a month, and a hand-picked range can equal a
|
|
4888
|
+
preset's pair by construction). A property rather than an event detail because `input`/`change`
|
|
4889
|
+
here are **native** events, deliberately indistinguishable from a manual selection so existing
|
|
4890
|
+
handlers need no special case, and a native `Event` cannot carry a detail without changing type
|
|
4858
4891
|
- `disabled: boolean = false` (reflected)
|
|
4859
4892
|
- `disabledDates: string | string[] | Date[] = ''` (attribute `disabled-dates`)
|
|
4860
4893
|
- `disabledDaysOfWeek: string = ''` (attribute `disabled-days-of-week`)
|
|
@@ -5022,7 +5055,9 @@ capped at 40% and ellipsize unbroken content. Clear and calendar actions retain
|
|
|
5022
5055
|
**Custom states:** `blank`, `disabled`, `open`, and `range`; the shared form-associated mixin also
|
|
5023
5056
|
exposes its validity states.
|
|
5024
5057
|
|
|
5025
|
-
**CSS parts (
|
|
5058
|
+
**CSS parts (21):** `clear-button`, `date-input`, `date-picker`, `presets` and `preset-button`
|
|
5059
|
+
(forwarded from the nested `lr-date-picker` via `exportparts`, so the quick-range row is styleable
|
|
5060
|
+
from outside — new in 11.1.0), `end`, `expand-button`,
|
|
5026
5061
|
`expand-icon`, `form-control`, `form-control-input`, `form-control-label`, `hint`, `input`,
|
|
5027
5062
|
`input-wrapper`, `popup`, `range-separator`, `segment`, `segment-literal`, `start`, permanent
|
|
5028
5063
|
compatibility name `base` (a nested wrapper inside `date-input`), and permanent compatibility name
|
|
@@ -5155,7 +5190,7 @@ and `dateTimeFormat(locale, options)`.
|
|
|
5155
5190
|
- `--lr-date-picker-nav-active-bg` — Pressed navigation background; defaults to the hover color
|
|
5156
5191
|
mixed by `--lr-color-mix-active`.
|
|
5157
5192
|
- `--lr-date-picker-preset-hover-bg`, `--lr-date-picker-preset-active-bg`, and
|
|
5158
|
-
`--lr-date-picker-preset-selected-bg` (new in
|
|
5193
|
+
`--lr-date-picker-preset-selected-bg` (new in 11.0.0) — hover, pressed, and
|
|
5159
5194
|
currently-selected paint for a `presets` quick-range button. Defaults are
|
|
5160
5195
|
`var(--lr-color-brand-quiet)`, that hover colour mixed by `--lr-color-mix-active`, and
|
|
5161
5196
|
`var(--lr-color-brand)` respectively.
|
|
@@ -10836,7 +10871,7 @@ weekdayLabelText?: (jsWeekday:number)=>string|undefined; monthLabelText?:
|
|
|
10836
10871
|
A malformed value is ignored rather than collapsing the gutter. Calendar mode is unaffected; it
|
|
10837
10872
|
has its own fixed weekday gutter
|
|
10838
10873
|
- `colLabelHeight?: number | 'auto'` (attribute `col-label-height`, not reflected, `'auto'` new in
|
|
10839
|
-
|
|
10874
|
+
11.0.0) — height, in CSS px, of the matrix column-label band, or `'auto'` to measure the labels
|
|
10840
10875
|
and size the band to fit them. Under a non-zero `colLabelRotation` the measurement projects each
|
|
10841
10876
|
label's width through the rotation, which is what makes a rotated axis usable without hand-tuning
|
|
10842
10877
|
a magic number. Never below the built-in `20`, and bounded above by a sanity ceiling so a
|
|
@@ -10845,7 +10880,7 @@ weekdayLabelText?: (jsWeekday:number)=>string|undefined; monthLabelText?:
|
|
|
10845
10880
|
be bounded relative to them, whereas the canvas simply grows taller for this band and the cells
|
|
10846
10881
|
keep their size. Unset keeps the built-in `20`, so no existing chart reflows. A malformed value is
|
|
10847
10882
|
ignored
|
|
10848
|
-
- `colLabelRotation?: number` (attribute `col-label-rotation`, new in
|
|
10883
|
+
- `colLabelRotation?: number` (attribute `col-label-rotation`, new in 11.0.0) — rotation, in
|
|
10849
10884
|
degrees, applied to matrix column labels. Unset or `0` paints them horizontally exactly as before.
|
|
10850
10885
|
In a dense matrix the per-column width is far narrower than a typical label, so horizontal labels
|
|
10851
10886
|
collide with their neighbours; `45` or `90` is the standard remedy. Each label rotates about an
|
|
@@ -10967,7 +11002,7 @@ weekday * (cellSize + CAL_GAP)`), consulted consistently by drawing, hit-testing
|
|
|
10967
11002
|
than 2 entries) keeps today's 2-endpoint interpolation exactly. Invalid colors use the canvas
|
|
10968
11003
|
fallback color and prevent the custom legend gradient from being assigned.
|
|
10969
11004
|
- `legendStops?: readonly HeatmapLegendStop[]` (attribute: false) — clone-owned, bounded, frozen `HeatmapLegendStop { value: number;
|
|
10970
|
-
color?: string; label?: string }`: a discrete legend key rendered **instead of** the
|
|
11005
|
+
color?: string; label?: string; partOfRamp?: boolean }`: a discrete legend key rendered **instead of** the
|
|
10971
11006
|
`--lr-heatmap-scale-lo`/`-hi` gradient bar and its `[part="legend-lo"]`/`[part="legend-hi"]`
|
|
10972
11007
|
endpoint labels — one `[part="legend-stop"]` per entry, in array order, each a
|
|
10973
11008
|
`[part="legend-swatch"]` filled with that entry's `color` plus a `[part="legend-stop-label"]`.
|
|
@@ -10984,14 +11019,26 @@ color?: string; label?: string }`: a discrete legend key rendered **instead of**
|
|
|
10984
11019
|
are never consulted by the color ramp, the bucket math, the tooltip, or the generated accessible
|
|
10985
11020
|
name, so adding them changes nothing a cell renders. Labeled `annotations` still render their
|
|
10986
11021
|
`[part="legend-annotation"]` entries after the stops. Unset (the default) or an empty array
|
|
10987
|
-
reproduces the exact gradient legend, unchanged.
|
|
11022
|
+
reproduces the exact gradient legend, unchanged. A dev-mode-only warning fires when a stop's
|
|
11023
|
+
`color` doesn't match the corresponding `colorSteps` entry — set `partOfRamp: false` on a stop
|
|
11024
|
+
that is a real, distinctly-colored swatch deliberately outside the sequential ramp (e.g. a fixed
|
|
11025
|
+
"no data" color next to an N-step ramp) to exclude just that stop from the comparison; defaults to
|
|
11026
|
+
`true`. A caption-only stop (no `color`) is already excluded regardless of this flag.
|
|
10988
11027
|
|
|
10989
11028
|
**Getters/methods:** `refreshTheme()` — redraws canvas content after an upstream design-token or
|
|
10990
11029
|
color-scheme change; called automatically on theme changes, exposed for a consumer that needs to
|
|
10991
|
-
force a redraw manually.
|
|
11030
|
+
force a redraw manually. `matrixGeometry: Readonly<{ padLeft: number; padTop: number; cellSize:
|
|
11031
|
+
number }> | undefined` — the gutter/cell geometry the last matrix-mode draw actually painted with,
|
|
11032
|
+
in CSS pixels; `undefined` in calendar mode. Lets a light-DOM consumer (e.g. a sticky header mirror
|
|
11033
|
+
for a tall matrix) line up with the canvas without hardcoding the same numbers `row-label-width`/
|
|
11034
|
+
`col-label-height`'s `"auto"` resolution would otherwise keep private.
|
|
10992
11035
|
|
|
10993
11036
|
**Events:** `lr-cell-click` (fired on click, or Enter/Space on the keyboard-focused cell —
|
|
10994
|
-
`detail: { row, col, value }` in matrix mode, `detail: { date, value }` in calendar mode)
|
|
11037
|
+
`detail: { row, col, value }` in matrix mode, `detail: { date, value }` in calendar mode),
|
|
11038
|
+
`lr-matrix-geometry-change` (fired after a matrix-mode draw whose resolved `matrixGeometry` differs
|
|
11039
|
+
from the previous draw — e.g. after `row-label-width="auto"`/`col-label-height="auto"` resolves
|
|
11040
|
+
against new content or a resize; `detail` is the same object `matrixGeometry` returns; never fired
|
|
11041
|
+
in calendar mode)
|
|
10995
11042
|
|
|
10996
11043
|
**Slots:** none.
|
|
10997
11044
|
|
|
@@ -13002,6 +13049,7 @@ These named interfaces and helper signatures are available to typed integrations
|
|
|
13002
13049
|
value: unknown;
|
|
13003
13050
|
color: unknown;
|
|
13004
13051
|
label: unknown;
|
|
13052
|
+
partOfRamp: unknown;
|
|
13005
13053
|
}`
|
|
13006
13054
|
`HeatmapMatrixData {
|
|
13007
13055
|
kind: unknown;
|
|
@@ -18551,7 +18599,7 @@ A click-triggered, light-dismiss floating surface positioned with the shared Flo
|
|
|
18551
18599
|
- `accessibleLabel: string = ''` (attribute **`aria-label`**) — names the popup. An authored host
|
|
18552
18600
|
attribute wins by presence, including `aria-label=""`; only when it is absent does the property
|
|
18553
18601
|
or localized "Popover" ("Menu" when `popupRole` is `menu`) fallback apply
|
|
18554
|
-
- `popupRole: 'dialog'|'menu'|'none' = 'dialog'` (attribute `popup-role`). `none` (new in
|
|
18602
|
+
- `popupRole: 'dialog'|'menu'|'none' = 'dialog'` (attribute `popup-role`). `none` (new in 11.0.0)
|
|
18555
18603
|
renders **no** `role` and no generated `aria-label` on the popup surface, and leaves
|
|
18556
18604
|
`aria-haspopup` off the trigger, so slotted content owns its own semantics and accessible name.
|
|
18557
18605
|
It exists for the WAI-ARIA **disclosure navigation** pattern: a flyout of links is not an
|
|
@@ -21698,6 +21746,12 @@ wording that reads to a user as a bug. Style the two states apart with those att
|
|
|
21698
21746
|
rectangular corner radius), `--lr-flag-aspect-ratio` (default `4 / 3`), and
|
|
21699
21747
|
`--lr-flag-object-fit` (default `cover`); also consumes `--lr-color-border` for the inset ring.
|
|
21700
21748
|
|
|
21749
|
+
**Sizing.** The host has no intrinsic `width` — it sizes from `font-size` (`block-size: 1em`,
|
|
21750
|
+
`inline-size` derived from `--lr-flag-aspect-ratio` via CSS `aspect-ratio`), so it scales naturally
|
|
21751
|
+
with surrounding text (`<lr-flag style="font-size: 2rem">`). Setting `width`/`inline-size` directly
|
|
21752
|
+
instead makes both axes definite, which defeats `aspect-ratio` (only applies when at most one axis
|
|
21753
|
+
is definite) and squashes the image rather than scaling it.
|
|
21754
|
+
|
|
21701
21755
|
**Optional peer deps:** `@aceshooting/lyra-flags` — required for the component to actually render an
|
|
21702
21756
|
image when `country` or `language` is used. Import
|
|
21703
21757
|
`@aceshooting/lyra-ui/components/media/flag/flag-peer.js` once to opt into
|
|
@@ -21821,9 +21875,26 @@ import "@aceshooting/lyra-ui/components/media/flag/flag-peer.js";
|
|
|
21821
21875
|
- `country`/`language` resolve through `@aceshooting/lyra-flags`'s `flagUrl(code)`, which lazily
|
|
21822
21876
|
fetches one requested flag at runtime. A bundler may still emit the complete reachable lazy-chunk
|
|
21823
21877
|
graph because every supported code has a literal loader import; use a literal asset subpath
|
|
21824
|
-
import when the deployment artifact must be pruned. If
|
|
21878
|
+
import when the deployment artifact must be pruned. If every `<lr-flag>` in the app is pinned to
|
|
21879
|
+
one `fidelity` (no per-instance switching), register
|
|
21880
|
+
`@aceshooting/lyra-flags/standard`/`/compact`/`/detailed` via `setFlagUrlResolver()` instead of
|
|
21881
|
+
importing `flag-peer.js` (which always registers the full three-tier resolver) — the tier-specific
|
|
21882
|
+
entry excludes the other two tiers' generated loader maps from the reachable graph; see that
|
|
21883
|
+
package's README. If you already have a flag's URL at build
|
|
21825
21884
|
time, `src` skips the peer-package round trip; native image loading still uses the same bounded
|
|
21826
21885
|
loading/error transaction.
|
|
21886
|
+
- Rendering many flags at once (a country table, a picker listing every locale): resolve every code
|
|
21887
|
+
up front with `@aceshooting/lyra-flags`'s `flagUrls()` (one call, returns `{code: url}` for all
|
|
21888
|
+
249 flags) and pass results through `src`, instead of letting each `<lr-flag>` instance
|
|
21889
|
+
independently call `flagUrl()` — skips one peer-resolution round trip per instance. Image fetches
|
|
21890
|
+
themselves are unaffected either way (each flag is a distinct asset; there is no sprite).
|
|
21891
|
+
Alternatively, import `@aceshooting/lyra-ui/components/media/flag/flag-peer-bulk.js` instead of
|
|
21892
|
+
the default `flag-peer.js` (never both) to get this automatically: it registers a resolver backed
|
|
21893
|
+
by one shared `flagUrls()` call, so every `<lr-flag>` on the page benefits without threading `src`
|
|
21894
|
+
by hand. Only worth it when the page renders most/all flags — a page with a handful pays an
|
|
21895
|
+
unneeded 249-entry fetch. Only the standard tier is bulk-fetched this way;
|
|
21896
|
+
`fidelity="compact"/"detailed"` on individual elements still resolves through its own lazy
|
|
21897
|
+
per-code loader.
|
|
21827
21898
|
- 65 of `@aceshooting/lyra-flags`' 249 flags (any whose design includes a detailed coat of
|
|
21828
21899
|
arms/seal/emblem, e.g. `es`, `pt`, `sv`) ship **three** fidelity tiers, selected via the
|
|
21829
21900
|
`fidelity` property (`flagUrl(code, { variant: fidelity })` under the hood): `"compact"` — a tiny WebP raster for
|
|
@@ -21991,7 +22062,7 @@ string; geojson: GeoJSON.FeatureCollection; field: string; stops: [number, strin
|
|
|
21991
22062
|
the documented way to weight a ramp toward the low end). **`stops` stay in the data's own units
|
|
21992
22063
|
under either mode**, so the legend keeps reading in real values instead of log units — no
|
|
21993
22064
|
pre-transforming to log10 and hand-relabelling the legend back.
|
|
21994
|
-
`'step'` (new in
|
|
22065
|
+
`'step'` (new in 11.0.0) emits maplibre's `['step', …]` instead of `['interpolate', …]`, giving
|
|
21995
22066
|
**discrete bands rather than a continuous ramp**. Use it whenever the legend advertises a fixed
|
|
21996
22067
|
set of ranges with one swatch each: a ramp would put colours on the map that appear nowhere in the
|
|
21997
22068
|
legend, and would render two regions in the same advertised band as visibly different colours
|
|
@@ -22024,7 +22095,7 @@ GeoJSON.FeatureCollection; tone?: 'accent' | 'success' | 'warning' |
|
|
|
22024
22095
|
GeoJSON source plus three geometry-filtered layers
|
|
22025
22096
|
(fill, line, and circle, so a mixed `FeatureCollection` renders correctly), colored from the
|
|
22026
22097
|
matching `--lr-color-*` token (`tone` defaults to `'accent'` → `--lr-color-brand`).
|
|
22027
|
-
`color` and `strokeColor` (both new in
|
|
22098
|
+
`color` and `strokeColor` (both new in 11.0.0) override that per surface — `color` paints the
|
|
22028
22099
|
polygon fill, `strokeColor` the line and circle layers, falling back to `color` and then to `tone`.
|
|
22029
22100
|
They are separable because a fill and its outline want opposite things on a
|
|
22030
22101
|
choropleth-plus-overlay map, and the difference is measurable rather than aesthetic: the fill
|
|
@@ -24233,6 +24304,7 @@ These named interfaces and helper signatures are available to typed integrations
|
|
|
24233
24304
|
|
|
24234
24305
|
- **`components-media-flag-flag-contracts`** — Supporting data types and helpers for this component family.
|
|
24235
24306
|
`loadFlagUrl(/* public names: importFlags */): unknown`
|
|
24307
|
+
`loadBulkFlagUrl(/* public names: importFlags */): unknown`
|
|
24236
24308
|
`setFlagUrlResolver(/* public names: value */): unknown`
|
|
24237
24309
|
|
|
24238
24310
|
- **`components-media-flag-language-map-contracts`** — Supporting data types and helpers for this component family.
|
|
@@ -24638,7 +24710,7 @@ property).
|
|
|
24638
24710
|
ignored without evaluating script or exposing prototype-pollution keys to the merge.
|
|
24639
24711
|
- `showDataTable: boolean = false` (attribute `show-data-table`) — makes the always-available
|
|
24640
24712
|
accessible data table visible rather than screen-reader-only
|
|
24641
|
-
- `dataTableToggle: boolean = false` (attribute `data-table-toggle`, new in
|
|
24713
|
+
- `dataTableToggle: boolean = false` (attribute `data-table-toggle`, new in 11.0.0) — renders a
|
|
24642
24714
|
localized disclosure button (`part="data-table-toggle"`) above the data table so a *sighted*
|
|
24643
24715
|
reader can reveal the numbers on demand. `showDataTable` alone is all-or-nothing, which left
|
|
24644
24716
|
consumers wrapping a duplicated table in their own `<details>`. With the toggle on,
|
|
@@ -24960,6 +25032,21 @@ passthrough). Not a subclass of `LyraChart`.
|
|
|
24960
25032
|
- `tableTotals: boolean = false` (attribute `table-totals`) — adds a localized total column to the
|
|
24961
25033
|
multi-series accessible table when `type="bar"` and `stacked` are both active. Ignored for
|
|
24962
25034
|
grouped bars, line charts, and the single-series `data-list`.
|
|
25035
|
+
- `showDataTable: boolean = false` (attribute `show-data-table`, new in 11.1.0) — makes the
|
|
25036
|
+
generated accessible table visible rather than screen-reader-only. Same meaning as `lr-chart`'s
|
|
25037
|
+
property of the same name.
|
|
25038
|
+
- `dataTableToggle: boolean = false` (attribute `data-table-toggle`, new in 11.1.0) — renders a
|
|
25039
|
+
localized disclosure button (`part="data-table-toggle"`, with `aria-expanded` and
|
|
25040
|
+
`aria-controls`) above the table, so a *sighted* reader can reveal the numbers on demand;
|
|
25041
|
+
`showDataTable` then becomes the disclosure's **initial** state rather than its whole behavior.
|
|
25042
|
+
The table stays in the DOM in both states, so assistive technology never loses it. This matters
|
|
25043
|
+
more here than on `lr-chart`: this component exists to avoid the Chart.js peers, so without it an
|
|
25044
|
+
app that chose it for exactly that reason had to either hand-roll a `<details>` around a
|
|
25045
|
+
duplicated table or adopt `lr-chart` and pull in Chart.js for a button — the cheap component
|
|
25046
|
+
stuck with the expensive workaround. Unset, nothing renders and behavior is unchanged.
|
|
25047
|
+
Themeable via `--lr-lite-chart-data-table-toggle-hover-bg` (default
|
|
25048
|
+
`var(--lr-color-brand-quiet)`) and `--lr-lite-chart-data-table-toggle-active-bg` (default: that
|
|
25049
|
+
hover colour mixed by `--lr-color-mix-active`).
|
|
24963
25050
|
- `layout: 'fit' | 'scroll' = 'fit'` (reflected) — `'fit'` (default) is the original squeeze-the-
|
|
24964
25051
|
whole-plot-to-host-width behavior, unchanged. `'scroll'` gives bars a fixed `barWidth` instead: plot
|
|
24965
25052
|
content width becomes `categoryCount * barWidth` (can exceed the host's measured width), and
|
|
@@ -25066,7 +25153,8 @@ data alternative.
|
|
|
25066
25153
|
mark), `line`, `legend`, `legend-item`, `legend-swatch`, `legend-text` (extra per-item text after
|
|
25067
25154
|
the series label, rendered only when `legendText` is set), `live-region` (the current mark
|
|
25068
25155
|
announcement for keyboard users), `data-list` (a visually hidden sampled list of plotted data
|
|
25069
|
-
points — single-series only), `data-table` (the generated/slotted alternative container),
|
|
25156
|
+
points — single-series only), `data-table` (the generated/slotted alternative container),
|
|
25157
|
+
`data-table-toggle` (the `dataTableToggle` disclosure button — new in 11.1.0), `table`
|
|
25070
25158
|
(the generated semantic category×series table rendered when there is more than one dataset), and
|
|
25071
25159
|
`data-truncation` (the
|
|
25072
25160
|
visible/announced sampling notice).
|
|
@@ -25345,7 +25433,7 @@ browser). Does **not** extend `LyraChart` — a deliberately bespoke API.
|
|
|
25345
25433
|
- `formatter?: LyraChartFormatter`, `valueFormatter?: LyraChartValueFormatter` — numeric axis,
|
|
25346
25434
|
tooltip, table, summary, and export formatting; the context-object formatter takes precedence
|
|
25347
25435
|
- `showDataTable: boolean = false` (attribute `show-data-table`) — reveals the accessible data table
|
|
25348
|
-
- `dataTableToggle: boolean = false` (attribute `data-table-toggle`, new in
|
|
25436
|
+
- `dataTableToggle: boolean = false` (attribute `data-table-toggle`, new in 11.0.0) — renders a
|
|
25349
25437
|
localized disclosure button (`part="data-table-toggle"`) above the data table so a *sighted*
|
|
25350
25438
|
reader can reveal the numbers on demand. `showDataTable` alone is all-or-nothing, which left
|
|
25351
25439
|
consumers wrapping a duplicated table in their own `<details>`. With the toggle on,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aceshooting/lyra-ui",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.2.0",
|
|
4
4
|
"description": "Free, independent Lit web components: an open-source alternative to Shoelace and Web Awesome with accessible forms, dashboards, charts, and agent UI.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web-components",
|
|
@@ -2252,7 +2252,7 @@
|
|
|
2252
2252
|
"lit": "^3.3.3"
|
|
2253
2253
|
},
|
|
2254
2254
|
"peerDependencies": {
|
|
2255
|
-
"@aceshooting/lyra-flags": "^2.
|
|
2255
|
+
"@aceshooting/lyra-flags": "^2.1.0",
|
|
2256
2256
|
"@aiden0z/pptx-renderer": "^1.2.4",
|
|
2257
2257
|
"@sgratzl/chartjs-chart-boxplot": "^4.4.5",
|
|
2258
2258
|
"chart.js": "^4.5.1",
|
|
@@ -2263,7 +2263,7 @@
|
|
|
2263
2263
|
"d3-force": "^3.0.0",
|
|
2264
2264
|
"d3-selection": "^3.0.0",
|
|
2265
2265
|
"d3-zoom": "^3.0.0",
|
|
2266
|
-
"dompurify": "^3.4.
|
|
2266
|
+
"dompurify": "^3.4.14",
|
|
2267
2267
|
"emoji-picker-element-data": "^1.8.0",
|
|
2268
2268
|
"epubjs": "^0.3.93",
|
|
2269
2269
|
"ical.js": "^2.2.1",
|
|
@@ -2372,7 +2372,7 @@
|
|
|
2372
2372
|
}
|
|
2373
2373
|
},
|
|
2374
2374
|
"devDependencies": {
|
|
2375
|
-
"@aceshooting/lyra-flags": "^2.
|
|
2375
|
+
"@aceshooting/lyra-flags": "^2.1.0",
|
|
2376
2376
|
"@aiden0z/pptx-renderer": "^1.2.4",
|
|
2377
2377
|
"@codecov/bundle-analyzer": "^2.0.1",
|
|
2378
2378
|
"@custom-elements-manifest/analyzer": "^0.11.0",
|
|
@@ -2402,7 +2402,7 @@
|
|
|
2402
2402
|
"d3-force": "^3.0.0",
|
|
2403
2403
|
"d3-selection": "^3.0.0",
|
|
2404
2404
|
"d3-zoom": "^3.0.0",
|
|
2405
|
-
"dompurify": "^3.4.
|
|
2405
|
+
"dompurify": "^3.4.14",
|
|
2406
2406
|
"emoji-picker-element-data": "^1.8.0",
|
|
2407
2407
|
"epubjs": "^0.3.93",
|
|
2408
2408
|
"fast-check": "^4.9.0",
|
|
@@ -2416,7 +2416,7 @@
|
|
|
2416
2416
|
"mammoth": "^1.12.1",
|
|
2417
2417
|
"maplibre-gl": "^6.4.1",
|
|
2418
2418
|
"marked": "^18.0.10",
|
|
2419
|
-
"oxc-parser": "^0.
|
|
2419
|
+
"oxc-parser": "^0.146.0",
|
|
2420
2420
|
"papaparse": "^5.6.0",
|
|
2421
2421
|
"pdfjs-dist": "^6.2.108",
|
|
2422
2422
|
"pixelmatch": "^7.2.0",
|
package/vscode-css-data.json
CHANGED
|
@@ -6357,6 +6357,20 @@
|
|
|
6357
6357
|
"value": "**`<lr-graph>`** (default: `var(--lr-color-border)`) — Default link stroke, overridden per-link by a link's own `color`."
|
|
6358
6358
|
}
|
|
6359
6359
|
},
|
|
6360
|
+
{
|
|
6361
|
+
"name": "--lr-lite-chart-data-table-toggle-active-bg",
|
|
6362
|
+
"description": {
|
|
6363
|
+
"kind": "markdown",
|
|
6364
|
+
"value": "**`<lr-lite-chart>`** — Pressed background of the `dataTableToggle` disclosure button; defaults to a mix of the hover background with the shared active mix partner."
|
|
6365
|
+
}
|
|
6366
|
+
},
|
|
6367
|
+
{
|
|
6368
|
+
"name": "--lr-lite-chart-data-table-toggle-hover-bg",
|
|
6369
|
+
"description": {
|
|
6370
|
+
"kind": "markdown",
|
|
6371
|
+
"value": "**`<lr-lite-chart>`** (default: `var(--lr-color-brand-quiet)`) — Hover background of the `dataTableToggle` disclosure button."
|
|
6372
|
+
}
|
|
6373
|
+
},
|
|
6360
6374
|
{
|
|
6361
6375
|
"name": "--lr-lite-chart-selected-outline-color",
|
|
6362
6376
|
"description": {
|
package/vscode-html-data.json
CHANGED
|
@@ -7232,7 +7232,7 @@
|
|
|
7232
7232
|
"name": "lr-date-input",
|
|
7233
7233
|
"description": {
|
|
7234
7234
|
"kind": "markdown",
|
|
7235
|
-
"value": "`<lr-date-input>` — a date field with an attached calendar popover.\nMirrors the core `<wa-date-input>` API under `lr-`. Value is ISO 8601\n(`YYYY-MM-DD`, or `YYYY-MM-DD/YYYY-MM-DD` in range mode). Form-associated.\nThe ISO model is explicitly proleptic Gregorian for every locale. Display uses locale digits\nand `Intl.DateTimeFormat.formatRange()`; parsing normalizes those digits and bidi marks so the\ncomponent's own Arabic/Persian presentation always round-trips to the same ISO value.\n\nThis component uses a single text field; typing accepts ISO or a\nlocale-parseable date. Enter commits the typed text and then performs the implicit form\nsubmission a native `<input>` would (see `internal/submit-on-enter.ts` — the internal input is\nin a shadow root and has no form owner, so the platform can never do it here); the commit runs\nfirst so the submitted value is the date the field visibly shows.\nThat text field is also the popup-opening `role=\"combobox\"` owner, with explicit\n`aria-haspopup`, `aria-controls`, and `aria-expanded`; the adjacent button remains an equivalent\npointer/keyboard toggle rather than carrying the only popup relationship.\n\n`size` uses the same `2xs`–`xl` scale as `lr-input`/`lr-select`/`lr-combobox`'s own `size`,\ndefault `m`. The calendar-toggle and clear buttons keep a constant touch-target size at every\ntier (mirroring `lr-input`'s own password-toggle button), so only the field's density scales.\nIn a constrained row the editable input shrinks first, while each public `start`/`end`\nadornment is capped at 40% so unbroken consumer content cannot widen the field.\n\n---\n\n**Component metadata**\n\n- Status: `experimental`\n- Since: `4.0.0`\n- Rationale: This exact tag already appears in published Lyra versions and remains experimental under full semver protection while its public API and usage patterns mature.\n- Graduation: Eligible for stable status once its documented API, populated accessibility states, cross-browser behavior, and compatibility contract demonstrate sustained reliability.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `clear-icon` | Replaces the clear icon. |\n| `day-YYYY-MM-DD` | Content for an individual ISO calendar day. |\n| `end` | Adornment after the text field and the built-in clear action, and before the calendar toggle — so consumer content never sits outboard of the calendar button. |\n| `error` | Lyra extension for custom validation markup. |\n| `expand-icon` | Replaces the calendar icon. |\n| `footer` | Calendar footer content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n| `next-icon` | Replaces the next-month icon in the calendar. |\n| `previous-icon` | Replaces the previous-month icon in the calendar. |\n| `start` | Adornment at the inline-start of the input row, before the text field. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | Permanent compatibility name for the nested base wrapper. |\n| `clear-button` | The clear control. |\n| `date-input` | The date-input wrapper. |\n| `date-picker` | The nested date picker. |\n| `end` | Wrapper around the `end` adornment slot; `hidden` while nothing is slotted. |\n| `error` | The validation message. |\n| `expand-button` | The calendar popup toggle. |\n| `expand-icon` | The calendar icon. |\n| `form-control` | The outer form-control wrapper. |\n| `form-control-input` | The editable date surface. |\n| `form-control-label` | The outer label wrapper. |\n| `hint` | The hint message. |\n| `input` | The text input. |\n| `input-wrapper` | The input and button wrapper. |\n| `label` | Permanent compatibility name for the inner label-content wrapper. |\n| `popup` | The positioned calendar popup. |\n| `range-separator` | The range separator. |\n| `segment` | The editable date segment wrapper. |\n| `segment-literal` | A literal inside the editable date surface. |\n| `start` | Wrapper around the `start` adornment slot; `hidden` while nothing is slotted. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-date-input-padding-block` (default: `var(--lr-space-xs)`) — Block padding of the input row, scaled by `size`.\n- `--lr-date-input-padding-inline` (default: `var(--lr-space-s)`) — Inline padding of the input row, scaled by `size`.\n- `--lr-date-input-font-size` (default: `inherit`) — Font size of the text input, scaled by `size`.\n- `--lr-date-input-placeholder-color` (default: `var(--lr-color-text-quiet)`) — Placeholder text color.\n- `--lr-date-input-gap` (default: `var(--lr-space-xs)`) — Gap between input-row children.\n- `--lr-date-input-radius` (default: `var(--lr-radius)`) — Input-row corner radius. `pill` changes its private default to `--lr-radius-pill`; an inherited or direct public value still wins.\n- `--lr-date-input-focus-border-color` (default: `var(--lr-color-brand)`) — Focused row border color.\n- `--lr-date-input-action-hover-color` (default: `var(--lr-color-text)`) — Clear/calendar action color on hover.\n- `--lr-date-input-action-hover-bg` (default: `transparent`) — Clear/calendar action background on hover.\n- `--lr-date-input-action-hover-radius` (default: `var(--lr-date-input-radius)`) — Clear/calendar action corner radius on hover.\n- `--lr-date-input-action-active-color` (default: `var(--lr-date-input-action-hover-color,var(--lr-color-text))`) — Clear/calendar action color while pressed.\n- `--lr-date-input-action-active-bg` (default: `color-mix(...)`) — Clear/calendar action background while pressed.\n- `--lr-date-input-action-active-radius` (default: `var(--lr-date-input-radius)`) — Clear/calendar action corner radius while pressed.\n- `--lr-date-input-control-min-height` (default: `var(--lr-form-control-height)`) — Minimum block size of the input row, read from the shared form-control height ladder so retuning `--lr-theme-form-control-height-*` moves this control and every sibling field together. Each default sits below the row's transitively-pinned height, so it is dead until a consumer raises it -- the unset render is unchanged.\n- `--lr-date-input-control-height` — Exact block size of the input row. Undeclared by default, so the row grows to fit its content (floored by `--lr-date-input-control-min-height`). Set it to pin a fixed height; the calendar toggle keeps its own 24x24 touch target even when this pins a shorter row.\n- `--show-duration` (default: `var(--lr-transition-fast)`) — Popup enter-transition duration.\n- `--hide-duration` (default: `var(--lr-transition-fast)`) — Popup exit-transition duration.\n- `--lr-form-control-required-content` (default: `' *'`) — The required-field marker rendered after the label. Set it to `''` to suppress the marker, or to any other quoted string (`' (required)'`, a localized word) to replace it. Caller-supplied content, so it is never localized here.\n- `--lr-form-control-required-color` (default: `var(--lr-color-danger)`) — Color of that marker, retunable without touching any other danger-coloured surface.\n- `--lr-form-control-required-offset` (default: `0`) — Inline space between the label text and the marker."
|
|
7235
|
+
"value": "`<lr-date-input>` — a date field with an attached calendar popover.\nMirrors the core `<wa-date-input>` API under `lr-`. Value is ISO 8601\n(`YYYY-MM-DD`, or `YYYY-MM-DD/YYYY-MM-DD` in range mode). Form-associated.\nThe ISO model is explicitly proleptic Gregorian for every locale. Display uses locale digits\nand `Intl.DateTimeFormat.formatRange()`; parsing normalizes those digits and bidi marks so the\ncomponent's own Arabic/Persian presentation always round-trips to the same ISO value.\n\nThis component uses a single text field; typing accepts ISO or a\nlocale-parseable date. Enter commits the typed text and then performs the implicit form\nsubmission a native `<input>` would (see `internal/submit-on-enter.ts` — the internal input is\nin a shadow root and has no form owner, so the platform can never do it here); the commit runs\nfirst so the submitted value is the date the field visibly shows.\nThat text field is also the popup-opening `role=\"combobox\"` owner, with explicit\n`aria-haspopup`, `aria-controls`, and `aria-expanded`; the adjacent button remains an equivalent\npointer/keyboard toggle rather than carrying the only popup relationship.\n\n`size` uses the same `2xs`–`xl` scale as `lr-input`/`lr-select`/`lr-combobox`'s own `size`,\ndefault `m`. The calendar-toggle and clear buttons keep a constant touch-target size at every\ntier (mirroring `lr-input`'s own password-toggle button), so only the field's density scales.\nIn a constrained row the editable input shrinks first, while each public `start`/`end`\nadornment is capped at 40% so unbroken consumer content cannot widen the field.\n\n---\n\n**Component metadata**\n\n- Status: `experimental`\n- Since: `4.0.0`\n- Rationale: This exact tag already appears in published Lyra versions and remains experimental under full semver protection while its public API and usage patterns mature.\n- Graduation: Eligible for stable status once its documented API, populated accessibility states, cross-browser behavior, and compatibility contract demonstrate sustained reliability.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `clear-icon` | Replaces the clear icon. |\n| `day-YYYY-MM-DD` | Content for an individual ISO calendar day. |\n| `end` | Adornment after the text field and the built-in clear action, and before the calendar toggle — so consumer content never sits outboard of the calendar button. |\n| `error` | Lyra extension for custom validation markup. |\n| `expand-icon` | Replaces the calendar icon. |\n| `footer` | Calendar footer content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n| `next-icon` | Replaces the next-month icon in the calendar. |\n| `previous-icon` | Replaces the previous-month icon in the calendar. |\n| `start` | Adornment at the inline-start of the input row, before the text field. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | Permanent compatibility name for the nested base wrapper. |\n| `clear-button` | The clear control. |\n| `date-input` | The date-input wrapper. |\n| `date-picker` | The nested date picker. |\n| `end` | Wrapper around the `end` adornment slot; `hidden` while nothing is slotted. |\n| `error` | The validation message. |\n| `expand-button` | The calendar popup toggle. |\n| `expand-icon` | The calendar icon. |\n| `form-control` | The outer form-control wrapper. |\n| `form-control-input` | The editable date surface. |\n| `form-control-label` | The outer label wrapper. |\n| `hint` | The hint message. |\n| `input` | The text input. |\n| `input-wrapper` | The input and button wrapper. |\n| `label` | Permanent compatibility name for the inner label-content wrapper. |\n| `popup` | The positioned calendar popup. |\n| `preset-button` | One quick-range button, forwarded from `<lr-date-picker>`. |\n| `presets` | The nested picker's quick-range row, forwarded from `<lr-date-picker>`. |\n| `range-separator` | The range separator. |\n| `segment` | The editable date segment wrapper. |\n| `segment-literal` | A literal inside the editable date surface. |\n| `start` | Wrapper around the `start` adornment slot; `hidden` while nothing is slotted. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-date-input-padding-block` (default: `var(--lr-space-xs)`) — Block padding of the input row, scaled by `size`.\n- `--lr-date-input-padding-inline` (default: `var(--lr-space-s)`) — Inline padding of the input row, scaled by `size`.\n- `--lr-date-input-font-size` (default: `inherit`) — Font size of the text input, scaled by `size`.\n- `--lr-date-input-placeholder-color` (default: `var(--lr-color-text-quiet)`) — Placeholder text color.\n- `--lr-date-input-gap` (default: `var(--lr-space-xs)`) — Gap between input-row children.\n- `--lr-date-input-radius` (default: `var(--lr-radius)`) — Input-row corner radius. `pill` changes its private default to `--lr-radius-pill`; an inherited or direct public value still wins.\n- `--lr-date-input-focus-border-color` (default: `var(--lr-color-brand)`) — Focused row border color.\n- `--lr-date-input-action-hover-color` (default: `var(--lr-color-text)`) — Clear/calendar action color on hover.\n- `--lr-date-input-action-hover-bg` (default: `transparent`) — Clear/calendar action background on hover.\n- `--lr-date-input-action-hover-radius` (default: `var(--lr-date-input-radius)`) — Clear/calendar action corner radius on hover.\n- `--lr-date-input-action-active-color` (default: `var(--lr-date-input-action-hover-color,var(--lr-color-text))`) — Clear/calendar action color while pressed.\n- `--lr-date-input-action-active-bg` (default: `color-mix(...)`) — Clear/calendar action background while pressed.\n- `--lr-date-input-action-active-radius` (default: `var(--lr-date-input-radius)`) — Clear/calendar action corner radius while pressed.\n- `--lr-date-input-control-min-height` (default: `var(--lr-form-control-height)`) — Minimum block size of the input row, read from the shared form-control height ladder so retuning `--lr-theme-form-control-height-*` moves this control and every sibling field together. Each default sits below the row's transitively-pinned height, so it is dead until a consumer raises it -- the unset render is unchanged.\n- `--lr-date-input-control-height` — Exact block size of the input row. Undeclared by default, so the row grows to fit its content (floored by `--lr-date-input-control-min-height`). Set it to pin a fixed height; the calendar toggle keeps its own 24x24 touch target even when this pins a shorter row.\n- `--show-duration` (default: `var(--lr-transition-fast)`) — Popup enter-transition duration.\n- `--hide-duration` (default: `var(--lr-transition-fast)`) — Popup exit-transition duration.\n- `--lr-form-control-required-content` (default: `' *'`) — The required-field marker rendered after the label. Set it to `''` to suppress the marker, or to any other quoted string (`' (required)'`, a localized word) to replace it. Caller-supplied content, so it is never localized here.\n- `--lr-form-control-required-color` (default: `var(--lr-color-danger)`) — Color of that marker, retunable without touching any other danger-coloured surface.\n- `--lr-form-control-required-offset` (default: `0`) — Inline space between the label text and the marker."
|
|
7236
7236
|
},
|
|
7237
7237
|
"attributes": [
|
|
7238
7238
|
{
|
|
@@ -10645,7 +10645,7 @@
|
|
|
10645
10645
|
"name": "lr-flag",
|
|
10646
10646
|
"description": {
|
|
10647
10647
|
"kind": "markdown",
|
|
10648
|
-
"value": "`<lr-flag>` — a country/language flag.\n\nFlag images are shipped by the optional peer package `@aceshooting/lyra-flags`,\nnot bundled into lyra-ui itself, so importing the core library pulls zero flag\nweight. Give it a `country` (ISO 3166-1 alpha-2) or a `language` tag (mapped to\na representative country). While that peer package's `flagUrl()` resolves,\nthe host carries `aria-busy=\"true\"`; a decorative skeleton and ordinary, non-live localized\nloading text render in its place. A missing or failed peer resolver fails closed with a localized visible error and a\nshared light-DOM assertive announcement, plus a one-time `console.warn` naming the code and the\n`flag-peer.js` import that registers a resolver -- the visible error alone cannot tell a\ndeveloper that the fix is a missing import rather than missing flag data;\nan installed resolver returning no URL for an unknown code remains a valid\nempty result.\n\n**Bundle-size note:** `country`/`language` resolve through the peer package's\n`flagUrl(code)`, which lazily fetches one requested flag at runtime. A\nbundler may still emit the complete reachable lazy-chunk graph; use a\nliteral asset subpath import when the deployment artifact must be pruned.\nIf you already\nhave a flag's URL at build time (e.g. from your own literal\n`import frUrl from '@aceshooting/lyra-flags/flags/fr.svg?url'`), pass it as\n`src` instead to skip the peer-package round trip (and its loading-skeleton\nflash) entirely.\n\nThe ~65 flags whose design includes a detailed coat of arms/seal/emblem (e.g. `es`, `pt`) ship\nthree fidelity tiers; choose one with `fidelity`: `\"compact\"` (a tiny WebP raster for icon-scale\nuse — menu items, language selectors, dense lists), the default `\"standard\"` (icon-optimized\nvector for card/row sizes), or `\"detailed\"` (the pristine full-detail vector for hero-scale\ndisplay). A no-op for every other code — all tiers resolve to the same file. See `fidelity`'s own\ndoc.\n\n---\n\n**Component metadata**\n\n- Status: `stable`\n- Since: `4.0.0`\n- Rationale: This exact lr-* tag appears in a published Lyra release manifest and remains a supported public contract under semver.\n- Graduation: Already stable; it retains that status while its documented behavior, accessibility, compatibility, and cross-browser support remain part of the public contract.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `fallback` | Rendered in place of the flag when `country`/`language` cannot resolve to a current flag (an unassigned, historical, or malformed code). Wins over the `fallback` property. Distinct from the peer-resolver failure that produces `[part=\"error\"]`: an unresolvable code is data, not a defect. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `error` | Ordinary localized visible error rendered when the optional peer resolver is unavailable or fails; each fresh resolution failure appends the same localized message to the shared light-DOM assertive announcement sink. |\n| `fallback-image` | The `fallback` property's placeholder image, when no `fallback` slot content is supplied. |\n| `image` | The underlying <img>. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-flag-aspect-ratio` (default: `4 / 3`) — Rectangular flag aspect ratio.\n- `--lr-flag-object-fit` (default: `cover`) — How the image fits its flag frame.\n- `--lr-flag-radius` — Rectangular flag corner radius."
|
|
10648
|
+
"value": "`<lr-flag>` — a country/language flag.\n\nFlag images are shipped by the optional peer package `@aceshooting/lyra-flags`,\nnot bundled into lyra-ui itself, so importing the core library pulls zero flag\nweight. Give it a `country` (ISO 3166-1 alpha-2) or a `language` tag (mapped to\na representative country). While that peer package's `flagUrl()` resolves,\nthe host carries `aria-busy=\"true\"`; a decorative skeleton and ordinary, non-live localized\nloading text render in its place. A missing or failed peer resolver fails closed with a localized visible error and a\nshared light-DOM assertive announcement, plus a one-time `console.warn` naming the code and the\n`flag-peer.js` import that registers a resolver -- the visible error alone cannot tell a\ndeveloper that the fix is a missing import rather than missing flag data;\nan installed resolver returning no URL for an unknown code remains a valid\nempty result.\n\n**Bundle-size note:** `country`/`language` resolve through the peer package's\n`flagUrl(code)`, which lazily fetches one requested flag at runtime. A\nbundler may still emit the complete reachable lazy-chunk graph; use a\nliteral asset subpath import when the deployment artifact must be pruned.\nIf every `<lr-flag>` in your app is pinned to the same `fidelity` (no\nper-instance switching), register `@aceshooting/lyra-flags/standard`/`/compact`/`/detailed` with\n`setFlagUrlResolver()` instead of importing `flag-peer.js` (which always registers the full\nthree-tier resolver) — the tier-specific entry excludes the other two tiers' generated loader\nmaps from the reachable graph; see that package's README for the exact shape.\nIf you already\nhave a flag's URL at build time (e.g. from your own literal\n`import frUrl from '@aceshooting/lyra-flags/flags/fr.svg?url'`), pass it as\n`src` instead to skip the peer-package round trip (and its loading-skeleton\nflash) entirely.\n\n**Rendering many flags at once** (a country table, a picker listing every locale): resolve every\ncode up front with `@aceshooting/lyra-flags`'s `flagUrls()` (one call, returns `{code: url}` for\nall 249 flags) and pass results through `src`, instead of letting each `<lr-flag>` instance\nindependently call `flagUrl()` — this skips one peer-resolution round trip per instance. Image\nfetches themselves are unaffected either way (each flag is a distinct asset; there is no sprite).\nOr import `flag-peer-bulk.js` instead of `flag-peer.js` (never both) to get this automatically,\nregistering a resolver backed by one shared `flagUrls()` call — worthwhile only when the page\nrenders most/all flags; a page with a handful pays an unneeded 249-entry fetch.\n\n**Sizing:** the host has no intrinsic `width` — it sizes from `font-size` (`block-size: 1em`,\n`inline-size` derived from `--lr-flag-aspect-ratio` via CSS `aspect-ratio`), so `<lr-flag>` scales\nnaturally with surrounding text (e.g. `style=\"font-size: 2rem\"`). Do not set `width`/`inline-size`\ndirectly: making both axes definite defeats `aspect-ratio` (which only participates when at most\none axis is definite per the CSS sizing spec), squashing the image instead of scaling it.\n\nThe ~65 flags whose design includes a detailed coat of arms/seal/emblem (e.g. `es`, `pt`) ship\nthree fidelity tiers; choose one with `fidelity`: `\"compact\"` (a tiny WebP raster for icon-scale\nuse — menu items, language selectors, dense lists), the default `\"standard\"` (icon-optimized\nvector for card/row sizes), or `\"detailed\"` (the pristine full-detail vector for hero-scale\ndisplay). A no-op for every other code — all tiers resolve to the same file. See `fidelity`'s own\ndoc.\n\n---\n\n**Component metadata**\n\n- Status: `stable`\n- Since: `4.0.0`\n- Rationale: This exact lr-* tag appears in a published Lyra release manifest and remains a supported public contract under semver.\n- Graduation: Already stable; it retains that status while its documented behavior, accessibility, compatibility, and cross-browser support remain part of the public contract.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `fallback` | Rendered in place of the flag when `country`/`language` cannot resolve to a current flag (an unassigned, historical, or malformed code). Wins over the `fallback` property. Distinct from the peer-resolver failure that produces `[part=\"error\"]`: an unresolvable code is data, not a defect. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `error` | Ordinary localized visible error rendered when the optional peer resolver is unavailable or fails; each fresh resolution failure appends the same localized message to the shared light-DOM assertive announcement sink. |\n| `fallback-image` | The `fallback` property's placeholder image, when no `fallback` slot content is supplied. |\n| `image` | The underlying <img>. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-flag-aspect-ratio` (default: `4 / 3`) — Rectangular flag aspect ratio.\n- `--lr-flag-object-fit` (default: `cover`) — How the image fits its flag frame.\n- `--lr-flag-radius` — Rectangular flag corner radius."
|
|
10649
10649
|
},
|
|
10650
10650
|
"attributes": [
|
|
10651
10651
|
{
|
|
@@ -14414,7 +14414,7 @@
|
|
|
14414
14414
|
"name": "lr-lite-chart",
|
|
14415
14415
|
"description": {
|
|
14416
14416
|
"kind": "markdown",
|
|
14417
|
-
"value": "`<lr-lite-chart>` — a dependency-free bar/line chart, plain SVG/DOM\nrendering with zero peer dependencies (unlike `lr-chart`, which wraps\n`chart.js`). For a project whose architecture forbids a charting\ndependency outright, this covers the common bar/line case: grouped or\nstacked bars, multi-series lines, per-point click, and hover tooltips\n(native SVG `<title>`, no positioning JS needed) — not a full `lr-chart`\nreplacement (no zoom/pan, no pie/doughnut/radar/scatter/bubble types, no\nhorizontal/dual-y-axis, no raw-config passthrough, no interactive legend\ntoggle — unlike `lr-chart`/`lr-box-plot`, clicking a `legend-item` here does\nnot hide its series; the legend is a static color key).\n\nBecause this renders real DOM (not canvas), it reuses `lr-chart`'s\n`--lr-chart-*` theme tokens directly via CSS `var()` — no\n`getComputedStyle()`-based re-theming step is needed the way `chart.ts`\nneeds one for its canvas.\n\nBy default (`layout=\"fit\"`) the plot always squeezes to the measured host\nwidth. Three independent, opt-in escape hatches for dense/aligned data:\n`layout=\"scroll\"` (+ `barWidth`) gives every bar a fixed pixel width and\nlets the plot overflow the host horizontally (scrollable) instead of\nsqueezing; `maxLabels` decimates which x-axis text labels render (bars\nalways still render) once there are more categories than that; and\n`barX` lets a consumer hand in its own per-category x-coordinate function\n— e.g. to pixel-align this chart's bars with a sibling `lr-heatmap`'s\ncalendar columns — overriding the internal slot math for both bars and\ntheir labels. All three are additive and no-ops when left unset.\n\nSeven further additive, opt-in properties: `pointText` overrides the\nper-bar/per-point `<title>` tooltip and accessible-name text (mirrors\n`lr-heatmap`'s `cellText` hook), falling back to the built-in raw-value\ntemplate when unset; `roundedBars` draws bars as a rounded-top path\ninstead of a square-cornered rect; `skipZero` omits a bar entirely (not\njust zero-height) for an exactly-`0` value; `valueAxisGutter`/`barGapRatio`\noverride the internal `PAD_LEFT`/`BAR_GROUP_GAP` layout constants; `scale`\n(`type=\"bar\"` only) switches the bar-height mapping from the default\nlinear `niceDomain` fraction to a `Math.sqrt(value / domainMax)`\ncompression (mirroring `lr-heatmap`'s matrix-mode `sqrt` scale) so a\nskewed dataset's smaller bars don't get washed out by one dominant value\n— gridlines/tick labels stay on the linear domain regardless, only the bar\nmarks' own height changes, and `type=\"line\"` ignores `scale` entirely; and\n`withoutValueAxis` suppresses `renderGrid()`'s gridlines/tick labels altogether\n(x-axis category labels, rendered separately, are unaffected). An eighth,\n`legendText`, appends a formatter-supplied string after each series' label in the\nbuilt-in legend row (e.g. a value or share) — no-op while `legend` is unset, matching the same\nfallback-to-unchanged convention as every other hook here. The built-in multi-series accessible\ntable can independently format its finite numeric cells through `tableCellFormatter`; for a\nstacked bar chart, `tableTotals` adds an opt-in localized total column. Both are no-ops when\nunset.\n\nPublic collection properties take bounded, clone-owned readonly snapshots. Create a new\ncollection and reassign it after changes; mutating the assigned array does not update the view.\n\n---\n\n**Component metadata**\n\n- Status: `stable`\n- Since: `4.0.0`\n- Rationale: This exact lr-* tag appears in a published Lyra release manifest and remains a supported public contract under semver.\n- Graduation: Already stable; it retains that status while its documented behavior, accessibility, compatibility, and cross-browser support remain part of the public contract.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `data-table` | An optional consumer-provided complete/paginated accessible data alternative. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `axis-label` | Each axis tick label. |\n| `axis-title` | The x/y axis title text, when set. |\n| `bar` | Each bar rect (type=\"bar\"). Carries `data-selected` and `aria-pressed=\"true\"` when its category index is in `selectedIndices`. While `forced-colors: active` matches, its fill is a per-series SVG texture instead of a flat color, so series that collapse onto the same system color stay distinguishable. |\n| `base` | The host's flex layout wrapper. |\n| `data-list` | A visually hidden sampled list of plotted data points (single-series only). |\n| `data-table` | A visually hidden sampled category×series data table, rendered instead of `data-list` when there is more than one dataset so a screen-reader user hears series grouping rather than one flattened N×M sequence. |\n| `data-truncation` | Explanation shown when built-in marks/data alternatives sample more than 1,000 records. |\n| `description` | The visually hidden accessible chart description, when set. |\n| `grid-line` | Each horizontal gridline. |\n| `legend` | The legend row, when `legend` is set. |\n| `legend-item` | Each legend entry. |\n| `legend-swatch` | Each legend entry's color swatch. While `forced-colors: active` matches, it carries a `data-encoding` attribute selecting the CSS texture that matches its series' plotted encoding. |\n| `legend-text` | Extra per-item text after the series label, rendered only when `legendText` is set. |\n| `line` | Each series' stroked line path (type=\"line\"). While `forced-colors: active` matches, it carries a per-series `stroke-dasharray` for the same reason. |\n| `live-region` | The current mark announcement for keyboard users. |\n| `point` | Each series' per-point keyboard target (type=\"line\"). Carries `data-selected` and explicit `aria-pressed` state. |\n| `table` | The generated semantic table inside the `data-table` container. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-chart-color-1` (default: `var(--lr-color-chart-1)`) — First series color.\n- `--lr-chart-color-2` (default: `var(--lr-color-chart-2)`) — Second series color.\n- `--lr-chart-color-3` (default: `var(--lr-color-chart-3)`) — Third series color.\n- `--lr-chart-color-4` (default: `var(--lr-color-chart-4)`) — Fourth series color.\n- `--lr-chart-color-5` (default: `var(--lr-color-chart-5)`) — Fifth series color.\n- `--lr-chart-color-6` (default: `var(--lr-color-chart-6)`) — Sixth series color.\n- `--lr-chart-color-7` (default: `var(--lr-color-chart-7)`) — Seventh series color.\n- `--lr-chart-color-8` (default: `var(--lr-color-chart-8)`) — Eighth series color.\n- `--lr-chart-grid-color` (default: `var(--lr-color-border)`) — Grid-line color.\n- `--lr-chart-height` (default: `var(--lr-size-280px)`) — Consumer-owned chart height. The `height` property supplies only a private fallback, so this public token always wins when set.\n- `--lr-chart-legend-color` (default: `var(--lr-color-text)`) — Legend label color.\n- `--lr-chart-legend-side-max` (default: `var(--lr-size-15rem)`) — Maximum side-legend track size.\n- `--lr-chart-pattern-step` (default: `var(--lr-space-2xs)`) — Tile size of the texture painted on `[part='legend-swatch']` while `forced-colors: active` matches, where the eight-color series ramp collapses onto a repeating system-color cycle and the texture becomes the only channel keeping series apart. Declared on the swatch part rather than the host; the stripe width within a tile stays `--lr-border-width-thin`, so a larger step spaces the stripes further apart. Shared verbatim with `<lr-chart>` and `<lr-box-plot>`.\n- `--lr-chart-tick-color` (default: `var(--lr-color-text-quiet)`) — Axis and legend-detail color.\n- `--lr-lite-chart-selected-outline-color` (default: `var(--lr-color-brand)`) — Stroke for a bar/point whose category index is in `selectedIndices`.\n- `--lr-lite-chart-selected-outline-width` (default: `var(--lr-size-2px)`) — Stroke width for a bar/point whose category index is in `selectedIndices`."
|
|
14417
|
+
"value": "`<lr-lite-chart>` — a dependency-free bar/line chart, plain SVG/DOM\nrendering with zero peer dependencies (unlike `lr-chart`, which wraps\n`chart.js`). For a project whose architecture forbids a charting\ndependency outright, this covers the common bar/line case: grouped or\nstacked bars, multi-series lines, per-point click, and hover tooltips\n(native SVG `<title>`, no positioning JS needed) — not a full `lr-chart`\nreplacement (no zoom/pan, no pie/doughnut/radar/scatter/bubble types, no\nhorizontal/dual-y-axis, no raw-config passthrough, no interactive legend\ntoggle — unlike `lr-chart`/`lr-box-plot`, clicking a `legend-item` here does\nnot hide its series; the legend is a static color key).\n\nBecause this renders real DOM (not canvas), it reuses `lr-chart`'s\n`--lr-chart-*` theme tokens directly via CSS `var()` — no\n`getComputedStyle()`-based re-theming step is needed the way `chart.ts`\nneeds one for its canvas.\n\nBy default (`layout=\"fit\"`) the plot always squeezes to the measured host\nwidth. Three independent, opt-in escape hatches for dense/aligned data:\n`layout=\"scroll\"` (+ `barWidth`) gives every bar a fixed pixel width and\nlets the plot overflow the host horizontally (scrollable) instead of\nsqueezing; `maxLabels` decimates which x-axis text labels render (bars\nalways still render) once there are more categories than that; and\n`barX` lets a consumer hand in its own per-category x-coordinate function\n— e.g. to pixel-align this chart's bars with a sibling `lr-heatmap`'s\ncalendar columns — overriding the internal slot math for both bars and\ntheir labels. All three are additive and no-ops when left unset.\n\nSeven further additive, opt-in properties: `pointText` overrides the\nper-bar/per-point `<title>` tooltip and accessible-name text (mirrors\n`lr-heatmap`'s `cellText` hook), falling back to the built-in raw-value\ntemplate when unset; `roundedBars` draws bars as a rounded-top path\ninstead of a square-cornered rect; `skipZero` omits a bar entirely (not\njust zero-height) for an exactly-`0` value; `valueAxisGutter`/`barGapRatio`\noverride the internal `PAD_LEFT`/`BAR_GROUP_GAP` layout constants; `scale`\n(`type=\"bar\"` only) switches the bar-height mapping from the default\nlinear `niceDomain` fraction to a `Math.sqrt(value / domainMax)`\ncompression (mirroring `lr-heatmap`'s matrix-mode `sqrt` scale) so a\nskewed dataset's smaller bars don't get washed out by one dominant value\n— gridlines/tick labels stay on the linear domain regardless, only the bar\nmarks' own height changes, and `type=\"line\"` ignores `scale` entirely; and\n`withoutValueAxis` suppresses `renderGrid()`'s gridlines/tick labels altogether\n(x-axis category labels, rendered separately, are unaffected). An eighth,\n`legendText`, appends a formatter-supplied string after each series' label in the\nbuilt-in legend row (e.g. a value or share) — no-op while `legend` is unset, matching the same\nfallback-to-unchanged convention as every other hook here. The built-in multi-series accessible\ntable can independently format its finite numeric cells through `tableCellFormatter`; for a\nstacked bar chart, `tableTotals` adds an opt-in localized total column. Both are no-ops when\nunset.\n\nPublic collection properties take bounded, clone-owned readonly snapshots. Create a new\ncollection and reassign it after changes; mutating the assigned array does not update the view.\n\n---\n\n**Component metadata**\n\n- Status: `stable`\n- Since: `4.0.0`\n- Rationale: This exact lr-* tag appears in a published Lyra release manifest and remains a supported public contract under semver.\n- Graduation: Already stable; it retains that status while its documented behavior, accessibility, compatibility, and cross-browser support remain part of the public contract.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `data-table` | An optional consumer-provided complete/paginated accessible data alternative. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `axis-label` | Each axis tick label. |\n| `axis-title` | The x/y axis title text, when set. |\n| `bar` | Each bar rect (type=\"bar\"). Carries `data-selected` and `aria-pressed=\"true\"` when its category index is in `selectedIndices`. While `forced-colors: active` matches, its fill is a per-series SVG texture instead of a flat color, so series that collapse onto the same system color stay distinguishable. |\n| `base` | The host's flex layout wrapper. |\n| `data-list` | A visually hidden sampled list of plotted data points (single-series only). |\n| `data-table` | A visually hidden sampled category×series data table, rendered instead of `data-list` when there is more than one dataset so a screen-reader user hears series grouping rather than one flattened N×M sequence. |\n| `data-table-toggle` | The disclosure button rendered by `dataTableToggle`. |\n| `data-truncation` | Explanation shown when built-in marks/data alternatives sample more than 1,000 records. |\n| `description` | The visually hidden accessible chart description, when set. |\n| `grid-line` | Each horizontal gridline. |\n| `legend` | The legend row, when `legend` is set. |\n| `legend-item` | Each legend entry. |\n| `legend-swatch` | Each legend entry's color swatch. While `forced-colors: active` matches, it carries a `data-encoding` attribute selecting the CSS texture that matches its series' plotted encoding. |\n| `legend-text` | Extra per-item text after the series label, rendered only when `legendText` is set. |\n| `line` | Each series' stroked line path (type=\"line\"). While `forced-colors: active` matches, it carries a per-series `stroke-dasharray` for the same reason. |\n| `live-region` | The current mark announcement for keyboard users. |\n| `point` | Each series' per-point keyboard target (type=\"line\"). Carries `data-selected` and explicit `aria-pressed` state. |\n| `table` | The generated semantic table inside the `data-table` container. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-chart-color-1` (default: `var(--lr-color-chart-1)`) — First series color.\n- `--lr-chart-color-2` (default: `var(--lr-color-chart-2)`) — Second series color.\n- `--lr-chart-color-3` (default: `var(--lr-color-chart-3)`) — Third series color.\n- `--lr-chart-color-4` (default: `var(--lr-color-chart-4)`) — Fourth series color.\n- `--lr-chart-color-5` (default: `var(--lr-color-chart-5)`) — Fifth series color.\n- `--lr-chart-color-6` (default: `var(--lr-color-chart-6)`) — Sixth series color.\n- `--lr-chart-color-7` (default: `var(--lr-color-chart-7)`) — Seventh series color.\n- `--lr-chart-color-8` (default: `var(--lr-color-chart-8)`) — Eighth series color.\n- `--lr-chart-grid-color` (default: `var(--lr-color-border)`) — Grid-line color.\n- `--lr-chart-height` (default: `var(--lr-size-280px)`) — Consumer-owned chart height. The `height` property supplies only a private fallback, so this public token always wins when set.\n- `--lr-chart-legend-color` (default: `var(--lr-color-text)`) — Legend label color.\n- `--lr-chart-legend-side-max` (default: `var(--lr-size-15rem)`) — Maximum side-legend track size.\n- `--lr-chart-pattern-step` (default: `var(--lr-space-2xs)`) — Tile size of the texture painted on `[part='legend-swatch']` while `forced-colors: active` matches, where the eight-color series ramp collapses onto a repeating system-color cycle and the texture becomes the only channel keeping series apart. Declared on the swatch part rather than the host; the stripe width within a tile stays `--lr-border-width-thin`, so a larger step spaces the stripes further apart. Shared verbatim with `<lr-chart>` and `<lr-box-plot>`.\n- `--lr-chart-tick-color` (default: `var(--lr-color-text-quiet)`) — Axis and legend-detail color.\n- `--lr-lite-chart-data-table-toggle-active-bg` — Pressed background of the `dataTableToggle` disclosure button; defaults to a mix of the hover background with the shared active mix partner.\n- `--lr-lite-chart-data-table-toggle-hover-bg` (default: `var(--lr-color-brand-quiet)`) — Hover background of the `dataTableToggle` disclosure button.\n- `--lr-lite-chart-selected-outline-color` (default: `var(--lr-color-brand)`) — Stroke for a bar/point whose category index is in `selectedIndices`.\n- `--lr-lite-chart-selected-outline-width` (default: `var(--lr-size-2px)`) — Stroke width for a bar/point whose category index is in `selectedIndices`."
|
|
14418
14418
|
},
|
|
14419
14419
|
"attributes": [
|
|
14420
14420
|
{
|
|
@@ -14445,6 +14445,13 @@
|
|
|
14445
14445
|
"value": "Type: `boolean` \nDefault: `true`"
|
|
14446
14446
|
}
|
|
14447
14447
|
},
|
|
14448
|
+
{
|
|
14449
|
+
"name": "data-table-toggle",
|
|
14450
|
+
"description": {
|
|
14451
|
+
"kind": "markdown",
|
|
14452
|
+
"value": "Render a disclosure button above the accessible data table so a sighted reader can reveal the\nnumbers on demand, turning `showDataTable` into the disclosure's INITIAL state rather than its\nwhole behavior. The table stays in the DOM in both states, so assistive technology never loses\nit.\n\nMatters more here than on `<lr-chart>`: this component exists to avoid the Chart.js peers, so\nwithout it an app that chose it for that reason had to either hand-roll a `<details>` around a\nduplicated table or adopt `<lr-chart>` and pull in Chart.js for a button — the cheap component\nstuck with the expensive workaround.\n\nType: `boolean` \nDefault: `false`"
|
|
14453
|
+
}
|
|
14454
|
+
},
|
|
14448
14455
|
{
|
|
14449
14456
|
"name": "description",
|
|
14450
14457
|
"description": {
|
|
@@ -14555,6 +14562,13 @@
|
|
|
14555
14562
|
}
|
|
14556
14563
|
]
|
|
14557
14564
|
},
|
|
14565
|
+
{
|
|
14566
|
+
"name": "show-data-table",
|
|
14567
|
+
"description": {
|
|
14568
|
+
"kind": "markdown",
|
|
14569
|
+
"value": "Makes the generated data table visible; it stays screen-reader available when false. Same\nmeaning as `<lr-chart>`'s property of the same name.\n\nType: `boolean` \nDefault: `false`"
|
|
14570
|
+
}
|
|
14571
|
+
},
|
|
14558
14572
|
{
|
|
14559
14573
|
"name": "skip-zero",
|
|
14560
14574
|
"description": {
|