@godxjp/ui 12.1.0 → 13.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 (156) hide show
  1. package/dist/app/index.d.ts +2 -2
  2. package/dist/app/index.js +4 -4
  3. package/dist/{app.prop-Cy6dJnU8.d.ts → app.prop-CVY8V4ss.d.ts} +1 -1
  4. package/dist/{checkbox-DPFcnsMZ.d.ts → checkbox-CwfNgQ9d.d.ts} +1 -1
  5. package/dist/{chunk-COD66MFF.js → chunk-2BR7KFCP.js} +1 -1
  6. package/dist/chunk-2H65B4JA.js +1 -0
  7. package/dist/{chunk-HTEL5DQI.js → chunk-3R3QVJCB.js} +1 -1
  8. package/dist/{chunk-FK2JDABO.js → chunk-55S5N667.js} +4 -2
  9. package/dist/{chunk-6WSWK7TU.js → chunk-572FHZ3M.js} +2 -2
  10. package/dist/{chunk-YGD4CCQC.js → chunk-5KK3KJ6L.js} +3 -3
  11. package/dist/chunk-76S3TQFH.js +109 -0
  12. package/dist/{chunk-WBUUCU7R.js → chunk-AKFR72DQ.js} +4 -4
  13. package/dist/{chunk-IBK5D2Q6.js → chunk-B4K4BXEF.js} +3 -2
  14. package/dist/{chunk-VOHTRR5X.js → chunk-BNXPDUO4.js} +1 -1
  15. package/dist/chunk-C3PKEV6S.js +22 -0
  16. package/dist/{chunk-MMFIL33F.js → chunk-C6OEAQTO.js} +1 -1
  17. package/dist/{chunk-ZM4SMKEI.js → chunk-DEUHS5A2.js} +2 -19
  18. package/dist/chunk-ES4Q3KGL.js +1 -0
  19. package/dist/{chunk-XVD5SLDL.js → chunk-FJBVDJGL.js} +56 -3
  20. package/dist/{chunk-FK5QEFVY.js → chunk-GDHDJAVB.js} +1 -1
  21. package/dist/{chunk-TXRYSMOD.js → chunk-H2TX3OPW.js} +1 -1
  22. package/dist/{chunk-EOTOCNT7.js → chunk-HCCID4YY.js} +1 -1
  23. package/dist/{chunk-4MMIMZMK.js → chunk-IJ5ALJGA.js} +1 -1
  24. package/dist/{chunk-PO5ISUFA.js → chunk-IWAIIBSW.js} +4 -2
  25. package/dist/{chunk-ASMTSQWA.js → chunk-IYLJQVKV.js} +10 -7
  26. package/dist/{chunk-UDEPO3UF.js → chunk-IZGLEPGW.js} +2 -2
  27. package/dist/{chunk-3ELRYXJK.js → chunk-JEIUEOTJ.js} +9 -3
  28. package/dist/{chunk-FTOG7D4T.js → chunk-KQ36FDEE.js} +1 -1
  29. package/dist/{chunk-WJNR3RAG.js → chunk-MTJHEQ46.js} +4 -4
  30. package/dist/{chunk-JSQOCVM6.js → chunk-NVNDO3FI.js} +2 -2
  31. package/dist/{chunk-FOANNF6Z.js → chunk-QD3YG56T.js} +2 -2
  32. package/dist/{chunk-2TYRT5XH.js → chunk-RX2F2U6D.js} +5 -5
  33. package/dist/{chunk-SIUIIIQW.js → chunk-SISAM4JZ.js} +3 -3
  34. package/dist/{chunk-MXEVP5S2.js → chunk-VNQ2NW22.js} +5 -5
  35. package/dist/chunk-VU4GFGDG.js +12 -0
  36. package/dist/{chunk-7HF56YHC.js → chunk-WIRQNCCP.js} +3 -3
  37. package/dist/{chunk-LCQFYL44.js → chunk-WNOX32KG.js} +59 -5
  38. package/dist/{chunk-N6ELT7KB.js → chunk-XTVUYEJD.js} +30 -2
  39. package/dist/chunk-XUEDRPWF.js +177 -0
  40. package/dist/{chunk-BCBK4FLV.js → chunk-XZXE5KVV.js} +2 -2
  41. package/dist/{chunk-2JCSS6B4.js → chunk-YVZPAN2W.js} +2 -2
  42. package/dist/{chunk-L2MEN2VK.js → chunk-ZPHIXXTK.js} +2 -2
  43. package/dist/components/admin/index.d.ts +14 -15
  44. package/dist/components/admin/index.js +26 -24
  45. package/dist/components/data-display/badge.d.ts +1 -1
  46. package/dist/components/data-display/badge.js +4 -4
  47. package/dist/components/data-display/carousel.d.ts +12 -1
  48. package/dist/components/data-display/carousel.js +3 -3
  49. package/dist/components/data-display/index.d.ts +6 -6
  50. package/dist/components/data-display/index.js +8 -8
  51. package/dist/components/data-display/table.js +2 -2
  52. package/dist/components/data-entry/calendar.d.ts +6 -4
  53. package/dist/components/data-entry/calendar.js +2 -2
  54. package/dist/components/data-entry/cascader.d.ts +6 -4
  55. package/dist/components/data-entry/cascader.js +5 -5
  56. package/dist/components/data-entry/checkbox.d.ts +7 -5
  57. package/dist/components/data-entry/color-picker.d.ts +6 -4
  58. package/dist/components/data-entry/color-picker.js +5 -5
  59. package/dist/components/data-entry/command.js +2 -2
  60. package/dist/components/data-entry/date-picker.d.ts +6 -4
  61. package/dist/components/data-entry/date-picker.js +6 -6
  62. package/dist/components/data-entry/date-range-picker.d.ts +6 -4
  63. package/dist/components/data-entry/date-range-picker.js +6 -6
  64. package/dist/components/data-entry/index.d.ts +38 -9
  65. package/dist/components/data-entry/index.js +24 -22
  66. package/dist/components/data-entry/input.js +1 -1
  67. package/dist/components/data-entry/radio.d.ts +6 -4
  68. package/dist/components/data-entry/select.d.ts +6 -4
  69. package/dist/components/data-entry/select.js +6 -6
  70. package/dist/components/data-entry/slider.d.ts +6 -4
  71. package/dist/components/data-entry/switch.d.ts +6 -4
  72. package/dist/components/data-entry/textarea.js +2 -2
  73. package/dist/components/data-entry/time-input.js +2 -2
  74. package/dist/components/data-entry/time-picker.d.ts +6 -4
  75. package/dist/components/data-entry/time-picker.js +4 -4
  76. package/dist/components/data-entry/transfer.d.ts +7 -5
  77. package/dist/components/data-entry/transfer.js +5 -5
  78. package/dist/components/data-entry/tree-select.d.ts +6 -4
  79. package/dist/components/data-entry/tree-select.js +5 -5
  80. package/dist/components/data-entry/upload.d.ts +7 -5
  81. package/dist/components/data-entry/upload.js +8 -7
  82. package/dist/components/data-grid/index.js +8 -8
  83. package/dist/components/feedback/alert.d.ts +4 -4
  84. package/dist/components/feedback/alert.js +4 -4
  85. package/dist/components/feedback/dialog.d.ts +19 -5
  86. package/dist/components/feedback/dialog.js +5 -4
  87. package/dist/components/feedback/index.d.ts +17 -26
  88. package/dist/components/feedback/index.js +12 -11
  89. package/dist/components/feedback/sheet.d.ts +21 -2
  90. package/dist/components/feedback/sheet.js +2 -1
  91. package/dist/components/general/button.d.ts +3 -3
  92. package/dist/components/general/index.d.ts +3 -3
  93. package/dist/components/layout/index.d.ts +6 -6
  94. package/dist/components/layout/index.js +4 -3
  95. package/dist/components/navigation/index.d.ts +8 -8
  96. package/dist/components/navigation/index.js +9 -9
  97. package/dist/components/navigation/pagination.d.ts +4 -4
  98. package/dist/components/navigation/pagination.js +7 -7
  99. package/dist/components/navigation/steps.d.ts +5 -5
  100. package/dist/components/navigation/steps.js +4 -4
  101. package/dist/components/query/index.d.ts +4 -4
  102. package/dist/components/query/index.js +4 -4
  103. package/dist/components/ui/index.d.ts +15 -13
  104. package/dist/components/ui/index.js +24 -23
  105. package/dist/{data-display.prop-Cf2p9QC4.d.ts → data-display.prop-BOtnzI17.d.ts} +3 -3
  106. package/dist/{data-entry.prop-6J0o45se.d.ts → data-entry.prop-BGxD81Lf.d.ts} +30 -3
  107. package/dist/{data-table-B_q7j992.d.ts → data-table-DO-gU4wJ.d.ts} +3 -3
  108. package/dist/{data.prop-DMYMNl6L.d.ts → data.prop-D4uDw_SW.d.ts} +1 -1
  109. package/dist/{feedback.prop-Nc9Aa8SV.d.ts → feedback.prop-CtrL24E1.d.ts} +2 -2
  110. package/dist/{filter-bar-B07JSxME.d.ts → filter-bar-tEwfKthz.d.ts} +1 -1
  111. package/dist/{flex-DXtIALBh.d.ts → flex-88Ps6YCv.d.ts} +1 -1
  112. package/dist/form/index.d.ts +3 -3
  113. package/dist/form/index.js +2 -1
  114. package/dist/{form.prop-Bc6r6JJW.d.ts → form.prop-5cyL3bvT.d.ts} +1 -1
  115. package/dist/{general.prop-DoHDCRmL.d.ts → general.prop-1GgJkf4b.d.ts} +2 -2
  116. package/dist/i18n/index.d.ts +3 -1
  117. package/dist/i18n/index.js +2 -2
  118. package/dist/index.d.ts +14 -15
  119. package/dist/index.js +36 -34
  120. package/dist/{interaction.prop-DSFizzP6.d.ts → interaction.prop-R77MnAMZ.d.ts} +5 -1
  121. package/dist/{layout.prop-B1yQPUNZ.d.ts → layout.prop-ChLFNGJ6.d.ts} +2 -2
  122. package/dist/lib/datetime/index.js +1 -1
  123. package/dist/{navigation.prop-BKlxd-j7.d.ts → navigation.prop-CXDaVNaR.d.ts} +1 -1
  124. package/dist/{navigation.prop-Dumy196X.d.ts → navigation.prop-Cc_Iu87S.d.ts} +2 -2
  125. package/dist/props/components/index.d.ts +13 -13
  126. package/dist/props/index.d.ts +13 -13
  127. package/dist/props/index.js +1 -1
  128. package/dist/props/registry.d.ts +22 -2
  129. package/dist/props/registry.js +1 -1
  130. package/dist/props/vocabulary/index.d.ts +4 -4
  131. package/dist/{query.prop-Dog-EAfG.d.ts → query.prop-CyNxaCHe.d.ts} +2 -2
  132. package/dist/{search-input-BR4nAWiT.d.ts → search-input-BPtjUAa1.d.ts} +2 -2
  133. package/dist/{shared.prop-BsNSXeqD.d.ts → shared.prop-BvMSLFJ6.d.ts} +7 -1
  134. package/dist/styles/alert-layout.css +8 -8
  135. package/dist/styles/card-layout.css +301 -292
  136. package/dist/styles/control.css +8 -9
  137. package/dist/styles/data-display-layout.css +50 -5
  138. package/dist/styles/density.css +4 -0
  139. package/dist/styles/dialog-layout.css +35 -7
  140. package/dist/styles/form-layout.css +161 -0
  141. package/dist/styles/index.css +31 -3
  142. package/dist/styles/layout.css +1 -1
  143. package/dist/styles/navigation-layout.css +1 -1
  144. package/dist/styles/shell-layout.css +12 -12
  145. package/dist/tokens/components/card.css +1 -1
  146. package/dist/tokens/components/feedback.css +9 -1
  147. package/dist/tokens/foundation.css +74 -16
  148. package/dist/tokens/semantic/layout.css +29 -11
  149. package/package.json +1 -1
  150. package/dist/chunk-A6VFHPS6.js +0 -119
  151. package/dist/chunk-B3WX53JQ.js +0 -40
  152. package/dist/chunk-QSGW3ZWK.js +0 -45
  153. package/dist/chunk-WFUIE252.js +0 -61
  154. package/dist/styles/feedback-layout.css +0 -49
  155. package/dist/tooltip-Bf2KjRy8.d.ts +0 -14
  156. package/dist/use-toast-Dsw3yE2S.d.ts +0 -19
@@ -13,361 +13,370 @@
13
13
  *
14
14
  * Modifiers (set on components, never Tailwind p-* in app/story code):
15
15
  * data-banded · data-flush · data-tight · data-solo · data-separated
16
+ *
17
+ * LAYER: wrapped in `@layer components` (like every other *-layout.css). Unlayered card CSS used to
18
+ * BEAT Tailwind utilities, so a consumer `className="flex flex-row …"` on CardHeader was silently
19
+ * ignored (flex-direction stayed `column`) — the documented CardAction pairing broke. In the
20
+ * components layer, utilities win, so className overrides behave like every other component.
16
21
  */
17
22
 
18
- [data-slot="card"] {
19
- min-width: 0;
20
- border-color: hsl(var(--card-border));
21
- border-radius: var(--card-radius);
22
- background: hsl(var(--card-background));
23
- color: hsl(var(--card-foreground));
24
- overflow: hidden;
25
- }
26
-
27
- /* ── Surface variants — fill only; flat at rest (border, no shadow) ──── */
28
- [data-slot="card"][data-variant="muted"] {
29
- background: hsl(var(--secondary));
30
- }
23
+ @layer components {
24
+ [data-slot="card"] {
25
+ min-width: 0;
26
+ border-color: hsl(var(--card-border));
27
+ border-radius: var(--card-radius);
28
+ background: hsl(var(--card-background));
29
+ color: hsl(var(--card-foreground));
30
+ overflow: hidden;
31
+ }
31
32
 
32
- [data-slot="card"][data-variant="outline"] {
33
- background: transparent;
34
- }
33
+ /* ── Surface variants — fill only; flat at rest (border, no shadow) ──── */
34
+ [data-slot="card"][data-variant="muted"] {
35
+ background: hsl(var(--secondary));
36
+ }
35
37
 
36
- [data-slot="card"][data-variant="featured"] {
37
- border-color: hsl(var(--primary));
38
- box-shadow: 0 0 0 1px hsl(var(--primary));
39
- }
38
+ [data-slot="card"][data-variant="outline"] {
39
+ background: transparent;
40
+ }
40
41
 
41
- /* ── Density — override the shell inset/body tokens ──────────────────── */
42
- [data-slot="card"][data-density="tight"] {
43
- --card-space-inset: var(--space-3);
44
- --card-space-body-y: var(--space-3);
45
- }
42
+ [data-slot="card"][data-variant="featured"] {
43
+ border-color: hsl(var(--primary));
44
+ box-shadow: 0 0 0 1px hsl(var(--primary));
45
+ }
46
46
 
47
- [data-slot="card"][data-density="cozy"] {
48
- --card-space-inset: var(--space-5);
49
- --card-space-body-y: var(--space-5);
50
- }
47
+ /* ── Density — override the shell inset/body tokens ──────────────────── */
48
+ [data-slot="card"][data-density="tight"] {
49
+ --card-space-inset: var(--space-3);
50
+ --card-space-body-y: var(--space-3);
51
+ }
51
52
 
52
- /* ── Accent edge — 3px semantic left stripe, content kept on the shell ─ */
53
- [data-slot="card"][data-accent] {
54
- border-left-width: 3px;
55
- }
53
+ [data-slot="card"][data-density="cozy"] {
54
+ --card-space-inset: var(--space-5);
55
+ --card-space-body-y: var(--space-5);
56
+ }
56
57
 
57
- [data-slot="card"][data-accent="primary"] {
58
- border-left-color: hsl(var(--primary));
59
- }
58
+ /* ── Accent edge — 3px semantic left stripe, content kept on the shell ─ */
59
+ [data-slot="card"][data-accent] {
60
+ border-left-width: 3px;
61
+ }
60
62
 
61
- [data-slot="card"][data-accent="success"] {
62
- border-left-color: hsl(var(--success));
63
- }
63
+ [data-slot="card"][data-accent="primary"] {
64
+ border-left-color: hsl(var(--primary));
65
+ }
64
66
 
65
- [data-slot="card"][data-accent="warning"] {
66
- border-left-color: hsl(var(--warning));
67
- }
67
+ [data-slot="card"][data-accent="success"] {
68
+ border-left-color: hsl(var(--success));
69
+ }
68
70
 
69
- [data-slot="card"][data-accent="info"] {
70
- border-left-color: hsl(var(--info));
71
- }
71
+ [data-slot="card"][data-accent="warning"] {
72
+ border-left-color: hsl(var(--warning));
73
+ }
72
74
 
73
- [data-slot="card"][data-accent="attention"] {
74
- border-left-color: hsl(var(--attention));
75
- }
75
+ [data-slot="card"][data-accent="info"] {
76
+ border-left-color: hsl(var(--info));
77
+ }
76
78
 
77
- [data-slot="card"][data-accent="destructive"] {
78
- border-left-color: hsl(var(--destructive));
79
- }
79
+ [data-slot="card"][data-accent="attention"] {
80
+ border-left-color: hsl(var(--attention));
81
+ }
80
82
 
81
- [data-slot="card"][data-accent] > [data-slot="card-header"],
82
- [data-slot="card"][data-accent] > [data-slot="card-content"]:not([data-flush]),
83
- [data-slot="card"][data-accent] > [data-slot="card-footer"]:not([data-flush]) {
84
- padding-inline-start: calc(var(--card-space-inset) - 3px);
85
- }
83
+ [data-slot="card"][data-accent="destructive"] {
84
+ border-left-color: hsl(var(--destructive));
85
+ }
86
86
 
87
- /* ── Header ──────────────────────────────────────────────────────────── */
88
- [data-slot="card-header"] {
89
- display: flex;
90
- flex-direction: column;
91
- gap: var(--card-space-gap);
92
- padding-inline: var(--card-space-inset);
93
- }
87
+ [data-slot="card"][data-accent] > [data-slot="card-header"],
88
+ [data-slot="card"][data-accent] > [data-slot="card-content"]:not([data-flush]),
89
+ [data-slot="card"][data-accent] > [data-slot="card-footer"]:not([data-flush]) {
90
+ padding-inline-start: calc(var(--card-space-inset) - 3px);
91
+ }
94
92
 
95
- [data-slot="card-header"]:not([data-banded]) {
96
- padding-top: var(--card-space-inset);
97
- padding-bottom: 0;
98
- }
93
+ /* ── Header ──────────────────────────────────────────────────────────── */
94
+ [data-slot="card-header"] {
95
+ display: flex;
96
+ flex-direction: column;
97
+ gap: var(--card-space-gap);
98
+ padding-inline: var(--card-space-inset);
99
+ }
99
100
 
100
- .ui-card-header--banded {
101
- border-bottom: 1px solid hsl(var(--card-border));
102
- background-color: hsl(var(--card-header-background) / var(--card-header-background-alpha));
103
- }
101
+ [data-slot="card-header"]:not([data-banded]) {
102
+ padding-top: var(--card-space-inset);
103
+ padding-bottom: 0;
104
+ }
104
105
 
105
- [data-slot="card-header"][data-banded] {
106
- padding-inline: var(--card-space-inset);
107
- padding-block: var(--card-space-header-y);
108
- gap: var(--card-space-gap);
109
- }
106
+ .ui-card-header--banded {
107
+ border-bottom: 1px solid hsl(var(--card-border));
108
+ background-color: hsl(var(--card-header-background) / var(--card-header-background-alpha));
109
+ }
110
110
 
111
- [data-slot="card-title"] {
112
- font-size: var(--card-title-font-size);
113
- font-weight: var(--card-title-font-weight);
114
- letter-spacing: var(--letter-spacing-tight);
115
- line-height: var(--card-title-line-height);
116
- }
111
+ [data-slot="card-header"][data-banded] {
112
+ padding-inline: var(--card-space-inset);
113
+ padding-block: var(--card-space-header-y);
114
+ gap: var(--card-space-gap);
115
+ }
117
116
 
118
- [data-slot="card-description"] {
119
- color: hsl(var(--muted-foreground));
120
- font-size: var(--card-description-font-size);
121
- line-height: var(--card-description-line-height);
122
- }
117
+ [data-slot="card-title"] {
118
+ font-size: var(--card-title-font-size);
119
+ font-weight: var(--card-title-font-weight);
120
+ letter-spacing: var(--letter-spacing-tight);
121
+ line-height: var(--card-title-line-height);
122
+ }
123
123
 
124
- [data-slot="card-header"][data-banded]:has([data-slot="card-action"]) {
125
- flex-direction: row;
126
- flex-wrap: wrap;
127
- align-items: center;
128
- justify-content: space-between;
129
- gap: var(--space-inline-md);
130
- }
124
+ [data-slot="card-description"] {
125
+ color: hsl(var(--muted-foreground));
126
+ font-size: var(--card-description-font-size);
127
+ line-height: var(--card-description-line-height);
128
+ }
131
129
 
132
- [data-slot="card-header"][data-banded]:has([data-slot="card-description"]):not(
133
- :has([data-slot="card-action"])
134
- ) {
135
- flex-direction: column;
136
- align-items: stretch;
137
- }
130
+ [data-slot="card-header"][data-banded]:has([data-slot="card-action"]) {
131
+ flex-direction: row;
132
+ flex-wrap: wrap;
133
+ align-items: center;
134
+ justify-content: space-between;
135
+ gap: var(--space-inline-md);
136
+ }
138
137
 
139
- [data-slot="card-action"] {
140
- display: flex;
141
- flex-shrink: 0;
142
- align-items: center;
143
- gap: var(--space-inline-sm);
144
- margin-left: auto;
145
- }
138
+ [data-slot="card-header"][data-banded]:has([data-slot="card-description"]):not(
139
+ :has([data-slot="card-action"])
140
+ ) {
141
+ flex-direction: column;
142
+ align-items: stretch;
143
+ }
146
144
 
147
- [data-slot="card"]:has([data-slot="card-header"][data-banded]) {
148
- overflow: hidden;
149
- }
145
+ [data-slot="card-action"] {
146
+ display: flex;
147
+ flex-shrink: 0;
148
+ align-items: center;
149
+ gap: var(--space-inline-sm);
150
+ margin-left: auto;
151
+ }
150
152
 
151
- [data-slot="card"]:has([data-slot="card-header"][data-banded])
152
- [data-slot="card-content"]:not([data-tight]) {
153
- padding-top: var(--card-space-body-y);
154
- }
153
+ [data-slot="card"]:has([data-slot="card-header"][data-banded]) {
154
+ overflow: hidden;
155
+ }
155
156
 
156
- /* Flush / tight body — symmetric plain header band */
157
- [data-slot="card"]:has([data-slot="card-content"][data-tight]:not(:has([data-slot="tabs-list"])))
158
- [data-slot="card-header"]:not([data-banded]) {
159
- padding-top: var(--card-space-body-y);
160
- padding-bottom: var(--card-space-body-y);
161
- }
157
+ [data-slot="card"]:has([data-slot="card-header"][data-banded])
158
+ [data-slot="card-content"]:not([data-tight]) {
159
+ padding-top: var(--card-space-body-y);
160
+ }
162
161
 
163
- [data-slot="card"]:has([data-slot="card-content"][data-tight] [data-slot="tabs-list"])
164
- [data-slot="card-header"] {
165
- padding-bottom: var(--card-space-body-y);
166
- }
162
+ /* Flush / tight body — symmetric plain header band */
163
+ [data-slot="card"]:has([data-slot="card-content"][data-tight]:not(:has([data-slot="tabs-list"])))
164
+ [data-slot="card-header"]:not([data-banded]) {
165
+ padding-top: var(--card-space-body-y);
166
+ padding-bottom: var(--card-space-body-y);
167
+ }
167
168
 
168
- /* Toolbar header — title + CardAction, no description */
169
- [data-slot="card-header"]:has([data-slot="card-action"]):not(:has([data-slot="card-description"])) {
170
- flex-direction: row;
171
- flex-wrap: wrap;
172
- align-items: center;
173
- justify-content: space-between;
174
- gap: var(--space-inline-md);
175
- padding-top: var(--card-space-body-y);
176
- padding-bottom: var(--card-space-body-y);
177
- }
169
+ [data-slot="card"]:has([data-slot="card-content"][data-tight] [data-slot="tabs-list"])
170
+ [data-slot="card-header"] {
171
+ padding-bottom: var(--card-space-body-y);
172
+ }
178
173
 
179
- [data-slot="card"]:has(
180
- [data-slot="card-header"]:has([data-slot="card-action"]):not(
181
- :has([data-slot="card-description"])
182
- )
183
- )
184
- [data-slot="card-content"]:not([data-tight]) {
185
- padding-top: 0;
186
- }
174
+ /* Toolbar header — title + CardAction, no description */
175
+ [data-slot="card-header"]:has([data-slot="card-action"]):not(
176
+ :has([data-slot="card-description"])
177
+ ) {
178
+ flex-direction: row;
179
+ flex-wrap: wrap;
180
+ align-items: center;
181
+ justify-content: space-between;
182
+ gap: var(--space-inline-md);
183
+ padding-top: var(--card-space-body-y);
184
+ padding-bottom: var(--card-space-body-y);
185
+ }
187
186
 
188
- /* Header-only card — terminal slot owns bottom shell */
189
- [data-slot="card"]:not(:has([data-slot="card-content"], [data-slot="card-footer"]))
190
- [data-slot="card-header"] {
191
- padding-bottom: var(--card-space-inset);
192
- }
187
+ [data-slot="card"]:has(
188
+ [data-slot="card-header"]:has([data-slot="card-action"]):not(
189
+ :has([data-slot="card-description"])
190
+ )
191
+ )
192
+ [data-slot="card-content"]:not([data-tight]) {
193
+ padding-top: 0;
194
+ }
193
195
 
194
- /* Coverheader below media uses section top, not shell */
195
- .ui-card-cover {
196
- display: block;
197
- width: 100%;
198
- overflow: hidden;
199
- }
196
+ /* Header-only card terminal slot owns bottom shell */
197
+ [data-slot="card"]:not(:has([data-slot="card-content"], [data-slot="card-footer"]))
198
+ [data-slot="card-header"] {
199
+ padding-bottom: var(--card-space-inset);
200
+ }
200
201
 
201
- [data-slot="card"]:has([data-slot="card-cover"]) [data-slot="card-header"] {
202
- padding-top: var(--card-space-body-y);
203
- }
202
+ /* Cover — header below media uses section top, not shell */
203
+ .ui-card-cover {
204
+ display: block;
205
+ width: 100%;
206
+ overflow: hidden;
207
+ }
204
208
 
205
- /* ── Content ─────────────────────────────────────────────────────────── */
206
- [data-slot="card-content"] {
207
- padding-inline: var(--card-space-inset);
208
- padding-bottom: var(--card-space-inset);
209
- }
209
+ [data-slot="card"]:has([data-slot="card-cover"]) [data-slot="card-header"] {
210
+ padding-top: var(--card-space-body-y);
211
+ }
210
212
 
211
- [data-slot="card-content"]:not([data-tight]):not([data-solo]) {
212
- padding-top: var(--card-space-body-y);
213
- }
213
+ /* ── Content ─────────────────────────────────────────────────────────── */
214
+ [data-slot="card-content"] {
215
+ padding-inline: var(--card-space-inset);
216
+ padding-bottom: var(--card-space-inset);
217
+ }
214
218
 
215
- [data-slot="card-content"][data-solo] {
216
- padding-top: var(--card-space-inset);
217
- }
219
+ [data-slot="card-content"]:not([data-tight]):not([data-solo]) {
220
+ padding-top: var(--card-space-body-y);
221
+ }
218
222
 
219
- [data-slot="card-content"][data-flush] {
220
- padding-inline: 0;
221
- }
223
+ [data-slot="card-content"][data-solo] {
224
+ padding-top: var(--card-space-inset);
225
+ }
222
226
 
223
- [data-slot="card-content"][data-flush]:has(.ui-data-table-root) {
224
- padding-block: 0;
225
- }
227
+ [data-slot="card-content"][data-flush] {
228
+ padding-inline: 0;
229
+ }
226
230
 
227
- [data-slot="card-content"][data-tight] {
228
- padding-top: 0;
229
- }
231
+ [data-slot="card-content"][data-flush]:has(.ui-data-table-root) {
232
+ padding-block: 0;
233
+ }
230
234
 
231
- [data-slot="card"]:has([data-slot="card-footer"]) [data-slot="card-content"] {
232
- padding-bottom: var(--card-space-body-y);
233
- }
235
+ [data-slot="card-content"][data-tight] {
236
+ padding-top: 0;
237
+ }
234
238
 
235
- /* Tabs in card */
236
- [data-slot="card"]:has([data-slot="tabs-list"]) [data-slot="card-content"][data-tight] {
237
- padding-top: 0;
238
- padding-inline: 0;
239
- }
239
+ [data-slot="card"]:has([data-slot="card-footer"]) [data-slot="card-content"] {
240
+ padding-bottom: var(--card-space-body-y);
241
+ }
240
242
 
241
- [data-slot="card"] [data-slot="tabs-list"] {
242
- padding-inline: var(--card-space-inset);
243
- }
243
+ /* Tabs in card */
244
+ [data-slot="card"]:has([data-slot="tabs-list"]) [data-slot="card-content"][data-tight] {
245
+ padding-top: 0;
246
+ padding-inline: 0;
247
+ }
244
248
 
245
- [data-slot="card"] [data-slot="tabs-panel"] {
246
- margin-top: 0;
247
- padding: var(--card-space-body-y) var(--card-space-inset);
248
- }
249
+ [data-slot="card"] [data-slot="tabs-list"] {
250
+ padding-inline: var(--card-space-inset);
251
+ }
249
252
 
250
- /* ── Footer ──────────────────────────────────────────────────────────── */
251
- [data-slot="card-footer"] {
252
- display: flex;
253
- flex-wrap: wrap;
254
- align-items: center;
255
- gap: var(--space-inline-sm);
256
- padding-inline: var(--card-space-inset);
257
- }
253
+ [data-slot="card"] [data-slot="tabs-panel"] {
254
+ margin-top: 0;
255
+ padding: var(--card-space-body-y) var(--card-space-inset);
256
+ }
258
257
 
259
- @media (max-width: 639px) {
260
- [data-slot="card-footer"][data-separated]:not([data-flush]) {
261
- flex-direction: row;
258
+ /* ── Footer ──────────────────────────────────────────────────────────── */
259
+ [data-slot="card-footer"] {
260
+ display: flex;
262
261
  flex-wrap: wrap;
263
262
  align-items: center;
263
+ gap: var(--space-inline-sm);
264
+ padding-inline: var(--card-space-inset);
264
265
  }
265
- }
266
266
 
267
- [data-slot="card-footer"]:not([data-separated]) {
268
- padding-top: 0;
269
- padding-bottom: var(--card-space-inset);
270
- }
267
+ @media (max-width: 639px) {
268
+ [data-slot="card-footer"][data-separated]:not([data-flush]) {
269
+ flex-direction: row;
270
+ flex-wrap: wrap;
271
+ align-items: center;
272
+ }
273
+ }
271
274
 
272
- [data-slot="card-footer"][data-separated] {
273
- border-top: 1px solid hsl(var(--card-border));
274
- padding-block: var(--card-space-footer-y);
275
- justify-content: flex-end;
276
- }
275
+ [data-slot="card-footer"]:not([data-separated]) {
276
+ padding-top: 0;
277
+ padding-bottom: var(--card-space-inset);
278
+ }
277
279
 
278
- [data-slot="card-footer"][data-separated][data-flush] {
279
- padding-inline: 0;
280
- justify-content: stretch;
281
- }
280
+ [data-slot="card-footer"][data-separated] {
281
+ border-top: 1px solid hsl(var(--card-border));
282
+ padding-block: var(--card-space-footer-y);
283
+ justify-content: flex-end;
284
+ }
282
285
 
283
- /* ── Nested insets (table cells, grid cells — align to shell, not slot padding) ─ */
284
- .ui-card-inset-x {
285
- padding-inline: var(--card-space-inset);
286
- }
286
+ [data-slot="card-footer"][data-separated][data-flush] {
287
+ padding-inline: 0;
288
+ justify-content: stretch;
289
+ }
287
290
 
288
- .ui-card-inset {
289
- padding: var(--card-space-body-y);
290
- }
291
+ /* ── Nested insets (table cells, grid cells — align to shell, not slot padding) ─ */
292
+ .ui-card-inset-x {
293
+ padding-inline: var(--card-space-inset);
294
+ }
291
295
 
292
- .ui-card-inset-y {
293
- padding-block: var(--card-space-header-y);
294
- }
296
+ .ui-card-inset {
297
+ padding: var(--card-space-body-y);
298
+ }
295
299
 
296
- .ui-card-grid-cell {
297
- padding: var(--card-space-body-y);
298
- }
300
+ .ui-card-inset-y {
301
+ padding-block: var(--card-space-header-y);
302
+ }
299
303
 
300
- .ui-card-footer-action-y {
301
- padding-block: var(--card-space-footer-y);
302
- }
304
+ .ui-card-grid-cell {
305
+ padding: var(--card-space-body-y);
306
+ }
303
307
 
304
- /* ── StatCard — KPI tile aligned to dashboard design ─────────────── */
305
- [data-slot="card"][data-stat-card] {
306
- padding: var(--card-space-header-y) var(--card-space-inset);
307
- }
308
+ .ui-card-footer-action-y {
309
+ padding-block: var(--card-space-footer-y);
310
+ }
308
311
 
309
- [data-slot="card"][data-stat-card][data-stat-layout="inline"] {
310
- display: grid;
311
- grid-template-columns: minmax(0, 1fr) auto;
312
- align-items: center;
313
- column-gap: var(--space-inline-md);
314
- }
312
+ /* ── StatCard — KPI tile aligned to dashboard design ─────────────── */
313
+ [data-slot="card"][data-stat-card] {
314
+ padding: var(--card-space-header-y) var(--card-space-inset);
315
+ }
315
316
 
316
- [data-slot="stat-card-body"] {
317
- min-width: 0;
318
- }
317
+ [data-slot="card"][data-stat-card][data-stat-layout="inline"] {
318
+ display: grid;
319
+ grid-template-columns: minmax(0, 1fr) auto;
320
+ align-items: center;
321
+ column-gap: var(--space-inline-md);
322
+ }
319
323
 
320
- [data-slot="stat-card-label"] {
321
- display: flex;
322
- align-items: center;
323
- gap: var(--space-inline-xs);
324
- color: hsl(var(--muted-foreground));
325
- font-size: var(--stat-card-label-font-size);
326
- font-weight: var(--stat-card-label-font-weight);
327
- letter-spacing: var(--stat-card-label-letter-spacing);
328
- line-height: var(--line-height-normal);
329
- text-transform: uppercase;
330
- }
324
+ [data-slot="stat-card-body"] {
325
+ min-width: 0;
326
+ }
331
327
 
332
- [data-slot="stat-card-label"] svg {
333
- width: 0.875rem;
334
- height: 0.875rem;
335
- flex-shrink: 0;
336
- stroke-width: 1.6;
337
- }
328
+ [data-slot="stat-card-label"] {
329
+ display: flex;
330
+ align-items: center;
331
+ gap: var(--space-inline-xs);
332
+ color: hsl(var(--muted-foreground));
333
+ font-size: var(--stat-card-label-font-size);
334
+ font-weight: var(--stat-card-label-font-weight);
335
+ letter-spacing: var(--stat-card-label-letter-spacing);
336
+ line-height: var(--line-height-normal);
337
+ text-transform: uppercase;
338
+ }
338
339
 
339
- [data-slot="stat-card-value-row"] {
340
- display: flex;
341
- align-items: baseline;
342
- gap: var(--space-inline-sm);
343
- margin-top: var(--stat-card-gap);
344
- }
340
+ [data-slot="stat-card-label"] svg {
341
+ width: 0.875rem;
342
+ height: 0.875rem;
343
+ flex-shrink: 0;
344
+ stroke-width: 1.6;
345
+ }
345
346
 
346
- [data-slot="card"][data-stat-align="end"] [data-slot="stat-card-value-row"],
347
- [data-slot="card"][data-stat-layout="inline"] [data-slot="stat-card-value-row"] {
348
- justify-content: flex-end;
349
- text-align: right;
350
- }
347
+ [data-slot="stat-card-value-row"] {
348
+ display: flex;
349
+ align-items: baseline;
350
+ gap: var(--space-inline-sm);
351
+ margin-top: var(--stat-card-gap);
352
+ }
351
353
 
352
- [data-slot="stat-card-value"] {
353
- font-size: var(--stat-card-value-font-size);
354
- font-weight: var(--stat-card-value-font-weight);
355
- letter-spacing: var(--letter-spacing-tight);
356
- line-height: var(--stat-card-value-line-height);
357
- font-variant-numeric: tabular-nums;
358
- }
354
+ [data-slot="card"][data-stat-align="end"] [data-slot="stat-card-value-row"],
355
+ [data-slot="card"][data-stat-layout="inline"] [data-slot="stat-card-value-row"] {
356
+ justify-content: flex-end;
357
+ text-align: right;
358
+ }
359
359
 
360
- [data-slot="stat-card-delta"] {
361
- color: hsl(var(--muted-foreground));
362
- font-size: var(--font-size-xs);
363
- font-weight: var(--font-weight-medium);
364
- line-height: var(--line-height-normal);
365
- font-variant-numeric: tabular-nums;
366
- }
360
+ [data-slot="stat-card-value"] {
361
+ font-size: var(--stat-card-value-font-size);
362
+ font-weight: var(--stat-card-value-font-weight);
363
+ letter-spacing: var(--letter-spacing-tight);
364
+ line-height: var(--stat-card-value-line-height);
365
+ font-variant-numeric: tabular-nums;
366
+ }
367
+
368
+ [data-slot="stat-card-delta"] {
369
+ color: hsl(var(--muted-foreground));
370
+ font-size: var(--font-size-xs);
371
+ font-weight: var(--font-weight-medium);
372
+ line-height: var(--line-height-normal);
373
+ font-variant-numeric: tabular-nums;
374
+ }
367
375
 
368
- [data-slot="stat-card-hint"] {
369
- margin-top: var(--stat-card-gap);
370
- color: hsl(var(--muted-foreground));
371
- font-size: var(--stat-card-hint-font-size);
372
- line-height: var(--line-height-normal);
376
+ [data-slot="stat-card-hint"] {
377
+ margin-top: var(--stat-card-gap);
378
+ color: hsl(var(--muted-foreground));
379
+ font-size: var(--stat-card-hint-font-size);
380
+ line-height: var(--line-height-normal);
381
+ }
373
382
  }