@aceshooting/lyra-ui 25.3.1 → 25.5.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.
Files changed (220) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +15 -3
  3. package/custom-elements.json +1 -1
  4. package/dist/all.d.ts +1 -1
  5. package/dist/all.js +1 -1
  6. package/dist/cli/migration-contract.json +1 -1
  7. package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +1 -1
  8. package/dist/components/charts/chart/chart-sync.d.ts +4 -0
  9. package/dist/components/charts/chart/chart-sync.js +1 -0
  10. package/dist/components/charts/chart/chart-sync.styles.d.ts +1 -0
  11. package/dist/components/charts/chart/chart-sync.styles.js +1 -0
  12. package/dist/components/charts/chart/chart.class.d.ts +12 -2
  13. package/dist/components/charts/chart/chart.class.js +5 -4
  14. package/dist/components/charts/chart/histogram.class.js +1 -1
  15. package/dist/components/charts/chart/lite-chart.class.d.ts +18 -5
  16. package/dist/components/charts/chart/lite-chart.class.js +11 -11
  17. package/dist/components/data/heatmap/heatmap-grid-navigation.d.ts +2 -2
  18. package/dist/components/data/heatmap/heatmap-grid-navigation.js +1 -1
  19. package/dist/components/data/heatmap/heatmap.class.d.ts +24 -9
  20. package/dist/components/data/heatmap/heatmap.class.js +3 -3
  21. package/dist/components/forms/button/button.styles.js +1 -1
  22. package/dist/components/forms/catalog-picker-base.d.ts +48 -0
  23. package/dist/components/forms/catalog-picker-base.js +29 -0
  24. package/dist/components/forms/catalog-picker-base.styles.d.ts +1 -0
  25. package/dist/components/forms/catalog-picker-base.styles.js +1 -0
  26. package/dist/components/forms/combobox/combobox.class.d.ts +4 -1
  27. package/dist/components/forms/combobox/combobox.class.js +2 -2
  28. package/dist/components/forms/country-picker/country-picker.class.d.ts +40 -0
  29. package/dist/components/forms/country-picker/country-picker.class.js +1 -0
  30. package/dist/components/forms/country-picker/country-picker.d.ts +1 -0
  31. package/dist/components/forms/country-picker/country-picker.js +1 -0
  32. package/dist/components/forms/country-picker/country-picker.styles.d.ts +1 -0
  33. package/dist/components/forms/country-picker/country-picker.styles.js +1 -0
  34. package/dist/components/forms/currency-picker/currency-catalog.d.ts +19 -0
  35. package/dist/components/forms/currency-picker/currency-catalog.js +1 -0
  36. package/dist/components/forms/currency-picker/currency-picker.class.d.ts +95 -0
  37. package/dist/components/forms/currency-picker/currency-picker.class.js +30 -0
  38. package/dist/components/forms/currency-picker/currency-picker.d.ts +1 -0
  39. package/dist/components/forms/currency-picker/currency-picker.js +1 -0
  40. package/dist/components/forms/currency-picker/currency-picker.styles.d.ts +1 -0
  41. package/dist/components/forms/currency-picker/currency-picker.styles.js +1 -0
  42. package/dist/components/forms/currency-picker/currency-presentation.d.ts +3 -0
  43. package/dist/components/forms/currency-picker/currency-presentation.js +1 -0
  44. package/dist/components/forms/currency-picker/currency-types.d.ts +3 -0
  45. package/dist/components/forms/index.d.ts +1 -1
  46. package/dist/components/forms/index.js +1 -1
  47. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +37 -11
  48. package/dist/components/forms/locale-picker/locale-picker.class.js +43 -8
  49. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  50. package/dist/components/forms/select/select.class.d.ts +9 -2
  51. package/dist/components/forms/select/select.class.js +2 -2
  52. package/dist/components/forms/select/select.styles.js +1 -1
  53. package/dist/components/forms/time-zone-picker/time-zone-picker.class.d.ts +40 -0
  54. package/dist/components/forms/time-zone-picker/time-zone-picker.class.js +1 -0
  55. package/dist/components/forms/time-zone-picker/time-zone-picker.d.ts +1 -0
  56. package/dist/components/forms/time-zone-picker/time-zone-picker.js +1 -0
  57. package/dist/components/forms/time-zone-picker/time-zone-picker.styles.d.ts +1 -0
  58. package/dist/components/forms/time-zone-picker/time-zone-picker.styles.js +1 -0
  59. package/dist/components/forms/unit-picker/unit-picker.class.d.ts +38 -0
  60. package/dist/components/forms/unit-picker/unit-picker.class.js +1 -0
  61. package/dist/components/forms/unit-picker/unit-picker.d.ts +1 -0
  62. package/dist/components/forms/unit-picker/unit-picker.js +1 -0
  63. package/dist/components/forms/unit-picker/unit-picker.styles.d.ts +1 -0
  64. package/dist/components/forms/unit-picker/unit-picker.styles.js +1 -0
  65. package/dist/components/layout/app-rail/app-rail.class.d.ts +1 -1
  66. package/dist/components/layout/app-rail/app-rail.class.js +1 -1
  67. package/dist/components/layout/card/card.styles.js +1 -1
  68. package/dist/components/layout/details/accordion-item.styles.js +1 -1
  69. package/dist/components/layout/details/details.styles.js +1 -1
  70. package/dist/components/layout/reorder-list/reorder-item.class.js +2 -0
  71. package/dist/components/lr-country-picker.js +1 -0
  72. package/dist/components/lr-currency-picker.js +1 -0
  73. package/dist/components/lr-time-zone-picker.js +1 -0
  74. package/dist/components/lr-unit-picker.js +1 -0
  75. package/dist/components/media/avatar/avatar.class.d.ts +3 -0
  76. package/dist/components/media/avatar/avatar.styles.js +1 -1
  77. package/dist/components/media/pan-zoom/pan-zoom.styles.js +1 -1
  78. package/dist/countries.d.ts +7 -0
  79. package/dist/countries.js +1 -0
  80. package/dist/currency.d.ts +39 -0
  81. package/dist/currency.js +1 -0
  82. package/dist/custom-elements-jsx.d.ts +1 -1
  83. package/dist/events.d.ts +28 -24
  84. package/dist/framework-types.d.ts +2 -2
  85. package/dist/internal/autoloader-manifest.js +1 -1
  86. package/dist/internal/autoloader-tags.d.ts +1 -1
  87. package/dist/internal/autoloader-tags.js +1 -1
  88. package/dist/internal/default-strings.generated.d.ts +1 -1
  89. package/dist/internal/default-strings.generated.js +1 -1
  90. package/dist/internal/form-associated.d.ts +3 -1
  91. package/dist/internal/form-associated.js +1 -1
  92. package/dist/internal/glass-surface.styles.js +1 -1
  93. package/dist/internal/localization-types.d.ts +1 -1
  94. package/dist/internal/localization.js +1 -1
  95. package/dist/internal/opaque-content-border.styles.d.ts +3 -0
  96. package/dist/internal/opaque-content-border.styles.js +1 -0
  97. package/dist/internal/package-metadata.d.ts +1 -1
  98. package/dist/internal/package-metadata.js +1 -1
  99. package/dist/internal/root-registration-allowlist.d.ts +1 -1
  100. package/dist/internal/root-registration-allowlist.js +1 -1
  101. package/dist/internal/scoped-definitions.generated.js +1 -1
  102. package/dist/internal/selection-catalog.d.ts +4 -0
  103. package/dist/internal/selection-catalog.js +1 -0
  104. package/dist/internal/tokens.styles.js +1 -1
  105. package/dist/lyra.d.ts +1 -1
  106. package/dist/lyra.js +1 -1
  107. package/dist/ssr/all.d.ts +1 -1
  108. package/dist/ssr/all.js +1 -1
  109. package/dist/ssr.d.ts +4 -4
  110. package/dist/ssr.js +1 -1
  111. package/dist/surfaces/glass.css +1 -1
  112. package/dist/svelte.d.ts +1 -1
  113. package/dist/testing/lyra-tag-event-map.d.ts +2 -2
  114. package/dist/testing/lyra-tag-event-map.js +1 -1
  115. package/dist/theme.css +1 -1
  116. package/dist/time-zones.d.ts +8 -0
  117. package/dist/time-zones.js +1 -0
  118. package/dist/translations/am/forms.js +1 -1
  119. package/dist/translations/ar/forms.js +1 -1
  120. package/dist/translations/bho/forms.js +1 -1
  121. package/dist/translations/bn/forms.js +1 -1
  122. package/dist/translations/cs/forms.js +1 -1
  123. package/dist/translations/da/forms.js +1 -1
  124. package/dist/translations/de/forms.js +1 -1
  125. package/dist/translations/el/forms.js +1 -1
  126. package/dist/translations/es/forms.js +1 -1
  127. package/dist/translations/fa/forms.js +1 -1
  128. package/dist/translations/fa-AF/forms.js +1 -1
  129. package/dist/translations/fi/forms.js +1 -1
  130. package/dist/translations/fr/forms.js +1 -1
  131. package/dist/translations/gu/forms.js +1 -1
  132. package/dist/translations/ha/forms.js +1 -1
  133. package/dist/translations/he/forms.js +1 -1
  134. package/dist/translations/hi/forms.js +1 -1
  135. package/dist/translations/hr/forms.js +1 -1
  136. package/dist/translations/hu/forms.js +1 -1
  137. package/dist/translations/id/forms.js +1 -1
  138. package/dist/translations/ig/forms.js +1 -1
  139. package/dist/translations/it/forms.js +1 -1
  140. package/dist/translations/ja/forms.js +1 -1
  141. package/dist/translations/jv/forms.js +1 -1
  142. package/dist/translations/kk/forms.js +1 -1
  143. package/dist/translations/kn/forms.js +1 -1
  144. package/dist/translations/ko/forms.js +1 -1
  145. package/dist/translations/ln/forms.js +1 -1
  146. package/dist/translations/ml/forms.js +1 -1
  147. package/dist/translations/mr/forms.js +1 -1
  148. package/dist/translations/ms/forms.js +1 -1
  149. package/dist/translations/my/forms.js +1 -1
  150. package/dist/translations/nb/forms.js +1 -1
  151. package/dist/translations/ne/forms.js +1 -1
  152. package/dist/translations/nl/forms.js +1 -1
  153. package/dist/translations/nn/forms.js +1 -1
  154. package/dist/translations/om/forms.js +1 -1
  155. package/dist/translations/or/forms.js +1 -1
  156. package/dist/translations/pa/forms.js +1 -1
  157. package/dist/translations/pcm/forms.js +1 -1
  158. package/dist/translations/pl/forms.js +1 -1
  159. package/dist/translations/pnb/forms.js +1 -1
  160. package/dist/translations/ps/forms.js +1 -1
  161. package/dist/translations/pt-BR/forms.js +1 -1
  162. package/dist/translations/pt-PT/forms.js +1 -1
  163. package/dist/translations/ro/forms.js +1 -1
  164. package/dist/translations/ru/forms.js +1 -1
  165. package/dist/translations/sd/forms.js +1 -1
  166. package/dist/translations/sl/forms.js +1 -1
  167. package/dist/translations/su/forms.js +1 -1
  168. package/dist/translations/sv/forms.js +1 -1
  169. package/dist/translations/sw/forms.js +1 -1
  170. package/dist/translations/ta/forms.js +1 -1
  171. package/dist/translations/te/forms.js +1 -1
  172. package/dist/translations/th/forms.js +1 -1
  173. package/dist/translations/tl/forms.js +1 -1
  174. package/dist/translations/tr/forms.js +1 -1
  175. package/dist/translations/uk/forms.js +1 -1
  176. package/dist/translations/ur/forms.js +1 -1
  177. package/dist/translations/uz/forms.js +1 -1
  178. package/dist/translations/vi/forms.js +1 -1
  179. package/dist/translations/yo/forms.js +1 -1
  180. package/dist/translations/zh-CN/forms.js +1 -1
  181. package/dist/translations/zh-TW/forms.js +1 -1
  182. package/dist/translations/zu/forms.js +1 -1
  183. package/dist/units.d.ts +5 -0
  184. package/dist/units.js +1 -0
  185. package/dist/vue.d.ts +1 -1
  186. package/llms/components/lr-avatar.md +9 -3
  187. package/llms/components/lr-bar-chart.md +1 -1
  188. package/llms/components/lr-bubble-chart.md +1 -1
  189. package/llms/components/lr-chart.md +11 -2
  190. package/llms/components/lr-combobox.md +5 -0
  191. package/llms/components/lr-country-picker.md +92 -0
  192. package/llms/components/lr-currency-picker.md +101 -0
  193. package/llms/components/lr-doughnut-chart.md +1 -1
  194. package/llms/components/lr-heatmap.md +16 -3
  195. package/llms/components/lr-histogram.md +9 -1
  196. package/llms/components/lr-line-chart.md +11 -1
  197. package/llms/components/lr-lite-chart.md +14 -4
  198. package/llms/components/lr-locale-picker.md +18 -4
  199. package/llms/components/lr-pie-chart.md +1 -1
  200. package/llms/components/lr-polar-area-chart.md +1 -1
  201. package/llms/components/lr-radar-chart.md +1 -1
  202. package/llms/components/lr-reorder-list.md +5 -0
  203. package/llms/components/lr-scatter-chart.md +1 -1
  204. package/llms/components/lr-select.md +29 -0
  205. package/llms/components/lr-time-zone-picker.md +56 -0
  206. package/llms/components/lr-unit-picker.md +54 -0
  207. package/llms/index.md +6 -2
  208. package/llms/peers.md +2 -2
  209. package/llms/shared/events-and-types.md +16 -0
  210. package/llms/shared/imports-and-registration.md +1 -1
  211. package/llms/shared/styles-and-tokens.md +8 -2
  212. package/llms/shared/testing-and-utilities.md +4 -1
  213. package/llms/shared.md +29 -4
  214. package/llms.txt +1 -1
  215. package/locales.json +138 -138
  216. package/package.json +56 -4
  217. package/registrations.json +1 -1
  218. package/vscode-css-data.json +1 -1
  219. package/vscode-html-data.json +1 -1
  220. package/web-types.json +1 -1
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [charts](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/charts.md)
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 this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 17 parts, 39 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`
14
14
 
15
15
  ---
@@ -28,6 +28,11 @@ Bins `values` into `bins` equal-width buckets and renders as a bar chart (extend
28
28
  chart-wide accessible-name meaning.
29
29
  - inherits `lr-chart`'s full surface, including `scaleType` (`scale-type`) and `annotations` —
30
30
  a logarithmic frequency axis and threshold/band markers both apply to a histogram
31
+ - `syncGroup: string = ''` (attribute `sync-group`) — inherited exact category coordination for its
32
+ vertical categorical bar configuration; see
33
+ [Synchronized categorical charts](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/charts.md#synchronized-categorical-charts). Matches use the generated
34
+ bucket range strings, so different bin boundaries do not match unless their labels are exactly
35
+ equal. Horizontal or continuous-x raw configurations do not participate.
31
36
  - `labels`/`datasets`/`type` are **derived, read-only** (installed as getter/setter pairs on the
32
37
  prototype; direct writes are silently ignored) — `labels`/`datasets` are computed from
33
38
  `values`/`bins` (memoized per instance, keyed by reference equality on `values` plus the
@@ -59,12 +64,15 @@ bar controller and dataset legend even with `legend-mode="datum"`.
59
64
  **Slots:** default JSON configuration script, `data-table`, `center`.
60
65
 
61
66
  **CSS parts:** `base`, `plot`, `canvas`, `legend`, `legend-item`, `legend-item-hidden`, `legend-swatch`,
67
+ `sync-crosshair` (inherited decorative category line during synchronization; the native canvas
68
+ tooltip has no CSS part),
62
69
  `reset-zoom-button`, `description`, `notices`, `data-table`, `data-table-toggle`, `data-truncation`, `feature-warning`, `center`, `error` (neutral visible message
63
70
  rendered in place of `canvas` when the optional `chart.js` peer dependency fails to load; the
64
71
  failure transition is announced through the shared document-level light-DOM assertive sink —
65
72
  inherited from `LyraChart`, unaffected by the binning logic).
66
73
 
67
74
  **Themeable custom properties:** `--lr-chart-height`, `--lr-chart-grid-color`,
75
+ `--lr-chart-sync-crosshair-color`, `--lr-chart-sync-crosshair-width`,
68
76
  `--lr-chart-tick-color`, `--lr-chart-tick-font-size`, `--lr-chart-legend-color`, `--lr-chart-tooltip-bg`,
69
77
  `--lr-chart-tooltip-color`, `--lr-chart-legend-item-hover-bg`,
70
78
  `--lr-chart-legend-item-active-bg`, `--lr-chart-data-table-button-hover-bg`,
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [charts](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/charts.md)
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 this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 17 parts, 39 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Documented with** `lr-bar-chart`, `lr-pie-chart`, `lr-doughnut-chart`, `lr-radar-chart`, `lr-polar-area-chart`, `lr-bubble-chart`, `lr-scatter-chart` (same section below)
14
14
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
15
15
 
@@ -21,6 +21,13 @@ Each is `LyraChart` with a named default `type` — respectively `line`, `bar`,
21
21
  `radar`, `polarArea`, `bubble`, `scatter`. In parity with the mirrored tags, `type` remains writable
22
22
  and accepts the full `LyraChartType` vocabulary; the tag name is a convenient default, not a lock.
23
23
 
24
+ `syncGroup: string = ''` (attribute `sync-group`) is inherited. The default vertical categorical
25
+ `lr-line-chart` and `lr-bar-chart` configurations can participate in
26
+ [Synchronized categorical charts](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/charts.md#synchronized-categorical-charts). The other six default chart
27
+ types leave it inert; changing `type` or raw `config` to an admitted vertical categorical bar/line
28
+ configuration enables participation regardless of the tag. Horizontal or continuous-x
29
+ configurations remain outside synchronization.
30
+
24
31
  Everything else is inherited verbatim from `lr-chart`; each name below has the same type, default,
25
32
  and behavior there. **See `llms/components/lr-chart.md` for the details, code example, and gotchas
26
33
  of every entry in these lists.**
@@ -51,12 +58,15 @@ Radial category legends additionally emit `lr-datum-visibility-change-request` (
51
58
  **Slots:** default JSON configuration script, `data-table`, `center`.
52
59
 
53
60
  **CSS parts:** `base`, `plot`, `canvas`, `legend`, `legend-item`, `legend-item-hidden`, `legend-swatch`,
61
+ `sync-crosshair` (inherited decorative category line, rendered only for an admitted synchronized
62
+ configuration; the native canvas tooltip has no CSS part),
54
63
  `reset-zoom-button`, `description`, `notices`, `data-table`, `data-table-toggle`, `data-truncation`, `feature-warning`, `center`, `error` (neutral visible message
55
64
  rendered in place of `canvas` when the optional `chart.js` peer dependency fails to load; the
56
65
  failure transition is announced through the shared document-level light-DOM assertive sink — see
57
66
  `llms/components/lr-chart.md`).
58
67
 
59
68
  **Themeable custom properties:** `--lr-chart-height`, `--lr-chart-grid-color`,
69
+ `--lr-chart-sync-crosshair-color`, `--lr-chart-sync-crosshair-width`,
60
70
  `--lr-chart-tick-color`, `--lr-chart-tick-font-size`, `--lr-chart-legend-color`, `--lr-chart-tooltip-bg`,
61
71
  `--lr-chart-tooltip-color`, `--lr-chart-legend-item-hover-bg`,
62
72
  `--lr-chart-legend-item-active-bg`, `--lr-chart-data-table-button-hover-bg`,
@@ -9,17 +9,21 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [charts](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/charts.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 18 parts, 19 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 20 parts, 23 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`
14
14
 
15
15
  ---
16
16
 
17
17
  ## `lr-lite-chart`
18
18
 
19
+ `syncGroup: string = ''` (attribute `sync-group`) opts into
20
+ [Synchronized categorical charts](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/charts.md#synchronized-categorical-charts). Its DOM `sync-crosshair` and
21
+ `sync-tooltip` parts use the shared crosshair and tooltip tokens described there.
22
+
19
23
  A dependency-free bar/line chart — plain SVG/DOM rendering, zero peer dependencies (unlike
20
24
  `lr-chart`, which wraps `chart.js`). For a project whose architecture forbids a charting
21
25
  dependency outright: covers grouped/stacked bars, multi-series lines, per-point click, and hover
22
- tooltips (native SVG `<title>`, no positioning JS) — not a full `lr-chart` replacement (no
26
+ tooltips (native SVG `<title>` by default, positioned text tooltips in a sync group) — not a full `lr-chart` replacement (no
23
27
  zoom/pan, no pie/doughnut/radar/scatter/bubble types, no horizontal/dual-y-axis, no raw-config
24
28
  passthrough). Not a subclass of `LyraChart`.
25
29
 
@@ -31,7 +35,7 @@ shape to express. A per-series stack-group id would also need the hand-rolled SV
31
35
  pass (linear/sqrt/log stack compression, `minBarHeight`) to track independent running offsets per
32
36
  group instead of one per category, which is a materially larger, higher-risk change than this
33
37
  component's existing single-stack model. `tooltipTitleFormatter`/`tooltipFooterFormatter` are
34
- similarly absent: this component's hover tooltip is a native SVG `<title>` on each mark — one
38
+ similarly absent: this component's default hover tooltip is a native SVG `<title>` on each mark — one
35
39
  self-contained string per mark, generated by `pointText` — not a Chart.js-style multi-item tooltip
36
40
  with separate title/body/footer regions for several datasets sharing a hovered category, so there
37
41
  is no "every item in the tooltip" surface to hook a title or footer formatter onto.
@@ -275,7 +279,9 @@ instead of materializing an unbounded hidden DOM or SVG tree.
275
279
  **Slots:** `data-table` — optional consumer-provided complete, paginated, or virtualized accessible
276
280
  data alternative.
277
281
 
278
- **CSS parts:** `base`, `description`, `grid-line`, `axis-label`, `axis-title`, `bar` and `point` (each carries
282
+ **CSS parts:** `base`, `description`, `grid-line`, `axis-label`, `axis-title`,
283
+ `sync-crosshair` (decorative synchronized category line), `sync-tooltip` (noninteractive positioned
284
+ text tooltip while `syncGroup` is active), `bar` and `point` (each carries
279
285
  `data-selected` when its category index is in `selectedIndices`, with explicit pressed state on every
280
286
  mark), `line`, `legend`, `legend-item`, `legend-swatch`, `legend-text` (extra per-item text after
281
287
  the series label, rendered only when `legendText` is set), `live-region` (the current mark
@@ -303,6 +309,10 @@ suppresses the generated sample and notice.
303
309
 
304
310
  **Themeable custom properties:** `--lr-chart-height` (same public host-level property and precedence
305
311
  as `lr-chart`; it always wins over the `height` property's private fallback);
312
+ `--lr-chart-sync-crosshair-color` (default `var(--lr-color-text)`) and
313
+ `--lr-chart-sync-crosshair-width` (default `var(--lr-border-width-thin)`) style the synchronized
314
+ category line; `--lr-chart-tooltip-bg` (default `var(--lr-color-surface)`) and
315
+ `--lr-chart-tooltip-color` (default `var(--lr-color-text)`) style the positioned synchronized tooltip;
306
316
  `--lr-chart-grid-color`, `--lr-chart-tick-color`, `--lr-chart-tick-font-size` (default
307
317
  `var(--lr-font-size-2xs)`), `--lr-chart-legend-color` — same token
308
318
  *names* as `lr-chart`, so a host already theming `lr-chart` themes this for free;
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [forms](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/forms.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 15 parts, 25 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 17 parts, 25 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`
14
14
 
15
15
  ---
@@ -20,8 +20,8 @@ A closed-list locale switcher over the library's own locale registry. First-part
20
20
  Web Awesome equivalent). With `locales` unset (the default), the offered rows are exactly
21
21
  `getRegisteredLyraLocales()` — every locale with strings registered via `registerLyraLocale()`,
22
22
  plus `en` — kept live via `subscribeLyraLocaleRegistry()`. Built directly on `lr-select`'s
23
- trigger-button/`aria-activedescendant` listbox technique, not composed from it — a plain closed
24
- list, no filter/free-text mode.
23
+ trigger-button/`aria-activedescendant` listbox technique, not composed from it. Optional
24
+ `searchable` adds a text filter; free text never becomes a locale selection.
25
25
 
26
26
  Host `aria-describedby` references resolve onto the role=combobox trigger before its local error and
27
27
  hint guidance. The relationship tracks missing IDs, target replacement, removal/reinsertion,
@@ -52,6 +52,18 @@ readonly LyraLocaleEntry[]`, `LyraLocaleEntry { tag: string; label?: string; cou
52
52
  the catalog while the listbox is open keeps keyboard navigation valid: an active row beyond the
53
53
  new end is rehomed to the last remaining row. Arrow/Home/End/typeahead changes scroll the active
54
54
  owned option into nearest view after render; replacement and disconnect cancel stale scrolls.
55
+ - `searchable: boolean = false` — add a search field inside the open menu. Substring matching
56
+ ignores case and accents across language tags, native names, localized names and caller labels;
57
+ for example, `eng` finds English. Filtering emits no selection events and does not invoke a
58
+ locale loader. Arrow keys and Enter select an offered match; ordinary text editing and IME
59
+ composition remain native. Empty results show localized guidance. Closing, disabling, resetting,
60
+ reconnecting or turning search off clears unfinished filtering. The default keeps the existing
61
+ compact list without an input.
62
+ - `autocomplete: string = 'off'`, `inputMode: string = ''` (attribute `inputmode`),
63
+ `enterKeyHint: string = ''` (attribute `enterkeyhint`), `spellcheck: boolean = false`,
64
+ `autocapitalize: string = ''`, `autocorrect: boolean = true` — native guidance for the filter.
65
+ The readonly `input: HTMLInputElement | null` exposes it in searchable mode. After directly
66
+ editing `input.value`, dispatch a native `input` event to update the matches.
55
67
  - `topLayer: boolean = false` (attribute `top-layer`, reflected) — same contract as `<lr-popover>`:
56
68
  always shows the open listbox in the browser top layer, placed `fixed` whatever the positioning
57
69
  strategy resolves to, so it paints above a sibling surface stacked higher than a `z-index`ed fixed
@@ -177,7 +189,9 @@ visually hidden in flag-only mode), `listbox`, `option`, `option-flag` (present
177
189
  `optionDisplay` is `label-tag`, and absent from the DOM entirely under `optionDisplay="label"`),
178
190
  `expand-icon`,
179
191
  `hint`, `error`, `load-status` (the optional localized loading or failure message), and
180
- `load-retry` (the retry button shown after a locale load fails).
192
+ `load-retry` (the retry button shown after a locale load fails), `search-input` (the opt-in
193
+ filter) and `empty` (the no-match message). Search uses the localized `localePickerSearchLabel`
194
+ and `localePickerEmpty` string keys.
181
195
 
182
196
  **The required marker.** `required` with a non-empty `label` paints the library's shared marker on
183
197
  `[part="form-control-label"]` — the one `::after` rule described under "The required-field marker"
@@ -9,6 +9,6 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [charts](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/charts.md)
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 `lr-line-chart.md`
12
+ - **Themeable via** 17 parts, 39 custom properties — see `lr-line-chart.md`
13
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`
@@ -9,6 +9,6 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [charts](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/charts.md)
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 `lr-line-chart.md`
12
+ - **Themeable via** 17 parts, 39 custom properties — see `lr-line-chart.md`
13
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`
@@ -9,6 +9,6 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [charts](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/charts.md)
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 `lr-line-chart.md`
12
+ - **Themeable via** 17 parts, 39 custom properties — see `lr-line-chart.md`
13
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`
@@ -126,6 +126,11 @@ row content for the repeated move-action names.
126
126
  effective owner state. Corresponding custom states include `:state(at-start)`, `:state(at-end)`,
127
127
  `:state(list-disabled)`, `:state(pending)`, and `:state(busy)`.
128
128
 
129
+ Each move control also carries its localized `moveUp` or `moveDown` action as an `aria-label`
130
+ fallback. The reflected `ariaLabelledByElements` relationship retains the full action and row name
131
+ and takes precedence in supporting browsers. Automation tools that omit reflected element references
132
+ may report only the action fallback; repeated actions can be located within their owning row.
133
+
129
134
  **Events:** `lr-move-request` (`detail: { direction: 'up' | 'down' }` — a move button was activated
130
135
  while not disabled; handled by the parent `<lr-reorder-list>`, which performs the actual move)
131
136
 
@@ -9,6 +9,6 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [charts](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/charts.md)
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 `lr-line-chart.md`
12
+ - **Themeable via** 17 parts, 39 custom properties — see `lr-line-chart.md`
13
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`
@@ -32,6 +32,29 @@ Session-history/autofill restoration assigns the stored string through the same
32
32
  value/form/validity path as a programmatic value write and does not emit `input`, `change`, or
33
33
  `lr-change`.
34
34
 
35
+ **Selecting options in browser tests.** The light-DOM `<lr-option>` children supply option data;
36
+ the clickable rows are rendered inside `<lr-select>`'s shadow-root listbox as
37
+ `[part="option"][role="option"]`, each with a `data-value` matching its represented value.
38
+ Click the trigger to open the listbox, then target a rendered row. For example, in Playwright:
39
+
40
+ ```ts
41
+ const select = page.locator('lr-select[name="country"]');
42
+ await select.getByRole('combobox').click();
43
+ await select.getByRole('option', { name: 'France' }).click();
44
+ // When the label is localized or otherwise variable, target its value instead:
45
+ await select.getByRole('combobox').click();
46
+ await select.locator('[part="option"][data-value="fr"]').click();
47
+ ```
48
+
49
+ For an in-page component test with a `LyraSelect` element, the public
50
+ `@aceshooting/lyra-ui/testing` `chooseOption(selectElement, 'fr')` driver opens the listbox,
51
+ clicks its first rendered row with that value, and awaits the component update. It also works in
52
+ DOM test environments without Playwright; see [interaction drivers](shared/testing-and-utilities.md#driving-a-components-real-activation-path-interaction-drivers).
53
+
54
+ Playwright's locators enter the open shadow root. A light-DOM `lr-option[value="fr"]` has no
55
+ clickable box in this picker. If multiple options share a value, `data-value` matches every
56
+ occurrence; narrow by accessible name or assert their order before choosing an occurrence.
57
+
35
58
  Mounted `option.selected` assignments update the picker value and form submission immediately,
36
59
  including deselection and equal-value writes. Duplicate-valued options retain their individual
37
60
  occurrence identities. These programmatic writes emit no user input/change event.
@@ -236,6 +259,12 @@ renders the same localized `loading` text in place of `placeholder`, so a consum
236
259
  hand-write a conditional placeholder bound to the same flag and re-localize, in its own catalogue,
237
260
  the string this control already owns.
238
261
 
262
+ When not loading, before the browser first reads the option slot, including during SSR, a committed
263
+ value renders as its raw code without an unavailable badge, synthetic unknown option, or custom unknown label.
264
+ After hydration observes the slot, real option labels and genuine unmatched-value feedback resolve
265
+ normally; an observed empty slot is an empty catalog. Server rendering does not inspect browser
266
+ slot assignments or provide an interactive popup without JavaScript.
267
+
239
268
  **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the internal trigger button.
240
269
  `show()` and `hide()` return `Promise<void>` and resolve after `lr-after-show`/`lr-after-hide` once
241
270
  the matching transition settles. `getForm()` returns the browser-resolved form owner, including an
@@ -0,0 +1,56 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/forms.md — do not edit this file. -->
2
+
3
+ # `lr-time-zone-picker`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/lr-time-zone-picker.js';` (stable tag alias; registers the tag)
6
+ - **Class** `LyraTimeZonePicker`, also available unregistered from `@aceshooting/lyra-ui/components/forms/time-zone-picker/time-zone-picker.class.js`
7
+ - **Family** `components/forms/` — see `llms/index.md` for its siblings
8
+ - **Status** `experimental` since `25.5.0` — see the maturity and deprecation policy in `llms/shared.md`
9
+ - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [forms](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/forms.md)
10
+ - **Deprecations** none
11
+ - **Optional peers** none
12
+ - **Themeable via** 11 parts, 0 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
+
15
+ ---
16
+
17
+ ## `lr-time-zone-picker`
18
+
19
+ A form-associated identifier selector. Import
20
+ `@aceshooting/lyra-ui/components/lr-time-zone-picker.js`. It follows the
21
+ [shared field contract](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/components/lr-country-picker.md),
22
+ with `.timeZones` accepting
23
+ `LyraTimeZoneCatalog = readonly string[] | readonly LyraTimeZoneEntry[]`.
24
+ Default options are `UTC` followed by the runtime's supported primary IANA identifiers, or only
25
+ `UTC` when that catalog API is unavailable. Supply the same explicit catalog on server and client
26
+ when their time-zone data may differ. `value=''` selects nothing automatically.
27
+
28
+ Identifiers are trimmed and case-sensitive, limited to 256 characters, and never canonicalized.
29
+ Caller catalogs can retain aliases or custom identifiers. Default labels replace underscores
30
+ with spaces; `label` overrides provide other display names, and `searchable` matches both.
31
+ Selection does not change the application's time zone or calculate offsets, clocks or daylight
32
+ saving transitions. Catalog types and `getTimeZoneCodes()` are documented in the
33
+ [catalog helper reference](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/forms.md#country-time-zone-and-unit-catalog-helpers).
34
+
35
+ **Field API:** `label`, `hint`, `errorText` (`error-text`), `placeholder`, `accessibleLabel`
36
+ (`aria-label`), `name`, `form`, `value`, `defaultValue`, `required`, `disabled`, `customError`
37
+ (`custom-error`), `size`, `clearable`, `searchable`, `topLayer` (`top-layer`),
38
+ `positioningStrategy` (`positioning-strategy`), `autocomplete`, `inputMode` (`inputmode`),
39
+ `enterKeyHint` (`enterkeyhint`), `spellcheck`, `autocapitalize`, `autocorrect`, and readonly `input`.
40
+ Defaults and form/editing methods follow the
41
+ [shared contract](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/components/lr-country-picker.md), including
42
+ `getForm()`, `checkValidity()`, `reportValidity()`, `setCustomValidity(message)` and
43
+ `resetValidity()` for the owning form and consumer validation messages.
44
+
45
+ **Events:** `input`, `lr-input`, `change`, `lr-change`, `focus`, `blur`, `lr-invalid`.
46
+ **Slots:** `label`, `hint`, `error`.
47
+ **CSS parts:** `form-control`, `form-control-label`, `hint`, `error`, `select-trigger`,
48
+ `select-display-input`, `select-listbox`, `select-option`, `select-option-sub`, `select-group-label`,
49
+ `select-clear-button`.
50
+
51
+ ```html
52
+ <script type="module">
53
+ import '@aceshooting/lyra-ui/components/lr-time-zone-picker.js';
54
+ </script>
55
+ <lr-time-zone-picker name="zone" label="Time zone" value="UTC" searchable></lr-time-zone-picker>
56
+ ```
@@ -0,0 +1,54 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/forms.md — do not edit this file. -->
2
+
3
+ # `lr-unit-picker`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/lr-unit-picker.js';` (stable tag alias; registers the tag)
6
+ - **Class** `LyraUnitPicker`, also available unregistered from `@aceshooting/lyra-ui/components/forms/unit-picker/unit-picker.class.js`
7
+ - **Family** `components/forms/` — see `llms/index.md` for its siblings
8
+ - **Status** `experimental` since `25.5.0` — see the maturity and deprecation policy in `llms/shared.md`
9
+ - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [forms](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/forms.md)
10
+ - **Deprecations** none
11
+ - **Optional peers** none
12
+ - **Themeable via** 11 parts, 0 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
+
15
+ ---
16
+
17
+ ## `lr-unit-picker`
18
+
19
+ A form-associated measurement-unit selector. Import
20
+ `@aceshooting/lyra-ui/components/lr-unit-picker.js`. It follows the
21
+ [shared field contract](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/components/lr-country-picker.md),
22
+ with `.units` accepting
23
+ `LyraUnitCatalog = readonly string[] | readonly LyraUnitEntry[]`.
24
+ The default catalog contains the 45 standard ECMA-402 simple units. `value=''` selects nothing;
25
+ identifiers are trimmed and case-sensitive, limited to 256 characters. Caller catalogs may include
26
+ custom or compound units. `Intl.NumberFormat` resolves localized singular names and short symbols;
27
+ unsupported identifiers fall back to their code. Literal `label` and `symbol` overrides, including
28
+ empty strings, take precedence. `searchable` matches identifiers, localized/literal names and
29
+ symbols. Selection edits no amount and performs no unit conversion. Catalog types and name
30
+ resolution are documented in the
31
+ [catalog helper reference](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/forms.md#country-time-zone-and-unit-catalog-helpers).
32
+
33
+ **Field API:** `label`, `hint`, `errorText` (`error-text`), `placeholder`, `accessibleLabel`
34
+ (`aria-label`), `name`, `form`, `value`, `defaultValue`, `required`, `disabled`, `customError`
35
+ (`custom-error`), `size`, `clearable`, `searchable`, `topLayer` (`top-layer`),
36
+ `positioningStrategy` (`positioning-strategy`), `autocomplete`, `inputMode` (`inputmode`),
37
+ `enterKeyHint` (`enterkeyhint`), `spellcheck`, `autocapitalize`, `autocorrect`, and readonly `input`.
38
+ Defaults and form/editing methods follow the
39
+ [shared contract](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/components/lr-country-picker.md), including
40
+ `getForm()`, `checkValidity()`, `reportValidity()`, `setCustomValidity(message)` and
41
+ `resetValidity()` for the owning form and consumer validation messages.
42
+
43
+ **Events:** `input`, `lr-input`, `change`, `lr-change`, `focus`, `blur`, `lr-invalid`.
44
+ **Slots:** `label`, `hint`, `error`.
45
+ **CSS parts:** `form-control`, `form-control-label`, `hint`, `error`, `select-trigger`,
46
+ `select-display-input`, `select-listbox`, `select-option`, `select-option-sub`, `select-group-label`,
47
+ `select-clear-button`.
48
+
49
+ ```html
50
+ <script type="module">
51
+ import '@aceshooting/lyra-ui/components/lr-unit-picker.js';
52
+ </script>
53
+ <lr-unit-picker name="unit" label="Measurement unit" value="meter" searchable></lr-unit-picker>
54
+ ```
package/llms/index.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Component index
4
4
 
5
- 303 custom elements, grouped by the source family they live in.
5
+ 307 custom elements, grouped by the source family they live in.
6
6
 
7
7
  **Reading one component.** Its reference file path is derived from the tag — no search needed:
8
8
  `llms/components/<tag>.md` (e.g. `llms/components/lr-table.md`): import path, optional peers,
@@ -30,7 +30,7 @@ and testing and utilities (`llms/shared/testing-and-utilities.md`). The combined
30
30
  compatibility guide remains at `llms/shared.md`. Design tokens: `llms/tokens.md`.
31
31
  Optional peers: `llms/peers.md`. Safe `wa-*`/`sl-*` migration: `llms/migration.md`.
32
32
 
33
- ## Form controls & inputs — `components/forms/` (31)
33
+ ## Form controls & inputs — `components/forms/` (35)
34
34
 
35
35
  - `lr-combobox` · lr-combobox.js · `stable` since `4.0.0` — a filterable single/multi select that combines a text input with a listbox.
36
36
  - `lr-option` · lr-option.js · `stable` since `4.0.0` — a selectable option for `<lr-combobox>` and `<lr-select>`.
@@ -63,6 +63,10 @@ Optional peers: `llms/peers.md`. Safe `wa-*`/`sl-*` migration: `llms/migration.m
63
63
  - `lr-locale-picker` · lr-locale-picker.js · `stable` since `6.0.0` — a closed-list locale switcher over the library's own locale registry.
64
64
  - `lr-toggle` · lr-toggle.js · `experimental` since `21.0.0` — a two-state button that owns its `pressed` state.
65
65
  - `lr-toggle-group` · lr-toggle-group.js · `experimental` since `21.0.0` — a set of `<lr-toggle>` children behind one tab stop.
66
+ - `lr-currency-picker` · lr-currency-picker.js · `experimental` since `25.5.0` — a form-associated currency-code selector.
67
+ - `lr-country-picker` · lr-country-picker.js · `experimental` since `25.5.0` — a form-associated country and territory selector.
68
+ - `lr-time-zone-picker` · lr-time-zone-picker.js · `experimental` since `25.5.0` — a form-associated time-zone identifier selector.
69
+ - `lr-unit-picker` · lr-unit-picker.js · `experimental` since `25.5.0` — a form-associated measurement-unit identifier selector.
66
70
 
67
71
  ## Data display, dashboards & flow canvas — `components/data/` (26)
68
72
 
package/llms/peers.md CHANGED
@@ -52,14 +52,14 @@ for the page.
52
52
  | `emoji-picker-element-data` | `^1.8.0` | `lr-emoji-picker` |
53
53
  | `epubjs` | `^0.3.93` | `lr-ebook-viewer` |
54
54
  | `ical.js` | `^2.2.1` | `lr-calendar-viewer` |
55
- | `katex` | `^0.18.4` | `lr-agent-workspace`, `lr-dashboard-grid`, `lr-eval-run`, `lr-markdown`, `lr-markdown-core`, `lr-message-parts`, `lr-notebook-viewer`, `lr-rag-answer`, `lr-streaming-text`, `lr-streaming-text-core`, `lr-widget-renderer` |
55
+ | `katex` | `^0.18.4 \|\| ^0.19.0` | `lr-agent-workspace`, `lr-dashboard-grid`, `lr-eval-run`, `lr-markdown`, `lr-markdown-core`, `lr-message-parts`, `lr-notebook-viewer`, `lr-rag-answer`, `lr-streaming-text`, `lr-streaming-text-core`, `lr-widget-renderer` |
56
56
  | `libphonenumber-js` | `>=1.11.0 <2` | _(not referenced by any component)_ |
57
57
  | `mammoth` | `^1.12.1` | `lr-docx-viewer` |
58
58
  | `maplibre-gl` | `>=5 <7` | `lr-geojson-viewer`, `lr-map` |
59
59
  | `marked` | `^18.0.11` | `lr-agent-workspace`, `lr-dashboard-grid`, `lr-eval-run`, `lr-markdown`, `lr-markdown-core`, `lr-message-parts`, `lr-notebook-viewer`, `lr-rag-answer`, `lr-streaming-text`, `lr-streaming-text-core`, `lr-widget-renderer` |
60
60
  | `papaparse` | `^5.7.0` | `lr-csv-viewer`, `lr-dataset-viewer` |
61
61
  | `pdfjs-dist` | `^6.3.289` | `lr-pdf-viewer` |
62
- | `postal-mime` | `^3.0.1 || ^4.0.0` | `lr-email-viewer` |
62
+ | `postal-mime` | `^3.0.1 \|\| ^4.0.0` | `lr-email-viewer` |
63
63
  | `qrcode` | `^1.5.4` | `lr-qr-code` |
64
64
  | `react` | `>=19 <20` | type-only `@aceshooting/lyra-ui/custom-elements-jsx` entry (no runtime import) |
65
65
  | `shiki` | `^4.4.3` | `lr-agent-workspace`, `lr-change-review`, `lr-code-block`, `lr-code-block-core`, `lr-dashboard-grid`, `lr-diff-view`, `lr-document-compare`, `lr-eval-result`, `lr-eval-run`, `lr-markdown`, `lr-markdown-core`, `lr-message-parts`, `lr-notebook-viewer`, `lr-rag-answer`, `lr-streaming-text`, `lr-streaming-text-core`, `lr-widget-renderer` |
@@ -584,7 +584,9 @@ These named interfaces and helper signatures are available to typed integrations
584
584
  'lr-control-group': LyraControlGroupReactProps;
585
585
  'lr-conversation-item': LyraConversationItemReactProps;
586
586
  'lr-copy-button': LyraCopyButtonReactProps;
587
+ 'lr-country-picker': LyraCountryPickerReactProps;
587
588
  'lr-csv-viewer': LyraCsvViewerReactProps;
589
+ 'lr-currency-picker': LyraCurrencyPickerReactProps;
588
590
  'lr-dashboard-grid': LyraDashboardGridReactProps;
589
591
  'lr-data-grid': LyraDataGridReactProps;
590
592
  'lr-dataset-viewer': LyraDatasetViewerReactProps;
@@ -781,6 +783,7 @@ These named interfaces and helper signatures are available to typed integrations
781
783
  'lr-thread-list': LyraThreadListReactProps;
782
784
  'lr-time-input': LyraTimeInputReactProps;
783
785
  'lr-time-range': LyraTimeRangeReactProps;
786
+ 'lr-time-zone-picker': LyraTimeZonePickerReactProps;
784
787
  'lr-timeline': LyraTimelineReactProps;
785
788
  'lr-timeline-item': LyraTimelineItemReactProps;
786
789
  'lr-toast': LyraToastReactProps;
@@ -803,6 +806,7 @@ These named interfaces and helper signatures are available to typed integrations
803
806
  'lr-tree': LyraTreeReactProps;
804
807
  'lr-tree-item': LyraTreeItemReactProps;
805
808
  'lr-typing-indicator': LyraTypingIndicatorReactProps;
809
+ 'lr-unit-picker': LyraUnitPickerReactProps;
806
810
  'lr-usage-badge': LyraUsageBadgeReactProps;
807
811
  'lr-video': LyraVideoReactProps;
808
812
  'lr-video-playlist': LyraVideoPlaylistReactProps;
@@ -1012,7 +1016,9 @@ These named interfaces and helper signatures are available to typed integrations
1012
1016
  'lr-control-group': LyraComponentTypeMap['lr-control-group']['element'];
1013
1017
  'lr-conversation-item': LyraComponentTypeMap['lr-conversation-item']['element'];
1014
1018
  'lr-copy-button': LyraComponentTypeMap['lr-copy-button']['element'];
1019
+ 'lr-country-picker': LyraComponentTypeMap['lr-country-picker']['element'];
1015
1020
  'lr-csv-viewer': LyraComponentTypeMap['lr-csv-viewer']['element'];
1021
+ 'lr-currency-picker': LyraComponentTypeMap['lr-currency-picker']['element'];
1016
1022
  'lr-dashboard-grid': LyraComponentTypeMap['lr-dashboard-grid']['element'];
1017
1023
  'lr-data-grid': LyraComponentTypeMap['lr-data-grid']['element'];
1018
1024
  'lr-dataset-viewer': LyraComponentTypeMap['lr-dataset-viewer']['element'];
@@ -1209,6 +1215,7 @@ These named interfaces and helper signatures are available to typed integrations
1209
1215
  'lr-thread-list': LyraComponentTypeMap['lr-thread-list']['element'];
1210
1216
  'lr-time-input': LyraComponentTypeMap['lr-time-input']['element'];
1211
1217
  'lr-time-range': LyraComponentTypeMap['lr-time-range']['element'];
1218
+ 'lr-time-zone-picker': LyraComponentTypeMap['lr-time-zone-picker']['element'];
1212
1219
  'lr-timeline': LyraComponentTypeMap['lr-timeline']['element'];
1213
1220
  'lr-timeline-item': LyraComponentTypeMap['lr-timeline-item']['element'];
1214
1221
  'lr-toast': LyraComponentTypeMap['lr-toast']['element'];
@@ -1231,6 +1238,7 @@ These named interfaces and helper signatures are available to typed integrations
1231
1238
  'lr-tree': LyraComponentTypeMap['lr-tree']['element'];
1232
1239
  'lr-tree-item': LyraComponentTypeMap['lr-tree-item']['element'];
1233
1240
  'lr-typing-indicator': LyraComponentTypeMap['lr-typing-indicator']['element'];
1241
+ 'lr-unit-picker': LyraComponentTypeMap['lr-unit-picker']['element'];
1234
1242
  'lr-usage-badge': LyraComponentTypeMap['lr-usage-badge']['element'];
1235
1243
  'lr-video': LyraComponentTypeMap['lr-video']['element'];
1236
1244
  'lr-video-playlist': LyraComponentTypeMap['lr-video-playlist']['element'];
@@ -1317,7 +1325,9 @@ These named interfaces and helper signatures are available to typed integrations
1317
1325
  'lr-control-group': LyraControlGroupSvelteProps;
1318
1326
  'lr-conversation-item': LyraConversationItemSvelteProps;
1319
1327
  'lr-copy-button': LyraCopyButtonSvelteProps;
1328
+ 'lr-country-picker': LyraCountryPickerSvelteProps;
1320
1329
  'lr-csv-viewer': LyraCsvViewerSvelteProps;
1330
+ 'lr-currency-picker': LyraCurrencyPickerSvelteProps;
1321
1331
  'lr-dashboard-grid': LyraDashboardGridSvelteProps;
1322
1332
  'lr-data-grid': LyraDataGridSvelteProps;
1323
1333
  'lr-dataset-viewer': LyraDatasetViewerSvelteProps;
@@ -1514,6 +1524,7 @@ These named interfaces and helper signatures are available to typed integrations
1514
1524
  'lr-thread-list': LyraThreadListSvelteProps;
1515
1525
  'lr-time-input': LyraTimeInputSvelteProps;
1516
1526
  'lr-time-range': LyraTimeRangeSvelteProps;
1527
+ 'lr-time-zone-picker': LyraTimeZonePickerSvelteProps;
1517
1528
  'lr-timeline': LyraTimelineSvelteProps;
1518
1529
  'lr-timeline-item': LyraTimelineItemSvelteProps;
1519
1530
  'lr-toast': LyraToastSvelteProps;
@@ -1536,6 +1547,7 @@ These named interfaces and helper signatures are available to typed integrations
1536
1547
  'lr-tree': LyraTreeSvelteProps;
1537
1548
  'lr-tree-item': LyraTreeItemSvelteProps;
1538
1549
  'lr-typing-indicator': LyraTypingIndicatorSvelteProps;
1550
+ 'lr-unit-picker': LyraUnitPickerSvelteProps;
1539
1551
  'lr-usage-badge': LyraUsageBadgeSvelteProps;
1540
1552
  'lr-video': LyraVideoSvelteProps;
1541
1553
  'lr-video-playlist': LyraVideoPlaylistSvelteProps;
@@ -1734,7 +1746,9 @@ These named interfaces and helper signatures are available to typed integrations
1734
1746
  'lr-control-group': LyraControlGroupVueProps;
1735
1747
  'lr-conversation-item': LyraConversationItemVueProps;
1736
1748
  'lr-copy-button': LyraCopyButtonVueProps;
1749
+ 'lr-country-picker': LyraCountryPickerVueProps;
1737
1750
  'lr-csv-viewer': LyraCsvViewerVueProps;
1751
+ 'lr-currency-picker': LyraCurrencyPickerVueProps;
1738
1752
  'lr-dashboard-grid': LyraDashboardGridVueProps;
1739
1753
  'lr-data-grid': LyraDataGridVueProps;
1740
1754
  'lr-dataset-viewer': LyraDatasetViewerVueProps;
@@ -1931,6 +1945,7 @@ These named interfaces and helper signatures are available to typed integrations
1931
1945
  'lr-thread-list': LyraThreadListVueProps;
1932
1946
  'lr-time-input': LyraTimeInputVueProps;
1933
1947
  'lr-time-range': LyraTimeRangeVueProps;
1948
+ 'lr-time-zone-picker': LyraTimeZonePickerVueProps;
1934
1949
  'lr-timeline': LyraTimelineVueProps;
1935
1950
  'lr-timeline-item': LyraTimelineItemVueProps;
1936
1951
  'lr-toast': LyraToastVueProps;
@@ -1953,6 +1968,7 @@ These named interfaces and helper signatures are available to typed integrations
1953
1968
  'lr-tree': LyraTreeVueProps;
1954
1969
  'lr-tree-item': LyraTreeItemVueProps;
1955
1970
  'lr-typing-indicator': LyraTypingIndicatorVueProps;
1971
+ 'lr-unit-picker': LyraUnitPickerVueProps;
1956
1972
  'lr-usage-badge': LyraUsageBadgeVueProps;
1957
1973
  'lr-video': LyraVideoVueProps;
1958
1974
  'lr-video-playlist': LyraVideoPlaylistVueProps;
@@ -157,7 +157,7 @@ The entry points, then:
157
157
  but it is not an exhaustive promise that every component-owned type or future export is present.
158
158
  Prefer the owning component entry in application code, both for the smallest bundle and the
159
159
  complete contract of that component.
160
- - **`all.js` compatibility entry.** `import '@aceshooting/lyra-ui/all.js';` registers the 288
160
+ - **`all.js` compatibility entry.** `import '@aceshooting/lyra-ui/all.js';` registers the 292
161
161
  root-included tags — everything **except** the 15 inventory-designated optional-peer-family tags:
162
162
  `lr-chart` and its 8 typed subclasses (`lr-line-chart`, `lr-bar-chart`, `lr-pie-chart`,
163
163
  `lr-doughnut-chart`, `lr-radar-chart`, `lr-polar-area-chart`, `lr-bubble-chart`,
@@ -1135,12 +1135,18 @@ The public `--lr-theme-surface-opacity` input accepts 0 through 1. Lower opacity
1135
1135
  of the backdrop; the default foreground qualification covers 70%, while a custom lower setting
1136
1136
  cannot guarantee contrast against every backdrop. Solid and accessibility preferences retain
1137
1137
  opaque fills regardless of this input.
1138
- Quiet text, necessary control edges, focus indicators and transparent actions gain a local
1138
+ Necessary control borders use the effective painted opacity: their glass adjustment grows as
1139
+ transparency increases and disappears at 100% opacity. Ordinary and strong borders share this
1140
+ adjustment; decorative borders and explicit component border overrides keep their own tokens.
1141
+ Quiet text, focus indicators and transparent actions retain their separate local
1139
1142
  contrast-qualified foreground; opaque accent fills retain their own on-colours. Supported chrome
1140
1143
  includes app rails, navigation menus, menubars, menus and their context-menu composition, popovers,
1141
1144
  selection toolbars, toast items and the owned playback-rate toolbar of `lr-av-player`. Nested glass
1142
1145
  chrome is opaque, preventing repeated blur. Independently promoted menus and modal panels start a
1143
- new material root. Content cards and editing fields remain opaque.
1146
+ new material root. Surface-colored outlined card and disclosure interiors let nested Lyra
1147
+ controls use their solid border colors while preserving the enclosing edge against glass.
1148
+ Filled accent interiors retain qualification. Native descendants retain inherited public color
1149
+ aliases. Custom translucent content fills require the author to choose suitable control borders.
1144
1150
  A design panel can offer a Glass opacity range from 0–100%, shown when the selected surface is
1145
1151
  Glass. Start and reset it at 70%; convert the displayed percentage to the public token's 0–1 range.
1146
1152
  Apply this CSS input independently of look overrides: `setLyraStyle()` does not accept surface
@@ -397,6 +397,8 @@ arrowPadding?: number; hoverBridge?: HTMLElement; onPlaced?: (result: PlacementR
397
397
  `validationMessage`, and `willValidate`; `setFormValue(next)`; `getForm()`; `checkValidity()`;
398
398
  `reportValidity()`; `setCustomValidity(message)`; `resetValidity()`; `formResetCallback()`; and
399
399
  `formStateRestoreCallback(state, reason)`.
400
+ Writing `null` to `defaultValue` removes its markup value and resets the default to the adapter's
401
+ empty value; reading it still returns `TValue`. This does not overwrite a dirty live value.
400
402
  The exact callable signatures are `attachInternalsSafely(host: HTMLElement): ElementInternals`,
401
403
  `createFallbackInternals(): ElementInternals`, `createStringArrayFormDataState(name: string,
402
404
  values: readonly string[]): FormData`, `readStringArrayFormDataState(state: string | File |
@@ -409,7 +411,8 @@ toFormValue(value: TValue): FormSubmissionValue; toFormState?(value: TValue):
409
411
  FormSubmissionValue; isEmpty?(value: TValue): boolean; fromAttribute?(attribute: string): TValue;
410
412
  toAttribute?(value: TValue): string | null; fromFormState?(state: FormSubmissionValue): TValue }`
411
413
  and `FormAssociatedInterface<TValue> { internals: ElementInternals; get name(): string; set
412
- name(next: string | null); value: TValue; defaultValue: TValue; customError: string | null;
414
+ name(next: string | null); value: TValue; get defaultValue(): TValue;
415
+ set defaultValue(next: TValue | null); customError: string | null;
413
416
  disabled: boolean; required: boolean; readonly effectiveDisabled: boolean; get form():
414
417
  HTMLFormElement | null; set form(owner: FormOwnerValue); readonly labels: NodeList; readonly
415
418
  validity: ValidityState; readonly validationMessage: string; readonly willValidate: boolean;