@ai-matrx/design-system 0.86.349 → 0.86.351

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 (96) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/dist/carousel.cjs.map +1 -1
  3. package/dist/carousel.js +5 -5
  4. package/dist/chunk-4WSXAP24.js +51 -0
  5. package/dist/chunk-4WSXAP24.js.map +1 -0
  6. package/dist/{chunk-XTP6HOB6.js → chunk-6XNYYROM.js} +1 -1
  7. package/dist/chunk-6XNYYROM.js.map +1 -0
  8. package/dist/{chunk-CEA6X445.js → chunk-CFUXEGW2.js} +2 -2
  9. package/dist/{chunk-54UK6P7E.js → chunk-FLWSEDUW.js} +3 -3
  10. package/dist/{chunk-BC7LMEOD.js → chunk-GJ6UGQ4X.js} +7 -3
  11. package/dist/chunk-GJ6UGQ4X.js.map +1 -0
  12. package/dist/{chunk-6CDAHINE.js → chunk-GMNROZQJ.js} +4 -4
  13. package/dist/{chunk-6CDAHINE.js.map → chunk-GMNROZQJ.js.map} +1 -1
  14. package/dist/{chunk-6QKT52FR.js → chunk-MTE6N7XU.js} +2 -2
  15. package/dist/{chunk-S6F34AX5.js → chunk-QA7EHFRX.js} +2 -2
  16. package/dist/{chunk-CJBSBKG5.js → chunk-SOCNWQMX.js} +2 -2
  17. package/dist/{chunk-GLLPO66A.js → chunk-U46XUQI7.js} +2 -2
  18. package/dist/{chunk-KYH42WEX.js → chunk-UGQRAQTE.js} +433 -344
  19. package/dist/chunk-UGQRAQTE.js.map +1 -0
  20. package/dist/{chunk-TWRC7NP4.js → chunk-WUD23YTG.js} +4 -4
  21. package/dist/{chunk-MIJMP4WI.js → chunk-YRF22M5S.js} +6 -1
  22. package/dist/{chunk-MIJMP4WI.js.map → chunk-YRF22M5S.js.map} +1 -1
  23. package/dist/clipboard-fallback-dialog.cjs.map +1 -1
  24. package/dist/clipboard-fallback-dialog.js +1 -1
  25. package/dist/controls.cjs +547 -458
  26. package/dist/controls.cjs.map +1 -1
  27. package/dist/controls.css +52 -18
  28. package/dist/controls.d.cts +51 -3
  29. package/dist/controls.d.ts +51 -3
  30. package/dist/controls.js +13 -5
  31. package/dist/data-table/data-row-inspector.cjs.map +1 -1
  32. package/dist/data-table/data-row-inspector.js +4 -4
  33. package/dist/data-table/data-row-window.cjs.map +1 -1
  34. package/dist/data-table/data-row-window.js +5 -5
  35. package/dist/data-table/index.cjs +53 -43
  36. package/dist/data-table/index.cjs.map +1 -1
  37. package/dist/data-table/index.js +52 -45
  38. package/dist/data-table/index.js.map +1 -1
  39. package/dist/data-table/pagination.cjs.map +1 -1
  40. package/dist/data-table/pagination.js +2 -2
  41. package/dist/data-table/spreadsheet.cjs +6 -2
  42. package/dist/data-table/spreadsheet.cjs.map +1 -1
  43. package/dist/data-table/spreadsheet.d.cts +4 -1
  44. package/dist/data-table/spreadsheet.d.ts +4 -1
  45. package/dist/data-table/spreadsheet.js +3 -1
  46. package/dist/data-table/uuid-cell.cjs.map +1 -1
  47. package/dist/data-table/uuid-cell.js +2 -2
  48. package/dist/desktop.cjs +158 -16
  49. package/dist/desktop.cjs.map +1 -1
  50. package/dist/desktop.css +46 -0
  51. package/dist/desktop.d.cts +6 -5
  52. package/dist/desktop.d.ts +6 -5
  53. package/dist/desktop.js +127 -17
  54. package/dist/desktop.js.map +1 -1
  55. package/dist/index.cjs +19 -9
  56. package/dist/index.cjs.map +1 -1
  57. package/dist/index.d.cts +10 -1
  58. package/dist/index.d.ts +10 -1
  59. package/dist/index.js +21 -14
  60. package/dist/index.js.map +1 -1
  61. package/dist/item.cjs.map +1 -1
  62. package/dist/item.js +2 -2
  63. package/dist/lite-table.cjs.map +1 -1
  64. package/dist/lite-table.js +1 -1
  65. package/dist/notice-stack.cjs +70 -0
  66. package/dist/notice-stack.cjs.map +1 -0
  67. package/dist/notice-stack.d.cts +60 -0
  68. package/dist/notice-stack.d.ts +60 -0
  69. package/dist/notice-stack.js +16 -0
  70. package/dist/notice-stack.js.map +1 -0
  71. package/dist/record-list.cjs.map +1 -1
  72. package/dist/record-list.js +2 -2
  73. package/dist/settings.cjs +2 -2
  74. package/dist/settings.cjs.map +1 -1
  75. package/dist/settings.js +3 -3
  76. package/dist/swipe-deck.cjs +95 -25
  77. package/dist/swipe-deck.cjs.map +1 -1
  78. package/dist/swipe-deck.css +14 -0
  79. package/dist/swipe-deck.d.cts +20 -0
  80. package/dist/swipe-deck.d.ts +20 -0
  81. package/dist/swipe-deck.js +87 -25
  82. package/dist/swipe-deck.js.map +1 -1
  83. package/dist/writing-field.cjs +2 -2
  84. package/dist/writing-field.cjs.map +1 -1
  85. package/dist/writing-field.js +2 -2
  86. package/package.json +12 -18
  87. package/dist/chunk-BC7LMEOD.js.map +0 -1
  88. package/dist/chunk-KYH42WEX.js.map +0 -1
  89. package/dist/chunk-XTP6HOB6.js.map +0 -1
  90. /package/dist/{chunk-CEA6X445.js.map → chunk-CFUXEGW2.js.map} +0 -0
  91. /package/dist/{chunk-54UK6P7E.js.map → chunk-FLWSEDUW.js.map} +0 -0
  92. /package/dist/{chunk-6QKT52FR.js.map → chunk-MTE6N7XU.js.map} +0 -0
  93. /package/dist/{chunk-S6F34AX5.js.map → chunk-QA7EHFRX.js.map} +0 -0
  94. /package/dist/{chunk-CJBSBKG5.js.map → chunk-SOCNWQMX.js.map} +0 -0
  95. /package/dist/{chunk-GLLPO66A.js.map → chunk-U46XUQI7.js.map} +0 -0
  96. /package/dist/{chunk-TWRC7NP4.js.map → chunk-WUD23YTG.js.map} +0 -0
package/dist/controls.css CHANGED
@@ -294,6 +294,18 @@
294
294
  .matrx-control-button[data-variant="link"]:hover:not(:disabled) {
295
295
  text-decoration: underline !important;
296
296
  }
297
+ /* meta: a section heading's own action ("Edit" beside "Pinned") — the heading's 11px/500 meta
298
+ text, muted ink, full ink on hover, a tight inset. Same box, same half-gap. */
299
+ .matrx-control-button[data-variant="meta"] {
300
+ padding-inline: 0.375rem !important;
301
+ color: hsl(var(--muted-foreground)) !important;
302
+ font-size: var(--matrx-control-meta) !important;
303
+ font-weight: 500 !important;
304
+ }
305
+ .matrx-control-button[data-variant="meta"]:hover:not(:disabled) {
306
+ background-color: hsl(var(--muted)) !important;
307
+ color: hsl(var(--foreground)) !important;
308
+ }
297
309
  /* PRESSED (Button pressed): a toggle in a set. On = a primary tint with a primary
298
310
  hairline (the old accent gray, rgb 239,239,240, vanished on tinted cards; pinned in
299
311
  pressed-contrast.test.ts), full ink; off = no fill, quiet ink. Out-ranks the
@@ -1008,24 +1020,24 @@
1008
1020
  border-color: hsl(var(--chip-tone) / 0.3) !important;
1009
1021
  color: hsl(var(--chip-ink, var(--chip-tone))) !important;
1010
1022
  }
1011
- :is(.matrx-control-chip, .matrx-tile)[data-tone="primary"] { --chip-tone: var(--primary); --chip-ink: var(--primary-ink); }
1012
- :is(.matrx-control-chip, .matrx-tile)[data-tone="success"] { --chip-tone: var(--success); --chip-ink: var(--success-ink); }
1013
- :is(.matrx-control-chip, .matrx-tile)[data-tone="destructive"] { --chip-tone: var(--destructive); --chip-ink: var(--destructive-ink); }
1014
- :is(.matrx-control-chip, .matrx-tile)[data-tone="info"] { --chip-tone: var(--info); --chip-ink: var(--info-ink); }
1015
- :is(.matrx-control-chip, .matrx-tile)[data-tone="warning"] { --chip-tone: var(--matrx-chip-amber); --chip-ink: var(--matrx-chip-amber-ink); }
1016
- :is(.matrx-control-chip, .matrx-tile)[data-tone="sky"] { --chip-tone: var(--matrx-chip-sky); --chip-ink: var(--matrx-chip-sky-ink); }
1017
- :is(.matrx-control-chip, .matrx-tile)[data-tone="blue"] { --chip-tone: var(--matrx-chip-blue); --chip-ink: var(--matrx-chip-blue-ink); }
1018
- :is(.matrx-control-chip, .matrx-tile)[data-tone="indigo"] { --chip-tone: var(--matrx-chip-indigo); --chip-ink: var(--matrx-chip-indigo-ink); }
1019
- :is(.matrx-control-chip, .matrx-tile)[data-tone="violet"] { --chip-tone: var(--matrx-chip-violet); --chip-ink: var(--matrx-chip-violet-ink); }
1020
- :is(.matrx-control-chip, .matrx-tile)[data-tone="fuchsia"] { --chip-tone: var(--matrx-chip-fuchsia); --chip-ink: var(--matrx-chip-fuchsia-ink); }
1021
- :is(.matrx-control-chip, .matrx-tile)[data-tone="rose"] { --chip-tone: var(--matrx-chip-rose); --chip-ink: var(--matrx-chip-rose-ink); }
1022
- :is(.matrx-control-chip, .matrx-tile)[data-tone="orange"] { --chip-tone: var(--matrx-chip-orange); --chip-ink: var(--matrx-chip-orange-ink); }
1023
- :is(.matrx-control-chip, .matrx-tile)[data-tone="amber"] { --chip-tone: var(--matrx-chip-amber); --chip-ink: var(--matrx-chip-amber-ink); }
1024
- :is(.matrx-control-chip, .matrx-tile)[data-tone="lime"] { --chip-tone: var(--matrx-chip-lime); --chip-ink: var(--matrx-chip-lime-ink); }
1025
- :is(.matrx-control-chip, .matrx-tile)[data-tone="emerald"] { --chip-tone: var(--matrx-chip-emerald); --chip-ink: var(--matrx-chip-emerald-ink); }
1026
- :is(.matrx-control-chip, .matrx-tile)[data-tone="teal"] { --chip-tone: var(--matrx-chip-teal); --chip-ink: var(--matrx-chip-teal-ink); }
1027
- :is(.matrx-control-chip, .matrx-tile)[data-tone="cyan"] { --chip-tone: var(--matrx-chip-cyan); --chip-ink: var(--matrx-chip-cyan-ink); }
1028
- :is(.matrx-control-chip, .matrx-tile)[data-tone="slate"] { --chip-tone: var(--matrx-chip-slate); --chip-ink: var(--matrx-chip-slate-ink); }
1023
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="primary"] { --chip-tone: var(--primary); --chip-ink: var(--primary-ink); }
1024
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="success"] { --chip-tone: var(--success); --chip-ink: var(--success-ink); }
1025
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="destructive"] { --chip-tone: var(--destructive); --chip-ink: var(--destructive-ink); }
1026
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="info"] { --chip-tone: var(--info); --chip-ink: var(--info-ink); }
1027
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="warning"] { --chip-tone: var(--matrx-chip-amber); --chip-ink: var(--matrx-chip-amber-ink); }
1028
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="sky"] { --chip-tone: var(--matrx-chip-sky); --chip-ink: var(--matrx-chip-sky-ink); }
1029
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="blue"] { --chip-tone: var(--matrx-chip-blue); --chip-ink: var(--matrx-chip-blue-ink); }
1030
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="indigo"] { --chip-tone: var(--matrx-chip-indigo); --chip-ink: var(--matrx-chip-indigo-ink); }
1031
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="violet"] { --chip-tone: var(--matrx-chip-violet); --chip-ink: var(--matrx-chip-violet-ink); }
1032
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="fuchsia"] { --chip-tone: var(--matrx-chip-fuchsia); --chip-ink: var(--matrx-chip-fuchsia-ink); }
1033
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="rose"] { --chip-tone: var(--matrx-chip-rose); --chip-ink: var(--matrx-chip-rose-ink); }
1034
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="orange"] { --chip-tone: var(--matrx-chip-orange); --chip-ink: var(--matrx-chip-orange-ink); }
1035
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="amber"] { --chip-tone: var(--matrx-chip-amber); --chip-ink: var(--matrx-chip-amber-ink); }
1036
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="lime"] { --chip-tone: var(--matrx-chip-lime); --chip-ink: var(--matrx-chip-lime-ink); }
1037
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="emerald"] { --chip-tone: var(--matrx-chip-emerald); --chip-ink: var(--matrx-chip-emerald-ink); }
1038
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="teal"] { --chip-tone: var(--matrx-chip-teal); --chip-ink: var(--matrx-chip-teal-ink); }
1039
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="cyan"] { --chip-tone: var(--matrx-chip-cyan); --chip-ink: var(--matrx-chip-cyan-ink); }
1040
+ :is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)[data-tone="slate"] { --chip-tone: var(--matrx-chip-slate); --chip-ink: var(--matrx-chip-slate-ink); }
1029
1041
  /* HUE CARDS tone table: the chip table above, restated for `.matrx-hue-card` (one source of hues). */
1030
1042
  .matrx-hue-card[data-tone="primary"] { --chip-tone: var(--primary); --chip-ink: var(--primary-ink); }
1031
1043
  .matrx-hue-card[data-tone="success"] { --chip-tone: var(--success); --chip-ink: var(--success-ink); }
@@ -1609,6 +1621,15 @@
1609
1621
  background-color: hsl(var(--chip-tone) / 0.14);
1610
1622
  color: hsl(var(--chip-ink, var(--chip-tone)));
1611
1623
  }
1624
+ /* Tile iconTone: only the icon is tinted — a 28px colored square on a neutral card. */
1625
+ .matrx-tile-icon[data-tone]:not([data-tone="neutral"]) {
1626
+ justify-content: center;
1627
+ width: 1.75rem;
1628
+ height: 1.75rem;
1629
+ border-radius: var(--matrx-control-radius);
1630
+ background-color: hsl(var(--chip-tone) / 0.14);
1631
+ color: hsl(var(--chip-ink, var(--chip-tone)));
1632
+ }
1612
1633
  /* A chosen hero card fills its icon square: the choice reads at a glance. */
1613
1634
  .matrx-tile[data-hero][data-selected] .matrx-tile-icon {
1614
1635
  background-color: hsl(var(--primary));
@@ -1716,6 +1737,19 @@
1716
1737
  top: 0.25rem;
1717
1738
  inset-inline-end: 0.25rem;
1718
1739
  }
1740
+ /* dense icon tile: a sidebar's pinned grid — tight air, one-line label that ellipsizes
1741
+ (never broken mid-word). */
1742
+ .matrx-tile[data-layout="icon"][data-dense] {
1743
+ gap: 0.125rem !important;
1744
+ min-height: 2.75rem !important;
1745
+ padding: 0.3125rem 0.125rem 0.25rem !important;
1746
+ }
1747
+ .matrx-tile[data-layout="icon"][data-dense] .matrx-tile-title {
1748
+ display: block;
1749
+ -webkit-line-clamp: unset;
1750
+ text-overflow: ellipsis;
1751
+ white-space: nowrap;
1752
+ }
1719
1753
 
1720
1754
  /* ── Button meta: the mixed-content fact after a label (0.68.12) ───────── */
1721
1755
  .matrx-control-button-meta {
@@ -52,7 +52,7 @@ declare const CONTROLS_COLLAPSE_BELOW_REM = 48;
52
52
  * publish, mark done); `link` is a text action at the control's height — no
53
53
  * fill, no border, primary ink, underline on hover (an inline "View all").
54
54
  */
55
- type ControlVariant = "primary" | "quiet" | "outline" | "danger" | "success" | "link";
55
+ type ControlVariant = "primary" | "quiet" | "outline" | "danger" | "success" | "link" | "meta";
56
56
  /**
57
57
  * THE NAMED CONTROL WIDTHS (0.68.22) — a button, field or select trigger that should not fill
58
58
  * its row takes one of these instead of a pasted `w-40`. Derived from the call sites:
@@ -661,6 +661,9 @@ interface TileProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>,
661
661
  hero?: boolean;
662
662
  /** Tint card, edge and icon square from one `ChipTone` (the `Chip` hue tokens). */
663
663
  tone?: ChipTone;
664
+ /** Tint ONLY the icon, as a 28px colored square, on a neutral card: a grid of actions where each
665
+ * job keeps its own hue (quick actions) without every card turning into a colored card. */
666
+ iconTone?: ChipTone;
664
667
  /** A 28px navigation / filter row for sidebars and dense lists: `min-height` is the control size,
665
668
  * padding 4px 8px, gap 8px, 13px title. The `line` is HIDDEN when dense (one line, always).
666
669
  * `variant="quiet"` + `dense` is a clean nav row: transparent until hover / selected. */
@@ -871,6 +874,51 @@ interface StageStepsProps extends Omit<React.HTMLAttributes<HTMLOListElement>, "
871
874
  declare function stageStates(count: number, current: number): StageState[];
872
875
  declare function StageSteps({ steps, current, labels, maxVisible, className, ...props }: StageStepsProps): React.JSX.Element;
873
876
 
877
+ /**
878
+ * Checklist — conditions a person works through, each with a status mark, and a meter over them.
879
+ *
880
+ * `ChecklistItem` is one condition: a 16px mark (done = filled success disc with a check, open =
881
+ * a warning ring, unknown = a dashed muted ring), a 13px title, one 12px line (one line, full text
882
+ * in its tooltip) and an optional end slot for the ONE action that fixes it. Under 640px the end
883
+ * slot drops under the text, on the text's left edge. `ChecklistMeter` heads a group: its name,
884
+ * "N of M" and one segment per condition, met segments in success. A status word goes in `end`
885
+ * (a `Badge`). Neither draws a frame: they sit inside the caller's card.
886
+ *
887
+ * First caller: the brand page's research readiness (2026-10-23). Pinned by `checklist.test.tsx`.
888
+ */
889
+
890
+ type ChecklistState = "done" | "open" | "unknown";
891
+ declare function ChecklistMark({ state, className }: {
892
+ state: ChecklistState;
893
+ className?: string;
894
+ }): React.JSX.Element;
895
+ interface ChecklistProps extends React.HTMLAttributes<HTMLUListElement> {
896
+ "aria-label"?: string;
897
+ }
898
+ /** The list around `ChecklistItem`s: no frame, no gap of its own beyond the rows. */
899
+ declare function Checklist({ className, children, ...props }: ChecklistProps): React.JSX.Element;
900
+ interface ChecklistItemProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, "title"> {
901
+ state: ChecklistState;
902
+ /** The condition, in a few words. */
903
+ title: React.ReactNode;
904
+ /** One line under the title: what was measured, or what is missing. Its full text is the tooltip. */
905
+ line?: string | null;
906
+ /** The one action that fixes this condition (a `Button`). */
907
+ end?: React.ReactNode;
908
+ }
909
+ declare function ChecklistItem({ state, title, line, end, className, ...props }: ChecklistItemProps): React.JSX.Element;
910
+ interface ChecklistMeterProps {
911
+ /** The group's name ("What others say"). */
912
+ label: React.ReactNode;
913
+ met: number;
914
+ total: number;
915
+ /** A status word after the count (a `Badge`). */
916
+ end?: React.ReactNode;
917
+ className?: string;
918
+ }
919
+ /** A group's head: name, "N of M" and one segment per condition. */
920
+ declare function ChecklistMeter({ label, met, total, end, className }: ChecklistMeterProps): React.JSX.Element;
921
+
874
922
  type ClampedNumberInputProps = {
875
923
  id?: string;
876
924
  value: number;
@@ -2129,5 +2177,5 @@ interface TileCardGridProps {
2129
2177
  }
2130
2178
  declare function TileCardGrid({ title, description, cards, columns, className }: TileCardGridProps): React.JSX.Element;
2131
2179
 
2132
- export { ActionFeedbackButton, AdvancedCollapsible, AnchoredToolbar, AspectRatioGlyph, AspectRatioSelect, Badge, Button, CHIP_TONES, CONFIGURATION_CHOICE_SIZE, CONTROLS_COLLAPSE_BELOW_REM, CONTROLS_CONTAINER_CLASS, CONTROLS_CONTAINER_NAME, CalloutBanner, Chip, ChipSet, CitationChip, CitationPopoverBody, ClampedNumberInput, CollapsibleText, CollapsibleTextGroupControls, ColorSwatchRow, ConfigurationTable, ConfigurationTableRow, ConfigurationValueList, ConfirmDelete, ControlRow, ControlScope, DangerZone, DateField, DateTimeField, DecisionControl, DeleteButton, DisclosureHeader, EmptyState, EmptyStateCard, Field, FieldHelp, GatedActionButton, HUE_TONE, HelpIcon, HueCard, HueGrid, HueList, HueRow, IconDropdownMenu, IconSelect, IndicatorStrip, InfoHint, Input, IosWidget, KpiGrid, KpiTile, LabeledField, LightSwitchToggle, MiddleTruncate, MissingTag, NumberStepper, OpacitySlider, OptionCombobox, PageRangeInput, PromoBanner, PropertyRow, RegionSkeleton, RowGroup, STATUS_TONES, SearchField, SearchInput, SegmentedControl, Select, SelectTrigger, SettingRow, Slider, SplitButton, StageSteps, StatusBadge, StatusToken, StructuredSectionCard, Switch, Tabs, TabsList, TabsTrigger, TextArrayInput, Textarea, Tile, TileCard, TileCardGrid, TimeField, ToolRail, WindowChromeButton, WindowLight, WindowLights, clampDraft, cleanUrl, firstBlockingReason, formatDay, formatPageRanges, formatTime, groupRatioOptions, humanizeRatioWord, indicatorText, isAspectRatioOptionSet, isCollectedValue, parsePageRanges, parseRatio, parseTypedDate, parseTypedTime, ratioShapeName, shownDraft, spansOf, splitForMiddleTruncate, stageStates, valueSummary };
2133
- export type { ActionFeedbackButtonProps, AdvancedCollapsibleProps, AnchorRect, AnchoredToolbarProps, AspectRatioSelectProps, BadgeProps, BadgeTone, BlockingCheck, ButtonProps$1 as ButtonProps, CalloutTone, CardColor, CardSize, ChipHue, ChipProps, ChipSetProps, ChipTone, CitationChipProps, CitationPopoverBodyProps, ClampedNumberInputProps, ColorSwatch, ColorSwatchRowProps, ConfigurationColumn, ConfirmDeleteProps, ControlRowProps, ControlVariant, ControlWidth, DateFieldMode, DateFieldProps, DecisionAnswer, DecisionControlProps, DeleteButtonProps, DisclosureHeaderProps, DisclosureHeaderVariant, EmptyStateCardProps, EmptyStateProps, FieldProps, GatedActionButtonProps, GlyphTone, HelpIconProps, HueCardProps, HueGridProps, HueListProps, HueRowProps, IconDropdownMenuProps, IconDropdownOption, IconSelectItem, IconSelectProps, IndicatorItem, IndicatorStripProps, IndicatorTone, InfoHintProps, InputProps, IosWidgetProps, KpiTileProps, KpiTone, KpiTrend, LabeledFieldProps, LightSwitchToggleProps, NumberStepperProps, OpacitySliderProps, OptionComboboxGroup, OptionComboboxProps, PageRangeInputProps, PageRangeIssue, PageRangeIssueKind, ParsedPageRanges, ParsedRatio, PromoBannerProps, PromoTone, PropertyRowProps, RatioGroups, RegionSkeletonProps, RowGroupProps, SearchInputProps, SegmentOption, SegmentedControlProps, SelectOption, SelectProps, SelectTriggerProps, SettingRowProps, SliderProps, StageState, StageStep, StageStepsProps, StatusBadgeProps, StatusBadgeSize, StatusTone, StructuredSectionCardProps, StructuredSectionCardTitleTone, SwitchProps, TabsListProps, TabsProps, TabsVariant, TextArrayInputProps, TextareaProps, TileCardGridProps, TileCardProps, TileLayout, TileProps, ToolRailItem, ToolRailProps, WayOutItem, WindowChromeButtonProps, WindowLightKind, WindowLightProps, WindowLightsProps };
2180
+ export { ActionFeedbackButton, AdvancedCollapsible, AnchoredToolbar, AspectRatioGlyph, AspectRatioSelect, Badge, Button, CHIP_TONES, CONFIGURATION_CHOICE_SIZE, CONTROLS_COLLAPSE_BELOW_REM, CONTROLS_CONTAINER_CLASS, CONTROLS_CONTAINER_NAME, CalloutBanner, Checklist, ChecklistItem, ChecklistMark, ChecklistMeter, Chip, ChipSet, CitationChip, CitationPopoverBody, ClampedNumberInput, CollapsibleText, CollapsibleTextGroupControls, ColorSwatchRow, ConfigurationTable, ConfigurationTableRow, ConfigurationValueList, ConfirmDelete, ControlRow, ControlScope, DangerZone, DateField, DateTimeField, DecisionControl, DeleteButton, DisclosureHeader, EmptyState, EmptyStateCard, Field, FieldHelp, GatedActionButton, HUE_TONE, HelpIcon, HueCard, HueGrid, HueList, HueRow, IconDropdownMenu, IconSelect, IndicatorStrip, InfoHint, Input, IosWidget, KpiGrid, KpiTile, LabeledField, LightSwitchToggle, MiddleTruncate, MissingTag, NumberStepper, OpacitySlider, OptionCombobox, PageRangeInput, PromoBanner, PropertyRow, RegionSkeleton, RowGroup, STATUS_TONES, SearchField, SearchInput, SegmentedControl, Select, SelectTrigger, SettingRow, Slider, SplitButton, StageSteps, StatusBadge, StatusToken, StructuredSectionCard, Switch, Tabs, TabsList, TabsTrigger, TextArrayInput, Textarea, Tile, TileCard, TileCardGrid, TimeField, ToolRail, WindowChromeButton, WindowLight, WindowLights, clampDraft, cleanUrl, firstBlockingReason, formatDay, formatPageRanges, formatTime, groupRatioOptions, humanizeRatioWord, indicatorText, isAspectRatioOptionSet, isCollectedValue, parsePageRanges, parseRatio, parseTypedDate, parseTypedTime, ratioShapeName, shownDraft, spansOf, splitForMiddleTruncate, stageStates, valueSummary };
2181
+ export type { ActionFeedbackButtonProps, AdvancedCollapsibleProps, AnchorRect, AnchoredToolbarProps, AspectRatioSelectProps, BadgeProps, BadgeTone, BlockingCheck, ButtonProps$1 as ButtonProps, CalloutTone, CardColor, CardSize, ChecklistItemProps, ChecklistMeterProps, ChecklistProps, ChecklistState, ChipHue, ChipProps, ChipSetProps, ChipTone, CitationChipProps, CitationPopoverBodyProps, ClampedNumberInputProps, ColorSwatch, ColorSwatchRowProps, ConfigurationColumn, ConfirmDeleteProps, ControlRowProps, ControlVariant, ControlWidth, DateFieldMode, DateFieldProps, DecisionAnswer, DecisionControlProps, DeleteButtonProps, DisclosureHeaderProps, DisclosureHeaderVariant, EmptyStateCardProps, EmptyStateProps, FieldProps, GatedActionButtonProps, GlyphTone, HelpIconProps, HueCardProps, HueGridProps, HueListProps, HueRowProps, IconDropdownMenuProps, IconDropdownOption, IconSelectItem, IconSelectProps, IndicatorItem, IndicatorStripProps, IndicatorTone, InfoHintProps, InputProps, IosWidgetProps, KpiTileProps, KpiTone, KpiTrend, LabeledFieldProps, LightSwitchToggleProps, NumberStepperProps, OpacitySliderProps, OptionComboboxGroup, OptionComboboxProps, PageRangeInputProps, PageRangeIssue, PageRangeIssueKind, ParsedPageRanges, ParsedRatio, PromoBannerProps, PromoTone, PropertyRowProps, RatioGroups, RegionSkeletonProps, RowGroupProps, SearchInputProps, SegmentOption, SegmentedControlProps, SelectOption, SelectProps, SelectTriggerProps, SettingRowProps, SliderProps, StageState, StageStep, StageStepsProps, StatusBadgeProps, StatusBadgeSize, StatusTone, StructuredSectionCardProps, StructuredSectionCardTitleTone, SwitchProps, TabsListProps, TabsProps, TabsVariant, TextArrayInputProps, TextareaProps, TileCardGridProps, TileCardProps, TileLayout, TileProps, ToolRailItem, ToolRailProps, WayOutItem, WindowChromeButtonProps, WindowLightKind, WindowLightProps, WindowLightsProps };
@@ -52,7 +52,7 @@ declare const CONTROLS_COLLAPSE_BELOW_REM = 48;
52
52
  * publish, mark done); `link` is a text action at the control's height — no
53
53
  * fill, no border, primary ink, underline on hover (an inline "View all").
54
54
  */
55
- type ControlVariant = "primary" | "quiet" | "outline" | "danger" | "success" | "link";
55
+ type ControlVariant = "primary" | "quiet" | "outline" | "danger" | "success" | "link" | "meta";
56
56
  /**
57
57
  * THE NAMED CONTROL WIDTHS (0.68.22) — a button, field or select trigger that should not fill
58
58
  * its row takes one of these instead of a pasted `w-40`. Derived from the call sites:
@@ -661,6 +661,9 @@ interface TileProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>,
661
661
  hero?: boolean;
662
662
  /** Tint card, edge and icon square from one `ChipTone` (the `Chip` hue tokens). */
663
663
  tone?: ChipTone;
664
+ /** Tint ONLY the icon, as a 28px colored square, on a neutral card: a grid of actions where each
665
+ * job keeps its own hue (quick actions) without every card turning into a colored card. */
666
+ iconTone?: ChipTone;
664
667
  /** A 28px navigation / filter row for sidebars and dense lists: `min-height` is the control size,
665
668
  * padding 4px 8px, gap 8px, 13px title. The `line` is HIDDEN when dense (one line, always).
666
669
  * `variant="quiet"` + `dense` is a clean nav row: transparent until hover / selected. */
@@ -871,6 +874,51 @@ interface StageStepsProps extends Omit<React.HTMLAttributes<HTMLOListElement>, "
871
874
  declare function stageStates(count: number, current: number): StageState[];
872
875
  declare function StageSteps({ steps, current, labels, maxVisible, className, ...props }: StageStepsProps): React.JSX.Element;
873
876
 
877
+ /**
878
+ * Checklist — conditions a person works through, each with a status mark, and a meter over them.
879
+ *
880
+ * `ChecklistItem` is one condition: a 16px mark (done = filled success disc with a check, open =
881
+ * a warning ring, unknown = a dashed muted ring), a 13px title, one 12px line (one line, full text
882
+ * in its tooltip) and an optional end slot for the ONE action that fixes it. Under 640px the end
883
+ * slot drops under the text, on the text's left edge. `ChecklistMeter` heads a group: its name,
884
+ * "N of M" and one segment per condition, met segments in success. A status word goes in `end`
885
+ * (a `Badge`). Neither draws a frame: they sit inside the caller's card.
886
+ *
887
+ * First caller: the brand page's research readiness (2026-10-23). Pinned by `checklist.test.tsx`.
888
+ */
889
+
890
+ type ChecklistState = "done" | "open" | "unknown";
891
+ declare function ChecklistMark({ state, className }: {
892
+ state: ChecklistState;
893
+ className?: string;
894
+ }): React.JSX.Element;
895
+ interface ChecklistProps extends React.HTMLAttributes<HTMLUListElement> {
896
+ "aria-label"?: string;
897
+ }
898
+ /** The list around `ChecklistItem`s: no frame, no gap of its own beyond the rows. */
899
+ declare function Checklist({ className, children, ...props }: ChecklistProps): React.JSX.Element;
900
+ interface ChecklistItemProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, "title"> {
901
+ state: ChecklistState;
902
+ /** The condition, in a few words. */
903
+ title: React.ReactNode;
904
+ /** One line under the title: what was measured, or what is missing. Its full text is the tooltip. */
905
+ line?: string | null;
906
+ /** The one action that fixes this condition (a `Button`). */
907
+ end?: React.ReactNode;
908
+ }
909
+ declare function ChecklistItem({ state, title, line, end, className, ...props }: ChecklistItemProps): React.JSX.Element;
910
+ interface ChecklistMeterProps {
911
+ /** The group's name ("What others say"). */
912
+ label: React.ReactNode;
913
+ met: number;
914
+ total: number;
915
+ /** A status word after the count (a `Badge`). */
916
+ end?: React.ReactNode;
917
+ className?: string;
918
+ }
919
+ /** A group's head: name, "N of M" and one segment per condition. */
920
+ declare function ChecklistMeter({ label, met, total, end, className }: ChecklistMeterProps): React.JSX.Element;
921
+
874
922
  type ClampedNumberInputProps = {
875
923
  id?: string;
876
924
  value: number;
@@ -2129,5 +2177,5 @@ interface TileCardGridProps {
2129
2177
  }
2130
2178
  declare function TileCardGrid({ title, description, cards, columns, className }: TileCardGridProps): React.JSX.Element;
2131
2179
 
2132
- export { ActionFeedbackButton, AdvancedCollapsible, AnchoredToolbar, AspectRatioGlyph, AspectRatioSelect, Badge, Button, CHIP_TONES, CONFIGURATION_CHOICE_SIZE, CONTROLS_COLLAPSE_BELOW_REM, CONTROLS_CONTAINER_CLASS, CONTROLS_CONTAINER_NAME, CalloutBanner, Chip, ChipSet, CitationChip, CitationPopoverBody, ClampedNumberInput, CollapsibleText, CollapsibleTextGroupControls, ColorSwatchRow, ConfigurationTable, ConfigurationTableRow, ConfigurationValueList, ConfirmDelete, ControlRow, ControlScope, DangerZone, DateField, DateTimeField, DecisionControl, DeleteButton, DisclosureHeader, EmptyState, EmptyStateCard, Field, FieldHelp, GatedActionButton, HUE_TONE, HelpIcon, HueCard, HueGrid, HueList, HueRow, IconDropdownMenu, IconSelect, IndicatorStrip, InfoHint, Input, IosWidget, KpiGrid, KpiTile, LabeledField, LightSwitchToggle, MiddleTruncate, MissingTag, NumberStepper, OpacitySlider, OptionCombobox, PageRangeInput, PromoBanner, PropertyRow, RegionSkeleton, RowGroup, STATUS_TONES, SearchField, SearchInput, SegmentedControl, Select, SelectTrigger, SettingRow, Slider, SplitButton, StageSteps, StatusBadge, StatusToken, StructuredSectionCard, Switch, Tabs, TabsList, TabsTrigger, TextArrayInput, Textarea, Tile, TileCard, TileCardGrid, TimeField, ToolRail, WindowChromeButton, WindowLight, WindowLights, clampDraft, cleanUrl, firstBlockingReason, formatDay, formatPageRanges, formatTime, groupRatioOptions, humanizeRatioWord, indicatorText, isAspectRatioOptionSet, isCollectedValue, parsePageRanges, parseRatio, parseTypedDate, parseTypedTime, ratioShapeName, shownDraft, spansOf, splitForMiddleTruncate, stageStates, valueSummary };
2133
- export type { ActionFeedbackButtonProps, AdvancedCollapsibleProps, AnchorRect, AnchoredToolbarProps, AspectRatioSelectProps, BadgeProps, BadgeTone, BlockingCheck, ButtonProps$1 as ButtonProps, CalloutTone, CardColor, CardSize, ChipHue, ChipProps, ChipSetProps, ChipTone, CitationChipProps, CitationPopoverBodyProps, ClampedNumberInputProps, ColorSwatch, ColorSwatchRowProps, ConfigurationColumn, ConfirmDeleteProps, ControlRowProps, ControlVariant, ControlWidth, DateFieldMode, DateFieldProps, DecisionAnswer, DecisionControlProps, DeleteButtonProps, DisclosureHeaderProps, DisclosureHeaderVariant, EmptyStateCardProps, EmptyStateProps, FieldProps, GatedActionButtonProps, GlyphTone, HelpIconProps, HueCardProps, HueGridProps, HueListProps, HueRowProps, IconDropdownMenuProps, IconDropdownOption, IconSelectItem, IconSelectProps, IndicatorItem, IndicatorStripProps, IndicatorTone, InfoHintProps, InputProps, IosWidgetProps, KpiTileProps, KpiTone, KpiTrend, LabeledFieldProps, LightSwitchToggleProps, NumberStepperProps, OpacitySliderProps, OptionComboboxGroup, OptionComboboxProps, PageRangeInputProps, PageRangeIssue, PageRangeIssueKind, ParsedPageRanges, ParsedRatio, PromoBannerProps, PromoTone, PropertyRowProps, RatioGroups, RegionSkeletonProps, RowGroupProps, SearchInputProps, SegmentOption, SegmentedControlProps, SelectOption, SelectProps, SelectTriggerProps, SettingRowProps, SliderProps, StageState, StageStep, StageStepsProps, StatusBadgeProps, StatusBadgeSize, StatusTone, StructuredSectionCardProps, StructuredSectionCardTitleTone, SwitchProps, TabsListProps, TabsProps, TabsVariant, TextArrayInputProps, TextareaProps, TileCardGridProps, TileCardProps, TileLayout, TileProps, ToolRailItem, ToolRailProps, WayOutItem, WindowChromeButtonProps, WindowLightKind, WindowLightProps, WindowLightsProps };
2180
+ export { ActionFeedbackButton, AdvancedCollapsible, AnchoredToolbar, AspectRatioGlyph, AspectRatioSelect, Badge, Button, CHIP_TONES, CONFIGURATION_CHOICE_SIZE, CONTROLS_COLLAPSE_BELOW_REM, CONTROLS_CONTAINER_CLASS, CONTROLS_CONTAINER_NAME, CalloutBanner, Checklist, ChecklistItem, ChecklistMark, ChecklistMeter, Chip, ChipSet, CitationChip, CitationPopoverBody, ClampedNumberInput, CollapsibleText, CollapsibleTextGroupControls, ColorSwatchRow, ConfigurationTable, ConfigurationTableRow, ConfigurationValueList, ConfirmDelete, ControlRow, ControlScope, DangerZone, DateField, DateTimeField, DecisionControl, DeleteButton, DisclosureHeader, EmptyState, EmptyStateCard, Field, FieldHelp, GatedActionButton, HUE_TONE, HelpIcon, HueCard, HueGrid, HueList, HueRow, IconDropdownMenu, IconSelect, IndicatorStrip, InfoHint, Input, IosWidget, KpiGrid, KpiTile, LabeledField, LightSwitchToggle, MiddleTruncate, MissingTag, NumberStepper, OpacitySlider, OptionCombobox, PageRangeInput, PromoBanner, PropertyRow, RegionSkeleton, RowGroup, STATUS_TONES, SearchField, SearchInput, SegmentedControl, Select, SelectTrigger, SettingRow, Slider, SplitButton, StageSteps, StatusBadge, StatusToken, StructuredSectionCard, Switch, Tabs, TabsList, TabsTrigger, TextArrayInput, Textarea, Tile, TileCard, TileCardGrid, TimeField, ToolRail, WindowChromeButton, WindowLight, WindowLights, clampDraft, cleanUrl, firstBlockingReason, formatDay, formatPageRanges, formatTime, groupRatioOptions, humanizeRatioWord, indicatorText, isAspectRatioOptionSet, isCollectedValue, parsePageRanges, parseRatio, parseTypedDate, parseTypedTime, ratioShapeName, shownDraft, spansOf, splitForMiddleTruncate, stageStates, valueSummary };
2181
+ export type { ActionFeedbackButtonProps, AdvancedCollapsibleProps, AnchorRect, AnchoredToolbarProps, AspectRatioSelectProps, BadgeProps, BadgeTone, BlockingCheck, ButtonProps$1 as ButtonProps, CalloutTone, CardColor, CardSize, ChecklistItemProps, ChecklistMeterProps, ChecklistProps, ChecklistState, ChipHue, ChipProps, ChipSetProps, ChipTone, CitationChipProps, CitationPopoverBodyProps, ClampedNumberInputProps, ColorSwatch, ColorSwatchRowProps, ConfigurationColumn, ConfirmDeleteProps, ControlRowProps, ControlVariant, ControlWidth, DateFieldMode, DateFieldProps, DecisionAnswer, DecisionControlProps, DeleteButtonProps, DisclosureHeaderProps, DisclosureHeaderVariant, EmptyStateCardProps, EmptyStateProps, FieldProps, GatedActionButtonProps, GlyphTone, HelpIconProps, HueCardProps, HueGridProps, HueListProps, HueRowProps, IconDropdownMenuProps, IconDropdownOption, IconSelectItem, IconSelectProps, IndicatorItem, IndicatorStripProps, IndicatorTone, InfoHintProps, InputProps, IosWidgetProps, KpiTileProps, KpiTone, KpiTrend, LabeledFieldProps, LightSwitchToggleProps, NumberStepperProps, OpacitySliderProps, OptionComboboxGroup, OptionComboboxProps, PageRangeInputProps, PageRangeIssue, PageRangeIssueKind, ParsedPageRanges, ParsedRatio, PromoBannerProps, PromoTone, PropertyRowProps, RatioGroups, RegionSkeletonProps, RowGroupProps, SearchInputProps, SegmentOption, SegmentedControlProps, SelectOption, SelectProps, SelectTriggerProps, SettingRowProps, SliderProps, StageState, StageStep, StageStepsProps, StatusBadgeProps, StatusBadgeSize, StatusTone, StructuredSectionCardProps, StructuredSectionCardTitleTone, SwitchProps, TabsListProps, TabsProps, TabsVariant, TextArrayInputProps, TextareaProps, TileCardGridProps, TileCardProps, TileLayout, TileProps, ToolRailItem, ToolRailProps, WayOutItem, WindowChromeButtonProps, WindowLightKind, WindowLightProps, WindowLightsProps };
package/dist/controls.js CHANGED
@@ -6,6 +6,10 @@ import {
6
6
  AspectRatioGlyph,
7
7
  AspectRatioSelect,
8
8
  CalloutBanner,
9
+ Checklist,
10
+ ChecklistItem,
11
+ ChecklistMark,
12
+ ChecklistMeter,
9
13
  CitationChip,
10
14
  CitationPopoverBody,
11
15
  ClampedNumberInput,
@@ -69,7 +73,7 @@ import {
69
73
  spansOf,
70
74
  splitForMiddleTruncate,
71
75
  stageStates
72
- } from "./chunk-KYH42WEX.js";
76
+ } from "./chunk-UGQRAQTE.js";
73
77
  import "./chunk-6NOLVA4E.js";
74
78
  import {
75
79
  Input,
@@ -82,7 +86,7 @@ import {
82
86
  } from "./chunk-ZRHVA3DL.js";
83
87
  import "./chunk-XERGQT2M.js";
84
88
  import "./chunk-WQ2QCMMA.js";
85
- import "./chunk-MIJMP4WI.js";
89
+ import "./chunk-YRF22M5S.js";
86
90
  import {
87
91
  ConfirmDelete,
88
92
  DangerZone,
@@ -94,7 +98,7 @@ import {
94
98
  RowGroup,
95
99
  SettingRow,
96
100
  Tile
97
- } from "./chunk-6CDAHINE.js";
101
+ } from "./chunk-GMNROZQJ.js";
98
102
  import "./chunk-K4XCB576.js";
99
103
  import "./chunk-HKLIRHT2.js";
100
104
  import "./chunk-DRSBLHOF.js";
@@ -115,7 +119,7 @@ import {
115
119
  StatusToken,
116
120
  isCollectedValue,
117
121
  valueSummary
118
- } from "./chunk-6QKT52FR.js";
122
+ } from "./chunk-MTE6N7XU.js";
119
123
  import "./chunk-WFBPCMPF.js";
120
124
  import "./chunk-OPF265PU.js";
121
125
  import {
@@ -137,7 +141,7 @@ import {
137
141
  Switch,
138
142
  Tabs,
139
143
  Textarea
140
- } from "./chunk-XTP6HOB6.js";
144
+ } from "./chunk-6XNYYROM.js";
141
145
  import "./chunk-BD77DHUO.js";
142
146
  import "./chunk-BKCJUFD3.js";
143
147
  import "./chunk-PIQJULQB.js";
@@ -167,6 +171,10 @@ export {
167
171
  CONTROLS_CONTAINER_CLASS,
168
172
  CONTROLS_CONTAINER_NAME,
169
173
  CalloutBanner,
174
+ Checklist,
175
+ ChecklistItem,
176
+ ChecklistMark,
177
+ ChecklistMeter,
170
178
  Chip,
171
179
  ChipSet,
172
180
  CitationChip,