@aceshooting/lyra-ui 9.0.0 → 9.1.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/CHANGELOG.md CHANGED
@@ -1,5 +1,128 @@
1
1
  # Changelog
2
2
 
3
+ ## 9.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b027f44: Re-export `LyraNodeTypeStyle` from every component module whose public API types a property
8
+ against it (`lr-graph`, `lr-knowledge-graph-explorer`, `lr-drilldown-panel`, `lr-agent-trace`,
9
+ `lr-entity-dossier`, `lr-entity-card`, `lr-memory-panel`, `lr-provenance-panel`,
10
+ `lr-graph-legend`). The type was previously only reachable from the package root barrel
11
+ (`@aceshooting/lyra-ui`'s `LyraNodeTypeStyle` export); a consumer importing one of these
12
+ components from its own granular subpath, as this library's own examples do, had no local type
13
+ to import against and had to either duplicate the shape by hand or reach into the disallowed
14
+ `internal/` path.
15
+ - d8fe77e: Restore `./components/viewers/archive-viewer/archive-viewer-register.js` and
16
+ `./components/viewers/ebook-viewer/ebook-viewer-register.js` as importable package subpaths. Both
17
+ files register a `<lr-document-viewer>` renderer (`application/zip`/`.zip` and
18
+ `application/epub+zip`/`.epub` respectively) and are genuinely opt-in for a granular consumer not
19
+ using the `all.js` compatibility bundle. Neither had an entry in `package.json`'s `exports` map, so
20
+ the documented import pattern (matching `flag-peer.js`'s precedent) hit
21
+ `ERR_PACKAGE_PATH_NOT_EXPORTED` even though both files ship in `dist/` and are correctly declared in
22
+ `sideEffects` — the same defect class as the historical `flag-peer.js` `sideEffects` omission, this
23
+ time in the exports map instead.
24
+
25
+ ### Patch Changes
26
+
27
+ - c9a9303: Document `<lr-heatmap>`'s flat-property-to-`data` replacement, a 9.0.0 breaking change that shipped
28
+ without a changelog entry.
29
+
30
+ 9.0.0 replaced ten independent top-level `<lr-heatmap>` members with a single discriminated-union
31
+ `data` property. The removed members are `mode`, `days`, `rowLabels`, `colLabels`, `values`,
32
+ `firstDayOfWeek`, `columnX`, `rowY`, `weekdayLabelText`, and `monthLabelText`. They are now fields on
33
+ one of the two `data` branches — `HeatmapMatrixData` (`{ kind: 'matrix', rowLabels, colLabels,
34
+ values }`) or `HeatmapCalendarData` (`{ kind: 'calendar', days, firstDayOfWeek?, columnX?, rowY?,
35
+ weekdayLabelText?, monthLabelText? }`) — united as `HeatmapData` and exported from the package root.
36
+
37
+ There are no runtime aliases, and assigning a removed member is silent: Lit accepts it as an
38
+ unobserved instance property, so the component keeps rendering its default empty grid instead of
39
+ erroring. That silence is why this entry exists — the 9.0.0 notes omitted the change entirely, so a
40
+ consumer grepping the changelog for `HeatmapMatrixData`, `HeatmapCalendarData`, `HeatmapData`, or any
41
+ of the removed member names found nothing and had no way to learn the API had moved.
42
+
43
+ The `data` shape itself is unchanged and intentional; only the changelog record was missing.
44
+ `llms/data.md`'s "9.0 migration" note already carries the full recipe, including the related removal
45
+ of the magic `value-label="value"` localization sentinel:
46
+
47
+ ```js
48
+ // removed in 9.0.0
49
+ el.mode = 'matrix';
50
+ el.rowLabels = ['Mon', 'Tue'];
51
+ el.colLabels = ['00h', '06h'];
52
+ el.values = [
53
+ [1, 2],
54
+ [3, 4],
55
+ ];
56
+
57
+ // 9.0.0 and later
58
+ el.data = {
59
+ kind: 'matrix',
60
+ rowLabels: ['Mon', 'Tue'],
61
+ colLabels: ['00h', '06h'],
62
+ values: [
63
+ [1, 2],
64
+ [3, 4],
65
+ ],
66
+ };
67
+ ```
68
+ - 3f294c1: Fix `<lr-lite-chart>`'s first category label colliding with the bottom y-axis tick.
69
+
70
+ A line chart centres its first category label on `plotX`, so that label always reaches left into the
71
+ y-axis tick column — a measured 5.7px horizontal overlap on both Chromium and Firefox. The only thing
72
+ holding the two apart is the vertical gap between the label row and the bottom tick, which is
73
+ `dominant-baseline="middle"` on the plot floor and therefore hangs half its line box below that floor
74
+ into the label row.
75
+
76
+ That gap was 1.3px on Chromium and **-0.7px on Firefox**, whose line box for the same 10px
77
+ `system-ui` font is 16px against Chromium's 14px. Firefox therefore painted the first x-axis label
78
+ overlapping the `0` tick. Raising `CATEGORY_LABEL_OFFSET` 18 → 24 and `PAD_BOTTOM` 24 → 30 together
79
+ leaves ~5px clear on both engines, comfortably past that 2px cross-engine variation.
80
+
81
+ Because both constants moved by the same amount, the category-label row does not shift: the plot
82
+ floor rises instead, so a chart's labels stay where they were and its plot area is 6px shorter. Charts
83
+ with an `x-label` axis title are unaffected beyond that, since `AXIS_TITLE_SPACE` is measured from
84
+ `padBottom`.
85
+
86
+ Note the truncation width model is unchanged: `displayCategoryLabel()` still estimates fit from
87
+ `APPROX_LABEL_CHARACTER_WIDTH`, so a label's *horizontal* extent remains an approximation rather than
88
+ a measurement. This change makes the label row robust to that approximation being wrong rather than
89
+ making the approximation exact.
90
+ - 7ae8930: Document `<lr-tab-group>`'s removed `slot`/`label` child model, a 9.0.0 breaking change that shipped
91
+ without a changelog entry.
92
+
93
+ 9.0.0 removed the pre-9.0 attribute child model, in which a direct `<div slot="x" label="…">` child
94
+ became a tab captioned by its `label` with its own content as the panel, and a sibling
95
+ `slot="x-icon"` child supplied that tab's leading icon. `<lr-tab-group>` now builds its tab list
96
+ only from `<lr-tab panel="x">` descriptors paired with `<lr-tab-panel name="x">` panels; any other
97
+ child element is skipped regardless of its `slot`/`label` attributes, so markup still written in the
98
+ old shape renders an empty tab strip with no console warning.
99
+
100
+ The removal itself is unchanged and intentional — this entry only records it, because the 9.0.0 notes
101
+ omitted it while `README.md` continued to state that the `slot`/`label` shape "still works
102
+ unchanged". Both README claims are corrected (the 7.x → 8.0.0 rename table and the component/mirror
103
+ table), which also clears the same stale claim from three generated `llms/migration.md` rows
104
+ (`<wa-tab>`, `<wa-tab-panel>`, `<sl-tab-panel>`) and the packaged skill reference. `llms/layout.md`
105
+ already described the removal correctly and is unchanged.
106
+
107
+ To migrate, rewrite each former child as one descriptor plus one panel, folding any former
108
+ `slot="x-icon"` sibling's content into the `<lr-tab>`'s own default slot:
109
+
110
+ ```html
111
+ <!-- removed in 9.0.0 -->
112
+ <lr-tab-group>
113
+ <div slot="general" label="General">General settings</div>
114
+ </lr-tab-group>
115
+
116
+ <!-- 9.0.0 and later -->
117
+ <lr-tab-group>
118
+ <lr-tab panel="general">General</lr-tab>
119
+ <lr-tab-panel name="general">General settings</lr-tab-panel>
120
+ </lr-tab-group>
121
+ ```
122
+
123
+ A regression test now asserts a plain `slot`/`label` child produces no tab and no rendered panel, so
124
+ the behavior cannot drift back into being documented as supported.
125
+
3
126
  ## 9.0.0
4
127
 
5
128
  ### Major Changes
package/README.md CHANGED
@@ -307,7 +307,7 @@ doesn't carry it silently adopts the opposite behavior.
307
307
 
308
308
  | 7.x | 8.0.0 | Also |
309
309
  | ---------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
310
- | `<lr-tabs>` | `<lr-tab-group>` | The `lr-tabs-change` event splits into `lr-tab-hide` (outgoing tab) then `lr-tab-show` (incoming), and `--lr-tabs-*` custom properties become `--lr-tab-group-*`. The group now also accepts `<lr-tab>` / `<lr-tab-panel>` children; the library's own `slot`/`label` panel shape still works unchanged. |
310
+ | `<lr-tabs>` | `<lr-tab-group>` | The `lr-tabs-change` event splits into `lr-tab-hide` (outgoing tab) then `lr-tab-show` (incoming), and `--lr-tabs-*` custom properties become `--lr-tab-group-*`. The group is composed from `<lr-tab>` / `<lr-tab-panel>` children. The library's own `slot`/`label` panel-attribute shape was **removed in 9.0.0** — rewrite each former `<div slot="x" label="…">` child as one `<lr-tab panel="x">` plus one `<lr-tab-panel name="x">`, and fold each former `slot="x-icon"` sibling's content into that `<lr-tab>`'s own default slot (mark a decorative glyph `aria-hidden`, since the tab derives its accessible name from that content). A leftover `slot`/`label` child is skipped silently: the strip renders empty. |
311
311
  | `<lr-tree-node>` | `<lr-tree-item>` | |
312
312
 
313
313
  Neither old name is registered as an alias. A tag that silently keeps working under its old name is
@@ -1172,7 +1172,7 @@ each one-liner below.
1172
1172
  | `<lr-image-comparer>` | `wa-comparison` / `sl-image-comparer` | Before/after slotted surfaces with a keyboard-accessible range divider |
1173
1173
  | `<lr-pan-zoom>` | — (extra) | Bounded zoom and scrollable panning for slotted content or an image source, preserving Lyra 7's former zoomable-frame behavior |
1174
1174
  | `<lr-zoomable-frame>` | `wa-zoomable-frame` | Sandboxed iframe preview with safe URL forwarding, discrete zoom levels, optional controls/interaction, and same-origin theme synchronization |
1175
- | `<lr-tab-group>` + `<lr-tab>` + `<lr-tab-panel>` | `wa-tab-group` / `wa-tab` / `wa-tab-panel` / `sl-tab-group` / `sl-tab` / `sl-tab-panel` | Tab strip with `placement` (logical `start`/`end` turn it vertical) and `activation="auto"`/`"manual"`; accepts the upstream `<lr-tab>`/`<lr-tab-panel>` child pairs or this library's own `slot`/`label` panel-attribute shape |
1175
+ | `<lr-tab-group>` + `<lr-tab>` + `<lr-tab-panel>` | `wa-tab-group` / `wa-tab` / `wa-tab-panel` / `sl-tab-group` / `sl-tab` / `sl-tab-panel` | Tab strip with `placement` (logical `start`/`end` turn it vertical) and `activation="auto"`/`"manual"`; composed from the upstream `<lr-tab>`/`<lr-tab-panel>` child pairs |
1176
1176
  | `<lr-checkbox>` | `wa-checkbox` / `sl-checkbox` | Boolean form control, `role="checkbox"` with a visual/`indeterminate` mixed state |
1177
1177
  | `<lr-switch>` | `wa-switch` / `sl-switch` | Boolean toggle-switch form control, `role="switch"` on/off semantics |
1178
1178
  | `<lr-menu>` + `<lr-menu-item>` | `sl-menu` / `sl-menu-item` | Anchored dropdown menu around a consumer-supplied trigger; WAI-ARIA "menu button" pattern with real roving focus (not a listbox) |