@aceshooting/lyra-ui 2.13.0 → 3.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.
- package/README.md +83 -26
- package/custom-elements.json +526 -13
- package/dist/components/attachment-chip/attachment-chip.styles.js +2 -2
- package/dist/components/button/button.class.d.ts +7 -9
- package/dist/components/button/button.class.d.ts.map +1 -1
- package/dist/components/button/button.class.js +12 -14
- package/dist/components/button/button.class.js.map +1 -1
- package/dist/components/button/button.styles.d.ts.map +1 -1
- package/dist/components/button/button.styles.js +30 -10
- package/dist/components/button/button.styles.js.map +1 -1
- package/dist/components/callout/callout.class.d.ts +4 -0
- package/dist/components/callout/callout.class.d.ts.map +1 -1
- package/dist/components/callout/callout.class.js +7 -0
- package/dist/components/callout/callout.class.js.map +1 -1
- package/dist/components/callout/callout.styles.d.ts.map +1 -1
- package/dist/components/callout/callout.styles.js +13 -0
- package/dist/components/callout/callout.styles.js.map +1 -1
- package/dist/components/chat-message/chat-message.styles.js +1 -1
- package/dist/components/code-block/code-block.styles.js +1 -1
- package/dist/components/date-picker/date-input.class.d.ts +4 -0
- package/dist/components/date-picker/date-input.class.d.ts.map +1 -1
- package/dist/components/date-picker/date-input.class.js +16 -0
- package/dist/components/date-picker/date-input.class.js.map +1 -1
- package/dist/components/details/details.class.d.ts +7 -2
- package/dist/components/details/details.class.d.ts.map +1 -1
- package/dist/components/details/details.class.js +23 -3
- package/dist/components/details/details.class.js.map +1 -1
- package/dist/components/dialog/dialog.styles.js +1 -1
- package/dist/components/heatmap/heatmap.class.d.ts +27 -0
- package/dist/components/heatmap/heatmap.class.d.ts.map +1 -1
- package/dist/components/heatmap/heatmap.class.js +125 -1
- package/dist/components/heatmap/heatmap.class.js.map +1 -1
- package/dist/components/heatmap/heatmap.styles.d.ts.map +1 -1
- package/dist/components/heatmap/heatmap.styles.js +27 -0
- package/dist/components/heatmap/heatmap.styles.js.map +1 -1
- package/dist/components/json-viewer/json-viewer.styles.js +1 -1
- package/dist/components/markdown/markdown.styles.js +1 -1
- package/dist/components/model-select/model-select.class.d.ts +4 -0
- package/dist/components/model-select/model-select.class.d.ts.map +1 -1
- package/dist/components/model-select/model-select.class.js +16 -1
- package/dist/components/model-select/model-select.class.js.map +1 -1
- package/dist/components/overlay/overlay.styles.d.ts.map +1 -1
- package/dist/components/overlay/overlay.styles.js +11 -1
- package/dist/components/overlay/overlay.styles.js.map +1 -1
- package/dist/components/responsive-panel/responsive-panel.styles.js +1 -1
- package/dist/components/segmented/segmented.class.d.ts +6 -4
- package/dist/components/segmented/segmented.class.d.ts.map +1 -1
- package/dist/components/segmented/segmented.class.js +3 -2
- package/dist/components/segmented/segmented.class.js.map +1 -1
- package/dist/components/segmented/segmented.styles.js +1 -1
- package/dist/components/tool-approval-dialog/tool-approval-dialog.class.d.ts +13 -6
- package/dist/components/tool-approval-dialog/tool-approval-dialog.class.d.ts.map +1 -1
- package/dist/components/tool-approval-dialog/tool-approval-dialog.class.js +48 -10
- package/dist/components/tool-approval-dialog/tool-approval-dialog.class.js.map +1 -1
- package/dist/components/tool-approval-dialog/tool-approval-dialog.styles.js +1 -1
- package/dist/components/tool-result-dialog/tool-result-dialog.styles.js +1 -1
- package/dist/components/tool-select-dialog/tool-select-dialog.class.d.ts +7 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.class.d.ts.map +1 -1
- package/dist/components/tool-select-dialog/tool-select-dialog.class.js +31 -0
- package/dist/components/tool-select-dialog/tool-select-dialog.class.js.map +1 -1
- package/dist/components/tool-select-dialog/tool-select-dialog.styles.js +1 -1
- package/dist/components/widget/widget.styles.js +1 -1
- package/dist/components/word-cloud/word-cloud.styles.js +4 -4
- package/dist/internal/lyra-element.d.ts +2 -2
- package/dist/internal/lyra-element.js +2 -2
- package/dist/internal/tokens.styles.d.ts.map +1 -1
- package/dist/internal/tokens.styles.js +202 -198
- package/dist/internal/tokens.styles.js.map +1 -1
- package/dist/testing/happy-dom-shims.d.ts +4 -2
- package/dist/testing/happy-dom-shims.d.ts.map +1 -1
- package/dist/testing/happy-dom-shims.js +6 -2
- package/dist/testing/happy-dom-shims.js.map +1 -1
- package/dist/theme.css +58 -0
- package/llms-full.txt +117 -33
- package/llms.txt +9 -8
- package/package.json +9 -2
|
@@ -18,8 +18,10 @@
|
|
|
18
18
|
*
|
|
19
19
|
* Call `installHappyDomFormAssociatedShims()` once, in a Vitest `setupFiles` entry, before
|
|
20
20
|
* importing any `lyra-ui` component. It is a no-op wherever `attachInternals` already exists
|
|
21
|
-
* (any real browser, or an environment that already supports it)
|
|
22
|
-
*
|
|
21
|
+
* (any real browser, or an environment that already supports it) or where `HTMLElement` isn't
|
|
22
|
+
* even a global (a plain Node test environment with no DOM at all) -- safe to call
|
|
23
|
+
* unconditionally from a shared setup file used across multiple test environments/projects,
|
|
24
|
+
* including ones that mix DOM and non-DOM test files under one `setupFiles` entry.
|
|
23
25
|
*/
|
|
24
26
|
function createStubInternals() {
|
|
25
27
|
return {
|
|
@@ -43,6 +45,8 @@ function createStubInternals() {
|
|
|
43
45
|
};
|
|
44
46
|
}
|
|
45
47
|
export function installHappyDomFormAssociatedShims() {
|
|
48
|
+
if (typeof HTMLElement === 'undefined')
|
|
49
|
+
return;
|
|
46
50
|
if (typeof HTMLElement.prototype.attachInternals === 'function')
|
|
47
51
|
return;
|
|
48
52
|
HTMLElement.prototype.attachInternals = function attachInternals() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"happy-dom-shims.js","sourceRoot":"","sources":["../../src/testing/happy-dom-shims.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"happy-dom-shims.js","sourceRoot":"","sources":["../../src/testing/happy-dom-shims.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAkBH,SAAS,mBAAmB;IAC1B,OAAO;QACL,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,QAAQ,CAAC,sBAAsB,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC;QACnE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QACzB,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,IAAI;QAClB,YAAY;YACV,+EAA+E;QACjF,CAAC;QACD,aAAa;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QACD,cAAc;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,WAAW;YACT,qFAAqF;QACvF,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kCAAkC;IAChD,IAAI,OAAO,WAAW,KAAK,WAAW;QAAE,OAAO;IAC/C,IAAI,OAAO,WAAW,CAAC,SAAS,CAAC,eAAe,KAAK,UAAU;QAAE,OAAO;IACxE,WAAW,CAAC,SAAS,CAAC,eAAe,GAAG,SAAS,eAAe;QAC9D,OAAO,mBAAmB,EAAiC,CAAC;IAC9D,CAAC,CAAC;AACJ,CAAC;AAED;;2FAE2F;AAC3F,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC"}
|
package/dist/theme.css
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/* Lyra's standalone theme inputs. Import this file once at the application root, then
|
|
2
|
+
switch `.lyra-light`/`.lyra-dark` (or data-lyra-theme) on an ancestor to change modes. */
|
|
3
|
+
:root,
|
|
4
|
+
.lyra-light,
|
|
5
|
+
[data-lyra-theme='light'] {
|
|
6
|
+
color-scheme: light;
|
|
7
|
+
--lyra-theme-color-surface-default: #ffffff;
|
|
8
|
+
--lyra-theme-color-text-normal: #1a1a1a;
|
|
9
|
+
--lyra-theme-color-text-quiet: #6b7280;
|
|
10
|
+
--lyra-theme-color-surface-border: #8a8a90;
|
|
11
|
+
--lyra-theme-color-border-strong: #4b5563;
|
|
12
|
+
--lyra-theme-color-brand-fill-loud: #0969da;
|
|
13
|
+
--lyra-theme-color-brand-fill-quiet: #ddf4ff;
|
|
14
|
+
--lyra-theme-color-brand-on-loud: #ffffff;
|
|
15
|
+
--lyra-theme-color-success-fill-loud: #1a7f37;
|
|
16
|
+
--lyra-theme-color-success-fill-quiet: #dafbe1;
|
|
17
|
+
--lyra-theme-color-success-on-loud: #ffffff;
|
|
18
|
+
--lyra-theme-color-warning-fill-loud: #9a6700;
|
|
19
|
+
--lyra-theme-color-warning-fill-quiet: #fff8c5;
|
|
20
|
+
--lyra-theme-color-warning-on-loud: #ffffff;
|
|
21
|
+
--lyra-theme-color-danger-fill-loud: #cf222e;
|
|
22
|
+
--lyra-theme-color-danger-fill-quiet: #ffebe9;
|
|
23
|
+
--lyra-theme-color-danger-on-loud: #ffffff;
|
|
24
|
+
--lyra-theme-color-neutral-fill-loud: #1a1a1a;
|
|
25
|
+
--lyra-theme-color-neutral-on-loud: #ffffff;
|
|
26
|
+
--lyra-theme-color-focus: #0969da;
|
|
27
|
+
--lyra-theme-color-no-data: rgb(128 128 128 / 25%);
|
|
28
|
+
--lyra-theme-font-family-body: system-ui, sans-serif;
|
|
29
|
+
--lyra-theme-font-family-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
30
|
+
--lyra-theme-font-size-m: 1rem;
|
|
31
|
+
--lyra-theme-border-radius-m: 0.375rem;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.lyra-dark,
|
|
35
|
+
[data-lyra-theme='dark'] {
|
|
36
|
+
color-scheme: dark;
|
|
37
|
+
--lyra-theme-color-surface-default: #1a1a1a;
|
|
38
|
+
--lyra-theme-color-text-normal: #f2f2f2;
|
|
39
|
+
--lyra-theme-color-text-quiet: #9aa1ac;
|
|
40
|
+
--lyra-theme-color-surface-border: #6b6b74;
|
|
41
|
+
--lyra-theme-color-border-strong: #c4c9d1;
|
|
42
|
+
--lyra-theme-color-brand-fill-loud: #4ea0f0;
|
|
43
|
+
--lyra-theme-color-brand-fill-quiet: #163650;
|
|
44
|
+
--lyra-theme-color-brand-on-loud: #111827;
|
|
45
|
+
--lyra-theme-color-success-fill-loud: #3fb950;
|
|
46
|
+
--lyra-theme-color-success-fill-quiet: #17411e;
|
|
47
|
+
--lyra-theme-color-success-on-loud: #111827;
|
|
48
|
+
--lyra-theme-color-warning-fill-loud: #d29922;
|
|
49
|
+
--lyra-theme-color-warning-fill-quiet: #3b2900;
|
|
50
|
+
--lyra-theme-color-warning-on-loud: #111827;
|
|
51
|
+
--lyra-theme-color-danger-fill-loud: #fa524a;
|
|
52
|
+
--lyra-theme-color-danger-fill-quiet: #4c1210;
|
|
53
|
+
--lyra-theme-color-danger-on-loud: #111827;
|
|
54
|
+
--lyra-theme-color-neutral-fill-loud: #e5e7eb;
|
|
55
|
+
--lyra-theme-color-neutral-on-loud: #111827;
|
|
56
|
+
--lyra-theme-color-focus: #4ea0f0;
|
|
57
|
+
--lyra-theme-color-no-data: rgb(180 180 180 / 30%);
|
|
58
|
+
}
|
package/llms-full.txt
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
# @aceshooting/lyra-ui — LLM API Reference
|
|
2
2
|
|
|
3
|
-
`@aceshooting/lyra-ui` is a
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
coding assistants integrating the library; for install instructions, the full component catalog, and
|
|
13
|
-
the `<wa-*>` → `<lyra-*>` migration notes, see the package [README](./README.md) — or the shorter
|
|
14
|
-
curated index at [`llms.txt`](./llms.txt) if you just need the shape of the library before diving in
|
|
15
|
-
here.
|
|
3
|
+
`@aceshooting/lyra-ui` is a free, independent, MIT-licensed [Lit](https://lit.dev) web-component
|
|
4
|
+
library and an open-source alternative to Shoelace and Web Awesome. It combines accessible form
|
|
5
|
+
controls, layout and overlay primitives, dashboards, charts, data visualization, and Conversation &
|
|
6
|
+
Agent UI. Selected components retain documented Web Awesome-compatible public names under a `lyra-`
|
|
7
|
+
prefix to make migration easier, but Lyra has its own implementation, design tokens, localization
|
|
8
|
+
runtime, RTL behavior, and release surface. It has no runtime dependency on either project. This is
|
|
9
|
+
the complete component-by-component API reference for coding assistants integrating the library; for
|
|
10
|
+
installation, the full catalog, and Web Awesome/Shoelace migration notes, see the package
|
|
11
|
+
[README](./README.md) — or the shorter curated index at [`llms.txt`](./llms.txt).
|
|
16
12
|
|
|
17
13
|
Component entry points such as `components/empty/empty.js` register their custom-element tag.
|
|
18
14
|
Every component also exposes a matching `.class.js` entry for subclassing or type-directed
|
|
@@ -105,21 +101,22 @@ Not a custom element itself — infrastructure every `lyra-*` component in the l
|
|
|
105
101
|
`lyra-citation-badge`, and `lyra-menu` (which resolves its `placement` through
|
|
106
102
|
`rtlAwarePlacement()` first — see `rtl.ts` below — before handing it to `place()`).
|
|
107
103
|
- **`tokens.styles.ts` → `tokens`** (a `css` template prepended to every component's stylesheet) —
|
|
108
|
-
the whole design-token layer. Every value chains through
|
|
109
|
-
a hard-coded fallback, e.g. `--lyra-color-brand: var(--
|
|
104
|
+
the whole design-token layer. Every value chains through an independent `--lyra-theme-*` custom
|
|
105
|
+
property and finally a hard-coded fallback, e.g. `--lyra-color-brand: var(--lyra-theme-color-brand-fill-loud, #0969da)`.
|
|
106
|
+
Full
|
|
110
107
|
set: `--lyra-color-surface / -text / -text-quiet / -border / -brand / -brand-quiet / -success /
|
|
111
108
|
-success-quiet / -warning / -warning-quiet / -danger / -danger-quiet`,
|
|
112
109
|
`--lyra-color-on-brand / -on-success / -on-warning / -on-danger` (paired
|
|
113
110
|
text/icon colors for content painted on the corresponding solid semantic fill; standalone light
|
|
114
|
-
and dark fallbacks choose a contrasting foreground for each fill, while a
|
|
115
|
-
provide its own `*-on-loud` values), `--lyra-space-xs / -s / -m / -l`, `--lyra-radius`, `--lyra-shadow`,
|
|
111
|
+
and dark fallbacks choose a contrasting foreground for each fill, while a consumer's own theme
|
|
112
|
+
can provide its own `*-on-loud` values), `--lyra-space-xs / -s / -m / -l`, `--lyra-radius`, `--lyra-shadow`,
|
|
116
113
|
`--lyra-font`, `--lyra-transition-fast` / `-base` (motion timing every animating component should
|
|
117
114
|
share), `--lyra-opacity-disabled` (one shared disabled-state opacity), `--lyra-focus-ring-width` /
|
|
118
115
|
`-color` / `-offset` (every `:focus-visible` rule should reference these), `--lyra-icon-button-size`
|
|
119
116
|
(minimum tappable box for icon-only buttons; the glyph itself doesn't grow). Also sets
|
|
120
117
|
`:host([hidden]) { display: none !important; }`, an inherited `box-sizing: border-box` reset, and
|
|
121
118
|
a `prefers-color-scheme: dark` fallback that re-points the color tokens' hard-coded defaults at a
|
|
122
|
-
dark palette (only takes effect when no real `--
|
|
119
|
+
dark palette (only takes effect when no real `--lyra-theme-*` value is set).
|
|
123
120
|
- **`prefix.ts`** — `LYRA_PREFIX = 'lyra'`; `tag(name)` → `` `lyra-${name}` ``; `defineElement(name,
|
|
124
121
|
ctor)` — idempotent `customElements.define`, safe if a module is evaluated twice.
|
|
125
122
|
- **`a11y.ts`** — `nextId(scope)`: monotonic id generator (e.g. `nextId('combobox-list')` →
|
|
@@ -544,6 +541,10 @@ Text field + calendar popover, **form-associated** via the shared `FormAssociate
|
|
|
544
541
|
internal `<input>`; empty omits the attribute. Named `autoCorrect` in JS/TS (not `autocorrect`)
|
|
545
542
|
to dodge a `lib.dom.d.ts` collision with `HTMLElement`'s own boolean `autocorrect` IDL member;
|
|
546
543
|
the wire attribute is still the plain `autocorrect` name
|
|
544
|
+
- `autocomplete: string = ''`, `inputMode: string = ''` (attribute `inputmode`), and
|
|
545
|
+
`enterKeyHint: string = ''` (attribute `enterkeyhint`) — forwarded to the internal date input
|
|
546
|
+
- `autocomplete: string = ''`, `inputMode: string = ''` (`inputmode`), and `enterKeyHint: string = ''`
|
|
547
|
+
(`enterkeyhint`) — forwarded to the internal `<input>`.
|
|
547
548
|
|
|
548
549
|
**Methods:** `show()`, `hide()`, `clear()`
|
|
549
550
|
|
|
@@ -720,15 +721,14 @@ original declarative `value`, matching native `defaultValue` behavior.
|
|
|
720
721
|
|
|
721
722
|
## `lyra-button`
|
|
722
723
|
|
|
723
|
-
A generic action-button primitive
|
|
724
|
-
internal native `<button>` (this library has no runtime dependency on Web Awesome); `type="submit"`/
|
|
724
|
+
A generic action-button primitive. Renders an internal native `<button>`; `type="submit"`/
|
|
725
725
|
`type="reset"` are handled by the component itself via the host's own `closest('form')`, since a
|
|
726
726
|
shadow-internal native button doesn't participate in an ancestor form's submission on its own.
|
|
727
727
|
|
|
728
728
|
**Properties:**
|
|
729
729
|
- `variant: 'neutral' | 'brand' | 'success' | 'warning' | 'danger' = 'neutral'` (reflected)
|
|
730
730
|
- `appearance: 'accent' | 'filled' | 'outlined' | 'plain' = 'filled'` (reflected) — `'accent'` is a
|
|
731
|
-
loud, high-contrast filled tier
|
|
731
|
+
loud, high-contrast filled tier,
|
|
732
732
|
distinct from `'filled'` for `variant="neutral"` specifically (`'filled'` reads the ambient
|
|
733
733
|
surface color there; `'accent'` reads a solid neutral fill)
|
|
734
734
|
- `size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected)
|
|
@@ -737,7 +737,11 @@ shadow-internal native button doesn't participate in an ancestor form's submissi
|
|
|
737
737
|
clearing `disabled`
|
|
738
738
|
- `disabled: boolean = false` (reflected)
|
|
739
739
|
|
|
740
|
-
|
|
740
|
+
The shared `m` size uses `--lyra-font-size-m`. The internal button follows the host's inline size through `--lyra-button-width` (default
|
|
741
|
+
`100%`), and the size scale is exposed through `--lyra-button-size-xs/-s/-m/-l/-xl`.
|
|
742
|
+
|
|
743
|
+
**Getters/methods:** `click()`, `focus(options?)`, and `blur()` — forwarded to the internal native
|
|
744
|
+
`<button>`; `click()` also runs the component's submit/reset behavior.
|
|
741
745
|
|
|
742
746
|
**Events:** none (a plain native `click` bubbles and composes through the shadow boundary
|
|
743
747
|
unmodified; disabled while `disabled` or `loading`).
|
|
@@ -746,11 +750,12 @@ unmodified; disabled while `disabled` or `loading`).
|
|
|
746
750
|
|
|
747
751
|
**CSS parts:** `base`, `label`, `start`, `end`, `spinner` (present only while `loading`).
|
|
748
752
|
|
|
749
|
-
**Themeable custom properties:** `--lyra-button-
|
|
753
|
+
**Themeable custom properties:** `--lyra-button-width`, `--lyra-button-size-xs/-s/-m/-l/-xl`,
|
|
754
|
+
`--lyra-button-accent`, `--lyra-button-fill`,
|
|
750
755
|
`--lyra-button-on-fill`, `--lyra-button-border` (each swapped by the active `variant`, default
|
|
751
756
|
`neutral` falls back to plain text/surface/border tokens), `--lyra-button-accent-fill`,
|
|
752
757
|
`--lyra-button-accent-on-fill` (the `appearance="accent"` fill/foreground pair; `neutral` falls
|
|
753
|
-
back to `--
|
|
758
|
+
back to `--lyra-color-neutral`/`--lyra-color-on-neutral`, every other variant reuses that variant's own
|
|
754
759
|
loud fill token), `--lyra-button-hover-brightness` (default `1.08`, the `:hover` filter intensity),
|
|
755
760
|
`--lyra-button-active-scale` (default `0.9875`, the `:active` press-scale, disabled under
|
|
756
761
|
`prefers-reduced-motion`).
|
|
@@ -1880,6 +1885,9 @@ itself (absent for `'wide'`/`collapse="none"`); and the `lyra-split-collapse-cha
|
|
|
1880
1885
|
divider adjacent to the collapsed panel is drag/keyboard-disabled (`aria-disabled="true"`) while
|
|
1881
1886
|
collapsed. `collapse="none"` (the default) is byte-for-byte identical to pre-collapse-feature behavior.
|
|
1882
1887
|
|
|
1888
|
+
`dividerLabel?: (index: number, panelCount: number) => string` (attribute: false) customizes the
|
|
1889
|
+
localized accessible label generated for each auto-inserted divider.
|
|
1890
|
+
|
|
1883
1891
|
**Events:** `lyra-resize` (`detail: { sizes }`, fired on every drag step/release **and** every
|
|
1884
1892
|
keyboard step), `lyra-split-collapse-change` (`detail: { state: 'wide'|'rail'|'floating' }`, fired only
|
|
1885
1893
|
on a real `collapse`-state transition, never on every resize/render),
|
|
@@ -1959,6 +1967,8 @@ position) survives the transition.
|
|
|
1959
1967
|
sidebar/toolbar visible during fullscreen
|
|
1960
1968
|
- `compact: boolean = false` (reflected) — tighter header/body padding, same convention as
|
|
1961
1969
|
`lyra-empty`'s `compact`
|
|
1970
|
+
- `backdropInset: string = ''` (attribute `backdrop-inset`) — overrides the fullscreen backdrop's
|
|
1971
|
+
CSS `inset` independently from `fullscreenInset`; when empty, it follows `fullscreenInset`
|
|
1962
1972
|
- `views: WidgetView[] = []` (attribute: false) — named alternate views for the panel body, e.g. a
|
|
1963
1973
|
chart/table toggle inside the same card chrome; `WidgetView { id: string; label: string; icon?:
|
|
1964
1974
|
TemplateResult }`. Each entry gets a header toggle button (`[part='view-toggle']`) and a
|
|
@@ -1987,7 +1997,7 @@ empty), `label-group` (wrapper around the label and sublabel), `label`, `sublabe
|
|
|
1987
1997
|
`backdrop`
|
|
1988
1998
|
|
|
1989
1999
|
**Themeable custom properties:** `--lyra-widget-overlay-color` (default `rgb(0 0 0 / 0.5)` — the
|
|
1990
|
-
fullscreen backdrop scrim color; component-specific since no shared `--
|
|
2000
|
+
fullscreen backdrop scrim color; component-specific since no shared `--lyra-*` overlay token
|
|
1991
2001
|
exists), plus shared tokens (`--lyra-space-*`, `--lyra-color-border/-surface/-text-quiet`,
|
|
1992
2002
|
`--lyra-radius`, `--lyra-shadow`, `--lyra-icon-button-size`, `--lyra-focus-ring-*`).
|
|
1993
2003
|
|
|
@@ -2269,10 +2279,15 @@ A Canvas-rendered heatmap with a DPR-aware, resize-aware redraw loop, in one of
|
|
|
2269
2279
|
`"matrix"` (default — a `rowLabels` × `colLabels` grid of `values`) or `"calendar"` (a
|
|
2270
2280
|
GitHub-style Sunday–Saturday × week grid built from `days`, colored by quartile bucket rather than
|
|
2271
2281
|
the matrix mode's continuous ramp). Every cell is independently addressable despite being
|
|
2272
|
-
canvas-drawn (no per-cell DOM node): a `pointermove` hit-test over the canvas shows `[part="tooltip"]`
|
|
2282
|
+
canvas-drawn (no per-cell DOM node by default): a `pointermove` hit-test over the canvas shows `[part="tooltip"]`
|
|
2273
2283
|
with that cell's label + value; the canvas is `tabindex="0"` with arrow-key roving focus (a stroked
|
|
2274
2284
|
ring redrawn over the focused cell on every draw, plus `[part="live-region"]` announcing it); and a
|
|
2275
|
-
click, or Enter/Space on the focused cell, fires `lyra-cell-click`.
|
|
2285
|
+
click, or Enter/Space on the focused cell, fires `lyra-cell-click`.
|
|
2286
|
+
|
|
2287
|
+
Set `accessibleCells: true` (`accessible-cells`) to opt into a native-button overlay for each
|
|
2288
|
+
interactive matrix/calendar cell. The overlay uses localized `aria-label`s, explicit
|
|
2289
|
+
`aria-pressed="true"|"false"` from the controlled `selectedCell`, and roving tabindex/arrow-key
|
|
2290
|
+
focus; it continues to emit `lyra-cell-click` and leaves selection state consumer-controlled.
|
|
2276
2291
|
|
|
2277
2292
|
**Properties:**
|
|
2278
2293
|
- `rowLabels: string[] = []` (attribute: false — matrix mode only)
|
|
@@ -2312,6 +2327,11 @@ click, or Enter/Space on the focused cell, fires `lyra-cell-click`.
|
|
|
2312
2327
|
announcement when the focused cell is the selection. Purely a controlled property — mirrors
|
|
2313
2328
|
`<lyra-lite-chart>`'s `selectedIndex`, this component never mutates it itself. Unset (the default,
|
|
2314
2329
|
`null`) reproduces today's exact output.
|
|
2330
|
+
- `accessibleCells: boolean = false` (attribute `accessible-cells`) — renders `[part="cells"]` with
|
|
2331
|
+
one `[part="cell"]` native button per interactive cell. Buttons expose localized `aria-label`s,
|
|
2332
|
+
explicit `aria-pressed` state from `selectedCell`, and a roving tabindex; the canvas becomes
|
|
2333
|
+
`aria-hidden` while this mode is enabled. The property is opt-in so the default canvas mode keeps
|
|
2334
|
+
its low DOM footprint.
|
|
2315
2335
|
- `cellText?: (pos: MatrixCellPos | CalendarCellPos, value: number) => string` (attribute: false) —
|
|
2316
2336
|
formats the per-cell hover tooltip and keyboard live-region announcement text; receives the cell
|
|
2317
2337
|
position (`{ row, col }` in matrix mode, `{ week, weekday }` in calendar mode) and its value.
|
|
@@ -2370,7 +2390,8 @@ force a redraw manually.
|
|
|
2370
2390
|
|
|
2371
2391
|
**Slots:** none.
|
|
2372
2392
|
|
|
2373
|
-
**CSS parts:** `base`, `canvas`, `
|
|
2393
|
+
**CSS parts:** `base`, `canvas`, `cells` (opt-in per-cell overlay), `cell` (one opt-in native cell
|
|
2394
|
+
button), `tooltip` (hover tooltip, positioned over the hovered cell),
|
|
2374
2395
|
`live-region` (visually-hidden `role="status" aria-live="polite"` element announcing the
|
|
2375
2396
|
keyboard-focused cell), `legend`, `legend-lo`, `legend-hi`, `legend-annotation` (one per labeled
|
|
2376
2397
|
`annotations` entry)
|
|
@@ -2623,6 +2644,8 @@ descendants of the treeitem, matching the WAI-ARIA treeitem pattern's containmen
|
|
|
2623
2644
|
- `setSize: number = 1`, `posInSet: number = 1` (attribute: false) — this node's `aria-setsize`/
|
|
2624
2645
|
`aria-posinset` values among its siblings, pushed down from `<lyra-tree>`; normally set internally,
|
|
2625
2646
|
not by consumers
|
|
2647
|
+
- `hasChildren: boolean` (read-only getter) — reports whether `item.children` contains at least one
|
|
2648
|
+
child; leaf nodes never expose `aria-expanded` and cannot expand or collapse
|
|
2626
2649
|
|
|
2627
2650
|
**Methods:** `expand()`, `collapse()` (each a no-op if already in that state, or a leaf), `select()`
|
|
2628
2651
|
(fires `lyra-node-select`).
|
|
@@ -3169,6 +3192,10 @@ parsing (that's left entirely to the host).
|
|
|
3169
3192
|
- `label: string = 'Drop files here or click to browse'`
|
|
3170
3193
|
- `accessibleLabel: string = ''` (attribute `aria-label`) — overrides `label` as the internal
|
|
3171
3194
|
dropzone/button accessible name without changing visible copy
|
|
3195
|
+
- `acceptedMessage: string = '{count} file(s) added.'` (attribute `accepted-message`) — live-region
|
|
3196
|
+
message after an accepted selection; `{count}` is replaced with the accepted count
|
|
3197
|
+
- `rejectedMessage: string = '{count} file(s) rejected.'` (attribute `rejected-message`) — live-region
|
|
3198
|
+
message after rejected files; `{count}` is replaced with the rejected count
|
|
3172
3199
|
|
|
3173
3200
|
**Methods:** `openPicker()` programmatically opens the native file dialog; `focus(options?)`
|
|
3174
3201
|
forwards to the interactive dropzone.
|
|
@@ -3464,6 +3491,8 @@ hand-building that chrome isn't worth it.
|
|
|
3464
3491
|
- `closable: boolean = false` (attribute `closable`) — renders a built-in close (X) button in the
|
|
3465
3492
|
header row (creating one, with no heading text, if `heading` is unset), wired to the same
|
|
3466
3493
|
`close()` path Escape/backdrop-dismiss already use, with reason `'close-button'`
|
|
3494
|
+
- `noLightDismiss: boolean = false` (attribute `no-light-dismiss`) — prevents a backdrop click from
|
|
3495
|
+
closing the dialog; Escape and explicit `close()` calls remain available
|
|
3467
3496
|
|
|
3468
3497
|
Also settable as a plain `aria-label` attribute (not a public JS property): overrides the panel's
|
|
3469
3498
|
computed accessible name outright, winning over every other source below (a slotted heading,
|
|
@@ -3501,7 +3530,7 @@ when no heading is slotted and `heading` is unset), `body` (wrapper around the d
|
|
|
3501
3530
|
`footer` (wrapper around the `footer` slot)
|
|
3502
3531
|
|
|
3503
3532
|
**Themeable custom properties:** `--lyra-dialog-overlay-color` (default `rgb(0 0 0 / 0.5)` — the
|
|
3504
|
-
backdrop scrim color; component-specific since no shared `--
|
|
3533
|
+
backdrop scrim color; component-specific since no shared `--lyra-*` overlay token exists),
|
|
3505
3534
|
`--lyra-dialog-width` (default unset/`auto` — the panel shrink-wraps to content, unchanged; set it
|
|
3506
3535
|
for an assertive width instead), `--lyra-dialog-max-width` (default `32rem` — the panel's
|
|
3507
3536
|
max-inline-size cap, via `min(var(--lyra-dialog-max-width, var(--lyra-dialog-width, 32rem)), 100%)`;
|
|
@@ -4161,7 +4190,7 @@ fenced/indented `<pre>`), `link` (every rendered `<a>`), `table` (every rendered
|
|
|
4161
4190
|
|
|
4162
4191
|
**Themeable custom properties:** `--lyra-markdown-font-mono` (default `ui-monospace, SFMono-Regular,
|
|
4163
4192
|
Menlo, Consolas, monospace` — the code/code-block font; component-specific since no shared
|
|
4164
|
-
`--
|
|
4193
|
+
`--lyra-*` monospace token exists), plus shared tokens `--lyra-space-xs/-s/-m/-l`,
|
|
4165
4194
|
`--lyra-color-brand-quiet`, `--lyra-color-brand`, `--lyra-color-border`, `--lyra-color-text-quiet`,
|
|
4166
4195
|
`--lyra-radius`.
|
|
4167
4196
|
|
|
@@ -4243,6 +4272,8 @@ conversation-surface level).
|
|
|
4243
4272
|
- `collapsed: boolean = false` (reflected) — whether the message body is hidden; effective whenever
|
|
4244
4273
|
set, independent of `collapsible` (which only controls whether the toggle button itself is
|
|
4245
4274
|
rendered) — mirrors `lyra-widget`'s identical `collapsible`/`collapsed` pair
|
|
4275
|
+
- `attachmentsPosition: 'before'|'after' = 'after'` (attribute `attachments-position`) — places the
|
|
4276
|
+
`attachments` slot before or after the message body; both the visual and reading order follow it
|
|
4246
4277
|
|
|
4247
4278
|
**Events:** `lyra-retry` (no detail payload; fired by the built-in retry button, only rendered when
|
|
4248
4279
|
`status="failed"`), `lyra-collapse-toggle` (`detail: boolean`, the new `collapsed` state — fired when
|
|
@@ -4875,6 +4906,8 @@ wins when both are present.
|
|
|
4875
4906
|
indeterminate state, and filename context so translators can reorder every value
|
|
4876
4907
|
- `uploadFailedLabel: string = 'Upload failed'` (attribute `upload-failed-label`) — visible status
|
|
4877
4908
|
text shown for `status="error"`; override for i18n/locale
|
|
4909
|
+
- `untitledLabel: string = 'Untitled file'` (attribute `untitled-label`) — fallback filename and
|
|
4910
|
+
tooltip when neither `file` nor `name` supplies a name
|
|
4878
4911
|
|
|
4879
4912
|
The component identifies *which* attachment a `lyra-remove`/`lyra-retry` event is about via the
|
|
4880
4913
|
platform's own `id` attribute/property rather than a second, differently-named prop. Set `id="..."`
|
|
@@ -5369,6 +5402,11 @@ emitting `lyra-change`.
|
|
|
5369
5402
|
`<input>`'s own `autocorrect` (Safari/WebKit-specific); empty omits the attribute. Named
|
|
5370
5403
|
`autoCorrect` in JS purely to dodge a `lib.dom.d.ts` typing collision — the wire attribute is
|
|
5371
5404
|
still plain `autocorrect`.
|
|
5405
|
+
- `autocomplete: string = 'off'`, `inputMode: string = ''` (attribute `inputmode`), and
|
|
5406
|
+
`enterKeyHint: string = ''` (attribute `enterkeyhint`) — forwarded to the free-text input;
|
|
5407
|
+
they have no effect in closed-dropdown mode
|
|
5408
|
+
- `autocomplete: string = 'off'`, `inputMode: string = ''` (`inputmode`), and `enterKeyHint: string = ''`
|
|
5409
|
+
(`enterkeyhint`) — forwarded to the free-text mode's native `<input>`.
|
|
5372
5410
|
- `name: string = ''` (reflected)
|
|
5373
5411
|
- `disabled: boolean = false` (reflected)
|
|
5374
5412
|
- `required: boolean = false` (reflected — enforced via `internals.setValidity()`)
|
|
@@ -5573,6 +5611,9 @@ shared overlay stack. First-party invention (no Web Awesome equivalent).
|
|
|
5573
5611
|
- `searchPlaceholder: string = 'Search tools…'` (attribute `search-placeholder`)
|
|
5574
5612
|
- `filter: ToolSelectFilter | null = null` (attribute: false) — overrides the built-in
|
|
5575
5613
|
case-insensitive name/description substring match.
|
|
5614
|
+
- `autocomplete: string = ''`, `spellcheck: boolean = true`, `autocapitalize: string = ''`,
|
|
5615
|
+
`autoCorrect: string = ''` (`autocorrect`), `inputMode: string = ''` (`inputmode`), and
|
|
5616
|
+
`enterKeyHint: string = ''` (`enterkeyhint`) — forwarded to the search `<input>`.
|
|
5576
5617
|
|
|
5577
5618
|
**Methods:** `close(reason: ToolSelectDialogCloseReason = 'api'): void` — closes the dialog, emits
|
|
5578
5619
|
`lyra-close` with `reason`, and returns focus to whatever had it before the dialog opened.
|
|
@@ -6586,6 +6627,8 @@ and it's what every instance renders at zero extra bytes until shiki resolves.
|
|
|
6586
6627
|
for that language — an additive, opt-in escape hatch for a build scoped to just the languages a
|
|
6587
6628
|
consumer actually needs. A `language` absent from this map (or `languages` left unset) falls back
|
|
6588
6629
|
to the default dynamic-import path unchanged.
|
|
6630
|
+
- `languagesOnly: boolean = false` (attribute `languages-only`) — skips the default shiki loader;
|
|
6631
|
+
use when every requested language is supplied through `languages`
|
|
6589
6632
|
|
|
6590
6633
|
**Events:** `lyra-copy` (`detail: { text: string }` — always the raw `code` value, never the
|
|
6591
6634
|
highlighted HTML, and always fires regardless of whether the actual OS clipboard write succeeded),
|
|
@@ -6599,7 +6642,7 @@ button is activated, same event name/shape convention as `<lyra-thinking-panel>`
|
|
|
6599
6642
|
|
|
6600
6643
|
**Themeable custom properties:** `--lyra-code-block-max-height` (default `none` — the consumer-tunable
|
|
6601
6644
|
scroll cap; only takes effect once `max-height` is set), `--lyra-code-block-font` (default
|
|
6602
|
-
`ui-monospace, SFMono-Regular, Menlo, Consolas, monospace` — no shared `--
|
|
6645
|
+
`ui-monospace, SFMono-Regular, Menlo, Consolas, monospace` — no shared `--lyra-*` monospace
|
|
6603
6646
|
token exists to resolve through), plus shared tokens `--lyra-color-border`, `--lyra-radius`,
|
|
6604
6647
|
`--lyra-color-surface`, `--lyra-space-xs/-s/-m`, `--lyra-font`, `--lyra-color-text-quiet`,
|
|
6605
6648
|
`--lyra-color-text`, `--lyra-color-brand`/`-brand-quiet`, `--lyra-transition-fast`,
|
|
@@ -6819,6 +6862,15 @@ renders at the start of the action row, before Deny/Edit/Approve.
|
|
|
6819
6862
|
`false` via a PROPERTY binding, e.g. `.editable=${false}` — a `?editable=${false}`
|
|
6820
6863
|
boolean-attribute binding cannot override a true default). When `false`, `args` is always shown
|
|
6821
6864
|
read-only and can never be changed before approval.
|
|
6865
|
+
- `spellcheck: boolean = false`, `autocapitalize: string = 'off'`,
|
|
6866
|
+
`autoCorrect: string = 'off'` (attribute `autocorrect`), `autocomplete: string = 'off'`,
|
|
6867
|
+
`wrap: 'hard'|'soft'|'off' = 'soft'`, `inputMode: string = ''` (attribute `inputmode`),
|
|
6868
|
+
and `enterKeyHint: string = ''` (attribute `enterkeyhint`) — forwarded to the raw-JSON
|
|
6869
|
+
textarea; the defaults keep browser editing assistance from changing JSON text
|
|
6870
|
+
- `spellcheck: boolean = false`, `autocapitalize: string = 'off'`, `autoCorrect: string = 'off'`
|
|
6871
|
+
(`autocorrect`), `autocomplete: string = 'off'`, `wrap: 'hard'|'soft'|'off' = 'soft'`,
|
|
6872
|
+
`inputMode: string = ''` (`inputmode`), and `enterKeyHint: string = ''` (`enterkeyhint`) —
|
|
6873
|
+
forwarded to the raw-JSON `<textarea>` while editing.
|
|
6822
6874
|
|
|
6823
6875
|
**Methods:** `close(reason: ToolApprovalDialogCloseReason = 'api'): void` — closes the dialog, emits
|
|
6824
6876
|
`lyra-close` with `reason`, and returns focus to whatever had it before the dialog opened; a no-op if
|
|
@@ -7062,6 +7114,10 @@ menu, an avatar menu, or a history row's overflow menu. Uses the WAI-ARIA "menu
|
|
|
7062
7114
|
a no-op for existing consumers), matching `lyra-select`/`lyra-model-select`'s
|
|
7063
7115
|
`this.getAttribute('aria-label') || <computed default>` precedence
|
|
7064
7116
|
|
|
7117
|
+
- `closeOnEscapeAnywhere: boolean = false` (attribute `close-on-escape-anywhere`) — lets Escape
|
|
7118
|
+
close the menu when focus is on slotted non-menu-item content inside the popup; item activation
|
|
7119
|
+
remains scoped to actual menu items
|
|
7120
|
+
|
|
7065
7121
|
**Events:** `lyra-show` (no detail — fires only when `open` transitions to `true`, not for markup
|
|
7066
7122
|
that renders `open` true from the start), `lyra-hide` (same first-render guard, opposite
|
|
7067
7123
|
transition), `lyra-menu-select` (`detail: { value }` — a consolidated re-fire of the activated
|
|
@@ -7843,6 +7899,8 @@ capability as a row.
|
|
|
7843
7899
|
`'Attach files'`); only affects the single-capability button (`[part='trigger']`) — the
|
|
7844
7900
|
multi-capability menu's own trigger keeps its fixed `'Add attachment'` label regardless. Unset
|
|
7845
7901
|
(the default) keeps the built-in English default.
|
|
7902
|
+
- `triggerTitle?: string` (attribute `trigger-title`) — forwards a sighted-user hover tooltip to
|
|
7903
|
+
both the single-capability and multi-capability trigger buttons
|
|
7846
7904
|
|
|
7847
7905
|
**Events:** `lyra-pick` (`detail: { capability: 'files' | 'image'; files: FileList }`) — fired once a
|
|
7848
7906
|
file-backed capability's hidden input produces a real selection. The `FileList` is an independent
|
|
@@ -8228,9 +8286,11 @@ markup.
|
|
|
8228
8286
|
|
|
8229
8287
|
## `lyra-callout`
|
|
8230
8288
|
|
|
8231
|
-
An inline status, warning, or error surface.
|
|
8289
|
+
An inline status, warning, or error surface. Set `inline` for lightweight reactive form or mutation
|
|
8290
|
+
errors without panel chrome.
|
|
8232
8291
|
|
|
8233
|
-
**Properties:** `variant`, `heading`, `closable`, `open`, and `accessibleLabel`
|
|
8292
|
+
**Properties:** `variant`, `heading`, `closable`, `inline`, `open`, and `accessibleLabel`
|
|
8293
|
+
(`accessible-label`).
|
|
8234
8294
|
|
|
8235
8295
|
**Events:** cancelable `lyra-close`; the callout hides after the event unless a listener calls
|
|
8236
8296
|
`preventDefault()`.
|
|
@@ -8297,6 +8357,30 @@ properties `name`, `value`, `disabled`, and `required`, plus `label`, `hint`, an
|
|
|
8297
8357
|
|
|
8298
8358
|
These apply across the whole library rather than to any one component:
|
|
8299
8359
|
|
|
8360
|
+
- **Independence and migration.** Lyra has no runtime, theme, or design-token dependency on
|
|
8361
|
+
Shoelace or Web Awesome. The documented `wa-*` comparisons are migration references only; Lyra's
|
|
8362
|
+
own `lyra-*` tokens, events, localization runtime, and implementation are the source of truth.
|
|
8363
|
+
For a staged Web Awesome migration, map existing `--wa-*` values to `--lyra-theme-*` explicitly
|
|
8364
|
+
in application CSS instead of relying on an implicit compatibility layer.
|
|
8365
|
+
|
|
8366
|
+
- **Internationalization.** Built-in UI copy, accessible names, descriptions, validation messages,
|
|
8367
|
+
status announcements, and empty/loading states resolve through `localize()` and the locale runtime.
|
|
8368
|
+
Register an application catalog with `registerLyraLocale()` or override one instance with
|
|
8369
|
+
`.strings`; locale fallback is exact locale, base language, then English. Date, number, byte,
|
|
8370
|
+
relative-time, and calendar output uses `Intl`. Consumer data and slotted content are never
|
|
8371
|
+
translated automatically.
|
|
8372
|
+
|
|
8373
|
+
- **RTL and direction.** Direction is inherited from `dir`/`lang`; components do not force their own
|
|
8374
|
+
direction. CSS logical properties mirror layout, while directional keyboard and pointer math
|
|
8375
|
+
consults the effective direction. Test both LTR and RTL for any component with horizontal order,
|
|
8376
|
+
start/end placement, drag deltas, or previous/next navigation.
|
|
8377
|
+
|
|
8378
|
+
- **Accessibility and responsive behavior.** Semantic roles live on the shadow-DOM element that owns
|
|
8379
|
+
them, with explicit false states for toggle/selection/expansion ARIA attributes and deliberate
|
|
8380
|
+
host-name forwarding. Form-associated controls preserve `ElementInternals`, reset, validity,
|
|
8381
|
+
focus, and native editing behavior. Reusable layouts respond to their allocated container, and
|
|
8382
|
+
decorative/infinite motion simplifies under `prefers-reduced-motion: reduce`.
|
|
8383
|
+
|
|
8300
8384
|
- **Packaging.** `custom-elements.json` is now in `package.json`'s `files` allowlist and
|
|
8301
8385
|
regenerated by a `prepack` script (`pnpm run manifest`) before publish, so a manifest-driven IDE/
|
|
8302
8386
|
tooling integration (e.g. custom-elements-manifest-based autocomplete) does see an up-to-date copy
|
package/llms.txt
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# @aceshooting/lyra-ui
|
|
2
2
|
|
|
3
|
-
> Free,
|
|
4
|
-
> Web Awesome
|
|
5
|
-
>
|
|
3
|
+
> Free, independent, MIT-licensed Lit web components — an open-source alternative to Shoelace and
|
|
4
|
+
> Web Awesome. Lyra combines accessible form controls, dashboards, charts, data visualization, and
|
|
5
|
+
> Conversation & Agent UI. Selected Web Awesome-compatible components retain documented public names
|
|
6
|
+
> under a `lyra-` prefix for easier migration; the implementation and design system are standalone.
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Awesome-themed app and works standalone with no theme at all.
|
|
8
|
+
Every component resolves its styling through this library's own `--lyra-theme-*` design tokens with
|
|
9
|
+
hardcoded fallbacks, so it works fully standalone with no theme or runtime dependency required.
|
|
10
10
|
|
|
11
11
|
## Docs
|
|
12
12
|
|
|
@@ -18,7 +18,8 @@ Awesome-themed app and works standalone with no theme at all.
|
|
|
18
18
|
known gotchas) for every tag in the library — the primary resource for a coding assistant
|
|
19
19
|
integrating `@aceshooting/lyra-ui`.
|
|
20
20
|
- [README.md](./README.md): Install instructions, the full component catalog, `<wa-*>` →
|
|
21
|
-
`<lyra-*>` migration notes, theming,
|
|
21
|
+
`<lyra-*>` and `<sl-*>` → `<lyra-*>` migration notes, theming, accessibility, i18n, RTL, and
|
|
22
|
+
package-level development commands.
|
|
22
23
|
|
|
23
24
|
## Component categories
|
|
24
25
|
|
|
@@ -81,5 +82,5 @@ The catalog is grouped by capability; `llms-full.txt` follows the same consumer-
|
|
|
81
82
|
## Also useful
|
|
82
83
|
|
|
83
84
|
- Shared internals every tag builds on (`LyraElement` base class, the `FormAssociated` mixin, the
|
|
84
|
-
floating-ui `positioner`, and the `--lyra
|
|
85
|
+
floating-ui `positioner`, and the independent `--lyra-theme-*` design-token layer) are documented at the
|
|
85
86
|
top of `llms-full.txt`, along with cross-cutting packaging notes that apply to the whole library.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aceshooting/lyra-ui",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Free,
|
|
3
|
+
"version": "3.0.0",
|
|
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",
|
|
7
7
|
"custom-elements",
|
|
@@ -16,6 +16,11 @@
|
|
|
16
16
|
"data-visualization",
|
|
17
17
|
"chat-ui",
|
|
18
18
|
"agent-ui",
|
|
19
|
+
"accessible-components",
|
|
20
|
+
"internationalization",
|
|
21
|
+
"rtl",
|
|
22
|
+
"shoelace-alternative",
|
|
23
|
+
"web-awesome-alternative",
|
|
19
24
|
"web-awesome",
|
|
20
25
|
"storybook"
|
|
21
26
|
],
|
|
@@ -50,6 +55,7 @@
|
|
|
50
55
|
".": "./dist/lyra.js",
|
|
51
56
|
"./components/*": "./dist/components/*",
|
|
52
57
|
"./internal/*": "./dist/internal/*",
|
|
58
|
+
"./theme.css": "./dist/theme.css",
|
|
53
59
|
"./testing": "./dist/testing/happy-dom-shims.js"
|
|
54
60
|
},
|
|
55
61
|
"sideEffects": [
|
|
@@ -322,6 +328,7 @@
|
|
|
322
328
|
"./src/components/zoomable-frame/zoomable-frame.ts",
|
|
323
329
|
"./src/components/flag/flag-peer.ts",
|
|
324
330
|
"./dist/lyra.js",
|
|
331
|
+
"./dist/theme.css",
|
|
325
332
|
"./src/lyra.ts"
|
|
326
333
|
],
|
|
327
334
|
"dependencies": {
|