@ponchia/ui 0.4.1 → 0.5.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 (105) hide show
  1. package/CHANGELOG.md +230 -8
  2. package/MIGRATIONS.json +92 -0
  3. package/README.md +9 -6
  4. package/annotations/index.d.ts +280 -0
  5. package/annotations/index.js +522 -0
  6. package/behaviors/carousel.js +197 -0
  7. package/behaviors/combobox.js +195 -0
  8. package/behaviors/command.js +187 -0
  9. package/behaviors/connectors.js +96 -0
  10. package/behaviors/crosshair.js +58 -0
  11. package/behaviors/dialog.js +73 -0
  12. package/behaviors/disclosure.js +25 -0
  13. package/behaviors/dismissible.js +24 -0
  14. package/behaviors/forms.js +158 -0
  15. package/behaviors/glyph.js +109 -0
  16. package/behaviors/index.d.ts +79 -0
  17. package/behaviors/index.js +18 -1409
  18. package/behaviors/internal.js +50 -0
  19. package/behaviors/legend.js +46 -0
  20. package/behaviors/menu.js +46 -0
  21. package/behaviors/popover.js +108 -0
  22. package/behaviors/spotlight.js +53 -0
  23. package/behaviors/table.js +109 -0
  24. package/behaviors/tabs.js +103 -0
  25. package/behaviors/theme.js +82 -0
  26. package/behaviors/toast.js +152 -0
  27. package/classes/index.d.ts +280 -2
  28. package/classes/index.js +313 -2
  29. package/connectors/index.d.ts +71 -0
  30. package/connectors/index.js +179 -0
  31. package/css/analytical.css +21 -0
  32. package/css/annotations.css +292 -0
  33. package/css/command.css +97 -0
  34. package/css/connectors.css +93 -0
  35. package/css/crosshair.css +100 -0
  36. package/css/feedback.css +51 -0
  37. package/css/fonts.css +11 -7
  38. package/css/generated.css +117 -0
  39. package/css/legend.css +268 -0
  40. package/css/marks.css +144 -0
  41. package/css/primitives.css +18 -0
  42. package/css/report.css +12 -31
  43. package/css/selection.css +46 -0
  44. package/css/sources.css +179 -0
  45. package/css/spotlight.css +104 -0
  46. package/css/state.css +121 -0
  47. package/css/tokens.css +25 -37
  48. package/css/workbench.css +83 -0
  49. package/dist/bronto.css +1 -1
  50. package/dist/css/analytical.css +1 -0
  51. package/dist/css/annotations.css +1 -0
  52. package/dist/css/command.css +1 -0
  53. package/dist/css/connectors.css +1 -0
  54. package/dist/css/crosshair.css +1 -0
  55. package/dist/css/feedback.css +1 -1
  56. package/dist/css/fonts.css +1 -1
  57. package/dist/css/generated.css +1 -0
  58. package/dist/css/legend.css +1 -0
  59. package/dist/css/marks.css +1 -0
  60. package/dist/css/primitives.css +1 -1
  61. package/dist/css/report.css +1 -1
  62. package/dist/css/selection.css +1 -0
  63. package/dist/css/sources.css +1 -0
  64. package/dist/css/spotlight.css +1 -0
  65. package/dist/css/state.css +1 -0
  66. package/dist/css/workbench.css +1 -0
  67. package/docs/adr/0003-theme-model.md +7 -4
  68. package/docs/annotations.md +345 -0
  69. package/docs/architecture.md +202 -0
  70. package/docs/command.md +95 -0
  71. package/docs/connectors.md +91 -0
  72. package/docs/crosshair.md +63 -0
  73. package/docs/generated.md +91 -0
  74. package/docs/legends.md +168 -0
  75. package/docs/marks.md +86 -0
  76. package/docs/reference.md +309 -3
  77. package/docs/reporting.md +49 -14
  78. package/docs/selection.md +40 -0
  79. package/docs/sources.md +110 -0
  80. package/docs/spotlight.md +78 -0
  81. package/docs/stability.md +16 -1
  82. package/docs/state.md +85 -0
  83. package/docs/usage.md +22 -0
  84. package/docs/workbench.md +72 -0
  85. package/fonts/doto-400.woff2 +0 -0
  86. package/fonts/doto-500.woff2 +0 -0
  87. package/fonts/doto-600.woff2 +0 -0
  88. package/fonts/doto-700.woff2 +0 -0
  89. package/fonts/doto-800.woff2 +0 -0
  90. package/fonts/doto-900.woff2 +0 -0
  91. package/llms.txt +229 -6
  92. package/package.json +69 -4
  93. package/qwik/index.d.ts +5 -0
  94. package/qwik/index.js +20 -0
  95. package/react/index.d.ts +5 -0
  96. package/react/index.js +10 -0
  97. package/solid/index.d.ts +5 -0
  98. package/solid/index.js +10 -0
  99. package/tokens/index.js +9 -5
  100. package/fonts/doto-400.ttf +0 -0
  101. package/fonts/doto-500.ttf +0 -0
  102. package/fonts/doto-600.ttf +0 -0
  103. package/fonts/doto-700.ttf +0 -0
  104. package/fonts/doto-800.ttf +0 -0
  105. package/fonts/doto-900.ttf +0 -0
package/docs/reference.md CHANGED
@@ -9,7 +9,7 @@ rendering of every class is the kitchen-sink demo:
9
9
  **<https://ponchia.github.io/bronto-ui/>**. Theming knobs and the token
10
10
  contract: [docs/theming.md](theming.md).
11
11
 
12
- - 303 classes across 121 component groups
12
+ - 474 classes across 148 component groups
13
13
  - Import the typed registry: `import { cls, ui, cx } from '@ponchia/ui/classes'`
14
14
  - Tokens as data: `import { cssVars, tokens, themeColor } from '@ponchia/ui/tokens'`
15
15
 
@@ -66,6 +66,46 @@ each one matches a real selector in the stylesheet.
66
66
  | --- | --- | --- |
67
67
  | `cls.animateMatrix` | `ui-animate-matrix` | base |
68
68
 
69
+ ### `.ui-annotation`
70
+
71
+ | Registry key | Class | Kind |
72
+ | --- | --- | --- |
73
+ | `cls.annotation` | `ui-annotation` | base |
74
+ | `cls.annotationBadge` | `ui-annotation__badge` | part |
75
+ | `cls.annotationConnector` | `ui-annotation__connector` | part |
76
+ | `cls.annotationConnectorEnd` | `ui-annotation__connector-end` | part |
77
+ | `cls.annotationLabel` | `ui-annotation__label` | part |
78
+ | `cls.annotationNote` | `ui-annotation__note` | part |
79
+ | `cls.annotationNoteLine` | `ui-annotation__note-line` | part |
80
+ | `cls.annotationSubject` | `ui-annotation__subject` | part |
81
+ | `cls.annotationTitle` | `ui-annotation__title` | part |
82
+ | `cls.annotationAccent` | `ui-annotation--accent` | modifier |
83
+ | `cls.annotationAxis` | `ui-annotation--axis` | modifier |
84
+ | `cls.annotationBadgeVariant` | `ui-annotation--badge` | modifier |
85
+ | `cls.annotationBand` | `ui-annotation--band` | modifier |
86
+ | `cls.annotationBracket` | `ui-annotation--bracket` | modifier |
87
+ | `cls.annotationCallout` | `ui-annotation--callout` | modifier |
88
+ | `cls.annotationCircle` | `ui-annotation--circle` | modifier |
89
+ | `cls.annotationCluster` | `ui-annotation--cluster` | modifier |
90
+ | `cls.annotationCompare` | `ui-annotation--compare` | modifier |
91
+ | `cls.annotationCurve` | `ui-annotation--curve` | modifier |
92
+ | `cls.annotationDanger` | `ui-annotation--danger` | modifier |
93
+ | `cls.annotationDraw` | `ui-annotation--draw` | modifier |
94
+ | `cls.annotationElbow` | `ui-annotation--elbow` | modifier |
95
+ | `cls.annotationEvidence` | `ui-annotation--evidence` | modifier |
96
+ | `cls.annotationFocus` | `ui-annotation--focus` | modifier |
97
+ | `cls.annotationInfo` | `ui-annotation--info` | modifier |
98
+ | `cls.annotationLabelVariant` | `ui-annotation--label` | modifier |
99
+ | `cls.annotationMuted` | `ui-annotation--muted` | modifier |
100
+ | `cls.annotationPulse` | `ui-annotation--pulse` | modifier |
101
+ | `cls.annotationRect` | `ui-annotation--rect` | modifier |
102
+ | `cls.annotationReveal` | `ui-annotation--reveal` | modifier |
103
+ | `cls.annotationSlope` | `ui-annotation--slope` | modifier |
104
+ | `cls.annotationSuccess` | `ui-annotation--success` | modifier |
105
+ | `cls.annotationThreshold` | `ui-annotation--threshold` | modifier |
106
+ | `cls.annotationTimeline` | `ui-annotation--timeline` | modifier |
107
+ | `cls.annotationWarning` | `ui-annotation--warning` | modifier |
108
+
69
109
  ### `.ui-app-content`
70
110
 
71
111
  | Registry key | Class | Kind |
@@ -172,6 +212,17 @@ each one matches a real selector in the stylesheet.
172
212
  | `cls.badgeSuccess` | `ui-badge--success` | modifier |
173
213
  | `cls.badgeWarning` | `ui-badge--warning` | modifier |
174
214
 
215
+ ### `.ui-bracket-note`
216
+
217
+ | Registry key | Class | Kind |
218
+ | --- | --- | --- |
219
+ | `cls.bracketNote` | `ui-bracket-note` | base |
220
+ | `cls.bracketNoteLabel` | `ui-bracket-note__label` | part |
221
+ | `cls.bracketNoteAccent` | `ui-bracket-note--accent` | modifier |
222
+ | `cls.bracketNoteDanger` | `ui-bracket-note--danger` | modifier |
223
+ | `cls.bracketNoteInfo` | `ui-bracket-note--info` | modifier |
224
+ | `cls.bracketNoteWarning` | `ui-bracket-note--warning` | modifier |
225
+
175
226
  ### `.ui-breadcrumb`
176
227
 
177
228
  | Registry key | Class | Kind |
@@ -248,9 +299,7 @@ each one matches a real selector in the stylesheet.
248
299
  | `cls.chartFallback` | `ui-chart__fallback` | part |
249
300
  | `cls.chartFill` | `ui-chart__fill` | part |
250
301
  | `cls.chartLabel` | `ui-chart__label` | part |
251
- | `cls.chartLegend` | `ui-chart__legend` | part |
252
302
  | `cls.chartPlot` | `ui-chart__plot` | part |
253
- | `cls.chartSwatch` | `ui-chart__swatch` | part |
254
303
  | `cls.chartTrack` | `ui-chart__track` | part |
255
304
 
256
305
  ### `.ui-check`
@@ -266,6 +315,13 @@ each one matches a real selector in the stylesheet.
266
315
  | `cls.chip` | `ui-chip` | base |
267
316
  | `cls.chipAccent` | `ui-chip--accent` | modifier |
268
317
 
318
+ ### `.ui-citation`
319
+
320
+ | Registry key | Class | Kind |
321
+ | --- | --- | --- |
322
+ | `cls.citation` | `ui-citation` | base |
323
+ | `cls.citationChip` | `ui-citation--chip` | modifier |
324
+
269
325
  ### `.ui-cluster`
270
326
 
271
327
  | Registry key | Class | Kind |
@@ -283,6 +339,35 @@ each one matches a real selector in the stylesheet.
283
339
  | `cls.comboboxList` | `ui-combobox__list` | part |
284
340
  | `cls.comboboxOption` | `ui-combobox__option` | part |
285
341
 
342
+ ### `.ui-command`
343
+
344
+ | Registry key | Class | Kind |
345
+ | --- | --- | --- |
346
+ | `cls.command` | `ui-command` | base |
347
+ | `cls.commandEmpty` | `ui-command__empty` | part |
348
+ | `cls.commandGroup` | `ui-command__group` | part |
349
+ | `cls.commandInput` | `ui-command__input` | part |
350
+ | `cls.commandItem` | `ui-command__item` | part |
351
+ | `cls.commandList` | `ui-command__list` | part |
352
+ | `cls.commandMeta` | `ui-command__meta` | part |
353
+ | `cls.commandShortcut` | `ui-command__shortcut` | part |
354
+
355
+ ### `.ui-connector`
356
+
357
+ | Registry key | Class | Kind |
358
+ | --- | --- | --- |
359
+ | `cls.connector` | `ui-connector` | base |
360
+ | `cls.connectorEnd` | `ui-connector__end` | part |
361
+ | `cls.connectorPath` | `ui-connector__path` | part |
362
+ | `cls.connectorAccent` | `ui-connector--accent` | modifier |
363
+ | `cls.connectorDanger` | `ui-connector--danger` | modifier |
364
+ | `cls.connectorDashed` | `ui-connector--dashed` | modifier |
365
+ | `cls.connectorDraw` | `ui-connector--draw` | modifier |
366
+ | `cls.connectorInfo` | `ui-connector--info` | modifier |
367
+ | `cls.connectorMuted` | `ui-connector--muted` | modifier |
368
+ | `cls.connectorSuccess` | `ui-connector--success` | modifier |
369
+ | `cls.connectorWarning` | `ui-connector--warning` | modifier |
370
+
286
371
  ### `.ui-container`
287
372
 
288
373
  | Registry key | Class | Kind |
@@ -297,6 +382,17 @@ each one matches a real selector in the stylesheet.
297
382
  | --- | --- | --- |
298
383
  | `cls.cq` | `ui-cq` | base |
299
384
 
385
+ ### `.ui-crosshair`
386
+
387
+ | Registry key | Class | Kind |
388
+ | --- | --- | --- |
389
+ | `cls.crosshair` | `ui-crosshair` | base |
390
+ | `cls.crosshairBadge` | `ui-crosshair__badge` | part |
391
+ | `cls.crosshairLine` | `ui-crosshair__line` | part |
392
+ | `cls.crosshairLineX` | `ui-crosshair__line--x` | modifier |
393
+ | `cls.crosshairLineY` | `ui-crosshair__line--y` | modifier |
394
+ | `cls.crosshairMuted` | `ui-crosshair--muted` | modifier |
395
+
300
396
  ### `.ui-display`
301
397
 
302
398
  | Registry key | Class | Kind |
@@ -407,6 +503,13 @@ each one matches a real selector in the stylesheet.
407
503
  | --- | --- | --- |
408
504
  | `cls.file` | `ui-file` | base |
409
505
 
506
+ ### `.ui-generated`
507
+
508
+ | Registry key | Class | Kind |
509
+ | --- | --- | --- |
510
+ | `cls.generated` | `ui-generated` | base |
511
+ | `cls.generatedLabel` | `ui-generated__label` | part |
512
+
410
513
  ### `.ui-grid`
411
514
 
412
515
  | Registry key | Class | Kind |
@@ -447,6 +550,14 @@ each one matches a real selector in the stylesheet.
447
550
  | `cls.inputIconSlot` | `ui-input-icon__icon` | part |
448
551
  | `cls.inputIconEnd` | `ui-input-icon--end` | modifier |
449
552
 
553
+ ### `.ui-inspector`
554
+
555
+ | Registry key | Class | Kind |
556
+ | --- | --- | --- |
557
+ | `cls.inspector` | `ui-inspector` | base |
558
+ | `cls.inspectorBody` | `ui-inspector__body` | part |
559
+ | `cls.inspectorHeader` | `ui-inspector__header` | part |
560
+
450
561
  ### `.ui-kbd`
451
562
 
452
563
  | Registry key | Class | Kind |
@@ -471,6 +582,39 @@ each one matches a real selector in the stylesheet.
471
582
  | --- | --- | --- |
472
583
  | `cls.label` | `ui-label` | base |
473
584
 
585
+ ### `.ui-legend`
586
+
587
+ | Registry key | Class | Kind |
588
+ | --- | --- | --- |
589
+ | `cls.legend` | `ui-legend` | base |
590
+ | `cls.legendCaption` | `ui-legend__caption` | part |
591
+ | `cls.legendItem` | `ui-legend__item` | part |
592
+ | `cls.legendLabel` | `ui-legend__label` | part |
593
+ | `cls.legendSwatch` | `ui-legend__swatch` | part |
594
+ | `cls.legendSwatch1` | `ui-legend__swatch--1` | modifier |
595
+ | `cls.legendSwatch2` | `ui-legend__swatch--2` | modifier |
596
+ | `cls.legendSwatch3` | `ui-legend__swatch--3` | modifier |
597
+ | `cls.legendSwatch4` | `ui-legend__swatch--4` | modifier |
598
+ | `cls.legendSwatch5` | `ui-legend__swatch--5` | modifier |
599
+ | `cls.legendSwatch6` | `ui-legend__swatch--6` | modifier |
600
+ | `cls.legendSwatch7` | `ui-legend__swatch--7` | modifier |
601
+ | `cls.legendSwatch8` | `ui-legend__swatch--8` | modifier |
602
+ | `cls.legendSwatchCircle` | `ui-legend__swatch--circle` | modifier |
603
+ | `cls.legendSwatchLine` | `ui-legend__swatch--line` | modifier |
604
+ | `cls.legendSymbol` | `ui-legend__symbol` | part |
605
+ | `cls.legendTick` | `ui-legend__tick` | part |
606
+ | `cls.legendTicks` | `ui-legend__ticks` | part |
607
+ | `cls.legendTitle` | `ui-legend__title` | part |
608
+ | `cls.legendTrack` | `ui-legend__track` | part |
609
+ | `cls.legendValue` | `ui-legend__value` | part |
610
+ | `cls.legendCompact` | `ui-legend--compact` | modifier |
611
+ | `cls.legendDiverging` | `ui-legend--diverging` | modifier |
612
+ | `cls.legendGradient` | `ui-legend--gradient` | modifier |
613
+ | `cls.legendInteractive` | `ui-legend--interactive` | modifier |
614
+ | `cls.legendThreshold` | `ui-legend--threshold` | modifier |
615
+ | `cls.legendVertical` | `ui-legend--vertical` | modifier |
616
+ | `cls.legendWithValues` | `ui-legend--with-values` | modifier |
617
+
474
618
  ### `.ui-lightbox`
475
619
 
476
620
  | Registry key | Class | Kind |
@@ -486,6 +630,22 @@ each one matches a real selector in the stylesheet.
486
630
  | `cls.linkArrow` | `ui-link--arrow` | modifier |
487
631
  | `cls.linkCta` | `ui-link--cta` | modifier |
488
632
 
633
+ ### `.ui-mark`
634
+
635
+ | Registry key | Class | Kind |
636
+ | --- | --- | --- |
637
+ | `cls.mark` | `ui-mark` | base |
638
+ | `cls.markAccent` | `ui-mark--accent` | modifier |
639
+ | `cls.markBox` | `ui-mark--box` | modifier |
640
+ | `cls.markDanger` | `ui-mark--danger` | modifier |
641
+ | `cls.markDraw` | `ui-mark--draw` | modifier |
642
+ | `cls.markInfo` | `ui-mark--info` | modifier |
643
+ | `cls.markMuted` | `ui-mark--muted` | modifier |
644
+ | `cls.markStrike` | `ui-mark--strike` | modifier |
645
+ | `cls.markSuccess` | `ui-mark--success` | modifier |
646
+ | `cls.markUnderline` | `ui-mark--underline` | modifier |
647
+ | `cls.markWarning` | `ui-mark--warning` | modifier |
648
+
489
649
  ### `.ui-matrix`
490
650
 
491
651
  | Registry key | Class | Kind |
@@ -558,6 +718,13 @@ each one matches a real selector in the stylesheet.
558
718
  | `cls.numNeg` | `ui-num--neg` | modifier |
559
719
  | `cls.numPos` | `ui-num--pos` | modifier |
560
720
 
721
+ ### `.ui-origin-label`
722
+
723
+ | Registry key | Class | Kind |
724
+ | --- | --- | --- |
725
+ | `cls.originLabel` | `ui-origin-label` | base |
726
+ | `cls.originLabelAi` | `ui-origin-label--ai` | modifier |
727
+
561
728
  ### `.ui-pagehead`
562
729
 
563
730
  | Registry key | Class | Kind |
@@ -606,6 +773,14 @@ each one matches a real selector in the stylesheet.
606
773
  | `cls.progressBar` | `ui-progress__bar` | part |
607
774
  | `cls.progressIndeterminate` | `ui-progress--indeterminate` | modifier |
608
775
 
776
+ ### `.ui-property`
777
+
778
+ | Registry key | Class | Kind |
779
+ | --- | --- | --- |
780
+ | `cls.property` | `ui-property` | base |
781
+ | `cls.propertyLabel` | `ui-property__label` | part |
782
+ | `cls.propertyValue` | `ui-property__value` | part |
783
+
609
784
  ### `.ui-prose`
610
785
 
611
786
  | Registry key | Class | Kind |
@@ -613,6 +788,13 @@ each one matches a real selector in the stylesheet.
613
788
  | `cls.prose` | `ui-prose` | base |
614
789
  | `cls.proseCompact` | `ui-prose--compact` | modifier |
615
790
 
791
+ ### `.ui-provenance`
792
+
793
+ | Registry key | Class | Kind |
794
+ | --- | --- | --- |
795
+ | `cls.provenance` | `ui-provenance` | base |
796
+ | `cls.provenanceItem` | `ui-provenance__item` | part |
797
+
616
798
  ### `.ui-quote`
617
799
 
618
800
  | Registry key | Class | Kind |
@@ -632,6 +814,19 @@ each one matches a real selector in the stylesheet.
632
814
  | --- | --- | --- |
633
815
  | `cls.ratio` | `ui-ratio` | base |
634
816
 
817
+ ### `.ui-readout`
818
+
819
+ | Registry key | Class | Kind |
820
+ | --- | --- | --- |
821
+ | `cls.readout` | `ui-readout` | base |
822
+
823
+ ### `.ui-reasoning`
824
+
825
+ | Registry key | Class | Kind |
826
+ | --- | --- | --- |
827
+ | `cls.reasoning` | `ui-reasoning` | base |
828
+ | `cls.reasoningBody` | `ui-reasoning__body` | part |
829
+
635
830
  ### `.ui-report`
636
831
 
637
832
  | Registry key | Class | Kind |
@@ -695,12 +890,36 @@ each one matches a real selector in the stylesheet.
695
890
  | `cls.segmented` | `ui-segmented` | base |
696
891
  | `cls.segmentedOption` | `ui-segmented__option` | part |
697
892
 
893
+ ### `.ui-sel`
894
+
895
+ | Registry key | Class | Kind |
896
+ | --- | --- | --- |
897
+ | `cls.sel` | `ui-sel` | base |
898
+ | `cls.selMaybe` | `ui-sel--maybe` | modifier |
899
+ | `cls.selOff` | `ui-sel--off` | modifier |
900
+ | `cls.selOn` | `ui-sel--on` | modifier |
901
+
698
902
  ### `.ui-select`
699
903
 
700
904
  | Registry key | Class | Kind |
701
905
  | --- | --- | --- |
702
906
  | `cls.select` | `ui-select` | base |
703
907
 
908
+ ### `.ui-selectionbar`
909
+
910
+ | Registry key | Class | Kind |
911
+ | --- | --- | --- |
912
+ | `cls.selectionbar` | `ui-selectionbar` | base |
913
+ | `cls.selectionbarActions` | `ui-selectionbar__actions` | part |
914
+ | `cls.selectionbarCount` | `ui-selectionbar__count` | part |
915
+
916
+ ### `.ui-shortcut`
917
+
918
+ | Registry key | Class | Kind |
919
+ | --- | --- | --- |
920
+ | `cls.shortcut` | `ui-shortcut` | base |
921
+ | `cls.shortcutSep` | `ui-shortcut__sep` | part |
922
+
704
923
  ### `.ui-sidebar`
705
924
 
706
925
  | Registry key | Class | Kind |
@@ -748,12 +967,49 @@ each one matches a real selector in the stylesheet.
748
967
  | --- | --- | --- |
749
968
  | `cls.skiplink` | `ui-skiplink` | base |
750
969
 
970
+ ### `.ui-source-card`
971
+
972
+ | Registry key | Class | Kind |
973
+ | --- | --- | --- |
974
+ | `cls.sourceCard` | `ui-source-card` | base |
975
+ | `cls.sourceCardActions` | `ui-source-card__actions` | part |
976
+ | `cls.sourceCardExcerpt` | `ui-source-card__excerpt` | part |
977
+ | `cls.sourceCardOrigin` | `ui-source-card__origin` | part |
978
+ | `cls.sourceCardTime` | `ui-source-card__time` | part |
979
+ | `cls.sourceCardTitle` | `ui-source-card__title` | part |
980
+
981
+ ### `.ui-source-list`
982
+
983
+ | Registry key | Class | Kind |
984
+ | --- | --- | --- |
985
+ | `cls.sourceList` | `ui-source-list` | base |
986
+ | `cls.sourceListItem` | `ui-source-list__item` | part |
987
+
751
988
  ### `.ui-spinner`
752
989
 
753
990
  | Registry key | Class | Kind |
754
991
  | --- | --- | --- |
755
992
  | `cls.spinner` | `ui-spinner` | base |
756
993
 
994
+ ### `.ui-spotlight`
995
+
996
+ | Registry key | Class | Kind |
997
+ | --- | --- | --- |
998
+ | `cls.spotlight` | `ui-spotlight` | base |
999
+ | `cls.spotlightHole` | `ui-spotlight__hole` | part |
1000
+ | `cls.spotlightRing` | `ui-spotlight--ring` | modifier |
1001
+
1002
+ ### `.ui-src`
1003
+
1004
+ | Registry key | Class | Kind |
1005
+ | --- | --- | --- |
1006
+ | `cls.srcConflict` | `ui-src--conflict` | modifier |
1007
+ | `cls.srcGenerated` | `ui-src--generated` | modifier |
1008
+ | `cls.srcReviewed` | `ui-src--reviewed` | modifier |
1009
+ | `cls.srcStale` | `ui-src--stale` | modifier |
1010
+ | `cls.srcUnverified` | `ui-src--unverified` | modifier |
1011
+ | `cls.srcVerified` | `ui-src--verified` | modifier |
1012
+
757
1013
  ### `.ui-stack`
758
1014
 
759
1015
  | Registry key | Class | Kind |
@@ -776,6 +1032,25 @@ each one matches a real selector in the stylesheet.
776
1032
  | `cls.statLabel` | `ui-stat__label` | part |
777
1033
  | `cls.statValue` | `ui-stat__value` | part |
778
1034
 
1035
+ ### `.ui-state`
1036
+
1037
+ | Registry key | Class | Kind |
1038
+ | --- | --- | --- |
1039
+ | `cls.state` | `ui-state` | base |
1040
+ | `cls.stateDetail` | `ui-state__detail` | part |
1041
+ | `cls.stateLabel` | `ui-state__label` | part |
1042
+ | `cls.stateBusy` | `ui-state--busy` | modifier |
1043
+ | `cls.stateConflict` | `ui-state--conflict` | modifier |
1044
+ | `cls.stateError` | `ui-state--error` | modifier |
1045
+ | `cls.stateLocked` | `ui-state--locked` | modifier |
1046
+ | `cls.stateNeedsReview` | `ui-state--needs-review` | modifier |
1047
+ | `cls.stateOffline` | `ui-state--offline` | modifier |
1048
+ | `cls.stateQueued` | `ui-state--queued` | modifier |
1049
+ | `cls.stateReviewed` | `ui-state--reviewed` | modifier |
1050
+ | `cls.stateSaved` | `ui-state--saved` | modifier |
1051
+ | `cls.stateSaving` | `ui-state--saving` | modifier |
1052
+ | `cls.stateStale` | `ui-state--stale` | modifier |
1053
+
779
1054
  ### `.ui-statgrid`
780
1055
 
781
1056
  | Registry key | Class | Kind |
@@ -816,6 +1091,12 @@ each one matches a real selector in the stylesheet.
816
1091
  | --- | --- | --- |
817
1092
  | `cls.switcher` | `ui-switcher` | base |
818
1093
 
1094
+ ### `.ui-syncbar`
1095
+
1096
+ | Registry key | Class | Kind |
1097
+ | --- | --- | --- |
1098
+ | `cls.syncbar` | `ui-syncbar` | base |
1099
+
819
1100
  ### `.ui-tab`
820
1101
 
821
1102
  | Registry key | Class | Kind |
@@ -908,6 +1189,21 @@ each one matches a real selector in the stylesheet.
908
1189
  | `cls.toastStack` | `ui-toast-stack` | base |
909
1190
  | `cls.toastStackAssertive` | `ui-toast-stack--assertive` | modifier |
910
1191
 
1192
+ ### `.ui-tool-call`
1193
+
1194
+ | Registry key | Class | Kind |
1195
+ | --- | --- | --- |
1196
+ | `cls.toolCall` | `ui-tool-call` | base |
1197
+ | `cls.toolCallBody` | `ui-tool-call__body` | part |
1198
+ | `cls.toolCallName` | `ui-tool-call__name` | part |
1199
+ | `cls.toolCallStatus` | `ui-tool-call__status` | part |
1200
+
1201
+ ### `.ui-tool-log`
1202
+
1203
+ | Registry key | Class | Kind |
1204
+ | --- | --- | --- |
1205
+ | `cls.toolLog` | `ui-tool-log` | base |
1206
+
911
1207
  ### `.ui-tooltip`
912
1208
 
913
1209
  | Registry key | Class | Kind |
@@ -915,6 +1211,16 @@ each one matches a real selector in the stylesheet.
915
1211
  | `cls.tooltip` | `ui-tooltip` | base |
916
1212
  | `cls.tooltipBubble` | `ui-tooltip__bubble` | part |
917
1213
 
1214
+ ### `.ui-tour-note`
1215
+
1216
+ | Registry key | Class | Kind |
1217
+ | --- | --- | --- |
1218
+ | `cls.tourNote` | `ui-tour-note` | base |
1219
+ | `cls.tourNoteActions` | `ui-tour-note__actions` | part |
1220
+ | `cls.tourNoteBody` | `ui-tour-note__body` | part |
1221
+ | `cls.tourNoteStep` | `ui-tour-note__step` | part |
1222
+ | `cls.tourNoteTitle` | `ui-tour-note__title` | part |
1223
+
918
1224
  ### `.ui-visually-hidden`
919
1225
 
920
1226
  | Registry key | Class | Kind |
package/docs/reporting.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Static reports
2
2
 
3
3
  `@ponchia/ui` can dress static, LLM-authored HTML reports without a component
4
- runtime. Load the normal bundle, then opt in to the report layer and the chart
5
- palette only when the report needs them.
4
+ runtime. Load the normal bundle, then opt in to the report layer, chart palette,
5
+ and annotation layer only when the report needs them.
6
6
 
7
7
  In a bundled app, package specifiers are fine because Vite or another bundler
8
8
  rewrites them:
@@ -11,6 +11,8 @@ rewrites them:
11
11
  @import '@ponchia/ui';
12
12
  @import '@ponchia/ui/css/report.css';
13
13
  @import '@ponchia/ui/css/dataviz.css';
14
+ @import '@ponchia/ui/css/annotations.css';
15
+ @import '@ponchia/ui/css/legend.css';
14
16
  ```
15
17
 
16
18
  For standalone browser HTML, use real stylesheet URLs. Package specifiers like
@@ -20,11 +22,14 @@ For standalone browser HTML, use real stylesheet URLs. Package specifiers like
20
22
  <link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/bronto.css" />
21
23
  <link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/css/report.css" />
22
24
  <link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/css/dataviz.css" />
25
+ <link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/css/annotations.css" />
26
+ <link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/css/legend.css" />
23
27
  ```
24
28
 
25
29
  If you copy the built CSS next to the report, keep the same relationship between
26
- `dist/bronto.css`, `dist/css/report.css`, `dist/css/dataviz.css`, and `fonts/`
27
- so font URLs continue to resolve.
30
+ `dist/bronto.css`, `dist/css/report.css`, `dist/css/dataviz.css`,
31
+ `dist/css/annotations.css`, `dist/css/legend.css`, and `fonts/` so font URLs
32
+ continue to resolve.
28
33
 
29
34
  The report layer is static and PDF-first. It does not initialize behaviors and
30
35
  does not sanitize content. If a report includes arbitrary LLM, CMS, or user HTML,
@@ -128,31 +133,33 @@ sanitize that content before rendering it and do not initialize
128
133
 
129
134
  ## Chart figure recipe
130
135
 
131
- The report layer supplies chart containers, legends, and a small static bar
132
- pattern, not a chart engine. For CSS/HTML/SVG charts, pair each chart color with
133
- a direct label, a pattern, or a fallback table.
136
+ The report layer supplies chart containers and a small static bar pattern, not a
137
+ chart engine. The data key is the standalone, portable `.ui-legend`
138
+ (`@ponchia/ui/css/legend.css`) see [legends.md](./legends.md). For
139
+ CSS/HTML/SVG charts, pair each chart color with a direct label, a pattern, or a
140
+ fallback table.
134
141
 
135
142
  ```html
136
143
  <figure class="ui-report__figure ui-chart ui-print-exact" role="group" aria-labelledby="chart-title">
137
144
  <figcaption id="chart-title" class="ui-chart__caption">
138
145
  Fig 1 - Weekly focus split
139
146
  </figcaption>
140
- <ul class="ui-chart__legend" aria-label="Series">
141
- <li>
147
+ <ul class="ui-legend" aria-label="Series">
148
+ <li class="ui-legend__item">
142
149
  <span
143
- class="ui-chart__swatch"
150
+ class="ui-legend__swatch"
144
151
  style="--chart-color: var(--chart-1); --chart-pattern: var(--chart-pattern-1)"
145
152
  aria-hidden="true"
146
153
  ></span>
147
- Research
154
+ <span class="ui-legend__label">Research</span>
148
155
  </li>
149
- <li>
156
+ <li class="ui-legend__item">
150
157
  <span
151
- class="ui-chart__swatch"
158
+ class="ui-legend__swatch"
152
159
  style="--chart-color: var(--chart-2); --chart-pattern: var(--chart-pattern-2)"
153
160
  aria-hidden="true"
154
161
  ></span>
155
- Delivery
162
+ <span class="ui-legend__label">Delivery</span>
156
163
  </li>
157
164
  </ul>
158
165
  <div class="ui-chart__plot" aria-hidden="true">
@@ -192,6 +199,34 @@ For canvas or SVG libraries, import resolved series colors from
192
199
  `@ponchia/ui/charts.json` and keep the same legend/caption/fallback structure in
193
200
  the surrounding HTML.
194
201
 
202
+ ## Annotation recipe
203
+
204
+ When a report chart needs an explicit callout, import
205
+ `@ponchia/ui/css/annotations.css` and layer SVG annotations inside the same
206
+ `ui-report__figure`. Keep the subject/connector/note text visible in the SVG or
207
+ represented by the figure caption/fallback data.
208
+
209
+ ```html
210
+ <svg viewBox="0 0 360 160" role="img" aria-labelledby="annotated-title annotated-desc">
211
+ <title id="annotated-title">Weekly focus chart with peak callout</title>
212
+ <desc id="annotated-desc">The annotation marks the research peak.</desc>
213
+ <g class="ui-annotation ui-annotation--circle ui-annotation--accent" transform="translate(210, 58)">
214
+ <path class="ui-annotation__subject" d="M0,-18A18,18 0 1 1 0,18A18,18 0 1 1 0,-18Z" />
215
+ <path class="ui-annotation__connector" d="M15.556,-7.424L84,-40" />
216
+ <g class="ui-annotation__note" transform="translate(84, -40)">
217
+ <path class="ui-annotation__note-line" d="M0,0H92" />
218
+ <text class="ui-annotation__title" y="-8">Peak</text>
219
+ <text class="ui-annotation__label" y="12">18 research hours</text>
220
+ </g>
221
+ </g>
222
+ </svg>
223
+ ```
224
+
225
+ For generated SVG, use `@ponchia/ui/annotations` to compute connector and
226
+ subject path strings. Full annotation recipes and the complete variant list are
227
+ in `docs/annotations.md`; the shipped `demo/annotations.html` page is the
228
+ visual specimen.
229
+
195
230
  ## Timeline recipe
196
231
 
197
232
  Incident reviews and research logs should use the existing timeline primitive
@@ -0,0 +1,40 @@
1
+ # Selection states
2
+
3
+ `@ponchia/ui/css/selection.css` is a tiny, **cross-cutting selection-emphasis
4
+ vocabulary** — the carve-out from "brush/lasso". Bronto does **not** do region
5
+ selection or hit-testing (that needs your scales and geometry). It ships only
6
+ the *states* an item can be in once your code has decided what's selected, so
7
+ the same emphasis works on a chart mark, a table row, a list item, or a map
8
+ region.
9
+
10
+ ```css
11
+ @import '@ponchia/ui';
12
+ @import '@ponchia/ui/css/selection.css';
13
+ ```
14
+
15
+ | Class | State |
16
+ | --- | --- |
17
+ | `ui-sel` | Base — opt the element into the emphasis transitions. |
18
+ | `ui-sel--on` | In the selection (accent outline). |
19
+ | `ui-sel--off` | Excluded / filtered out (dimmed). |
20
+ | `ui-sel--maybe` | A live-brush candidate (dashed outline). |
21
+
22
+ ```html
23
+ <rect class="ui-sel ui-sel--on" … />
24
+ <tr class="ui-sel ui-sel--off">…</tr>
25
+ ```
26
+
27
+ ```js
28
+ import { ui } from '@ponchia/ui/classes';
29
+ el.className = ui.sel({ state: inBrush ? 'maybe' : selected ? 'on' : 'off' });
30
+ ```
31
+
32
+ Your code adds/removes these classes from its own brush, filter, or selection
33
+ logic — Bronto only styles them. `--off` uses `opacity` (which survives
34
+ forced-colors), and `--on` falls back to the system `Highlight` color in
35
+ forced-colors so the selection stays visible.
36
+
37
+ > **Why no brush behavior?** A rectangular brush or lasso must translate a
38
+ > dragged region into a data domain (or test points against a polygon), which
39
+ > requires owning the chart's scales/geometry — across Bronto's line. Bring your
40
+ > own selection logic; use these classes to render the result.