@godxjp/ui 12.0.3 → 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 (157) 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-PCUCCBIY.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-UJUWAQE5.js → chunk-WNOX32KG.js} +68 -7
  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 +29 -27
  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/card.d.ts +2 -2
  48. package/dist/components/data-display/carousel.d.ts +12 -1
  49. package/dist/components/data-display/carousel.js +3 -3
  50. package/dist/components/data-display/index.d.ts +6 -6
  51. package/dist/components/data-display/index.js +8 -8
  52. package/dist/components/data-display/table.js +2 -2
  53. package/dist/components/data-entry/calendar.d.ts +6 -4
  54. package/dist/components/data-entry/calendar.js +2 -2
  55. package/dist/components/data-entry/cascader.d.ts +6 -4
  56. package/dist/components/data-entry/cascader.js +5 -5
  57. package/dist/components/data-entry/checkbox.d.ts +7 -5
  58. package/dist/components/data-entry/color-picker.d.ts +6 -4
  59. package/dist/components/data-entry/color-picker.js +5 -5
  60. package/dist/components/data-entry/command.js +2 -2
  61. package/dist/components/data-entry/date-picker.d.ts +6 -4
  62. package/dist/components/data-entry/date-picker.js +6 -6
  63. package/dist/components/data-entry/date-range-picker.d.ts +6 -4
  64. package/dist/components/data-entry/date-range-picker.js +6 -6
  65. package/dist/components/data-entry/index.d.ts +38 -9
  66. package/dist/components/data-entry/index.js +24 -22
  67. package/dist/components/data-entry/input.js +1 -1
  68. package/dist/components/data-entry/radio.d.ts +6 -4
  69. package/dist/components/data-entry/select.d.ts +6 -4
  70. package/dist/components/data-entry/select.js +6 -6
  71. package/dist/components/data-entry/slider.d.ts +6 -4
  72. package/dist/components/data-entry/switch.d.ts +6 -4
  73. package/dist/components/data-entry/textarea.js +2 -2
  74. package/dist/components/data-entry/time-input.js +2 -2
  75. package/dist/components/data-entry/time-picker.d.ts +6 -4
  76. package/dist/components/data-entry/time-picker.js +4 -4
  77. package/dist/components/data-entry/transfer.d.ts +7 -5
  78. package/dist/components/data-entry/transfer.js +5 -5
  79. package/dist/components/data-entry/tree-select.d.ts +6 -4
  80. package/dist/components/data-entry/tree-select.js +5 -5
  81. package/dist/components/data-entry/upload.d.ts +7 -5
  82. package/dist/components/data-entry/upload.js +8 -7
  83. package/dist/components/data-grid/index.js +8 -8
  84. package/dist/components/feedback/alert.d.ts +4 -4
  85. package/dist/components/feedback/alert.js +4 -4
  86. package/dist/components/feedback/dialog.d.ts +19 -5
  87. package/dist/components/feedback/dialog.js +5 -4
  88. package/dist/components/feedback/index.d.ts +17 -26
  89. package/dist/components/feedback/index.js +12 -11
  90. package/dist/components/feedback/sheet.d.ts +21 -2
  91. package/dist/components/feedback/sheet.js +2 -1
  92. package/dist/components/general/button.d.ts +3 -3
  93. package/dist/components/general/index.d.ts +3 -3
  94. package/dist/components/layout/index.d.ts +6 -6
  95. package/dist/components/layout/index.js +5 -4
  96. package/dist/components/navigation/index.d.ts +8 -8
  97. package/dist/components/navigation/index.js +9 -9
  98. package/dist/components/navigation/pagination.d.ts +4 -4
  99. package/dist/components/navigation/pagination.js +7 -7
  100. package/dist/components/navigation/steps.d.ts +5 -5
  101. package/dist/components/navigation/steps.js +4 -4
  102. package/dist/components/query/index.d.ts +4 -4
  103. package/dist/components/query/index.js +4 -4
  104. package/dist/components/ui/index.d.ts +15 -13
  105. package/dist/components/ui/index.js +27 -26
  106. package/dist/{data-display.prop-Cf2p9QC4.d.ts → data-display.prop-BOtnzI17.d.ts} +3 -3
  107. package/dist/{data-entry.prop-6J0o45se.d.ts → data-entry.prop-BGxD81Lf.d.ts} +30 -3
  108. package/dist/{data-table-B_q7j992.d.ts → data-table-DO-gU4wJ.d.ts} +3 -3
  109. package/dist/{data.prop-DMYMNl6L.d.ts → data.prop-D4uDw_SW.d.ts} +1 -1
  110. package/dist/{feedback.prop-Nc9Aa8SV.d.ts → feedback.prop-CtrL24E1.d.ts} +2 -2
  111. package/dist/{filter-bar-B07JSxME.d.ts → filter-bar-tEwfKthz.d.ts} +1 -1
  112. package/dist/{flex-DXtIALBh.d.ts → flex-88Ps6YCv.d.ts} +1 -1
  113. package/dist/form/index.d.ts +3 -3
  114. package/dist/form/index.js +2 -1
  115. package/dist/{form.prop-Bc6r6JJW.d.ts → form.prop-5cyL3bvT.d.ts} +1 -1
  116. package/dist/{general.prop-DoHDCRmL.d.ts → general.prop-1GgJkf4b.d.ts} +2 -2
  117. package/dist/i18n/index.d.ts +3 -1
  118. package/dist/i18n/index.js +2 -2
  119. package/dist/index.d.ts +14 -15
  120. package/dist/index.js +39 -37
  121. package/dist/{interaction.prop-DSFizzP6.d.ts → interaction.prop-R77MnAMZ.d.ts} +5 -1
  122. package/dist/{layout.prop-B1yQPUNZ.d.ts → layout.prop-ChLFNGJ6.d.ts} +2 -2
  123. package/dist/lib/datetime/index.js +1 -1
  124. package/dist/{navigation.prop-BKlxd-j7.d.ts → navigation.prop-CXDaVNaR.d.ts} +1 -1
  125. package/dist/{navigation.prop-Dumy196X.d.ts → navigation.prop-Cc_Iu87S.d.ts} +2 -2
  126. package/dist/props/components/index.d.ts +13 -13
  127. package/dist/props/index.d.ts +13 -13
  128. package/dist/props/index.js +1 -1
  129. package/dist/props/registry.d.ts +22 -2
  130. package/dist/props/registry.js +1 -1
  131. package/dist/props/vocabulary/index.d.ts +4 -4
  132. package/dist/{query.prop-Dog-EAfG.d.ts → query.prop-CyNxaCHe.d.ts} +2 -2
  133. package/dist/{search-input-BR4nAWiT.d.ts → search-input-BPtjUAa1.d.ts} +2 -2
  134. package/dist/{shared.prop-BsNSXeqD.d.ts → shared.prop-BvMSLFJ6.d.ts} +7 -1
  135. package/dist/styles/alert-layout.css +8 -8
  136. package/dist/styles/card-layout.css +301 -292
  137. package/dist/styles/control.css +8 -9
  138. package/dist/styles/data-display-layout.css +50 -5
  139. package/dist/styles/density.css +4 -0
  140. package/dist/styles/dialog-layout.css +35 -7
  141. package/dist/styles/form-layout.css +161 -0
  142. package/dist/styles/index.css +31 -3
  143. package/dist/styles/layout.css +1 -1
  144. package/dist/styles/navigation-layout.css +1 -1
  145. package/dist/styles/shell-layout.css +12 -12
  146. package/dist/tokens/components/card.css +1 -1
  147. package/dist/tokens/components/feedback.css +9 -1
  148. package/dist/tokens/foundation.css +74 -16
  149. package/dist/tokens/semantic/layout.css +29 -11
  150. package/package.json +1 -1
  151. package/dist/chunk-B3WX53JQ.js +0 -40
  152. package/dist/chunk-EZHHJQWQ.js +0 -111
  153. package/dist/chunk-QSGW3ZWK.js +0 -45
  154. package/dist/chunk-WFUIE252.js +0 -61
  155. package/dist/styles/feedback-layout.css +0 -49
  156. package/dist/tooltip-Bf2KjRy8.d.ts +0 -14
  157. package/dist/use-toast-Dsw3yE2S.d.ts +0 -19
@@ -31,6 +31,21 @@
31
31
  --attention: 25 99% 46%; /* 朱 #eb6101 */
32
32
  --attention-foreground: 60 33% 99%;
33
33
 
34
+ /* Extended text hierarchy (beyond --foreground / --muted-foreground) — themeable per service.
35
+ * Roles primitives bake in today: caption/meta, disabled, inline link, brand numerals. */
36
+ --text-tertiary: 44 5% 55%; /* lighter than muted-foreground — captions / meta */
37
+ --text-disabled: 40 6% 68%; /* disabled control text */
38
+ --text-link: 204 100% 39%; /* inline link — defaults to brand blue */
39
+ --text-brand: 204 100% 39%; /* brand-colored text / numerals */
40
+
41
+ /* Interaction ramp — hover / active steps (services override to their own brand ramp). */
42
+ --primary-hover: 204 100% 33%;
43
+ --primary-active: 204 100% 28%;
44
+ --secondary-hover: 45 15% 91%;
45
+ --secondary-active: 45 15% 88%;
46
+ --destructive-hover: 357 64% 38%;
47
+ --destructive-active: 357 64% 32%;
48
+
34
49
  /* 和色 (wa-iro) — traditional Japanese accent palette for charts, tags,
35
50
  * decoration. Decorative hex (NOT semantic): never remap a wa-iro to a
36
51
  * semantic role beyond the five canonical mappings used above. */
@@ -56,11 +71,27 @@
56
71
  --chart-5: #4c6cb3;
57
72
  --chart-6: #eb6101;
58
73
 
74
+ /* Disabled affordance opacity — single knob (was referenced but undefined → silent failure). */
75
+ --disabled-opacity: 0.5;
76
+
59
77
  /* Shape and elevation */
60
- --radius: 0.375rem;
61
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
62
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
63
- --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
78
+ --radius: 0.375rem; /* 6px — radius base; override to retheme every step */
79
+ --radius-ratio: 1.618; /* φ radii scale by the golden ratio (steps derive in @theme) */
80
+ --radius-pill: 9999px; /* fully-round: switch / radio / slider / pill badges (NOT --radius-derived) */
81
+ --radius-sharp: 0; /* squared corners: table cells, flush inputs */
82
+ /* Elevation ramp. `--shadow-color` is the single brand-tint hook (space-separated RGB channels):
83
+ * a service can set e.g. `--shadow-color: 12 26 49` (navy) to tint the WHOLE ramp at once. These
84
+ * own `--shadow-md` too, so dropdown/popover/nav no longer borrow Tailwind's foreign gray-black. */
85
+ --shadow-color: 0 0 0;
86
+ --shadow-xs: 0 1px 1px 0 rgb(var(--shadow-color) / 0.04);
87
+ --shadow-sm: 0 1px 2px 0 rgb(var(--shadow-color) / 0.05);
88
+ --shadow-md:
89
+ 0 4px 6px -1px rgb(var(--shadow-color) / 0.1), 0 2px 4px -2px rgb(var(--shadow-color) / 0.1);
90
+ --shadow-lg:
91
+ 0 10px 15px -3px rgb(var(--shadow-color) / 0.1), 0 4px 6px -4px rgb(var(--shadow-color) / 0.1);
92
+ --shadow-xl:
93
+ 0 20px 25px -5px rgb(var(--shadow-color) / 0.1), 0 8px 10px -6px rgb(var(--shadow-color) / 0.1);
94
+ --shadow-2xl: 0 25px 50px -12px rgb(var(--shadow-color) / 0.25);
64
95
 
65
96
  /* Typography scale — M PLUS 2 (JIS L1+L2 kanji, Vietnamese subset), one notch
66
97
  * larger than the JP-dense base for comfortable reading (body 14px). */
@@ -68,19 +99,34 @@
68
99
  "M PLUS 2", "Be Vietnam Pro", "Hiragino Sans", "Noto Sans JP", -apple-system,
69
100
  BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif;
70
101
  --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
71
- --font-size-xs: 0.8125rem; /* 13px */
72
- --font-size-sm: 0.875rem; /* 14px body */
73
- --font-size-base: 0.9375rem; /* 15px */
74
- --font-size-lg: 1.1875rem; /* 19px */
75
- --font-size-xl: 1.375rem; /* 22px */
76
- --font-size-2xl: 1.625rem; /* 26px */
102
+ /* ── Type scale — GOLDEN-RATIO modular scale (Ant/Tailwind model). ONE base + ONE ratio; every
103
+ * step is base × ratioⁿ, so the whole scale stays in golden proportion. `--font-size-ratio` is
104
+ * φ^¼ (the golden ratio's quarter-step ≈ 1.1227) a TRUE golden ratio yet dense enough that
105
+ * headings stay small (h1≈20, h2≈18; pure φ=1.618 would be marketing-size). Internal apps get the
106
+ * 14px DEFAULT with ZERO config; a customer overrides `--font-size-base` (and optionally
107
+ * `--font-size-ratio`) and the entire scale rescales in golden proportion. */
108
+ --font-size-base: 0.875rem; /* 14px — THE base (= <body>). The single knob; override to retheme. */
109
+ --font-size-ratio: 1.1227; /* φ^¼ — golden-ratio step (φ=1.618, φ^¼ keeps the dense scale small) */
110
+ --font-size-2xs: calc(
111
+ var(--font-size-base) / var(--font-size-ratio) / var(--font-size-ratio)
112
+ ); /* ratio⁻² ≈ 11px */
113
+ --font-size-xs: calc(var(--font-size-base) / var(--font-size-ratio)); /* ratio⁻¹ ≈ 12.5px */
114
+ --font-size-sm: var(--font-size-base); /* 14px — body (alias of base) */
115
+ --font-size-lg: calc(
116
+ var(--font-size-base) * var(--font-size-ratio) * var(--font-size-ratio)
117
+ ); /* ratio² ≈ 17.6px */
118
+ --font-size-xl: calc(var(--font-size-lg) * var(--font-size-ratio)); /* ratio³ ≈ 19.8px */
119
+ --font-size-2xl: calc(var(--font-size-xl) * var(--font-size-ratio)); /* ratio⁴ ≈ 22.3px */
77
120
 
78
- /* Semantic heading scale (dxs-kintai: info-dense JP enterprise, weight 500,
79
- * never marketing-size). Applied to base h1–h4 + component titles. */
80
- --heading-h1: 1.25rem; /* 20px page title / h1 */
81
- --heading-h2: 1.125rem; /* 18px section / h2 */
82
- --heading-h3: 0.875rem; /* 14px — h3 */
83
- --heading-h4: 0.8125rem; /* 13px — h4 */
121
+ /* Headings also golden-derived. h1=ratio³, h2=ratio²; h3/h4 reuse body sizes (single source). */
122
+ --heading-h1: calc(
123
+ var(--font-size-base) * var(--font-size-ratio) * var(--font-size-ratio) * var(--font-size-ratio)
124
+ ); /* 20px */
125
+ --heading-h2: calc(
126
+ var(--font-size-base) * var(--font-size-ratio) * var(--font-size-ratio)
127
+ ); /* ≈ 18px */
128
+ --heading-h3: var(--font-size-base); /* 14px — h3 */
129
+ --heading-h4: var(--font-size-xs); /* ≈ 12.5px — h4 */
84
130
 
85
131
  --font-weight-normal: 400;
86
132
  --font-weight-medium: 500;
@@ -144,4 +190,16 @@
144
190
  --info-foreground: 48 9% 9%;
145
191
  --attention: 25 95% 56%;
146
192
  --attention-foreground: 48 9% 9%;
193
+
194
+ /* Extended text hierarchy + interaction ramp (dark) */
195
+ --text-tertiary: 44 6% 56%;
196
+ --text-disabled: 45 6% 40%;
197
+ --text-link: 204 90% 66%;
198
+ --text-brand: 204 90% 66%;
199
+ --primary-hover: 204 90% 66%;
200
+ --primary-active: 204 90% 72%;
201
+ --secondary-hover: 45 6% 22%;
202
+ --secondary-active: 45 6% 26%;
203
+ --destructive-hover: 357 55% 58%;
204
+ --destructive-active: 357 55% 64%;
147
205
  }
@@ -1,20 +1,38 @@
1
1
  /* Layout primitive tokens: page, section, stack, inline. */
2
2
 
3
3
  :root {
4
- --space-page-x: var(--space-6); /* 24px comfortable page gutter (4px grid) */
4
+ /* Semantic spacingONE coherent 4px grid (Tailwind/Material/Ant standard). All steps reference
5
+ * the linear `--space-*` scale (NOT the golden φ scale — golden ratio is for modular SIZE scales
6
+ * like type/radius, not the spacing grid; mixing the two left an incoherent density rhythm). The
7
+ * φ tokens remain available as an optional golden-layout utility, just not the spacing baseline. */
8
+ --space-page-x: var(--space-6); /* 24px — page gutter */
5
9
  --space-page-y: var(--space-6); /* 24px */
6
- --space-section: var(--phi-0);
7
- --space-stack-xs: var(--space-1);
8
- --space-stack-sm: var(--space-2);
9
- --space-stack-md: var(--phi-0);
10
- --space-stack-lg: var(--phi-p1);
11
- --space-stack-xl: var(--phi-p2);
12
- --space-inline-xs: var(--space-1);
13
- --space-inline-sm: var(--space-2);
14
- --space-inline-md: var(--phi-n1);
15
- --space-inline-lg: var(--phi-0);
10
+ --space-section: var(--space-4); /* 16px */
11
+ --space-stack-xs: var(--space-1); /* 4px */
12
+ --space-stack-sm: var(--space-2); /* 8px */
13
+ --space-stack-md: var(--space-4); /* 16px */
14
+ --space-stack-lg: var(--space-6); /* 24px */
15
+ --space-stack-xl: var(--space-10); /* 40px */
16
+ --space-inline-xs: var(--space-1); /* 4px */
17
+ --space-inline-sm: var(--space-2); /* 8px */
18
+ --space-inline-md: var(--space-3); /* 12px */
19
+ --space-inline-lg: var(--space-4); /* 16px */
16
20
 
17
21
  --space-page-active-x: var(--space-page-x);
18
22
  --space-page-active-y: var(--space-page-y);
19
23
  --space-section-active: var(--space-section);
24
+
25
+ /* Section "chrome" padding — the SHARED inset for header / body / footer of every overlay-ish
26
+ * surface (Dialog · Sheet · Drawer · Card). One global knob: a service sets these once instead of
27
+ * per-component. Vertical is tightened (16 vs the old 24) and density-aware (see density.css);
28
+ * horizontal stays 24 (Ant standard). Per-component tokens (--sheet-pad-*, --dialog-space-inset…)
29
+ * default to these and only override when a surface genuinely needs to differ. */
30
+ --space-chrome-x: var(--space-6); /* 24px — horizontal inset */
31
+ --space-chrome-y: var(--space-4); /* 16px — vertical inset (header/footer/body) */
32
+ --space-chrome-gap: var(--space-stack-sm); /* gap between header ↔ body ↔ footer */
33
+
34
+ /* The ONE vertical gap between a field's LABEL and its CONTENT — same everywhere a label sits above
35
+ * a control or a value (FormField, Descriptions, Form, any label-above stack). Single source so the
36
+ * whole system stays in sync (gh feedback: Descriptions was ~0px while FormField was 8px). */
37
+ --field-label-gap: var(--space-2); /* 8px */
20
38
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@godxjp/ui",
3
- "version": "12.0.3",
3
+ "version": "13.0.0",
4
4
  "type": "module",
5
5
  "packageManager": "pnpm@10.29.1",
6
6
  "sideEffects": false,
@@ -1,40 +0,0 @@
1
- import { toast as toast$1 } from 'sonner';
2
-
3
- // src/components/feedback/use-toast.ts
4
- function nodeText(value) {
5
- if (value == null) return "";
6
- if (typeof value === "string") return value;
7
- if (typeof value === "number" || typeof value === "boolean") return String(value);
8
- return "";
9
- }
10
- function legacyToast(options) {
11
- const { title, description, variant, ...rest } = options;
12
- const titleText = nodeText(title);
13
- const descText = nodeText(description);
14
- const message = titleText || descText;
15
- const desc = titleText && descText ? descText : void 0;
16
- const sonnerOptions = { ...rest, description: desc };
17
- switch (variant) {
18
- case "destructive":
19
- return toast$1.error(message, sonnerOptions);
20
- case "success":
21
- return toast$1.success(message, sonnerOptions);
22
- default:
23
- return toast$1(message, sonnerOptions);
24
- }
25
- }
26
- var toast = Object.assign((messageOrOptions) => {
27
- if (typeof messageOrOptions === "string") {
28
- return toast$1(messageOrOptions);
29
- }
30
- return legacyToast(messageOrOptions);
31
- }, toast$1);
32
- function useToast() {
33
- return {
34
- toast: (options) => legacyToast(options),
35
- dismiss: toast$1.dismiss,
36
- toasts: []
37
- };
38
- }
39
-
40
- export { toast, useToast };
@@ -1,111 +0,0 @@
1
- import { cn } from './chunk-U7N2A7A3.js';
2
- import * as React from 'react';
3
- import * as DialogPrimitive from '@radix-ui/react-dialog';
4
- import { cva } from 'class-variance-authority';
5
- import { X } from 'lucide-react';
6
- import { jsx, jsxs } from 'react/jsx-runtime';
7
-
8
- function Sheet(props) {
9
- return /* @__PURE__ */ jsx(DialogPrimitive.Root, { "data-slot": "sheet", ...props });
10
- }
11
- function SheetTrigger(props) {
12
- return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
13
- }
14
- function SheetClose(props) {
15
- return /* @__PURE__ */ jsx(DialogPrimitive.Close, { "data-slot": "sheet-close", ...props });
16
- }
17
- function SheetPortal(props) {
18
- return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
19
- }
20
- var SheetOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
21
- DialogPrimitive.Overlay,
22
- {
23
- ref,
24
- "data-slot": "sheet-overlay",
25
- className: cn(
26
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
27
- className
28
- ),
29
- ...props
30
- }
31
- ));
32
- SheetOverlay.displayName = DialogPrimitive.Overlay.displayName;
33
- var sheetVariants = cva(
34
- "fixed z-50 flex flex-col gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:animate-in data-[state=open]:duration-500",
35
- {
36
- variants: {
37
- side: {
38
- right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-md",
39
- left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-md",
40
- top: "inset-x-0 top-0 h-auto border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
41
- bottom: "inset-x-0 bottom-0 h-auto border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom"
42
- }
43
- },
44
- defaultVariants: { side: "right" }
45
- }
46
- );
47
- var SheetContent = React.forwardRef(({ side = "right", className, children, showCloseButton = true, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
48
- /* @__PURE__ */ jsx(SheetOverlay, {}),
49
- /* @__PURE__ */ jsxs(
50
- DialogPrimitive.Content,
51
- {
52
- ref,
53
- "data-slot": "sheet-content",
54
- className: cn(sheetVariants({ side }), className),
55
- ...props,
56
- children: [
57
- children,
58
- showCloseButton ? /* @__PURE__ */ jsxs(
59
- DialogPrimitive.Close,
60
- {
61
- "data-slot": "sheet-close",
62
- className: "ring-offset-background focus:ring-ring absolute end-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",
63
- children: [
64
- /* @__PURE__ */ jsx(X, { className: "size-4", "aria-hidden": "true" }),
65
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
66
- ]
67
- }
68
- ) : null
69
- ]
70
- }
71
- )
72
- ] }));
73
- SheetContent.displayName = DialogPrimitive.Content.displayName;
74
- var SheetHeader = ({ className, ...props }) => /* @__PURE__ */ jsx(
75
- "div",
76
- {
77
- "data-slot": "sheet-header",
78
- className: cn("flex flex-col gap-1.5 text-center sm:text-left", className),
79
- ...props
80
- }
81
- );
82
- var SheetFooter = ({ className, ...props }) => /* @__PURE__ */ jsx(
83
- "div",
84
- {
85
- "data-slot": "sheet-footer",
86
- className: cn("mt-auto flex flex-col gap-2", className),
87
- ...props
88
- }
89
- );
90
- var SheetTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
91
- DialogPrimitive.Title,
92
- {
93
- ref,
94
- "data-slot": "sheet-title",
95
- className: cn("text-foreground text-lg font-medium", className),
96
- ...props
97
- }
98
- ));
99
- SheetTitle.displayName = DialogPrimitive.Title.displayName;
100
- var SheetDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
101
- DialogPrimitive.Description,
102
- {
103
- ref,
104
- "data-slot": "sheet-description",
105
- className: cn("text-muted-foreground text-sm", className),
106
- ...props
107
- }
108
- ));
109
- SheetDescription.displayName = DialogPrimitive.Description.displayName;
110
-
111
- export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger };
@@ -1,45 +0,0 @@
1
- import { Label } from './chunk-7PWBC4BY.js';
2
- import { cn } from './chunk-U7N2A7A3.js';
3
- import * as React from 'react';
4
- import { jsxs, jsx } from 'react/jsx-runtime';
5
-
6
- function FormField({
7
- id,
8
- label,
9
- required,
10
- helper,
11
- error,
12
- labelAddon,
13
- className,
14
- children
15
- }) {
16
- const helperId = helper ? `${id}-helper` : void 0;
17
- const errorId = error ? `${id}-error` : void 0;
18
- if (typeof process !== "undefined" && process.env?.NODE_ENV !== "production" && !React.isValidElement(children)) {
19
- console.warn(
20
- "FormField expects a single React element child to receive aria-describedby/aria-errormessage; the helper text and error message will not be associated with the control."
21
- );
22
- }
23
- const childWithA11y = React.isValidElement(children) ? React.cloneElement(children, {
24
- // Helper and error can coexist: helper stays on aria-describedby, the error on
25
- // aria-errormessage (surfaced when aria-invalid is true).
26
- "aria-describedby": helperId,
27
- "aria-errormessage": errorId,
28
- "aria-required": required ? true : void 0,
29
- "aria-invalid": !!error || void 0
30
- }) : children;
31
- return /* @__PURE__ */ jsxs("div", { className: cn("ui-stack-sm", className), children: [
32
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
33
- /* @__PURE__ */ jsxs(Label, { htmlFor: id, className: "ui-inline-xs", children: [
34
- /* @__PURE__ */ jsx("span", { children: label }),
35
- required && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-destructive", children: "*" })
36
- ] }),
37
- labelAddon
38
- ] }),
39
- childWithA11y,
40
- helper ? /* @__PURE__ */ jsx("p", { id: helperId, className: "text-muted-foreground text-xs", children: helper }) : null,
41
- error ? /* @__PURE__ */ jsx("p", { id: errorId, role: "alert", className: "text-destructive text-xs", children: error }) : null
42
- ] });
43
- }
44
-
45
- export { FormField };
@@ -1,61 +0,0 @@
1
- import { cn } from './chunk-U7N2A7A3.js';
2
- import * as React from 'react';
3
- import { Drawer as Drawer$1 } from 'vaul';
4
- import { jsx, jsxs } from 'react/jsx-runtime';
5
-
6
- function Drawer({
7
- shouldScaleBackground = true,
8
- ...props
9
- }) {
10
- return /* @__PURE__ */ jsx(Drawer$1.Root, { shouldScaleBackground, ...props });
11
- }
12
- Drawer.displayName = "Drawer";
13
- var DrawerTrigger = Drawer$1.Trigger;
14
- var DrawerClose = Drawer$1.Close;
15
- var DrawerPortal = Drawer$1.Portal;
16
- var DrawerOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
17
- Drawer$1.Overlay,
18
- {
19
- ref,
20
- "data-slot": "drawer-overlay",
21
- className: cn("ui-drawer-overlay", className),
22
- ...props
23
- }
24
- ));
25
- DrawerOverlay.displayName = "DrawerOverlay";
26
- var DrawerContent = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DrawerPortal, { children: [
27
- /* @__PURE__ */ jsx(DrawerOverlay, {}),
28
- /* @__PURE__ */ jsxs(
29
- Drawer$1.Content,
30
- {
31
- ref,
32
- "data-slot": "drawer-content",
33
- className: cn("ui-drawer-content", className),
34
- ...props,
35
- children: [
36
- /* @__PURE__ */ jsx("div", { className: "ui-drawer-handle", "aria-hidden": "true" }),
37
- children
38
- ]
39
- }
40
- )
41
- ] }));
42
- DrawerContent.displayName = "DrawerContent";
43
- function DrawerHeader({ className, ...props }) {
44
- return /* @__PURE__ */ jsx("div", { "data-slot": "drawer-header", className: cn("ui-drawer-header", className), ...props });
45
- }
46
- function DrawerFooter({ className, ...props }) {
47
- return /* @__PURE__ */ jsx("div", { "data-slot": "drawer-footer", className: cn("ui-drawer-footer", className), ...props });
48
- }
49
- var DrawerTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Drawer$1.Title, { ref, className: cn("ui-drawer-title", className), ...props }));
50
- DrawerTitle.displayName = "DrawerTitle";
51
- var DrawerDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
52
- Drawer$1.Description,
53
- {
54
- ref,
55
- className: cn("ui-drawer-description", className),
56
- ...props
57
- }
58
- ));
59
- DrawerDescription.displayName = "DrawerDescription";
60
-
61
- export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger };
@@ -1,49 +0,0 @@
1
- /* Drawer (bottom-sheet, vaul) */
2
- .ui-drawer-overlay {
3
- position: fixed;
4
- inset: 0;
5
- z-index: 50;
6
- background: hsl(var(--overlay, 0 0% 0% / 0.4));
7
- }
8
- .ui-drawer-content {
9
- position: fixed;
10
- inset-inline: 0;
11
- inset-block-end: 0;
12
- z-index: 50;
13
- display: flex;
14
- flex-direction: column;
15
- max-height: 82vh;
16
- border-start-start-radius: var(--radius-lg);
17
- border-start-end-radius: var(--radius-lg);
18
- border: 1px solid hsl(var(--border));
19
- background: hsl(var(--background));
20
- }
21
- .ui-drawer-handle {
22
- margin: var(--space-3) auto;
23
- height: 0.375rem;
24
- width: 6rem;
25
- flex-shrink: 0;
26
- border-radius: 9999px;
27
- background: hsl(var(--muted));
28
- }
29
- .ui-drawer-header {
30
- display: grid;
31
- gap: var(--space-1);
32
- padding: var(--space-4);
33
- text-align: center;
34
- }
35
- .ui-drawer-footer {
36
- display: flex;
37
- flex-direction: column;
38
- gap: var(--space-2);
39
- margin-top: auto;
40
- padding: var(--space-4);
41
- }
42
- .ui-drawer-title {
43
- font-weight: var(--font-weight-medium);
44
- line-height: 1.2;
45
- }
46
- .ui-drawer-description {
47
- font-size: 0.875rem;
48
- color: hsl(var(--muted-foreground));
49
- }
@@ -1,14 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as React from 'react';
3
- import * as TooltipPrimitive from '@radix-ui/react-tooltip';
4
-
5
- /** Opt-in provider for tuning delay across a subtree. Each <Tooltip> already self-provides. */
6
- declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>): react_jsx_runtime.JSX.Element;
7
- /** Self-contained tooltip — no app-level provider needed. Controllable via `open`/`onOpenChange`. */
8
- declare function Tooltip({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Root> & {
9
- delayDuration?: number;
10
- }): react_jsx_runtime.JSX.Element;
11
- declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
12
- declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
-
14
- export { Tooltip as T, TooltipContent as a, TooltipProvider as b, TooltipTrigger as c };
@@ -1,19 +0,0 @@
1
- import * as React from 'react';
2
- import { ExternalToast, toast as toast$1 } from 'sonner';
3
-
4
- type LegacyToastOptions = ExternalToast & {
5
- title?: React.ReactNode;
6
- description?: React.ReactNode;
7
- variant?: "default" | "destructive" | "success";
8
- };
9
- type ToastFn = typeof toast$1 & ((options: LegacyToastOptions) => ReturnType<typeof toast$1>);
10
- /** Sonner toast + legacy `{ title, variant }` object form. */
11
- declare const toast: ToastFn;
12
- /** Legacy hook — prefer `toast` import directly; kept for existing admin pages. */
13
- declare function useToast(): {
14
- toast: (options: LegacyToastOptions) => string | number;
15
- dismiss: (id?: number | string) => string | number;
16
- toasts: readonly [];
17
- };
18
-
19
- export { type LegacyToastOptions as L, toast as t, useToast as u };