@ponchia/ui 0.6.10 → 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.
Files changed (140) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +38 -25
  3. package/annotations/index.d.ts +15 -15
  4. package/annotations/index.d.ts.map +1 -1
  5. package/annotations/index.js +52 -34
  6. package/behaviors/carousel.d.ts +7 -3
  7. package/behaviors/carousel.d.ts.map +1 -1
  8. package/behaviors/carousel.js +157 -27
  9. package/behaviors/combobox.d.ts +1 -1
  10. package/behaviors/combobox.d.ts.map +1 -1
  11. package/behaviors/combobox.js +46 -23
  12. package/behaviors/command.d.ts +1 -1
  13. package/behaviors/command.d.ts.map +1 -1
  14. package/behaviors/command.js +63 -23
  15. package/behaviors/connectors.d.ts.map +1 -1
  16. package/behaviors/connectors.js +126 -19
  17. package/behaviors/crosshair.d.ts.map +1 -1
  18. package/behaviors/crosshair.js +71 -8
  19. package/behaviors/dialog.d.ts.map +1 -1
  20. package/behaviors/dialog.js +20 -3
  21. package/behaviors/disclosure.d.ts.map +1 -1
  22. package/behaviors/disclosure.js +35 -6
  23. package/behaviors/dismissible.js +1 -1
  24. package/behaviors/forms.d.ts +23 -2
  25. package/behaviors/forms.d.ts.map +1 -1
  26. package/behaviors/forms.js +97 -9
  27. package/behaviors/glyph.d.ts.map +1 -1
  28. package/behaviors/glyph.js +56 -5
  29. package/behaviors/internal.d.ts.map +1 -1
  30. package/behaviors/internal.js +52 -5
  31. package/behaviors/menu.d.ts.map +1 -1
  32. package/behaviors/menu.js +2 -1
  33. package/behaviors/modal.d.ts.map +1 -1
  34. package/behaviors/modal.js +25 -9
  35. package/behaviors/popover.d.ts.map +1 -1
  36. package/behaviors/popover.js +8 -6
  37. package/behaviors/sources.d.ts.map +1 -1
  38. package/behaviors/sources.js +24 -3
  39. package/behaviors/splitter.d.ts.map +1 -1
  40. package/behaviors/splitter.js +27 -6
  41. package/behaviors/table.d.ts.map +1 -1
  42. package/behaviors/table.js +44 -7
  43. package/behaviors/tabs.d.ts.map +1 -1
  44. package/behaviors/tabs.js +51 -14
  45. package/behaviors/theme.d.ts.map +1 -1
  46. package/behaviors/theme.js +64 -4
  47. package/behaviors/toast.d.ts +6 -1
  48. package/behaviors/toast.d.ts.map +1 -1
  49. package/behaviors/toast.js +48 -12
  50. package/classes/classes.json +24 -0
  51. package/classes/index.d.ts +3 -2
  52. package/classes/index.js +77 -39
  53. package/connectors/index.d.ts +4 -4
  54. package/connectors/index.d.ts.map +1 -1
  55. package/connectors/index.js +14 -12
  56. package/css/annotations.css +1 -0
  57. package/css/app.css +7 -0
  58. package/css/base.css +3 -0
  59. package/css/bullet.css +41 -7
  60. package/css/code.css +14 -0
  61. package/css/command.css +10 -0
  62. package/css/dataviz.css +27 -0
  63. package/css/diff.css +2 -0
  64. package/css/disclosure.css +8 -0
  65. package/css/dots.css +1 -1
  66. package/css/feedback.css +9 -0
  67. package/css/interval.css +20 -2
  68. package/css/legend.css +10 -9
  69. package/css/marks.css +1 -0
  70. package/css/motion.css +2 -0
  71. package/css/overlay.css +14 -2
  72. package/css/primitives.css +1 -1
  73. package/css/report.css +3 -0
  74. package/css/sources.css +4 -4
  75. package/css/spotlight.css +6 -0
  76. package/css/table.css +19 -0
  77. package/css/term.css +4 -1
  78. package/css/tokens.css +8 -13
  79. package/dist/bronto.css +1 -1
  80. package/dist/css/analytical.css +1 -1
  81. package/dist/css/app.css +1 -1
  82. package/dist/css/bullet.css +1 -1
  83. package/dist/css/code.css +1 -1
  84. package/dist/css/command.css +1 -1
  85. package/dist/css/dataviz.css +1 -1
  86. package/dist/css/diff.css +1 -1
  87. package/dist/css/disclosure.css +1 -1
  88. package/dist/css/dots.css +1 -1
  89. package/dist/css/feedback.css +1 -1
  90. package/dist/css/interval.css +1 -1
  91. package/dist/css/legend.css +1 -1
  92. package/dist/css/marks.css +1 -1
  93. package/dist/css/overlay.css +1 -1
  94. package/dist/css/primitives.css +1 -1
  95. package/dist/css/report-kit.css +1 -1
  96. package/dist/css/sources.css +1 -1
  97. package/dist/css/spotlight.css +1 -1
  98. package/dist/css/table.css +1 -1
  99. package/dist/css/term.css +1 -1
  100. package/dist/css/tokens.css +1 -1
  101. package/docs/architecture.md +5 -3
  102. package/docs/bullet.md +6 -1
  103. package/docs/clamp.md +5 -0
  104. package/docs/command.md +3 -2
  105. package/docs/contrast.md +3 -3
  106. package/docs/crosshair.md +6 -0
  107. package/docs/dots.md +10 -3
  108. package/docs/figure.md +7 -0
  109. package/docs/glyphs.md +14 -2
  110. package/docs/highlights.md +9 -0
  111. package/docs/interval.md +6 -0
  112. package/docs/mermaid.md +5 -3
  113. package/docs/package-contract.md +24 -1
  114. package/docs/reporting.md +8 -8
  115. package/docs/selection.md +9 -0
  116. package/docs/sources.md +5 -0
  117. package/docs/state.md +6 -0
  118. package/docs/textref.md +18 -13
  119. package/docs/theming.md +18 -8
  120. package/docs/toc.md +6 -0
  121. package/docs/tree.md +9 -2
  122. package/docs/usage.md +2 -2
  123. package/docs/vega.md +5 -3
  124. package/glyphs/glyphs.js +62 -8
  125. package/index.d.ts +1 -0
  126. package/llms.txt +18 -14
  127. package/package.json +98 -6
  128. package/qwik/index.d.ts +4 -3
  129. package/qwik/index.d.ts.map +1 -1
  130. package/qwik/index.js +7 -5
  131. package/react/index.d.ts +4 -3
  132. package/react/index.d.ts.map +1 -1
  133. package/react/index.js +3 -2
  134. package/solid/index.d.ts +7 -5
  135. package/solid/index.d.ts.map +1 -1
  136. package/solid/index.js +11 -7
  137. package/tokens/vega.d.ts +1 -1
  138. package/tokens/vega.js +3 -2
  139. package/vue/index.d.ts.map +1 -1
  140. package/vue/index.js +37 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ponchia/ui",
3
- "version": "0.6.10",
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.3",
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.16.1",
213
- "pdfjs-dist": "^6.0.227",
214
- "prettier": "^3.8.4",
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.13.0",
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
- * @param {(opts?: DelegateOpts) => Cleanup | void} init
6
- * @param {BrontoBindingOptsResolver} [opts]
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?: DelegateOpts) => Cleanup | void, opts?: BrontoBindingOptsResolver): void;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAkHA;;;;;;sBAMsB;AACtB,wCAHY,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI,SACvC,yBAAyB,GACvB,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;;sBA1LtB,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":"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. Shared, non-QRL, so the
109
- * optimizer keeps the captured behavior import inside the task segment. */
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
- * @param {(opts?: DelegateOpts) => Cleanup | void} init
120
- * @param {BrontoBindingOptsResolver} [opts]
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
- * @param {(opts?: DelegateOpts) => Cleanup | void} init
5
- * @param {BrontoBindingOptsResolver} [opts]
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?: DelegateOpts) => Cleanup | void, opts?: BrontoBindingOptsResolver): void;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAgGA;;;;;sBAKsB;AACtB,wCAHY,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI,SACvC,yBAAyB,GACvB,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;;sBAjItB,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":"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
- * @param {(opts?: DelegateOpts) => Cleanup | void} init
101
- * @param {BrontoBindingOptsResolver} [opts]
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 on mount, its
2
- * returned cleanup on dispose). Options resolve on mount, after refs exist.
3
- * @param {(opts?: DelegateOpts) => Cleanup | void} init
4
- * @param {BrontoBindingOptsResolver} [opts]
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?: DelegateOpts) => Cleanup | void, opts?: BrontoBindingOptsResolver): void;
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} */
@@ -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
@@ -47,7 +47,7 @@
47
47
  * | null
48
48
  * | undefined} BrontoBindingOptsResolver
49
49
  */
50
- import { onMount, onCleanup } from 'solid-js';
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 on mount, its
100
- * returned cleanup on dispose). Options resolve on mount, after refs exist.
101
- * @param {(opts?: DelegateOpts) => Cleanup | void} init
102
- * @param {BrontoBindingOptsResolver} [opts]
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
- const cleanup = init(resolveOpts(opts));
108
- if (typeof cleanup === 'function') onCleanup(cleanup);
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 live accent hex (series 1 of `range.category`) for a theme — to spend 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 live accent hex for a theme — series 1 of `range.category`, the one
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. Re-skins with `--accent`. */
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AA8FA;;;;;GAKG;AACH,4CAHW,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI,GACrC,eAAe,CAgB3B;AAED,mCAAmC;AACnC,2BADW,oBAAoB,CACoC;AACnE,8BAA8B;AAC9B,2BADW,eAAe,CACyC;AACnE,8BAA8B;AAC9B,6BADW,eAAe,CAC6C;AACvE,8BAA8B;AAC9B,0BADW,eAAe,CACuC;AACjE,8BAA8B;AAC9B,oBADW,eAAe,CAC2B;AACrD,8BAA8B;AAC9B,8BADW,eAAe,CAC+C;AACzE,8BAA8B;AAC9B,wBADW,eAAe,CACmC;AAC7D,8BAA8B;AAC9B,uBADW,eAAe,CACiC;AAC3D,8BAA8B;AAC9B,yBADW,eAAe,CACqC;AAC/D,8BAA8B;AAC9B,oBADW,eAAe,CAC2B;AACrD,8BAA8B;AAC9B,sBADW,eAAe,CAC+B;AACzD,8BAA8B;AAC9B,qBADW,eAAe,CAC6B;AACvD,8BAA8B;AAC9B,wBADW,eAAe,CACmC;AAC7D,8BAA8B;AAC9B,wBADW,eAAe,CACmC;AAC7D,8BAA8B;AAC9B,sBADW,eAAe,CAC+B;AACzD,8BAA8B;AAC9B,0BADW,eAAe,CACuC;AACjE,8BAA8B;AAC9B,yBADW,eAAe,CACqC;AAC/D,8BAA8B;AAC9B,yBADW,eAAe,CACqC;AAC/D,8BAA8B;AAC9B,uBADW,eAAe,CACiC;AAC3D,8BAA8B;AAC9B,uBADW,eAAe,CACiC;AAC3D,8BAA8B;AAC9B,wBADW,eAAe,CACmC;AAE7D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AA4BH,8BAA8B;AAC9B,wBADW,eAAe,CASvB;;AAMI,4BADM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,OAAO,CACxB;sBAlNtB,OAAO,uBAAuB,EAAE,OAAO;2BACvC,OAAO,uBAAuB,EAAE,YAAY;+BAC5C,OAAO,uBAAuB,EAAE,gBAAgB;wBAChD,OAAO,uBAAuB,EAAE,SAAS;kCAEzC,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS;kCAErC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,mBAAmB,CAAA;CAAE;uCAE3D,IAAI,CAAC,gBAAgB,GAAG,YAAY,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,mBAAmB,CAAA;CAAE;qCAE9E;IAAE,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE;0CAErG;IAAE,KAAK,CAAC,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE;8BAE/G;IAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAAC,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAAC,aAAa,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE;mCAE5K;IAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,2BAA2B,KAAK,IAAI,CAAC;IAAC,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,2BAA2B,KAAK,IAAI,CAAC;IAAC,aAAa,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE;2BAEtL;IAAE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,oBAAoB,KAAK,OAAO,CAAA;CAAE;8BAE3F;IAAE,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAA;CAAE;iCA0B9C,uBAAuB;sBAAvB,uBAAuB"}
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(resolveOpts(el, opts));
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
- if (binding?.value === binding?.oldValue) return;
109
- start(el, key, init, binding?.value);
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);