@godxjp/ui 21.0.0 → 23.0.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 (154) hide show
  1. package/README.md +4 -4
  2. package/dist/app/app-provider.js +2 -1
  3. package/dist/components/data-display/badge.d.ts +28 -1
  4. package/dist/components/data-display/badge.js +2 -0
  5. package/dist/components/data-display/data-table.d.ts +18 -2
  6. package/dist/components/data-display/data-table.js +4 -0
  7. package/dist/components/data-display/index.d.ts +1 -1
  8. package/dist/components/data-display/popover.d.ts +19 -1
  9. package/dist/components/data-display/popover.js +9 -1
  10. package/dist/components/data-display/progress.d.ts +37 -0
  11. package/dist/components/data-display/progress.js +57 -5
  12. package/dist/components/data-display/scroll-area.d.ts +24 -4
  13. package/dist/components/data-display/scroll-area.js +34 -72
  14. package/dist/components/data-entry/cascader.js +8 -6
  15. package/dist/components/data-entry/checkbox.js +2 -0
  16. package/dist/components/data-entry/choice-hit-target.d.ts +24 -0
  17. package/dist/components/data-entry/choice-hit-target.js +12 -0
  18. package/dist/components/data-entry/control-surface.d.ts +8 -0
  19. package/dist/components/data-entry/control-surface.js +10 -1
  20. package/dist/components/data-entry/date-picker.d.ts +10 -3
  21. package/dist/components/data-entry/date-picker.js +503 -238
  22. package/dist/components/data-entry/form-field.d.ts +1 -1
  23. package/dist/components/data-entry/form-field.js +7 -3
  24. package/dist/components/data-entry/form.js +10 -1
  25. package/dist/components/data-entry/index.d.ts +0 -6
  26. package/dist/components/data-entry/index.js +0 -6
  27. package/dist/components/data-entry/label.d.ts +14 -1
  28. package/dist/components/data-entry/label.js +6 -1
  29. package/dist/components/data-entry/radio.d.ts +27 -6
  30. package/dist/components/data-entry/radio.js +89 -43
  31. package/dist/components/data-entry/search-select.js +226 -89
  32. package/dist/components/data-entry/select.d.ts +76 -14
  33. package/dist/components/data-entry/select.js +497 -163
  34. package/dist/components/data-entry/slider.d.ts +3 -11
  35. package/dist/components/data-entry/slider.js +582 -93
  36. package/dist/components/data-entry/switch.d.ts +6 -3
  37. package/dist/components/data-entry/switch.js +36 -11
  38. package/dist/components/layout/mobile-shell.d.ts +1 -1
  39. package/dist/components/layout/mobile-shell.js +2 -0
  40. package/dist/components/navigation/dropdown-menu.d.ts +11 -3
  41. package/dist/components/navigation/dropdown-menu.js +190 -15
  42. package/dist/components/navigation/index.d.ts +0 -3
  43. package/dist/components/navigation/index.js +0 -78
  44. package/dist/components/navigation/steps.d.ts +1 -1
  45. package/dist/components/navigation/steps.js +3 -1
  46. package/dist/components/navigation/tabs-scroll.d.ts +27 -0
  47. package/dist/components/navigation/tabs-scroll.js +52 -1
  48. package/dist/components/navigation/tabs.d.ts +2 -2
  49. package/dist/components/navigation/tabs.js +88 -23
  50. package/dist/components/ui/index.d.ts +0 -4
  51. package/dist/components/ui/index.js +0 -4
  52. package/dist/components/ui/input-otp.d.ts +1 -1
  53. package/dist/components/ui/segmented.d.ts +15 -1
  54. package/dist/components/ui/segmented.js +15 -6
  55. package/dist/components/ui/tag-input.js +3 -5
  56. package/dist/i18n/messages/en.json +3 -2
  57. package/dist/i18n/messages/ja.json +3 -2
  58. package/dist/i18n/messages/vi.json +3 -2
  59. package/dist/lib/datetime/picker-format.d.ts +18 -0
  60. package/dist/lib/datetime/picker-format.js +35 -1
  61. package/dist/lib/field-a11y.d.ts +12 -0
  62. package/dist/lib/field-a11y.js +14 -1
  63. package/dist/lib/select-options.d.ts +21 -0
  64. package/dist/lib/select-options.js +46 -0
  65. package/dist/props/components/data-display.prop.d.ts +16 -6
  66. package/dist/props/components/data-entry.prop.d.ts +503 -129
  67. package/dist/props/components/index.d.ts +2 -2
  68. package/dist/props/components/layout.prop.d.ts +12 -1
  69. package/dist/props/components/navigation.prop.d.ts +93 -1
  70. package/dist/props/registry.d.ts +79 -16
  71. package/dist/props/registry.js +85 -15
  72. package/dist/props/vocabulary/data.prop.d.ts +12 -0
  73. package/dist/props/vocabulary/index.d.ts +2 -2
  74. package/dist/props/vocabulary/layout.prop.d.ts +11 -0
  75. package/dist/styles/badge-layout.css +4 -0
  76. package/dist/styles/card-layout.css +6 -6
  77. package/dist/styles/control.css +220 -29
  78. package/dist/styles/data-display-layout.css +94 -23
  79. package/dist/styles/focus-ring.css +6 -4
  80. package/dist/styles/fonts.css +88 -4
  81. package/dist/styles/navigation-layout.css +36 -236
  82. package/dist/styles/shell-layout.css +149 -139
  83. package/dist/styles/table-layout.css +41 -3
  84. package/dist/tokens/components/control.css +4 -0
  85. package/dist/tokens/components/data-display.css +9 -5
  86. package/dist/tokens/components/navigation.css +9 -5
  87. package/dist/tokens/components/scroll-area.css +7 -0
  88. package/dist/tokens/components/segmented.css +0 -2
  89. package/dist/tokens/components/shell.css +2 -0
  90. package/dist/tokens/components/table.css +3 -0
  91. package/dist/tokens/foundation.css +7 -0
  92. package/docs/COMPONENTS.md +14 -14
  93. package/docs/CONSUMER-RULES.md +24 -1
  94. package/docs/CUSTOMER-THEMING.md +7 -1
  95. package/docs/FRAME-COVERAGE-REPORT.md +5 -11
  96. package/docs/TOKENS.md +65 -0
  97. package/docs/data-display/badge.tsx +37 -0
  98. package/docs/data-display/data-table/index.tsx +45 -1
  99. package/docs/data-display/popover.tsx +43 -5
  100. package/docs/data-display/progress.tsx +28 -0
  101. package/docs/data-display/scroll-area.tsx +51 -45
  102. package/docs/data-entry/calendar.tsx +2 -2
  103. package/docs/data-entry/date-picker.tsx +144 -5
  104. package/docs/data-entry/form/examples/invoice-form.tsx +2 -2
  105. package/docs/data-entry/form-field/examples/a11y-contract.tsx +3 -5
  106. package/docs/data-entry/form.tsx +4 -4
  107. package/docs/data-entry/input-otp.tsx +5 -2
  108. package/docs/data-entry/number-input.tsx +31 -0
  109. package/docs/data-entry/segmented.tsx +143 -2
  110. package/docs/data-entry/select-matrix.tsx +1 -2
  111. package/docs/data-entry/select.tsx +108 -3
  112. package/docs/data-entry/slider.tsx +125 -47
  113. package/docs/feedback/dialog.tsx +1 -2
  114. package/docs/feedback/sheet.tsx +1 -2
  115. package/docs/layout/app-shell-states.tsx +143 -0
  116. package/docs/layout/mobile-shell.tsx +5 -0
  117. package/docs/navigation/dropdown-menu.tsx +75 -4
  118. package/docs/navigation/tabs.tsx +149 -0
  119. package/docs/roadmap/antd-parity.md +35 -34
  120. package/docs/roadmap/parity-audit-data-entry.md +196 -172
  121. package/docs/roadmap/parity-audit-layout-navigation-general.md +304 -310
  122. package/docs/roadmap/parity-backlog.md +8 -10
  123. package/docs/showcase/acme-portal.tsx +7 -0
  124. package/package.json +28 -64
  125. package/scripts/ui-audit.mjs +18 -5
  126. package/scripts/visual-audit-rules.mjs +0 -7
  127. package/scripts/visual-audit.mjs +6 -27
  128. package/dist/components/data-entry/date-range-picker.d.ts +0 -11
  129. package/dist/components/data-entry/date-range-picker.js +0 -349
  130. package/dist/components/data-entry/month-picker.d.ts +0 -10
  131. package/dist/components/data-entry/month-picker.js +0 -241
  132. package/dist/components/data-entry/month-range-picker.d.ts +0 -10
  133. package/dist/components/data-entry/month-range-picker.js +0 -301
  134. package/dist/components/navigation/context-menu.d.ts +0 -21
  135. package/dist/components/navigation/context-menu.js +0 -149
  136. package/dist/components/navigation/menubar.d.ts +0 -21
  137. package/dist/components/navigation/menubar.js +0 -136
  138. package/dist/components/navigation/navigation-menu.d.ts +0 -10
  139. package/dist/components/navigation/navigation-menu.js +0 -91
  140. package/dist/components/ui/context-menu.d.ts +0 -1
  141. package/dist/components/ui/context-menu.js +0 -2
  142. package/dist/components/ui/date-range-picker.d.ts +0 -1
  143. package/dist/components/ui/date-range-picker.js +0 -2
  144. package/dist/components/ui/menubar.d.ts +0 -1
  145. package/dist/components/ui/menubar.js +0 -2
  146. package/dist/components/ui/navigation-menu.d.ts +0 -1
  147. package/dist/components/ui/navigation-menu.js +0 -2
  148. package/docs/FRAME-A11Y-CI.md +0 -349
  149. package/docs/data-entry/date-range-picker.tsx +0 -175
  150. package/docs/data-entry/month-picker.tsx +0 -101
  151. package/docs/data-entry/month-range-picker.tsx +0 -115
  152. package/docs/navigation/context-menu.tsx +0 -128
  153. package/docs/navigation/menubar.tsx +0 -141
  154. package/docs/navigation/navigation-menu.tsx +0 -158
@@ -1,10 +1,10 @@
1
1
  export type { AppLauncherApp, AppLauncherGroup, AppLauncherLabels, AppLauncherProp, AppShellProp, AuthFooterProp, AuthIdentityProp, OrgSwitcherLabels, OrgSwitcherOrganization, OrgSwitcherProp, PageContainerProp, PageInsetProp, SidebarItemProp, SidebarProductProp, SidebarProp, SidebarSectionProp, TopbarProp, } from "./layout.prop.js";
2
2
  export type { ButtonProp } from "./general.prop.js";
3
- export type { InputProp, TextareaProp, FormFieldProp, SearchInputProp, CheckboxProp, CheckboxGroupProp, ChoiceOptionProp, RadioProp, RadioGroupProp, SwitchProp, SliderProp, CalendarProp, DatePickerProp, DateRangePickerProp, TimePickerProp, ColorPickerProp, UploadProp, UploadFileItemProp, UploadVariantProp, TreeOptionProp, TreeFieldNamesProp, CascaderProp, TreeSelectProp, ShowCheckedStrategyProp, TransferProp, TransferItemProp, } from "./data-entry.prop.js";
3
+ export type { InputProp, TextareaProp, FormFieldProp, SearchInputProp, CheckboxProp, CheckboxGroupProp, ChoiceOptionProp, RadioProp, RadioGroupProp, SwitchProp, SliderProp, CalendarProp, DatePickerProp, TimePickerProp, ColorPickerProp, UploadProp, UploadFileItemProp, UploadVariantProp, TreeOptionProp, TreeFieldNamesProp, CascaderProp, TreeSelectProp, ShowCheckedStrategyProp, TransferProp, TransferItemProp, } from "./data-entry.prop.js";
4
4
  export type { AvatarProp, EmptyStateProp, DescriptionsProp, DescriptionsItemProp, BadgeProp, DataTableProp, QrCodeProp, } from "./data-display.prop.js";
5
5
  export type { ChartDatum, ChartSeriesProp, LineChartProp, BarChartProp, AreaChartProp, PieChartProp, } from "./charts.prop.js";
6
6
  export type { AlertQueryErrorProp, AlertProp, AlertTitleProp, AlertContentProp, AlertDescriptionProp, AlertActionsProp, SheetResponsiveProp, SkeletonRowsProp, } from "./feedback.prop.js";
7
7
  export type { DataStateProp, InfiniteQueryStateProp, InfiniteQueryHelpers, PrefetchLinkProp, } from "./query.prop.js";
8
- export type { DropdownMenuPlacementProp, PaginationProp, PaginationSizeProp, PaginationAlignProp, StepsProp, StepItemProp, StepStatusProp, StepsTypeProp, TabsProp, TabItemProp, TabsVariantProp, TabsPlacementProp, TabsExtraProp, TabsOnEditProp, } from "./navigation.prop.js";
8
+ export type { DropdownMenuPlacementProp, DropdownMenuTriggerActionProp, PaginationProp, PaginationSizeProp, PaginationAlignProp, StepsProp, StepItemProp, StepStatusProp, StepsTypeProp, TabsProp, TabItemProp, TabsVariantProp, TabsPlacementProp, TabsExtraProp, TabsOnEditProp, } from "./navigation.prop.js";
9
9
  export type { AppProviderProp, AppContextValue, AppSettingKind, AppSettingPickerProp, AppSettingToggleKind, AppSettingToggleProp, } from "./app.prop.js";
10
10
  export type { ZodSchemaProp, UseZodFormOptionsProp, UseZodFormReturnProp, FormRootProp, FormFieldControlProp, FieldErrorMessageProp, } from "./form.prop.js";
@@ -1,7 +1,7 @@
1
1
  /** Layout component prop types — @see docs/COMPONENTS.md#layout */
2
2
  import type * as React from "react";
3
3
  import type { ComponentType, ReactNode, SVGProps } from "react";
4
- import type { BreadcrumbProp, TitleProp, SubtitleProp, StatusProp, ExtraProp, FooterProp, PageDensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, CenteredShellPresetProp, ErrorSurfaceModeProp, ErrorSurfaceStatusProp, AuthShellPresetProp, MobileShellHeightProp, OrientationProp, TextAlignProp, TextToneProp, BreakpointProp, GapProp, PadProp, PadRawProp, ClassNameProp, ChildrenProp, IdProp, DisabledProp, DescriptionProp, ActionProp, IconProp, HeadingLevelProp, ToneProp, WidthProp } from "../vocabulary/index.js";
4
+ import type { BreadcrumbProp, TitleProp, SubtitleProp, StatusProp, ExtraProp, FooterProp, PageDensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, CenteredShellPresetProp, ErrorSurfaceModeProp, ErrorSurfaceStatusProp, AuthShellPresetProp, MobileShellHeightProp, MobileShellWidthProp, OrientationProp, TextAlignProp, TextToneProp, BreakpointProp, GapProp, PadProp, PadRawProp, ClassNameProp, ChildrenProp, IdProp, DisabledProp, DescriptionProp, ActionProp, IconProp, HeadingLevelProp, ToneProp, WidthProp } from "../vocabulary/index.js";
5
5
  import type { EmptyStateToneProp } from "./data-display.prop.js";
6
6
  /**
7
7
  * Arrangement of the page header's title band and its `extra` slot below the 640px step.
@@ -505,6 +505,17 @@ export type MobileShellProp = {
505
505
  * device-frame preview, a phone view embedded in a wider page).
506
506
  */
507
507
  height?: MobileShellHeightProp;
508
+ /**
509
+ * How wide the shell is allowed to get. `"fill"` (default) takes the whole inline size it is
510
+ * given — a real handheld, where that IS the phone. `"phone"` caps it at
511
+ * `--mobile-shell-max-inline-size` and centres the column, for the case `height="fill"` already
512
+ * names on the other axis: a handheld screen rendered on a viewport wider than a handheld.
513
+ *
514
+ * Measured at a 1280px viewport before this axis existed: `max-inline-size: none`, shell 1232px
515
+ * wide, a four-destination tab bar spread across the whole screen. `height` had two named values
516
+ * for exactly these two contexts and `width` had none — the asymmetry was the bug.
517
+ */
518
+ width?: MobileShellWidthProp;
508
519
  className?: ClassNameProp;
509
520
  };
510
521
  /**
@@ -172,6 +172,23 @@ export type PaginationAlignProp = "start" | "center" | "end";
172
172
  * inline-side ones (antd `left*` / `right*`) stay on Radix's own physical `side`.
173
173
  */
174
174
  export type DropdownMenuPlacementProp = "top" | "topStart" | "topEnd" | "bottom" | "bottomStart" | "bottomEnd";
175
+ /**
176
+ * @see DropdownMenu — Ant Design `trigger`: the gestures that open the menu, as an array because
177
+ * more than one may be live at once (`['click', 'contextMenu']` is a row that opens from its kebab
178
+ * AND from a right click anywhere on it).
179
+ *
180
+ * Default `['click']`, NOT antd's `['hover']`: a menu button that opens on hover is a pointer-only
181
+ * affordance by default, and every consumer of this library today opens on click.
182
+ *
183
+ * `contextMenu` opens at the pointer and suppresses the browser's own menu. It is what replaced the
184
+ * deleted `ContextMenu` component (v23) — antd has no such component either, and expresses the
185
+ * whole idea as this value.
186
+ *
187
+ * Whatever the array says, the KEYBOARD opener stays wired: Enter / Space / ArrowDown on the
188
+ * trigger for `click` and `hover`, and Shift+F10 / the ContextMenu key for `contextMenu`. A gesture
189
+ * list can therefore never produce a menu that only a mouse can reach (WCAG 2.1.1).
190
+ */
191
+ export type DropdownMenuTriggerActionProp = "click" | "hover" | "contextMenu";
175
192
  export type StepStatusProp = "wait" | "process" | "finish" | "error";
176
193
  /** @see StepItem */
177
194
  export type StepItemProp = {
@@ -190,7 +207,19 @@ export type StepItemProp = {
190
207
  */
191
208
  export type StepsTypeProp = "default" | "dot" | "inline" | "navigation";
192
209
  /** @see Steps */
193
- export type StepsProp = {
210
+ /**
211
+ * The rest of a native `<ol>`'s attributes ride through to the list element.
212
+ *
213
+ * Not a convenience: without them a consumer had no supported handle on the rendered list at all,
214
+ * so its browser test bound to `.ui-steps-list > li[data-status]` — an INTERNAL class and an
215
+ * internal data attribute, both of which this package is free to rename. A `data-testid` or an
216
+ * `id` on the component is what that test wanted, and every sibling primitive already forwards
217
+ * them.
218
+ *
219
+ * `aria-label` is the one exception: the list names itself from the locale, and a caller-supplied
220
+ * name wins — the same contract Progress and Toolbar follow.
221
+ */
222
+ export type StepsProp = Omit<React.OlHTMLAttributes<HTMLOListElement>, "onChange" | "defaultValue" | "children" | "type"> & {
194
223
  items?: StepItemProp[];
195
224
  value?: number;
196
225
  defaultValue?: number;
@@ -235,6 +264,17 @@ export type TabItemProp = {
235
264
  closable?: boolean;
236
265
  /** Ant Design `Tab.closeIcon` — replaces the default × on this item's remove button. */
237
266
  closeIcon?: React.ReactNode;
267
+ /**
268
+ * Ant Design `Tab.forceRender`. Mounts THIS panel up front and keeps it mounted while another
269
+ * tab is selected, without turning that on for the whole strip the way `destroyOnHidden={false}`
270
+ * does — so the one panel holding a live chart, a scroll position or an unsent draft survives a
271
+ * tab switch while the rest are still destroyed.
272
+ *
273
+ * antd 5.25 also grew a per-item `destroyOnHidden`. It is NOT offered here: on this component
274
+ * "kept mounted" is a single state, so an item-level `destroyOnHidden: false` would be a second
275
+ * prop spelling exactly what `forceRender: true` already says (cardinal rule #32).
276
+ */
277
+ forceRender?: boolean;
238
278
  };
239
279
  /**
240
280
  * @see Tabs — trigger-strip appearance. This is Ant Design's `type` spelled in the library's own
@@ -264,6 +304,32 @@ export type TabsExtraProp = React.ReactNode | {
264
304
  * commas, and an inline `(target, action) => void` leaks its second PARAMETER as a phantom prop.
265
305
  */
266
306
  export type TabsOnEditProp = (target: string | React.MouseEvent<HTMLButtonElement>, action: "add" | "remove") => void;
307
+ /**
308
+ * @see Tabs — what the trigger strip does when there are more tabs than fit its container.
309
+ *
310
+ * This is Ant Design's `more`, mapped onto the `overflow` vocabulary this package already uses
311
+ * for the same question (`FilterBarOverflowProp` on Toolbar) rather than re-spelled: antd names
312
+ * the AFFORDANCE it happens to draw, this library names the BEHAVIOUR and owns the affordance.
313
+ *
314
+ * `scroll` (the default, and what every strip does today) keeps one bounded row that scrolls its
315
+ * own inline overflow, with `TabsList` re-pinning the active — or, under manual activation, the
316
+ * focused — trigger. `menu` keeps all of that AND puts a real button beside the strip listing the
317
+ * tabs currently outside the scrollport.
318
+ *
319
+ * WHERE THIS DELIBERATELY DIVERGES FROM ANTD, and why: antd REMOVES the overflowing tabs from the
320
+ * bar and re-homes them in the dropdown. The WAI-ARIA APG tab pattern requires the tablist to own
321
+ * every tab, and a tab hidden with `display: none` cannot take roving focus — so removing them
322
+ * would make the keyboard route to those tabs disappear along with the pixels. Here the strip
323
+ * still holds and still scrolls to every tab; the menu is an ADDITIONAL pointer route to the ones
324
+ * a mouse user cannot currently see. The APG wins; the affordance is kept.
325
+ */
326
+ export type TabsOverflowProp = "scroll" | "menu";
327
+ /**
328
+ * @see Tabs — Ant Design `onTabClick`. A NAMED alias rather than an inline signature for the same
329
+ * reason as `TabsOnEditProp`: the catalog-sync guard splits an object type on top-level commas,
330
+ * so an inline `(value, event) => void` leaks its second PARAMETER as a phantom prop.
331
+ */
332
+ export type TabsOnTabClickProp = (value: string, event: React.MouseEvent<HTMLButtonElement>) => void;
267
333
  /** @see Tabs — high-level tabs with optional `items` array. */
268
334
  export type TabsProp = {
269
335
  items?: TabItemProp[];
@@ -292,6 +358,32 @@ export type TabsProp = {
292
358
  addIcon?: React.ReactNode;
293
359
  /** Ant Design `hideAdd` — keep `editable-card`'s remove buttons but drop the add button. */
294
360
  hideAdd?: boolean;
361
+ /**
362
+ * Ant Design `removeIcon` — the strip-wide default glyph on `editable-card`'s remove shortcut.
363
+ * A `TabItemProp.closeIcon` on one item still wins over it, which is antd's own precedence.
364
+ */
365
+ closeIcon?: React.ReactNode;
366
+ /**
367
+ * Ant Design `more`. Default `scroll` — the behaviour every strip has today, unchanged.
368
+ * @see TabsOverflowProp for what `menu` adds and where it parts company with antd.
369
+ *
370
+ * The default is deliberately NOT `menu`: switching it would change the rendered bar for every
371
+ * existing consumer at once, and which of the two a dense strip wants is a service decision, not
372
+ * a library one.
373
+ */
374
+ overflow?: TabsOverflowProp;
375
+ /**
376
+ * Ant Design `onTabClick`. Fires on EVERY pointer activation of a trigger — including a click on
377
+ * the tab that is already selected, where `onValueChange` is silent by design. That is the whole
378
+ * reason it is a separate prop and not a re-spelling of `onValueChange` (cardinal rule #32):
379
+ * "the user asked for this tab again" (re-fetch, close a drawer, scroll a panel back to the top)
380
+ * is a different event from "the selection changed".
381
+ *
382
+ * Keyboard activation is NOT routed here, and that is the APG winning over antd: under
383
+ * `activationMode="manual"` the arrow keys move focus without activating, so a key-driven
384
+ * "click" would be a fiction. Use `onValueChange` for selection, whatever moved it.
385
+ */
386
+ onTabClick?: TabsOnTabClickProp;
295
387
  className?: ClassNameProp;
296
388
  listClassName?: ClassNameProp;
297
389
  contentClassName?: ClassNameProp;
@@ -244,6 +244,11 @@ export declare const VOCABULARY_REGISTRY: {
244
244
  readonly category: "layout";
245
245
  readonly description: "MobileShell block-size contract — viewport (100dvh root, the real app) | fill (fills a bounded parent, e.g. a device-frame preview)";
246
246
  };
247
+ readonly MobileShellWidthProp: {
248
+ readonly file: "vocabulary/layout.prop.ts";
249
+ readonly category: "layout";
250
+ readonly description: "MobileShell inline-size contract — fill (takes the whole inline size, the default) | phone (caps at the handheld measure and centres, for a handheld screen on a wider viewport)";
251
+ };
247
252
  readonly CenteredShellPresetProp: {
248
253
  readonly file: "vocabulary/layout.prop.ts";
249
254
  readonly category: "layout";
@@ -841,7 +846,7 @@ export declare const COMPONENT_PROP_REGISTRY: {
841
846
  readonly MobileShellProp: {
842
847
  readonly group: "layout";
843
848
  readonly file: "components/layout.prop.ts";
844
- readonly vocabulary: readonly ["ChildrenProp", "ClassNameProp", "ActionProp", "MobileShellHeightProp", {
849
+ readonly vocabulary: readonly ["ChildrenProp", "ClassNameProp", "ActionProp", "MobileShellHeightProp", "MobileShellWidthProp", {
845
850
  readonly field: "header";
846
851
  readonly local: true;
847
852
  readonly reason: "MobileShell app-bar band — the screen title row; it absorbs the top safe-area inset when no statusBar precedes it.";
@@ -1254,6 +1259,16 @@ export declare const COMPONENT_PROP_REGISTRY: {
1254
1259
  readonly file: "components/data-entry.prop.ts";
1255
1260
  readonly vocabulary: readonly [];
1256
1261
  };
1262
+ readonly SliderMarkProp: {
1263
+ readonly group: "data-entry";
1264
+ readonly file: "components/data-entry.prop.ts";
1265
+ readonly vocabulary: readonly [];
1266
+ };
1267
+ readonly SliderRangeConfigProp: {
1268
+ readonly group: "data-entry";
1269
+ readonly file: "components/data-entry.prop.ts";
1270
+ readonly vocabulary: readonly [];
1271
+ };
1257
1272
  readonly ControlCountProp: {
1258
1273
  readonly group: "data-entry";
1259
1274
  readonly file: "components/data-entry.prop.ts";
@@ -1304,21 +1319,6 @@ export declare const COMPONENT_PROP_REGISTRY: {
1304
1319
  readonly file: "components/data-entry.prop.ts";
1305
1320
  readonly vocabulary: readonly ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"];
1306
1321
  };
1307
- readonly MonthPickerProp: {
1308
- readonly group: "data-entry";
1309
- readonly file: "components/data-entry.prop.ts";
1310
- readonly vocabulary: readonly ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"];
1311
- };
1312
- readonly MonthRangePickerProp: {
1313
- readonly group: "data-entry";
1314
- readonly file: "components/data-entry.prop.ts";
1315
- readonly vocabulary: readonly ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"];
1316
- };
1317
- readonly DateRangePickerProp: {
1318
- readonly group: "data-entry";
1319
- readonly file: "components/data-entry.prop.ts";
1320
- readonly vocabulary: readonly ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"];
1321
- };
1322
1322
  readonly CalendarCellRenderProp: {
1323
1323
  readonly group: "data-entry";
1324
1324
  readonly file: "components/data-entry.prop.ts";
@@ -1363,6 +1363,54 @@ export declare const COMPONENT_PROP_REGISTRY: {
1363
1363
  readonly vocabulary: readonly ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "EmptyMessageProp", "DisabledProp", "NameProp", "IdProp", "ClassNameProp", "OpenProp", "OnOpenChangeProp", "SizeProp", "DefaultOpenProp", "ControlStatusProp", "ControlVariantProp", "AllowClearProp", "NotFoundContentProp", "PopupMatchWidthProp", "PendingProp"];
1364
1364
  readonly note: "Internal — the searchable engine behind `<Select options showSearch>` (not public API); use Select.";
1365
1365
  };
1366
+ readonly SelectFieldNamesProp: {
1367
+ readonly group: "data-entry";
1368
+ readonly file: "components/data-entry.prop.ts";
1369
+ readonly vocabulary: readonly ["LabelProp", "ValueProp", "DisabledProp"];
1370
+ readonly note: "antd `fieldNames` for `<Select options>` — the spelling Cascader and TreeSelect already take.";
1371
+ };
1372
+ readonly SelectOptionGroupProp: {
1373
+ readonly group: "data-entry";
1374
+ readonly file: "components/data-entry.prop.ts";
1375
+ readonly vocabulary: readonly ["LabelProp", "DisabledProp"];
1376
+ readonly note: "antd's nested option GROUP (`{ label, options }`); flattens to the `group` a flat row carries.";
1377
+ };
1378
+ readonly SelectOptionInputProp: {
1379
+ readonly group: "data-entry";
1380
+ readonly file: "components/data-entry.prop.ts";
1381
+ readonly vocabulary: readonly [];
1382
+ readonly note: "What `<Select options>` accepts: a row, a group, or a foreign row read through `fieldNames`.";
1383
+ };
1384
+ readonly SelectLabeledValueProp: {
1385
+ readonly group: "data-entry";
1386
+ readonly file: "components/data-entry.prop.ts";
1387
+ readonly vocabulary: readonly ["ValueProp", "LabelProp"];
1388
+ readonly note: "antd `labelInValue` — the value carries its own label for a screen with no option list yet.";
1389
+ };
1390
+ readonly SelectPlacementProp: {
1391
+ readonly group: "data-entry";
1392
+ readonly file: "components/data-entry.prop.ts";
1393
+ readonly vocabulary: readonly [];
1394
+ readonly note: "antd `placement` on the LOGICAL inline axis, as DropdownMenuPlacementProp already spells it.";
1395
+ };
1396
+ readonly SelectShowSearchProp: {
1397
+ readonly group: "data-entry";
1398
+ readonly file: "components/data-entry.prop.ts";
1399
+ readonly vocabulary: readonly ["OnSearchChangeProp"];
1400
+ readonly note: "antd `showSearch`'s object form. `filterOption(input, option)` here takes antd's argument order.";
1401
+ };
1402
+ readonly SelectLabelInValueSingleProp: {
1403
+ readonly group: "data-entry";
1404
+ readonly file: "components/data-entry.prop.ts";
1405
+ readonly vocabulary: readonly ["ValueProp", "DefaultValueProp", "OnValueChangeProp"];
1406
+ readonly note: "Internal — the `labelInValue` single shape of `<Select options>`; use Select.";
1407
+ };
1408
+ readonly SelectLabelInValueMultipleProp: {
1409
+ readonly group: "data-entry";
1410
+ readonly file: "components/data-entry.prop.ts";
1411
+ readonly vocabulary: readonly ["ValueProp", "DefaultValueProp", "OnValueChangeProp", "MaxTagCountProp", "MaxTagPlaceholderProp"];
1412
+ readonly note: "Internal — the `labelInValue` multiple/tags shape of `<Select options>`; use Select.";
1413
+ };
1366
1414
  readonly SelectDataProp: {
1367
1415
  readonly group: "data-entry";
1368
1416
  readonly file: "components/data-entry.prop.ts";
@@ -1932,6 +1980,11 @@ export declare const COMPONENT_PROP_REGISTRY: {
1932
1980
  readonly file: "components/navigation.prop.ts";
1933
1981
  readonly vocabulary: readonly [];
1934
1982
  };
1983
+ readonly DropdownMenuTriggerActionProp: {
1984
+ readonly group: "navigation";
1985
+ readonly file: "components/navigation.prop.ts";
1986
+ readonly vocabulary: readonly [];
1987
+ };
1935
1988
  readonly PaginationAlignProp: {
1936
1989
  readonly group: "navigation";
1937
1990
  readonly file: "components/navigation.prop.ts";
@@ -2012,6 +2065,16 @@ export declare const COMPONENT_PROP_REGISTRY: {
2012
2065
  readonly file: "components/navigation.prop.ts";
2013
2066
  readonly vocabulary: readonly ["HandlerProp"];
2014
2067
  };
2068
+ readonly TabsOnTabClickProp: {
2069
+ readonly group: "navigation";
2070
+ readonly file: "components/navigation.prop.ts";
2071
+ readonly vocabulary: readonly ["HandlerProp"];
2072
+ };
2073
+ readonly TabsOverflowProp: {
2074
+ readonly group: "navigation";
2075
+ readonly file: "components/navigation.prop.ts";
2076
+ readonly vocabulary: readonly [];
2077
+ };
2015
2078
  readonly TabItemProp: {
2016
2079
  readonly group: "navigation";
2017
2080
  readonly file: "components/navigation.prop.ts";
@@ -242,6 +242,11 @@ const VOCABULARY_REGISTRY = {
242
242
  category: "layout",
243
243
  description: "MobileShell block-size contract \u2014 viewport (100dvh root, the real app) | fill (fills a bounded parent, e.g. a device-frame preview)"
244
244
  },
245
+ MobileShellWidthProp: {
246
+ file: "vocabulary/layout.prop.ts",
247
+ category: "layout",
248
+ description: "MobileShell inline-size contract \u2014 fill (takes the whole inline size, the default) | phone (caps at the handheld measure and centres, for a handheld screen on a wider viewport)"
249
+ },
245
250
  CenteredShellPresetProp: {
246
251
  file: "vocabulary/layout.prop.ts",
247
252
  category: "layout",
@@ -861,6 +866,7 @@ const COMPONENT_PROP_REGISTRY = {
861
866
  "ClassNameProp",
862
867
  "ActionProp",
863
868
  "MobileShellHeightProp",
869
+ "MobileShellWidthProp",
864
870
  {
865
871
  field: "header",
866
872
  local: true,
@@ -1414,6 +1420,16 @@ const COMPONENT_PROP_REGISTRY = {
1414
1420
  file: "components/data-entry.prop.ts",
1415
1421
  vocabulary: []
1416
1422
  },
1423
+ SliderMarkProp: {
1424
+ group: "data-entry",
1425
+ file: "components/data-entry.prop.ts",
1426
+ vocabulary: []
1427
+ },
1428
+ SliderRangeConfigProp: {
1429
+ group: "data-entry",
1430
+ file: "components/data-entry.prop.ts",
1431
+ vocabulary: []
1432
+ },
1417
1433
  ControlCountProp: {
1418
1434
  group: "data-entry",
1419
1435
  file: "components/data-entry.prop.ts",
@@ -1472,21 +1488,6 @@ const COMPONENT_PROP_REGISTRY = {
1472
1488
  file: "components/data-entry.prop.ts",
1473
1489
  vocabulary: ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"]
1474
1490
  },
1475
- MonthPickerProp: {
1476
- group: "data-entry",
1477
- file: "components/data-entry.prop.ts",
1478
- vocabulary: ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"]
1479
- },
1480
- MonthRangePickerProp: {
1481
- group: "data-entry",
1482
- file: "components/data-entry.prop.ts",
1483
- vocabulary: ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"]
1484
- },
1485
- DateRangePickerProp: {
1486
- group: "data-entry",
1487
- file: "components/data-entry.prop.ts",
1488
- vocabulary: ["ValueProp", "OnValueChangeProp", "PlaceholderProp", "DisabledProp", "IdProp"]
1489
- },
1490
1491
  CalendarCellRenderProp: {
1491
1492
  group: "data-entry",
1492
1493
  file: "components/data-entry.prop.ts",
@@ -1573,6 +1574,60 @@ const COMPONENT_PROP_REGISTRY = {
1573
1574
  ],
1574
1575
  note: "Internal \u2014 the searchable engine behind `<Select options showSearch>` (not public API); use Select."
1575
1576
  },
1577
+ SelectFieldNamesProp: {
1578
+ group: "data-entry",
1579
+ file: "components/data-entry.prop.ts",
1580
+ vocabulary: ["LabelProp", "ValueProp", "DisabledProp"],
1581
+ note: "antd `fieldNames` for `<Select options>` \u2014 the spelling Cascader and TreeSelect already take."
1582
+ },
1583
+ SelectOptionGroupProp: {
1584
+ group: "data-entry",
1585
+ file: "components/data-entry.prop.ts",
1586
+ vocabulary: ["LabelProp", "DisabledProp"],
1587
+ note: "antd's nested option GROUP (`{ label, options }`); flattens to the `group` a flat row carries."
1588
+ },
1589
+ SelectOptionInputProp: {
1590
+ group: "data-entry",
1591
+ file: "components/data-entry.prop.ts",
1592
+ vocabulary: [],
1593
+ note: "What `<Select options>` accepts: a row, a group, or a foreign row read through `fieldNames`."
1594
+ },
1595
+ SelectLabeledValueProp: {
1596
+ group: "data-entry",
1597
+ file: "components/data-entry.prop.ts",
1598
+ vocabulary: ["ValueProp", "LabelProp"],
1599
+ note: "antd `labelInValue` \u2014 the value carries its own label for a screen with no option list yet."
1600
+ },
1601
+ SelectPlacementProp: {
1602
+ group: "data-entry",
1603
+ file: "components/data-entry.prop.ts",
1604
+ vocabulary: [],
1605
+ note: "antd `placement` on the LOGICAL inline axis, as DropdownMenuPlacementProp already spells it."
1606
+ },
1607
+ SelectShowSearchProp: {
1608
+ group: "data-entry",
1609
+ file: "components/data-entry.prop.ts",
1610
+ vocabulary: ["OnSearchChangeProp"],
1611
+ note: "antd `showSearch`'s object form. `filterOption(input, option)` here takes antd's argument order."
1612
+ },
1613
+ SelectLabelInValueSingleProp: {
1614
+ group: "data-entry",
1615
+ file: "components/data-entry.prop.ts",
1616
+ vocabulary: ["ValueProp", "DefaultValueProp", "OnValueChangeProp"],
1617
+ note: "Internal \u2014 the `labelInValue` single shape of `<Select options>`; use Select."
1618
+ },
1619
+ SelectLabelInValueMultipleProp: {
1620
+ group: "data-entry",
1621
+ file: "components/data-entry.prop.ts",
1622
+ vocabulary: [
1623
+ "ValueProp",
1624
+ "DefaultValueProp",
1625
+ "OnValueChangeProp",
1626
+ "MaxTagCountProp",
1627
+ "MaxTagPlaceholderProp"
1628
+ ],
1629
+ note: "Internal \u2014 the `labelInValue` multiple/tags shape of `<Select options>`; use Select."
1630
+ },
1576
1631
  SelectDataProp: {
1577
1632
  group: "data-entry",
1578
1633
  file: "components/data-entry.prop.ts",
@@ -2233,6 +2288,11 @@ const COMPONENT_PROP_REGISTRY = {
2233
2288
  file: "components/navigation.prop.ts",
2234
2289
  vocabulary: []
2235
2290
  },
2291
+ DropdownMenuTriggerActionProp: {
2292
+ group: "navigation",
2293
+ file: "components/navigation.prop.ts",
2294
+ vocabulary: []
2295
+ },
2236
2296
  PaginationAlignProp: {
2237
2297
  group: "navigation",
2238
2298
  file: "components/navigation.prop.ts",
@@ -2316,6 +2376,16 @@ const COMPONENT_PROP_REGISTRY = {
2316
2376
  file: "components/navigation.prop.ts",
2317
2377
  vocabulary: ["HandlerProp"]
2318
2378
  },
2379
+ TabsOnTabClickProp: {
2380
+ group: "navigation",
2381
+ file: "components/navigation.prop.ts",
2382
+ vocabulary: ["HandlerProp"]
2383
+ },
2384
+ TabsOverflowProp: {
2385
+ group: "navigation",
2386
+ file: "components/navigation.prop.ts",
2387
+ vocabulary: []
2388
+ },
2319
2389
  TabItemProp: {
2320
2390
  group: "navigation",
2321
2391
  file: "components/navigation.prop.ts",
@@ -100,6 +100,18 @@ export type SelectedIdsProp = Set<string>;
100
100
  export type OnSelectChangeProp = (next: Set<string>) => void;
101
101
  /** Table density change callback. */
102
102
  export type OnTableDensityChangeProp = (density: TableDensityProp) => void;
103
+ /**
104
+ * A row's STATE, drawn as a leading-edge rail plus a wash — the same six tones, with the same
105
+ * names and the same meanings, that `Card accent` already carries. A row that needs attention and
106
+ * a card that needs attention should not be two vocabularies.
107
+ *
108
+ * It is a state, never a category: colour is not the only signal a row may carry (WCAG 1.4.1), so
109
+ * the reason still belongs in a cell — a Badge, a status column, an icon with a label. The rail
110
+ * is what makes that cell findable in a long table, not a replacement for it.
111
+ */
112
+ export type TableRowToneProp = "primary" | "success" | "warning" | "info" | "attention" | "destructive";
113
+ /** Per-row tone resolver — return `undefined` for a row in the ordinary state. */
114
+ export type RowToneProp<T> = (row: T) => TableRowToneProp | undefined;
103
115
  /** Sort change callback — undefined clears sort. */
104
116
  export type OnSortChangeProp = (sort: {
105
117
  key: string;
@@ -1,7 +1,7 @@
1
1
  /** Barrel — all vocabulary prop types. */
2
2
  export type { ClassNameProp, ChildrenProp, IdProp, OpenProp, DefaultOpenProp, OnOpenChangeProp, HandlerProp, PendingProp, RequiredProp, DisabledProp, LabelProp, HelperProp, ErrorProp, ErrorBagProp, PlaceholderProp, NameProp, ValueProp, DefaultValueProp, OnValueChangeProp, OnChangeProp, OnClickProp, AsChildProp, FlushProp, WidthProp, ControlWidthProp, AllowClearProp, MaxTagCountProp, MaxTagPlaceholderProp, NotFoundContentProp, PopupMatchWidthProp, } from "./shared.prop.js";
3
3
  export type { TitleProp, SubtitleProp, StatusProp, DescriptionProp, ExtraProp, FooterProp, ActionProp, IconProp, ConfirmLabelProp, CancelLabelProp, ActionsProp, EmptyMessageProp, } from "./content.prop.js";
4
- export type { PageDensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, CenteredShellPresetProp, ErrorSurfaceModeProp, ErrorSurfaceStatusProp, AuthShellPresetProp, MobileShellHeightProp, OrientationProp, TableDensityProp, DensityProp, GapNameProp, PadProp, PadRawProp, PadSides, GapProp, GapStepProp, } from "./layout.prop.js";
4
+ export type { PageDensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, CenteredShellPresetProp, ErrorSurfaceModeProp, ErrorSurfaceStatusProp, AuthShellPresetProp, MobileShellHeightProp, MobileShellWidthProp, OrientationProp, TableDensityProp, DensityProp, GapNameProp, PadProp, PadRawProp, PadSides, GapProp, GapStepProp, } from "./layout.prop.js";
5
5
  export type { ButtonVariantProp, ButtonSizeProp, BadgeVariantProp, AppSettingPickerAppearanceProp, AppSettingToggleAppearanceProp, ShapeProp, AvatarShapeProp, TextSizeProp, TextToneProp, FontWeightProp, HeadingLevelProp, TextAlignProp, TextWhitespaceProp, SizeProp, ControlStatusProp, ControlVariantProp, FormLayoutProp, DescriptionsLayoutProp, BreakpointProp, ConfirmVariantProp, ToneProp, AlertVariantProp, SortDirectionProp, ColumnAlignProp, SortStateProp, RevealDelayProp, ActivityVariantProp, ActivityAnnounceProp, } from "./interaction.prop.js";
6
6
  export type { BreadcrumbItemProp, BreadcrumbProp, BreadcrumbItemMenuProp, BreadcrumbItemMenuEntryProp, BreadcrumbSeparatorProp, BreadcrumbItemRenderProp, } from "./navigation.prop.js";
7
- export type { GetRowIdProp, OnRowClickProp, ColumnDefProp, TablePresetProp, TableColumnPriorityProp, TableCellIndentProp, SelectedIdsProp, OnSelectChangeProp, OnTableDensityChangeProp, OnSortChangeProp, OnSearchChangeProp, OnClearFiltersProp, HasActiveFiltersProp, StickyProp, ColumnFixedProp, ColumnFilterValueProp, ColumnFilterItemProp, ColumnFilterStateProp, OnColumnFilterChangeProp, ColumnCompareProp, ColumnSorterProp, TableSelectionItemProp, TableRowSelectionProp, TableExpandableProp, TableSummaryProp, TableScrollProp, TableStickyProp, OnRowProp, TablePaginationProp, DescriptionsColumnProp, DescriptionsSpanProp, DescriptionsItemsProp, } from "./data.prop.js";
7
+ export type { GetRowIdProp, OnRowClickProp, ColumnDefProp, TablePresetProp, TableColumnPriorityProp, TableCellIndentProp, SelectedIdsProp, OnSelectChangeProp, OnTableDensityChangeProp, TableRowToneProp, RowToneProp, OnSortChangeProp, OnSearchChangeProp, OnClearFiltersProp, HasActiveFiltersProp, StickyProp, ColumnFixedProp, ColumnFilterValueProp, ColumnFilterItemProp, ColumnFilterStateProp, OnColumnFilterChangeProp, ColumnCompareProp, ColumnSorterProp, TableSelectionItemProp, TableRowSelectionProp, TableExpandableProp, TableSummaryProp, TableScrollProp, TableStickyProp, OnRowProp, TablePaginationProp, DescriptionsColumnProp, DescriptionsSpanProp, DescriptionsItemsProp, } from "./data.prop.js";
@@ -26,6 +26,17 @@ export type CenteredShellAlignProp = "start" | "center";
26
26
  * where a viewport-tall root would overflow its frame. Nothing else differs between the two.
27
27
  */
28
28
  export type MobileShellHeightProp = "viewport" | "fill";
29
+ /**
30
+ * MobileShell inline-size contract — the axis `height` had and `width` did not.
31
+ * `"fill"` (default, and what the shell has always done) takes the whole inline size it is given.
32
+ * `"phone"` caps it at the handheld measure (`--mobile-shell-max-inline-size`) and centres the
33
+ * column, for the case the shell's own docstring already names on the block axis: a handheld
34
+ * screen rendered on a viewport wider than a handheld — a device-frame preview, a desktop browser
35
+ * opening a mobile route, a phone view embedded in a wider page. Measured at a 1280px viewport
36
+ * before this existed: the shell drew 1232px wide with `max-inline-size: none`, so a 44px tab bar
37
+ * spread its four destinations across a metre of screen.
38
+ */
39
+ export type MobileShellWidthProp = "fill" | "phone";
29
40
  /**
30
41
  * ErrorSurface shell contract — WHERE the exception surface lives, not how it looks.
31
42
  * `"application"` (403 / 404): the failure happened INSIDE the authenticated app, so the surface
@@ -26,6 +26,10 @@
26
26
  }
27
27
  }
28
28
 
29
+ [data-slot="badge"][data-tabular] {
30
+ font-variant-numeric: tabular-nums;
31
+ }
32
+
29
33
  [data-slot="badge"][data-tinted] {
30
34
 
31
35
  background-color: color-mix(
@@ -44,27 +44,27 @@
44
44
  }
45
45
 
46
46
  [data-slot="card"][data-accent="primary"] {
47
- --card-accent-color: hsl(var(--primary));
47
+ --card-accent-color: hsl(var(--mark-primary));
48
48
  }
49
49
 
50
50
  [data-slot="card"][data-accent="success"] {
51
- --card-accent-color: hsl(var(--success));
51
+ --card-accent-color: hsl(var(--mark-success));
52
52
  }
53
53
 
54
54
  [data-slot="card"][data-accent="warning"] {
55
- --card-accent-color: hsl(var(--warning));
55
+ --card-accent-color: hsl(var(--mark-warning));
56
56
  }
57
57
 
58
58
  [data-slot="card"][data-accent="info"] {
59
- --card-accent-color: hsl(var(--info));
59
+ --card-accent-color: hsl(var(--mark-info));
60
60
  }
61
61
 
62
62
  [data-slot="card"][data-accent="attention"] {
63
- --card-accent-color: hsl(var(--attention));
63
+ --card-accent-color: hsl(var(--mark-attention));
64
64
  }
65
65
 
66
66
  [data-slot="card"][data-accent="destructive"] {
67
- --card-accent-color: hsl(var(--destructive));
67
+ --card-accent-color: hsl(var(--mark-destructive));
68
68
  }
69
69
 
70
70
  [data-slot="card"][data-accent] {