@ai-matrx/design-system 0.86.350 → 0.86.352

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 (39) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/carousel.js +2 -2
  3. package/dist/{chunk-BCGNEWZM.js → chunk-FLWSEDUW.js} +2 -2
  4. package/dist/{chunk-UTADJKVR.js → chunk-GMNROZQJ.js} +3 -3
  5. package/dist/{chunk-UTADJKVR.js.map → chunk-GMNROZQJ.js.map} +1 -1
  6. package/dist/{chunk-SC3XPADZ.js → chunk-UGQRAQTE.js} +431 -342
  7. package/dist/chunk-UGQRAQTE.js.map +1 -0
  8. package/dist/controls.cjs +547 -458
  9. package/dist/controls.cjs.map +1 -1
  10. package/dist/controls.css +27 -18
  11. package/dist/controls.d.cts +51 -3
  12. package/dist/controls.d.ts +51 -3
  13. package/dist/controls.js +10 -2
  14. package/dist/data-table/index.cjs +45 -38
  15. package/dist/data-table/index.cjs.map +1 -1
  16. package/dist/data-table/index.js +44 -37
  17. package/dist/data-table/index.js.map +1 -1
  18. package/dist/desktop.cjs +98 -34
  19. package/dist/desktop.cjs.map +1 -1
  20. package/dist/desktop.css +29 -0
  21. package/dist/desktop.d.cts +17 -5
  22. package/dist/desktop.d.ts +17 -5
  23. package/dist/desktop.js +98 -34
  24. package/dist/desktop.js.map +1 -1
  25. package/dist/index.cjs +3 -3
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.cts +3 -3
  28. package/dist/index.d.ts +3 -3
  29. package/dist/index.js +4 -4
  30. package/dist/index.js.map +1 -1
  31. package/dist/settings.cjs +2 -2
  32. package/dist/settings.cjs.map +1 -1
  33. package/dist/settings.js +1 -1
  34. package/dist/writing-field.cjs +2 -2
  35. package/dist/writing-field.cjs.map +1 -1
  36. package/dist/writing-field.js +1 -1
  37. package/package.json +2 -2
  38. package/dist/chunk-SC3XPADZ.js.map +0 -1
  39. /package/dist/{chunk-BCGNEWZM.js.map → chunk-FLWSEDUW.js.map} +0 -0
package/dist/controls.css CHANGED
@@ -1020,24 +1020,24 @@
1020
1020
  border-color: hsl(var(--chip-tone) / 0.3) !important;
1021
1021
  color: hsl(var(--chip-ink, var(--chip-tone))) !important;
1022
1022
  }
1023
- :is(.matrx-control-chip, .matrx-tile)[data-tone="primary"] { --chip-tone: var(--primary); --chip-ink: var(--primary-ink); }
1024
- :is(.matrx-control-chip, .matrx-tile)[data-tone="success"] { --chip-tone: var(--success); --chip-ink: var(--success-ink); }
1025
- :is(.matrx-control-chip, .matrx-tile)[data-tone="destructive"] { --chip-tone: var(--destructive); --chip-ink: var(--destructive-ink); }
1026
- :is(.matrx-control-chip, .matrx-tile)[data-tone="info"] { --chip-tone: var(--info); --chip-ink: var(--info-ink); }
1027
- :is(.matrx-control-chip, .matrx-tile)[data-tone="warning"] { --chip-tone: var(--matrx-chip-amber); --chip-ink: var(--matrx-chip-amber-ink); }
1028
- :is(.matrx-control-chip, .matrx-tile)[data-tone="sky"] { --chip-tone: var(--matrx-chip-sky); --chip-ink: var(--matrx-chip-sky-ink); }
1029
- :is(.matrx-control-chip, .matrx-tile)[data-tone="blue"] { --chip-tone: var(--matrx-chip-blue); --chip-ink: var(--matrx-chip-blue-ink); }
1030
- :is(.matrx-control-chip, .matrx-tile)[data-tone="indigo"] { --chip-tone: var(--matrx-chip-indigo); --chip-ink: var(--matrx-chip-indigo-ink); }
1031
- :is(.matrx-control-chip, .matrx-tile)[data-tone="violet"] { --chip-tone: var(--matrx-chip-violet); --chip-ink: var(--matrx-chip-violet-ink); }
1032
- :is(.matrx-control-chip, .matrx-tile)[data-tone="fuchsia"] { --chip-tone: var(--matrx-chip-fuchsia); --chip-ink: var(--matrx-chip-fuchsia-ink); }
1033
- :is(.matrx-control-chip, .matrx-tile)[data-tone="rose"] { --chip-tone: var(--matrx-chip-rose); --chip-ink: var(--matrx-chip-rose-ink); }
1034
- :is(.matrx-control-chip, .matrx-tile)[data-tone="orange"] { --chip-tone: var(--matrx-chip-orange); --chip-ink: var(--matrx-chip-orange-ink); }
1035
- :is(.matrx-control-chip, .matrx-tile)[data-tone="amber"] { --chip-tone: var(--matrx-chip-amber); --chip-ink: var(--matrx-chip-amber-ink); }
1036
- :is(.matrx-control-chip, .matrx-tile)[data-tone="lime"] { --chip-tone: var(--matrx-chip-lime); --chip-ink: var(--matrx-chip-lime-ink); }
1037
- :is(.matrx-control-chip, .matrx-tile)[data-tone="emerald"] { --chip-tone: var(--matrx-chip-emerald); --chip-ink: var(--matrx-chip-emerald-ink); }
1038
- :is(.matrx-control-chip, .matrx-tile)[data-tone="teal"] { --chip-tone: var(--matrx-chip-teal); --chip-ink: var(--matrx-chip-teal-ink); }
1039
- :is(.matrx-control-chip, .matrx-tile)[data-tone="cyan"] { --chip-tone: var(--matrx-chip-cyan); --chip-ink: var(--matrx-chip-cyan-ink); }
1040
- :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); }
1041
1041
  /* HUE CARDS tone table: the chip table above, restated for `.matrx-hue-card` (one source of hues). */
1042
1042
  .matrx-hue-card[data-tone="primary"] { --chip-tone: var(--primary); --chip-ink: var(--primary-ink); }
1043
1043
  .matrx-hue-card[data-tone="success"] { --chip-tone: var(--success); --chip-ink: var(--success-ink); }
@@ -1621,6 +1621,15 @@
1621
1621
  background-color: hsl(var(--chip-tone) / 0.14);
1622
1622
  color: hsl(var(--chip-ink, var(--chip-tone)));
1623
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
+ }
1624
1633
  /* A chosen hero card fills its icon square: the choice reads at a glance. */
1625
1634
  .matrx-tile[data-hero][data-selected] .matrx-tile-icon {
1626
1635
  background-color: hsl(var(--primary));
@@ -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;
@@ -1224,7 +1272,7 @@ interface CalloutBannerProps {
1224
1272
  declare function CalloutBanner({ tone, icon: Icon, title, description, actions, onDismiss, dismissing, className, }: CalloutBannerProps): React.JSX.Element;
1225
1273
 
1226
1274
  declare const buttonVariants: (props?: ({
1227
- variant?: "link" | "outline" | "primary" | "success" | "destructive" | "default" | "secondary" | "ghost" | "subtle" | null | undefined;
1275
+ variant?: "primary" | "outline" | "success" | "link" | "destructive" | "default" | "secondary" | "ghost" | "subtle" | null | undefined;
1228
1276
  size?: "icon" | "xs" | "sm" | "md" | "lg" | "xl" | "default" | "2xl" | "3xl" | "icon-sm" | "roundIcon" | null | undefined;
1229
1277
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1230
1278
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
@@ -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 };
@@ -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;
@@ -1224,7 +1272,7 @@ interface CalloutBannerProps {
1224
1272
  declare function CalloutBanner({ tone, icon: Icon, title, description, actions, onDismiss, dismissing, className, }: CalloutBannerProps): React.JSX.Element;
1225
1273
 
1226
1274
  declare const buttonVariants: (props?: ({
1227
- variant?: "link" | "outline" | "primary" | "success" | "destructive" | "default" | "secondary" | "ghost" | "subtle" | null | undefined;
1275
+ variant?: "primary" | "outline" | "success" | "link" | "destructive" | "default" | "secondary" | "ghost" | "subtle" | null | undefined;
1228
1276
  size?: "icon" | "xs" | "sm" | "md" | "lg" | "xl" | "default" | "2xl" | "3xl" | "icon-sm" | "roundIcon" | null | undefined;
1229
1277
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1230
1278
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
@@ -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-SC3XPADZ.js";
76
+ } from "./chunk-UGQRAQTE.js";
73
77
  import "./chunk-6NOLVA4E.js";
74
78
  import {
75
79
  Input,
@@ -94,7 +98,7 @@ import {
94
98
  RowGroup,
95
99
  SettingRow,
96
100
  Tile
97
- } from "./chunk-UTADJKVR.js";
101
+ } from "./chunk-GMNROZQJ.js";
98
102
  import "./chunk-K4XCB576.js";
99
103
  import "./chunk-HKLIRHT2.js";
100
104
  import "./chunk-DRSBLHOF.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,
@@ -18494,12 +18494,12 @@ var import_react_slot4 = require("@radix-ui/react-slot");
18494
18494
  var React28 = __toESM(require("react"), 1);
18495
18495
  var import_jsx_runtime60 = require("react/jsx-runtime");
18496
18496
  var Tile = React28.forwardRef(
18497
- ({ layout = "row", variant = "outline", icon, title, wrapTitle, line, end, selected, selectedStyle, tooltip, level, fit, endInset, oneLine, dashed, hoverStyle, danger, dimmed, glyphTone, hero, tone, dense, asChild = false, className, children, onClick, type, ...props }, ref) => {
18497
+ ({ layout = "row", variant = "outline", icon, title, wrapTitle, line, end, selected, selectedStyle, tooltip, level, fit, endInset, oneLine, dashed, hoverStyle, danger, dimmed, glyphTone, hero, tone, iconTone, dense, asChild = false, className, children, onClick, type, ...props }, ref) => {
18498
18498
  const Component = asChild ? import_react_slot4.Slot : "button";
18499
18499
  const ariaDisabled = props["aria-disabled"];
18500
18500
  const inert = ariaDisabled === true || ariaDisabled === "true";
18501
18501
  const body = /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { children: [
18502
- icon ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "matrx-tile-icon", children: icon }) : null,
18502
+ icon ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "matrx-tile-icon", "data-tone": iconTone && iconTone !== "neutral" ? iconTone : void 0, children: icon }) : null,
18503
18503
  /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("span", { className: "matrx-tile-text", children: [
18504
18504
  /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "matrx-tile-title", children: title }),
18505
18505
  line ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "matrx-tile-line", children: line }) : null
@@ -26033,14 +26033,14 @@ function MatrxDataTableCore(coreProps) {
26033
26033
  "div",
26034
26034
  {
26035
26035
  "data-matrx-table-bulk-bar": true,
26036
- className: "mt-2 flex shrink-0 flex-wrap items-center gap-2 rounded-md border border-primary/30 bg-primary/5 px-2 py-1.5",
26036
+ className: "mt-2 flex shrink-0 flex-nowrap items-center gap-2 rounded-md border border-primary/30 bg-primary/5 px-2 py-1.5",
26037
26037
  children: [
26038
26038
  /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
26039
26039
  "span",
26040
26040
  {
26041
26041
  "data-matrx-table-selection-count": true,
26042
26042
  "data-matrx-table-selection-all-matching": allMatching ? "" : void 0,
26043
- className: "text-xs font-medium text-foreground",
26043
+ className: "shrink-0 whitespace-nowrap text-xs font-medium text-foreground",
26044
26044
  children: [
26045
26045
  allMatching ? "All " : "",
26046
26046
  (0, import_format14.formatCount)(selectionCount),
@@ -26075,40 +26075,47 @@ function MatrxDataTableCore(coreProps) {
26075
26075
  children: "Clear"
26076
26076
  }
26077
26077
  ),
26078
- /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "flex flex-1 flex-wrap items-center justify-end gap-0", children: [
26079
- effectiveCopy ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
26080
- CopyButtons,
26081
- {
26082
- size: "icon",
26083
- "data-matrx-table-icon-action": true,
26084
- sourceId: `${tableCopySourceNamespace}:selection`,
26085
- disabled: selectedCopyRows.length === 0,
26086
- ...effectiveCopy.references ? { references: effectiveCopy.references(selectedCopyRows, selectedCopyRows) } : {},
26087
- ...effectiveCopy.triggerVariant ? { triggerVariant: effectiveCopy.triggerVariant } : {},
26088
- label: selectedCopyRows.length === selectedIdSet.size ? `${selectedCopyRows.length} selected ${selectionNoun}${selectedCopyRows.length === 1 ? "" : "s"}` : `${selectedCopyRows.length} of ${selectedIdSet.size} selected ${selectionNoun}${selectedIdSet.size === 1 ? "" : "s"} available to copy`,
26089
- ...copy === void 0 ? {} : {
26090
- human: () => buildViewHuman(effectiveCopy, selectedCopyRows, effectiveCopyColumns),
26091
- json: () => selectedCopyRows.map((row) => effectiveCopy.agentRow ? effectiveCopy.agentRow(row) : row)
26092
- },
26093
- agent: () => copy === void 0 ? buildDefaultTableViewAgentInput(effectiveCopy, selectedCopyRows, selectedCopyRows, declaredVisibleCopyColumns, { scope: "selected" }) : buildViewAgentInput(effectiveCopy, selectedCopyRows, selectedCopyRows, { scope: "selected" }),
26094
- aiVariants: copySubsetVariantFor(
26095
- () => selectedCopyRows,
26096
- "selected"
26097
- ),
26098
- export: {
26099
- items: [],
26100
- sheetRows: () => selectedCopyRows.map(
26101
- (row) => projectDefaultTableCopyRow(row, declaredVisibleCopyColumns)
26102
- ),
26103
- sheetColumns: () => declaredVisibleCopyColumns.map((column) => ({
26104
- id: columnId(column),
26105
- label: column.label ?? (typeof column.header === "string" ? column.header : columnId(column))
26106
- }))
26107
- }
26108
- }
26109
- ) : null,
26110
- selection.actions?.(selectedRows, [...selectedIdSet], selectionScope)
26111
- ] })
26078
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
26079
+ "div",
26080
+ {
26081
+ "data-matrx-table-bulk-actions": true,
26082
+ className: "flex min-w-0 flex-1 flex-nowrap items-center justify-start gap-0 overflow-x-auto sm:justify-end [&>*]:shrink-0",
26083
+ children: [
26084
+ effectiveCopy ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
26085
+ CopyButtons,
26086
+ {
26087
+ size: "icon",
26088
+ "data-matrx-table-icon-action": true,
26089
+ sourceId: `${tableCopySourceNamespace}:selection`,
26090
+ disabled: selectedCopyRows.length === 0,
26091
+ ...effectiveCopy.references ? { references: effectiveCopy.references(selectedCopyRows, selectedCopyRows) } : {},
26092
+ ...effectiveCopy.triggerVariant ? { triggerVariant: effectiveCopy.triggerVariant } : {},
26093
+ label: selectedCopyRows.length === selectedIdSet.size ? `${selectedCopyRows.length} selected ${selectionNoun}${selectedCopyRows.length === 1 ? "" : "s"}` : `${selectedCopyRows.length} of ${selectedIdSet.size} selected ${selectionNoun}${selectedIdSet.size === 1 ? "" : "s"} available to copy`,
26094
+ ...copy === void 0 ? {} : {
26095
+ human: () => buildViewHuman(effectiveCopy, selectedCopyRows, effectiveCopyColumns),
26096
+ json: () => selectedCopyRows.map((row) => effectiveCopy.agentRow ? effectiveCopy.agentRow(row) : row)
26097
+ },
26098
+ agent: () => copy === void 0 ? buildDefaultTableViewAgentInput(effectiveCopy, selectedCopyRows, selectedCopyRows, declaredVisibleCopyColumns, { scope: "selected" }) : buildViewAgentInput(effectiveCopy, selectedCopyRows, selectedCopyRows, { scope: "selected" }),
26099
+ aiVariants: copySubsetVariantFor(
26100
+ () => selectedCopyRows,
26101
+ "selected"
26102
+ ),
26103
+ export: {
26104
+ items: [],
26105
+ sheetRows: () => selectedCopyRows.map(
26106
+ (row) => projectDefaultTableCopyRow(row, declaredVisibleCopyColumns)
26107
+ ),
26108
+ sheetColumns: () => declaredVisibleCopyColumns.map((column) => ({
26109
+ id: columnId(column),
26110
+ label: column.label ?? (typeof column.header === "string" ? column.header : columnId(column))
26111
+ }))
26112
+ }
26113
+ }
26114
+ ) : null,
26115
+ selection.actions?.(selectedRows, [...selectedIdSet], selectionScope)
26116
+ ]
26117
+ }
26118
+ )
26112
26119
  ]
26113
26120
  }
26114
26121
  ) : null