@godxjp/ui 12.1.0 → 13.1.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.
- package/dist/app/index.d.ts +2 -2
- package/dist/app/index.js +4 -4
- package/dist/{app.prop-Cy6dJnU8.d.ts → app.prop-CVY8V4ss.d.ts} +1 -1
- package/dist/{checkbox-DPFcnsMZ.d.ts → checkbox-shzpQ_Xo.d.ts} +1 -1
- package/dist/{chunk-COD66MFF.js → chunk-2BR7KFCP.js} +1 -1
- package/dist/chunk-2H65B4JA.js +1 -0
- package/dist/{chunk-JSQOCVM6.js → chunk-2M57K2VW.js} +2 -2
- package/dist/{chunk-HTEL5DQI.js → chunk-3R3QVJCB.js} +1 -1
- package/dist/{chunk-FK2JDABO.js → chunk-55S5N667.js} +4 -2
- package/dist/{chunk-YGD4CCQC.js → chunk-5KK3KJ6L.js} +3 -3
- package/dist/chunk-76S3TQFH.js +109 -0
- package/dist/{chunk-6WSWK7TU.js → chunk-7HEFQDN5.js} +2 -2
- package/dist/{chunk-LCQFYL44.js → chunk-7MXIPSYM.js} +59 -5
- package/dist/{chunk-WBUUCU7R.js → chunk-AKFR72DQ.js} +4 -4
- package/dist/{chunk-IBK5D2Q6.js → chunk-B4K4BXEF.js} +3 -2
- package/dist/{chunk-VOHTRR5X.js → chunk-BNXPDUO4.js} +1 -1
- package/dist/chunk-C3PKEV6S.js +22 -0
- package/dist/{chunk-MMFIL33F.js → chunk-C6OEAQTO.js} +1 -1
- package/dist/{chunk-ASMTSQWA.js → chunk-DWYRIKVD.js} +11 -8
- package/dist/chunk-ES4Q3KGL.js +1 -0
- package/dist/{chunk-XVD5SLDL.js → chunk-FJBVDJGL.js} +56 -3
- package/dist/{chunk-FK5QEFVY.js → chunk-GDHDJAVB.js} +1 -1
- package/dist/{chunk-TXRYSMOD.js → chunk-H2TX3OPW.js} +1 -1
- package/dist/{chunk-EOTOCNT7.js → chunk-HCCID4YY.js} +1 -1
- package/dist/{chunk-2TYRT5XH.js → chunk-I2CYVA7B.js} +31 -18
- package/dist/{chunk-4MMIMZMK.js → chunk-IJ5ALJGA.js} +1 -1
- package/dist/{chunk-PO5ISUFA.js → chunk-IWAIIBSW.js} +4 -2
- package/dist/{chunk-UDEPO3UF.js → chunk-IZGLEPGW.js} +2 -2
- package/dist/{chunk-3ELRYXJK.js → chunk-JEIUEOTJ.js} +9 -3
- package/dist/{chunk-FTOG7D4T.js → chunk-KQ36FDEE.js} +1 -1
- package/dist/{chunk-WJNR3RAG.js → chunk-MTJHEQ46.js} +4 -4
- package/dist/{chunk-ZM4SMKEI.js → chunk-QATON677.js} +3 -20
- package/dist/{chunk-FOANNF6Z.js → chunk-QD3YG56T.js} +2 -2
- package/dist/{chunk-SIUIIIQW.js → chunk-SISAM4JZ.js} +3 -3
- package/dist/chunk-VU4GFGDG.js +12 -0
- package/dist/{chunk-MXEVP5S2.js → chunk-W2NWOWZ3.js} +5 -5
- package/dist/{chunk-7HF56YHC.js → chunk-X4J55OS5.js} +3 -3
- package/dist/{chunk-N6ELT7KB.js → chunk-XTVUYEJD.js} +30 -2
- package/dist/chunk-XUEDRPWF.js +177 -0
- package/dist/{chunk-2JCSS6B4.js → chunk-YVZPAN2W.js} +2 -2
- package/dist/{chunk-BCBK4FLV.js → chunk-ZFBIKJSJ.js} +2 -2
- package/dist/{chunk-L2MEN2VK.js → chunk-ZPHIXXTK.js} +2 -2
- package/dist/components/admin/index.d.ts +14 -15
- package/dist/components/admin/index.js +30 -28
- package/dist/components/data-display/badge.d.ts +1 -1
- package/dist/components/data-display/badge.js +4 -4
- package/dist/components/data-display/card.d.ts +2 -2
- package/dist/components/data-display/carousel.d.ts +12 -1
- package/dist/components/data-display/carousel.js +3 -3
- package/dist/components/data-display/index.d.ts +6 -6
- package/dist/components/data-display/index.js +9 -9
- package/dist/components/data-display/table.js +2 -2
- package/dist/components/data-entry/calendar.d.ts +6 -4
- package/dist/components/data-entry/calendar.js +2 -2
- package/dist/components/data-entry/cascader.d.ts +6 -4
- package/dist/components/data-entry/cascader.js +5 -5
- package/dist/components/data-entry/checkbox.d.ts +7 -5
- package/dist/components/data-entry/color-picker.d.ts +6 -4
- package/dist/components/data-entry/color-picker.js +5 -5
- package/dist/components/data-entry/command.js +2 -2
- package/dist/components/data-entry/date-picker.d.ts +6 -4
- package/dist/components/data-entry/date-picker.js +6 -6
- package/dist/components/data-entry/date-range-picker.d.ts +6 -4
- package/dist/components/data-entry/date-range-picker.js +6 -6
- package/dist/components/data-entry/index.d.ts +38 -9
- package/dist/components/data-entry/index.js +24 -22
- package/dist/components/data-entry/input.js +1 -1
- package/dist/components/data-entry/radio.d.ts +6 -4
- package/dist/components/data-entry/select.d.ts +6 -4
- package/dist/components/data-entry/select.js +6 -6
- package/dist/components/data-entry/slider.d.ts +6 -4
- package/dist/components/data-entry/switch.d.ts +6 -4
- package/dist/components/data-entry/textarea.js +2 -2
- package/dist/components/data-entry/time-input.js +2 -2
- package/dist/components/data-entry/time-picker.d.ts +6 -4
- package/dist/components/data-entry/time-picker.js +4 -4
- package/dist/components/data-entry/transfer.d.ts +7 -5
- package/dist/components/data-entry/transfer.js +5 -5
- package/dist/components/data-entry/tree-select.d.ts +6 -4
- package/dist/components/data-entry/tree-select.js +5 -5
- package/dist/components/data-entry/upload.d.ts +7 -5
- package/dist/components/data-entry/upload.js +8 -7
- package/dist/components/data-grid/index.js +9 -9
- package/dist/components/feedback/alert.d.ts +4 -4
- package/dist/components/feedback/alert.js +4 -4
- package/dist/components/feedback/dialog.d.ts +19 -5
- package/dist/components/feedback/dialog.js +5 -4
- package/dist/components/feedback/index.d.ts +17 -26
- package/dist/components/feedback/index.js +13 -12
- package/dist/components/feedback/sheet.d.ts +21 -2
- package/dist/components/feedback/sheet.js +2 -1
- package/dist/components/general/button.d.ts +3 -3
- package/dist/components/general/index.d.ts +3 -3
- package/dist/components/layout/index.d.ts +6 -6
- package/dist/components/layout/index.js +5 -4
- package/dist/components/navigation/index.d.ts +8 -8
- package/dist/components/navigation/index.js +9 -9
- package/dist/components/navigation/pagination.d.ts +4 -4
- package/dist/components/navigation/pagination.js +7 -7
- package/dist/components/navigation/steps.d.ts +5 -5
- package/dist/components/navigation/steps.js +4 -4
- package/dist/components/query/index.d.ts +4 -4
- package/dist/components/query/index.js +4 -4
- package/dist/components/ui/index.d.ts +15 -13
- package/dist/components/ui/index.js +27 -26
- package/dist/{data-display.prop-Cf2p9QC4.d.ts → data-display.prop-BOtnzI17.d.ts} +3 -3
- package/dist/{data-entry.prop-6J0o45se.d.ts → data-entry.prop-DL7kUcJh.d.ts} +32 -3
- package/dist/{data-table-B_q7j992.d.ts → data-table-DO-gU4wJ.d.ts} +3 -3
- package/dist/{data.prop-DMYMNl6L.d.ts → data.prop-D4uDw_SW.d.ts} +1 -1
- package/dist/{feedback.prop-Nc9Aa8SV.d.ts → feedback.prop-CtrL24E1.d.ts} +2 -2
- package/dist/{filter-bar-B07JSxME.d.ts → filter-bar-tEwfKthz.d.ts} +1 -1
- package/dist/{flex-DXtIALBh.d.ts → flex-88Ps6YCv.d.ts} +1 -1
- package/dist/form/index.d.ts +3 -3
- package/dist/form/index.js +2 -1
- package/dist/{form.prop-Bc6r6JJW.d.ts → form.prop-5cyL3bvT.d.ts} +1 -1
- package/dist/{general.prop-DoHDCRmL.d.ts → general.prop-1GgJkf4b.d.ts} +2 -2
- package/dist/i18n/index.d.ts +3 -1
- package/dist/i18n/index.js +2 -2
- package/dist/index.d.ts +14 -15
- package/dist/index.js +40 -38
- package/dist/{interaction.prop-DSFizzP6.d.ts → interaction.prop-R77MnAMZ.d.ts} +5 -1
- package/dist/{layout.prop-B1yQPUNZ.d.ts → layout.prop-ChLFNGJ6.d.ts} +2 -2
- package/dist/lib/datetime/index.js +1 -1
- package/dist/{navigation.prop-BKlxd-j7.d.ts → navigation.prop-CXDaVNaR.d.ts} +1 -1
- package/dist/{navigation.prop-Dumy196X.d.ts → navigation.prop-Cc_Iu87S.d.ts} +2 -2
- package/dist/props/components/index.d.ts +13 -13
- package/dist/props/index.d.ts +13 -13
- package/dist/props/index.js +1 -1
- package/dist/props/registry.d.ts +22 -2
- package/dist/props/registry.js +1 -1
- package/dist/props/vocabulary/index.d.ts +4 -4
- package/dist/{query.prop-Dog-EAfG.d.ts → query.prop-CyNxaCHe.d.ts} +2 -2
- package/dist/{search-input-BR4nAWiT.d.ts → search-input-CFUtVWQl.d.ts} +2 -2
- package/dist/{shared.prop-BsNSXeqD.d.ts → shared.prop-BvMSLFJ6.d.ts} +7 -1
- package/dist/styles/alert-layout.css +8 -8
- package/dist/styles/card-layout.css +301 -292
- package/dist/styles/control.css +8 -9
- package/dist/styles/data-display-layout.css +50 -5
- package/dist/styles/density.css +4 -0
- package/dist/styles/dialog-layout.css +35 -7
- package/dist/styles/form-layout.css +161 -0
- package/dist/styles/index.css +31 -3
- package/dist/styles/layout.css +1 -1
- package/dist/styles/navigation-layout.css +1 -1
- package/dist/styles/shell-layout.css +12 -12
- package/dist/tokens/components/card.css +1 -1
- package/dist/tokens/components/feedback.css +9 -1
- package/dist/tokens/foundation.css +74 -16
- package/dist/tokens/semantic/layout.css +29 -11
- package/package.json +1 -1
- package/dist/chunk-A6VFHPS6.js +0 -119
- package/dist/chunk-B3WX53JQ.js +0 -40
- package/dist/chunk-QSGW3ZWK.js +0 -45
- package/dist/chunk-WFUIE252.js +0 -61
- package/dist/styles/feedback-layout.css +0 -49
- package/dist/tooltip-Bf2KjRy8.d.ts +0 -14
- package/dist/use-toast-Dsw3yE2S.d.ts +0 -19
package/dist/styles/control.css
CHANGED
|
@@ -177,7 +177,6 @@
|
|
|
177
177
|
padding: 0;
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
|
|
181
180
|
.ui-control {
|
|
182
181
|
height: var(--control-height);
|
|
183
182
|
padding-left: var(--control-padding-x);
|
|
@@ -255,7 +254,7 @@
|
|
|
255
254
|
}
|
|
256
255
|
|
|
257
256
|
.ui-radio {
|
|
258
|
-
border-radius:
|
|
257
|
+
border-radius: var(--radius-pill);
|
|
259
258
|
}
|
|
260
259
|
|
|
261
260
|
.ui-checkbox:focus-visible,
|
|
@@ -305,7 +304,7 @@
|
|
|
305
304
|
cursor: pointer;
|
|
306
305
|
align-items: center;
|
|
307
306
|
border: 2px solid transparent;
|
|
308
|
-
border-radius:
|
|
307
|
+
border-radius: var(--radius-pill);
|
|
309
308
|
box-shadow: var(--shadow-sm);
|
|
310
309
|
transition-property: color, background-color, border-color, box-shadow;
|
|
311
310
|
transition-duration: 150ms;
|
|
@@ -324,7 +323,7 @@
|
|
|
324
323
|
display: block;
|
|
325
324
|
width: var(--switch-thumb-size);
|
|
326
325
|
height: var(--switch-thumb-size);
|
|
327
|
-
border-radius:
|
|
326
|
+
border-radius: var(--radius-pill);
|
|
328
327
|
background: hsl(var(--background));
|
|
329
328
|
box-shadow: var(--shadow-lg);
|
|
330
329
|
transition: transform 150ms;
|
|
@@ -349,7 +348,7 @@
|
|
|
349
348
|
width: 100%;
|
|
350
349
|
flex-grow: 1;
|
|
351
350
|
overflow: hidden;
|
|
352
|
-
border-radius:
|
|
351
|
+
border-radius: var(--radius-pill);
|
|
353
352
|
background: hsl(var(--primary) / 0.2);
|
|
354
353
|
}
|
|
355
354
|
|
|
@@ -364,7 +363,7 @@
|
|
|
364
363
|
width: var(--slider-thumb-size);
|
|
365
364
|
height: var(--slider-thumb-size);
|
|
366
365
|
border: 1px solid hsl(var(--primary) / 0.5);
|
|
367
|
-
border-radius:
|
|
366
|
+
border-radius: var(--radius-pill);
|
|
368
367
|
background: hsl(var(--background));
|
|
369
368
|
box-shadow: var(--shadow-sm);
|
|
370
369
|
transition:
|
|
@@ -615,7 +614,7 @@
|
|
|
615
614
|
height: var(--control-height);
|
|
616
615
|
align-items: center;
|
|
617
616
|
justify-content: center;
|
|
618
|
-
font-size:
|
|
617
|
+
font-size: var(--font-size-sm);
|
|
619
618
|
border: 1px solid hsl(var(--border));
|
|
620
619
|
border-inline-start-width: 0;
|
|
621
620
|
background: hsl(var(--background));
|
|
@@ -732,7 +731,7 @@
|
|
|
732
731
|
display: inline-flex;
|
|
733
732
|
align-items: center;
|
|
734
733
|
gap: var(--space-1);
|
|
735
|
-
font-size:
|
|
734
|
+
font-size: var(--font-size-xs);
|
|
736
735
|
padding: 0.0625rem var(--space-2);
|
|
737
736
|
border-radius: var(--radius-sm);
|
|
738
737
|
background: hsl(var(--secondary));
|
|
@@ -766,6 +765,6 @@
|
|
|
766
765
|
border: 0;
|
|
767
766
|
outline: none;
|
|
768
767
|
background: transparent;
|
|
769
|
-
font-size:
|
|
768
|
+
font-size: var(--font-size-sm);
|
|
770
769
|
color: inherit;
|
|
771
770
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
align-items: center;
|
|
9
9
|
justify-content: center;
|
|
10
10
|
overflow: hidden;
|
|
11
|
-
border-radius:
|
|
11
|
+
border-radius: var(--radius-pill);
|
|
12
12
|
background: hsl(var(--muted));
|
|
13
13
|
color: hsl(var(--muted-foreground));
|
|
14
14
|
font-size: var(--font-size-sm);
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
.ui-progress-track {
|
|
40
40
|
height: 0.5rem;
|
|
41
41
|
overflow: hidden;
|
|
42
|
-
border-radius:
|
|
42
|
+
border-radius: var(--radius-pill);
|
|
43
43
|
background: hsl(var(--secondary));
|
|
44
44
|
}
|
|
45
45
|
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
width: 1.5rem;
|
|
150
150
|
height: 1.5rem;
|
|
151
151
|
place-items: center;
|
|
152
|
-
border-radius:
|
|
152
|
+
border-radius: var(--radius-pill);
|
|
153
153
|
background: hsl(var(--success));
|
|
154
154
|
color: hsl(var(--success-foreground));
|
|
155
155
|
}
|
|
@@ -239,7 +239,7 @@
|
|
|
239
239
|
}
|
|
240
240
|
.ui-accordion-content {
|
|
241
241
|
overflow: hidden;
|
|
242
|
-
font-size:
|
|
242
|
+
font-size: var(--font-size-sm);
|
|
243
243
|
}
|
|
244
244
|
.ui-accordion-content-inner {
|
|
245
245
|
padding-bottom: var(--space-4);
|
|
@@ -286,7 +286,7 @@
|
|
|
286
286
|
width: 2rem;
|
|
287
287
|
height: 2rem;
|
|
288
288
|
place-items: center;
|
|
289
|
-
border-radius:
|
|
289
|
+
border-radius: var(--radius-pill);
|
|
290
290
|
background: hsl(var(--background));
|
|
291
291
|
border: 1px solid hsl(var(--border));
|
|
292
292
|
color: hsl(var(--foreground));
|
|
@@ -313,6 +313,51 @@
|
|
|
313
313
|
height: 1rem;
|
|
314
314
|
}
|
|
315
315
|
|
|
316
|
+
/* Dot indicators — horizontal, centered row of round dots; the active one fills + widens. */
|
|
317
|
+
.ui-carousel-dots {
|
|
318
|
+
display: flex;
|
|
319
|
+
flex-wrap: wrap;
|
|
320
|
+
align-items: center;
|
|
321
|
+
justify-content: center;
|
|
322
|
+
gap: var(--space-2);
|
|
323
|
+
padding-top: var(--space-4);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
.ui-carousel-dot {
|
|
327
|
+
width: var(--space-2);
|
|
328
|
+
height: var(--space-2);
|
|
329
|
+
flex-shrink: 0;
|
|
330
|
+
border-radius: var(--radius-pill);
|
|
331
|
+
background: hsl(var(--border));
|
|
332
|
+
transition:
|
|
333
|
+
width 150ms ease,
|
|
334
|
+
background-color 150ms ease;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.ui-carousel-dot:hover {
|
|
338
|
+
background: hsl(var(--muted-foreground));
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.ui-carousel-dot[data-active] {
|
|
342
|
+
width: var(--space-5);
|
|
343
|
+
background: hsl(var(--primary));
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.ui-carousel-dot:focus-visible {
|
|
347
|
+
outline: 2px solid hsl(var(--ring));
|
|
348
|
+
outline-offset: 2px;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/* Vertical orientation — stack the dots into a column beside the track. */
|
|
352
|
+
.ui-carousel[data-orientation="vertical"] .ui-carousel-dots {
|
|
353
|
+
flex-direction: column;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
.ui-carousel[data-orientation="vertical"] .ui-carousel-dot[data-active] {
|
|
357
|
+
width: var(--space-2);
|
|
358
|
+
height: var(--space-5);
|
|
359
|
+
}
|
|
360
|
+
|
|
316
361
|
/* Vertical orientation (opts.axis === "y") — flips the track and the arrow positions. */
|
|
317
362
|
.ui-carousel[data-orientation="vertical"] .ui-carousel-content {
|
|
318
363
|
flex-direction: column;
|
package/dist/styles/density.css
CHANGED
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
--switch-thumb-size: var(--switch-thumb-size-compact);
|
|
16
16
|
--switch-thumb-translate: var(--switch-thumb-translate-compact);
|
|
17
17
|
--table-cell-padding-y: var(--space-1);
|
|
18
|
+
/* Tighter overlay/card chrome at compact density (12px vertical). */
|
|
19
|
+
--space-chrome-y: var(--space-3);
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
.ui-density-default {
|
|
@@ -39,5 +41,7 @@
|
|
|
39
41
|
--switch-thumb-size: var(--switch-thumb-size-comfortable);
|
|
40
42
|
--switch-thumb-translate: var(--switch-thumb-translate-comfortable);
|
|
41
43
|
--table-cell-padding-y: var(--space-2);
|
|
44
|
+
/* Roomier overlay/card chrome at comfortable density (24px vertical). */
|
|
45
|
+
--space-chrome-y: var(--space-6);
|
|
42
46
|
}
|
|
43
47
|
}
|
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
@layer components {
|
|
6
|
+
/* Sheet (side-panel, Radix Dialog) chrome padding — defaults to the shared global chrome tokens.
|
|
7
|
+
* A service overrides --space-chrome-* once (whole system) or --sheet-pad-* for the Sheet only.
|
|
8
|
+
* (Lives here because Sheet is Dialog-based and dialog-layout.css is in the main bundle.) */
|
|
9
|
+
[data-slot="sheet-content"] {
|
|
10
|
+
--sheet-pad-x: var(--space-chrome-x);
|
|
11
|
+
--sheet-pad-y: var(--space-chrome-y);
|
|
12
|
+
}
|
|
13
|
+
|
|
6
14
|
.ui-dialog-overlay {
|
|
7
15
|
position: fixed;
|
|
8
16
|
inset: 0;
|
|
@@ -23,6 +31,8 @@
|
|
|
23
31
|
border: 1px solid hsl(var(--border));
|
|
24
32
|
background-color: hsl(var(--background));
|
|
25
33
|
padding: var(--dialog-space-inset);
|
|
34
|
+
/* clip so the full-bleed header/footer bands round with the dialog corners (Ant Modal). */
|
|
35
|
+
overflow: hidden;
|
|
26
36
|
box-shadow: var(--shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
|
|
27
37
|
}
|
|
28
38
|
|
|
@@ -32,23 +42,41 @@
|
|
|
32
42
|
}
|
|
33
43
|
}
|
|
34
44
|
|
|
45
|
+
/* Ring-safe scrollable body for a tall dialog. Full-bleed inset (matches the dialog padding) so a
|
|
46
|
+
* full-width control's 3px focus ring never clips against the scroll container's computed
|
|
47
|
+
* overflow-x; padding-block keeps the ring visible at the scroll edges. Mirrors SheetBody. */
|
|
48
|
+
[data-slot="dialog-body"] {
|
|
49
|
+
min-height: 0;
|
|
50
|
+
max-height: min(60vh, 32rem);
|
|
51
|
+
overflow-y: auto;
|
|
52
|
+
margin-inline: calc(-1 * var(--dialog-space-x));
|
|
53
|
+
padding-inline: var(--dialog-space-x);
|
|
54
|
+
padding-block: var(--space-1);
|
|
55
|
+
scroll-padding-block: var(--space-1);
|
|
56
|
+
}
|
|
57
|
+
|
|
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). */
|
|
35
60
|
[data-slot="dialog-header"] {
|
|
36
61
|
display: flex;
|
|
37
62
|
flex-direction: column;
|
|
38
63
|
gap: var(--space-stack-xs);
|
|
39
|
-
text-align:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
text-align: left;
|
|
45
|
-
}
|
|
64
|
+
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));
|
|
46
69
|
}
|
|
47
70
|
|
|
71
|
+
/* Footer = full-bleed band with a top border + the same chrome padding (mirror of the header). */
|
|
48
72
|
[data-slot="dialog-footer"] {
|
|
49
73
|
display: flex;
|
|
50
74
|
flex-direction: column-reverse;
|
|
51
75
|
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));
|
|
52
80
|
}
|
|
53
81
|
|
|
54
82
|
@media (min-width: 640px) {
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* FORM — Ant-style layout. Vertical by default (label above control, LEFT-aligned). Horizontal lays
|
|
3
|
+
* the label beside the control from the `collapseBelow` breakpoint UP (mobile-first): below it the
|
|
4
|
+
* field collapses back to vertical. `--form-label-width` / `--form-control-width` come from the Form
|
|
5
|
+
* (or a per-field override). RTL-safe: logical inline axis throughout.
|
|
6
|
+
*
|
|
7
|
+
* IMPORTANT: label alignment (justify/text-align: end) applies ONLY in horizontal/inline mode — never
|
|
8
|
+
* to a vertical field (a right-aligned label above a full-width control is wrong, gh feedback).
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
@layer components {
|
|
12
|
+
.ui-form {
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
gap: var(--space-4);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* Vertical (default + collapsed state): label stacked above the control column, LEFT-aligned.
|
|
19
|
+
* Gap = the shared --field-label-gap so FormField matches Descriptions and every label-above stack. */
|
|
20
|
+
.ui-form-field {
|
|
21
|
+
display: grid;
|
|
22
|
+
gap: var(--field-label-gap);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.ui-form-field-label {
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
gap: var(--space-1);
|
|
29
|
+
min-width: 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.ui-form-field-control {
|
|
33
|
+
display: grid;
|
|
34
|
+
gap: var(--space-stack-xs); /* 4px between control and helper/error */
|
|
35
|
+
min-width: 0;
|
|
36
|
+
/* Cap the control width when a controlWidth is set; otherwise fill the column. */
|
|
37
|
+
max-inline-size: var(--form-control-width, none);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* ── Horizontal — label beside control. Each block is scoped to [data-layout=horizontal|inline]
|
|
41
|
+
* so it NEVER affects a vertical field. Applies from the collapse breakpoint up (mobile-first). */
|
|
42
|
+
|
|
43
|
+
/* collapseBelow=false → always horizontal (all widths). */
|
|
44
|
+
.ui-form-field[data-collapse-below="false"]:is(
|
|
45
|
+
[data-layout="horizontal"],
|
|
46
|
+
[data-layout="inline"]
|
|
47
|
+
) {
|
|
48
|
+
grid-template-columns: var(--form-label-width, max-content) minmax(0, 1fr);
|
|
49
|
+
align-items: start;
|
|
50
|
+
column-gap: var(--space-4);
|
|
51
|
+
row-gap: var(--space-stack-xs);
|
|
52
|
+
}
|
|
53
|
+
.ui-form-field[data-collapse-below="false"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
54
|
+
> .ui-form-field-label {
|
|
55
|
+
min-block-size: var(--control-height);
|
|
56
|
+
}
|
|
57
|
+
.ui-form-field[data-collapse-below="false"][data-label-align="end"]:is(
|
|
58
|
+
[data-layout="horizontal"],
|
|
59
|
+
[data-layout="inline"]
|
|
60
|
+
)
|
|
61
|
+
> .ui-form-field-label {
|
|
62
|
+
justify-content: flex-end;
|
|
63
|
+
text-align: end;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@media (min-width: 640px) {
|
|
67
|
+
.ui-form-field[data-collapse-below="sm"]:is(
|
|
68
|
+
[data-layout="horizontal"],
|
|
69
|
+
[data-layout="inline"]
|
|
70
|
+
) {
|
|
71
|
+
grid-template-columns: var(--form-label-width, max-content) minmax(0, 1fr);
|
|
72
|
+
align-items: start;
|
|
73
|
+
column-gap: var(--space-4);
|
|
74
|
+
row-gap: var(--space-stack-xs);
|
|
75
|
+
}
|
|
76
|
+
.ui-form-field[data-collapse-below="sm"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
77
|
+
> .ui-form-field-label {
|
|
78
|
+
min-block-size: var(--control-height);
|
|
79
|
+
}
|
|
80
|
+
.ui-form-field[data-collapse-below="sm"][data-label-align="end"]:is(
|
|
81
|
+
[data-layout="horizontal"],
|
|
82
|
+
[data-layout="inline"]
|
|
83
|
+
)
|
|
84
|
+
> .ui-form-field-label {
|
|
85
|
+
justify-content: flex-end;
|
|
86
|
+
text-align: end;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@media (min-width: 768px) {
|
|
91
|
+
.ui-form-field[data-collapse-below="md"]:is(
|
|
92
|
+
[data-layout="horizontal"],
|
|
93
|
+
[data-layout="inline"]
|
|
94
|
+
) {
|
|
95
|
+
grid-template-columns: var(--form-label-width, max-content) minmax(0, 1fr);
|
|
96
|
+
align-items: start;
|
|
97
|
+
column-gap: var(--space-4);
|
|
98
|
+
row-gap: var(--space-stack-xs);
|
|
99
|
+
}
|
|
100
|
+
.ui-form-field[data-collapse-below="md"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
101
|
+
> .ui-form-field-label {
|
|
102
|
+
min-block-size: var(--control-height);
|
|
103
|
+
}
|
|
104
|
+
.ui-form-field[data-collapse-below="md"][data-label-align="end"]:is(
|
|
105
|
+
[data-layout="horizontal"],
|
|
106
|
+
[data-layout="inline"]
|
|
107
|
+
)
|
|
108
|
+
> .ui-form-field-label {
|
|
109
|
+
justify-content: flex-end;
|
|
110
|
+
text-align: end;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@media (min-width: 1024px) {
|
|
115
|
+
.ui-form-field[data-collapse-below="lg"]:is(
|
|
116
|
+
[data-layout="horizontal"],
|
|
117
|
+
[data-layout="inline"]
|
|
118
|
+
) {
|
|
119
|
+
grid-template-columns: var(--form-label-width, max-content) minmax(0, 1fr);
|
|
120
|
+
align-items: start;
|
|
121
|
+
column-gap: var(--space-4);
|
|
122
|
+
row-gap: var(--space-stack-xs);
|
|
123
|
+
}
|
|
124
|
+
.ui-form-field[data-collapse-below="lg"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
125
|
+
> .ui-form-field-label {
|
|
126
|
+
min-block-size: var(--control-height);
|
|
127
|
+
}
|
|
128
|
+
.ui-form-field[data-collapse-below="lg"][data-label-align="end"]:is(
|
|
129
|
+
[data-layout="horizontal"],
|
|
130
|
+
[data-layout="inline"]
|
|
131
|
+
)
|
|
132
|
+
> .ui-form-field-label {
|
|
133
|
+
justify-content: flex-end;
|
|
134
|
+
text-align: end;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
@media (min-width: 1280px) {
|
|
139
|
+
.ui-form-field[data-collapse-below="xl"]:is(
|
|
140
|
+
[data-layout="horizontal"],
|
|
141
|
+
[data-layout="inline"]
|
|
142
|
+
) {
|
|
143
|
+
grid-template-columns: var(--form-label-width, max-content) minmax(0, 1fr);
|
|
144
|
+
align-items: start;
|
|
145
|
+
column-gap: var(--space-4);
|
|
146
|
+
row-gap: var(--space-stack-xs);
|
|
147
|
+
}
|
|
148
|
+
.ui-form-field[data-collapse-below="xl"]:is([data-layout="horizontal"], [data-layout="inline"])
|
|
149
|
+
> .ui-form-field-label {
|
|
150
|
+
min-block-size: var(--control-height);
|
|
151
|
+
}
|
|
152
|
+
.ui-form-field[data-collapse-below="xl"][data-label-align="end"]:is(
|
|
153
|
+
[data-layout="horizontal"],
|
|
154
|
+
[data-layout="inline"]
|
|
155
|
+
)
|
|
156
|
+
> .ui-form-field-label {
|
|
157
|
+
justify-content: flex-end;
|
|
158
|
+
text-align: end;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
package/dist/styles/index.css
CHANGED
|
@@ -16,6 +16,13 @@
|
|
|
16
16
|
@source inline(
|
|
17
17
|
"{bg,text}-{primary,secondary,muted,accent,destructive,success,warning,info,attention}-foreground"
|
|
18
18
|
);
|
|
19
|
+
/* Extended text hierarchy + interaction-ramp utilities (library may not reference them directly). */
|
|
20
|
+
@source inline("{text,bg,border}-{foreground-tertiary,foreground-disabled,link,brand}");
|
|
21
|
+
@source inline("bg-{primary,secondary,destructive}-{hover,active}");
|
|
22
|
+
/* Force the extended radius steps so Tailwind emits --radius-xs/-xl/-2xl to :root (consumers read
|
|
23
|
+
* `var(--radius-2xl)` directly; without a generated utility Tailwind drops the unused var). */
|
|
24
|
+
@source inline("rounded-{xs,xl,2xl}");
|
|
25
|
+
@source inline("text-2xs");
|
|
19
26
|
@source "../**/*.{tsx,ts}";
|
|
20
27
|
@import "../tokens/base.css";
|
|
21
28
|
@import "./density.css";
|
|
@@ -29,6 +36,7 @@
|
|
|
29
36
|
@import "./badge-layout.css";
|
|
30
37
|
@import "./data-display-layout.css";
|
|
31
38
|
@import "./data-entry-layout.css";
|
|
39
|
+
@import "./form-layout.css";
|
|
32
40
|
@import "./navigation-layout.css";
|
|
33
41
|
|
|
34
42
|
@theme {
|
|
@@ -65,9 +73,28 @@
|
|
|
65
73
|
--color-chart-4: var(--chart-4);
|
|
66
74
|
--color-chart-5: var(--chart-5);
|
|
67
75
|
--color-chart-6: var(--chart-6);
|
|
76
|
+
/* Golden-ratio radius scale — every step derives from --radius × (--radius-ratio = φ)ⁿ, so
|
|
77
|
+
* overriding --radius alone rescales the whole scale proportionally (≈ 1.4/2.3/3.7/6/9.7/15.7px). */
|
|
78
|
+
--radius-xs: calc(
|
|
79
|
+
var(--radius) / var(--radius-ratio) / var(--radius-ratio) / var(--radius-ratio)
|
|
80
|
+
);
|
|
81
|
+
--radius-sm: calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio));
|
|
82
|
+
--radius-md: calc(var(--radius) / var(--radius-ratio));
|
|
68
83
|
--radius-lg: var(--radius);
|
|
69
|
-
--radius-
|
|
70
|
-
--radius-
|
|
84
|
+
--radius-xl: calc(var(--radius) * var(--radius-ratio));
|
|
85
|
+
--radius-2xl: calc(var(--radius) * var(--radius-ratio) * var(--radius-ratio));
|
|
86
|
+
/* Extended text-hierarchy roles (tertiary / disabled / link / brand) → text-* / bg-* utilities. */
|
|
87
|
+
--color-foreground-tertiary: hsl(var(--text-tertiary));
|
|
88
|
+
--color-foreground-disabled: hsl(var(--text-disabled));
|
|
89
|
+
--color-link: hsl(var(--text-link));
|
|
90
|
+
--color-brand: hsl(var(--text-brand));
|
|
91
|
+
/* Interaction ramp (hover / active) → bg-primary-hover etc. */
|
|
92
|
+
--color-primary-hover: hsl(var(--primary-hover));
|
|
93
|
+
--color-primary-active: hsl(var(--primary-active));
|
|
94
|
+
--color-secondary-hover: hsl(var(--secondary-hover));
|
|
95
|
+
--color-secondary-active: hsl(var(--secondary-active));
|
|
96
|
+
--color-destructive-hover: hsl(var(--destructive-hover));
|
|
97
|
+
--color-destructive-active: hsl(var(--destructive-active));
|
|
71
98
|
/* Wire Tailwind's font-sans/mono (and preflight) to the design-system fonts. */
|
|
72
99
|
--font-sans: var(--font-family-sans);
|
|
73
100
|
--font-mono: var(--font-family-mono);
|
|
@@ -86,6 +113,7 @@
|
|
|
86
113
|
--color-wa-sumi: var(--wa-sumi);
|
|
87
114
|
--color-wa-nezu: var(--wa-nezu);
|
|
88
115
|
/* Wire Tailwind text-* utilities to runtime typography tokens (fontSize toolbar). */
|
|
116
|
+
--text-2xs: var(--font-size-2xs);
|
|
89
117
|
--text-xs: var(--font-size-xs);
|
|
90
118
|
--text-sm: var(--font-size-sm);
|
|
91
119
|
--text-base: var(--font-size-base);
|
|
@@ -103,7 +131,7 @@
|
|
|
103
131
|
background-color: hsl(var(--background));
|
|
104
132
|
color: hsl(var(--foreground));
|
|
105
133
|
font-family: var(--font-family-sans);
|
|
106
|
-
font-size: var(--font-size-
|
|
134
|
+
font-size: var(--font-size-base);
|
|
107
135
|
line-height: var(--line-height-body);
|
|
108
136
|
font-feature-settings:
|
|
109
137
|
"cv02",
|
package/dist/styles/layout.css
CHANGED
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
|
|
174
174
|
.sb-product-tenant {
|
|
175
175
|
overflow: hidden;
|
|
176
|
-
font-size:
|
|
176
|
+
font-size: var(--font-size-2xs);
|
|
177
177
|
font-weight: 700;
|
|
178
178
|
letter-spacing: 0.08em;
|
|
179
179
|
line-height: 1.2;
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
.sb-section-label {
|
|
204
204
|
padding: 0 var(--space-2) var(--space-1);
|
|
205
205
|
color: hsl(var(--muted-foreground));
|
|
206
|
-
font-size:
|
|
206
|
+
font-size: var(--font-size-2xs);
|
|
207
207
|
font-weight: 700;
|
|
208
208
|
letter-spacing: 0.08em;
|
|
209
209
|
line-height: 1.2;
|
|
@@ -270,12 +270,12 @@
|
|
|
270
270
|
min-width: 1.125rem;
|
|
271
271
|
align-items: center;
|
|
272
272
|
justify-content: center;
|
|
273
|
-
border-radius:
|
|
273
|
+
border-radius: var(--radius-pill);
|
|
274
274
|
background: hsl(var(--secondary));
|
|
275
275
|
color: hsl(var(--muted-foreground));
|
|
276
|
-
font-size:
|
|
276
|
+
font-size: var(--font-size-2xs);
|
|
277
277
|
font-weight: var(--font-weight-medium);
|
|
278
|
-
line-height: 1.
|
|
278
|
+
line-height: 1.2;
|
|
279
279
|
padding-inline: 0.375rem;
|
|
280
280
|
}
|
|
281
281
|
|
|
@@ -319,7 +319,7 @@
|
|
|
319
319
|
width: 4px;
|
|
320
320
|
height: 4px;
|
|
321
321
|
flex: 0 0 auto;
|
|
322
|
-
border-radius:
|
|
322
|
+
border-radius: var(--radius-pill);
|
|
323
323
|
background: currentColor;
|
|
324
324
|
opacity: 0.4;
|
|
325
325
|
}
|
|
@@ -397,7 +397,7 @@
|
|
|
397
397
|
flex: 0 0 auto;
|
|
398
398
|
align-items: center;
|
|
399
399
|
justify-content: center;
|
|
400
|
-
border-radius:
|
|
400
|
+
border-radius: var(--radius-pill);
|
|
401
401
|
background: hsl(var(--secondary));
|
|
402
402
|
color: hsl(var(--muted-foreground));
|
|
403
403
|
font-size: 11px;
|
|
@@ -410,7 +410,7 @@
|
|
|
410
410
|
bottom: -1px;
|
|
411
411
|
width: 0.5625rem;
|
|
412
412
|
height: 0.5625rem;
|
|
413
|
-
border-radius:
|
|
413
|
+
border-radius: var(--radius-pill);
|
|
414
414
|
border: 1.5px solid hsl(var(--card));
|
|
415
415
|
background: hsl(var(--success));
|
|
416
416
|
}
|
|
@@ -433,7 +433,7 @@
|
|
|
433
433
|
.sb-user-role {
|
|
434
434
|
overflow: hidden;
|
|
435
435
|
color: hsl(var(--muted-foreground));
|
|
436
|
-
font-size:
|
|
436
|
+
font-size: var(--font-size-2xs);
|
|
437
437
|
line-height: 1.3;
|
|
438
438
|
text-overflow: ellipsis;
|
|
439
439
|
white-space: nowrap;
|
|
@@ -515,7 +515,7 @@
|
|
|
515
515
|
place-items: center;
|
|
516
516
|
border-radius: calc(var(--radius) - 2px);
|
|
517
517
|
color: white;
|
|
518
|
-
font-size:
|
|
518
|
+
font-size: var(--font-size-2xs);
|
|
519
519
|
font-weight: 700;
|
|
520
520
|
}
|
|
521
521
|
|
|
@@ -570,7 +570,7 @@
|
|
|
570
570
|
background: hsl(var(--secondary));
|
|
571
571
|
color: hsl(var(--muted-foreground));
|
|
572
572
|
font-family: var(--font-family-mono);
|
|
573
|
-
font-size:
|
|
573
|
+
font-size: var(--font-size-2xs);
|
|
574
574
|
line-height: 1.2;
|
|
575
575
|
}
|
|
576
576
|
|
|
@@ -610,7 +610,7 @@
|
|
|
610
610
|
right: 0.35rem;
|
|
611
611
|
width: 0.375rem;
|
|
612
612
|
height: 0.375rem;
|
|
613
|
-
border-radius:
|
|
613
|
+
border-radius: var(--radius-pill);
|
|
614
614
|
background: hsl(var(--attention));
|
|
615
615
|
}
|
|
616
616
|
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
--stat-card-label-font-size: var(--font-size-xs);
|
|
20
20
|
--stat-card-label-font-weight: var(--font-weight-medium);
|
|
21
21
|
--stat-card-label-letter-spacing: 0.04em;
|
|
22
|
-
--stat-card-value-font-size:
|
|
22
|
+
--stat-card-value-font-size: var(--font-size-2xl);
|
|
23
23
|
--stat-card-value-line-height: 1.1;
|
|
24
24
|
--stat-card-value-font-weight: var(--font-weight-semibold);
|
|
25
25
|
--stat-card-hint-font-size: var(--font-size-xs);
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
/* Feedback primitive tokens: dialog, alert, empty state. */
|
|
2
2
|
|
|
3
3
|
:root {
|
|
4
|
-
|
|
4
|
+
/* Dialog inset defaults to the shared global chrome tokens (override --space-chrome-* once for the
|
|
5
|
+
* whole system, or --dialog-space-x/-y for dialogs only). */
|
|
6
|
+
--dialog-space-x: var(--space-chrome-x);
|
|
7
|
+
--dialog-space-y: var(--space-chrome-y);
|
|
8
|
+
--dialog-space-inset: var(--dialog-space-y) var(--dialog-space-x);
|
|
5
9
|
--dialog-space-gap: var(--space-stack-md);
|
|
6
10
|
--dialog-close-space-offset: var(--space-4);
|
|
7
11
|
--alert-space-inset: var(--space-section-active);
|
|
8
12
|
--alert-space-gap: var(--space-inline-md);
|
|
9
13
|
--alert-inner-space-gap: var(--space-stack-sm);
|
|
10
14
|
--alert-dismiss-space-offset: var(--space-3);
|
|
15
|
+
/* Soft (subtle) semantic tint ratios — themeable so a service can hit its exact spec
|
|
16
|
+
* (a brand's success-bg/-border are often more present than the faint 5%/30% default). */
|
|
17
|
+
--alert-bg-alpha: 0.05;
|
|
18
|
+
--alert-border-alpha: 0.3;
|
|
11
19
|
--empty-state-space-y: var(--space-10);
|
|
12
20
|
--empty-state-space-x: var(--space-6);
|
|
13
21
|
--skeleton-row-gap: var(--space-stack-sm);
|