@aceshooting/lyra-ui 8.2.2 → 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 (61) hide show
  1. package/CHANGELOG.md +9 -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/time-input.styles.js +1 -0
  30. package/dist/components/layout/button-group/button-group.styles.js +4 -9
  31. package/dist/components/layout/card/card.styles.js +4 -0
  32. package/dist/components/layout/carousel/carousel.styles.js +1 -0
  33. package/dist/components/layout/control-group/control-group.styles.js +1 -0
  34. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +1 -0
  35. package/dist/components/layout/page/page.styles.js +1 -0
  36. package/dist/components/media/lightbox/lightbox.styles.js +1 -0
  37. package/dist/components/media/map/map-loader.d.ts +3 -3
  38. package/dist/components/media/map/map-loader.js +1 -1
  39. package/dist/components/media/map/map.class.d.ts +3 -2
  40. package/dist/components/media/map/map.styles.js +207 -9
  41. package/dist/components/media/video/video.styles.js +1 -0
  42. package/dist/components/media/video-playlist/video-playlist.styles.js +1 -0
  43. package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +1 -0
  44. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +1 -0
  45. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +1 -0
  46. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +1 -0
  47. package/dist/components/retrieval/rag-answer/rag-answer.styles.js +1 -1
  48. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +1 -0
  49. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -0
  50. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +1 -0
  51. package/dist/components/utility/diff-view/diff-view.styles.js +5 -0
  52. package/dist/components/viewers/document-compare/document-compare.styles.js +1 -0
  53. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +1 -0
  54. package/dist/internal/package-metadata.d.ts +1 -1
  55. package/dist/internal/package-metadata.js +1 -1
  56. package/llms/components/lr-map.md +6 -6
  57. package/llms/peers.md +1 -1
  58. package/llms-full.txt +6 -6
  59. package/package.json +4 -4
  60. package/vscode-html-data.json +1 -1
  61. package/web-types.json +2 -2
@@ -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.2";
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.2";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};
@@ -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
@@ -15482,18 +15482,18 @@ e.g. not installed). The post-mount failure is appended to the document's pre-mo
15482
15482
  **Themeable custom properties:** shared tokens only — `--lr-space-xs/-s`, `--lr-color-surface`,
15483
15483
  `--lr-color-border`, `--lr-shadow`, `--lr-radius`.
15484
15484
 
15485
- **Optional peer deps:** `maplibre-gl` `>=5 <7` (lazy-loaded). The consumer must **separately**
15486
- import `maplibre-gl/dist/maplibre-gl.css`. MapLibre v5's standard build includes its worker.
15487
- MapLibre v6 is ESM-only, requires WebGL2, and additionally needs its module-worker URL configured
15488
- for the bundler once the component cannot choose a bundler-specific worker URL. For Vite with
15489
- 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:
15490
15491
 
15491
15492
  ```html
15492
15493
  <lr-map center="[2.35, 48.85]" zoom="10"></lr-map>
15493
15494
  <script type="module">
15494
15495
  import { setWorkerUrl } from 'maplibre-gl';
15495
15496
  import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
15496
- import 'maplibre-gl/dist/maplibre-gl.css';
15497
15497
  setWorkerUrl(workerUrl);
15498
15498
 
15499
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.2",
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.2",
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",