@aceshooting/lyra-ui 8.2.1 → 8.2.3

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 (64) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +2 -4
  3. package/custom-elements.json +1 -1
  4. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +1 -1
  5. package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +1 -0
  6. package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +1 -0
  7. package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +1 -0
  8. package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +1 -0
  9. package/dist/components/agent-tools/eval-result/eval-result.styles.js +1 -0
  10. package/dist/components/agent-tools/mcp-app/mcp-app.styles.js +1 -0
  11. package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js +1 -1
  12. package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +1 -1
  13. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -0
  14. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
  15. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -0
  16. package/dist/components/charts/chart/chart.styles.js +1 -0
  17. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +1 -0
  18. package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +1 -0
  19. package/dist/components/conversation/code-block/code-block.styles.js +7 -0
  20. package/dist/components/conversation/message-parts/message-parts.styles.js +1 -0
  21. package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -0
  22. package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -0
  23. package/dist/components/conversation/realtime-session/realtime-session.styles.js +1 -1
  24. package/dist/components/data/calendar/calendar.styles.js +1 -0
  25. package/dist/components/data/data-grid/data-grid.styles.js +1 -0
  26. package/dist/components/data/pagination/pagination.styles.js +1 -0
  27. package/dist/components/data/query-builder/query-builder.styles.js +1 -0
  28. package/dist/components/data/table/table.styles.js +1 -0
  29. package/dist/components/forms/input/input.class.d.ts +9 -0
  30. package/dist/components/forms/input/input.class.js +4 -3
  31. package/dist/components/forms/input/time-input.styles.js +1 -0
  32. package/dist/components/layout/button-group/button-group.styles.js +4 -9
  33. package/dist/components/layout/card/card.styles.js +4 -0
  34. package/dist/components/layout/carousel/carousel.styles.js +1 -0
  35. package/dist/components/layout/control-group/control-group.styles.js +1 -0
  36. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +1 -0
  37. package/dist/components/layout/page/page.styles.js +1 -0
  38. package/dist/components/media/lightbox/lightbox.styles.js +1 -0
  39. package/dist/components/media/map/map-loader.d.ts +3 -3
  40. package/dist/components/media/map/map-loader.js +1 -1
  41. package/dist/components/media/map/map.class.d.ts +3 -2
  42. package/dist/components/media/map/map.styles.js +207 -9
  43. package/dist/components/media/video/video.styles.js +1 -0
  44. package/dist/components/media/video-playlist/video-playlist.styles.js +1 -0
  45. package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +1 -0
  46. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +1 -0
  47. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +1 -0
  48. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +1 -0
  49. package/dist/components/retrieval/rag-answer/rag-answer.styles.js +1 -1
  50. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +1 -0
  51. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -0
  52. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +1 -0
  53. package/dist/components/utility/diff-view/diff-view.styles.js +5 -0
  54. package/dist/components/viewers/document-compare/document-compare.styles.js +1 -0
  55. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +1 -0
  56. package/dist/internal/package-metadata.d.ts +1 -1
  57. package/dist/internal/package-metadata.js +1 -1
  58. package/llms/components/lr-input.md +6 -0
  59. package/llms/components/lr-map.md +6 -6
  60. package/llms/peers.md +1 -1
  61. package/llms-full.txt +12 -6
  62. package/package.json +4 -4
  63. package/vscode-html-data.json +1 -1
  64. package/web-types.json +2 -2
@@ -22,6 +22,173 @@ import{css}from"lit";const styles=css`
22
22
  [part='container'] {
23
23
  position: absolute;
24
24
  inset: 0;
25
+ inline-size: 100%;
26
+ block-size: 100%;
27
+ overflow: hidden;
28
+ }
29
+ /* MapLibre creates these nodes inside the container above, hence inside this component's
30
+ shadow root. Page-level peer CSS cannot reach them; the wrapper owns the layout and
31
+ interaction rules for the MapLibre capabilities it exposes. */
32
+ .maplibregl-canvas-container {
33
+ inline-size: 100%;
34
+ block-size: 100%;
35
+ }
36
+ .maplibregl-canvas {
37
+ position: absolute;
38
+ inset-block-start: 0;
39
+ inset-inline-start: 0;
40
+ }
41
+ .maplibregl-canvas-container.maplibregl-interactive {
42
+ cursor: grab;
43
+ user-select: none;
44
+ }
45
+ .maplibregl-canvas-container.maplibregl-interactive:active {
46
+ cursor: grabbing;
47
+ }
48
+ .maplibregl-canvas-container.maplibregl-touch-zoom-rotate,
49
+ .maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas {
50
+ touch-action: pan-x pan-y;
51
+ }
52
+ .maplibregl-canvas-container.maplibregl-touch-drag-pan,
53
+ .maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas {
54
+ touch-action: pinch-zoom;
55
+ }
56
+ .maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,
57
+ .maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas {
58
+ touch-action: none;
59
+ }
60
+ .maplibregl-marker {
61
+ position: absolute;
62
+ inset-block-start: 0;
63
+ inset-inline-start: 0;
64
+ inline-size: max-content;
65
+ will-change: transform;
66
+ }
67
+ .maplibregl-popup {
68
+ position: absolute;
69
+ inset-block-start: 0;
70
+ inset-inline-start: 0;
71
+ z-index: var(--lr-layer-content);
72
+ display: flex;
73
+ will-change: transform;
74
+ pointer-events: none;
75
+ color: var(--lr-color-text);
76
+ font-family: var(--lr-font);
77
+ font-size: var(--lr-font-size-sm);
78
+ line-height: var(--lr-line-height-normal);
79
+ }
80
+ .maplibregl-popup-anchor-top,
81
+ .maplibregl-popup-anchor-top-left,
82
+ .maplibregl-popup-anchor-top-right {
83
+ flex-direction: column;
84
+ }
85
+ .maplibregl-popup-anchor-bottom,
86
+ .maplibregl-popup-anchor-bottom-left,
87
+ .maplibregl-popup-anchor-bottom-right {
88
+ flex-direction: column-reverse;
89
+ }
90
+ .maplibregl-popup-anchor-left {
91
+ flex-direction: row;
92
+ }
93
+ .maplibregl-popup-anchor-right {
94
+ flex-direction: row-reverse;
95
+ }
96
+ :host(:dir(rtl)) .maplibregl-popup-anchor-left {
97
+ flex-direction: row-reverse;
98
+ }
99
+ :host(:dir(rtl)) .maplibregl-popup-anchor-right {
100
+ flex-direction: row;
101
+ }
102
+ .maplibregl-popup-tip {
103
+ inline-size: 0;
104
+ block-size: 0;
105
+ border: var(--lr-size-0-625rem) solid transparent;
106
+ z-index: var(--lr-layer-content);
107
+ }
108
+ .maplibregl-popup-anchor-top .maplibregl-popup-tip {
109
+ align-self: center;
110
+ border-block-start: none;
111
+ border-block-end-color: var(--lr-color-surface-overlay);
112
+ }
113
+ .maplibregl-popup-anchor-top-left .maplibregl-popup-tip {
114
+ align-self: flex-start;
115
+ border-block-start: none;
116
+ border-inline-start: none;
117
+ border-block-end-color: var(--lr-color-surface-overlay);
118
+ }
119
+ .maplibregl-popup-anchor-top-right .maplibregl-popup-tip {
120
+ align-self: flex-end;
121
+ border-block-start: none;
122
+ border-inline-end: none;
123
+ border-block-end-color: var(--lr-color-surface-overlay);
124
+ }
125
+ .maplibregl-popup-anchor-bottom .maplibregl-popup-tip {
126
+ align-self: center;
127
+ border-block-end: none;
128
+ border-block-start-color: var(--lr-color-surface-overlay);
129
+ }
130
+ .maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip {
131
+ align-self: flex-start;
132
+ border-block-end: none;
133
+ border-inline-start: none;
134
+ border-block-start-color: var(--lr-color-surface-overlay);
135
+ }
136
+ .maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip {
137
+ align-self: flex-end;
138
+ border-block-end: none;
139
+ border-inline-end: none;
140
+ border-block-start-color: var(--lr-color-surface-overlay);
141
+ }
142
+ .maplibregl-popup-anchor-left .maplibregl-popup-tip {
143
+ align-self: center;
144
+ border-inline-start: none;
145
+ border-inline-end-color: var(--lr-color-surface-overlay);
146
+ }
147
+ .maplibregl-popup-anchor-right .maplibregl-popup-tip {
148
+ align-self: center;
149
+ border-inline-end: none;
150
+ border-inline-start-color: var(--lr-color-surface-overlay);
151
+ }
152
+ .maplibregl-popup-content {
153
+ position: relative;
154
+ min-inline-size: var(--lr-icon-button-size);
155
+ padding: var(--lr-space-m);
156
+ padding-inline-end: calc(var(--lr-icon-button-size) + var(--lr-space-xs));
157
+ border: var(--lr-border-width-thin) solid var(--lr-color-border);
158
+ border-radius: var(--lr-radius);
159
+ background: var(--lr-color-surface-overlay);
160
+ box-shadow: var(--lr-shadow-m);
161
+ pointer-events: auto;
162
+ overflow-wrap: anywhere;
163
+ }
164
+ .maplibregl-popup-close-button {
165
+ position: absolute;
166
+ inset-block-start: 0;
167
+ inset-inline-end: 0;
168
+ display: inline-flex;
169
+ align-items: center;
170
+ justify-content: center;
171
+ min-inline-size: var(--lr-icon-button-size);
172
+ min-block-size: var(--lr-icon-button-size);
173
+ padding: 0;
174
+ border: 0;
175
+ border-radius: var(--lr-radius);
176
+ background: transparent;
177
+ color: var(--lr-color-text-quiet);
178
+ font: inherit;
179
+ cursor: pointer;
180
+ }
181
+ .maplibregl-popup-close-button:hover {
182
+ background: var(--lr-color-brand-quiet);
183
+ color: var(--lr-color-brand);
184
+ }
185
+ .maplibregl-popup-close-button:active {
186
+ background: color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));
187
+ color: var(--lr-color-brand);
188
+ }
189
+ .maplibregl-popup-close-button:focus-visible {
190
+ outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
191
+ outline-offset: calc(-1 * var(--lr-focus-ring-offset));
25
192
  }
26
193
  /* Mirrors docx-viewer.styles.ts's identical [part='error'] treatment for the same "optional
27
194
  peer dependency missing" failure shape. */
@@ -69,15 +236,8 @@ import{css}from"lit";const styles=css`
69
236
  flex: 0 0 auto;
70
237
  }
71
238
 
72
- /* maplibre-gl injects its attribution/logo controls INTO [part='container'], i.e. into this
73
- shadow root -- which the consumer's document-level \`maplibre-gl.css\` (the import map-loader.ts
74
- tells them to add) can never reach across the shadow boundary. Without it the attribution
75
- control is an unstyled <details>/<summary>: the corner anchors have no positioning so the
76
- attribution flows in-line BELOW the canvas, and the <summary> shows the browser's default
77
- disclosure triangle (a stray "▼"). Porting the essential positioning + summary reset here --
78
- the same approach pdf-viewer.styles.ts uses for pdf.js's textLayer CSS -- anchors the
79
- attribution to the map corner as an overlay and removes the marker. Only the attribution/
80
- container rules are ported (this wrapper exposes no zoom/geolocate/etc. controls). */
239
+ /* MapLibre's attribution control is generated in the same shadow-local container. Keep it
240
+ anchored over the map and use Lyra's own surface, typography, and interaction tokens. */
81
241
  .maplibregl-ctrl-top-left,
82
242
  .maplibregl-ctrl-top-right,
83
243
  .maplibregl-ctrl-bottom-left,
@@ -105,6 +265,7 @@ import{css}from"lit";const styles=css`
105
265
  .maplibregl-ctrl {
106
266
  margin: var(--lr-space-xs);
107
267
  pointer-events: auto;
268
+ transform: translate(0);
108
269
  }
109
270
  .maplibregl-ctrl-attrib {
110
271
  padding: 0 var(--lr-space-xs);
@@ -120,6 +281,43 @@ import{css}from"lit";const styles=css`
120
281
  .maplibregl-ctrl-attrib a:hover {
121
282
  text-decoration: underline;
122
283
  }
284
+ .maplibregl-ctrl-attrib-inner {
285
+ overflow-wrap: anywhere;
286
+ }
287
+ .maplibregl-ctrl-attrib-button {
288
+ display: none;
289
+ position: absolute;
290
+ inset-block-start: 0;
291
+ inset-inline-end: 0;
292
+ inline-size: var(--lr-icon-button-size);
293
+ block-size: var(--lr-icon-button-size);
294
+ padding: 0;
295
+ border: 0;
296
+ border-radius: var(--lr-radius-pill);
297
+ background: transparent;
298
+ color: var(--lr-color-text);
299
+ cursor: pointer;
300
+ }
301
+ .maplibregl-ctrl-attrib.maplibregl-compact {
302
+ position: relative;
303
+ min-block-size: var(--lr-icon-button-size);
304
+ padding-inline-end: var(--lr-icon-button-size);
305
+ }
306
+ .maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner {
307
+ display: none;
308
+ }
309
+ .maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,
310
+ .maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner {
311
+ display: block;
312
+ }
313
+ .maplibregl-ctrl-attrib-button:hover,
314
+ .maplibregl-ctrl-attrib-button:active {
315
+ background: var(--lr-color-brand-quiet);
316
+ }
317
+ .maplibregl-ctrl-attrib-button:focus-visible {
318
+ outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
319
+ outline-offset: calc(-1 * var(--lr-focus-ring-offset));
320
+ }
123
321
  /* Remove the native <summary> disclosure marker (the stray "▼") on the compact-toggle button. */
124
322
  .maplibregl-ctrl-attrib summary {
125
323
  list-style: none;
@@ -3,6 +3,7 @@ import{css}from"lit";const styles=css`
3
3
  display: block;
4
4
  color: var(--controls-color, var(--lr-color-text));
5
5
  container-type: inline-size;
6
+ contain-intrinsic-inline-size: var(--lr-size-20rem);
6
7
  }
7
8
 
8
9
  :host([hidden]) {
@@ -2,6 +2,7 @@ import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
4
  container-type: inline-size;
5
+ contain-intrinsic-inline-size: var(--lr-size-20rem);
5
6
  color: var(--lr-color-text);
6
7
  }
7
8
 
@@ -10,6 +10,7 @@ import{css}from"lit";const styles=css`
10
10
  border-radius: var(--lr-radius);
11
11
  background: var(--lr-color-surface-raised);
12
12
  container-type: inline-size;
13
+ contain-intrinsic-inline-size: var(--lr-size-20rem);
13
14
  }
14
15
 
15
16
  [part='iframe'] {
@@ -2,6 +2,7 @@ import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
4
  container-type: inline-size;
5
+ contain-intrinsic-inline-size: var(--lr-size-20rem);
5
6
  }
6
7
  [part='list'] {
7
8
  display: flex;
@@ -2,6 +2,7 @@ import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
4
  container-type: inline-size;
5
+ contain-intrinsic-inline-size: var(--lr-size-20rem);
5
6
  }
6
7
 
7
8
  [part='base'] {
@@ -2,6 +2,7 @@ import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
4
  container-type: inline-size;
5
+ contain-intrinsic-inline-size: var(--lr-size-20rem);
5
6
  }
6
7
 
7
8
  [part='base'] {
@@ -1,5 +1,5 @@
1
1
  import{css}from"lit";const styles=css`
2
- :host { display: block; container-type: inline-size; }
2
+ :host { display: block; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); }
3
3
  [part='base'] { display: flex; flex-direction: column; gap: var(--lr-space-m); }
4
4
  [part='answer'] { min-inline-size: 0; }
5
5
  [part='citations'], [part='sources'] { display: flex; flex-direction: column; gap: var(--lr-space-xs); }
@@ -2,6 +2,7 @@ import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
4
  container-type: inline-size;
5
+ contain-intrinsic-inline-size: var(--lr-size-20rem);
5
6
  }
6
7
  [part='base'] {
7
8
  display: flex;
@@ -2,6 +2,7 @@ import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
4
  container-type: inline-size;
5
+ contain-intrinsic-inline-size: var(--lr-size-20rem);
5
6
  }
6
7
  [part='base'] {
7
8
  min-inline-size: 0;
@@ -2,6 +2,7 @@ import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
4
  container-type: inline-size;
5
+ contain-intrinsic-inline-size: var(--lr-size-20rem);
5
6
  }
6
7
 
7
8
  [part='base'] {
@@ -47,6 +47,11 @@ import{css}from"lit";const styles=css`
47
47
  font-size: var(--lr-font-size-sm);
48
48
  line-height: var(--lr-line-height-snug);
49
49
  white-space: pre-wrap;
50
+ /* The base/side owns horizontal scrolling while each line owns its change-state background.
51
+ Grow that painted box with an unbroken line, but keep short lines filling the scrollport. */
52
+ box-sizing: border-box;
53
+ inline-size: max-content;
54
+ min-inline-size: 100%;
50
55
  }
51
56
  [part='line']:not([data-type='fold']) {
52
57
  /* Diffed source code is read left-to-right regardless of the surrounding document direction --
@@ -2,6 +2,7 @@ import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
4
  container-type: inline-size;
5
+ contain-intrinsic-inline-size: var(--lr-size-20rem);
5
6
  --lr-document-compare-pane-max-height: var(--lr-size-24rem);
6
7
  }
7
8
 
@@ -6,6 +6,7 @@ import{css}from"lit";const styles=css`
6
6
  allocated width (a chat transcript, a split pane, a narrow dialog) instead of the page
7
7
  viewport's -- a reusable primitive can be squeezed into a narrow panel on a wide desktop. */
8
8
  container-type: inline-size;
9
+ contain-intrinsic-inline-size: var(--lr-size-20rem);
9
10
  }
10
11
  [part='base'] {
11
12
  display: block;
@@ -3,4 +3,4 @@
3
3
  * Run `pnpm package-metadata` after changing package identity or version.
4
4
  */
5
5
  export declare const LYRA_PACKAGE_NAME: "@aceshooting/lyra-ui";
6
- export declare const LYRA_PACKAGE_VERSION: "8.2.1";
6
+ export declare const LYRA_PACKAGE_VERSION: "8.2.3";
@@ -1 +1 @@
1
- const LYRA_PACKAGE_NAME="@aceshooting/lyra-ui";const LYRA_PACKAGE_VERSION="8.2.1";export{LYRA_PACKAGE_NAME,LYRA_PACKAGE_VERSION};
1
+ const LYRA_PACKAGE_NAME="@aceshooting/lyra-ui";const LYRA_PACKAGE_VERSION="8.2.3";export{LYRA_PACKAGE_NAME,LYRA_PACKAGE_VERSION};
@@ -42,6 +42,12 @@ see "Enter-to-submit" below for the exact rules and for which controls deliberat
42
42
  - `value: string = ''` (from `FormAssociated`)
43
43
  - `defaultValue: string = ''` — reset value, backed by the standard `value` content attribute;
44
44
  `default-value` is accepted as a Shoelace attribute alias
45
+ - `name: string` (from `FormAssociated`) and the plain inherited `id` are both forwarded to the
46
+ internal native `<input>` (previously the internal input carried neither, only a fixed
47
+ `id="input"`), so shadow-DOM-aware password managers that key field detection off the actual
48
+ control's own `name`/`id` — not `autocomplete` alone — recognize `<lr-input>` fields. The
49
+ internal `<label for>` tracks whichever id is in use. Leaving `id` unset on the host keeps the
50
+ internal input at `id="input"`, identical to before
45
51
  - `placeholder: string = ''`
46
52
  - `clearable: boolean = false` (reflected) — shows a localized clear action while a `text` or
47
53
  `search` input has a value; clearing preserves input focus
@@ -85,18 +85,18 @@ e.g. not installed). The post-mount failure is appended to the document's pre-mo
85
85
  **Themeable custom properties:** shared tokens only — `--lr-space-xs/-s`, `--lr-color-surface`,
86
86
  `--lr-color-border`, `--lr-shadow`, `--lr-radius`.
87
87
 
88
- **Optional peer deps:** `maplibre-gl` `>=5 <7` (lazy-loaded). The consumer must **separately**
89
- import `maplibre-gl/dist/maplibre-gl.css`. MapLibre v5's standard build includes its worker.
90
- MapLibre v6 is ESM-only, requires WebGL2, and additionally needs its module-worker URL configured
91
- for the bundler once the component cannot choose a bundler-specific worker URL. For Vite with
92
- v6:
88
+ **Optional peer deps:** `maplibre-gl` `>=5 <7` (lazy-loaded). `<lr-map>` styles MapLibre's
89
+ generated canvas, marker, popup, and control DOM inside its shadow root; a page-level MapLibre
90
+ stylesheet is neither required nor able to reach those nodes. MapLibre v5's standard build includes
91
+ its worker. MapLibre v6 is ESM-only, requires WebGL2, and additionally needs its module-worker URL
92
+ configured for the bundler once — the component cannot choose a bundler-specific worker URL. For
93
+ Vite with v6:
93
94
 
94
95
  ```html
95
96
  <lr-map center="[2.35, 48.85]" zoom="10"></lr-map>
96
97
  <script type="module">
97
98
  import { setWorkerUrl } from 'maplibre-gl';
98
99
  import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
99
- import 'maplibre-gl/dist/maplibre-gl.css';
100
100
  setWorkerUrl(workerUrl);
101
101
 
102
102
  const m = document.querySelector('lr-map');
package/llms/peers.md CHANGED
@@ -50,7 +50,7 @@ changes the component library version without installing a supported SheetJS rel
50
50
  | `marked` | `^18.0.9` | `lr-markdown`, `lr-markdown-core`, `lr-message-parts`, `lr-widget-renderer` |
51
51
  | `papaparse` | `^5.5.4` | `lr-csv-viewer`, `lr-dataset-viewer` |
52
52
  | `pdfjs-dist` | `^6.2.108` | `lr-pdf-viewer` |
53
- | `postal-mime` | `^2.7.5` | `lr-email-viewer` |
53
+ | `postal-mime` | `^2.7.6` | `lr-email-viewer` |
54
54
  | `qrcode` | `^1.5.4` | `lr-qr-code` |
55
55
  | `react` | `>=19 <20` | type-only `@aceshooting/lyra-ui/custom-elements-jsx` entry (no runtime import) |
56
56
  | `shiki` | `^4.4.2` | `lr-code-block`, `lr-code-block-core`, `lr-diff-view`, `lr-document-compare`, `lr-markdown`, `lr-markdown-core`, `lr-message-parts`, `lr-widget-renderer` |
package/llms-full.txt CHANGED
@@ -3393,6 +3393,12 @@ see "Enter-to-submit" below for the exact rules and for which controls deliberat
3393
3393
  - `value: string = ''` (from `FormAssociated`)
3394
3394
  - `defaultValue: string = ''` — reset value, backed by the standard `value` content attribute;
3395
3395
  `default-value` is accepted as a Shoelace attribute alias
3396
+ - `name: string` (from `FormAssociated`) and the plain inherited `id` are both forwarded to the
3397
+ internal native `<input>` (previously the internal input carried neither, only a fixed
3398
+ `id="input"`), so shadow-DOM-aware password managers that key field detection off the actual
3399
+ control's own `name`/`id` — not `autocomplete` alone — recognize `<lr-input>` fields. The
3400
+ internal `<label for>` tracks whichever id is in use. Leaving `id` unset on the host keeps the
3401
+ internal input at `id="input"`, identical to before
3396
3402
  - `placeholder: string = ''`
3397
3403
  - `clearable: boolean = false` (reflected) — shows a localized clear action while a `text` or
3398
3404
  `search` input has a value; clearing preserves input focus
@@ -15476,18 +15482,18 @@ e.g. not installed). The post-mount failure is appended to the document's pre-mo
15476
15482
  **Themeable custom properties:** shared tokens only — `--lr-space-xs/-s`, `--lr-color-surface`,
15477
15483
  `--lr-color-border`, `--lr-shadow`, `--lr-radius`.
15478
15484
 
15479
- **Optional peer deps:** `maplibre-gl` `>=5 <7` (lazy-loaded). The consumer must **separately**
15480
- import `maplibre-gl/dist/maplibre-gl.css`. MapLibre v5's standard build includes its worker.
15481
- MapLibre v6 is ESM-only, requires WebGL2, and additionally needs its module-worker URL configured
15482
- for the bundler once the component cannot choose a bundler-specific worker URL. For Vite with
15483
- v6:
15485
+ **Optional peer deps:** `maplibre-gl` `>=5 <7` (lazy-loaded). `<lr-map>` styles MapLibre's
15486
+ generated canvas, marker, popup, and control DOM inside its shadow root; a page-level MapLibre
15487
+ stylesheet is neither required nor able to reach those nodes. MapLibre v5's standard build includes
15488
+ its worker. MapLibre v6 is ESM-only, requires WebGL2, and additionally needs its module-worker URL
15489
+ configured for the bundler once — the component cannot choose a bundler-specific worker URL. For
15490
+ Vite with v6:
15484
15491
 
15485
15492
  ```html
15486
15493
  <lr-map center="[2.35, 48.85]" zoom="10"></lr-map>
15487
15494
  <script type="module">
15488
15495
  import { setWorkerUrl } from 'maplibre-gl';
15489
15496
  import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
15490
- import 'maplibre-gl/dist/maplibre-gl.css';
15491
15497
  setWorkerUrl(workerUrl);
15492
15498
 
15493
15499
  const m = document.querySelector('lr-map');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aceshooting/lyra-ui",
3
- "version": "8.2.1",
3
+ "version": "8.2.3",
4
4
  "description": "Free, independent Lit web components: an open-source alternative to Shoelace and Web Awesome with accessible forms, dashboards, charts, and agent UI.",
5
5
  "keywords": [
6
6
  "web-components",
@@ -1376,7 +1376,7 @@
1376
1376
  "marked": "^18.0.9",
1377
1377
  "papaparse": "^5.5.4",
1378
1378
  "pdfjs-dist": "^6.2.108",
1379
- "postal-mime": "^2.7.5",
1379
+ "postal-mime": "^2.7.6",
1380
1380
  "qrcode": "^1.5.4",
1381
1381
  "react": ">=19 <20",
1382
1382
  "shiki": "^4.4.2",
@@ -1510,7 +1510,7 @@
1510
1510
  "katex": "^0.18.1",
1511
1511
  "libphonenumber-js": "^1.13.10",
1512
1512
  "mammoth": "^1.12.0",
1513
- "maplibre-gl": "^6.1.0",
1513
+ "maplibre-gl": "^6.2.0",
1514
1514
  "marked": "^18.0.9",
1515
1515
  "oxc-parser": "^0.143.0",
1516
1516
  "papaparse": "^5.5.4",
@@ -1518,7 +1518,7 @@
1518
1518
  "pixelmatch": "^7.2.0",
1519
1519
  "playwright": "^1.62.1",
1520
1520
  "pngjs": "^7.0.0",
1521
- "postal-mime": "^2.7.5",
1521
+ "postal-mime": "^2.7.6",
1522
1522
  "qrcode": "^1.5.4",
1523
1523
  "react": "^19.2.8",
1524
1524
  "shiki": "^4.4.2",
@@ -13733,7 +13733,7 @@
13733
13733
  "name": "lr-map",
13734
13734
  "description": {
13735
13735
  "kind": "markdown",
13736
- "value": "`<lr-map>` — a maplibre-gl wrapper with a declarative legend, choropleth\nGeoJSON layer, markers, and additive `dataLayers` GeoJSON overlays\n(arbitrary shapes rendered as a source plus fill/line/circle layers,\nindependent of `choropleth`'s field/stops color-interpolation), plus a peer-neutral\n`map` getter for common imperative operations. Its runtime value is the underlying MapLibre\nmap, while its declaration stays independent of the optional peer. Requires `maplibre-gl`\nv5 or v6 (consumers also import its CSS). MapLibre v6 is ESM-only, requires WebGL2, and needs\nits module-worker URL configured once; v5's standard build includes its worker.\n\nThe underlying `maplibregl.Map` — and the WebGL context it opens — isn't\nconstructed until this element is first visible in the viewport (tracked\nvia `IntersectionObserver`), even once the `maplibre-gl` peer dependency\nhas finished loading. Browsers hard-cap concurrent WebGL contexts per\npage, so a grid/dashboard of many `<lr-map>` instances only constructs\nthe ones actually on-screen instead of racing to exhaust that budget the\ninstant each one mounts. `map` stays `undefined` (and `lr-map-load`\ndoesn't fire) until construction actually happens.\n\n---\n\n**Component metadata**\n\n- Status: `stable`\n- Since: `4.0.0`\n- Rationale: This exact lr-* tag appears in a published Lyra release manifest and remains a supported public contract under semver.\n- Graduation: Already stable; it retains that status while its documented behavior, accessibility, compatibility, and cross-browser support remain part of the public contract.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The non-semantic map wrapper. It exposes `aria-busy=\"true\"` while the optional map library loads and contains ordinary, non-live localized loading text. |\n| `container` | The MapLibre container. Its generated canvas is the actual focusable map region and receives the host-first accessible name and effective locale. |\n| `error` | Visible message shown instead of `container` if the optional `maplibre-gl` peer dependency fails to load (e.g. not installed); the transition is announced through the shared light-DOM assertive region. ⚠️ The default `mapStyle` (when unset) uses OpenStreetMap's demo tile server, which is not suitable for production traffic — see the `DEFAULT_STYLE` doc comment above. Always pass an explicit `mapStyle` in production. |\n| `legend` | The map legend. |\n| `legend-swatch` | A legend color swatch. |"
13736
+ "value": "`<lr-map>` — a maplibre-gl wrapper with a declarative legend, choropleth\nGeoJSON layer, markers, and additive `dataLayers` GeoJSON overlays\n(arbitrary shapes rendered as a source plus fill/line/circle layers,\nindependent of `choropleth`'s field/stops color-interpolation), plus a peer-neutral\n`map` getter for common imperative operations. Its runtime value is the underlying MapLibre\nmap, while its declaration stays independent of the optional peer. Requires `maplibre-gl`\nv5 or v6; the component styles MapLibre's generated canvas, marker, popup, and control DOM\ninside its shadow root. MapLibre v6 is ESM-only, requires WebGL2, and needs its module-worker\nURL configured once; v5's standard build includes its worker.\n\nThe underlying `maplibregl.Map` — and the WebGL context it opens — isn't\nconstructed until this element is first visible in the viewport (tracked\nvia `IntersectionObserver`), even once the `maplibre-gl` peer dependency\nhas finished loading. Browsers hard-cap concurrent WebGL contexts per\npage, so a grid/dashboard of many `<lr-map>` instances only constructs\nthe ones actually on-screen instead of racing to exhaust that budget the\ninstant each one mounts. `map` stays `undefined` (and `lr-map-load`\ndoesn't fire) until construction actually happens.\n\n---\n\n**Component metadata**\n\n- Status: `stable`\n- Since: `4.0.0`\n- Rationale: This exact lr-* tag appears in a published Lyra release manifest and remains a supported public contract under semver.\n- Graduation: Already stable; it retains that status while its documented behavior, accessibility, compatibility, and cross-browser support remain part of the public contract.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The non-semantic map wrapper. It exposes `aria-busy=\"true\"` while the optional map library loads and contains ordinary, non-live localized loading text. |\n| `container` | The MapLibre container. Its generated canvas is the actual focusable map region and receives the host-first accessible name and effective locale. |\n| `error` | Visible message shown instead of `container` if the optional `maplibre-gl` peer dependency fails to load (e.g. not installed); the transition is announced through the shared light-DOM assertive region. ⚠️ The default `mapStyle` (when unset) uses OpenStreetMap's demo tile server, which is not suitable for production traffic — see the `DEFAULT_STYLE` doc comment above. Always pass an explicit `mapStyle` in production. |\n| `legend` | The map legend. |\n| `legend-swatch` | A legend color swatch. |"
13737
13737
  },
13738
13738
  "attributes": [
13739
13739
  {
package/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@aceshooting/lyra-ui",
4
- "version": "8.2.1",
4
+ "version": "8.2.3",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -13167,7 +13167,7 @@
13167
13167
  },
13168
13168
  {
13169
13169
  "name": "lr-map",
13170
- "description": "`<lr-map>` — a maplibre-gl wrapper with a declarative legend, choropleth\nGeoJSON layer, markers, and additive `dataLayers` GeoJSON overlays\n(arbitrary shapes rendered as a source plus fill/line/circle layers,\nindependent of `choropleth`'s field/stops color-interpolation), plus a peer-neutral\n`map` getter for common imperative operations. Its runtime value is the underlying MapLibre\nmap, while its declaration stays independent of the optional peer. Requires `maplibre-gl`\nv5 or v6 (consumers also import its CSS). MapLibre v6 is ESM-only, requires WebGL2, and needs\nits module-worker URL configured once; v5's standard build includes its worker.\n\nThe underlying `maplibregl.Map` — and the WebGL context it opens — isn't\nconstructed until this element is first visible in the viewport (tracked\nvia `IntersectionObserver`), even once the `maplibre-gl` peer dependency\nhas finished loading. Browsers hard-cap concurrent WebGL contexts per\npage, so a grid/dashboard of many `<lr-map>` instances only constructs\nthe ones actually on-screen instead of racing to exhaust that budget the\ninstant each one mounts. `map` stays `undefined` (and `lr-map-load`\ndoesn't fire) until construction actually happens.\n\n---\n\n**Component metadata**\n\n- Status: `stable`\n- Since: `4.0.0`\n- Rationale: This exact lr-* tag appears in a published Lyra release manifest and remains a supported public contract under semver.\n- Graduation: Already stable; it retains that status while its documented behavior, accessibility, compatibility, and cross-browser support remain part of the public contract.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The non-semantic map wrapper. It exposes `aria-busy=\"true\"` while the optional map library loads and contains ordinary, non-live localized loading text. |\n| `container` | The MapLibre container. Its generated canvas is the actual focusable map region and receives the host-first accessible name and effective locale. |\n| `error` | Visible message shown instead of `container` if the optional `maplibre-gl` peer dependency fails to load (e.g. not installed); the transition is announced through the shared light-DOM assertive region. ⚠️ The default `mapStyle` (when unset) uses OpenStreetMap's demo tile server, which is not suitable for production traffic — see the `DEFAULT_STYLE` doc comment above. Always pass an explicit `mapStyle` in production. |\n| `legend` | The map legend. |\n| `legend-swatch` | A legend color swatch. |",
13170
+ "description": "`<lr-map>` — a maplibre-gl wrapper with a declarative legend, choropleth\nGeoJSON layer, markers, and additive `dataLayers` GeoJSON overlays\n(arbitrary shapes rendered as a source plus fill/line/circle layers,\nindependent of `choropleth`'s field/stops color-interpolation), plus a peer-neutral\n`map` getter for common imperative operations. Its runtime value is the underlying MapLibre\nmap, while its declaration stays independent of the optional peer. Requires `maplibre-gl`\nv5 or v6; the component styles MapLibre's generated canvas, marker, popup, and control DOM\ninside its shadow root. MapLibre v6 is ESM-only, requires WebGL2, and needs its module-worker\nURL configured once; v5's standard build includes its worker.\n\nThe underlying `maplibregl.Map` — and the WebGL context it opens — isn't\nconstructed until this element is first visible in the viewport (tracked\nvia `IntersectionObserver`), even once the `maplibre-gl` peer dependency\nhas finished loading. Browsers hard-cap concurrent WebGL contexts per\npage, so a grid/dashboard of many `<lr-map>` instances only constructs\nthe ones actually on-screen instead of racing to exhaust that budget the\ninstant each one mounts. `map` stays `undefined` (and `lr-map-load`\ndoesn't fire) until construction actually happens.\n\n---\n\n**Component metadata**\n\n- Status: `stable`\n- Since: `4.0.0`\n- Rationale: This exact lr-* tag appears in a published Lyra release manifest and remains a supported public contract under semver.\n- Graduation: Already stable; it retains that status while its documented behavior, accessibility, compatibility, and cross-browser support remain part of the public contract.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The non-semantic map wrapper. It exposes `aria-busy=\"true\"` while the optional map library loads and contains ordinary, non-live localized loading text. |\n| `container` | The MapLibre container. Its generated canvas is the actual focusable map region and receives the host-first accessible name and effective locale. |\n| `error` | Visible message shown instead of `container` if the optional `maplibre-gl` peer dependency fails to load (e.g. not installed); the transition is announced through the shared light-DOM assertive region. ⚠️ The default `mapStyle` (when unset) uses OpenStreetMap's demo tile server, which is not suitable for production traffic — see the `DEFAULT_STYLE` doc comment above. Always pass an explicit `mapStyle` in production. |\n| `legend` | The map legend. |\n| `legend-swatch` | A legend color swatch. |",
13171
13171
  "attributes": [
13172
13172
  {
13173
13173
  "name": "center",