@godxjp/ui 13.1.0 → 13.2.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 (101) hide show
  1. package/dist/{checkbox-shzpQ_Xo.d.ts → checkbox-DKaBna6z.d.ts} +1 -1
  2. package/dist/{chunk-55S5N667.js → chunk-33AJDSML.js} +1 -1
  3. package/dist/{chunk-W2NWOWZ3.js → chunk-4ADB5EKN.js} +3 -3
  4. package/dist/{chunk-X4J55OS5.js → chunk-5NIGHXT5.js} +2 -2
  5. package/dist/{chunk-AKFR72DQ.js → chunk-74OPJG3N.js} +48 -50
  6. package/dist/{chunk-MTJHEQ46.js → chunk-BABHI2W7.js} +49 -51
  7. package/dist/{chunk-M4PZNAMV.js → chunk-E6J7ZTDM.js} +17 -8
  8. package/dist/{chunk-KQ36FDEE.js → chunk-HBOL5LSC.js} +1 -1
  9. package/dist/{chunk-XUEDRPWF.js → chunk-IMERLXSC.js} +2 -2
  10. package/dist/{chunk-2M57K2VW.js → chunk-JAEA2IBC.js} +1 -1
  11. package/dist/{chunk-7HEFQDN5.js → chunk-LEVFHRHU.js} +2 -2
  12. package/dist/{chunk-I2CYVA7B.js → chunk-NXF64JCT.js} +1 -1
  13. package/dist/{chunk-DWYRIKVD.js → chunk-SSNPCHG6.js} +1 -1
  14. package/dist/{chunk-CRERCLIZ.js → chunk-TBJBVEIP.js} +21 -2
  15. package/dist/{chunk-YVZPAN2W.js → chunk-UVJE3FYT.js} +1 -1
  16. package/dist/{chunk-IZGLEPGW.js → chunk-XGXI52Z7.js} +21 -4
  17. package/dist/{chunk-IWAIIBSW.js → chunk-XY2QN4VR.js} +1 -1
  18. package/dist/{chunk-XTVUYEJD.js → chunk-Z37463ZK.js} +60 -2
  19. package/dist/{chunk-7MXIPSYM.js → chunk-Z652BSX7.js} +1 -1
  20. package/dist/{chunk-5KK3KJ6L.js → chunk-ZKUB7DHO.js} +1 -1
  21. package/dist/components/admin/index.d.ts +9 -9
  22. package/dist/components/admin/index.js +19 -19
  23. package/dist/components/data-display/badge.d.ts +8 -5
  24. package/dist/components/data-display/badge.js +1 -1
  25. package/dist/components/data-display/card.d.ts +2 -2
  26. package/dist/components/data-display/index.d.ts +4 -4
  27. package/dist/components/data-display/index.js +4 -4
  28. package/dist/components/data-entry/calendar.d.ts +3 -3
  29. package/dist/components/data-entry/calendar.js +2 -2
  30. package/dist/components/data-entry/cascader.d.ts +3 -3
  31. package/dist/components/data-entry/cascader.js +2 -2
  32. package/dist/components/data-entry/checkbox.d.ts +4 -4
  33. package/dist/components/data-entry/color-picker.d.ts +3 -3
  34. package/dist/components/data-entry/date-picker.d.ts +3 -3
  35. package/dist/components/data-entry/date-picker.js +3 -3
  36. package/dist/components/data-entry/date-range-picker.d.ts +3 -3
  37. package/dist/components/data-entry/date-range-picker.js +3 -3
  38. package/dist/components/data-entry/index.d.ts +5 -5
  39. package/dist/components/data-entry/index.js +13 -13
  40. package/dist/components/data-entry/radio.d.ts +3 -3
  41. package/dist/components/data-entry/select.d.ts +3 -3
  42. package/dist/components/data-entry/select.js +2 -2
  43. package/dist/components/data-entry/slider.d.ts +3 -3
  44. package/dist/components/data-entry/slider.js +1 -1
  45. package/dist/components/data-entry/switch.d.ts +3 -3
  46. package/dist/components/data-entry/time-picker.d.ts +3 -3
  47. package/dist/components/data-entry/time-picker.js +2 -2
  48. package/dist/components/data-entry/transfer.d.ts +4 -4
  49. package/dist/components/data-entry/transfer.js +2 -2
  50. package/dist/components/data-entry/tree-select.d.ts +3 -3
  51. package/dist/components/data-entry/tree-select.js +2 -2
  52. package/dist/components/data-entry/upload.d.ts +4 -4
  53. package/dist/components/data-entry/upload.js +4 -4
  54. package/dist/components/data-grid/index.js +3 -3
  55. package/dist/components/feedback/alert.d.ts +3 -3
  56. package/dist/components/feedback/alert.js +2 -2
  57. package/dist/components/feedback/dialog.d.ts +2 -2
  58. package/dist/components/feedback/dialog.js +2 -2
  59. package/dist/components/feedback/index.d.ts +2 -2
  60. package/dist/components/feedback/index.js +4 -4
  61. package/dist/components/feedback/sheet.d.ts +1 -1
  62. package/dist/components/feedback/sheet.js +1 -1
  63. package/dist/components/general/button.d.ts +5 -3
  64. package/dist/components/general/button.js +1 -1
  65. package/dist/components/general/index.d.ts +34 -3
  66. package/dist/components/general/index.js +46 -2
  67. package/dist/components/navigation/index.d.ts +6 -6
  68. package/dist/components/navigation/index.js +7 -7
  69. package/dist/components/navigation/pagination.d.ts +3 -3
  70. package/dist/components/navigation/pagination.js +3 -3
  71. package/dist/components/navigation/steps.d.ts +4 -4
  72. package/dist/components/query/index.d.ts +3 -3
  73. package/dist/components/query/index.js +2 -2
  74. package/dist/components/ui/index.d.ts +7 -7
  75. package/dist/components/ui/index.js +17 -17
  76. package/dist/{data-display.prop-BOtnzI17.d.ts → data-display.prop-BCC2zOTq.d.ts} +2 -2
  77. package/dist/{data-entry.prop-DL7kUcJh.d.ts → data-entry.prop-BGlwRXlJ.d.ts} +2 -2
  78. package/dist/{data-table-DO-gU4wJ.d.ts → data-table-B6HC3EFK.d.ts} +3 -3
  79. package/dist/{data.prop-D4uDw_SW.d.ts → data.prop-H9nROsUg.d.ts} +1 -1
  80. package/dist/{feedback.prop-CtrL24E1.d.ts → feedback.prop-sEx89LTF.d.ts} +1 -1
  81. package/dist/{filter-bar-tEwfKthz.d.ts → filter-bar-DPMQmIpX.d.ts} +1 -1
  82. package/dist/general.prop-4ERae5Sj.d.ts +46 -0
  83. package/dist/index.d.ts +9 -9
  84. package/dist/index.js +25 -25
  85. package/dist/interaction.prop-B44hePpl.d.ts +46 -0
  86. package/dist/{navigation.prop-Cc_Iu87S.d.ts → navigation.prop-DMbjEig7.d.ts} +1 -1
  87. package/dist/props/components/index.d.ts +8 -8
  88. package/dist/props/index.d.ts +8 -8
  89. package/dist/props/index.js +1 -1
  90. package/dist/props/registry.d.ts +47 -2
  91. package/dist/props/registry.js +1 -1
  92. package/dist/props/vocabulary/index.d.ts +2 -2
  93. package/dist/{query.prop-CyNxaCHe.d.ts → query.prop-cp6fEgOD.d.ts} +1 -1
  94. package/dist/{search-input-CFUtVWQl.d.ts → search-input-CxGW8_7q.d.ts} +1 -1
  95. package/dist/styles/badge-layout.css +4 -0
  96. package/dist/styles/dialog-layout.css +30 -11
  97. package/dist/styles/index.css +1 -0
  98. package/dist/styles/text-layout.css +119 -0
  99. package/package.json +1 -1
  100. package/dist/general.prop-1GgJkf4b.d.ts +0 -16
  101. package/dist/interaction.prop-R77MnAMZ.d.ts +0 -31
@@ -1,9 +1,9 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { E as EmptyStateProp } from './data-display.prop-BOtnzI17.js';
2
+ import { E as EmptyStateProp } from './data-display.prop-BCC2zOTq.js';
3
3
  import * as React from 'react';
4
4
  import { T as TableDensityProp } from './layout.prop-CXvl2rVR.js';
5
- import { e as SortStateProp } from './interaction.prop-R77MnAMZ.js';
6
- import { C as ColumnDefProp } from './data.prop-D4uDw_SW.js';
5
+ import { h as SortStateProp } from './interaction.prop-B44hePpl.js';
6
+ import { C as ColumnDefProp } from './data.prop-H9nROsUg.js';
7
7
 
8
8
  declare function EmptyState({ icon: Icon, title, description, action, className }: EmptyStateProp): react_jsx_runtime.JSX.Element;
9
9
 
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { C as ColumnAlignProp, d as SortDirectionProp } from './interaction.prop-R77MnAMZ.js';
2
+ import { C as ColumnAlignProp, g as SortDirectionProp } from './interaction.prop-B44hePpl.js';
3
3
  import { T as TableDensityProp } from './layout.prop-CXvl2rVR.js';
4
4
 
5
5
  /**
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { H as HandlerProp, a as ClassNameProp, h as OpenProp, f as OnOpenChangeProp, P as PendingProp, C as ChildrenProp } from './shared.prop-BvMSLFJ6.js';
3
3
  import { T as TitleProp, D as DescriptionProp, b as ConfirmLabelProp, C as CancelLabelProp, I as IconProp } from './content.prop-DrV_zDy-.js';
4
- import { c as ConfirmVariantProp, A as AlertVariantProp, T as ToneProp } from './interaction.prop-R77MnAMZ.js';
4
+ import { d as ConfirmVariantProp, A as AlertVariantProp, k as ToneProp } from './interaction.prop-B44hePpl.js';
5
5
 
6
6
  /** Feedback component prop types — @see docs/COMPONENTS.md#feedback */
7
7
 
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { e as ToolbarProp, d as ToolbarGroupProp } from './navigation.prop-Cc_Iu87S.js';
2
+ import { e as ToolbarProp, d as ToolbarGroupProp } from './navigation.prop-DMbjEig7.js';
3
3
 
4
4
  declare function Toolbar({ onClear, hasActiveFilters, className, children }: ToolbarProp): react_jsx_runtime.JSX.Element;
5
5
  declare function ToolbarGroup({ label, className, children }: ToolbarGroupProp): react_jsx_runtime.JSX.Element;
@@ -0,0 +1,46 @@
1
+ import * as React from 'react';
2
+ import { A as AsChildProp, e as OnClickProp, c as DisabledProp } from './shared.prop-BvMSLFJ6.js';
3
+ import { c as ButtonVariantProp, b as ButtonSizeProp, S as ShapeProp, H as HeadingLevelProp, j as TextToneProp, T as TextAlignProp, i as TextSizeProp, F as FontWeightProp } from './interaction.prop-B44hePpl.js';
4
+
5
+ /** Foundation component prop types — @see docs/COMPONENTS.md#foundation */
6
+
7
+ /** @see Text — typographic primitive; replaces hand-rolled `<span className="text-[13px] …">`. */
8
+ type TextProp = Omit<React.HTMLAttributes<HTMLElement>, "color"> & {
9
+ /** Render element (span | p | div | label | strong | em | small). Default `span`. */
10
+ as?: "span" | "p" | "div" | "label" | "strong" | "em" | "small";
11
+ /** Size from the type scale — never an arbitrary px. Default `sm` (base). */
12
+ size?: TextSizeProp;
13
+ /** Semantic colour intent. Default `default` (foreground). */
14
+ tone?: TextToneProp;
15
+ /** Weight (system 2-weight: 400/500). Default `regular`. */
16
+ weight?: FontWeightProp;
17
+ align?: TextAlignProp;
18
+ /** Single-line ellipsis. */
19
+ truncate?: boolean;
20
+ /** Tabular figures for aligned numbers. */
21
+ tabular?: boolean;
22
+ /** Monospace family (codes, ids). */
23
+ mono?: boolean;
24
+ htmlFor?: string;
25
+ };
26
+ /** @see Heading — h1..h4 sized from the `--heading-h*` tokens. */
27
+ type HeadingProp = Omit<React.HTMLAttributes<HTMLHeadingElement>, "color"> & {
28
+ /** Heading level — sets size token AND the semantic element (override the element with `as`). */
29
+ level?: HeadingLevelProp;
30
+ as?: "h1" | "h2" | "h3" | "h4" | "div";
31
+ tone?: TextToneProp;
32
+ align?: TextAlignProp;
33
+ truncate?: boolean;
34
+ };
35
+ /** @see Button */
36
+ type ButtonProp = React.ButtonHTMLAttributes<HTMLButtonElement> & {
37
+ variant?: ButtonVariantProp;
38
+ size?: ButtonSizeProp;
39
+ /** Corner shape — `default` (control radius) · `pill` (fully rounded) · `sharp` (square). */
40
+ shape?: ShapeProp;
41
+ asChild?: AsChildProp;
42
+ onClick?: OnClickProp;
43
+ disabled?: DisabledProp;
44
+ };
45
+
46
+ export type { ButtonProp as B, HeadingProp as H, TextProp as T };
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export { B as BreadcrumbItem } from './navigation.prop-CXDaVNaR.js';
2
2
  export { F as FlexAlignProp, a as FlexDirectionProp, b as FlexJustifyProp, c as FlexProp, c as FlexProps, P as PageContainerProp, P as PageContainerProps } from './layout.prop-ChLFNGJ6.js';
3
3
  export { F as Flex, P as PageContainer } from './flex-88Ps6YCv.js';
4
- export { C as ColumnDef, D as DataTable, a as Density, b as Descriptions, E as EmptyState } from './data-table-DO-gU4wJ.js';
4
+ export { C as ColumnDef, D as DataTable, a as Density, b as Descriptions, E as EmptyState } from './data-table-B6HC3EFK.js';
5
5
  export { Badge } from './components/data-display/badge.js';
6
- export { F as Field, a as FormField, S as SearchInput } from './search-input-CFUtVWQl.js';
6
+ export { F as Field, a as FormField, S as SearchInput } from './search-input-CxGW8_7q.js';
7
7
  export { a as SkeletonDetail, c as SkeletonRows, d as SkeletonStat, e as SkeletonTable } from './skeleton-cj9kh5wo.js';
8
8
  export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from './components/feedback/alert.js';
9
9
  export { Upload, useUploadDraft } from './components/data-entry/upload.js';
@@ -13,25 +13,25 @@ export { Transfer } from './components/data-entry/transfer.js';
13
13
  export { Tabs, TabsContent, TabsList, TabsTrigger } from './components/navigation/tabs.js';
14
14
  export { Pagination } from './components/navigation/pagination.js';
15
15
  export { Steps } from './components/navigation/steps.js';
16
- export { T as Toolbar, a as ToolbarGroup } from './filter-bar-tEwfKthz.js';
16
+ export { T as Toolbar, a as ToolbarGroup } from './filter-bar-DPMQmIpX.js';
17
17
  export { AlertDialog, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from './components/feedback/dialog.js';
18
18
  export { Toaster } from './components/feedback/sonner.js';
19
19
  export { toast } from 'sonner';
20
20
  export { useDebouncedValue, useTimeoutFlag } from './lib/hooks.js';
21
21
  export { formatBytes, formatCurrency, humanError, shortId } from './components/admin/index.js';
22
22
  export { cn } from './lib/utils.js';
23
- export { F as FieldProps, B as collectUploadCommitActions, E as createUploadItem } from './data-entry.prop-DL7kUcJh.js';
24
- export { c as AlertDialogProps } from './feedback.prop-CtrL24E1.js';
25
- export { d as ToolbarGroupProps, e as ToolbarProps } from './navigation.prop-Cc_Iu87S.js';
23
+ export { F as FieldProps, B as collectUploadCommitActions, E as createUploadItem } from './data-entry.prop-BGlwRXlJ.js';
24
+ export { c as AlertDialogProps } from './feedback.prop-sEx89LTF.js';
25
+ export { d as ToolbarGroupProps, e as ToolbarProps } from './navigation.prop-DMbjEig7.js';
26
26
  export { j as formatDate } from './format-date-ByyZoqI5.js';
27
27
  import './shared.prop-BvMSLFJ6.js';
28
28
  import 'react';
29
29
  import './content.prop-DrV_zDy-.js';
30
30
  import './layout.prop-CXvl2rVR.js';
31
31
  import 'react/jsx-runtime';
32
- import './data-display.prop-BOtnzI17.js';
33
- import './interaction.prop-R77MnAMZ.js';
34
- import './data.prop-D4uDw_SW.js';
32
+ import './data-display.prop-BCC2zOTq.js';
33
+ import './interaction.prop-B44hePpl.js';
34
+ import './data.prop-H9nROsUg.js';
35
35
  import 'class-variance-authority/types';
36
36
  import 'class-variance-authority';
37
37
  import '@radix-ui/react-tabs';
package/dist/index.js CHANGED
@@ -1,54 +1,54 @@
1
1
  import './chunk-ZPHIXXTK.js';
2
2
  import './chunk-VSUYVT2Q.js';
3
- import './chunk-5KK3KJ6L.js';
4
- import './chunk-S2IJKT3D.js';
5
3
  import './chunk-I7NQ2LIL.js';
6
4
  import './chunk-HCCID4YY.js';
7
5
  import './chunk-C6OEAQTO.js';
6
+ import './chunk-ZKUB7DHO.js';
7
+ import './chunk-BABHI2W7.js';
8
+ import './chunk-74OPJG3N.js';
9
+ import './chunk-S2IJKT3D.js';
10
+ import './chunk-HBOL5LSC.js';
8
11
  import './chunk-SISAM4JZ.js';
9
- import './chunk-MTJHEQ46.js';
10
- import './chunk-AKFR72DQ.js';
11
- import './chunk-KQ36FDEE.js';
12
12
  import './chunk-2H65B4JA.js';
13
- import './chunk-XUEDRPWF.js';
13
+ import './chunk-IMERLXSC.js';
14
14
  import './chunk-GJXOBDER.js';
15
- export { Toolbar, ToolbarGroup } from './chunk-X4J55OS5.js';
16
- export { Steps } from './chunk-QD3YG56T.js';
17
- import './chunk-B73NA66T.js';
18
- import './chunk-WGWI7EGL.js';
19
- export { Pagination } from './chunk-7HEFQDN5.js';
20
- export { Tabs, TabsContent, TabsList, TabsTrigger } from './chunk-V3N266PT.js';
15
+ export { Transfer } from './chunk-JAEA2IBC.js';
16
+ export { TreeSelect } from './chunk-XY2QN4VR.js';
17
+ export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from './chunk-4ADB5EKN.js';
18
+ import './chunk-TBJBVEIP.js';
21
19
  export { PageContainer } from './chunk-QATON677.js';
22
20
  import './chunk-XK3M3VRR.js';
23
21
  import './chunk-W4REF4TD.js';
24
- import './chunk-HL3G4SVG.js';
25
- export { Transfer } from './chunk-2M57K2VW.js';
26
- export { TreeSelect } from './chunk-IWAIIBSW.js';
27
- export { Upload, collectUploadCommitActions, createUploadItem, useUploadDraft } from './chunk-W2NWOWZ3.js';
28
- import './chunk-CRERCLIZ.js';
29
- export { Cascader } from './chunk-55S5N667.js';
22
+ export { Cascader } from './chunk-33AJDSML.js';
30
23
  import './chunk-SMLKNECP.js';
31
- import './chunk-LMKUKCTN.js';
24
+ export { Toolbar, ToolbarGroup } from './chunk-5NIGHXT5.js';
25
+ export { Tabs, TabsContent, TabsList, TabsTrigger } from './chunk-V3N266PT.js';
26
+ import './chunk-HL3G4SVG.js';
27
+ import './chunk-B73NA66T.js';
28
+ import './chunk-WGWI7EGL.js';
29
+ export { Pagination } from './chunk-LEVFHRHU.js';
30
+ export { Steps } from './chunk-QD3YG56T.js';
32
31
  export { SearchInput } from './chunk-ZFBIKJSJ.js';
33
- import './chunk-I2CYVA7B.js';
32
+ import './chunk-LMKUKCTN.js';
33
+ import './chunk-NXF64JCT.js';
34
34
  import './chunk-3R3QVJCB.js';
35
35
  export { sonnerToast as toast } from './chunk-ES4Q3KGL.js';
36
36
  export { SkeletonDetail, SkeletonRows, SkeletonStat, SkeletonTable } from './chunk-2BR7KFCP.js';
37
37
  import './chunk-32WO3YLB.js';
38
- export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from './chunk-YVZPAN2W.js';
38
+ export { Alert, AlertActions, AlertContent, AlertDescription, AlertQueryError, AlertTitle } from './chunk-UVJE3FYT.js';
39
39
  export { formatBytes, formatCurrency, humanError, shortId } from './chunk-GDHDJAVB.js';
40
- export { AlertDialog, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from './chunk-7MXIPSYM.js';
40
+ export { AlertDialog, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from './chunk-Z652BSX7.js';
41
41
  import './chunk-BNXPDUO4.js';
42
42
  import './chunk-VU4GFGDG.js';
43
43
  export { Toaster } from './chunk-TO7URV7U.js';
44
- export { DataTable, Descriptions } from './chunk-DWYRIKVD.js';
44
+ export { DataTable, Descriptions } from './chunk-SSNPCHG6.js';
45
45
  import './chunk-DV52WNXO.js';
46
46
  export { EmptyState } from './chunk-YD7V2HGZ.js';
47
47
  import './chunk-BE6GJGKJ.js';
48
48
  export { Field } from './chunk-44YRPSZ7.js';
49
49
  export { Flex } from './chunk-INIIF7F7.js';
50
- import './chunk-M4PZNAMV.js';
51
- export { Badge } from './chunk-IZGLEPGW.js';
50
+ import './chunk-E6J7ZTDM.js';
51
+ export { Badge } from './chunk-XGXI52Z7.js';
52
52
  import './chunk-DY5C44UP.js';
53
53
  import './chunk-3KPEZ5CF.js';
54
54
  import './chunk-IJ5ALJGA.js';
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Interaction & visual variant prop types.
3
+ * @see docs/PROPS-VOCABULARY.md#interaction-variants
4
+ */
5
+ /** Button visual style. */
6
+ type ButtonVariantProp = "default" | "destructive" | "outline" | "dashed" | "secondary" | "ghost" | "link";
7
+ /** Corner shape — maps to the radius tokens (default = control/component radius). Shared by
8
+ * Button + Badge. `pill` = fully rounded (`--radius-pill`), `sharp` = square (`--radius-sharp`). */
9
+ type ShapeProp = "default" | "pill" | "sharp";
10
+ /** Text size — steps of the golden-ratio type scale (NEVER an arbitrary px). `sm` = base. */
11
+ type TextSizeProp = "2xs" | "xs" | "sm" | "md" | "lg" | "xl";
12
+ /** Text colour intent — maps to semantic foreground tokens (no raw palette). */
13
+ type TextToneProp = "default" | "muted" | "primary" | "success" | "warning" | "destructive" | "info";
14
+ /** Font weight — the system is 2-weight (400/500); `semibold` resolves to the 500 token, not 600. */
15
+ type FontWeightProp = "regular" | "medium" | "semibold";
16
+ /** Heading level — drives both the `--heading-h*` size token and the semantic `<h1..h4>` element. */
17
+ type HeadingLevelProp = 1 | 2 | 3 | 4;
18
+ /** Inline text alignment (logical, RTL-safe). */
19
+ type TextAlignProp = "start" | "center" | "end";
20
+ /** Badge visual style. */
21
+ type BadgeVariantProp = "default" | "secondary" | "outline" | "dashed";
22
+ /** Button size preset. */
23
+ type SizeProp = "xs" | "sm" | "md" | "lg";
24
+ /** Button size preset; icon-only sizes are a documented Button subset. */
25
+ type ButtonSizeProp = SizeProp | "default" | "icon" | "icon-xs" | "icon-sm" | "icon-lg";
26
+ /** Form layout — label position relative to its control (Ant-style). */
27
+ type FormLayoutProp = "vertical" | "horizontal" | "inline";
28
+ /** Responsive breakpoint name (mobile-first); used by `collapseBelow` etc. */
29
+ type BreakpointProp = "sm" | "md" | "lg" | "xl";
30
+ /** Dialog confirm button emphasis. */
31
+ type ConfirmVariantProp = "default" | "destructive";
32
+ /** Semantic color/status intent. */
33
+ type ToneProp = "default" | "success" | "warning" | "destructive" | "info" | "muted" | "neutral";
34
+ /** Inline Alert visual treatment. */
35
+ type AlertVariantProp = "default";
36
+ /** Sort direction for table columns. */
37
+ type SortDirectionProp = "asc" | "desc";
38
+ /** Table column text alignment. */
39
+ type ColumnAlignProp = "left" | "center" | "right";
40
+ /** Active sort state on DataTable. */
41
+ type SortStateProp = {
42
+ key: string;
43
+ direction: SortDirectionProp;
44
+ };
45
+
46
+ export type { AlertVariantProp as A, BadgeVariantProp as B, ColumnAlignProp as C, FontWeightProp as F, HeadingLevelProp as H, ShapeProp as S, TextAlignProp as T, BreakpointProp as a, ButtonSizeProp as b, ButtonVariantProp as c, ConfirmVariantProp as d, FormLayoutProp as e, SizeProp as f, SortDirectionProp as g, SortStateProp as h, TextSizeProp as i, TextToneProp as j, ToneProp as k };
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { c as DisabledProp, a as ClassNameProp, C as ChildrenProp, L as LabelProp } from './shared.prop-BvMSLFJ6.js';
3
- import { O as OnClearFiltersProp, H as HasActiveFiltersProp } from './data.prop-D4uDw_SW.js';
3
+ import { O as OnClearFiltersProp, H as HasActiveFiltersProp } from './data.prop-H9nROsUg.js';
4
4
 
5
5
  /** Navigation component prop types — @see docs/COMPONENTS.md#navigation */
6
6
 
@@ -1,10 +1,10 @@
1
1
  export { A as AppShellProp, P as PageContainerProp, d as PageInsetProp, e as SidebarItemProp, f as SidebarProductProp, g as SidebarProp, h as SidebarSectionProp, T as TopbarProductProp, i as TopbarProjectProp, j as TopbarProp } from '../../layout.prop-ChLFNGJ6.js';
2
- export { B as ButtonProp } from '../../general.prop-1GgJkf4b.js';
3
- export { C as CalendarProp, a as CascaderProp, b as CheckboxGroupProp, c as CheckboxProp, d as ChoiceOptionProp, e as ColorPickerProp, D as DatePickerProp, f as DateRangePickerProp, g as FormFieldProp, I as InputProp, R as RadioGroupProp, i as RadioProp, S as SearchInputProp, n as ShowCheckedStrategyProp, o as SliderProp, p as SwitchProp, T as TextareaProp, q as TimePickerProp, r as TransferItemProp, s as TransferProp, t as TreeFieldNamesProp, u as TreeOptionProp, v as TreeSelectProp, x as UploadFileItemProp, y as UploadProp, A as UploadVariantProp } from '../../data-entry.prop-DL7kUcJh.js';
4
- export { B as BadgeProp, D as DataTableProp, a as DescriptionsItemProp, b as DescriptionsProp, E as EmptyStateProp } from '../../data-display.prop-BOtnzI17.js';
5
- export { A as AlertActionsProp, a as AlertContentProp, b as AlertDescriptionProp, d as AlertProp, e as AlertQueryErrorProp, f as AlertTitleProp, S as SkeletonRowsProp } from '../../feedback.prop-CtrL24E1.js';
6
- export { D as DataStateProp, I as InfiniteQueryHelpers, a as InfiniteQueryStateProp, P as PrefetchLinkProp } from '../../query.prop-CyNxaCHe.js';
7
- export { P as PaginationProp, S as StepItemProp, a as StepStatusProp, b as StepsProp, T as TabItemProp, c as TabsProp } from '../../navigation.prop-Cc_Iu87S.js';
2
+ export { B as ButtonProp } from '../../general.prop-4ERae5Sj.js';
3
+ export { C as CalendarProp, a as CascaderProp, b as CheckboxGroupProp, c as CheckboxProp, d as ChoiceOptionProp, e as ColorPickerProp, D as DatePickerProp, f as DateRangePickerProp, g as FormFieldProp, I as InputProp, R as RadioGroupProp, i as RadioProp, S as SearchInputProp, n as ShowCheckedStrategyProp, o as SliderProp, p as SwitchProp, T as TextareaProp, q as TimePickerProp, r as TransferItemProp, s as TransferProp, t as TreeFieldNamesProp, u as TreeOptionProp, v as TreeSelectProp, x as UploadFileItemProp, y as UploadProp, A as UploadVariantProp } from '../../data-entry.prop-BGlwRXlJ.js';
4
+ export { B as BadgeProp, D as DataTableProp, a as DescriptionsItemProp, b as DescriptionsProp, E as EmptyStateProp } from '../../data-display.prop-BCC2zOTq.js';
5
+ export { A as AlertActionsProp, a as AlertContentProp, b as AlertDescriptionProp, d as AlertProp, e as AlertQueryErrorProp, f as AlertTitleProp, S as SkeletonRowsProp } from '../../feedback.prop-sEx89LTF.js';
6
+ export { D as DataStateProp, I as InfiniteQueryHelpers, a as InfiniteQueryStateProp, P as PrefetchLinkProp } from '../../query.prop-cp6fEgOD.js';
7
+ export { P as PaginationProp, S as StepItemProp, a as StepStatusProp, b as StepsProp, T as TabItemProp, c as TabsProp } from '../../navigation.prop-DMbjEig7.js';
8
8
  export { A as AppContextValue, a as AppProviderProp, b as AppSettingKind, c as AppSettingPickerProp } from '../../app.prop-CVY8V4ss.js';
9
9
  export { F as FieldErrorMessageProp, a as FormFieldControlProp, b as FormRootProp, U as UseZodFormOptionsProp, c as UseZodFormReturnProp, Z as ZodSchemaProp } from '../../form.prop-5cyL3bvT.js';
10
10
  import 'react';
@@ -12,13 +12,13 @@ import '../../shared.prop-BvMSLFJ6.js';
12
12
  import '../../content.prop-DrV_zDy-.js';
13
13
  import '../../layout.prop-CXvl2rVR.js';
14
14
  import '../../navigation.prop-CXDaVNaR.js';
15
- import '../../interaction.prop-R77MnAMZ.js';
15
+ import '../../interaction.prop-B44hePpl.js';
16
16
  import '@radix-ui/react-checkbox';
17
17
  import '@radix-ui/react-radio-group';
18
18
  import '@radix-ui/react-slider';
19
19
  import '@radix-ui/react-switch';
20
20
  import 'react-day-picker';
21
- import '../../data.prop-D4uDw_SW.js';
21
+ import '../../data.prop-H9nROsUg.js';
22
22
  import '@tanstack/react-query';
23
23
  import 'react-router-dom';
24
24
  import 'date-fns';
@@ -1,16 +1,16 @@
1
1
  export { A as AsChildProp, C as ChildrenProp, a as ClassNameProp, D as DefaultOpenProp, b as DefaultValueProp, c as DisabledProp, E as ErrorProp, H as HandlerProp, d as HelperProp, I as IdProp, L as LabelProp, N as NameProp, O as OnChangeProp, e as OnClickProp, f as OnOpenChangeProp, g as OnValueChangeProp, h as OpenProp, P as PendingProp, i as PlaceholderProp, R as RequiredProp, V as ValueProp, W as WidthProp } from '../shared.prop-BvMSLFJ6.js';
2
2
  export { A as ActionProp, a as ActionsProp, C as CancelLabelProp, b as ConfirmLabelProp, D as DescriptionProp, E as EmptyMessageProp, c as ExtraProp, F as FooterProp, I as IconProp, S as SubtitleProp, T as TitleProp } from '../content.prop-DrV_zDy-.js';
3
3
  export { D as DensityProp, G as GapProp, P as PageContainerVariantProp, a as PageDensityProp, T as TableDensityProp } from '../layout.prop-CXvl2rVR.js';
4
- export { A as AlertVariantProp, B as BreakpointProp, a as ButtonSizeProp, b as ButtonVariantProp, C as ColumnAlignProp, c as ConfirmVariantProp, F as FormLayoutProp, S as SizeProp, d as SortDirectionProp, e as SortStateProp, T as ToneProp } from '../interaction.prop-R77MnAMZ.js';
4
+ export { A as AlertVariantProp, B as BadgeVariantProp, a as BreakpointProp, b as ButtonSizeProp, c as ButtonVariantProp, C as ColumnAlignProp, d as ConfirmVariantProp, F as FontWeightProp, e as FormLayoutProp, H as HeadingLevelProp, S as ShapeProp, f as SizeProp, g as SortDirectionProp, h as SortStateProp, T as TextAlignProp, i as TextSizeProp, j as TextToneProp, k as ToneProp } from '../interaction.prop-B44hePpl.js';
5
5
  export { B as BreadcrumbItem, B as BreadcrumbItemProp, a as BreadcrumbProp } from '../navigation.prop-CXDaVNaR.js';
6
- export { C as ColumnDef, C as ColumnDefProp, G as GetRowIdProp, H as HasActiveFiltersProp, O as OnClearFiltersProp, a as OnRowClickProp, b as OnSearchChangeProp, c as OnSelectChangeProp, d as OnSortChangeProp, e as OnTableDensityChangeProp, S as SelectedIdsProp } from '../data.prop-D4uDw_SW.js';
6
+ export { C as ColumnDef, C as ColumnDefProp, G as GetRowIdProp, H as HasActiveFiltersProp, O as OnClearFiltersProp, a as OnRowClickProp, b as OnSearchChangeProp, c as OnSelectChangeProp, d as OnSortChangeProp, e as OnTableDensityChangeProp, S as SelectedIdsProp } from '../data.prop-H9nROsUg.js';
7
7
  export { A as AppShellProp, P as PageContainerProp, P as PageContainerProps, d as PageInsetProp, e as SidebarItemProp, f as SidebarProductProp, g as SidebarProp, h as SidebarSectionProp, T as TopbarProductProp, i as TopbarProjectProp, j as TopbarProp } from '../layout.prop-ChLFNGJ6.js';
8
- export { B as ButtonProp, B as ButtonProps } from '../general.prop-1GgJkf4b.js';
9
- export { C as CalendarProp, a as CascaderProp, b as CheckboxGroupProp, c as CheckboxProp, d as ChoiceOptionProp, e as ColorPickerProp, D as DatePickerProp, f as DateRangePickerProp, g as FormFieldProp, I as InputProp, R as RadioGroupProp, i as RadioProp, S as SearchInputProp, n as ShowCheckedStrategyProp, o as SliderProp, p as SwitchProp, T as TextareaProp, q as TimePickerProp, r as TransferItemProp, s as TransferProp, t as TreeFieldNamesProp, u as TreeOptionProp, v as TreeSelectProp, x as UploadFileItemProp, y as UploadProp, A as UploadVariantProp } from '../data-entry.prop-DL7kUcJh.js';
10
- export { B as BadgeProp, D as DataTableProp, a as DescriptionsItemProp, b as DescriptionsProp, E as EmptyStateProp } from '../data-display.prop-BOtnzI17.js';
11
- export { A as AlertActionsProp, a as AlertContentProp, b as AlertDescriptionProp, d as AlertProp, e as AlertQueryErrorProp, f as AlertTitleProp, S as SkeletonRowsProp } from '../feedback.prop-CtrL24E1.js';
12
- export { D as DataStateProp, I as InfiniteQueryHelpers, a as InfiniteQueryStateProp, P as PrefetchLinkProp } from '../query.prop-CyNxaCHe.js';
13
- export { P as PaginationProp, S as StepItemProp, a as StepStatusProp, b as StepsProp, T as TabItemProp, c as TabsProp } from '../navigation.prop-Cc_Iu87S.js';
8
+ export { B as ButtonProp, B as ButtonProps } from '../general.prop-4ERae5Sj.js';
9
+ export { C as CalendarProp, a as CascaderProp, b as CheckboxGroupProp, c as CheckboxProp, d as ChoiceOptionProp, e as ColorPickerProp, D as DatePickerProp, f as DateRangePickerProp, g as FormFieldProp, I as InputProp, R as RadioGroupProp, i as RadioProp, S as SearchInputProp, n as ShowCheckedStrategyProp, o as SliderProp, p as SwitchProp, T as TextareaProp, q as TimePickerProp, r as TransferItemProp, s as TransferProp, t as TreeFieldNamesProp, u as TreeOptionProp, v as TreeSelectProp, x as UploadFileItemProp, y as UploadProp, A as UploadVariantProp } from '../data-entry.prop-BGlwRXlJ.js';
10
+ export { B as BadgeProp, D as DataTableProp, a as DescriptionsItemProp, b as DescriptionsProp, E as EmptyStateProp } from '../data-display.prop-BCC2zOTq.js';
11
+ export { A as AlertActionsProp, a as AlertContentProp, b as AlertDescriptionProp, d as AlertProp, e as AlertQueryErrorProp, f as AlertTitleProp, S as SkeletonRowsProp } from '../feedback.prop-sEx89LTF.js';
12
+ export { D as DataStateProp, I as InfiniteQueryHelpers, a as InfiniteQueryStateProp, P as PrefetchLinkProp } from '../query.prop-cp6fEgOD.js';
13
+ export { P as PaginationProp, S as StepItemProp, a as StepStatusProp, b as StepsProp, T as TabItemProp, c as TabsProp } from '../navigation.prop-DMbjEig7.js';
14
14
  export { A as AppContextValue, a as AppProviderProp, b as AppSettingKind, c as AppSettingPickerProp } from '../app.prop-CVY8V4ss.js';
15
15
  export { F as FieldErrorMessageProp, a as FormFieldControlProp, b as FormRootProp, U as UseZodFormOptionsProp, c as UseZodFormReturnProp, Z as ZodSchemaProp } from '../form.prop-5cyL3bvT.js';
16
16
  export { COMPONENT_PROP_REGISTRY, ComponentPropName, PROP_ALIASES_FORBIDDEN, VOCABULARY_REGISTRY, VocabularyPropName } from './registry.js';
@@ -1,3 +1,3 @@
1
1
  import '../chunk-B775Y6BE.js';
2
2
  import '../chunk-ZT5UEUBO.js';
3
- export { COMPONENT_PROP_REGISTRY, PROP_ALIASES_FORBIDDEN, VOCABULARY_REGISTRY } from '../chunk-XTVUYEJD.js';
3
+ export { COMPONENT_PROP_REGISTRY, PROP_ALIASES_FORBIDDEN, VOCABULARY_REGISTRY } from '../chunk-Z37463ZK.js';
@@ -204,6 +204,41 @@ declare const VOCABULARY_REGISTRY: {
204
204
  readonly category: "interaction";
205
205
  readonly description: "Button size preset; includes documented icon-only subset";
206
206
  };
207
+ readonly BadgeVariantProp: {
208
+ readonly file: "vocabulary/interaction.prop.ts";
209
+ readonly category: "interaction";
210
+ readonly description: "Badge visual variant (default | secondary | outline | dashed)";
211
+ };
212
+ readonly ShapeProp: {
213
+ readonly file: "vocabulary/interaction.prop.ts";
214
+ readonly category: "interaction";
215
+ readonly description: "Corner shape default | pill | sharp — shared by Button + Badge (radius tokens)";
216
+ };
217
+ readonly TextSizeProp: {
218
+ readonly file: "vocabulary/interaction.prop.ts";
219
+ readonly category: "interaction";
220
+ readonly description: "Text size — golden-ratio type-scale steps (2xs…xl), never an arbitrary px";
221
+ };
222
+ readonly TextToneProp: {
223
+ readonly file: "vocabulary/interaction.prop.ts";
224
+ readonly category: "interaction";
225
+ readonly description: "Text colour intent — semantic foreground tokens";
226
+ };
227
+ readonly FontWeightProp: {
228
+ readonly file: "vocabulary/interaction.prop.ts";
229
+ readonly category: "interaction";
230
+ readonly description: "Font weight regular | medium | semibold (system 2-weight, 400/500)";
231
+ };
232
+ readonly HeadingLevelProp: {
233
+ readonly file: "vocabulary/interaction.prop.ts";
234
+ readonly category: "interaction";
235
+ readonly description: "Heading level 1-4 — sizes from --heading-h* and the semantic element";
236
+ };
237
+ readonly TextAlignProp: {
238
+ readonly file: "vocabulary/interaction.prop.ts";
239
+ readonly category: "interaction";
240
+ readonly description: "Inline text alignment start | center | end (logical, RTL-safe)";
241
+ };
207
242
  readonly SizeProp: {
208
243
  readonly file: "vocabulary/interaction.prop.ts";
209
244
  readonly category: "interaction";
@@ -436,7 +471,17 @@ declare const COMPONENT_PROP_REGISTRY: {
436
471
  readonly ButtonProp: {
437
472
  readonly group: "general";
438
473
  readonly file: "components/general.prop.ts";
439
- readonly vocabulary: readonly ["ButtonVariantProp", "SizeProp", "AsChildProp", "DisabledProp", "OnClickProp"];
474
+ readonly vocabulary: readonly ["ButtonVariantProp", "SizeProp", "ShapeProp", "AsChildProp", "DisabledProp", "OnClickProp"];
475
+ };
476
+ readonly TextProp: {
477
+ readonly group: "general";
478
+ readonly file: "components/general.prop.ts";
479
+ readonly vocabulary: readonly ["TextSizeProp", "TextToneProp", "FontWeightProp", "TextAlignProp", "ClassNameProp"];
480
+ };
481
+ readonly HeadingProp: {
482
+ readonly group: "general";
483
+ readonly file: "components/general.prop.ts";
484
+ readonly vocabulary: readonly ["HeadingLevelProp", "TextToneProp", "TextAlignProp", "ClassNameProp"];
440
485
  };
441
486
  readonly InputProp: {
442
487
  readonly group: "data-entry";
@@ -623,7 +668,7 @@ declare const COMPONENT_PROP_REGISTRY: {
623
668
  readonly BadgeProp: {
624
669
  readonly group: "data-display";
625
670
  readonly file: "components/data-display.prop.ts";
626
- readonly vocabulary: readonly ["ToneProp", "ChildrenProp", "ClassNameProp"];
671
+ readonly vocabulary: readonly ["BadgeVariantProp", "ShapeProp", "ToneProp", "ChildrenProp", "ClassNameProp"];
627
672
  };
628
673
  readonly DataTableProp: {
629
674
  readonly group: "data-display";
@@ -1 +1 @@
1
- export { COMPONENT_PROP_REGISTRY, PROP_ALIASES_FORBIDDEN, VOCABULARY_REGISTRY } from '../chunk-XTVUYEJD.js';
1
+ export { COMPONENT_PROP_REGISTRY, PROP_ALIASES_FORBIDDEN, VOCABULARY_REGISTRY } from '../chunk-Z37463ZK.js';
@@ -1,7 +1,7 @@
1
1
  export { A as AsChildProp, C as ChildrenProp, a as ClassNameProp, D as DefaultOpenProp, b as DefaultValueProp, c as DisabledProp, E as ErrorProp, H as HandlerProp, d as HelperProp, I as IdProp, L as LabelProp, N as NameProp, O as OnChangeProp, e as OnClickProp, f as OnOpenChangeProp, g as OnValueChangeProp, h as OpenProp, P as PendingProp, i as PlaceholderProp, R as RequiredProp, V as ValueProp, W as WidthProp } from '../../shared.prop-BvMSLFJ6.js';
2
2
  export { A as ActionProp, a as ActionsProp, C as CancelLabelProp, b as ConfirmLabelProp, D as DescriptionProp, E as EmptyMessageProp, c as ExtraProp, F as FooterProp, I as IconProp, S as SubtitleProp, T as TitleProp } from '../../content.prop-DrV_zDy-.js';
3
3
  export { D as DensityProp, G as GapProp, P as PageContainerVariantProp, a as PageDensityProp, T as TableDensityProp } from '../../layout.prop-CXvl2rVR.js';
4
- export { A as AlertVariantProp, B as BreakpointProp, a as ButtonSizeProp, b as ButtonVariantProp, C as ColumnAlignProp, c as ConfirmVariantProp, F as FormLayoutProp, S as SizeProp, d as SortDirectionProp, e as SortStateProp, T as ToneProp } from '../../interaction.prop-R77MnAMZ.js';
4
+ export { A as AlertVariantProp, B as BadgeVariantProp, a as BreakpointProp, b as ButtonSizeProp, c as ButtonVariantProp, C as ColumnAlignProp, d as ConfirmVariantProp, F as FontWeightProp, e as FormLayoutProp, H as HeadingLevelProp, S as ShapeProp, f as SizeProp, g as SortDirectionProp, h as SortStateProp, T as TextAlignProp, i as TextSizeProp, j as TextToneProp, k as ToneProp } from '../../interaction.prop-B44hePpl.js';
5
5
  export { B as BreadcrumbItemProp, a as BreadcrumbProp } from '../../navigation.prop-CXDaVNaR.js';
6
- export { C as ColumnDefProp, G as GetRowIdProp, H as HasActiveFiltersProp, O as OnClearFiltersProp, a as OnRowClickProp, b as OnSearchChangeProp, c as OnSelectChangeProp, d as OnSortChangeProp, e as OnTableDensityChangeProp, S as SelectedIdsProp } from '../../data.prop-D4uDw_SW.js';
6
+ export { C as ColumnDefProp, G as GetRowIdProp, H as HasActiveFiltersProp, O as OnClearFiltersProp, a as OnRowClickProp, b as OnSearchChangeProp, c as OnSelectChangeProp, d as OnSortChangeProp, e as OnTableDensityChangeProp, S as SelectedIdsProp } from '../../data.prop-H9nROsUg.js';
7
7
  import 'react';
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { UseQueryResult, UseInfiniteQueryResult, InfiniteData, QueryKey, UseMutationResult } from '@tanstack/react-query';
3
3
  import { LinkProps } from 'react-router-dom';
4
- import { B as ButtonProp } from './general.prop-1GgJkf4b.js';
4
+ import { B as ButtonProp } from './general.prop-4ERae5Sj.js';
5
5
  import { H as HandlerProp, a as ClassNameProp } from './shared.prop-BvMSLFJ6.js';
6
6
 
7
7
  /** Query / async lifecycle helpers — @see docs/COMPONENTS.md#query */
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { g as FormFieldProp, F as FieldProp } from './data-entry.prop-DL7kUcJh.js';
2
+ import { g as FormFieldProp, F as FieldProp } from './data-entry.prop-BGlwRXlJ.js';
3
3
  import * as React from 'react';
4
4
 
5
5
  declare function FormField({ id, label, required, helper, error, labelAddon, layout: layoutProp, labelWidth: labelWidthProp, controlWidth: controlWidthProp, colSpan, className, children, }: FormFieldProp): react_jsx_runtime.JSX.Element;
@@ -6,6 +6,10 @@
6
6
  [data-slot="badge"] {
7
7
  display: inline-flex;
8
8
  align-items: center;
9
+ /* Center on the text x-height when the badge sits INLINE with running text (an inline-flex box
10
+ * defaults to baseline → it rides high / "valign top" next to a label). Ignored in flex/grid
11
+ * containers, so table cells and Flex rows are unaffected. */
12
+ vertical-align: middle;
9
13
  gap: var(--badge-space-gap);
10
14
  padding: var(--badge-space-y) var(--badge-space-x);
11
15
  border-radius: var(--radius-md);
@@ -11,6 +11,16 @@
11
11
  --sheet-pad-y: var(--space-chrome-y);
12
12
  }
13
13
 
14
+ /* Sheet header/footer dividers appear ONLY when a SheetBody is present (mirrors the dialog rule) —
15
+ * a body-less sheet never shows a doubled header-bottom + footer-top line. */
16
+ [data-slot="sheet-content"]:has([data-slot="sheet-body"]) [data-slot="sheet-header"] {
17
+ border-bottom: 1px solid hsl(var(--border));
18
+ }
19
+
20
+ [data-slot="sheet-content"]:has([data-slot="sheet-body"]) [data-slot="sheet-footer"] {
21
+ border-top: 1px solid hsl(var(--border));
22
+ }
23
+
14
24
  .ui-dialog-overlay {
15
25
  position: fixed;
16
26
  inset: 0;
@@ -55,28 +65,20 @@
55
65
  scroll-padding-block: var(--space-1);
56
66
  }
57
67
 
58
- /* Header = full-bleed band with a bottom border + the shared chrome padding MIRRORS the footer so
59
- * the two are symmetric pinned bars (same as Sheet/Drawer). */
68
+ /* Header & footer are PLAIN stacked sections by default the dialog padding gives the inset and the
69
+ * content `gap` gives the header↔footer spacing. No border band here, so a simple confirm dialog
70
+ * (header + footer, NO body) never shows an internal divider or a doubled line + padding. */
60
71
  [data-slot="dialog-header"] {
61
72
  display: flex;
62
73
  flex-direction: column;
63
74
  gap: var(--space-stack-xs);
64
75
  text-align: start;
65
- margin-inline: calc(-1 * var(--dialog-space-x));
66
- margin-block-start: calc(-1 * var(--dialog-space-y));
67
- padding: var(--dialog-space-y) var(--dialog-space-x);
68
- border-bottom: 1px solid hsl(var(--border));
69
76
  }
70
77
 
71
- /* Footer = full-bleed band with a top border + the same chrome padding (mirror of the header). */
72
78
  [data-slot="dialog-footer"] {
73
79
  display: flex;
74
80
  flex-direction: column-reverse;
75
81
  gap: var(--space-inline-sm);
76
- margin-inline: calc(-1 * var(--dialog-space-x));
77
- margin-block-end: calc(-1 * var(--dialog-space-y));
78
- padding: var(--dialog-space-y) var(--dialog-space-x);
79
- border-top: 1px solid hsl(var(--border));
80
82
  }
81
83
 
82
84
  @media (min-width: 640px) {
@@ -86,6 +88,23 @@
86
88
  }
87
89
  }
88
90
 
91
+ /* Scrollable-body layout (Ant Modal): ONLY when a body is present do header & footer become
92
+ * full-bleed pinned bands with a divider, so the body scrolls between two fixed bars. Without a
93
+ * body the dividers (and their band padding) collapse — fixes the double-border + oversized gap. */
94
+ [data-slot="dialog-content"]:has([data-slot="dialog-body"]) [data-slot="dialog-header"] {
95
+ margin-inline: calc(-1 * var(--dialog-space-x));
96
+ margin-block-start: calc(-1 * var(--dialog-space-y));
97
+ padding: var(--dialog-space-y) var(--dialog-space-x);
98
+ border-bottom: 1px solid hsl(var(--border));
99
+ }
100
+
101
+ [data-slot="dialog-content"]:has([data-slot="dialog-body"]) [data-slot="dialog-footer"] {
102
+ margin-inline: calc(-1 * var(--dialog-space-x));
103
+ margin-block-end: calc(-1 * var(--dialog-space-y));
104
+ padding: var(--dialog-space-y) var(--dialog-space-x);
105
+ border-top: 1px solid hsl(var(--border));
106
+ }
107
+
89
108
  [data-slot="dialog-close"] {
90
109
  position: absolute;
91
110
  inset-inline-end: var(--dialog-close-space-offset);
@@ -30,6 +30,7 @@
30
30
  @import "./layout.css";
31
31
  @import "./control.css";
32
32
  @import "./card-layout.css";
33
+ @import "./text-layout.css";
33
34
  @import "./table-layout.css";
34
35
  @import "./dialog-layout.css";
35
36
  @import "./alert-layout.css";