@zentauri-ui/zentauri-components 0.0.84 → 0.0.92

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 (144) hide show
  1. package/README.md +47 -29
  2. package/dist/chunk-BZSIXBA7.js +70 -0
  3. package/dist/chunk-BZSIXBA7.js.map +1 -0
  4. package/dist/chunk-E5UX537J.js +11 -0
  5. package/dist/chunk-E5UX537J.js.map +1 -0
  6. package/dist/chunk-MEWYFWBX.mjs +14 -0
  7. package/dist/chunk-MEWYFWBX.mjs.map +1 -0
  8. package/dist/chunk-VJHD7QZH.mjs +73 -0
  9. package/dist/chunk-VJHD7QZH.mjs.map +1 -0
  10. package/dist/ui/accordion.d.mts +70 -0
  11. package/dist/ui/accordion.d.ts +70 -0
  12. package/dist/ui/accordion.js +280 -0
  13. package/dist/ui/accordion.js.map +1 -0
  14. package/dist/ui/accordion.mjs +282 -0
  15. package/dist/ui/accordion.mjs.map +1 -0
  16. package/dist/ui/alert.d.mts +66 -0
  17. package/dist/ui/alert.d.ts +66 -0
  18. package/dist/ui/alert.js +218 -0
  19. package/dist/ui/alert.js.map +1 -0
  20. package/dist/ui/alert.mjs +220 -0
  21. package/dist/ui/alert.mjs.map +1 -0
  22. package/dist/ui/badge.d.mts +37 -0
  23. package/dist/ui/badge.d.ts +37 -0
  24. package/dist/ui/badge.js +159 -0
  25. package/dist/ui/badge.js.map +1 -0
  26. package/dist/ui/badge.mjs +161 -0
  27. package/dist/ui/badge.mjs.map +1 -0
  28. package/dist/ui/buttons.d.mts +27 -0
  29. package/dist/ui/buttons.d.ts +27 -0
  30. package/dist/ui/buttons.js +107 -0
  31. package/dist/ui/buttons.js.map +1 -0
  32. package/dist/ui/buttons.mjs +109 -0
  33. package/dist/ui/buttons.mjs.map +1 -0
  34. package/dist/ui/card.d.mts +77 -0
  35. package/dist/ui/card.d.ts +77 -0
  36. package/dist/ui/card.js +252 -0
  37. package/dist/ui/card.js.map +1 -0
  38. package/dist/ui/card.mjs +254 -0
  39. package/dist/ui/card.mjs.map +1 -0
  40. package/dist/ui/divider.d.mts +39 -0
  41. package/dist/ui/divider.d.ts +39 -0
  42. package/dist/ui/divider.js +194 -0
  43. package/dist/ui/divider.js.map +1 -0
  44. package/dist/ui/divider.mjs +196 -0
  45. package/dist/ui/divider.mjs.map +1 -0
  46. package/dist/ui/drawer.d.mts +81 -0
  47. package/dist/ui/drawer.d.ts +81 -0
  48. package/dist/ui/drawer.js +377 -0
  49. package/dist/ui/drawer.js.map +1 -0
  50. package/dist/ui/drawer.mjs +379 -0
  51. package/dist/ui/drawer.mjs.map +1 -0
  52. package/dist/ui/dropdown.d.mts +50 -0
  53. package/dist/ui/dropdown.d.ts +50 -0
  54. package/dist/ui/dropdown.js +272 -0
  55. package/dist/ui/dropdown.js.map +1 -0
  56. package/dist/ui/dropdown.mjs +274 -0
  57. package/dist/ui/dropdown.mjs.map +1 -0
  58. package/dist/ui/empty-state.d.mts +55 -0
  59. package/dist/ui/empty-state.d.ts +55 -0
  60. package/dist/ui/empty-state.js +148 -0
  61. package/dist/ui/empty-state.js.map +1 -0
  62. package/dist/ui/empty-state.mjs +150 -0
  63. package/dist/ui/empty-state.mjs.map +1 -0
  64. package/dist/ui/inputs.d.mts +35 -0
  65. package/dist/ui/inputs.d.ts +35 -0
  66. package/dist/ui/inputs.js +426 -0
  67. package/dist/ui/inputs.js.map +1 -0
  68. package/dist/ui/inputs.mjs +428 -0
  69. package/dist/ui/inputs.mjs.map +1 -0
  70. package/dist/ui/modal.d.mts +84 -0
  71. package/dist/ui/modal.d.ts +84 -0
  72. package/dist/ui/modal.js +378 -0
  73. package/dist/ui/modal.js.map +1 -0
  74. package/dist/ui/modal.mjs +380 -0
  75. package/dist/ui/modal.mjs.map +1 -0
  76. package/dist/ui/pagination.d.mts +114 -0
  77. package/dist/ui/pagination.d.ts +114 -0
  78. package/dist/ui/pagination.js +425 -0
  79. package/dist/ui/pagination.js.map +1 -0
  80. package/dist/ui/pagination.mjs +427 -0
  81. package/dist/ui/pagination.mjs.map +1 -0
  82. package/dist/ui/progress.d.mts +61 -0
  83. package/dist/ui/progress.d.ts +61 -0
  84. package/dist/ui/progress.js +231 -0
  85. package/dist/ui/progress.js.map +1 -0
  86. package/dist/ui/progress.mjs +233 -0
  87. package/dist/ui/progress.mjs.map +1 -0
  88. package/dist/ui/select.d.mts +73 -0
  89. package/dist/ui/select.d.ts +73 -0
  90. package/dist/ui/select.js +321 -0
  91. package/dist/ui/select.js.map +1 -0
  92. package/dist/ui/select.mjs +323 -0
  93. package/dist/ui/select.mjs.map +1 -0
  94. package/dist/ui/skeleton.d.mts +90 -0
  95. package/dist/ui/skeleton.d.ts +90 -0
  96. package/dist/ui/skeleton.js +538 -0
  97. package/dist/ui/skeleton.js.map +1 -0
  98. package/dist/ui/skeleton.mjs +540 -0
  99. package/dist/ui/skeleton.mjs.map +1 -0
  100. package/dist/ui/spinner.d.mts +27 -0
  101. package/dist/ui/spinner.d.ts +27 -0
  102. package/dist/ui/spinner.js +187 -0
  103. package/dist/ui/spinner.js.map +1 -0
  104. package/dist/ui/spinner.mjs +189 -0
  105. package/dist/ui/spinner.mjs.map +1 -0
  106. package/dist/ui/table.d.mts +81 -0
  107. package/dist/ui/table.d.ts +81 -0
  108. package/dist/ui/table.js +287 -0
  109. package/dist/ui/table.js.map +1 -0
  110. package/dist/ui/table.mjs +289 -0
  111. package/dist/ui/table.mjs.map +1 -0
  112. package/dist/ui/tabs.d.mts +58 -0
  113. package/dist/ui/tabs.d.ts +58 -0
  114. package/dist/ui/tabs.js +268 -0
  115. package/dist/ui/tabs.js.map +1 -0
  116. package/dist/ui/tabs.mjs +270 -0
  117. package/dist/ui/tabs.mjs.map +1 -0
  118. package/dist/ui/toast.d.mts +86 -0
  119. package/dist/ui/toast.d.ts +86 -0
  120. package/dist/ui/toast.js +252 -0
  121. package/dist/ui/toast.js.map +1 -0
  122. package/dist/ui/toast.mjs +254 -0
  123. package/dist/ui/toast.mjs.map +1 -0
  124. package/dist/ui/toggle.d.mts +37 -0
  125. package/dist/ui/toggle.d.ts +37 -0
  126. package/dist/ui/toggle.js +152 -0
  127. package/dist/ui/toggle.js.map +1 -0
  128. package/dist/ui/toggle.mjs +154 -0
  129. package/dist/ui/toggle.mjs.map +1 -0
  130. package/dist/ui/tooltip.d.mts +46 -0
  131. package/dist/ui/tooltip.d.ts +46 -0
  132. package/dist/ui/tooltip.js +208 -0
  133. package/dist/ui/tooltip.js.map +1 -0
  134. package/dist/ui/tooltip.mjs +210 -0
  135. package/dist/ui/tooltip.mjs.map +1 -0
  136. package/dist/variants-Dd9pe-ov.d.mts +8 -0
  137. package/dist/variants-Dd9pe-ov.d.ts +8 -0
  138. package/package.json +15 -14
  139. package/dist/ui/index.cjs +0 -5764
  140. package/dist/ui/index.cjs.map +0 -1
  141. package/dist/ui/index.d.cts +0 -1164
  142. package/dist/ui/index.d.ts +0 -1164
  143. package/dist/ui/index.js +0 -5626
  144. package/dist/ui/index.js.map +0 -1
@@ -0,0 +1,428 @@
1
+ "use client";
2
+
3
+ import {
4
+ cn
5
+ } from "../chunk-MEWYFWBX.mjs";
6
+
7
+ // src/ui/inputs/animations.ts
8
+ var inputAnimationPresets = {
9
+ none: {},
10
+ lift: {
11
+ whileHover: { y: -1 },
12
+ whileFocus: { y: -1 },
13
+ transition: { type: "spring", stiffness: 480, damping: 32 }
14
+ },
15
+ press: {
16
+ whileTap: { scale: 0.99 },
17
+ transition: { type: "spring", stiffness: 520, damping: 30 }
18
+ },
19
+ glow: {
20
+ whileFocus: {
21
+ boxShadow: "0 0 0 1px rgba(255,255,255,0.2), 0 12px 28px rgba(15,23,42,0.35)"
22
+ },
23
+ whileHover: {
24
+ boxShadow: "0 0 0 1px rgba(255,255,255,0.12), 0 8px 20px rgba(15,23,42,0.25)"
25
+ },
26
+ transition: { duration: 0.2, ease: "easeOut" }
27
+ },
28
+ tilt: {
29
+ whileHover: { scale: 1.005 },
30
+ whileFocus: { scale: 1.008 },
31
+ whileTap: { scale: 0.995 },
32
+ transition: { type: "spring", stiffness: 380, damping: 24 }
33
+ },
34
+ bounce: {
35
+ whileFocus: { y: -2, scale: 1.01 },
36
+ whileHover: { y: -1, scale: 1.005 },
37
+ transition: { type: "spring", bounce: 0.35, duration: 0.4 }
38
+ }
39
+ };
40
+
41
+ // src/ui/inputs/input.tsx
42
+ import { useId } from "react";
43
+ import { motion } from "framer-motion";
44
+
45
+ // src/ui/inputs/variants.ts
46
+ import { cva } from "class-variance-authority";
47
+ var inputVariants = cva(
48
+ [
49
+ "w-full min-w-0 rounded-xl border bg-white/5 text-slate-50 shadow-[0_1px_2px_rgba(15,23,42,0.12)]",
50
+ "ring-offset-slate-950 transition-colors",
51
+ "placeholder:text-slate-500",
52
+ "focus-visible:outline-none",
53
+ "disabled:cursor-not-allowed disabled:opacity-50",
54
+ "read-only:cursor-default read-only:bg-white/[0.03]",
55
+ "file:h-8"
56
+ ],
57
+ {
58
+ variants: {
59
+ as: {
60
+ input: "",
61
+ textarea: "h-auto! resize-y py-2 align-top",
62
+ file: [
63
+ // Reset native padding so we control it fully
64
+ "p-0! cursor-pointer",
65
+ // File-selector button base styles
66
+ "file:cursor-pointer file:border-0 file:border-r file:border-white/10",
67
+ "file:bg-white/10 file:text-slate-200 file:font-medium",
68
+ "file:transition-colors file:duration-200",
69
+ "hover:file:bg-white/15",
70
+ // Content area padding
71
+ "[&:not(:disabled)]:file:hover:text-white",
72
+ "disabled:file:cursor-not-allowed"
73
+ ],
74
+ checkbox: [
75
+ "shrink-0 cursor-pointer appearance-none relative",
76
+ "min-h-0! shadow-none outline-none",
77
+ "border-2 border-white/30 [&:not(:checked)]:bg-transparent",
78
+ "transition-[color,box-shadow,border-color,background-color]",
79
+ "disabled:cursor-not-allowed disabled:opacity-50",
80
+ "read-only:cursor-default",
81
+ "checked:after:absolute checked:after:content-[''] checked:after:size-3 checked:after:top-1/2 checked:after:left-1/2 checked:after:-translate-x-1/2 checked:after:-translate-y-1/2 checked:after:rounded-full checked:after:bg-current"
82
+ ],
83
+ radio: [
84
+ "shrink-0 cursor-pointer appearance-none rounded-full",
85
+ "min-h-0! shadow-none outline-none",
86
+ "border-2 border-white/30 bg-transparent! read-only:bg-transparent!",
87
+ "ring-2 ring-white/20 ring-offset-2 ring-offset-slate-950",
88
+ "transition-[color,box-shadow,background-color,border-color,box-shadow]",
89
+ "disabled:cursor-not-allowed disabled:opacity-50",
90
+ "read-only:cursor-default"
91
+ ]
92
+ },
93
+ appearance: {
94
+ default: "border-white/10 focus-visible:border-white/20",
95
+ warning: "border-yellow-500/80 text-yellow-50 placeholder:text-yellow-300/70 focus-visible:border-yellow-400 focus-visible:ring-yellow-400/80",
96
+ error: "border-rose-500/80 text-rose-50 placeholder:text-rose-300/70 focus-visible:border-rose-400 focus-visible:ring-rose-400/80",
97
+ success: "border-emerald-500/70 text-emerald-50 placeholder:text-emerald-300/70 focus-visible:border-emerald-400 focus-visible:ring-emerald-400/80",
98
+ info: "border-blue-500/80 text-blue-50 placeholder:text-blue-300/70 focus-visible:border-blue-400 focus-visible:ring-blue-400/80",
99
+ violet: "border-violet-500/80 text-violet-50 placeholder:text-violet-300/70 focus-visible:border-violet-400 focus-visible:ring-violet-400/80",
100
+ amber: "border-amber-500/80 text-amber-50 placeholder:text-amber-300/70 focus-visible:border-amber-400 focus-visible:ring-amber-400/80",
101
+ pink: "border-pink-500/80 text-pink-50 placeholder:text-pink-300/70 focus-visible:border-pink-400 focus-visible:ring-pink-400/80",
102
+ indigo: "border-indigo-500/80 text-indigo-50 placeholder:text-indigo-300/70 focus-visible:border-indigo-400 focus-visible:ring-indigo-400/80",
103
+ orange: "border-orange-500/80 text-orange-50 placeholder:text-orange-300/70 focus-visible:border-orange-400 focus-visible:ring-orange-400/80"
104
+ },
105
+ size: {
106
+ sm: "h-8 px-3 text-xs",
107
+ md: "h-9 md:h-11 px-4 text-sm",
108
+ lg: "h-10 md:h-12 px-5 text-base"
109
+ },
110
+ ring: {
111
+ true: "focus-visible:ring-2 focus-visible:ring-offset-2",
112
+ false: ""
113
+ }
114
+ },
115
+ defaultVariants: {
116
+ as: "input",
117
+ appearance: "default",
118
+ size: "md",
119
+ ring: true
120
+ },
121
+ compoundVariants: [
122
+ // ── textarea size overrides ──────────────────────────────────────────
123
+ {
124
+ as: "textarea",
125
+ size: "sm",
126
+ class: "min-h-[5rem]"
127
+ },
128
+ {
129
+ as: "textarea",
130
+ size: "md",
131
+ class: "min-h-[6rem]"
132
+ },
133
+ {
134
+ as: "textarea",
135
+ size: "lg",
136
+ class: "min-h-[7.5rem]"
137
+ },
138
+ // ── file input: size – height & file-button padding ──────────────────
139
+ {
140
+ as: "file",
141
+ size: "sm",
142
+ class: "h-8 text-xs pl-1 file:h-8 file:px-3 file:text-xs"
143
+ },
144
+ {
145
+ as: "file",
146
+ size: "md",
147
+ class: "h-9 md:h-11 text-sm pl-1 file:h-9 md:file:h-11 file:px-4 file:text-sm"
148
+ },
149
+ {
150
+ as: "file",
151
+ size: "lg",
152
+ class: "h-10 md:h-12 text-base pl-1 file:h-10 md:file:h-12 file:px-5 file:text-base"
153
+ },
154
+ // ── file input: appearance – file-button accent colour ───────────────
155
+ {
156
+ as: "file",
157
+ appearance: "default",
158
+ class: "file:text-slate-200"
159
+ },
160
+ {
161
+ as: "file",
162
+ appearance: "warning",
163
+ class: "file:bg-yellow-500/20 file:text-yellow-200 file:border-yellow-500/40 hover:file:bg-yellow-500/30"
164
+ },
165
+ {
166
+ as: "file",
167
+ appearance: "error",
168
+ class: "file:bg-rose-500/20 file:text-rose-200 file:border-rose-500/40 hover:file:bg-rose-500/30"
169
+ },
170
+ {
171
+ as: "file",
172
+ appearance: "success",
173
+ class: "file:bg-emerald-500/20 file:text-emerald-200 file:border-emerald-500/40 hover:file:bg-emerald-500/30"
174
+ },
175
+ {
176
+ as: "file",
177
+ appearance: "info",
178
+ class: "file:bg-blue-500/20 file:text-blue-200 file:border-blue-500/40 hover:file:bg-blue-500/30"
179
+ },
180
+ {
181
+ as: "file",
182
+ appearance: "violet",
183
+ class: "file:bg-violet-500/20 file:text-violet-200 file:border-violet-500/40 hover:file:bg-violet-500/30"
184
+ },
185
+ {
186
+ as: "file",
187
+ appearance: "amber",
188
+ class: "file:bg-amber-500/20 file:text-amber-200 file:border-amber-500/40 hover:file:bg-amber-500/30"
189
+ },
190
+ {
191
+ as: "file",
192
+ appearance: "pink",
193
+ class: "file:bg-pink-500/20 file:text-pink-200 file:border-pink-500/40 hover:file:bg-pink-500/30"
194
+ },
195
+ {
196
+ as: "file",
197
+ appearance: "indigo",
198
+ class: "file:bg-indigo-500/20 file:text-indigo-200 file:border-indigo-500/40 hover:file:bg-indigo-500/30"
199
+ },
200
+ // ── checkbox / radio: size (overrides text-field height & padding) ───
201
+ {
202
+ as: "checkbox",
203
+ size: "sm",
204
+ class: "h-4! w-4! min-h-0! rounded-[0.35rem]! px-0! py-0!"
205
+ },
206
+ {
207
+ as: "checkbox",
208
+ size: "md",
209
+ class: "h-5! w-5! min-h-0! rounded-md! px-0! py-0!"
210
+ },
211
+ {
212
+ as: "checkbox",
213
+ size: "lg",
214
+ class: "h-6! w-6! min-h-0! rounded-md! px-0! py-0!"
215
+ },
216
+ {
217
+ as: "radio",
218
+ size: "sm",
219
+ class: "h-4! w-4! min-h-0! px-0! py-0!"
220
+ },
221
+ {
222
+ as: "radio",
223
+ size: "md",
224
+ class: "h-5! w-5! min-h-0! px-0! py-0!"
225
+ },
226
+ {
227
+ as: "radio",
228
+ size: "lg",
229
+ class: "h-6! w-6! min-h-0! px-0! py-0!"
230
+ },
231
+ // ── checkbox: appearance (border + tick color; fill stays transparent) ─
232
+ {
233
+ as: "checkbox",
234
+ appearance: "default",
235
+ class: "border-slate-400/70! checked:border-slate-200 checked:text-slate-200 hover:border-slate-300 focus-visible:border-slate-300 focus-visible:ring-slate-400/70"
236
+ },
237
+ {
238
+ as: "checkbox",
239
+ appearance: "warning",
240
+ class: "border-yellow-500/70! checked:border-yellow-400 checked:text-yellow-300 hover:border-yellow-400 focus-visible:border-yellow-400 focus-visible:ring-yellow-400/80"
241
+ },
242
+ {
243
+ as: "checkbox",
244
+ appearance: "error",
245
+ class: "border-rose-500/70! checked:border-rose-400 checked:text-rose-300 hover:border-rose-400 focus-visible:border-rose-400 focus-visible:ring-rose-400/80"
246
+ },
247
+ {
248
+ as: "checkbox",
249
+ appearance: "success",
250
+ class: "border-emerald-500/70! checked:border-emerald-400 checked:text-emerald-300 hover:border-emerald-400 focus-visible:border-emerald-400 focus-visible:ring-emerald-400/80"
251
+ },
252
+ {
253
+ as: "checkbox",
254
+ appearance: "info",
255
+ class: "border-blue-500/70! checked:border-blue-400 checked:text-blue-300 hover:border-blue-400 focus-visible:border-blue-400 focus-visible:ring-blue-400/80"
256
+ },
257
+ {
258
+ as: "checkbox",
259
+ appearance: "violet",
260
+ class: "border-violet-500/70! checked:after:bg-violet-400 checked:border-violet-400 checked:text-violet-300 hover:border-violet-400 focus-visible:border-violet-400 focus-visible:ring-violet-400/80"
261
+ },
262
+ {
263
+ as: "checkbox",
264
+ appearance: "amber",
265
+ class: "border-amber-500/70! checked:border-amber-400! checked:text-amber-300 hover:border-amber-400! focus-visible:border-amber-400! focus-visible:ring-amber-400/80!"
266
+ },
267
+ {
268
+ as: "checkbox",
269
+ appearance: "pink",
270
+ class: "border-pink-500/70! checked:border-pink-400 checked:text-pink-300 hover:border-pink-400 focus-visible:border-pink-400 focus-visible:ring-pink-400/80"
271
+ },
272
+ {
273
+ as: "checkbox",
274
+ appearance: "indigo",
275
+ class: "border-indigo-500/70! checked:border-indigo-400! checked:text-indigo-300 hover:border-indigo-400! focus-visible:border-indigo-400! focus-visible:ring-indigo-400/80!"
276
+ },
277
+ // ── radio: appearance (transparent fill, inner dot, coloured offset ring) ─
278
+ {
279
+ as: "radio",
280
+ appearance: "default",
281
+ class: "border-slate-400/70! checked:border-slate-200 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(226,232,240)]! hover:border-slate-300 focus-visible:border-slate-300 focus-visible:ring-slate-400/70 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-slate-300/90!"
282
+ },
283
+ {
284
+ as: "radio",
285
+ appearance: "warning",
286
+ class: "border-yellow-500/70! checked:border-yellow-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(250,204,21)]! hover:border-yellow-400 focus-visible:border-yellow-400 focus-visible:ring-yellow-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-yellow-400/90!"
287
+ },
288
+ {
289
+ as: "radio",
290
+ appearance: "error",
291
+ class: "border-rose-500/70! checked:border-rose-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(251,113,133)]! hover:border-rose-400 focus-visible:border-rose-400 focus-visible:ring-rose-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-rose-400/90!"
292
+ },
293
+ {
294
+ as: "radio",
295
+ appearance: "success",
296
+ class: "border-emerald-500/70! checked:border-emerald-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(52,211,153)]! hover:border-emerald-400 focus-visible:border-emerald-400 focus-visible:ring-emerald-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-emerald-400/90!"
297
+ },
298
+ {
299
+ as: "radio",
300
+ appearance: "info",
301
+ class: "border-blue-500/70! checked:border-blue-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(96,165,250)]! hover:border-blue-400 focus-visible:border-blue-400 focus-visible:ring-blue-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-blue-400/90!"
302
+ },
303
+ {
304
+ as: "radio",
305
+ appearance: "violet",
306
+ class: "border-violet-500/70! checked:border-violet-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(167,139,250)]! hover:border-violet-400 focus-visible:border-violet-400 focus-visible:ring-violet-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-violet-400/90!"
307
+ },
308
+ {
309
+ as: "radio",
310
+ appearance: "amber",
311
+ class: "border-amber-500/70! checked:border-amber-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(251,191,36)]! hover:border-amber-400 focus-visible:border-amber-400 focus-visible:ring-amber-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-amber-400/90!"
312
+ },
313
+ {
314
+ as: "radio",
315
+ appearance: "pink",
316
+ class: "border-pink-500/70! checked:border-pink-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(244,114,182)]! hover:border-pink-400 focus-visible:border-pink-400 focus-visible:ring-pink-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-pink-400/90!"
317
+ },
318
+ {
319
+ as: "radio",
320
+ appearance: "indigo",
321
+ class: "border-indigo-500/70! checked:border-indigo-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(129,140,248)]! hover:border-indigo-400 focus-visible:border-indigo-400 focus-visible:ring-indigo-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-indigo-400/90!"
322
+ }
323
+ ]
324
+ }
325
+ );
326
+
327
+ // src/ui/inputs/input.tsx
328
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
329
+ var Input = (props) => {
330
+ const generatedId = useId();
331
+ if (props.as === "textarea") {
332
+ const {
333
+ className: className2,
334
+ appearance: appearance2,
335
+ size: size2,
336
+ animation: animation2 = "none",
337
+ ring: ring2 = true,
338
+ ref: ref2,
339
+ "aria-invalid": ariaInvalidProp2,
340
+ errorMessage: errorMessage2,
341
+ id: id2,
342
+ as: as2,
343
+ ...rest2
344
+ } = props;
345
+ const controlId2 = id2 ?? generatedId;
346
+ const errorId2 = `${controlId2}-error`;
347
+ const motionProps2 = inputAnimationPresets[animation2];
348
+ const ariaInvalid2 = ariaInvalidProp2 !== void 0 ? ariaInvalidProp2 : appearance2 === "error" ? true : void 0;
349
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
350
+ /* @__PURE__ */ jsx(
351
+ motion.textarea,
352
+ {
353
+ ref: ref2,
354
+ id: controlId2,
355
+ "data-slot": "input",
356
+ className: cn(
357
+ inputVariants({ appearance: appearance2, size: size2, ring: ring2, as: as2 }),
358
+ className2
359
+ ),
360
+ initial: false,
361
+ "aria-invalid": ariaInvalid2,
362
+ "aria-describedby": errorMessage2 && appearance2 === "error" ? errorId2 : void 0,
363
+ ...motionProps2,
364
+ ...rest2
365
+ }
366
+ ),
367
+ errorMessage2 && appearance2 === "error" && /* @__PURE__ */ jsx(
368
+ "p",
369
+ {
370
+ id: errorId2,
371
+ className: "text-sm text-rose-500 mt-2 pl-4 wrap-break-word",
372
+ children: errorMessage2
373
+ }
374
+ )
375
+ ] });
376
+ }
377
+ const {
378
+ className,
379
+ appearance,
380
+ size,
381
+ animation = "none",
382
+ ring = true,
383
+ ref,
384
+ "aria-invalid": ariaInvalidProp,
385
+ errorMessage,
386
+ id,
387
+ as,
388
+ ...rest
389
+ } = props;
390
+ const controlId = id ?? generatedId;
391
+ const errorId = `${controlId}-error`;
392
+ const motionProps = inputAnimationPresets[animation];
393
+ const ariaInvalid = ariaInvalidProp !== void 0 ? ariaInvalidProp : appearance === "error" ? true : void 0;
394
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
395
+ /* @__PURE__ */ jsx(
396
+ motion.input,
397
+ {
398
+ ref,
399
+ id: controlId,
400
+ "data-slot": "input",
401
+ className: cn(
402
+ inputVariants({ appearance, size, ring, as: as ?? "input" }),
403
+ className
404
+ ),
405
+ initial: false,
406
+ "aria-invalid": ariaInvalid,
407
+ "aria-describedby": errorMessage && appearance === "error" ? errorId : void 0,
408
+ ...motionProps,
409
+ ...rest
410
+ }
411
+ ),
412
+ errorMessage && appearance === "error" && /* @__PURE__ */ jsx(
413
+ "p",
414
+ {
415
+ id: errorId,
416
+ className: "text-sm text-rose-500 mt-2 pl-4 wrap-break-word",
417
+ children: errorMessage
418
+ }
419
+ )
420
+ ] });
421
+ };
422
+ Input.displayName = "Input";
423
+ export {
424
+ Input,
425
+ inputAnimationPresets,
426
+ inputVariants
427
+ };
428
+ //# sourceMappingURL=inputs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/inputs/animations.ts","../../src/ui/inputs/input.tsx","../../src/ui/inputs/variants.ts"],"sourcesContent":["import type { InputAnimationPresets } from \"./types\";\n\nexport const inputAnimationPresets: InputAnimationPresets = {\n none: {},\n lift: {\n whileHover: { y: -1 },\n whileFocus: { y: -1 },\n transition: { type: \"spring\", stiffness: 480, damping: 32 },\n },\n press: {\n whileTap: { scale: 0.99 },\n transition: { type: \"spring\", stiffness: 520, damping: 30 },\n },\n glow: {\n whileFocus: {\n boxShadow:\n \"0 0 0 1px rgba(255,255,255,0.2), 0 12px 28px rgba(15,23,42,0.35)\",\n },\n whileHover: {\n boxShadow:\n \"0 0 0 1px rgba(255,255,255,0.12), 0 8px 20px rgba(15,23,42,0.25)\",\n },\n transition: { duration: 0.2, ease: \"easeOut\" },\n },\n tilt: {\n whileHover: { scale: 1.005 },\n whileFocus: { scale: 1.008 },\n whileTap: { scale: 0.995 },\n transition: { type: \"spring\", stiffness: 380, damping: 24 },\n },\n bounce: {\n whileFocus: { y: -2, scale: 1.01 },\n whileHover: { y: -1, scale: 1.005 },\n transition: { type: \"spring\", bounce: 0.35, duration: 0.4 },\n },\n};\n","\"use client\";\n\nimport { useId } from \"react\";\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputAnimationPresets } from \"./animations\";\nimport type { InputProps } from \"./types\";\nimport { inputVariants } from \"./variants\";\n\nexport const Input = (props: InputProps) => {\n const generatedId = useId();\n\n if (props.as === \"textarea\") {\n const {\n className,\n appearance,\n size,\n animation = \"none\",\n ring = true,\n ref,\n \"aria-invalid\": ariaInvalidProp,\n errorMessage,\n id,\n as,\n ...rest\n } = props;\n\n const controlId = id ?? generatedId;\n const errorId = `${controlId}-error`;\n const motionProps = inputAnimationPresets[animation];\n const ariaInvalid =\n ariaInvalidProp !== undefined\n ? ariaInvalidProp\n : appearance === \"error\"\n ? true\n : undefined;\n\n return (\n <>\n <motion.textarea\n ref={ref}\n id={controlId}\n data-slot=\"input\"\n className={cn(\n inputVariants({ appearance, size, ring, as }),\n className,\n )}\n initial={false}\n aria-invalid={ariaInvalid}\n aria-describedby={\n errorMessage && appearance === \"error\" ? errorId : undefined\n }\n {...motionProps}\n {...rest}\n />\n {errorMessage && appearance === \"error\" && (\n <p\n id={errorId}\n className=\"text-sm text-rose-500 mt-2 pl-4 wrap-break-word\"\n >\n {errorMessage}\n </p>\n )}\n </>\n );\n }\n\n const {\n className,\n appearance,\n size,\n animation = \"none\",\n ring = true,\n ref,\n \"aria-invalid\": ariaInvalidProp,\n errorMessage,\n id,\n as,\n ...rest\n } = props;\n\n const controlId = id ?? generatedId;\n const errorId = `${controlId}-error`;\n const motionProps = inputAnimationPresets[animation];\n const ariaInvalid =\n ariaInvalidProp !== undefined\n ? ariaInvalidProp\n : appearance === \"error\"\n ? true\n : undefined;\n\n return (\n <>\n <motion.input\n ref={ref}\n id={controlId}\n data-slot=\"input\"\n className={cn(\n inputVariants({ appearance, size, ring, as: as ?? \"input\" }),\n className,\n )}\n initial={false}\n aria-invalid={ariaInvalid}\n aria-describedby={\n errorMessage && appearance === \"error\" ? errorId : undefined\n }\n {...motionProps}\n {...rest}\n />\n {errorMessage && appearance === \"error\" && (\n <p\n id={errorId}\n className=\"text-sm text-rose-500 mt-2 pl-4 wrap-break-word\"\n >\n {errorMessage}\n </p>\n )}\n </>\n );\n};\n\nInput.displayName = \"Input\";\n","import { cva } from \"class-variance-authority\";\n\nexport const inputVariants = cva(\n [\n \"w-full min-w-0 rounded-xl border bg-white/5 text-slate-50 shadow-[0_1px_2px_rgba(15,23,42,0.12)]\",\n \"ring-offset-slate-950 transition-colors\",\n \"placeholder:text-slate-500\",\n \"focus-visible:outline-none\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"read-only:cursor-default read-only:bg-white/[0.03]\",\n \"file:h-8\"\n ],\n {\n variants: {\n as: {\n input: \"\",\n textarea: \"h-auto! resize-y py-2 align-top\",\n file: [\n // Reset native padding so we control it fully\n \"p-0! cursor-pointer\",\n // File-selector button base styles\n \"file:cursor-pointer file:border-0 file:border-r file:border-white/10\",\n \"file:bg-white/10 file:text-slate-200 file:font-medium\",\n \"file:transition-colors file:duration-200\",\n \"hover:file:bg-white/15\",\n // Content area padding\n \"[&:not(:disabled)]:file:hover:text-white\",\n \"disabled:file:cursor-not-allowed\",\n ],\n checkbox: [\n \"shrink-0 cursor-pointer appearance-none relative\",\n \"min-h-0! shadow-none outline-none\",\n \"border-2 border-white/30 [&:not(:checked)]:bg-transparent\",\n \"transition-[color,box-shadow,border-color,background-color]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"read-only:cursor-default\",\n \"checked:after:absolute checked:after:content-[''] checked:after:size-3 checked:after:top-1/2 checked:after:left-1/2 checked:after:-translate-x-1/2 checked:after:-translate-y-1/2 checked:after:rounded-full checked:after:bg-current\"\n ],\n radio: [\n \"shrink-0 cursor-pointer appearance-none rounded-full\",\n \"min-h-0! shadow-none outline-none\",\n \"border-2 border-white/30 bg-transparent! read-only:bg-transparent!\",\n \"ring-2 ring-white/20 ring-offset-2 ring-offset-slate-950\",\n \"transition-[color,box-shadow,background-color,border-color,box-shadow]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"read-only:cursor-default\",\n ],\n },\n appearance: {\n default: \"border-white/10 focus-visible:border-white/20\",\n warning: \"border-yellow-500/80 text-yellow-50 placeholder:text-yellow-300/70 focus-visible:border-yellow-400 focus-visible:ring-yellow-400/80\",\n error:\n \"border-rose-500/80 text-rose-50 placeholder:text-rose-300/70 focus-visible:border-rose-400 focus-visible:ring-rose-400/80\",\n success:\n \"border-emerald-500/70 text-emerald-50 placeholder:text-emerald-300/70 focus-visible:border-emerald-400 focus-visible:ring-emerald-400/80\",\n info: \"border-blue-500/80 text-blue-50 placeholder:text-blue-300/70 focus-visible:border-blue-400 focus-visible:ring-blue-400/80\",\n violet: \"border-violet-500/80 text-violet-50 placeholder:text-violet-300/70 focus-visible:border-violet-400 focus-visible:ring-violet-400/80\",\n amber: \"border-amber-500/80 text-amber-50 placeholder:text-amber-300/70 focus-visible:border-amber-400 focus-visible:ring-amber-400/80\",\n pink: \"border-pink-500/80 text-pink-50 placeholder:text-pink-300/70 focus-visible:border-pink-400 focus-visible:ring-pink-400/80\",\n indigo: \"border-indigo-500/80 text-indigo-50 placeholder:text-indigo-300/70 focus-visible:border-indigo-400 focus-visible:ring-indigo-400/80\",\n orange: \"border-orange-500/80 text-orange-50 placeholder:text-orange-300/70 focus-visible:border-orange-400 focus-visible:ring-orange-400/80\",\n\n },\n size: {\n sm: \"h-8 px-3 text-xs\",\n md: \"h-9 md:h-11 px-4 text-sm\",\n lg: \"h-10 md:h-12 px-5 text-base\",\n },\n ring: {\n true: \"focus-visible:ring-2 focus-visible:ring-offset-2\",\n false: \"\",\n },\n },\n defaultVariants: {\n as: \"input\",\n appearance: \"default\",\n size: \"md\",\n ring: true,\n },\n compoundVariants: [\n // ── textarea size overrides ──────────────────────────────────────────\n {\n as: \"textarea\",\n size: \"sm\",\n class: \"min-h-[5rem]\",\n },\n {\n as: \"textarea\",\n size: \"md\",\n class: \"min-h-[6rem]\",\n },\n {\n as: \"textarea\",\n size: \"lg\",\n class: \"min-h-[7.5rem]\",\n },\n // ── file input: size – height & file-button padding ──────────────────\n {\n as: \"file\",\n size: \"sm\",\n class: \"h-8 text-xs pl-1 file:h-8 file:px-3 file:text-xs\",\n },\n {\n as: \"file\",\n size: \"md\",\n class: \"h-9 md:h-11 text-sm pl-1 file:h-9 md:file:h-11 file:px-4 file:text-sm\",\n },\n {\n as: \"file\",\n size: \"lg\",\n class: \"h-10 md:h-12 text-base pl-1 file:h-10 md:file:h-12 file:px-5 file:text-base\",\n },\n // ── file input: appearance – file-button accent colour ───────────────\n {\n as: \"file\",\n appearance: \"default\",\n class: \"file:text-slate-200\",\n },\n {\n as: \"file\",\n appearance: \"warning\",\n class: \"file:bg-yellow-500/20 file:text-yellow-200 file:border-yellow-500/40 hover:file:bg-yellow-500/30\",\n },\n {\n as: \"file\",\n appearance: \"error\",\n class: \"file:bg-rose-500/20 file:text-rose-200 file:border-rose-500/40 hover:file:bg-rose-500/30\",\n },\n {\n as: \"file\",\n appearance: \"success\",\n class: \"file:bg-emerald-500/20 file:text-emerald-200 file:border-emerald-500/40 hover:file:bg-emerald-500/30\",\n },\n {\n as: \"file\",\n appearance: \"info\",\n class: \"file:bg-blue-500/20 file:text-blue-200 file:border-blue-500/40 hover:file:bg-blue-500/30\",\n },\n {\n as: \"file\",\n appearance: \"violet\",\n class: \"file:bg-violet-500/20 file:text-violet-200 file:border-violet-500/40 hover:file:bg-violet-500/30\",\n },\n {\n as: \"file\",\n appearance: \"amber\",\n class: \"file:bg-amber-500/20 file:text-amber-200 file:border-amber-500/40 hover:file:bg-amber-500/30\",\n },\n {\n as: \"file\",\n appearance: \"pink\",\n class: \"file:bg-pink-500/20 file:text-pink-200 file:border-pink-500/40 hover:file:bg-pink-500/30\",\n },\n {\n as: \"file\",\n appearance: \"indigo\",\n class: \"file:bg-indigo-500/20 file:text-indigo-200 file:border-indigo-500/40 hover:file:bg-indigo-500/30\",\n },\n // ── checkbox / radio: size (overrides text-field height & padding) ───\n {\n as: \"checkbox\",\n size: \"sm\",\n class:\n \"h-4! w-4! min-h-0! rounded-[0.35rem]! px-0! py-0!\",\n },\n {\n as: \"checkbox\",\n size: \"md\",\n class:\n \"h-5! w-5! min-h-0! rounded-md! px-0! py-0!\",\n },\n {\n as: \"checkbox\",\n size: \"lg\",\n class:\n \"h-6! w-6! min-h-0! rounded-md! px-0! py-0!\",\n },\n {\n as: \"radio\",\n size: \"sm\",\n class: \"h-4! w-4! min-h-0! px-0! py-0!\",\n },\n {\n as: \"radio\",\n size: \"md\",\n class: \"h-5! w-5! min-h-0! px-0! py-0!\",\n },\n {\n as: \"radio\",\n size: \"lg\",\n class: \"h-6! w-6! min-h-0! px-0! py-0!\",\n },\n // ── checkbox: appearance (border + tick color; fill stays transparent) ─\n {\n as: \"checkbox\",\n appearance: \"default\",\n class:\n \"border-slate-400/70! checked:border-slate-200 checked:text-slate-200 hover:border-slate-300 focus-visible:border-slate-300 focus-visible:ring-slate-400/70\",\n },\n {\n as: \"checkbox\",\n appearance: \"warning\",\n class:\n \"border-yellow-500/70! checked:border-yellow-400 checked:text-yellow-300 hover:border-yellow-400 focus-visible:border-yellow-400 focus-visible:ring-yellow-400/80\",\n },\n {\n as: \"checkbox\",\n appearance: \"error\",\n class:\n \"border-rose-500/70! checked:border-rose-400 checked:text-rose-300 hover:border-rose-400 focus-visible:border-rose-400 focus-visible:ring-rose-400/80\",\n },\n {\n as: \"checkbox\",\n appearance: \"success\",\n class:\n \"border-emerald-500/70! checked:border-emerald-400 checked:text-emerald-300 hover:border-emerald-400 focus-visible:border-emerald-400 focus-visible:ring-emerald-400/80\",\n },\n {\n as: \"checkbox\",\n appearance: \"info\",\n class:\n \"border-blue-500/70! checked:border-blue-400 checked:text-blue-300 hover:border-blue-400 focus-visible:border-blue-400 focus-visible:ring-blue-400/80\",\n },\n {\n as: \"checkbox\",\n appearance: \"violet\",\n class:\n \"border-violet-500/70! checked:after:bg-violet-400 checked:border-violet-400 checked:text-violet-300 hover:border-violet-400 focus-visible:border-violet-400 focus-visible:ring-violet-400/80\",\n },\n {\n as: \"checkbox\",\n appearance: \"amber\",\n class:\n \"border-amber-500/70! checked:border-amber-400! checked:text-amber-300 hover:border-amber-400! focus-visible:border-amber-400! focus-visible:ring-amber-400/80!\",\n },\n {\n as: \"checkbox\",\n appearance: \"pink\",\n class:\n \"border-pink-500/70! checked:border-pink-400 checked:text-pink-300 hover:border-pink-400 focus-visible:border-pink-400 focus-visible:ring-pink-400/80\",\n },\n {\n as: \"checkbox\",\n appearance: \"indigo\",\n class:\n \"border-indigo-500/70! checked:border-indigo-400! checked:text-indigo-300 hover:border-indigo-400! focus-visible:border-indigo-400! focus-visible:ring-indigo-400/80!\",\n },\n // ── radio: appearance (transparent fill, inner dot, coloured offset ring) ─\n {\n as: \"radio\",\n appearance: \"default\",\n class:\n \"border-slate-400/70! checked:border-slate-200 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(226,232,240)]! hover:border-slate-300 focus-visible:border-slate-300 focus-visible:ring-slate-400/70 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-slate-300/90!\",\n },\n {\n as: \"radio\",\n appearance: \"warning\",\n class:\n \"border-yellow-500/70! checked:border-yellow-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(250,204,21)]! hover:border-yellow-400 focus-visible:border-yellow-400 focus-visible:ring-yellow-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-yellow-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"error\",\n class:\n \"border-rose-500/70! checked:border-rose-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(251,113,133)]! hover:border-rose-400 focus-visible:border-rose-400 focus-visible:ring-rose-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-rose-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"success\",\n class:\n \"border-emerald-500/70! checked:border-emerald-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(52,211,153)]! hover:border-emerald-400 focus-visible:border-emerald-400 focus-visible:ring-emerald-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-emerald-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"info\",\n class:\n \"border-blue-500/70! checked:border-blue-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(96,165,250)]! hover:border-blue-400 focus-visible:border-blue-400 focus-visible:ring-blue-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-blue-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"violet\",\n class:\n \"border-violet-500/70! checked:border-violet-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(167,139,250)]! hover:border-violet-400 focus-visible:border-violet-400 focus-visible:ring-violet-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-violet-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"amber\",\n class:\n \"border-amber-500/70! checked:border-amber-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(251,191,36)]! hover:border-amber-400 focus-visible:border-amber-400 focus-visible:ring-amber-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-amber-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"pink\",\n class:\n \"border-pink-500/70! checked:border-pink-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(244,114,182)]! hover:border-pink-400 focus-visible:border-pink-400 focus-visible:ring-pink-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-pink-400/90!\",\n },\n {\n as: \"radio\",\n appearance: \"indigo\",\n class:\n \"border-indigo-500/70! checked:border-indigo-400 checked:bg-transparent! checked:shadow-[inset_0_0_0_0.28rem_rgb(129,140,248)]! hover:border-indigo-400 focus-visible:border-indigo-400 focus-visible:ring-indigo-400/80 checked:ring-2! checked:ring-offset-2! checked:ring-offset-slate-950! checked:ring-indigo-400/90!\",\n },\n ],\n },\n);\n"],"mappings":"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","names":["className","appearance","size","animation","ring","ref","ariaInvalidProp","errorMessage","id","as","rest","controlId","errorId","motionProps","ariaInvalid"]}
@@ -0,0 +1,84 @@
1
+ import * as react from 'react';
2
+ import { ReactNode, Ref, CSSProperties, HTMLAttributes } from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import { VariantProps } from 'class-variance-authority';
5
+ import * as class_variance_authority_types from 'class-variance-authority/types';
6
+ import { HTMLMotionProps } from 'framer-motion';
7
+
8
+ declare const modalOverlayVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
9
+ declare const modalTriggerVariants: (props?: ({
10
+ appearance?: "default" | "glass" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gray" | "amber" | "violet" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
11
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
12
+ declare const modalContentVariants: (props?: ({
13
+ size?: "sm" | "md" | "lg" | "xl" | "full" | null | undefined;
14
+ position?: "center" | "top" | "bottom" | null | undefined;
15
+ appearance?: "default" | "glass" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gray" | "amber" | "violet" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
16
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
17
+
18
+ type ModalAnimation = "none" | "fade" | "scale" | "slide-up" | "slide-down";
19
+ type ModalContentVariantProps = VariantProps<typeof modalContentVariants>;
20
+ type ModalProps = {
21
+ open?: boolean;
22
+ defaultOpen?: boolean;
23
+ onOpenChange?: (open: boolean) => void;
24
+ children?: ReactNode;
25
+ };
26
+ type ModalTriggerProps = HTMLAttributes<HTMLButtonElement> & {
27
+ ref?: Ref<HTMLButtonElement>;
28
+ appearance?: VariantProps<typeof modalTriggerVariants>["appearance"];
29
+ };
30
+ type ModalContentProps = ModalContentVariantProps & {
31
+ animation?: ModalAnimation;
32
+ className?: string;
33
+ children?: ReactNode;
34
+ ref?: Ref<HTMLDivElement>;
35
+ id?: string;
36
+ style?: CSSProperties;
37
+ };
38
+ type ModalSectionProps = {
39
+ className?: string;
40
+ children?: ReactNode;
41
+ };
42
+
43
+ declare function Modal({ open, defaultOpen, onOpenChange, children }: ModalProps): react_jsx_runtime.JSX.Element;
44
+ declare namespace Modal {
45
+ var displayName: string;
46
+ }
47
+ declare function ModalTrigger({ className, children, appearance, onClick, ref, ...rest }: ModalTriggerProps): react_jsx_runtime.JSX.Element;
48
+ declare namespace ModalTrigger {
49
+ var displayName: string;
50
+ }
51
+ declare function ModalContent({ className, size, position, appearance, animation, children, ref, id, style, }: ModalContentProps): react.ReactPortal | null;
52
+ declare namespace ModalContent {
53
+ var displayName: string;
54
+ }
55
+ declare function ModalHeader({ className, children }: ModalSectionProps): react_jsx_runtime.JSX.Element;
56
+ declare namespace ModalHeader {
57
+ var displayName: string;
58
+ }
59
+ declare function ModalBody({ className, children }: ModalSectionProps): react_jsx_runtime.JSX.Element;
60
+ declare namespace ModalBody {
61
+ var displayName: string;
62
+ }
63
+ declare function ModalFooter({ className, children }: ModalSectionProps): react_jsx_runtime.JSX.Element;
64
+ declare namespace ModalFooter {
65
+ var displayName: string;
66
+ }
67
+ declare function ModalTitle({ className, children }: ModalSectionProps): react_jsx_runtime.JSX.Element;
68
+ declare namespace ModalTitle {
69
+ var displayName: string;
70
+ }
71
+ declare function ModalDescription({ className, children }: ModalSectionProps): react_jsx_runtime.JSX.Element;
72
+ declare namespace ModalDescription {
73
+ var displayName: string;
74
+ }
75
+ declare function ModalClose({ className, children, ...rest }: ModalSectionProps): react_jsx_runtime.JSX.Element;
76
+ declare namespace ModalClose {
77
+ var displayName: string;
78
+ }
79
+
80
+ type ModalPresetMotionProps = Pick<HTMLMotionProps<"div">, "initial" | "animate" | "exit" | "transition">;
81
+ type ModalAnimationPresets = Record<ModalAnimation, ModalPresetMotionProps>;
82
+ declare const modalOverlayAnimationPresets: ModalAnimationPresets;
83
+
84
+ export { Modal, type ModalAnimation, ModalBody, ModalClose, ModalContent, type ModalContentProps, ModalDescription, ModalFooter, ModalHeader, type ModalProps, type ModalSectionProps, ModalTitle, ModalTrigger, type ModalTriggerProps, modalContentVariants, modalOverlayAnimationPresets, modalOverlayVariants };
@@ -0,0 +1,84 @@
1
+ import * as react from 'react';
2
+ import { ReactNode, Ref, CSSProperties, HTMLAttributes } from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import { VariantProps } from 'class-variance-authority';
5
+ import * as class_variance_authority_types from 'class-variance-authority/types';
6
+ import { HTMLMotionProps } from 'framer-motion';
7
+
8
+ declare const modalOverlayVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
9
+ declare const modalTriggerVariants: (props?: ({
10
+ appearance?: "default" | "glass" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gray" | "amber" | "violet" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
11
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
12
+ declare const modalContentVariants: (props?: ({
13
+ size?: "sm" | "md" | "lg" | "xl" | "full" | null | undefined;
14
+ position?: "center" | "top" | "bottom" | null | undefined;
15
+ appearance?: "default" | "glass" | "sky" | "rose" | "purple" | "pink" | "orange" | "yellow" | "teal" | "indigo" | "emerald" | "gray" | "amber" | "violet" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
16
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
17
+
18
+ type ModalAnimation = "none" | "fade" | "scale" | "slide-up" | "slide-down";
19
+ type ModalContentVariantProps = VariantProps<typeof modalContentVariants>;
20
+ type ModalProps = {
21
+ open?: boolean;
22
+ defaultOpen?: boolean;
23
+ onOpenChange?: (open: boolean) => void;
24
+ children?: ReactNode;
25
+ };
26
+ type ModalTriggerProps = HTMLAttributes<HTMLButtonElement> & {
27
+ ref?: Ref<HTMLButtonElement>;
28
+ appearance?: VariantProps<typeof modalTriggerVariants>["appearance"];
29
+ };
30
+ type ModalContentProps = ModalContentVariantProps & {
31
+ animation?: ModalAnimation;
32
+ className?: string;
33
+ children?: ReactNode;
34
+ ref?: Ref<HTMLDivElement>;
35
+ id?: string;
36
+ style?: CSSProperties;
37
+ };
38
+ type ModalSectionProps = {
39
+ className?: string;
40
+ children?: ReactNode;
41
+ };
42
+
43
+ declare function Modal({ open, defaultOpen, onOpenChange, children }: ModalProps): react_jsx_runtime.JSX.Element;
44
+ declare namespace Modal {
45
+ var displayName: string;
46
+ }
47
+ declare function ModalTrigger({ className, children, appearance, onClick, ref, ...rest }: ModalTriggerProps): react_jsx_runtime.JSX.Element;
48
+ declare namespace ModalTrigger {
49
+ var displayName: string;
50
+ }
51
+ declare function ModalContent({ className, size, position, appearance, animation, children, ref, id, style, }: ModalContentProps): react.ReactPortal | null;
52
+ declare namespace ModalContent {
53
+ var displayName: string;
54
+ }
55
+ declare function ModalHeader({ className, children }: ModalSectionProps): react_jsx_runtime.JSX.Element;
56
+ declare namespace ModalHeader {
57
+ var displayName: string;
58
+ }
59
+ declare function ModalBody({ className, children }: ModalSectionProps): react_jsx_runtime.JSX.Element;
60
+ declare namespace ModalBody {
61
+ var displayName: string;
62
+ }
63
+ declare function ModalFooter({ className, children }: ModalSectionProps): react_jsx_runtime.JSX.Element;
64
+ declare namespace ModalFooter {
65
+ var displayName: string;
66
+ }
67
+ declare function ModalTitle({ className, children }: ModalSectionProps): react_jsx_runtime.JSX.Element;
68
+ declare namespace ModalTitle {
69
+ var displayName: string;
70
+ }
71
+ declare function ModalDescription({ className, children }: ModalSectionProps): react_jsx_runtime.JSX.Element;
72
+ declare namespace ModalDescription {
73
+ var displayName: string;
74
+ }
75
+ declare function ModalClose({ className, children, ...rest }: ModalSectionProps): react_jsx_runtime.JSX.Element;
76
+ declare namespace ModalClose {
77
+ var displayName: string;
78
+ }
79
+
80
+ type ModalPresetMotionProps = Pick<HTMLMotionProps<"div">, "initial" | "animate" | "exit" | "transition">;
81
+ type ModalAnimationPresets = Record<ModalAnimation, ModalPresetMotionProps>;
82
+ declare const modalOverlayAnimationPresets: ModalAnimationPresets;
83
+
84
+ export { Modal, type ModalAnimation, ModalBody, ModalClose, ModalContent, type ModalContentProps, ModalDescription, ModalFooter, ModalHeader, type ModalProps, type ModalSectionProps, ModalTitle, ModalTrigger, type ModalTriggerProps, modalContentVariants, modalOverlayAnimationPresets, modalOverlayVariants };