@spark-ui/components 17.2.3 → 17.2.4-beta.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 (302) hide show
  1. package/dist/DialogContent.styles-BSxCCi-u.mjs +62 -0
  2. package/dist/DialogContent.styles-BSxCCi-u.mjs.map +1 -0
  3. package/dist/DialogContent.styles-CAhJtUud.js +2 -0
  4. package/dist/DialogContent.styles-CAhJtUud.js.map +1 -0
  5. package/dist/FormFieldRequiredIndicator-CtgkvPZo.js +2 -0
  6. package/dist/FormFieldRequiredIndicator-CtgkvPZo.js.map +1 -0
  7. package/dist/FormFieldRequiredIndicator-DOGQ_HxO.mjs +14 -0
  8. package/dist/FormFieldRequiredIndicator-DOGQ_HxO.mjs.map +1 -0
  9. package/dist/accordion/index.js +2 -2
  10. package/dist/accordion/index.js.map +1 -1
  11. package/dist/accordion/index.mjs +99 -161
  12. package/dist/accordion/index.mjs.map +1 -1
  13. package/dist/alert-dialog/index.js +2 -2
  14. package/dist/alert-dialog/index.js.map +1 -1
  15. package/dist/alert-dialog/index.mjs +169 -235
  16. package/dist/alert-dialog/index.mjs.map +1 -1
  17. package/dist/avatar/index.js +2 -2
  18. package/dist/avatar/index.js.map +1 -1
  19. package/dist/avatar/index.mjs +187 -224
  20. package/dist/avatar/index.mjs.map +1 -1
  21. package/dist/badge/index.js +2 -2
  22. package/dist/badge/index.js.map +1 -1
  23. package/dist/badge/index.mjs +115 -81
  24. package/dist/badge/index.mjs.map +1 -1
  25. package/dist/breadcrumb/index.js +2 -2
  26. package/dist/breadcrumb/index.js.map +1 -1
  27. package/dist/breadcrumb/index.mjs +73 -106
  28. package/dist/breadcrumb/index.mjs.map +1 -1
  29. package/dist/button/index.js +1 -2
  30. package/dist/button/index.mjs +2 -5
  31. package/dist/button-BTDRzvpB.js +2 -0
  32. package/dist/button-BTDRzvpB.js.map +1 -0
  33. package/dist/button-_YZ_4J42.mjs +643 -0
  34. package/dist/button-_YZ_4J42.mjs.map +1 -0
  35. package/dist/card/index.js +2 -2
  36. package/dist/card/index.js.map +1 -1
  37. package/dist/card/index.mjs +327 -394
  38. package/dist/card/index.mjs.map +1 -1
  39. package/dist/carousel/index.js +2 -2
  40. package/dist/carousel/index.js.map +1 -1
  41. package/dist/carousel/index.mjs +515 -618
  42. package/dist/carousel/index.mjs.map +1 -1
  43. package/dist/checkbox/index.js +2 -2
  44. package/dist/checkbox/index.js.map +1 -1
  45. package/dist/checkbox/index.mjs +213 -246
  46. package/dist/checkbox/index.mjs.map +1 -1
  47. package/dist/chip/index.js +2 -2
  48. package/dist/chip/index.js.map +1 -1
  49. package/dist/chip/index.mjs +601 -652
  50. package/dist/chip/index.mjs.map +1 -1
  51. package/dist/chunk-C91j1N6u.js +1 -0
  52. package/dist/circular-meter/index.js +2 -2
  53. package/dist/circular-meter/index.js.map +1 -1
  54. package/dist/circular-meter/index.mjs +354 -309
  55. package/dist/circular-meter/index.mjs.map +1 -1
  56. package/dist/collapsible/index.js +2 -2
  57. package/dist/collapsible/index.js.map +1 -1
  58. package/dist/collapsible/index.mjs +53 -53
  59. package/dist/collapsible/index.mjs.map +1 -1
  60. package/dist/combobox/index.js +2 -2
  61. package/dist/combobox/index.js.map +1 -1
  62. package/dist/combobox/index.mjs +721 -876
  63. package/dist/combobox/index.mjs.map +1 -1
  64. package/dist/dialog/index.js +2 -2
  65. package/dist/dialog/index.js.map +1 -1
  66. package/dist/dialog/index.mjs +181 -206
  67. package/dist/dialog/index.mjs.map +1 -1
  68. package/dist/divider/index.js +2 -2
  69. package/dist/divider/index.js.map +1 -1
  70. package/dist/divider/index.mjs +178 -183
  71. package/dist/divider/index.mjs.map +1 -1
  72. package/dist/drawer/index.js +2 -2
  73. package/dist/drawer/index.js.map +1 -1
  74. package/dist/drawer/index.mjs +277 -309
  75. package/dist/drawer/index.mjs.map +1 -1
  76. package/dist/dropdown/index.js +2 -2
  77. package/dist/dropdown/index.js.map +1 -1
  78. package/dist/dropdown/index.mjs +429 -492
  79. package/dist/dropdown/index.mjs.map +1 -1
  80. package/dist/file-upload/index.js +2 -2
  81. package/dist/file-upload/index.js.map +1 -1
  82. package/dist/file-upload/index.mjs +540 -677
  83. package/dist/file-upload/index.mjs.map +1 -1
  84. package/dist/form-field/index.js +1 -2
  85. package/dist/form-field/index.mjs +2 -284
  86. package/dist/form-field-B8QzM655.mjs +231 -0
  87. package/dist/form-field-B8QzM655.mjs.map +1 -0
  88. package/dist/form-field-Bu_0E9tb.js +2 -0
  89. package/dist/form-field-Bu_0E9tb.js.map +1 -0
  90. package/dist/icon/index.js +1 -2
  91. package/dist/icon/index.mjs +2 -5
  92. package/dist/icon-CRPcdgYp.js +2 -0
  93. package/dist/icon-CRPcdgYp.js.map +1 -0
  94. package/dist/icon-D05Uqh8_.mjs +41 -0
  95. package/dist/icon-D05Uqh8_.mjs.map +1 -0
  96. package/dist/icon-button/index.js +1 -2
  97. package/dist/icon-button/index.mjs +2 -5
  98. package/dist/icon-button-6p3O7NIm.mjs +28 -0
  99. package/dist/icon-button-6p3O7NIm.mjs.map +1 -0
  100. package/dist/icon-button-CykysbgJ.js +2 -0
  101. package/dist/icon-button-CykysbgJ.js.map +1 -0
  102. package/dist/input/index.js +1 -2
  103. package/dist/input/index.mjs +2 -455
  104. package/dist/input-CmYeHYWQ.mjs +355 -0
  105. package/dist/input-CmYeHYWQ.mjs.map +1 -0
  106. package/dist/input-DNr40G2Z.js +2 -0
  107. package/dist/input-DNr40G2Z.js.map +1 -0
  108. package/dist/input-otp/index.js +2 -2
  109. package/dist/input-otp/index.js.map +1 -1
  110. package/dist/input-otp/index.mjs +344 -407
  111. package/dist/input-otp/index.mjs.map +1 -1
  112. package/dist/kbd/index.js +2 -2
  113. package/dist/kbd/index.js.map +1 -1
  114. package/dist/kbd/index.mjs +12 -17
  115. package/dist/kbd/index.mjs.map +1 -1
  116. package/dist/label/index.js +1 -2
  117. package/dist/label/index.mjs +2 -40
  118. package/dist/label-BqRlrca0.mjs +31 -0
  119. package/dist/label-BqRlrca0.mjs.map +1 -0
  120. package/dist/label-DU0p0d-f.js +2 -0
  121. package/dist/label-DU0p0d-f.js.map +1 -0
  122. package/dist/link-box/index.js +2 -2
  123. package/dist/link-box/index.js.map +1 -1
  124. package/dist/link-box/index.mjs +36 -34
  125. package/dist/link-box/index.mjs.map +1 -1
  126. package/dist/meter/index.js +2 -2
  127. package/dist/meter/index.js.map +1 -1
  128. package/dist/meter/index.mjs +149 -171
  129. package/dist/meter/index.mjs.map +1 -1
  130. package/dist/pagination/index.js +2 -2
  131. package/dist/pagination/index.js.map +1 -1
  132. package/dist/pagination/index.mjs +253 -214
  133. package/dist/pagination/index.mjs.map +1 -1
  134. package/dist/popover/index.js +1 -2
  135. package/dist/popover/index.mjs +2 -239
  136. package/dist/popover-CxZAQmw6.mjs +211 -0
  137. package/dist/popover-CxZAQmw6.mjs.map +1 -0
  138. package/dist/popover-GOovJ27J.js +2 -0
  139. package/dist/popover-GOovJ27J.js.map +1 -0
  140. package/dist/portal/index.js +2 -2
  141. package/dist/portal/index.js.map +1 -1
  142. package/dist/portal/index.mjs +8 -7
  143. package/dist/portal/index.mjs.map +1 -1
  144. package/dist/progress/index.js +1 -2
  145. package/dist/progress/index.mjs +2 -178
  146. package/dist/progress-cEf3tFbn.mjs +132 -0
  147. package/dist/progress-cEf3tFbn.mjs.map +1 -0
  148. package/dist/progress-rJZcPJsZ.js +2 -0
  149. package/dist/progress-rJZcPJsZ.js.map +1 -0
  150. package/dist/progress-tracker/index.js +2 -2
  151. package/dist/progress-tracker/index.js.map +1 -1
  152. package/dist/progress-tracker/index.mjs +303 -380
  153. package/dist/progress-tracker/index.mjs.map +1 -1
  154. package/dist/radio-group/index.js +2 -2
  155. package/dist/radio-group/index.js.map +1 -1
  156. package/dist/radio-group/index.mjs +204 -213
  157. package/dist/radio-group/index.mjs.map +1 -1
  158. package/dist/rating/index.js +2 -2
  159. package/dist/rating/index.js.map +1 -1
  160. package/dist/rating/index.mjs +189 -244
  161. package/dist/rating/index.mjs.map +1 -1
  162. package/dist/rating-display/index.js +2 -2
  163. package/dist/rating-display/index.js.map +1 -1
  164. package/dist/rating-display/index.mjs +165 -166
  165. package/dist/rating-display/index.mjs.map +1 -1
  166. package/dist/scrolling-list/index.js +2 -2
  167. package/dist/scrolling-list/index.js.map +1 -1
  168. package/dist/scrolling-list/index.mjs +216 -273
  169. package/dist/scrolling-list/index.mjs.map +1 -1
  170. package/dist/segmented-control/index.js +2 -2
  171. package/dist/segmented-control/index.js.map +1 -1
  172. package/dist/segmented-control/index.mjs +146 -180
  173. package/dist/segmented-control/index.mjs.map +1 -1
  174. package/dist/segmented-gauge/index.js +2 -2
  175. package/dist/segmented-gauge/index.js.map +1 -1
  176. package/dist/segmented-gauge/index.mjs +146 -195
  177. package/dist/segmented-gauge/index.mjs.map +1 -1
  178. package/dist/select/index.js +2 -2
  179. package/dist/select/index.js.map +1 -1
  180. package/dist/select/index.mjs +279 -327
  181. package/dist/select/index.mjs.map +1 -1
  182. package/dist/skeleton/index.js +2 -2
  183. package/dist/skeleton/index.js.map +1 -1
  184. package/dist/skeleton/index.mjs +92 -114
  185. package/dist/skeleton/index.mjs.map +1 -1
  186. package/dist/slider/index.js +2 -2
  187. package/dist/slider/index.js.map +1 -1
  188. package/dist/slider/index.mjs +259 -326
  189. package/dist/slider/index.mjs.map +1 -1
  190. package/dist/slot/index.js +2 -2
  191. package/dist/slot/index.js.map +1 -1
  192. package/dist/slot/index.mjs +12 -7
  193. package/dist/slot/index.mjs.map +1 -1
  194. package/dist/snackbar/index.js +2 -2
  195. package/dist/snackbar/index.js.map +1 -1
  196. package/dist/snackbar/index.mjs +404 -529
  197. package/dist/snackbar/index.mjs.map +1 -1
  198. package/dist/spinner/index.js +1 -2
  199. package/dist/spinner/index.mjs +2 -5
  200. package/dist/spinner-DFUoYvmm.js +2 -0
  201. package/dist/spinner-DFUoYvmm.js.map +1 -0
  202. package/dist/spinner-DULLiM6a.mjs +56 -0
  203. package/dist/spinner-DULLiM6a.mjs.map +1 -0
  204. package/dist/src/avatar/index.d.mts +2 -2
  205. package/dist/src/avatar/index.d.ts +2 -2
  206. package/dist/src/file-upload/index.d.mts +1 -1
  207. package/dist/src/file-upload/index.d.ts +1 -1
  208. package/dist/stepper/index.js +2 -2
  209. package/dist/stepper/index.js.map +1 -1
  210. package/dist/stepper/index.mjs +139 -176
  211. package/dist/stepper/index.mjs.map +1 -1
  212. package/dist/switch/index.js +2 -2
  213. package/dist/switch/index.js.map +1 -1
  214. package/dist/switch/index.mjs +194 -197
  215. package/dist/switch/index.mjs.map +1 -1
  216. package/dist/tabs/index.js +2 -2
  217. package/dist/tabs/index.js.map +1 -1
  218. package/dist/tabs/index.mjs +337 -389
  219. package/dist/tabs/index.mjs.map +1 -1
  220. package/dist/tag/index.js +2 -2
  221. package/dist/tag/index.js.map +1 -1
  222. package/dist/tag/index.mjs +192 -211
  223. package/dist/tag/index.mjs.map +1 -1
  224. package/dist/text-link/index.js +2 -2
  225. package/dist/text-link/index.js.map +1 -1
  226. package/dist/text-link/index.mjs +44 -5
  227. package/dist/text-link/index.mjs.map +1 -1
  228. package/dist/textarea/index.js +2 -2
  229. package/dist/textarea/index.js.map +1 -1
  230. package/dist/textarea/index.mjs +51 -50
  231. package/dist/textarea/index.mjs.map +1 -1
  232. package/dist/toast/index.js +2 -2
  233. package/dist/toast/index.js.map +1 -1
  234. package/dist/toast/index.mjs +314 -367
  235. package/dist/toast/index.mjs.map +1 -1
  236. package/dist/useRenderSlot-DP4fYerF.mjs +11 -0
  237. package/dist/useRenderSlot-DP4fYerF.mjs.map +1 -0
  238. package/dist/useRenderSlot-Xxf_s88b.js +2 -0
  239. package/dist/useRenderSlot-Xxf_s88b.js.map +1 -0
  240. package/dist/visually-hidden/index.js +2 -2
  241. package/dist/visually-hidden/index.js.map +1 -1
  242. package/dist/visually-hidden/index.mjs +25 -5
  243. package/dist/visually-hidden/index.mjs.map +1 -1
  244. package/package.json +4 -4
  245. package/dist/Button-1M9DcZl0.mjs +0 -704
  246. package/dist/Button-1M9DcZl0.mjs.map +0 -1
  247. package/dist/Button-FZceRWG2.js +0 -2
  248. package/dist/Button-FZceRWG2.js.map +0 -1
  249. package/dist/DialogContent.styles-CziMQtYr.js +0 -2
  250. package/dist/DialogContent.styles-CziMQtYr.js.map +0 -1
  251. package/dist/DialogContent.styles-Du7_Dkde.mjs +0 -60
  252. package/dist/DialogContent.styles-Du7_Dkde.mjs.map +0 -1
  253. package/dist/FormFieldRequiredIndicator-CHfcoT2y.js +0 -2
  254. package/dist/FormFieldRequiredIndicator-CHfcoT2y.js.map +0 -1
  255. package/dist/FormFieldRequiredIndicator-DTnCGiX2.mjs +0 -13
  256. package/dist/FormFieldRequiredIndicator-DTnCGiX2.mjs.map +0 -1
  257. package/dist/Icon-BO327oHU.mjs +0 -57
  258. package/dist/Icon-BO327oHU.mjs.map +0 -1
  259. package/dist/Icon-C-cNTnzd.js +0 -2
  260. package/dist/Icon-C-cNTnzd.js.map +0 -1
  261. package/dist/IconButton-BR1bJSQA.js +0 -2
  262. package/dist/IconButton-BR1bJSQA.js.map +0 -1
  263. package/dist/IconButton-DdB3Pq13.mjs +0 -43
  264. package/dist/IconButton-DdB3Pq13.mjs.map +0 -1
  265. package/dist/Slot-DLY1rJrG.mjs +0 -14
  266. package/dist/Slot-DLY1rJrG.mjs.map +0 -1
  267. package/dist/Slot-DQ8z2zsy.js +0 -2
  268. package/dist/Slot-DQ8z2zsy.js.map +0 -1
  269. package/dist/Spinner-Br4Rp9V2.js +0 -2
  270. package/dist/Spinner-Br4Rp9V2.js.map +0 -1
  271. package/dist/Spinner-Co3AjkQV.mjs +0 -68
  272. package/dist/Spinner-Co3AjkQV.mjs.map +0 -1
  273. package/dist/TextLink-5MvP0P8D.js +0 -2
  274. package/dist/TextLink-5MvP0P8D.js.map +0 -1
  275. package/dist/TextLink-Cc_LeVcx.mjs +0 -57
  276. package/dist/TextLink-Cc_LeVcx.mjs.map +0 -1
  277. package/dist/VisuallyHidden-CB6Nx76j.js +0 -2
  278. package/dist/VisuallyHidden-CB6Nx76j.js.map +0 -1
  279. package/dist/VisuallyHidden-DjlV0-CW.mjs +0 -28
  280. package/dist/VisuallyHidden-DjlV0-CW.mjs.map +0 -1
  281. package/dist/button/index.js.map +0 -1
  282. package/dist/button/index.mjs.map +0 -1
  283. package/dist/form-field/index.js.map +0 -1
  284. package/dist/form-field/index.mjs.map +0 -1
  285. package/dist/icon/index.js.map +0 -1
  286. package/dist/icon/index.mjs.map +0 -1
  287. package/dist/icon-button/index.js.map +0 -1
  288. package/dist/icon-button/index.mjs.map +0 -1
  289. package/dist/input/index.js.map +0 -1
  290. package/dist/input/index.mjs.map +0 -1
  291. package/dist/label/index.js.map +0 -1
  292. package/dist/label/index.mjs.map +0 -1
  293. package/dist/popover/index.js.map +0 -1
  294. package/dist/popover/index.mjs.map +0 -1
  295. package/dist/progress/index.js.map +0 -1
  296. package/dist/progress/index.mjs.map +0 -1
  297. package/dist/spinner/index.js.map +0 -1
  298. package/dist/spinner/index.mjs.map +0 -1
  299. package/dist/useRenderSlot-Bta2kdp4.mjs +0 -10
  300. package/dist/useRenderSlot-Bta2kdp4.mjs.map +0 -1
  301. package/dist/useRenderSlot-DATwjgpo.js +0 -2
  302. package/dist/useRenderSlot-DATwjgpo.js.map +0 -1
@@ -1,411 +1,348 @@
1
- import { jsxs as se, jsx as I } from "react/jsx-runtime";
2
- import { cva as ae, cx as ve } from "class-variance-authority";
3
- import { createContext as he, useContext as ye, useId as xe, useRef as te, useState as ne, useEffect as J, useMemo as L, Children as oe, isValidElement as ie, cloneElement as re } from "react";
4
- import { useFormFieldControl as Ie } from "@spark-ui/components/form-field";
5
- const ce = he(null), ge = () => {
6
- const e = ye(ce);
7
- if (!e)
8
- throw new Error("InputOTP components must be used within InputOTP");
9
- return e;
1
+ import { cva as e, cx as t } from "class-variance-authority";
2
+ import { Children as n, cloneElement as r, createContext as i, isValidElement as a, useContext as o, useEffect as s, useId as c, useMemo as l, useRef as u, useState as d } from "react";
3
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
4
+ import { useFormFieldControl as m } from "@spark-ui/components/form-field";
5
+ //#region src/input-otp/InputOTPContext.tsx
6
+ var h = i(null), g = () => {
7
+ let e = o(h);
8
+ if (!e) throw Error("InputOTP components must be used within InputOTP");
9
+ return e;
10
10
  };
11
- ae(["relative", "inline-flex", "items-center", "gap-sm"]);
12
- const le = ae(
13
- [
14
- // Base slot styles
15
- "relative h-[50px] w-sz-40",
16
- "border-sm rounded-md",
17
- "text-center text-display-3 text-on-surface",
18
- "outline-hidden",
19
- "transition-colors",
20
- "flex items-center justify-center",
21
- // Slot that receives focus when clicking the group (first empty or last slot)
22
- // Use data-[focus-target=true]:... for distinct styles
23
- // Active state (when focused)
24
- "data-[active=true]:ring-1",
25
- "data-[active=true]:ring-inset",
26
- "data-[active=true]:ring-l-2",
27
- "data-[active=true]:border-focus",
28
- "data-[active=true]:z-raised ring-focus",
29
- // Disabled state
30
- "data-[disabled=true]:cursor-not-allowed",
31
- "data-[disabled=true]:border-outline",
32
- "data-[disabled=true]:bg-on-surface/dim-5",
33
- "data-[disabled=true]:text-on-surface/dim-3",
34
- // Read-only state (same as disabled but text stays normal)
35
- "data-[readonly=true]:cursor-default",
36
- "data-[readonly=true]:data-[active=false]:border-outline",
37
- "data-[readonly=true]:bg-on-surface/dim-5",
38
- "group-hover:data-[focus-target=true]:data-[disabled=false]:border-outline-high"
39
- ],
40
- {
41
- variants: {
42
- /**
43
- * Color scheme of the slot
44
- */
45
- intent: {
46
- neutral: ["data-[filled=true]:bg-neutral-container bg-surface border-outline"],
47
- success: ["border-success bg-success-container text-on-success-container"],
48
- alert: ["border-alert bg-alert-container text-on-alert-container"],
49
- error: ["border-error bg-error-container text-on-error-container"]
50
- }
51
- },
52
- defaultVariants: {
53
- intent: "neutral"
54
- }
55
- }
56
- ), Fe = le, E = ({ index: e, className: o, ...t }) => {
57
- const i = ge(), r = e ?? 0, d = i.slots[r];
58
- if (!d)
59
- return null;
60
- const { char: p, isActive: g, hasFakeCaret: v } = d, O = !p, T = O && !v && i.placeholder, h = r === i.activeIndex;
61
- return /* @__PURE__ */ se(
62
- "div",
63
- {
64
- className: le({
65
- intent: i.intent,
66
- className: o
67
- }),
68
- "data-active": g,
69
- "data-disabled": i.disabled,
70
- "data-readonly": i.readOnly,
71
- "data-filled": !O,
72
- "data-focus-target": h,
73
- "data-valid": i.intent !== "error",
74
- ...t,
75
- children: [
76
- /* @__PURE__ */ I("span", { className: T ? "text-on-surface/dim-3" : "", children: i.type === "password" && p ? "•" : p || (!v && i.placeholder ? i.placeholder : "") }),
77
- v && /* @__PURE__ */ I(
78
- "span",
79
- {
80
- className: "pointer-events-none absolute inset-0 flex items-center justify-center",
81
- "aria-hidden": "true",
82
- children: /* @__PURE__ */ I("span", { className: "bg-on-surface animate-standalone-caret-blink h-sz-24 w-sz-2" })
83
- }
84
- )
85
- ]
86
- }
87
- );
11
+ e([
12
+ "relative",
13
+ "inline-flex",
14
+ "items-center",
15
+ "gap-sm"
16
+ ]);
17
+ var _ = e([
18
+ "relative h-[50px] w-sz-40",
19
+ "border-sm rounded-md",
20
+ "text-center text-display-3 text-on-surface",
21
+ "outline-hidden",
22
+ "transition-colors",
23
+ "flex items-center justify-center",
24
+ "data-[active=true]:ring-1",
25
+ "data-[active=true]:ring-inset",
26
+ "data-[active=true]:ring-l-2",
27
+ "data-[active=true]:border-focus",
28
+ "data-[active=true]:z-raised ring-focus",
29
+ "data-[disabled=true]:cursor-not-allowed",
30
+ "data-[disabled=true]:border-outline",
31
+ "data-[disabled=true]:bg-on-surface/dim-5",
32
+ "data-[disabled=true]:text-on-surface/dim-3",
33
+ "data-[readonly=true]:cursor-default",
34
+ "data-[readonly=true]:data-[active=false]:border-outline",
35
+ "data-[readonly=true]:bg-on-surface/dim-5",
36
+ "group-hover:data-[focus-target=true]:data-[disabled=false]:border-outline-high"
37
+ ], {
38
+ variants: { intent: {
39
+ neutral: ["data-[filled=true]:bg-neutral-container bg-surface border-outline"],
40
+ success: ["border-success bg-success-container text-on-success-container"],
41
+ alert: ["border-alert bg-alert-container text-on-alert-container"],
42
+ error: ["border-error bg-error-container text-on-error-container"]
43
+ } },
44
+ defaultVariants: { intent: "neutral" }
45
+ }), v = _, y = ({ index: e, className: t, ...n }) => {
46
+ let r = g(), i = e ?? 0, a = r.slots[i];
47
+ if (!a) return null;
48
+ let { char: o, isActive: s, hasFakeCaret: c } = a, l = !o, u = l && !c && r.placeholder, d = i === r.activeIndex;
49
+ return /* @__PURE__ */ p("div", {
50
+ className: _({
51
+ intent: r.intent,
52
+ className: t
53
+ }),
54
+ "data-active": s,
55
+ "data-disabled": r.disabled,
56
+ "data-readonly": r.readOnly,
57
+ "data-filled": !l,
58
+ "data-focus-target": d,
59
+ "data-valid": r.intent !== "error",
60
+ ...n,
61
+ children: [/* @__PURE__ */ f("span", {
62
+ className: u ? "text-on-surface/dim-3" : "",
63
+ children: r.type === "password" && o ? "•" : o || (!c && r.placeholder ? r.placeholder : "")
64
+ }), c && /* @__PURE__ */ f("span", {
65
+ className: "pointer-events-none absolute inset-0 flex items-center justify-center",
66
+ "aria-hidden": "true",
67
+ children: /* @__PURE__ */ f("span", { className: "bg-on-surface animate-standalone-caret-blink h-sz-24 w-sz-2" })
68
+ })]
69
+ });
88
70
  };
89
- E.displayName = "InputOTP.Slot";
90
- const Oe = "Backspace", Pe = "ArrowLeft", Te = "ArrowUp", we = "ArrowRight", Ne = "ArrowDown", Re = "e", Se = ({
91
- maxLength: e,
92
- type: o,
93
- value: t,
94
- defaultValue: i,
95
- onValueChange: r,
96
- isValid: d,
97
- disabledProp: p,
98
- readOnlyProp: g,
99
- autoFocus: v,
100
- forceUppercase: O,
101
- filterKeys: T,
102
- pattern: h,
103
- placeholder: D,
104
- nameProp: V
105
- }) => {
106
- const W = xe(), s = te(null), Y = te(null), c = Ie(), w = c.id ?? W, k = V ?? c.name, f = c.disabled ?? p, y = c.readOnly ?? g, _ = c.isInvalid ?? !d, q = c.isRequired ?? !1, F = c.labelId, K = c.description, N = c.state, R = ["success", "alert", "error"].includes(N ?? "") ? N : _ ? "error" : "neutral", P = t !== void 0 ? t : i, M = O ? P.toUpperCase() : P, [$, S] = ne(M), [A, j] = ne(!1), l = t !== void 0 ? t : $, b = Math.min(l.length, e - 1);
107
- J(() => {
108
- s.current && s.current.setSelectionRange(b, b);
109
- }, [b, l.length, e]);
110
- const z = L(
111
- () => Array.from({ length: e }, (n, a) => ({
112
- char: l[a] || "",
113
- isActive: a === b && A,
114
- hasFakeCaret: a === b && !l[a] && !f && !y && A
115
- })),
116
- [e, l, b, A, f, y]
117
- );
118
- J(() => {
119
- s.current && t !== void 0 && (s.current.value = t);
120
- }, [t]), J(() => {
121
- v && s.current && s.current.focus();
122
- }, [v]);
123
- const G = (n) => {
124
- let a = n;
125
- if (O && (a = a.toUpperCase()), o === "number" && (a = a.replace(/[^\d]/g, "")), h)
126
- try {
127
- let x = h;
128
- h.startsWith("^") || (x = `^${h}$`);
129
- const u = new RegExp(x);
130
- a = a.split("").filter((m) => u.test(m)).join("");
131
- } catch (x) {
132
- console.error("Invalid pattern provided to InputOTP:", h, x);
133
- }
134
- return a;
135
- };
136
- return {
137
- uuid: w,
138
- inputRef: s,
139
- containerRef: Y,
140
- name: k,
141
- disabled: f,
142
- readOnly: y,
143
- isInvalid: _,
144
- isRequired: q,
145
- description: K,
146
- maxLength: e,
147
- intent: R,
148
- currentValue: l,
149
- activeIndex: b,
150
- slots: z,
151
- contextValue: {
152
- value: l,
153
- maxLength: e,
154
- slots: z,
155
- activeIndex: b,
156
- intent: R,
157
- disabled: f,
158
- readOnly: y,
159
- placeholder: D,
160
- type: o
161
- },
162
- handleChange: (n) => {
163
- if (f || y) return;
164
- const a = n.target.value, u = G(a).slice(0, e);
165
- r && r(u), t === void 0 && S(u);
166
- const m = Math.min(u.length, e - 1);
167
- s.current && s.current.setSelectionRange(m, m);
168
- },
169
- handleKeyDown: (n) => {
170
- if (f || y) return;
171
- const a = (n.ctrlKey || n.metaKey) && ["a", "c", "v", "x"].includes(n.key.toLowerCase());
172
- if (T.length > 0 && T.includes(n.key) && !a) {
173
- n.preventDefault();
174
- return;
175
- }
176
- switch (n.key) {
177
- case Oe:
178
- n.preventDefault();
179
- const x = l.length;
180
- if (x > 0) {
181
- const u = l.slice(0, x - 1);
182
- r && r(u), t === void 0 && S(u);
183
- const m = Math.max(0, u.length);
184
- s.current && s.current.setSelectionRange(m, m);
185
- }
186
- break;
187
- case Pe:
188
- case we:
189
- n.preventDefault();
190
- break;
191
- case Te:
192
- case Ne:
193
- n.preventDefault();
194
- break;
195
- case Re:
196
- case "E":
197
- o === "number" && n.preventDefault();
198
- break;
199
- }
200
- },
201
- handleCopy: (n) => {
202
- f || (n.preventDefault(), l.length > 0 && n.clipboardData.setData("text/plain", l));
203
- },
204
- handlePaste: (n) => {
205
- if (f || y) return;
206
- n.preventDefault();
207
- const a = n.clipboardData.getData("text");
208
- if (!a) return;
209
- const u = G(a).slice(0, e);
210
- r && r(u), t === void 0 && S(u);
211
- const m = Math.min(u.length, e - 1);
212
- s.current && s.current.setSelectionRange(m, m);
213
- },
214
- handleFocus: () => {
215
- if (j(!0), s.current) {
216
- const n = Math.min(l.length, e - 1);
217
- s.current.setSelectionRange(n, n);
218
- }
219
- },
220
- handleBlur: () => {
221
- j(!1);
222
- },
223
- handleClick: () => {
224
- s.current && s.current.focus();
225
- },
226
- labelId: F
227
- };
228
- }, ue = (e) => {
229
- let o = 0;
230
- return oe.forEach(e, (t) => {
231
- if (ie(t)) {
232
- const i = t.props;
233
- t.type === E || t.type?.displayName === "InputOTP.Slot" ? o++ : i.children && (o += ue(i.children));
234
- }
235
- }), o;
236
- }, de = (e, o = 0) => {
237
- let t = o;
238
- return [oe.map(e, (r) => {
239
- if (ie(r)) {
240
- const d = r.props;
241
- if (r.type === E || r.type?.displayName === "InputOTP.Slot") {
242
- const p = typeof d.index == "number" ? d.index : t++;
243
- return re(r, {
244
- ...d,
245
- index: p
246
- });
247
- } else if (d.children) {
248
- const [p, g] = de(d.children, t);
249
- return t = g, re(r, {
250
- ...r.props,
251
- children: p
252
- });
253
- }
254
- }
255
- return r;
256
- }), t];
257
- }, pe = ({
258
- maxLength: e,
259
- type: o = "text",
260
- value: t,
261
- defaultValue: i = "",
262
- onValueChange: r,
263
- isValid: d = !0,
264
- disabled: p = !1,
265
- readOnly: g = !1,
266
- autoFocus: v = !1,
267
- autoComplete: O = "off",
268
- forceUppercase: T = !1,
269
- filterKeys: h = ["-", "."],
270
- pattern: D,
271
- inputMode: V,
272
- placeholder: W = "-",
273
- name: s,
274
- className: Y,
275
- children: c,
276
- ...w
277
- }) => {
278
- const k = L(() => {
279
- if (e !== void 0)
280
- return e;
281
- const C = ue(c);
282
- return C > 0 ? C : 4;
283
- }, [e, c]), f = L(() => {
284
- const [C] = de(c);
285
- return C;
286
- }, [c]), {
287
- uuid: y,
288
- inputRef: _,
289
- containerRef: q,
290
- name: F,
291
- disabled: K,
292
- readOnly: N,
293
- isInvalid: U,
294
- isRequired: R,
295
- description: P,
296
- currentValue: M,
297
- contextValue: $,
298
- handleChange: S,
299
- handleKeyDown: A,
300
- handleCopy: j,
301
- handlePaste: l,
302
- handleFocus: b,
303
- handleBlur: z,
304
- handleClick: G,
305
- labelId: H
306
- } = Se({
307
- maxLength: k,
308
- type: o,
309
- value: t,
310
- defaultValue: i,
311
- onValueChange: r,
312
- isValid: d,
313
- disabledProp: p,
314
- readOnlyProp: g,
315
- autoFocus: v,
316
- forceUppercase: T,
317
- filterKeys: h,
318
- pattern: D,
319
- placeholder: W,
320
- nameProp: s
321
- }), X = "aria-label" in w ? w["aria-label"] : void 0, { "aria-label": fe, ...ee } = w, B = H ? { "aria-labelledby": H } : X ? { "aria-label": X } : {};
322
- return /* @__PURE__ */ I(ce.Provider, { value: $, children: /* @__PURE__ */ se(
323
- "div",
324
- {
325
- ref: q,
326
- "data-spark-component": "input-otp",
327
- role: "group",
328
- ...B,
329
- ...P ? { "aria-describedby": P } : {},
330
- className: ve(
331
- "group gap-md relative inline-flex w-fit items-center default:cursor-text",
332
- {
333
- "cursor-not-allowed": K,
334
- "cursor-default": N
335
- },
336
- Y
337
- ),
338
- onClick: G,
339
- ...ee,
340
- children: [
341
- F && /* @__PURE__ */ I(
342
- "input",
343
- {
344
- type: "hidden",
345
- name: F,
346
- value: M,
347
- required: R,
348
- "aria-required": R,
349
- "aria-invalid": U,
350
- ...B
351
- }
352
- ),
353
- /* @__PURE__ */ I(
354
- "input",
355
- {
356
- ref: _,
357
- id: y,
358
- type: o === "password" ? "password" : "text",
359
- value: M,
360
- maxLength: k,
361
- autoFocus: v,
362
- autoComplete: O,
363
- disabled: K,
364
- readOnly: N,
365
- pattern: D,
366
- inputMode: V,
367
- ...B,
368
- ...P ? { "aria-describedby": P } : {},
369
- "aria-invalid": U,
370
- onChange: S,
371
- onKeyDown: A,
372
- onCopy: j,
373
- onPaste: l,
374
- onFocus: b,
375
- onBlur: z,
376
- className: "bg-success z-raised absolute inset-0 m-0 p-0 opacity-0 read-only:cursor-default disabled:cursor-not-allowed",
377
- tabIndex: 0
378
- }
379
- ),
380
- f
381
- ]
382
- }
383
- ) });
71
+ y.displayName = "InputOTP.Slot";
72
+ //#endregion
73
+ //#region src/input-otp/useInputOTP.ts
74
+ var b = "Backspace", x = "ArrowLeft", S = "ArrowUp", C = "ArrowRight", w = "ArrowDown", T = "e", E = ({ maxLength: e, type: t, value: n, defaultValue: r, onValueChange: i, isValid: a, disabledProp: o, readOnlyProp: f, autoFocus: p, forceUppercase: h, filterKeys: g, pattern: _, placeholder: v, nameProp: y }) => {
75
+ let E = c(), D = u(null), O = u(null), k = m(), A = k.id ?? E, j = y ?? k.name, M = k.disabled ?? o, N = k.readOnly ?? f, P = k.isInvalid ?? !a, F = k.isRequired ?? !1, I = k.labelId, L = k.description, R = k.state, z = [
76
+ "success",
77
+ "alert",
78
+ "error"
79
+ ].includes(R ?? "") ? R : P ? "error" : "neutral", B = n === void 0 ? r : n, [V, H] = d(h ? B.toUpperCase() : B), [U, W] = d(!1), G = n === void 0 ? V : n, K = Math.min(G.length, e - 1);
80
+ s(() => {
81
+ D.current && D.current.setSelectionRange(K, K);
82
+ }, [
83
+ K,
84
+ G.length,
85
+ e
86
+ ]);
87
+ let q = l(() => Array.from({ length: e }, (e, t) => ({
88
+ char: G[t] || "",
89
+ isActive: t === K && U,
90
+ hasFakeCaret: t === K && !G[t] && !M && !N && U
91
+ })), [
92
+ e,
93
+ G,
94
+ K,
95
+ U,
96
+ M,
97
+ N
98
+ ]);
99
+ s(() => {
100
+ D.current && n !== void 0 && (D.current.value = n);
101
+ }, [n]), s(() => {
102
+ p && D.current && D.current.focus();
103
+ }, [p]);
104
+ let J = (e) => {
105
+ let n = e;
106
+ if (h && (n = n.toUpperCase()), t === "number" && (n = n.replace(/[^\d]/g, "")), _) try {
107
+ let e = _;
108
+ _.startsWith("^") || (e = `^${_}$`);
109
+ let t = new RegExp(e);
110
+ n = n.split("").filter((e) => t.test(e)).join("");
111
+ } catch (e) {
112
+ console.error("Invalid pattern provided to InputOTP:", _, e);
113
+ }
114
+ return n;
115
+ };
116
+ return {
117
+ uuid: A,
118
+ inputRef: D,
119
+ containerRef: O,
120
+ name: j,
121
+ disabled: M,
122
+ readOnly: N,
123
+ isInvalid: P,
124
+ isRequired: F,
125
+ description: L,
126
+ maxLength: e,
127
+ intent: z,
128
+ currentValue: G,
129
+ activeIndex: K,
130
+ slots: q,
131
+ contextValue: {
132
+ value: G,
133
+ maxLength: e,
134
+ slots: q,
135
+ activeIndex: K,
136
+ intent: z,
137
+ disabled: M,
138
+ readOnly: N,
139
+ placeholder: v,
140
+ type: t
141
+ },
142
+ handleChange: (t) => {
143
+ if (M || N) return;
144
+ let r = t.target.value, a = J(r).slice(0, e);
145
+ i && i(a), n === void 0 && H(a);
146
+ let o = Math.min(a.length, e - 1);
147
+ D.current && D.current.setSelectionRange(o, o);
148
+ },
149
+ handleKeyDown: (e) => {
150
+ if (M || N) return;
151
+ let r = (e.ctrlKey || e.metaKey) && [
152
+ "a",
153
+ "c",
154
+ "v",
155
+ "x"
156
+ ].includes(e.key.toLowerCase());
157
+ if (g.length > 0 && g.includes(e.key) && !r) {
158
+ e.preventDefault();
159
+ return;
160
+ }
161
+ switch (e.key) {
162
+ case b:
163
+ e.preventDefault();
164
+ let r = G.length;
165
+ if (r > 0) {
166
+ let e = G.slice(0, r - 1);
167
+ i && i(e), n === void 0 && H(e);
168
+ let t = Math.max(0, e.length);
169
+ D.current && D.current.setSelectionRange(t, t);
170
+ }
171
+ break;
172
+ case x:
173
+ case C:
174
+ e.preventDefault();
175
+ break;
176
+ case S:
177
+ case w:
178
+ e.preventDefault();
179
+ break;
180
+ case T:
181
+ case "E":
182
+ t === "number" && e.preventDefault();
183
+ break;
184
+ default: break;
185
+ }
186
+ },
187
+ handleCopy: (e) => {
188
+ M || (e.preventDefault(), G.length > 0 && e.clipboardData.setData("text/plain", G));
189
+ },
190
+ handlePaste: (t) => {
191
+ if (M || N) return;
192
+ t.preventDefault();
193
+ let r = t.clipboardData.getData("text");
194
+ if (!r) return;
195
+ let a = J(r).slice(0, e);
196
+ i && i(a), n === void 0 && H(a);
197
+ let o = Math.min(a.length, e - 1);
198
+ D.current && D.current.setSelectionRange(o, o);
199
+ },
200
+ handleFocus: () => {
201
+ if (W(!0), D.current) {
202
+ let t = Math.min(G.length, e - 1);
203
+ D.current.setSelectionRange(t, t);
204
+ }
205
+ },
206
+ handleBlur: () => {
207
+ W(!1);
208
+ },
209
+ handleClick: () => {
210
+ D.current && D.current.focus();
211
+ },
212
+ labelId: I
213
+ };
214
+ }, D = (e) => {
215
+ let t = 0;
216
+ return n.forEach(e, (e) => {
217
+ if (a(e)) {
218
+ let n = e.props;
219
+ e.type === y || e.type?.displayName === "InputOTP.Slot" ? t++ : n.children && (t += D(n.children));
220
+ }
221
+ }), t;
222
+ }, O = (e, t = 0) => {
223
+ let i = t;
224
+ return [n.map(e, (e) => {
225
+ if (a(e)) {
226
+ let t = e.props;
227
+ if (e.type === y || e.type?.displayName === "InputOTP.Slot") {
228
+ let n = typeof t.index == "number" ? t.index : i++;
229
+ return r(e, {
230
+ ...t,
231
+ index: n
232
+ });
233
+ } else if (t.children) {
234
+ let [n, a] = O(t.children, i);
235
+ return i = a, r(e, {
236
+ ...e.props,
237
+ children: n
238
+ });
239
+ }
240
+ }
241
+ return e;
242
+ }), i];
243
+ }, k = ({ maxLength: e, type: n = "text", value: r, defaultValue: i = "", onValueChange: a, isValid: o = !0, disabled: s = !1, readOnly: c = !1, autoFocus: u = !1, autoComplete: d = "off", forceUppercase: m = !1, filterKeys: g = ["-", "."], pattern: _, inputMode: v, placeholder: y = "-", name: b, className: x, children: S, ...C }) => {
244
+ let w = l(() => {
245
+ if (e !== void 0) return e;
246
+ let t = D(S);
247
+ return t > 0 ? t : 4;
248
+ }, [e, S]), T = l(() => {
249
+ let [e] = O(S);
250
+ return e;
251
+ }, [S]), { uuid: k, inputRef: A, containerRef: j, name: M, disabled: N, readOnly: P, isInvalid: F, isRequired: I, description: L, currentValue: R, contextValue: z, handleChange: B, handleKeyDown: V, handleCopy: H, handlePaste: U, handleFocus: W, handleBlur: G, handleClick: K, labelId: q } = E({
252
+ maxLength: w,
253
+ type: n,
254
+ value: r,
255
+ defaultValue: i,
256
+ onValueChange: a,
257
+ isValid: o,
258
+ disabledProp: s,
259
+ readOnlyProp: c,
260
+ autoFocus: u,
261
+ forceUppercase: m,
262
+ filterKeys: g,
263
+ pattern: _,
264
+ placeholder: y,
265
+ nameProp: b
266
+ }), J = "aria-label" in C ? C["aria-label"] : void 0, { "aria-label": Y, ...X } = C, Z = q ? { "aria-labelledby": q } : J ? { "aria-label": J } : {};
267
+ return /* @__PURE__ */ f(h.Provider, {
268
+ value: z,
269
+ children: /* @__PURE__ */ p("div", {
270
+ ref: j,
271
+ "data-spark-component": "input-otp",
272
+ role: "group",
273
+ ...Z,
274
+ ...L ? { "aria-describedby": L } : {},
275
+ className: t("group gap-md relative inline-flex w-fit items-center default:cursor-text", {
276
+ "cursor-not-allowed": N,
277
+ "cursor-default": P
278
+ }, x),
279
+ onClick: K,
280
+ ...X,
281
+ children: [
282
+ M && /* @__PURE__ */ f("input", {
283
+ type: "hidden",
284
+ name: M,
285
+ value: R,
286
+ required: I,
287
+ "aria-required": I,
288
+ "aria-invalid": F,
289
+ ...Z
290
+ }),
291
+ /* @__PURE__ */ f("input", {
292
+ ref: A,
293
+ id: k,
294
+ type: n === "password" ? "password" : "text",
295
+ value: R,
296
+ maxLength: w,
297
+ autoFocus: u,
298
+ autoComplete: d,
299
+ disabled: N,
300
+ readOnly: P,
301
+ pattern: _,
302
+ inputMode: v,
303
+ ...Z,
304
+ ...L ? { "aria-describedby": L } : {},
305
+ "aria-invalid": F,
306
+ onChange: B,
307
+ onKeyDown: V,
308
+ onCopy: H,
309
+ onPaste: U,
310
+ onFocus: W,
311
+ onBlur: G,
312
+ className: "bg-success z-raised absolute inset-0 m-0 p-0 opacity-0 read-only:cursor-default disabled:cursor-not-allowed",
313
+ tabIndex: 0
314
+ }),
315
+ T
316
+ ]
317
+ })
318
+ });
384
319
  };
385
- pe.displayName = "InputOTP";
386
- const Q = ({ children: e, className: o, ...t }) => /* @__PURE__ */ I("div", { className: `gap-md flex ${o}`, ...t, children: e });
387
- Q.displayName = "InputOTP.Group";
388
- const Z = ({ className: e, ...o }) => /* @__PURE__ */ I(
389
- "div",
390
- {
391
- className: `text-on-surface/dim-3 flex items-center justify-center ${e || ""}`,
392
- ...o,
393
- children: /* @__PURE__ */ I("div", { className: "h-sz-4 w-sz-8 bg-outline rounded-full" })
394
- }
395
- );
396
- Z.displayName = "InputOTP.Separator";
397
- const Ae = Object.assign(pe, {
398
- Group: Q,
399
- Slot: E,
400
- Separator: Z
320
+ k.displayName = "InputOTP";
321
+ //#endregion
322
+ //#region src/input-otp/InputOTPGroup.tsx
323
+ var A = ({ children: e, className: t, ...n }) => /* @__PURE__ */ f("div", {
324
+ className: `gap-md flex ${t}`,
325
+ ...n,
326
+ children: e
401
327
  });
402
- Ae.displayName = "InputOTP";
403
- Q.displayName = "InputOTP.Group";
404
- E.displayName = "InputOTP.Slot";
405
- Z.displayName = "InputOTP.Separator";
406
- export {
407
- Ae as InputOTP,
408
- le as inputOTPSlotStyles,
409
- Fe as inputOTPStyles
410
- };
411
- //# sourceMappingURL=index.mjs.map
328
+ A.displayName = "InputOTP.Group";
329
+ //#endregion
330
+ //#region src/input-otp/InputOTPSeparator.tsx
331
+ var j = ({ className: e, ...t }) => /* @__PURE__ */ f("div", {
332
+ className: `text-on-surface/dim-3 flex items-center justify-center ${e || ""}`,
333
+ ...t,
334
+ children: /* @__PURE__ */ f("div", { className: "h-sz-4 w-sz-8 bg-outline rounded-full" })
335
+ });
336
+ j.displayName = "InputOTP.Separator";
337
+ //#endregion
338
+ //#region src/input-otp/index.ts
339
+ var M = Object.assign(k, {
340
+ Group: A,
341
+ Slot: y,
342
+ Separator: j
343
+ });
344
+ M.displayName = "InputOTP", A.displayName = "InputOTP.Group", y.displayName = "InputOTP.Slot", j.displayName = "InputOTP.Separator";
345
+ //#endregion
346
+ export { M as InputOTP, _ as inputOTPSlotStyles, v as inputOTPStyles };
347
+
348
+ //# sourceMappingURL=index.mjs.map