@ponchia/ui 0.6.12 → 0.7.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 (51) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/MIGRATIONS.json +14 -0
  3. package/README.md +14 -6
  4. package/behaviors/dialog.d.ts.map +1 -1
  5. package/behaviors/dialog.js +14 -0
  6. package/behaviors/modal.d.ts +4 -0
  7. package/behaviors/modal.d.ts.map +1 -1
  8. package/behaviors/modal.js +4 -0
  9. package/behaviors/splitter.d.ts +2 -0
  10. package/behaviors/splitter.d.ts.map +1 -1
  11. package/behaviors/splitter.js +15 -1
  12. package/behaviors/theme.d.ts +3 -2
  13. package/behaviors/theme.d.ts.map +1 -1
  14. package/behaviors/theme.js +10 -6
  15. package/bin/bronto-ui-check.mjs +286 -0
  16. package/classes/classes.json +7 -0
  17. package/css/disclosure.css +10 -0
  18. package/css/dots.css +43 -18
  19. package/css/feedback.css +35 -0
  20. package/css/report.css +0 -40
  21. package/css/site.css +10 -0
  22. package/dist/bronto.css +1 -1
  23. package/dist/css/disclosure.css +1 -1
  24. package/dist/css/dots.css +1 -1
  25. package/dist/css/feedback.css +1 -1
  26. package/dist/css/report-kit.css +1 -1
  27. package/dist/css/report.css +1 -1
  28. package/dist/css/site.css +1 -1
  29. package/docs/adr/0004-prune-unused-adapters.md +34 -0
  30. package/docs/architecture.md +14 -10
  31. package/docs/command.md +18 -4
  32. package/docs/migrations/0.6-to-0.7.md +85 -0
  33. package/docs/package-contract.md +10 -5
  34. package/docs/reporting.md +8 -8
  35. package/docs/stability.md +10 -9
  36. package/docs/theming.md +49 -5
  37. package/docs/usage.md +57 -17
  38. package/docs/workbench.md +16 -2
  39. package/llms.txt +7 -3
  40. package/package.json +13 -3
  41. package/qwik/index.d.ts.map +1 -1
  42. package/qwik/index.js +4 -0
  43. package/react/index.d.ts.map +1 -1
  44. package/react/index.js +4 -0
  45. package/solid/index.d.ts.map +1 -1
  46. package/solid/index.js +4 -0
  47. package/svelte/index.d.ts.map +1 -1
  48. package/svelte/index.js +4 -0
  49. package/tokens/tokens.dtcg.json +2508 -399
  50. package/vue/index.d.ts.map +1 -1
  51. package/vue/index.js +4 -0
package/css/dots.css CHANGED
@@ -136,7 +136,9 @@
136
136
 
137
137
  /* Status dot — the glyph-style state indicator. */
138
138
  .ui-dot {
139
- background: var(--text-dim);
139
+ --ui-dot-color: var(--text-dim);
140
+
141
+ background: var(--ui-dot-color);
140
142
  border-radius: 50%;
141
143
  display: inline-block;
142
144
  flex: 0 0 auto;
@@ -145,34 +147,45 @@
145
147
  }
146
148
 
147
149
  .ui-dot--accent {
148
- background: var(--accent);
150
+ --ui-dot-color: var(--accent);
149
151
  }
150
152
 
151
153
  .ui-dot--success {
152
- background: var(--success);
154
+ --ui-dot-color: var(--success);
153
155
  }
154
156
 
155
157
  .ui-dot--warning {
156
- background: var(--warning);
158
+ --ui-dot-color: var(--warning);
157
159
  }
158
160
 
159
161
  .ui-dot--danger {
160
- background: var(--danger);
162
+ --ui-dot-color: var(--danger);
161
163
  }
162
164
 
163
165
  .ui-dot--info {
164
- background: var(--info);
166
+ --ui-dot-color: var(--info);
165
167
  }
166
168
 
167
169
  .ui-dot--live {
168
- background: var(--success);
169
- box-shadow: 0 0 0 0 color-mix(in srgb, var(--success) 70%, transparent);
170
+ box-shadow: 0 0 0 0 color-mix(in srgb, var(--ui-dot-color) 70%, transparent);
170
171
  position: relative;
171
172
  }
172
173
 
174
+ /* Live describes motion, not status. A standalone live dot defaults to
175
+ success; an explicit tone remains the colour of both the dot and ring. */
176
+ .ui-dot--live:not(
177
+ .ui-dot--accent,
178
+ .ui-dot--success,
179
+ .ui-dot--warning,
180
+ .ui-dot--danger,
181
+ .ui-dot--info
182
+ ) {
183
+ --ui-dot-color: var(--success);
184
+ }
185
+
173
186
  .ui-dot--live::after {
174
187
  animation: pulseRing 1.8s var(--ease-out) infinite;
175
- border: 1px solid var(--success);
188
+ border: 1px solid var(--ui-dot-color);
176
189
  border-radius: 50%;
177
190
  content: '';
178
191
  inset: -3px;
@@ -562,36 +575,48 @@
562
575
  differentiable. */
563
576
  @media (forced-colors: active) {
564
577
  .ui-dot--success {
578
+ --ui-dot-color: LinkText;
579
+
565
580
  forced-color-adjust: none;
566
- background: LinkText;
567
581
  }
568
582
 
569
583
  .ui-dot--warning {
584
+ --ui-dot-color: Mark;
585
+
570
586
  forced-color-adjust: none;
571
- background: Mark;
572
587
  }
573
588
 
574
589
  .ui-dot--danger {
590
+ --ui-dot-color: Highlight;
591
+
575
592
  forced-color-adjust: none;
576
- background: Highlight;
577
593
  }
578
594
 
579
595
  .ui-dot--info {
596
+ --ui-dot-color: ButtonText;
597
+
580
598
  forced-color-adjust: none;
581
- background: ButtonText;
582
599
  }
583
600
 
584
601
  /* Brand/live dots aren't status tones, but they still encode meaning via
585
602
  background-color alone, which HCM flattens. Keep them on a distinct,
586
603
  opted-out system colour for completeness. */
587
- .ui-dot--accent,
588
- .ui-dot--live {
604
+ .ui-dot--accent {
605
+ --ui-dot-color: LinkText;
606
+
589
607
  forced-color-adjust: none;
590
- background: LinkText;
591
608
  }
592
609
 
593
- .ui-dot--live::after {
594
- border-color: LinkText;
610
+ .ui-dot--live:not(
611
+ .ui-dot--accent,
612
+ .ui-dot--success,
613
+ .ui-dot--warning,
614
+ .ui-dot--danger,
615
+ .ui-dot--info
616
+ ) {
617
+ --ui-dot-color: LinkText;
618
+
619
+ forced-color-adjust: none;
595
620
  }
596
621
 
597
622
  /* The masked one-node icon paints `background: currentcolor` through an SVG
package/css/feedback.css CHANGED
@@ -517,6 +517,41 @@
517
517
  background: var(--info);
518
518
  }
519
519
 
520
+ /* A labelled meter is core feedback grammar, not report-only layout. The
521
+ visible value remains the data of record because role=meter support varies. */
522
+ .ui-meter__row {
523
+ align-items: center;
524
+ display: grid;
525
+ gap: var(--space-2xs) var(--space-md);
526
+ grid-template-columns: minmax(9rem, 14rem) 1fr auto;
527
+ margin-block: var(--space-2xs);
528
+ }
529
+
530
+ .ui-meter__row .ui-meter {
531
+ min-inline-size: 8rem;
532
+ }
533
+
534
+ .ui-meter__label {
535
+ color: var(--text-soft);
536
+ }
537
+
538
+ .ui-meter__value {
539
+ color: var(--text);
540
+ font-family: var(--mono);
541
+ font-variant-numeric: tabular-nums;
542
+ text-align: end;
543
+ }
544
+
545
+ @media (max-width: 32rem) {
546
+ .ui-meter__row {
547
+ grid-template-columns: 1fr;
548
+ }
549
+
550
+ .ui-meter__value {
551
+ text-align: start;
552
+ }
553
+ }
554
+
520
555
  /* --- Steps — progress through a multi-step flow. Use an <ol>; the
521
556
  current step is aria-current="step" (no class), completed steps take
522
557
  --done. Counter-numbered markers, hairline connectors. --- */
package/css/report.css CHANGED
@@ -619,46 +619,6 @@
619
619
  text-transform: uppercase;
620
620
  }
621
621
 
622
- /* --- Labelled meter row ---
623
- A multi-meter block (SLO burn, error budgets, capacity) lays out as
624
- label | bar | value. The bare `ui-meter` base lives in feedback.css; this is
625
- the report-document grammar around it so authors stop hand-rolling the grid.
626
- The bar NEVER carries the reading alone (WCAG 1.4.1) — `ui-meter__value` is
627
- the data of record, and the bar clamps at 100 so an over-target figure still
628
- reads correctly in the value text. Collapses to a stack on a narrow screen. */
629
- .ui-meter__row {
630
- align-items: center;
631
- display: grid;
632
- gap: var(--space-2xs) var(--space-md);
633
- grid-template-columns: minmax(9rem, 14rem) 1fr auto;
634
- margin-block: var(--space-2xs);
635
- }
636
-
637
- .ui-meter__row .ui-meter {
638
- min-inline-size: 8rem;
639
- }
640
-
641
- .ui-meter__label {
642
- color: var(--text-soft);
643
- }
644
-
645
- .ui-meter__value {
646
- color: var(--text);
647
- font-family: var(--mono);
648
- font-variant-numeric: tabular-nums;
649
- text-align: end;
650
- }
651
-
652
- @media (max-width: 32rem) {
653
- .ui-meter__row {
654
- grid-template-columns: 1fr;
655
- }
656
-
657
- .ui-meter__value {
658
- text-align: start;
659
- }
660
- }
661
-
662
622
  /* A chart is NOT a bronto component — it needs scales + data binding, which the
663
623
  analytical layer refuses to own. Theme Vega-Lite with `@ponchia/ui/vega`
664
624
  (docs/vega.md), or hand-author a token-themed inline `<svg>`, and drop it in a
package/css/site.css CHANGED
@@ -296,6 +296,16 @@
296
296
  }
297
297
  }
298
298
 
299
+ @media (pointer: coarse) {
300
+ .ui-sitefooter__links a {
301
+ align-items: center;
302
+ display: inline-flex;
303
+ justify-content: center;
304
+ min-block-size: max(24px, 1.6rem);
305
+ min-inline-size: max(24px, 1.6rem);
306
+ }
307
+ }
308
+
299
309
  /* --- Tags — neutral, wrapping content labels (NOT ui-chip, which is a
300
310
  single interactive token). Use a <ul>. --- */
301
311