@ponchia/ui 0.6.9 → 0.6.11
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 +92 -0
- package/README.md +38 -25
- package/annotations/index.d.ts +15 -15
- package/annotations/index.d.ts.map +1 -1
- package/annotations/index.js +52 -34
- package/behaviors/carousel.d.ts +7 -3
- package/behaviors/carousel.d.ts.map +1 -1
- package/behaviors/carousel.js +157 -27
- package/behaviors/combobox.d.ts +1 -1
- package/behaviors/combobox.d.ts.map +1 -1
- package/behaviors/combobox.js +46 -23
- package/behaviors/command.d.ts +1 -1
- package/behaviors/command.d.ts.map +1 -1
- package/behaviors/command.js +63 -23
- package/behaviors/connectors.d.ts.map +1 -1
- package/behaviors/connectors.js +126 -19
- package/behaviors/crosshair.d.ts.map +1 -1
- package/behaviors/crosshair.js +71 -8
- package/behaviors/dialog.d.ts.map +1 -1
- package/behaviors/dialog.js +20 -3
- package/behaviors/disclosure.d.ts.map +1 -1
- package/behaviors/disclosure.js +35 -6
- package/behaviors/dismissible.js +1 -1
- package/behaviors/forms.d.ts +23 -2
- package/behaviors/forms.d.ts.map +1 -1
- package/behaviors/forms.js +97 -9
- package/behaviors/glyph.d.ts.map +1 -1
- package/behaviors/glyph.js +56 -5
- package/behaviors/internal.d.ts.map +1 -1
- package/behaviors/internal.js +52 -5
- package/behaviors/menu.d.ts.map +1 -1
- package/behaviors/menu.js +2 -1
- package/behaviors/modal.d.ts.map +1 -1
- package/behaviors/modal.js +25 -9
- package/behaviors/popover.d.ts.map +1 -1
- package/behaviors/popover.js +8 -6
- package/behaviors/sources.d.ts.map +1 -1
- package/behaviors/sources.js +24 -3
- package/behaviors/splitter.d.ts.map +1 -1
- package/behaviors/splitter.js +27 -6
- package/behaviors/table.d.ts.map +1 -1
- package/behaviors/table.js +44 -7
- package/behaviors/tabs.d.ts.map +1 -1
- package/behaviors/tabs.js +51 -14
- package/behaviors/theme.d.ts.map +1 -1
- package/behaviors/theme.js +64 -4
- package/behaviors/toast.d.ts +6 -1
- package/behaviors/toast.d.ts.map +1 -1
- package/behaviors/toast.js +48 -12
- package/classes/classes.json +57 -2
- package/classes/index.d.ts +13 -2
- package/classes/index.js +88 -40
- package/connectors/index.d.ts +4 -4
- package/connectors/index.d.ts.map +1 -1
- package/connectors/index.js +14 -12
- package/css/annotations.css +1 -0
- package/css/app.css +7 -0
- package/css/base.css +3 -0
- package/css/bullet.css +41 -7
- package/css/code.css +14 -0
- package/css/command.css +10 -0
- package/css/dataviz.css +27 -0
- package/css/diff.css +2 -0
- package/css/disclosure.css +8 -0
- package/css/dots.css +1 -1
- package/css/feedback.css +9 -0
- package/css/interval.css +20 -2
- package/css/legend.css +10 -9
- package/css/marks.css +1 -0
- package/css/motion.css +2 -0
- package/css/overlay.css +14 -2
- package/css/primitives.css +1 -1
- package/css/report.css +3 -0
- package/css/sources.css +4 -4
- package/css/spotlight.css +6 -0
- package/css/table.css +19 -0
- package/css/term.css +4 -1
- package/css/tokens.css +8 -13
- package/css/workbench.css +128 -0
- package/dist/bronto.css +1 -1
- package/dist/css/analytical.css +1 -1
- package/dist/css/app.css +1 -1
- package/dist/css/bullet.css +1 -1
- package/dist/css/code.css +1 -1
- package/dist/css/command.css +1 -1
- package/dist/css/dataviz.css +1 -1
- package/dist/css/diff.css +1 -1
- package/dist/css/disclosure.css +1 -1
- package/dist/css/dots.css +1 -1
- package/dist/css/feedback.css +1 -1
- package/dist/css/interval.css +1 -1
- package/dist/css/legend.css +1 -1
- package/dist/css/marks.css +1 -1
- package/dist/css/overlay.css +1 -1
- package/dist/css/primitives.css +1 -1
- package/dist/css/report-kit.css +1 -1
- package/dist/css/sources.css +1 -1
- package/dist/css/spotlight.css +1 -1
- package/dist/css/table.css +1 -1
- package/dist/css/term.css +1 -1
- package/dist/css/tokens.css +1 -1
- package/dist/css/workbench.css +1 -1
- package/docs/annotations.md +27 -0
- package/docs/architecture.md +5 -3
- package/docs/bullet.md +6 -1
- package/docs/clamp.md +5 -0
- package/docs/command.md +3 -2
- package/docs/contrast.md +3 -3
- package/docs/crosshair.md +6 -0
- package/docs/dots.md +10 -3
- package/docs/figure.md +7 -0
- package/docs/glyphs.md +14 -2
- package/docs/highlights.md +9 -0
- package/docs/interval.md +6 -0
- package/docs/mermaid.md +5 -3
- package/docs/package-contract.md +24 -1
- package/docs/reference.md +21 -1
- package/docs/reporting.md +8 -8
- package/docs/selection.md +9 -0
- package/docs/sources.md +5 -0
- package/docs/state.md +6 -0
- package/docs/textref.md +18 -13
- package/docs/theming.md +18 -8
- package/docs/toc.md +6 -0
- package/docs/tree.md +9 -2
- package/docs/usage.md +2 -2
- package/docs/vega.md +5 -3
- package/docs/workbench.md +56 -9
- package/glyphs/glyphs.js +62 -8
- package/index.d.ts +1 -0
- package/llms.txt +18 -14
- package/package.json +98 -6
- package/qwik/index.d.ts +4 -3
- package/qwik/index.d.ts.map +1 -1
- package/qwik/index.js +7 -5
- package/react/index.d.ts +4 -3
- package/react/index.d.ts.map +1 -1
- package/react/index.js +3 -2
- package/solid/index.d.ts +7 -5
- package/solid/index.d.ts.map +1 -1
- package/solid/index.js +11 -7
- package/tokens/vega.d.ts +1 -1
- package/tokens/vega.js +3 -2
- package/vue/index.d.ts.map +1 -1
- package/vue/index.js +37 -3
package/llms.txt
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
> CSS-first, framework-agnostic UI framework. Zero runtime dependencies.
|
|
4
4
|
> One `@layer bronto` cascade, a typed class vocabulary, design tokens as
|
|
5
5
|
> data, and optional SSR-safe vanilla behaviors. Token-driven restraint:
|
|
6
|
-
>
|
|
7
|
-
>
|
|
6
|
+
> neutral by default, one core accent for UI emphasis, dot-matrix display type,
|
|
7
|
+
> plus separate governed tiers for status, display colorways, and data-viz.
|
|
8
8
|
>
|
|
9
9
|
> This file orients an LLM/agent. The authoritative, always-correct API
|
|
10
10
|
> is the TypeScript declarations shipped in this package (paths below):
|
|
@@ -29,9 +29,10 @@ explicit JS subpaths below.
|
|
|
29
29
|
JS subpaths are ESM-only. In CommonJS, use dynamic `import()`.
|
|
30
30
|
|
|
31
31
|
Everything lands in `@layer bronto`. Consumer styles in no layer (or a
|
|
32
|
-
later layer)
|
|
33
|
-
|
|
34
|
-
with `!important
|
|
32
|
+
later layer) win ordinary framework styles regardless of selector specificity —
|
|
33
|
+
this is the intended override mechanism. Do not fight normal component styling
|
|
34
|
+
with `!important`; the framework reserves `!important` for print and
|
|
35
|
+
reduced-motion safeguards.
|
|
35
36
|
|
|
36
37
|
Loading a stylesheet — read before copying a `<link>` below. The opt-in
|
|
37
38
|
leaves are written as `@ponchia/ui/css/<leaf>.css` for brevity. That
|
|
@@ -44,7 +45,7 @@ the path changes from source `css/` to built `dist/css/`:
|
|
|
44
45
|
<!-- installed locally -->
|
|
45
46
|
<link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/css/<leaf>.css" />
|
|
46
47
|
<!-- or from a CDN; pin the version (pre-1.0, breaking changes ship in the minor) -->
|
|
47
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.6.
|
|
48
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.6.11/dist/css/<leaf>.css" />
|
|
48
49
|
```
|
|
49
50
|
|
|
50
51
|
The flattened default bundle is `dist/bronto.css` (bundler shorthand
|
|
@@ -466,9 +467,10 @@ It NEVER parses or tokenizes — the host (or Shiki, via the shipped
|
|
|
466
467
|
`shiki/nothing.json` token theme) supplies the coloured spans; Bronto owns only
|
|
467
468
|
the chrome. `ui-code` (+`__head` filename bar, `__body` the `<pre>`); wrap each
|
|
468
469
|
line in `ui-code__line` to opt into the `ui-code--numbered` gutter (CSS
|
|
469
|
-
counters) and the `ui-code__line--add`/`--
|
|
470
|
-
+ print safe via an inline-start border). Long lines wrap.
|
|
471
|
-
/ `ui.codeLine({ change })`.
|
|
470
|
+
counters) and the `ui-code__line--add`/`--remove`/`--hl` line states
|
|
471
|
+
(forced-colors + print safe via an inline-start border). Long lines wrap.
|
|
472
|
+
`ui.code({ numbered })` / `ui.codeLine({ change: 'add'|'remove'|'hl' })`.
|
|
473
|
+
Details: `docs/code.md`.
|
|
472
474
|
|
|
473
475
|
Optional inline datawords — opt-in, CSS only, never in the default bundle. A
|
|
474
476
|
word-sized microchart (trend-in-a-sentence) for reports and dense tables, the
|
|
@@ -606,12 +608,12 @@ default bundle:
|
|
|
606
608
|
<link rel="stylesheet" href="@ponchia/ui/css/workbench.css" />
|
|
607
609
|
```
|
|
608
610
|
|
|
609
|
-
`ui-inspector` (+`
|
|
611
|
+
`ui-inspector` (+`__head`/`__body`) is a selected-object detail panel;
|
|
610
612
|
`ui-property` (+`__label`/`__value`) is a denser key/value row for it;
|
|
611
613
|
`ui-selectionbar` (+`__count`/`__actions`) is a raised action bar for the current
|
|
612
614
|
selection (pair with `ui-sel` states on the items). Layout/affordances only —
|
|
613
|
-
|
|
614
|
-
`docs/workbench.md`.
|
|
615
|
+
`ui-splitter` (+`--vertical`/`--horizontal`, `__pane`/`__handle`) ships with
|
|
616
|
+
optional `initSplitter()` for ARIA resize sync. Details: `docs/workbench.md`.
|
|
615
617
|
|
|
616
618
|
Optional command palette — opt-in CSS shell (`css/command.css`) + `initCommand`
|
|
617
619
|
behavior. Filter + keyboard-navigate a DOM-authored command list:
|
|
@@ -815,8 +817,10 @@ Read these from `node_modules/@ponchia/ui/` — no network needed:
|
|
|
815
817
|
`dist/bronto.css` carries the report/chart/legend/annotation layers — it
|
|
816
818
|
does not. Link each opt-in leaf from `dist/css/` via a real URL
|
|
817
819
|
(`./node_modules/…` or a pinned CDN). See the loading note above.
|
|
818
|
-
- Override framework styles by writing your own rules outside
|
|
819
|
-
`@layer bronto
|
|
820
|
+
- Override ordinary framework styles by writing your own rules outside
|
|
821
|
+
`@layer bronto`, not with higher specificity. Reserve `!important` for the
|
|
822
|
+
same kind of media-boundary safeguards the framework uses in print and
|
|
823
|
+
reduced-motion rules.
|
|
820
824
|
- Color is tiered (ADR-0001): neutral canvas · one rationed accent · locked
|
|
821
825
|
status · display expression · opt-in data-viz. Theme via the documented
|
|
822
826
|
tokens — re-point `--accent` (or a `data-bronto-skin` colorway), use status
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ponchia/ui",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.11",
|
|
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": [
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
"css",
|
|
46
46
|
"dist",
|
|
47
47
|
"tailwind.css",
|
|
48
|
+
"index.d.ts",
|
|
48
49
|
"fonts",
|
|
49
50
|
"tokens",
|
|
50
51
|
"classes",
|
|
@@ -119,6 +120,8 @@
|
|
|
119
120
|
"check:format": "prettier --check .",
|
|
120
121
|
"size:report": "node scripts/size-report.mjs",
|
|
121
122
|
"report:pdf": "node scripts/render-pdf.mjs",
|
|
123
|
+
"audit:selectors": "node scripts/audit-selectors.mjs",
|
|
124
|
+
"audit:behavior-exports": "node scripts/audit-behavior-exports.mjs",
|
|
122
125
|
"release:prep": "node scripts/release-prep.mjs",
|
|
123
126
|
"emit:theme": "node scripts/emit-theme.mjs",
|
|
124
127
|
"emit:theme:check": "node scripts/emit-theme.mjs --check",
|
|
@@ -203,20 +206,20 @@
|
|
|
203
206
|
"prepublishOnly": "npm run build:artifacts && npm run check"
|
|
204
207
|
},
|
|
205
208
|
"devDependencies": {
|
|
206
|
-
"@arethetypeswrong/cli": "^0.18.
|
|
209
|
+
"@arethetypeswrong/cli": "^0.18.4",
|
|
207
210
|
"@axe-core/playwright": "^4.11.3",
|
|
208
211
|
"@builder.io/qwik": "^1.20.0",
|
|
209
212
|
"@playwright/test": "1.60.0",
|
|
210
213
|
"github-actionlint": "^1.7.12",
|
|
211
214
|
"jsdom": "^29.1.1",
|
|
212
|
-
"knip": "^6.
|
|
213
|
-
"pdfjs-dist": "^6.
|
|
214
|
-
"prettier": "^3.
|
|
215
|
+
"knip": "^6.23.0",
|
|
216
|
+
"pdfjs-dist": "^6.1.200",
|
|
217
|
+
"prettier": "^3.9.1",
|
|
215
218
|
"publint": "^0.3.21",
|
|
216
219
|
"react": "^19.2.7",
|
|
217
220
|
"react-dom": "^19.2.7",
|
|
218
221
|
"solid-js": "^1.9.13",
|
|
219
|
-
"stylelint": "^17.
|
|
222
|
+
"stylelint": "^17.14.0",
|
|
220
223
|
"stylelint-config-standard": "^40.0.0",
|
|
221
224
|
"stylelint-use-logical": "^2.1.3",
|
|
222
225
|
"typescript": "^6.0.3",
|
|
@@ -241,6 +244,7 @@
|
|
|
241
244
|
},
|
|
242
245
|
"exports": {
|
|
243
246
|
".": {
|
|
247
|
+
"types": "./index.d.ts",
|
|
244
248
|
"style": "./dist/bronto.css",
|
|
245
249
|
"default": "./dist/bronto.css"
|
|
246
250
|
},
|
|
@@ -407,6 +411,94 @@
|
|
|
407
411
|
"types": "./behaviors/index.d.ts",
|
|
408
412
|
"default": "./behaviors/index.js"
|
|
409
413
|
},
|
|
414
|
+
"./behaviors/carousel": {
|
|
415
|
+
"types": "./behaviors/carousel.d.ts",
|
|
416
|
+
"default": "./behaviors/carousel.js"
|
|
417
|
+
},
|
|
418
|
+
"./behaviors/combobox": {
|
|
419
|
+
"types": "./behaviors/combobox.d.ts",
|
|
420
|
+
"default": "./behaviors/combobox.js"
|
|
421
|
+
},
|
|
422
|
+
"./behaviors/command": {
|
|
423
|
+
"types": "./behaviors/command.d.ts",
|
|
424
|
+
"default": "./behaviors/command.js"
|
|
425
|
+
},
|
|
426
|
+
"./behaviors/connectors": {
|
|
427
|
+
"types": "./behaviors/connectors.d.ts",
|
|
428
|
+
"default": "./behaviors/connectors.js"
|
|
429
|
+
},
|
|
430
|
+
"./behaviors/crosshair": {
|
|
431
|
+
"types": "./behaviors/crosshair.d.ts",
|
|
432
|
+
"default": "./behaviors/crosshair.js"
|
|
433
|
+
},
|
|
434
|
+
"./behaviors/dialog": {
|
|
435
|
+
"types": "./behaviors/dialog.d.ts",
|
|
436
|
+
"default": "./behaviors/dialog.js"
|
|
437
|
+
},
|
|
438
|
+
"./behaviors/disclosure": {
|
|
439
|
+
"types": "./behaviors/disclosure.d.ts",
|
|
440
|
+
"default": "./behaviors/disclosure.js"
|
|
441
|
+
},
|
|
442
|
+
"./behaviors/dismissible": {
|
|
443
|
+
"types": "./behaviors/dismissible.d.ts",
|
|
444
|
+
"default": "./behaviors/dismissible.js"
|
|
445
|
+
},
|
|
446
|
+
"./behaviors/forms": {
|
|
447
|
+
"types": "./behaviors/forms.d.ts",
|
|
448
|
+
"default": "./behaviors/forms.js"
|
|
449
|
+
},
|
|
450
|
+
"./behaviors/glyph": {
|
|
451
|
+
"types": "./behaviors/glyph.d.ts",
|
|
452
|
+
"default": "./behaviors/glyph.js"
|
|
453
|
+
},
|
|
454
|
+
"./behaviors/inert": {
|
|
455
|
+
"types": "./behaviors/inert.d.ts",
|
|
456
|
+
"default": "./behaviors/inert.js"
|
|
457
|
+
},
|
|
458
|
+
"./behaviors/legend": {
|
|
459
|
+
"types": "./behaviors/legend.d.ts",
|
|
460
|
+
"default": "./behaviors/legend.js"
|
|
461
|
+
},
|
|
462
|
+
"./behaviors/menu": {
|
|
463
|
+
"types": "./behaviors/menu.d.ts",
|
|
464
|
+
"default": "./behaviors/menu.js"
|
|
465
|
+
},
|
|
466
|
+
"./behaviors/modal": {
|
|
467
|
+
"types": "./behaviors/modal.d.ts",
|
|
468
|
+
"default": "./behaviors/modal.js"
|
|
469
|
+
},
|
|
470
|
+
"./behaviors/popover": {
|
|
471
|
+
"types": "./behaviors/popover.d.ts",
|
|
472
|
+
"default": "./behaviors/popover.js"
|
|
473
|
+
},
|
|
474
|
+
"./behaviors/sources": {
|
|
475
|
+
"types": "./behaviors/sources.d.ts",
|
|
476
|
+
"default": "./behaviors/sources.js"
|
|
477
|
+
},
|
|
478
|
+
"./behaviors/splitter": {
|
|
479
|
+
"types": "./behaviors/splitter.d.ts",
|
|
480
|
+
"default": "./behaviors/splitter.js"
|
|
481
|
+
},
|
|
482
|
+
"./behaviors/spotlight": {
|
|
483
|
+
"types": "./behaviors/spotlight.d.ts",
|
|
484
|
+
"default": "./behaviors/spotlight.js"
|
|
485
|
+
},
|
|
486
|
+
"./behaviors/table": {
|
|
487
|
+
"types": "./behaviors/table.d.ts",
|
|
488
|
+
"default": "./behaviors/table.js"
|
|
489
|
+
},
|
|
490
|
+
"./behaviors/tabs": {
|
|
491
|
+
"types": "./behaviors/tabs.d.ts",
|
|
492
|
+
"default": "./behaviors/tabs.js"
|
|
493
|
+
},
|
|
494
|
+
"./behaviors/theme": {
|
|
495
|
+
"types": "./behaviors/theme.d.ts",
|
|
496
|
+
"default": "./behaviors/theme.js"
|
|
497
|
+
},
|
|
498
|
+
"./behaviors/toast": {
|
|
499
|
+
"types": "./behaviors/toast.d.ts",
|
|
500
|
+
"default": "./behaviors/toast.js"
|
|
501
|
+
},
|
|
410
502
|
"./glyphs": {
|
|
411
503
|
"types": "./glyphs/glyphs.d.ts",
|
|
412
504
|
"default": "./glyphs/glyphs.js"
|
package/qwik/index.d.ts
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* below — they inline a statically-imported behavior so the optimizer can
|
|
3
3
|
* serialize the task. Passing a runtime function here is only safe when it
|
|
4
4
|
* is itself optimizer-visible (a module import).
|
|
5
|
-
* @
|
|
6
|
-
* @param {
|
|
5
|
+
* @template {DelegateOpts} [T=DelegateOpts]
|
|
6
|
+
* @param {(opts?: T) => Cleanup | void} init
|
|
7
|
+
* @param {BrontoBindingOptsResolver<T>} [opts]
|
|
7
8
|
* @returns {void} */
|
|
8
|
-
export function useBrontoBehavior(init: (opts?:
|
|
9
|
+
export function useBrontoBehavior<T extends DelegateOpts = import("../behaviors/internal.js").DelegateOpts>(init: (opts?: T) => Cleanup | void, opts?: BrontoBindingOptsResolver<T>): void;
|
|
9
10
|
export function useThemeToggle(opts?: BrontoBindingOptsResolver<ThemeStorageOpts & DelegateOpts>): void;
|
|
10
11
|
export function useDismissible(opts?: BrontoBindingOptsResolver): void;
|
|
11
12
|
export function useDisabledGuard(opts?: BrontoBindingOptsResolver): void;
|
package/qwik/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"
|
|
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"}
|
package/qwik/index.js
CHANGED
|
@@ -105,10 +105,11 @@ function resolveOpts(opts) {
|
|
|
105
105
|
|
|
106
106
|
/** Run a delegated behavior on visible and register its cleanup on dispose.
|
|
107
107
|
* `init` and `opts` are resolved inside the visible task, so a Qwik-signal
|
|
108
|
-
* root is read after the element is assigned
|
|
109
|
-
* optimizer keeps the captured behavior import inside
|
|
108
|
+
* root is read after the element is assigned and tracked for later changes.
|
|
109
|
+
* Shared, non-QRL, so the optimizer keeps the captured behavior import inside
|
|
110
|
+
* the task segment. */
|
|
110
111
|
function start(init, opts, ctx) {
|
|
111
|
-
const cleanup = init(resolveOpts(opts));
|
|
112
|
+
const cleanup = init(ctx.track(() => resolveOpts(opts)));
|
|
112
113
|
if (typeof cleanup === 'function') ctx.cleanup(cleanup);
|
|
113
114
|
}
|
|
114
115
|
|
|
@@ -116,8 +117,9 @@ function start(init, opts, ctx) {
|
|
|
116
117
|
* below — they inline a statically-imported behavior so the optimizer can
|
|
117
118
|
* serialize the task. Passing a runtime function here is only safe when it
|
|
118
119
|
* is itself optimizer-visible (a module import).
|
|
119
|
-
* @
|
|
120
|
-
* @param {
|
|
120
|
+
* @template {DelegateOpts} [T=DelegateOpts]
|
|
121
|
+
* @param {(opts?: T) => Cleanup | void} init
|
|
122
|
+
* @param {BrontoBindingOptsResolver<T>} [opts]
|
|
121
123
|
* @returns {void} */
|
|
122
124
|
export function useBrontoBehavior(init, opts) {
|
|
123
125
|
// eslint-disable-next-line qwik/no-use-visible-task -- intentional delegated DOM glue + cleanup
|
package/react/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/** Run a delegated behavior for the component's lifetime (init on mount, its
|
|
2
2
|
* returned cleanup on unmount). The behavior is run once; `opts` resolves
|
|
3
3
|
* on mount so refs are usable for scoped roots.
|
|
4
|
-
* @
|
|
5
|
-
* @param {
|
|
4
|
+
* @template {DelegateOpts} [T=DelegateOpts]
|
|
5
|
+
* @param {(opts?: T) => Cleanup | void} init
|
|
6
|
+
* @param {BrontoBindingOptsResolver<T>} [opts]
|
|
6
7
|
* @returns {void} */
|
|
7
|
-
export function useBrontoBehavior(init: (opts?:
|
|
8
|
+
export function useBrontoBehavior<T extends DelegateOpts = import("../behaviors/internal.js").DelegateOpts>(init: (opts?: T) => Cleanup | void, opts?: BrontoBindingOptsResolver<T>): void;
|
|
8
9
|
export function useThemeToggle(opts?: BrontoBindingOptsResolver<ThemeStorageOpts & DelegateOpts>): void;
|
|
9
10
|
export function useDismissible(opts?: BrontoBindingOptsResolver): void;
|
|
10
11
|
export function useDisabledGuard(opts?: BrontoBindingOptsResolver): void;
|
package/react/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAgGA
|
|
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"}
|
package/react/index.js
CHANGED
|
@@ -97,8 +97,9 @@ function resolveOpts(opts) {
|
|
|
97
97
|
/** Run a delegated behavior for the component's lifetime (init on mount, its
|
|
98
98
|
* returned cleanup on unmount). The behavior is run once; `opts` resolves
|
|
99
99
|
* on mount so refs are usable for scoped roots.
|
|
100
|
-
* @
|
|
101
|
-
* @param {
|
|
100
|
+
* @template {DelegateOpts} [T=DelegateOpts]
|
|
101
|
+
* @param {(opts?: T) => Cleanup | void} init
|
|
102
|
+
* @param {BrontoBindingOptsResolver<T>} [opts]
|
|
102
103
|
* @returns {void} */
|
|
103
104
|
export function useBrontoBehavior(init, opts) {
|
|
104
105
|
useEffect(() => init(resolveOpts(opts)), []); // eslint-disable-line react-hooks/exhaustive-deps -- intentional delegated once on mount
|
package/solid/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
/** Run a delegated behavior for the component's lifetime (init
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* @
|
|
1
|
+
/** Run a delegated behavior for the component's lifetime (init after mount, its
|
|
2
|
+
* returned cleanup before re-init/dispose). Options resolve after mount and
|
|
3
|
+
* re-resolve when tracked Solid signals change.
|
|
4
|
+
* @template {DelegateOpts} [T=DelegateOpts]
|
|
5
|
+
* @param {(opts?: T) => Cleanup | void} init
|
|
6
|
+
* @param {BrontoBindingOptsResolver<T>} [opts]
|
|
5
7
|
* @returns {void}
|
|
6
8
|
*/
|
|
7
|
-
export function useBrontoBehavior(init: (opts?:
|
|
9
|
+
export function useBrontoBehavior<T extends DelegateOpts = import("../behaviors/internal.js").DelegateOpts>(init: (opts?: T) => Cleanup | void, opts?: BrontoBindingOptsResolver<T>): void;
|
|
8
10
|
/** @type {(opts?: BrontoBindingOptsResolver<ThemeStorageOpts & DelegateOpts>) => void} */
|
|
9
11
|
export const useThemeToggle: (opts?: BrontoBindingOptsResolver<ThemeStorageOpts & DelegateOpts>) => void;
|
|
10
12
|
/** @type {(opts?: BrontoBindingOptsResolver) => void} */
|
package/solid/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAkGA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"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"}
|
package/solid/index.js
CHANGED
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
* | null
|
|
48
48
|
* | undefined} BrontoBindingOptsResolver
|
|
49
49
|
*/
|
|
50
|
-
import {
|
|
50
|
+
import { createEffect, onCleanup, onMount } from 'solid-js';
|
|
51
51
|
import {
|
|
52
52
|
applyStoredTheme,
|
|
53
53
|
initThemeToggle,
|
|
@@ -96,16 +96,20 @@ function resolveOpts(opts) {
|
|
|
96
96
|
return { ...value, root: root || null };
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
/** Run a delegated behavior for the component's lifetime (init
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
* @
|
|
99
|
+
/** Run a delegated behavior for the component's lifetime (init after mount, its
|
|
100
|
+
* returned cleanup before re-init/dispose). Options resolve after mount and
|
|
101
|
+
* re-resolve when tracked Solid signals change.
|
|
102
|
+
* @template {DelegateOpts} [T=DelegateOpts]
|
|
103
|
+
* @param {(opts?: T) => Cleanup | void} init
|
|
104
|
+
* @param {BrontoBindingOptsResolver<T>} [opts]
|
|
103
105
|
* @returns {void}
|
|
104
106
|
*/
|
|
105
107
|
export function useBrontoBehavior(init, opts) {
|
|
106
108
|
onMount(() => {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
createEffect(() => {
|
|
110
|
+
const cleanup = init(resolveOpts(opts));
|
|
111
|
+
if (typeof cleanup === 'function') onCleanup(cleanup);
|
|
112
|
+
});
|
|
109
113
|
});
|
|
110
114
|
}
|
|
111
115
|
|
package/tokens/vega.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export declare const vega: { light: VegaConfig; dark: VegaConfig };
|
|
|
23
23
|
* back to light. Spread into a spec's `config`, or pass to vega-embed. */
|
|
24
24
|
export declare function brontoVegaConfig(theme?: 'light' | 'dark'): VegaConfig;
|
|
25
25
|
|
|
26
|
-
/** The
|
|
26
|
+
/** The resolved accent hex (series 1 of `range.category`) for a theme — to spend the
|
|
27
27
|
* accent on one emphasised mark without hard-coding the palette index. */
|
|
28
28
|
export declare function brontoVegaAccent(theme?: 'light' | 'dark'): string;
|
|
29
29
|
|
package/tokens/vega.js
CHANGED
|
@@ -137,10 +137,11 @@ export function brontoVegaConfig(theme = 'light') {
|
|
|
137
137
|
return vega[theme === 'dark' ? 'dark' : 'light'];
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
/** The
|
|
140
|
+
/** The resolved accent hex for a theme — series 1 of `range.category`, the one
|
|
141
141
|
* chromatic mark. Use it to spend the accent on a single emphasised mark in
|
|
142
142
|
* a multi-series chart (a Vega-Lite conditional to this colour) without
|
|
143
|
-
* reverse-engineering the palette array index.
|
|
143
|
+
* reverse-engineering the palette array index. Regenerate after changing
|
|
144
|
+
* `--accent`; already-rendered charts do not live-reskin. */
|
|
144
145
|
export function brontoVegaAccent(theme = 'light') {
|
|
145
146
|
return vega[theme === 'dark' ? 'dark' : 'light'].range.category[0];
|
|
146
147
|
}
|
package/vue/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"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"}
|
package/vue/index.js
CHANGED
|
@@ -62,6 +62,7 @@ import {
|
|
|
62
62
|
} from '../behaviors/index.js';
|
|
63
63
|
|
|
64
64
|
const cleanups = new WeakMap();
|
|
65
|
+
const optionSignatures = new WeakMap();
|
|
65
66
|
|
|
66
67
|
function cleanupMap(el) {
|
|
67
68
|
let map = cleanups.get(el);
|
|
@@ -72,12 +73,37 @@ function cleanupMap(el) {
|
|
|
72
73
|
return map;
|
|
73
74
|
}
|
|
74
75
|
|
|
76
|
+
function optionSignatureMap(el) {
|
|
77
|
+
let map = optionSignatures.get(el);
|
|
78
|
+
if (!map) {
|
|
79
|
+
map = new Map();
|
|
80
|
+
optionSignatures.set(el, map);
|
|
81
|
+
}
|
|
82
|
+
return map;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function optionSignature(opts) {
|
|
86
|
+
return Object.entries(opts).sort(([a], [b]) => a.localeCompare(b));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function sameOptionSignature(a, b) {
|
|
90
|
+
if (a === b) return true;
|
|
91
|
+
if (!a || !b || a.length !== b.length) return false;
|
|
92
|
+
return a.every(([key, value], index) => {
|
|
93
|
+
const [otherKey, otherValue] = b[index];
|
|
94
|
+
return key === otherKey && Object.is(value, otherValue);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
|
|
75
98
|
function stop(el, key) {
|
|
76
99
|
const map = cleanups.get(el);
|
|
77
100
|
const cleanup = map?.get(key);
|
|
78
101
|
if (typeof cleanup === 'function') cleanup();
|
|
79
102
|
map?.delete(key);
|
|
80
103
|
if (map?.size === 0) cleanups.delete(el);
|
|
104
|
+
const signatures = optionSignatures.get(el);
|
|
105
|
+
signatures?.delete(key);
|
|
106
|
+
if (signatures?.size === 0) optionSignatures.delete(el);
|
|
81
107
|
}
|
|
82
108
|
|
|
83
109
|
function resolveOpts(el, opts) {
|
|
@@ -87,9 +113,15 @@ function resolveOpts(el, opts) {
|
|
|
87
113
|
}
|
|
88
114
|
|
|
89
115
|
function start(el, key, init, opts) {
|
|
116
|
+
const resolved = resolveOpts(el, opts);
|
|
117
|
+
startResolved(el, key, init, resolved, optionSignature(resolved));
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function startResolved(el, key, init, resolved, signature) {
|
|
90
121
|
stop(el, key);
|
|
91
|
-
const cleanup = init(
|
|
122
|
+
const cleanup = init(resolved);
|
|
92
123
|
if (typeof cleanup === 'function') cleanupMap(el).set(key, cleanup);
|
|
124
|
+
optionSignatureMap(el).set(key, signature);
|
|
93
125
|
}
|
|
94
126
|
|
|
95
127
|
/**
|
|
@@ -105,8 +137,10 @@ export function createBrontoDirective(init) {
|
|
|
105
137
|
start(el, key, init, binding?.value);
|
|
106
138
|
},
|
|
107
139
|
updated(el, binding) {
|
|
108
|
-
|
|
109
|
-
|
|
140
|
+
const resolved = resolveOpts(el, binding?.value);
|
|
141
|
+
const signature = optionSignature(resolved);
|
|
142
|
+
if (sameOptionSignature(optionSignatures.get(el)?.get(key), signature)) return;
|
|
143
|
+
startResolved(el, key, init, resolved, signature);
|
|
110
144
|
},
|
|
111
145
|
beforeUnmount(el) {
|
|
112
146
|
stop(el, key);
|