@ponchia/ui 0.6.12 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CHANGELOG.md +210 -0
  2. package/MIGRATIONS.json +14 -0
  3. package/README.md +14 -6
  4. package/behaviors/dialog.d.ts.map +1 -1
  5. package/behaviors/dialog.js +14 -0
  6. package/behaviors/modal.d.ts +4 -0
  7. package/behaviors/modal.d.ts.map +1 -1
  8. package/behaviors/modal.js +4 -0
  9. package/behaviors/splitter.d.ts +2 -0
  10. package/behaviors/splitter.d.ts.map +1 -1
  11. package/behaviors/splitter.js +15 -1
  12. package/behaviors/theme.d.ts +3 -2
  13. package/behaviors/theme.d.ts.map +1 -1
  14. package/behaviors/theme.js +10 -6
  15. package/bin/bronto-ui-check.mjs +286 -0
  16. package/classes/classes.json +86 -7
  17. package/classes/index.d.ts +53 -1
  18. package/classes/index.js +60 -0
  19. package/classes/vscode.css-custom-data.json +24 -0
  20. package/css/app.css +14 -3
  21. package/css/disclosure.css +15 -5
  22. package/css/dots.css +43 -18
  23. package/css/feedback.css +46 -8
  24. package/css/forms.css +3 -3
  25. package/css/navigation.css +1 -1
  26. package/css/overlay.css +19 -5
  27. package/css/primitives.css +101 -6
  28. package/css/report.css +0 -40
  29. package/css/site.css +19 -3
  30. package/css/skins.css +97 -3
  31. package/css/state.css +161 -0
  32. package/css/table.css +1 -1
  33. package/css/tokens.css +6 -0
  34. package/css/workbench.css +151 -0
  35. package/dist/bronto.css +1 -1
  36. package/dist/css/app.css +1 -1
  37. package/dist/css/disclosure.css +1 -1
  38. package/dist/css/dots.css +1 -1
  39. package/dist/css/feedback.css +1 -1
  40. package/dist/css/forms.css +1 -1
  41. package/dist/css/navigation.css +1 -1
  42. package/dist/css/overlay.css +1 -1
  43. package/dist/css/primitives.css +1 -1
  44. package/dist/css/report-kit.css +1 -1
  45. package/dist/css/report.css +1 -1
  46. package/dist/css/site.css +1 -1
  47. package/dist/css/skins.css +1 -1
  48. package/dist/css/state.css +1 -1
  49. package/dist/css/table.css +1 -1
  50. package/dist/css/tokens.css +1 -1
  51. package/dist/css/workbench.css +1 -1
  52. package/docs/adr/0001-color-system.md +32 -3
  53. package/docs/adr/0004-prune-unused-adapters.md +34 -0
  54. package/docs/architecture.md +14 -10
  55. package/docs/command.md +18 -4
  56. package/docs/contrast.md +102 -18
  57. package/docs/migrations/0.6-to-0.7.md +85 -0
  58. package/docs/package-contract.md +10 -5
  59. package/docs/reference.md +52 -1
  60. package/docs/reporting.md +8 -8
  61. package/docs/stability.md +39 -9
  62. package/docs/state.md +51 -1
  63. package/docs/theming.md +67 -5
  64. package/docs/usage.md +119 -19
  65. package/docs/workbench.md +99 -6
  66. package/llms.txt +7 -3
  67. package/package.json +13 -3
  68. package/qwik/index.d.ts.map +1 -1
  69. package/qwik/index.js +4 -0
  70. package/react/index.d.ts.map +1 -1
  71. package/react/index.js +4 -0
  72. package/solid/index.d.ts.map +1 -1
  73. package/solid/index.js +4 -0
  74. package/svelte/index.d.ts.map +1 -1
  75. package/svelte/index.js +4 -0
  76. package/tokens/figma.variables.json +84 -0
  77. package/tokens/index.d.ts +2 -2
  78. package/tokens/index.js +23 -0
  79. package/tokens/index.json +12 -0
  80. package/tokens/resolved.json +6 -0
  81. package/tokens/skins.js +117 -7
  82. package/tokens/tokens.dtcg.json +2514 -399
  83. package/vue/index.d.ts.map +1 -1
  84. package/vue/index.js +4 -0
package/docs/usage.md CHANGED
@@ -167,15 +167,50 @@ a `.ui-legend` key, and fallback data. Full LLM/static report cookbook:
167
167
 
168
168
  ## Buttons: variant and size
169
169
 
170
- - **primary** the single most important action in a view. Aim for one.
170
+ - **primary is the bare `ui-button`.** There is no `--primary` and no
171
+ `--accent`: the unmodified class already paints the accent fill, and the
172
+ variants below all step *down* from it. Aim for one per view. Consumers reach
173
+ for a `--primary` or `--accent` modifier often enough that it is worth
174
+ stating plainly: neither exists. Writing one is harmless *and invisible* —
175
+ the unknown class does nothing and the button still looks right, which is why
176
+ the mistake survives review. `bronto-ui-check` is what catches it.
171
177
  - **ghost** — secondary actions; the default for "another button here".
172
178
  - **subtle** — tertiary / low-stakes (toolbar, inline).
179
+ - **danger** — destructive confirmation.
173
180
  - Size: default everywhere; `--sm` for dense tooling (toolbars,
174
- pagination, table row actions), `--lg` for a hero CTA only.
181
+ pagination, table row actions), `--lg` for a hero CTA only, `--dense` when a
182
+ bar's *height* is the constraint (a pane title bar). `--dense` lowers only the
183
+ visual floor — coarse pointers still get the full `--tap-target`, so a control
184
+ you shrink for a mouse is never shrunk for a finger.
175
185
  - Loading is **not** a class: set `aria-busy="true"` (+ `disabled`); the
176
186
  spinner is CSS. This is the ARIA-driven contract — see reference.md
177
187
  → "Composition & state".
178
188
 
189
+ ## Empty state vs invite
190
+
191
+ Both use `ui-empty-state`, and the slots are the same three parts — a quiet
192
+ `__glyph`, one sentence of full ink in `__lead`, a quieter `__hint`. What
193
+ differs is the job:
194
+
195
+ - **Plain `ui-empty-state`** *reports absence*: a dashed card saying this region
196
+ has no rows today. Use it for a list, a table, a results pane.
197
+ - **`--invite`** *offers the next action*: no dashed box (there is nothing to
198
+ outline — the surface itself is what you are being invited into) and it
199
+ centres in whatever block space it is given. Use it for a surface the user is
200
+ meant to fill.
201
+
202
+ ```html
203
+ <div class="ui-empty-state ui-empty-state--invite">
204
+ <span class="ui-empty-state__glyph" aria-hidden="true">+</span>
205
+ <p class="ui-empty-state__lead">Nothing pinned yet</p>
206
+ <p class="ui-empty-state__hint">Drop a file here, or press ⌘K</p>
207
+ </div>
208
+ ```
209
+
210
+ Without the slots, every empty surface in an app re-invents these three parts
211
+ under a different name and they drift — one has a glyph, the next has two
212
+ sentences at the same weight, a third is a bare `<p>`.
213
+
179
214
  ## Link vs link--cta
180
215
 
181
216
  Plain `ui-link` for in-flow links. `ui-link--cta` is the eyebrow-faced
@@ -278,6 +313,31 @@ without it these widgets are unlabelled or unannounced:
278
313
  - **Icon-only buttons** (`ui-button--icon` and any glyph-only control) carry no
279
314
  text node, so they're nameless to AT — give them an `aria-label`
280
315
  (`<button class="ui-button ui-button--icon" aria-label="Delete">`).
316
+ Prefer `ui-button__label` when the same control also appears with its word
317
+ visible, or when a test reads the button by its text. Wrap the text in the
318
+ slot and let `--icon` decide whether it is painted — the markup does not
319
+ change, the accessible name survives, and no `aria-label` can drift out of
320
+ sync with the visible wording:
321
+
322
+ ```js
323
+ // The mask comes from renderGlyph(..., { render: 'mask' }) — there is no
324
+ // --glyph-* token.
325
+ const mask = renderGlyph('trash', { render: 'mask' });
326
+ el.innerHTML =
327
+ `<button class="ui-button ui-button--icon">` +
328
+ `<span class="ui-icon" style="--icon-mask: ${mask}"></span>` +
329
+ `<span class="ui-button__label">Delete</span>` +
330
+ `</button>`;
331
+ ```
332
+
333
+ Drop `--icon` and the same markup renders glyph + word. The slot also
334
+ ellipsises rather than wrapping, so a labelled button in a width-constrained
335
+ bar shrinks instead of pushing its neighbours out.
336
+ - **`ui-button--dense`** is for bars whose height is the constraint — a pane
337
+ title bar, a packed toolbar, a table row's actions. It lowers only the
338
+ *visual* floor, to the WCAG 2.5.8 24px minimum. The coarse-pointer block
339
+ still floats it to the full `--tap-target`, so a control you shrink for a
340
+ mouse is never shrunk for a finger.
281
341
  - **`ui-sitenav` / `ui-app-nav`** — signal the current link with
282
342
  `aria-current="page"` (both honour it; `ui-app-nav` also accepts the
283
343
  visual-only `.is-active`, but prefer `aria-current`).
@@ -362,20 +422,16 @@ element (e.g. `aria-label="Ada Lovelace"`) because the initials alone don't
362
422
  convey identity to AT. Keep initials to ~2 characters — the box is
363
423
  `overflow: hidden` and silently clips a third.
364
424
 
365
- ## Modal: native `<dialog>` vs `is-open`
425
+ ## Modal: use native `<dialog>`
366
426
 
367
427
  Prefer the **native `<dialog>`** path — you get top-layer, backdrop and
368
428
  focus-trap free (wire it with `initDialog` for open-triggers + focus-return).
369
- Only use `ui-modal.is-open` (`ui.modal({ open: true })`) when a portal/React
370
- modal genuinely can't be a `<dialog>`. The **backdrop and top-layer stacking
371
- stay yours**, but you no longer have to hand-roll the focus trap: mark the
372
- overlay `data-bronto-modal` and call `initModal()`. While `is-open` it traps
373
- focus with `inert` (the rest of the page goes non-interactive), returns focus to
374
- the opener on close, and dispatches a cancelable `bronto:modal:close` on Escape —
375
- you still own the `is-open` class, so drop it in response. On bind `initModal`
376
- also gives the overlay `role="dialog"` + `aria-modal="true"` and dev-warns if it
377
- has no accessible name (add `aria-label`/`aria-labelledby`). A drawer is a modal
378
- that enters from an edge — same rule.
429
+ The older `ui-modal.is-open` + `data-bronto-modal` + `initModal()` path remains
430
+ compatible throughout 0.7, but is deprecated for removal no earlier than 0.8.
431
+ It duplicates platform focus, stacking, and inert ownership and no inspected
432
+ real consumer uses it. Migrate portals to a native `<dialog>` where possible;
433
+ if a framework must retain the controlled path during 0.7, keep the existing
434
+ accessible name and `bronto:modal:close` handling unchanged.
379
435
 
380
436
  Controlled modals share one document-level stack. Opening a sibling portal
381
437
  modal makes the previous modal inert and keeps only the new top modal
@@ -387,8 +443,8 @@ nodes added after the modal opens are trapped too. If a controlled parent modal
387
443
  closes while a descendant still carries `is-open`, the descendant is suspended
388
444
  with the parent and resumes if the parent reopens.
389
445
 
390
- **Scroll-lock is not automatic on either path.** Neither the native `<dialog>`
391
- nor the `is-open` path freezes the background — the page behind an open modal can
446
+ **Scroll-lock is not automatic.** A native `<dialog>` does not freeze background
447
+ scroll — the page behind an open modal can
392
448
  still scroll. If that matters, toggle a lock yourself while the modal is open
393
449
  (`document.documentElement.style.overflow = 'hidden'`, restored on close), or add
394
450
  `html:has(dialog[open]) { overflow: hidden }` for the native path.
@@ -574,6 +630,49 @@ authoring engine.
574
630
  provide. The summary's title is the legible sans, not the display face — it's
575
631
  meant to be read.
576
632
 
633
+ ### Branded file input: keep the native control operable
634
+
635
+ Prefer the visible native control: `<input class="ui-file" type="file">` styles
636
+ its file-selector button without hiding the input. If the product needs a
637
+ button-shaped label, keep the native input focusable inside the label and expose
638
+ its focus on the visible wrapper. Never use `display: none` on the input: that
639
+ removes it from keyboard navigation.
640
+
641
+ ```html
642
+ <label class="ui-button upload-button">
643
+ Choose file
644
+ <input class="ui-visually-hidden" type="file" name="document" />
645
+ </label>
646
+ ```
647
+
648
+ ```css
649
+ .upload-button:focus-within {
650
+ outline: 3px solid var(--focus-ring);
651
+ outline-offset: var(--focus-offset);
652
+ }
653
+ ```
654
+
655
+ ### Sortable table: the button is part of the contract
656
+
657
+ Put a real button in each sortable header, mark the table, then initialize the
658
+ behavior. Use `data-sort="num"` for numeric columns and `data-sort-value` on a
659
+ cell when its displayed text is not a canonical sortable value.
660
+
661
+ ```html
662
+ <table class="ui-table" data-bronto-sortable>
663
+ <thead><tr>
664
+ <th><button class="ui-table__sort" data-sort type="button">Name</button></th>
665
+ <th class="is-num"><button class="ui-table__sort" data-sort="num" type="button">Score</button></th>
666
+ </tr></thead>
667
+ <tbody><tr><td>Ada</td><td class="is-num" data-sort-value="9.5">9,5</td></tr></tbody>
668
+ </table>
669
+ ```
670
+
671
+ ```js
672
+ import { initTableSort } from '@ponchia/ui/behaviors';
673
+ const cleanup = initTableSort();
674
+ ```
675
+
577
676
  ## Reveal: `ui-reveal` needs JS, `ui-scroll-reveal` doesn't
578
677
 
579
678
  `ui-scroll-reveal` is scroll-driven and **zero-JS** — reach for it in a static
@@ -615,8 +714,9 @@ It is a **non-modal** dialog by design: the panel gets `role="dialog"` and focus
615
714
  moves into it, but there is **no focus trap** and the rest of the page stays
616
715
  interactive — Tab moves *out* of the panel (it does not cycle), and it closes on
617
716
  Escape or outside-click. Don't assume `<dialog>`-modal semantics; if you need a
618
- trap and an inert backdrop, use a real modal (`<dialog>` + `initDialog`, or
619
- `initModal`). And the `is-open` fallback is a plain stacked element, so it sits
717
+ trap and an inert backdrop, use a real modal (`<dialog>` + `initDialog`). The
718
+ deprecated `initModal()` path remains available only for 0.7 migration. And the
719
+ `is-open` fallback is a plain stacked element, so it sits
620
720
  *under* any open native `<dialog>`'s top layer — another reason to prefer the
621
721
  native `popover` attribute when a popover and a dialog can be open together.
622
722
 
@@ -650,7 +750,7 @@ These are JS widgets wearing the Bronto look; without the behavior they are iner
650
750
  | Popover (`ui-popover`) | `initPopover` | no placement/ARIA — prefer the native `popover` attribute |
651
751
  | Carousel (`ui-carousel`) | `initCarousel` | a native scroll-snap track (usable, no controls) |
652
752
  | Native dialog/lightbox (`<dialog>`, `ui-lightbox`) | `initDialog` | closed markup stays closed; `data-bronto-open`/close buttons do nothing. Do not use `open` as a modal fallback: it is non-modal and has no trigger/focus-return path |
653
- | Controlled modal (`ui-modal.is-open`) | `initModal` | open skin only — no inert trap, focus-return, or Escape close signal |
753
+ | Controlled modal (`ui-modal.is-open`, deprecated) | `initModal` (deprecated) | open skin only — no inert trap, focus-return, or Escape close signal |
654
754
  | Menu (`data-bronto-menu`) | `initMenu` | a button next to a list with no open/close, outside-click, or Escape |
655
755
  | Dismissible alert/callout (`data-bronto-dismissible`) | `dismissible` | the close affordance is just a button; nothing is removed |
656
756
  | Toast | `toast()` | nothing — it is imperative-only |
@@ -671,7 +771,7 @@ boundary of what CSS alone cannot do.
671
771
 
672
772
  The CSS is the framework; `@ponchia/ui/behaviors` is the *sanctioned*
673
773
  home for the little JS that genuinely needs scripting (theme persistence,
674
- disclosure, dialog glue, modal focus-trap, toast, combobox, form-validation,
774
+ disclosure, native-dialog glue, toast, combobox, form-validation,
675
775
  table-sort, splitter resizing). Reach for it instead of reimplementing — every
676
776
  initializer is SSR-safe, idempotent, and returns a cleanup. If you find yourself
677
777
  writing focus management, ARIA value sync, or `aria-expanded` toggling by hand,
package/docs/workbench.md CHANGED
@@ -1,4 +1,4 @@
1
- # Workbench — split panes, toolstrips, inspector, properties, selection bar
1
+ # Workbench — panes, split panes, toolstrips, inspector, properties, selection bar
2
2
 
3
3
  `@ponchia/ui/css/workbench.css` is an opt-in set of primitives for **real
4
4
  tools**: resizable split panes, compact toolstrips, button-mode segmented
@@ -52,6 +52,29 @@ hiding, and placement.
52
52
  </header>
53
53
  ```
54
54
 
55
+ ### Pane-scale — `.ui-toolstrip--pane`
56
+
57
+ The app has one toolstrip; a workbench full of panes has one *per pane*, and
58
+ those are a different thing. The difference is framing, not density: a pane bar
59
+ is a row inside a surface that already has a border, so it drops its own frame
60
+ and corners and rules off from the content below.
61
+
62
+ It also refuses to wrap. A pane bar usually sits directly above content that may
63
+ be a live terminal, an editor, or a video — and a second row would resize that
64
+ content every time a control appears. The row scrolls instead, and
65
+ `.ui-toolstrip__fill` marks the one element that absorbs slack and gives it back
66
+ first (a title, a path, a filter input), so nothing else is pushed out of reach.
67
+
68
+ ```html
69
+ <div class="ui-toolstrip ui-toolstrip--pane">
70
+ <button class="ui-button ui-button--subtle ui-button--dense" type="button">Run</button>
71
+ <span class="ui-toolstrip__fill ui-mono">src/server/routes/reports.ts</span>
72
+ <button class="ui-button ui-button--ghost ui-button--icon ui-button--dense" type="button">
73
+ <span class="ui-button__label">Close</span>
74
+ </button>
75
+ </div>
76
+ ```
77
+
55
78
  ## Button segmented control — `.ui-segmented-buttons`
56
79
 
57
80
  Use `.ui-segmented-buttons` when each option is a real command button and the
@@ -80,7 +103,17 @@ domain selection model.
80
103
  data-bronto-splitter
81
104
  style="--splitter-pos: 36%"
82
105
  >
83
- <section class="ui-splitter__pane" id="files" aria-label="Files">...</section>
106
+ <section class="ui-splitter__pane" id="files" aria-label="Files">
107
+ <div class="ui-cluster" role="group" aria-label="Resize files pane">
108
+ <button class="ui-button ui-button--sm" type="button" data-bronto-splitter-adjust="-10">
109
+ Narrow
110
+ </button>
111
+ <button class="ui-button ui-button--sm" type="button" data-bronto-splitter-adjust="10">
112
+ Widen
113
+ </button>
114
+ </div>
115
+ ...
116
+ </section>
84
117
  <div
85
118
  class="ui-splitter__handle"
86
119
  role="separator"
@@ -99,7 +132,11 @@ domain selection model.
99
132
  Use `.ui-splitter--horizontal` for top/bottom panes. Arrow keys change the value
100
133
  by 2 percentage points, Shift+Arrow and PageUp/PageDown by 10, and Home/End jump
101
134
  to `aria-valuemin` / `aria-valuemax`. The handle needs a real accessible name
102
- and `aria-controls` pointing at the primary pane.
135
+ and `aria-controls` pointing at the primary pane. Also provide ordinary buttons
136
+ with `data-bronto-splitter-adjust="-10"` / `"10"`: pointer users then have a
137
+ non-drag resize path, while keyboard and assistive-technology users retain the
138
+ separator interaction. The signed value is a percentage-point delta and is
139
+ clamped to the separator's min/max.
103
140
 
104
141
  ## Inspector — `.ui-inspector`
105
142
 
@@ -156,11 +193,67 @@ A raised bar of actions on the current selection: a `__count` on one side,
156
193
  </div>
157
194
  ```
158
195
 
196
+ ### Anchoring a floating bar
197
+
198
+ Both `--floating` bars are raised but position-less, so every consumer
199
+ re-derives the same thing — including the `max(offset, inset)` shape, which is
200
+ the part people get wrong by writing a bare offset that a phone then swallows
201
+ under the home indicator. `--anchored` centres the bar against its positioned
202
+ ancestor and clears the safe area:
203
+
204
+ ```html
205
+ <div class="ui-selectionbar ui-selectionbar--anchored">…</div>
206
+
207
+ <!-- The bar that must NOT sit under the thumb: recovery, destructive actions. -->
208
+ <div class="ui-selectionbar ui-selectionbar--anchor-block-start">…</div>
209
+ ```
210
+
211
+ `--anchored` alone means bottom. Override the gap with `--anchor-offset`. The
212
+ host still owns `z-index`, because only it knows what else is on the canvas.
213
+
214
+ ## Pane — `.ui-pane`
215
+
216
+ `.ui-panel` is a padded card and `.ui-inspector` is head-plus-body; neither is a
217
+ *window*. A pane is what a canvas node, a floating tool window, or a dockable
218
+ panel needs: a header you can drag, a title that renames in place, an actions
219
+ slot that survives a narrow pane, and a body that owns the rest.
220
+
221
+ ```html
222
+ <article class="ui-pane">
223
+ <header class="ui-pane__head">
224
+ <strong class="ui-pane__title">deploy.log</strong>
225
+ <span class="ui-pane__actions">
226
+ <button class="ui-button ui-button--subtle ui-button--icon ui-button--dense" type="button">
227
+ <span class="ui-button__label">Focus</span>
228
+ </button>
229
+ </span>
230
+ </header>
231
+ <div class="ui-pane__body">…</div>
232
+ </article>
233
+ ```
234
+
235
+ Two behaviours are worth knowing, because both come from a real failure:
236
+
237
+ - **The title gives up space first.** It is the only thing in the header that
238
+ can be truncated without losing a function.
239
+ - **`__actions` scrolls rather than pushing.** Sized `flex: 0 1 auto` with
240
+ `overflow-x: auto`, so a pane narrow enough to run out of room scrolls its
241
+ controls instead of pushing the last one past the clipped edge — which is how
242
+ an app ends up with a Focus or Disconnect button that exists, is in the a11y
243
+ tree, and cannot be reached.
244
+
245
+ Swap the title for `.ui-pane__title-input` to rename in place. It inherits the
246
+ type it replaces, so the swap moves no layout; only the accent border says you
247
+ are typing a name now. The host owns dragging, z-order, focus policy and
248
+ persistence — this leaf has no behavior.
249
+
159
250
  ## Scope
160
251
 
161
- No recipes these are structural containers and rows; apply the classes
162
- directly (or read them from `cls.toolstrip`, `cls.splitter`, `cls.inspector`,
163
- `cls.property`, …). Pair the selection bar with the cross-cutting
252
+ No recipes for the structural containers and rows; apply the classes directly
253
+ (or read them from `cls.toolstrip`, `cls.pane`, `cls.splitter`, `cls.inspector`,
254
+ `cls.property`, …). `ui.toolstrip()` and `ui.selectionbar()` exist only to
255
+ compose the variant/anchor modifiers. Pair the selection bar with the
256
+ cross-cutting
164
257
  [`ui-sel`](./selection.md) states on the selected items themselves. Bronto styles
165
258
  the chrome and wires the splitter affordance; the host owns hit-testing,
166
259
  persistence, pane contents, viewport semantics, and commands.
package/llms.txt CHANGED
@@ -45,7 +45,7 @@ the path changes from source `css/` to built `dist/css/`:
45
45
  <!-- installed locally -->
46
46
  <link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/css/<leaf>.css" />
47
47
  <!-- or from a CDN; pin the version (pre-1.0, breaking changes ship in the minor) -->
48
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.6.12/dist/css/<leaf>.css" />
48
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.8.0/dist/css/<leaf>.css" />
49
49
  ```
50
50
 
51
51
  The flattened default bundle is `dist/bronto.css` (bundler shorthand
@@ -75,7 +75,8 @@ import { applyStoredTheme } from '@ponchia/ui/behaviors';
75
75
  Notable behaviors beyond the obvious: `initMenu()` adds close affordances to a
76
76
  native `<details data-bronto-menu>` dropdown (outside-click/Escape/select-close);
77
77
  `initModal()` wires the controlled `.ui-modal.is-open` path (inert focus-trap +
78
- role/aria-modal); `initDisabledGuard()` makes every `aria-disabled` control
78
+ role/aria-modal), but is deprecated in 0.7 for removal no earlier than 0.8;
79
+ prefer native `<dialog>` + `initDialog()`. `initDisabledGuard()` makes every `aria-disabled` control
79
80
  keyboard-inert (CSS alone is only pointer-inert). For the value-bearing fills,
80
81
  `attrs.meter(value)` / `attrs.progress(value)` from `@ponchia/ui/classes` return
81
82
  `role`+`aria-valuenow/min/max`+the `--value` style to spread onto the host.
@@ -86,6 +87,8 @@ matching `.ui-source-card`, seed lightweight preview metadata, and emit
86
87
  and any rich preview popover.
87
88
 
88
89
  Optional lifecycle adapters wrap those behaviors without owning markup or state.
90
+ They remain compatible in 0.7 but are deprecated for removal no earlier than
91
+ 0.8; prefer vanilla behavior initialization in the host lifecycle.
89
92
  React/Solid/Qwik use hook bindings (peer deps `react` / `solid-js` /
90
93
  `@builder.io/qwik`, optional — core stays zero-dep); Svelte uses dependency-free
91
94
  actions, and Vue uses dependency-free directives/plugin helpers:
@@ -769,7 +772,8 @@ Read these from `node_modules/@ponchia/ui/` — no network needed:
769
772
  resolved palette; the build fails below the declared floor.
770
773
  - `tokens/index.d.ts` — every design-token name as a literal union.
771
774
  - `tokens/index.json` — tokens as plain data (global / light / dark).
772
- - `tokens/tokens.dtcg.json` — same tokens in W3C DTCG format.
775
+ - `tokens/tokens.dtcg.json` — resolved DTCG 2025.10 structured typed values;
776
+ authored CSS expressions remain in `tokens/index.json` and DTCG extensions.
773
777
  - `tokens/resolved.json` — every colour token resolved to a static
774
778
  `#rrggbb` / `rgba(...)` per theme (var() + color-mix() evaluated) in
775
779
  `light`/`dark`, plus a `scale` block of the non-colour scales
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ponchia/ui",
3
- "version": "0.6.12",
3
+ "version": "0.8.0",
4
4
  "type": "module",
5
5
  "description": "CSS-first identity and UI layer for services, tools, sites, and reports — works in HTML, every framework, and PDF, no component runtime. Shared app shell, forms, tables, workflow chrome, plus opt-in analytical/report primitives. Monochrome with one rationed accent. Zero runtime dependencies.",
6
6
  "keywords": [
@@ -38,6 +38,9 @@
38
38
  "engines": {
39
39
  "node": ">=18"
40
40
  },
41
+ "bin": {
42
+ "bronto-ui-check": "./bin/bronto-ui-check.mjs"
43
+ },
41
44
  "sideEffects": [
42
45
  "**/*.css"
43
46
  ],
@@ -49,6 +52,7 @@
49
52
  "fonts",
50
53
  "tokens",
51
54
  "classes",
55
+ "bin",
52
56
  "behaviors",
53
57
  "glyphs",
54
58
  "schemas",
@@ -108,9 +112,11 @@
108
112
  "docs/migrations/0.3-to-0.4.md",
109
113
  "docs/migrations/0.4-to-0.5.md",
110
114
  "docs/migrations/0.5-to-0.6.md",
115
+ "docs/migrations/0.6-to-0.7.md",
111
116
  "docs/adr/0001-color-system.md",
112
117
  "docs/adr/0002-scope-and-2026-baseline.md",
113
- "docs/adr/0003-theme-model.md"
118
+ "docs/adr/0003-theme-model.md",
119
+ "docs/adr/0004-prune-unused-adapters.md"
114
120
  ],
115
121
  "style": "./dist/bronto.css",
116
122
  "scripts": {
@@ -188,10 +194,11 @@
188
194
  "check:contract": "node scripts/check-contract.mjs",
189
195
  "check:variables": "node scripts/check-variables.mjs",
190
196
  "check:contrast": "node scripts/check-contrast.mjs",
197
+ "check:dtcg": "node scripts/check-dtcg.mjs",
191
198
  "check:publint": "publint --strict",
192
199
  "check:attw": "attw --pack --ignore-rules no-resolution cjs-resolves-to-esm",
193
200
  "check:workflows": "github-actionlint .github/workflows/*.yml",
194
- "check": "npm run lint && npm run check:format && npm run check:exports && npm run check:fresh && npm run check:classes && npm run check:recipe-types && npm run check:dead && npm run check:complexity && npm run check:types && npm run check:unit && npm run check:shiki && npm run check:dist && npm run check:pack && npm run check:consumer-surface && npm run check:consumer-types && npm run check:component-matrix && npm run check:behavior-matrix && npm run check:helper-matrix && npm run check:binding-matrix && npm run check:examples && npm run check:visual-baselines && npm run check:playwright-container && npm run check:schemas && npm run check:publint && npm run check:attw && npm run check:workflows && npm run check:release && npm run check:versions && npm run check:migrations && npm run check:public-metadata && npm run check:public-hygiene && npm run check:doc-links && npm run check:doc-recipes && npm run check:contract && npm run check:variables && npm run check:contrast && npm run check:dts-emit && npm run check:glyphs && npm run check:color-policy && npm run check:skins && npm run check:charts && npm run check:mermaid && npm run check:d2 && npm run check:vega && npm run check:report && npm run check:legend && npm run check:chain",
201
+ "check": "npm run lint && npm run check:format && npm run check:exports && npm run check:fresh && npm run check:classes && npm run check:recipe-types && npm run check:dead && npm run check:complexity && npm run check:types && npm run check:unit && npm run check:shiki && npm run check:dist && npm run check:pack && npm run check:consumer-surface && npm run check:consumer-types && npm run check:component-matrix && npm run check:behavior-matrix && npm run check:helper-matrix && npm run check:binding-matrix && npm run check:examples && npm run check:visual-baselines && npm run check:playwright-container && npm run check:schemas && npm run check:publint && npm run check:attw && npm run check:workflows && npm run check:release && npm run check:versions && npm run check:migrations && npm run check:public-metadata && npm run check:public-hygiene && npm run check:doc-links && npm run check:doc-recipes && npm run check:contract && npm run check:variables && npm run check:contrast && npm run check:dtcg && npm run check:dts-emit && npm run check:glyphs && npm run check:color-policy && npm run check:skins && npm run check:charts && npm run check:mermaid && npm run check:d2 && npm run check:vega && npm run check:report && npm run check:legend && npm run check:chain",
195
202
  "test": "node --test \"test/*.test.mjs\"",
196
203
  "test:e2e": "playwright test",
197
204
  "test:e2e:chromium": "playwright test --project=chromium",
@@ -399,9 +406,11 @@
399
406
  "./docs/migrations/0.3-to-0.4.md": "./docs/migrations/0.3-to-0.4.md",
400
407
  "./docs/migrations/0.4-to-0.5.md": "./docs/migrations/0.4-to-0.5.md",
401
408
  "./docs/migrations/0.5-to-0.6.md": "./docs/migrations/0.5-to-0.6.md",
409
+ "./docs/migrations/0.6-to-0.7.md": "./docs/migrations/0.6-to-0.7.md",
402
410
  "./docs/adr/0001-color-system.md": "./docs/adr/0001-color-system.md",
403
411
  "./docs/adr/0002-scope-and-2026-baseline.md": "./docs/adr/0002-scope-and-2026-baseline.md",
404
412
  "./docs/adr/0003-theme-model.md": "./docs/adr/0003-theme-model.md",
413
+ "./docs/adr/0004-prune-unused-adapters.md": "./docs/adr/0004-prune-unused-adapters.md",
405
414
  "./classes": {
406
415
  "types": "./classes/index.d.ts",
407
416
  "default": "./classes/index.js"
@@ -558,6 +567,7 @@
558
567
  "./fonts/*": "./fonts/*"
559
568
  },
560
569
  "overrides": {
570
+ "adm-zip": "0.6.0",
561
571
  "esbuild": "0.28.1"
562
572
  }
563
573
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAmHA;;;;;;;sBAOsB;AACtB,kCAJ8B,CAAC,SAAhB,YAAa,0DAChB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI,SAC5B,yBAAyB,CAAC,CAAC,CAAC,GAC1B,IAAI,CAIjB;AAGM,sCADK,yBAAyB,CAAC,gBAAgB,GAAG,YAAY,CAAC,GAAmB,IAAI,CAGhC;AAEtD,sCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,wCADK,yBAAyB,GAAmB,IAAI,CAGG;AAExD,qCADK,yBAAyB,GAAmB,IAAI,CAGA;AAErD,+BADK,yBAAyB,GAAmB,IAAI,CAGN;AAE/C,yCADK,yBAAyB,GAAmB,IAAI,CAGI;AAEzD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAEnD,kCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,oCADK,yBAAyB,GAAmB,IAAI,CAGD;AAEpD,+BADK,yBAAyB,GAAmB,IAAI,CAGN;AAE/C,iCADK,yBAAyB,GAAmB,IAAI,CAGJ;AAEjD,gCADK,yBAAyB,GAAmB,IAAI,CAGL;AAEhD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAEnD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAEnD,iCADK,yBAAyB,GAAmB,IAAI,CAGJ;AAEjD,qCADK,yBAAyB,GAAmB,IAAI,CAGA;AAErD,oCADK,yBAAyB,GAAmB,IAAI,CAGD;AAEpD,oCADK,yBAAyB,GAAmB,IAAI,CAGD;AAEpD,kCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,kCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAInD,4BADO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,OAAO,CACzB;;sBA5LtB,OAAO,uBAAuB,EAAE,OAAO;2BACvC,OAAO,uBAAuB,EAAE,YAAY;+BAC5C,OAAO,uBAAuB,EAAE,gBAAgB;wBAChD,OAAO,uBAAuB,EAAE,SAAS;gCAEzC,QAAQ,GACd,OAAO,GACP;IAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAChD;IAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAClD,CAAC,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC7C,IAAI,GACJ,SAAS;8BAIa,CAAC,SAAhB,YAAa,sDACd,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;CAAE;sCAI9B,CAAC,SAAhB,YAAa,sDACd,iBAAiB,CAAC,CAAC,CAAC,GAC1B,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAC/C,IAAI,GACJ,SAAS;iCA2BT,uBAAuB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAuHA;;;;;;;sBAOsB;AACtB,kCAJ8B,CAAC,SAAhB,YAAa,0DAChB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI,SAC5B,yBAAyB,CAAC,CAAC,CAAC,GAC1B,IAAI,CAIjB;AAGM,sCADK,yBAAyB,CAAC,gBAAgB,GAAG,YAAY,CAAC,GAAmB,IAAI,CAGhC;AAEtD,sCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,wCADK,yBAAyB,GAAmB,IAAI,CAGG;AAExD,qCADK,yBAAyB,GAAmB,IAAI,CAGA;AAErD,+BADK,yBAAyB,GAAmB,IAAI,CAGN;AAE/C,yCADK,yBAAyB,GAAmB,IAAI,CAGI;AAEzD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAEnD,kCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,oCADK,yBAAyB,GAAmB,IAAI,CAGD;AAEpD,+BADK,yBAAyB,GAAmB,IAAI,CAGN;AAE/C,iCADK,yBAAyB,GAAmB,IAAI,CAGJ;AAEjD,gCADK,yBAAyB,GAAmB,IAAI,CAGL;AAEhD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAEnD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAEnD,iCADK,yBAAyB,GAAmB,IAAI,CAGJ;AAEjD,qCADK,yBAAyB,GAAmB,IAAI,CAGA;AAErD,oCADK,yBAAyB,GAAmB,IAAI,CAGD;AAEpD,oCADK,yBAAyB,GAAmB,IAAI,CAGD;AAEpD,kCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,kCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAInD,4BADO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,OAAO,CACzB;;sBA5LtB,OAAO,uBAAuB,EAAE,OAAO;2BACvC,OAAO,uBAAuB,EAAE,YAAY;+BAC5C,OAAO,uBAAuB,EAAE,gBAAgB;wBAChD,OAAO,uBAAuB,EAAE,SAAS;gCAEzC,QAAQ,GACd,OAAO,GACP;IAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAChD;IAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAClD,CAAC,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC7C,IAAI,GACJ,SAAS;8BAIa,CAAC,SAAhB,YAAa,sDACd,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;CAAE;sCAI9B,CAAC,SAAhB,YAAa,sDACd,iBAAiB,CAAC,CAAC,CAAC,GAC1B,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAC/C,IAAI,GACJ,SAAS;iCA2BT,uBAAuB"}
package/qwik/index.js CHANGED
@@ -25,6 +25,10 @@
25
25
  * const root = useSignal();
26
26
  * useDialog({ root }); // <section ref={root}> … </section>
27
27
  *
28
+ * @deprecated Import the framework-agnostic behavior initializers directly.
29
+ * This adapter remains compatible in 0.7 and is scheduled for removal no
30
+ * earlier than 0.8 because no real consumer adopted it.
31
+ *
28
32
  * @typedef {import('../behaviors/index.js').Cleanup} Cleanup
29
33
  * @typedef {import('../behaviors/index.js').DelegateOpts} DelegateOpts
30
34
  * @typedef {import('../behaviors/index.js').ThemeStorageOpts} ThemeStorageOpts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAgGA;;;;;;sBAMsB;AACtB,kCAJ8B,CAAC,SAAhB,YAAa,0DAChB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI,SAC5B,yBAAyB,CAAC,CAAC,CAAC,GAC1B,IAAI,CAGjB;AAGM,sCADK,yBAAyB,CAAC,gBAAgB,GAAG,YAAY,CAAC,GAAmB,IAAI,CACb;AAEzE,sCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,wCADK,yBAAyB,GAAmB,IAAI,CACwB;AAE7E,qCADK,yBAAyB,GAAmB,IAAI,CACkB;AAEvE,+BADK,yBAAyB,GAAmB,IAAI,CACM;AAE3D,yCADK,yBAAyB,GAAmB,IAAI,CAC0B;AAE/E,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAEnE,kCADK,yBAAyB,GAAmB,IAAI,CACY;AAEjE,oCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,+BADK,yBAAyB,GAAmB,IAAI,CACM;AAE3D,iCADK,yBAAyB,GAAmB,IAAI,CACU;AAE/D,gCADK,yBAAyB,GAAmB,IAAI,CACQ;AAE7D,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAEnE,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAEnE,iCADK,yBAAyB,GAAmB,IAAI,CACU;AAE/D,qCADK,yBAAyB,GAAmB,IAAI,CACkB;AAEvE,oCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,oCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,kCADK,yBAAyB,GAAmB,IAAI,CACY;AAEjE,kCADK,yBAAyB,GAAmB,IAAI,CACY;AAEjE,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAInE,4BADO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,OAAO,CACzB;;sBAlItB,OAAO,uBAAuB,EAAE,OAAO;2BACvC,OAAO,uBAAuB,EAAE,YAAY;+BAC5C,OAAO,uBAAuB,EAAE,gBAAgB;wBAChD,OAAO,uBAAuB,EAAE,SAAS;gCAEzC,QAAQ,GACd,OAAO,GACP;IAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAClD,CAAC,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC7C,IAAI,GACJ,SAAS;8BAIa,CAAC,SAAhB,YAAa,sDACd,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;CAAE;sCAI9B,CAAC,SAAhB,YAAa,sDACd,iBAAiB,CAAC,CAAC,CAAC,GAC1B,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAC/C,IAAI,GACJ,SAAS;iCA2BT,uBAAuB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAoGA;;;;;;sBAMsB;AACtB,kCAJ8B,CAAC,SAAhB,YAAa,0DAChB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI,SAC5B,yBAAyB,CAAC,CAAC,CAAC,GAC1B,IAAI,CAGjB;AAGM,sCADK,yBAAyB,CAAC,gBAAgB,GAAG,YAAY,CAAC,GAAmB,IAAI,CACb;AAEzE,sCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,wCADK,yBAAyB,GAAmB,IAAI,CACwB;AAE7E,qCADK,yBAAyB,GAAmB,IAAI,CACkB;AAEvE,+BADK,yBAAyB,GAAmB,IAAI,CACM;AAE3D,yCADK,yBAAyB,GAAmB,IAAI,CAC0B;AAE/E,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAEnE,kCADK,yBAAyB,GAAmB,IAAI,CACY;AAEjE,oCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,+BADK,yBAAyB,GAAmB,IAAI,CACM;AAE3D,iCADK,yBAAyB,GAAmB,IAAI,CACU;AAE/D,gCADK,yBAAyB,GAAmB,IAAI,CACQ;AAE7D,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAEnE,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAEnE,iCADK,yBAAyB,GAAmB,IAAI,CACU;AAE/D,qCADK,yBAAyB,GAAmB,IAAI,CACkB;AAEvE,oCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,oCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,kCADK,yBAAyB,GAAmB,IAAI,CACY;AAEjE,kCADK,yBAAyB,GAAmB,IAAI,CACY;AAEjE,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAInE,4BADO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,OAAO,CACzB;;sBAlItB,OAAO,uBAAuB,EAAE,OAAO;2BACvC,OAAO,uBAAuB,EAAE,YAAY;+BAC5C,OAAO,uBAAuB,EAAE,gBAAgB;wBAChD,OAAO,uBAAuB,EAAE,SAAS;gCAEzC,QAAQ,GACd,OAAO,GACP;IAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAClD,CAAC,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC7C,IAAI,GACJ,SAAS;8BAIa,CAAC,SAAhB,YAAa,sDACd,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;CAAE;sCAI9B,CAAC,SAAhB,YAAa,sDACd,iBAAiB,CAAC,CAAC,CAAC,GAC1B,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAC/C,IAAI,GACJ,SAAS;iCA2BT,uBAAuB"}
package/react/index.js CHANGED
@@ -20,6 +20,10 @@
20
20
  * The public types below are JSDoc `@typedef`s; the shipped `index.d.ts` is
21
21
  * generated from them (and these signatures) by `tsc --emitDeclarationOnly`.
22
22
  *
23
+ * @deprecated Import the framework-agnostic behavior initializers directly.
24
+ * This adapter remains compatible in 0.7 and is scheduled for removal no
25
+ * earlier than 0.8 because no real consumer adopted it.
26
+ *
23
27
  * @typedef {import('../behaviors/index.js').Cleanup} Cleanup
24
28
  * @typedef {import('../behaviors/index.js').DelegateOpts} DelegateOpts
25
29
  * @typedef {import('../behaviors/index.js').ThemeStorageOpts} ThemeStorageOpts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"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"}
package/solid/index.js CHANGED
@@ -20,6 +20,10 @@
20
20
  * The public types below are JSDoc `@typedef`s; the shipped `index.d.ts` is
21
21
  * generated from them (and these signatures) by `tsc --emitDeclarationOnly`.
22
22
  *
23
+ * @deprecated Import the framework-agnostic behavior initializers directly.
24
+ * This adapter remains compatible in 0.7 and is scheduled for removal no
25
+ * earlier than 0.8 because no real consumer adopted it.
26
+ *
23
27
  * @typedef {import('../behaviors/index.js').Cleanup} Cleanup
24
28
  * @typedef {import('../behaviors/index.js').DelegateOpts} DelegateOpts
25
29
  * @typedef {import('../behaviors/index.js').ThemeStorageOpts} ThemeStorageOpts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"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"}
package/svelte/index.js CHANGED
@@ -14,6 +14,10 @@
14
14
  * <button data-bronto-theme-toggle>Toggle theme</button>
15
15
  * </main>
16
16
  *
17
+ * @deprecated Import the framework-agnostic behavior initializers directly.
18
+ * This adapter remains compatible in 0.7 and is scheduled for removal no
19
+ * earlier than 0.8 because no real consumer adopted it.
20
+ *
17
21
  * @typedef {import('../behaviors/index.js').Cleanup} Cleanup
18
22
  * @typedef {import('../behaviors/index.js').DelegateOpts} DelegateOpts
19
23
  * @typedef {import('../behaviors/index.js').ThemeStorageOpts} ThemeStorageOpts