@aceshooting/lyra-ui 24.1.0 → 25.0.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 (206) hide show
  1. package/CHANGELOG.md +29 -20
  2. package/README.md +24 -28
  3. package/custom-elements.json +1 -1
  4. package/design-tokens.json +1 -1
  5. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +1 -1
  6. package/dist/components/agent-tools/task-list/task-list.styles.js +1 -1
  7. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +1 -1
  8. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  9. package/dist/components/conversation/code-block/code-block.styles.js +1 -1
  10. package/dist/components/conversation/markdown/markdown.styles.js +1 -1
  11. package/dist/components/conversation/model-select/model-select.class.js +2 -1
  12. package/dist/components/conversation/model-select/model-select.styles.js +1 -1
  13. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -1
  14. package/dist/components/conversation/voice-picker/voice-picker.class.js +2 -1
  15. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  16. package/dist/components/data/document-library/document-library.class.js +1 -1
  17. package/dist/components/data/table/table.class.d.ts +14 -3
  18. package/dist/components/data/table/table.class.js +8 -6
  19. package/dist/components/data/table/table.styles.js +1 -1
  20. package/dist/components/forms/color-picker/color-picker.class.js +2 -1
  21. package/dist/components/forms/color-picker/color-picker.styles.js +1 -1
  22. package/dist/components/forms/combobox/combobox.class.js +2 -1
  23. package/dist/components/forms/combobox/combobox.styles.js +1 -1
  24. package/dist/components/forms/date-picker/date-input.class.d.ts +3 -0
  25. package/dist/components/forms/date-picker/date-input.class.js +2 -1
  26. package/dist/components/forms/date-picker/date-input.styles.js +1 -1
  27. package/dist/components/forms/input/time-input.class.js +2 -1
  28. package/dist/components/forms/input/time-input.styles.js +1 -1
  29. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +2 -1
  30. package/dist/components/forms/locale-picker/locale-picker.class.js +2 -1
  31. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  32. package/dist/components/forms/otp-input/otp-input.class.js +1 -1
  33. package/dist/components/forms/select/select.class.js +2 -1
  34. package/dist/components/forms/select/select.styles.js +1 -1
  35. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +6 -1
  36. package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
  37. package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
  38. package/dist/components/layout/menu/menu.styles.js +1 -1
  39. package/dist/components/layout/menubar/menubar.styles.js +1 -1
  40. package/dist/components/layout/navigation-menu-item/navigation-menu-item.class.js +2 -2
  41. package/dist/components/layout/navigation-menu-item/navigation-menu-item.styles.js +1 -1
  42. package/dist/components/layout/scroller/scroller.styles.js +1 -1
  43. package/dist/components/media/av-player/av-player.styles.js +1 -1
  44. package/dist/components/media/image-viewer/image-viewer.styles.js +1 -1
  45. package/dist/components/media/map/map.class.d.ts +5 -2
  46. package/dist/components/media/map/map.class.js +4 -3
  47. package/dist/components/media/map/map.styles.js +1 -1
  48. package/dist/components/overlays/dialog/dialog.class.d.ts +1 -1
  49. package/dist/components/overlays/dialog/dialog.class.js +2 -1
  50. package/dist/components/overlays/dialog/dialog.styles.js +1 -1
  51. package/dist/components/overlays/overlay/overlay.styles.d.ts +1 -1
  52. package/dist/components/overlays/overlay/overlay.styles.js +1 -1
  53. package/dist/components/overlays/overlay/popover-glass.styles.d.ts +1 -0
  54. package/dist/components/overlays/overlay/popover-glass.styles.js +1 -0
  55. package/dist/components/overlays/overlay/popover.class.d.ts +11 -3
  56. package/dist/components/overlays/overlay/popover.class.js +1 -1
  57. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +1 -1
  58. package/dist/components/retrieval/source-list/source-list.styles.js +1 -1
  59. package/dist/components/utility/export-button/export-button.class.d.ts +1 -1
  60. package/dist/components/utility/export-button/export-button.class.js +2 -1
  61. package/dist/components/utility/export-button/export-button.styles.js +1 -1
  62. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +1 -1
  63. package/dist/components/utility/mention-popover/mention-popover.class.js +2 -1
  64. package/dist/components/utility/mention-popover/mention-popover.styles.js +1 -1
  65. package/dist/components/viewers/document-compare/document-compare.styles.js +1 -1
  66. package/dist/components/viewers/document-preview/document-preview.class.js +1 -1
  67. package/dist/framework-types.d.ts +1 -1
  68. package/dist/internal/default-strings.generated.d.ts +1 -1
  69. package/dist/internal/default-strings.generated.js +1 -1
  70. package/dist/internal/glass-independent-root.styles.d.ts +2 -0
  71. package/dist/internal/glass-independent-root.styles.js +1 -0
  72. package/dist/internal/glass-scroll-layer.d.ts +1 -1
  73. package/dist/internal/glass-scroll-layer.js +1 -1
  74. package/dist/internal/glass-scroll-layer.styles.d.ts +2 -0
  75. package/dist/internal/glass-scroll-layer.styles.js +1 -0
  76. package/dist/internal/glass-surface.styles.d.ts +0 -2
  77. package/dist/internal/glass-surface.styles.js +1 -1
  78. package/dist/internal/localization-types.d.ts +1 -1
  79. package/dist/internal/localization.js +1 -1
  80. package/dist/internal/native-modal-carrier.js +2 -2
  81. package/dist/internal/package-metadata.d.ts +1 -1
  82. package/dist/internal/package-metadata.js +1 -1
  83. package/dist/internal/positioner.js +1 -1
  84. package/dist/internal/sizes.styles.js +1 -1
  85. package/dist/internal/specialist-tokens.styles.js +1 -1
  86. package/dist/internal/theme-token-types.d.ts +16 -0
  87. package/dist/internal/tokens/palette.styles.js +1 -1
  88. package/dist/internal/tokens.styles.js +1 -1
  89. package/dist/looks/material.css +1 -1
  90. package/dist/styles/design-tokens.css +1 -1
  91. package/dist/styles/tokens-root.css +1 -1
  92. package/dist/surfaces/glass.css +1 -1
  93. package/dist/theme/gemstones.d.ts +7 -0
  94. package/dist/theme/gemstones.js +1 -1
  95. package/dist/theme/looks/material.d.ts +1 -1
  96. package/dist/theme/looks/material.js +1 -1
  97. package/dist/theme/startup-resolution.d.ts +1 -0
  98. package/dist/theme/startup-resolution.js +1 -0
  99. package/dist/theme/style-ownership.js +1 -1
  100. package/dist/theme/theme-bootstrap.js +1 -1
  101. package/dist/theme/theme.d.ts +6 -21
  102. package/dist/theme/theme.js +1 -1
  103. package/dist/theme.css +1 -1
  104. package/dist/translations/am/data.js +1 -1
  105. package/dist/translations/ar/data.js +1 -1
  106. package/dist/translations/bho/data.js +1 -1
  107. package/dist/translations/bn/data.js +1 -1
  108. package/dist/translations/cs/data.js +1 -1
  109. package/dist/translations/da/data.js +1 -1
  110. package/dist/translations/de/data.js +1 -1
  111. package/dist/translations/el/data.js +1 -1
  112. package/dist/translations/es/data.js +1 -1
  113. package/dist/translations/fa/data.js +1 -1
  114. package/dist/translations/fa-AF/data.js +1 -1
  115. package/dist/translations/fi/data.js +1 -1
  116. package/dist/translations/fr/data.js +1 -1
  117. package/dist/translations/gu/data.js +1 -1
  118. package/dist/translations/ha/data.js +1 -1
  119. package/dist/translations/he/data.js +1 -1
  120. package/dist/translations/hi/data.js +1 -1
  121. package/dist/translations/hr/data.js +1 -1
  122. package/dist/translations/hu/data.js +1 -1
  123. package/dist/translations/id/data.js +1 -1
  124. package/dist/translations/ig/data.js +1 -1
  125. package/dist/translations/it/data.js +1 -1
  126. package/dist/translations/ja/data.js +1 -1
  127. package/dist/translations/jv/data.js +1 -1
  128. package/dist/translations/kk/data.js +1 -1
  129. package/dist/translations/kn/data.js +1 -1
  130. package/dist/translations/ko/data.js +1 -1
  131. package/dist/translations/ln/data.js +1 -1
  132. package/dist/translations/ml/data.js +1 -1
  133. package/dist/translations/mr/data.js +1 -1
  134. package/dist/translations/ms/data.js +1 -1
  135. package/dist/translations/my/data.js +1 -1
  136. package/dist/translations/nb/data.js +1 -1
  137. package/dist/translations/ne/data.js +1 -1
  138. package/dist/translations/nl/data.js +1 -1
  139. package/dist/translations/nn/data.js +1 -1
  140. package/dist/translations/om/data.js +1 -1
  141. package/dist/translations/or/data.js +1 -1
  142. package/dist/translations/pa/data.js +1 -1
  143. package/dist/translations/pcm/data.js +1 -1
  144. package/dist/translations/pl/data.js +1 -1
  145. package/dist/translations/pnb/data.js +1 -1
  146. package/dist/translations/ps/data.js +1 -1
  147. package/dist/translations/pt-BR/data.js +1 -1
  148. package/dist/translations/pt-PT/data.js +1 -1
  149. package/dist/translations/ro/data.js +1 -1
  150. package/dist/translations/ru/data.js +1 -1
  151. package/dist/translations/sd/data.js +1 -1
  152. package/dist/translations/sl/data.js +1 -1
  153. package/dist/translations/su/data.js +1 -1
  154. package/dist/translations/sv/data.js +1 -1
  155. package/dist/translations/sw/data.js +1 -1
  156. package/dist/translations/ta/data.js +1 -1
  157. package/dist/translations/te/data.js +1 -1
  158. package/dist/translations/th/data.js +1 -1
  159. package/dist/translations/tl/data.js +1 -1
  160. package/dist/translations/tr/data.js +1 -1
  161. package/dist/translations/uk/data.js +1 -1
  162. package/dist/translations/ur/data.js +1 -1
  163. package/dist/translations/uz/data.js +1 -1
  164. package/dist/translations/vi/data.js +1 -1
  165. package/dist/translations/yo/data.js +1 -1
  166. package/dist/translations/zh-CN/data.js +1 -1
  167. package/dist/translations/zh-TW/data.js +1 -1
  168. package/dist/translations/zu/data.js +1 -1
  169. package/llms/components/lr-date-input.md +1 -1
  170. package/llms/components/lr-date-picker.md +6 -0
  171. package/llms/components/lr-dialog.md +3 -0
  172. package/llms/components/lr-export-button.md +2 -0
  173. package/llms/components/lr-icon.md +1 -1
  174. package/llms/components/lr-locale-picker.md +7 -1
  175. package/llms/components/lr-map.md +7 -0
  176. package/llms/components/lr-mention-popover.md +3 -0
  177. package/llms/components/lr-model-select.md +3 -0
  178. package/llms/components/lr-navigation-menu.md +3 -0
  179. package/llms/components/lr-otp-input.md +3 -1
  180. package/llms/components/lr-popover.md +15 -5
  181. package/llms/components/lr-select.md +3 -0
  182. package/llms/components/lr-swatch-picker.md +17 -5
  183. package/llms/components/lr-table.md +14 -1
  184. package/llms/components/lr-voice-picker.md +3 -0
  185. package/llms/shared/native-styles-and-utilities.md +40 -0
  186. package/llms/shared/styles-and-tokens.md +257 -60
  187. package/llms/shared/testing-and-utilities.md +4 -1
  188. package/llms/shared.md +300 -61
  189. package/llms/tokens.md +82 -82
  190. package/locales.json +138 -138
  191. package/package.json +2 -2
  192. package/registrations.json +1 -1
  193. package/vscode-css-data.json +1 -1
  194. package/vscode-html-data.json +1 -1
  195. package/web-types.json +1 -1
  196. package/dist/components/agent-tools/run-events.js +0 -1
  197. package/dist/components/agent-tools/tool-param-form/tool-param-types.js +0 -1
  198. package/dist/components/forms/emoji-picker/emoji-types.js +0 -1
  199. package/dist/components/layout/dashboard-grid/layout-types.js +0 -1
  200. package/dist/components/layout/details/accordion-types.js +0 -1
  201. package/dist/components/viewers/viewer-diagnostics.js +0 -1
  202. package/dist/internal/localization-types.js +0 -1
  203. package/dist/internal/node-type-style.js +0 -1
  204. package/dist/internal/picker-value.js +0 -1
  205. package/dist/internal/shared-unions.js +0 -1
  206. package/dist/internal/stream-phase.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,34 +1,43 @@
1
1
  # Changelog
2
2
 
3
- ## 24.1.0
4
-
5
- ### Minor Changes
6
-
7
- - c3ed27e: Expose approval finalization and retry methods on `lr-agent-workspace` for its built-in tool timeline.
8
-
9
- ### Patch Changes
10
-
11
- - c3ed27e: Correct the table sort listener example and v24 event detail and global event type guidance.
12
- - c3ed27e: Keep swatch radios and keyboard focus stable when applications assign equivalent fresh palette items, while preserving distinct duplicate occurrences and original item identities during reordering.
13
-
14
- ## 24.0.0
3
+ ## 25.0.0
15
4
 
16
5
  ### Major Changes
17
6
 
18
- - aa25ee4: Remove the eligible v22 compatibility APIs after their supported v23 transition period. Use granular component registration and class imports, the independent style APIs, and the `lyra-v21` and `lyra-v22` migration profiles when upgrading. Upstream-mirrored aliases and saved style-preference readers remain supported.
7
+ - ad64381: Use Shadcn, Glass, Emerald and System mode as the built-in appearance defaults. First paint, runtime restoration and resets share the same profile while preserving independently saved choices, including explicit Solid surfaces, the Lyra look and cleared accents. `accent: null` remains an explicit clear; `resetLyraStyle()` restores the Emerald default.
19
8
 
20
- Consolidate component implementations and behavioral tests, refresh library documentation, and qualify styling, localization, package costs and representative compositions for the new release.
9
+ Use a 70% opaque Glass fill across navigation, menus, listboxes, dialogs and drawers, with foreground contrast protection. Native application chrome can use `.lr-surface-chrome` from `theme.css`. Scrolling surfaces keep their material stationary, nested surfaces avoid repeated blur, and accessibility preferences retain opaque fills.
21
10
 
22
- Data grids resolve themed row heights once per measurement pass, reducing repeated layout work for large and expanded tree views while preserving live theme changes.
11
+ Allow `--lr-theme-surface-opacity` to span 0–1 for user-controlled Glass opacity. The default remains 70%; Solid surfaces and increased-contrast or reduced-transparency preferences remain opaque. The design-panel recipe uses the existing slider, the public CSS input and an application preference to save and reset opacity.
23
12
 
24
- Clearing a component's locale override now observes the inherited locale even when the public locale resolver was called before its next render. Time inputs reuse the active locale's native-digit map across keystrokes while continuing to accept ASCII digits. Media controls share locale-aware time formatting, and animation timing uses a shared CSS time parser; the AV player retains its whole-second rounding behavior.
13
+ Preserve explicit Solid and Glass scopes across nested and promoted surfaces, and keep plain rail and menubar frames transparent. Align form controls across size tiers while preserving custom sizing and wrapping. Keep keyboard focus visible inside clipped panels and image viewports, and restore visible hover feedback in document comparison panes.
25
14
 
26
- Map data layers skip unused fallback color resolution when explicit colors are valid. Command palettes project visible result rows plus the active row without filtering every group, and Lite Chart reuses the category-label width it already measured for automatic axis selection. These changes preserve the existing rendered and interaction contracts; no latency claim is implied.
15
+ Resolve contrast corrections against the selected or inherited look during startup and runtime updates. Preserve the Lyra look's local decorative-border fallback while retaining Shadcn defaults without a theme stylesheet.
27
16
 
28
- Lite Chart no longer reads the retired `accessibleLabel` property as a fallback. Streaming text documents and types its existing internal-link event, while RAG answers contain their owned markdown child's link events. Buttons share identical slot and focus handlers, and locale resolution shares one cache record per component.
17
+ ### Minor Changes
29
18
 
30
- The package README, migration guides and agent skill now route to focused v24 import, styling, SSR and event-detail guidance. Historical roadmap scope remains available through stable anchors and focused pages.
19
+ - d839991: Add `--lr-gemstone-selected-animation` to disable the selected gemstone shine independently while preserving its static halo. The inherited hook works in gemstone swatch pickers and external glyphs, preserves the default loop when unset, and respects application and OS reduced motion.
20
+
21
+ ### Patch Changes
31
22
 
32
- Event-detail migration diagnostics distinguish payload fields from component properties, avoiding conflicting advice for `lr-app-rail-group` listeners. The retained migration profiles continue to report manual changes for consumers upgrading across multiple major versions.
23
+ - Handle map style failures after rendering and discard obsolete work when the style or connection changes.
24
+ - Honor the current disabled and read-only state before submitting a completed OTP value.
25
+ - Refresh knowledge-base error content when an existing child's slot assignment changes.
26
+ - Cancel obsolete text previews before rendering a changed format or loading status.
27
+ - Announce asynchronously rendered chat messages across window realms, including adopted custom elements.
28
+ - Refresh document-library error content when an existing child's slot assignment changes.
29
+ - Preserve tall content inside vertically constrained scrollers instead of shrinking slotted items to the viewport.
30
+ - Reset a collapsed map legend's scroll position so its Glass layer cannot retain an empty scroll range; preserve focus and expanded scrolling.
31
+ - 29ef483: Keep locale-picker language menus within the viewport when text is enlarged by capping their minimum width by the existing viewport limit.
32
+ - 57d8360: Declare cascade layer order in the signature starter so bundled styles preserve the selected look and accent, and include the supported refresh glyph in the icon reference.
33
+ - ad64381: Apply the shared Glass treatment to map navigation, scale, attribution and legends. Solid and
34
+ accessibility preferences retain opaque surfaces, and scrolling legends keep their material
35
+ stationary without changing native peer controls or map data colors.
36
+
37
+ Defer resize-observer control measurements to the next animation frame so adjusting a legend's
38
+ available space cannot interrupt the same resize notification cycle. Cancel pending measurements
39
+ when the map disconnects or changes containers.
40
+ - 3023260: Keep locale loading Retry reachable beside an open locale picker popup, including top-layer popups. The popup places outside failure guidance while preserving the previous selection until loading succeeds.
41
+ - 6825826: Reveal the complete keyboard-focused swatch in scrolling single-row palettes, including after item updates.
33
42
 
34
43
  Older major versions: [release history archive](https://github.com/aceshooting/lyra-ui/tree/main/docs/changelog).
package/README.md CHANGED
@@ -10,13 +10,13 @@
10
10
  [![npm](https://img.shields.io/npm/v/%40aceshooting%2Flyra-ui)](https://www.npmjs.com/package/@aceshooting/lyra-ui)
11
11
  [![npm downloads](https://img.shields.io/npm/dm/%40aceshooting%2Flyra-ui)](https://www.npmjs.com/package/@aceshooting/lyra-ui)
12
12
  [![npm weekly downloads](https://img.shields.io/npm/dw/%40aceshooting%2Flyra-ui)](https://www.npmjs.com/package/@aceshooting/lyra-ui)
13
- [![Node.js](https://img.shields.io/node/v/%40aceshooting%2Flyra-ui)](https://www.npmjs.com/package/@aceshooting/lyra-ui)
13
+ [![Node.js](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fregistry.npmjs.org%2F%40aceshooting%2Flyra-ui%2Flatest&query=%24.engines.node&label=node&color=339933&logo=nodedotjs&logoColor=white)](https://www.npmjs.com/package/@aceshooting/lyra-ui)
14
14
  [![Lit](https://img.shields.io/badge/Lit-3-324FFF?logo=lit)](https://lit.dev/)
15
15
  [![Web Components](https://img.shields.io/badge/Web%20Components-native-29ABE2)](https://www.webcomponents.org/)
16
16
  [![avg per component](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Faceshooting%2Flyra-ui%2Fmain%2Fpackages%2Flyra-ui%2Fscripts%2Fbundle-stats.json&query=%24.avgComponentGzipKb&label=avg%20per%20component&suffix=%20KB%20gzip&color=blue)](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/scripts/bundle-stats.json)
17
17
  [![total gzip](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Faceshooting%2Flyra-ui%2Fmain%2Fpackages%2Flyra-ui%2Fscripts%2Fbundle-stats.json&query=%24.barrelGzipKb&label=total%20gzip&suffix=%20KB&color=blue)](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/scripts/bundle-stats.json)
18
- [![types](https://img.shields.io/npm/types/%40aceshooting%2Flyra-ui)](https://www.npmjs.com/package/@aceshooting/lyra-ui)
19
- [![license](https://img.shields.io/npm/l/%40aceshooting%2Flyra-ui)](./LICENSE)
18
+ [![types](https://img.shields.io/badge/types-TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.npmjs.com/package/@aceshooting/lyra-ui)
19
+ [![license](https://img.shields.io/github/license/aceshooting/lyra-ui)](./LICENSE)
20
20
 
21
21
  <p align="center">
22
22
  <a href="https://www.lyra-ui.com/">
@@ -59,17 +59,13 @@ The [release roadmap](../../docs/roadmap.md#roadmap-index-and-release-status) tr
59
59
  localization, cleanup and qualification work, then the separate website and consumer rollout after
60
60
  v24 publication.
61
61
 
62
- Choose the original Lyra look by loading `theme.css`. To select shadcn through the runtime:
63
-
64
- ```js
65
- import '@aceshooting/lyra-ui/theme.css';
66
- import '@aceshooting/lyra-ui/looks/shadcn.css';
67
- import '@aceshooting/lyra-ui/accents.css';
68
- import { setLyraStyle } from '@aceshooting/lyra-ui/theme.js';
69
-
70
- setLyraStyle({ look: 'shadcn', mode: 'system', accent: 'sapphire' });
71
- setLyraStyle({ accent: 'ruby' }); // keeps the other choices
72
- ```
62
+ For new apps, use the [Lyra signature starter](./llms/shared/styles-and-tokens.md#lyra-signature-starter):
63
+ Shadcn, glass, Emerald, theme-aware spotlights, compact gemstones and country-flag language controls.
64
+ The recipe preserves saved choices and explicit branding and covers first paint, persistence and
65
+ accessible controls. The built-in profile is Shadcn/Glass/Emerald/System with comfortable density;
66
+ saved choices override each axis independently. To retain the earlier appearance, select
67
+ `look: 'lyra'`, `surface: 'solid'`, and `accent: null` explicitly. Clearing an accent with `null`
68
+ remains supported; `resetLyraStyle()` restores Emerald.
73
69
 
74
70
  See the [changelog](CHANGELOG.md) for version-by-version changes and historical upgrade notes.
75
71
 
@@ -512,27 +508,27 @@ matching `data-lr-theme` attribute) on an ancestor:
512
508
  @import "@aceshooting/lyra-ui/theme.css";
513
509
  ```
514
510
 
515
- **shadcn/ui look.** Add one more import to restyle every component after shadcn/ui's default
516
- ("new-york", Neutral) — monochrome primary, `0.5rem` radii, `text-sm`, `h-9` controls, a 3px focus
517
- ring. It layers over `theme.css` whatever the load order, also answers to shadcn's `.dark`/`.light`
518
- classes, and keeps gemstone accents working. A few values deliberately differ from shadcn to keep
519
- WCAG contrast (control borders, focus colour, danger red, chart colours); see
520
- [The shadcn look](./llms/shared.md#the-shadcn-look--looksshadcncss).
511
+ **Appearance defaults.** Shadcn, Glass, Emerald, System mode and comfortable density are built in.
512
+ `theme.css` supplies the document-level profile, including the default look, accent and material;
513
+ granular components also carry these visual defaults. Select a different look or accent through
514
+ the canonical style API, preserving each valid saved choice at startup:
521
515
 
522
- ```css
523
- @import "@aceshooting/lyra-ui/theme.css";
524
- @import "@aceshooting/lyra-ui/looks/shadcn.css";
525
- @import "@aceshooting/lyra-ui/accents.css";
516
+ ```js
517
+ import { setLyraStyle } from '@aceshooting/lyra-ui/theme.js';
518
+
519
+ setLyraStyle({}); // Restore saved choices; missing or invalid fields use the built-in profile.
526
520
  ```
527
521
 
528
- Select the same look through the canonical style API after importing its stylesheet:
522
+ To retain the earlier Lyra/Solid appearance without an accent:
529
523
 
530
524
  ```js
531
- import { setLyraStyle } from '@aceshooting/lyra-ui/theme.js';
532
-
533
- setLyraStyle({ look: 'shadcn', mode: 'system', accent: 'sapphire' });
525
+ setLyraStyle({ look: 'lyra', surface: 'solid', accent: null });
534
526
  ```
535
527
 
528
+ `accent: null` clears the accent. `resetLyraStyle()` restores the built-in profile, including
529
+ Emerald; pass a field list to reset only those axes. See [The shadcn look](./llms/shared.md#the-shadcn-look--looksshadcncss)
530
+ for the look's typography, geometry and contrast adjustments.
531
+
536
532
  The style API persists the independent look, surface, density, mode and accent choices. See the
537
533
  [style API guide](./llms/shared/styles-and-tokens.md#composing-looks-surfaces-and-density) for
538
534
  scoped styling, reset and saved-preference behavior.