@zentauri-ui/zentauri-components 1.5.22 → 1.6.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 (394) hide show
  1. package/README.md +136 -70
  2. package/cli/registry.json +2 -0
  3. package/dist/charts/area.js.map +1 -1
  4. package/dist/charts/area.mjs.map +1 -1
  5. package/dist/charts/bubble/Bubble.d.ts.map +1 -1
  6. package/dist/charts/bubble.js.map +1 -1
  7. package/dist/charts/bubble.mjs.map +1 -1
  8. package/dist/charts/pie/Pie.d.ts.map +1 -1
  9. package/dist/charts/pie.js +20 -2
  10. package/dist/charts/pie.js.map +1 -1
  11. package/dist/charts/pie.mjs +20 -2
  12. package/dist/charts/pie.mjs.map +1 -1
  13. package/dist/charts/shared/types.d.ts.map +1 -1
  14. package/dist/{chunk-G3LEYBRV.mjs → chunk-25EAVVGS.mjs} +61 -58
  15. package/dist/chunk-25EAVVGS.mjs.map +1 -0
  16. package/dist/{chunk-BCZIYH53.js → chunk-3OXIZ4ZO.js} +28 -28
  17. package/dist/chunk-3OXIZ4ZO.js.map +1 -0
  18. package/dist/chunk-3PC7XLJX.js +102 -0
  19. package/dist/chunk-3PC7XLJX.js.map +1 -0
  20. package/dist/chunk-4ECCMHAX.mjs +323 -0
  21. package/dist/chunk-4ECCMHAX.mjs.map +1 -0
  22. package/dist/chunk-4MPNRGUA.mjs +65 -0
  23. package/dist/chunk-4MPNRGUA.mjs.map +1 -0
  24. package/dist/{chunk-Y745GQR2.js → chunk-4PZIDDC6.js} +45 -45
  25. package/dist/chunk-4PZIDDC6.js.map +1 -0
  26. package/dist/{chunk-PWL5WD34.js → chunk-662PJBZD.js} +27 -26
  27. package/dist/chunk-662PJBZD.js.map +1 -0
  28. package/dist/{chunk-TINHLHCN.mjs → chunk-73RHHGIA.mjs} +39 -36
  29. package/dist/chunk-73RHHGIA.mjs.map +1 -0
  30. package/dist/{chunk-OLEMP2HL.js → chunk-746CV3AN.js} +29 -36
  31. package/dist/chunk-746CV3AN.js.map +1 -0
  32. package/dist/{chunk-AUGLZ3AN.js → chunk-BMFPUQZC.js} +50 -50
  33. package/dist/chunk-BMFPUQZC.js.map +1 -0
  34. package/dist/chunk-CFTDAGKD.js +130 -0
  35. package/dist/chunk-CFTDAGKD.js.map +1 -0
  36. package/dist/{chunk-N2OAI2HN.js → chunk-D55YIHBN.js} +15 -15
  37. package/dist/chunk-D55YIHBN.js.map +1 -0
  38. package/dist/chunk-DO2LEXUY.js +62 -0
  39. package/dist/chunk-DO2LEXUY.js.map +1 -0
  40. package/dist/chunk-EU63V22F.mjs +126 -0
  41. package/dist/chunk-EU63V22F.mjs.map +1 -0
  42. package/dist/chunk-EZS47EZW.mjs +70 -0
  43. package/dist/chunk-EZS47EZW.mjs.map +1 -0
  44. package/dist/{chunk-E4FZY7O2.js → chunk-GHJN3Z3V.js} +48 -48
  45. package/dist/chunk-GHJN3Z3V.js.map +1 -0
  46. package/dist/{chunk-MTLLJFUI.mjs → chunk-GIC3J6HR.mjs} +28 -28
  47. package/dist/chunk-GIC3J6HR.mjs.map +1 -0
  48. package/dist/{chunk-C5L465FW.mjs → chunk-HARD4NMB.mjs} +45 -45
  49. package/dist/chunk-HARD4NMB.mjs.map +1 -0
  50. package/dist/{chunk-2VQJ6OIL.js → chunk-HPN7H5ZM.js} +2 -2
  51. package/dist/{chunk-2VQJ6OIL.js.map → chunk-HPN7H5ZM.js.map} +1 -1
  52. package/dist/{chunk-YTRGRHEB.js → chunk-HV7LVRK3.js} +61 -58
  53. package/dist/chunk-HV7LVRK3.js.map +1 -0
  54. package/dist/{chunk-Q5B44QW7.js → chunk-J4LG43O2.js} +51 -51
  55. package/dist/chunk-J4LG43O2.js.map +1 -0
  56. package/dist/{chunk-ZYZJ74XB.mjs → chunk-J5QJEKY2.mjs} +28 -28
  57. package/dist/chunk-J5QJEKY2.mjs.map +1 -0
  58. package/dist/{chunk-7TLKLMBM.js → chunk-JOMSI4WH.js} +18 -15
  59. package/dist/chunk-JOMSI4WH.js.map +1 -0
  60. package/dist/{chunk-ZBBFOMSJ.mjs → chunk-M6FS7X54.mjs} +22 -22
  61. package/dist/chunk-M6FS7X54.mjs.map +1 -0
  62. package/dist/{chunk-JUDMPOCI.js → chunk-MM3P52WS.js} +22 -22
  63. package/dist/chunk-MM3P52WS.js.map +1 -0
  64. package/dist/chunk-N6B35KWW.mjs +3 -0
  65. package/dist/chunk-N6B35KWW.mjs.map +1 -0
  66. package/dist/{chunk-73VCO5TE.mjs → chunk-NWOE2TZN.mjs} +2 -2
  67. package/dist/{chunk-73VCO5TE.mjs.map → chunk-NWOE2TZN.mjs.map} +1 -1
  68. package/dist/{chunk-UWA23DUC.js → chunk-OB6TYS5Q.js} +28 -28
  69. package/dist/chunk-OB6TYS5Q.js.map +1 -0
  70. package/dist/{chunk-QZTEFGZF.mjs → chunk-OVTWPGMW.mjs} +18 -15
  71. package/dist/chunk-OVTWPGMW.mjs.map +1 -0
  72. package/dist/chunk-PPVJ4INP.mjs +60 -0
  73. package/dist/chunk-PPVJ4INP.mjs.map +1 -0
  74. package/dist/{chunk-LN77JJTY.mjs → chunk-PSIAOIXJ.mjs} +48 -48
  75. package/dist/chunk-PSIAOIXJ.mjs.map +1 -0
  76. package/dist/chunk-QNF4JPFP.js +339 -0
  77. package/dist/chunk-QNF4JPFP.js.map +1 -0
  78. package/dist/{chunk-A6KMZ5ZS.mjs → chunk-QSIJKHC5.mjs} +15 -15
  79. package/dist/chunk-QSIJKHC5.mjs.map +1 -0
  80. package/dist/chunk-RFFGQYDQ.mjs +337 -0
  81. package/dist/chunk-RFFGQYDQ.mjs.map +1 -0
  82. package/dist/chunk-RGOMHX4G.js +4 -0
  83. package/dist/chunk-RGOMHX4G.js.map +1 -0
  84. package/dist/{chunk-INMNX3HQ.mjs → chunk-S5H2OMTZ.mjs} +29 -36
  85. package/dist/chunk-S5H2OMTZ.mjs.map +1 -0
  86. package/dist/{chunk-JBAUEGYD.mjs → chunk-TFWKF3DR.mjs} +51 -51
  87. package/dist/chunk-TFWKF3DR.mjs.map +1 -0
  88. package/dist/chunk-VGWA26BN.js +72 -0
  89. package/dist/chunk-VGWA26BN.js.map +1 -0
  90. package/dist/chunk-VMCOX3Z2.js +67 -0
  91. package/dist/chunk-VMCOX3Z2.js.map +1 -0
  92. package/dist/chunk-Y3AHRRNM.mjs +99 -0
  93. package/dist/chunk-Y3AHRRNM.mjs.map +1 -0
  94. package/dist/{chunk-TJUNN2PT.mjs → chunk-YD3LVW7V.mjs} +27 -26
  95. package/dist/chunk-YD3LVW7V.mjs.map +1 -0
  96. package/dist/{chunk-AD2LA3XN.js → chunk-YIO7DFUA.js} +39 -36
  97. package/dist/chunk-YIO7DFUA.js.map +1 -0
  98. package/dist/chunk-YRTGORVB.js +232 -0
  99. package/dist/chunk-YRTGORVB.js.map +1 -0
  100. package/dist/chunk-Z7QK472J.mjs +220 -0
  101. package/dist/chunk-Z7QK472J.mjs.map +1 -0
  102. package/dist/hooks/useControllableState.js +3 -2
  103. package/dist/hooks/useControllableState.mjs +2 -1
  104. package/dist/hooks/useDisclosure.js +3 -2
  105. package/dist/hooks/useDisclosure.js.map +1 -1
  106. package/dist/hooks/useDisclosure.mjs +2 -1
  107. package/dist/hooks/useDisclosure.mjs.map +1 -1
  108. package/dist/hooks/useDynamicStepper/index.d.ts +2 -0
  109. package/dist/hooks/useDynamicStepper/index.d.ts.map +1 -0
  110. package/dist/hooks/useDynamicStepper/useDynamicStepper.d.ts +9 -0
  111. package/dist/hooks/useDynamicStepper/useDynamicStepper.d.ts.map +1 -0
  112. package/dist/hooks/useDynamicStepper.js +14 -0
  113. package/dist/hooks/useDynamicStepper.js.map +1 -0
  114. package/dist/hooks/useDynamicStepper.mjs +5 -0
  115. package/dist/hooks/useDynamicStepper.mjs.map +1 -0
  116. package/dist/ui/accordion/animated.js +7 -7
  117. package/dist/ui/accordion/animated.mjs +2 -2
  118. package/dist/ui/accordion/variants.d.ts.map +1 -1
  119. package/dist/ui/accordion.js +9 -9
  120. package/dist/ui/accordion.mjs +2 -2
  121. package/dist/ui/alert/animated.js +2 -2
  122. package/dist/ui/alert/animated.mjs +1 -1
  123. package/dist/ui/alert/variants.d.ts.map +1 -1
  124. package/dist/ui/alert.js +10 -10
  125. package/dist/ui/alert.mjs +2 -2
  126. package/dist/ui/avatar/animated.js +5 -5
  127. package/dist/ui/avatar/animated.mjs +2 -2
  128. package/dist/ui/avatar/variants.d.ts.map +1 -1
  129. package/dist/ui/avatar.js +9 -9
  130. package/dist/ui/avatar.mjs +2 -2
  131. package/dist/ui/badge/animated.js +2 -2
  132. package/dist/ui/badge/animated.mjs +1 -1
  133. package/dist/ui/badge/variants.d.ts +24 -24
  134. package/dist/ui/badge/variants.d.ts.map +1 -1
  135. package/dist/ui/badge.js +4 -4
  136. package/dist/ui/badge.mjs +2 -2
  137. package/dist/ui/breadcrumb/variants.d.ts.map +1 -1
  138. package/dist/ui/breadcrumb.js +30 -25
  139. package/dist/ui/breadcrumb.js.map +1 -1
  140. package/dist/ui/breadcrumb.mjs +30 -25
  141. package/dist/ui/breadcrumb.mjs.map +1 -1
  142. package/dist/ui/buttons/animated.js +3 -3
  143. package/dist/ui/buttons/animated.mjs +1 -1
  144. package/dist/ui/buttons/variants.d.ts.map +1 -1
  145. package/dist/ui/buttons.js +9 -57
  146. package/dist/ui/buttons.js.map +1 -1
  147. package/dist/ui/buttons.mjs +3 -59
  148. package/dist/ui/buttons.mjs.map +1 -1
  149. package/dist/ui/card/animated.js +7 -7
  150. package/dist/ui/card/animated.mjs +2 -2
  151. package/dist/ui/card/variants.d.ts.map +1 -1
  152. package/dist/ui/card.js +12 -12
  153. package/dist/ui/card.mjs +2 -2
  154. package/dist/ui/divider/animated.js +2 -2
  155. package/dist/ui/divider/animated.mjs +1 -1
  156. package/dist/ui/divider.js +6 -6
  157. package/dist/ui/divider.mjs +2 -2
  158. package/dist/ui/drawer/animated.js +11 -11
  159. package/dist/ui/drawer/animated.mjs +2 -2
  160. package/dist/ui/drawer/variants.d.ts.map +1 -1
  161. package/dist/ui/drawer.js +11 -11
  162. package/dist/ui/drawer.mjs +1 -1
  163. package/dist/ui/dropdown/variants.d.ts.map +1 -1
  164. package/dist/ui/dropdown.js +52 -52
  165. package/dist/ui/dropdown.js.map +1 -1
  166. package/dist/ui/dropdown.mjs +52 -52
  167. package/dist/ui/dropdown.mjs.map +1 -1
  168. package/dist/ui/dynamic-stepper/dynamic-stepper.d.ts +6 -0
  169. package/dist/ui/dynamic-stepper/dynamic-stepper.d.ts.map +1 -0
  170. package/dist/ui/dynamic-stepper/index.d.ts +5 -0
  171. package/dist/ui/dynamic-stepper/index.d.ts.map +1 -0
  172. package/dist/ui/dynamic-stepper/types.d.ts +61 -0
  173. package/dist/ui/dynamic-stepper/types.d.ts.map +1 -0
  174. package/dist/ui/dynamic-stepper/variants.d.ts +21 -0
  175. package/dist/ui/dynamic-stepper/variants.d.ts.map +1 -0
  176. package/dist/ui/dynamic-stepper.js +315 -0
  177. package/dist/ui/dynamic-stepper.js.map +1 -0
  178. package/dist/ui/dynamic-stepper.mjs +308 -0
  179. package/dist/ui/dynamic-stepper.mjs.map +1 -0
  180. package/dist/ui/empty-state/animated.js +2 -2
  181. package/dist/ui/empty-state/animated.mjs +1 -1
  182. package/dist/ui/empty-state/variants.d.ts.map +1 -1
  183. package/dist/ui/empty-state.js +10 -10
  184. package/dist/ui/empty-state.mjs +2 -2
  185. package/dist/ui/file-upload/file-upload.d.ts.map +1 -1
  186. package/dist/ui/file-upload/variants.d.ts.map +1 -1
  187. package/dist/ui/file-upload.js +18 -18
  188. package/dist/ui/file-upload.js.map +1 -1
  189. package/dist/ui/file-upload.mjs +18 -18
  190. package/dist/ui/file-upload.mjs.map +1 -1
  191. package/dist/ui/inputs/animated.js +3 -3
  192. package/dist/ui/inputs/animated.mjs +1 -1
  193. package/dist/ui/inputs/types.d.ts +1 -1
  194. package/dist/ui/inputs/types.d.ts.map +1 -1
  195. package/dist/ui/inputs/variants.d.ts +1 -1
  196. package/dist/ui/inputs/variants.d.ts.map +1 -1
  197. package/dist/ui/inputs.js +4 -4
  198. package/dist/ui/inputs.mjs +2 -2
  199. package/dist/ui/modal/animated.js +4 -4
  200. package/dist/ui/modal/animated.mjs +1 -1
  201. package/dist/ui/modal/variants.d.ts.map +1 -1
  202. package/dist/ui/modal.js +12 -12
  203. package/dist/ui/modal.mjs +2 -2
  204. package/dist/ui/pagination/pagination.d.ts +5 -16
  205. package/dist/ui/pagination/pagination.d.ts.map +1 -1
  206. package/dist/ui/pagination/types.d.ts +2 -2
  207. package/dist/ui/pagination/types.d.ts.map +1 -1
  208. package/dist/ui/pagination/variants.d.ts.map +1 -1
  209. package/dist/ui/pagination.js +200 -209
  210. package/dist/ui/pagination.js.map +1 -1
  211. package/dist/ui/pagination.mjs +201 -210
  212. package/dist/ui/pagination.mjs.map +1 -1
  213. package/dist/ui/progress/animated.js +8 -8
  214. package/dist/ui/progress/animated.mjs +2 -2
  215. package/dist/ui/progress/variants.d.ts.map +1 -1
  216. package/dist/ui/progress.js +9 -9
  217. package/dist/ui/progress.mjs +2 -2
  218. package/dist/ui/search/search-bar.d.ts.map +1 -1
  219. package/dist/ui/search/search-suggestion-list.d.ts.map +1 -1
  220. package/dist/ui/search.js +10 -9
  221. package/dist/ui/search.js.map +1 -1
  222. package/dist/ui/search.mjs +9 -8
  223. package/dist/ui/search.mjs.map +1 -1
  224. package/dist/ui/select/variants.d.ts.map +1 -1
  225. package/dist/ui/select.js +66 -66
  226. package/dist/ui/select.js.map +1 -1
  227. package/dist/ui/select.mjs +66 -66
  228. package/dist/ui/select.mjs.map +1 -1
  229. package/dist/ui/skeleton/animated.js +8 -8
  230. package/dist/ui/skeleton/animated.mjs +1 -1
  231. package/dist/ui/skeleton/variants.d.ts.map +1 -1
  232. package/dist/ui/skeleton.js +9 -9
  233. package/dist/ui/skeleton.mjs +1 -1
  234. package/dist/ui/slider.js +25 -25
  235. package/dist/ui/slider.js.map +1 -1
  236. package/dist/ui/slider.mjs +25 -25
  237. package/dist/ui/slider.mjs.map +1 -1
  238. package/dist/ui/spinner/animated.js +22 -22
  239. package/dist/ui/spinner/animated.js.map +1 -1
  240. package/dist/ui/spinner/animated.mjs +22 -22
  241. package/dist/ui/spinner/animated.mjs.map +1 -1
  242. package/dist/ui/stepper/stepper.d.ts.map +1 -1
  243. package/dist/ui/stepper/variants.d.ts.map +1 -1
  244. package/dist/ui/stepper.js +29 -26
  245. package/dist/ui/stepper.js.map +1 -1
  246. package/dist/ui/stepper.mjs +29 -26
  247. package/dist/ui/stepper.mjs.map +1 -1
  248. package/dist/ui/table/animated.js +8 -8
  249. package/dist/ui/table/animated.mjs +2 -2
  250. package/dist/ui/table/variants.d.ts.map +1 -1
  251. package/dist/ui/table.js +14 -14
  252. package/dist/ui/table.mjs +1 -1
  253. package/dist/ui/tabs/animated.js +2 -2
  254. package/dist/ui/tabs/animated.mjs +1 -1
  255. package/dist/ui/tabs/variants.d.ts.map +1 -1
  256. package/dist/ui/tabs.js +9 -9
  257. package/dist/ui/tabs.mjs +1 -1
  258. package/dist/ui/toast/animated.js +7 -7
  259. package/dist/ui/toast/animated.mjs +1 -1
  260. package/dist/ui/toast/toast-base.d.ts.map +1 -1
  261. package/dist/ui/toast/variants.d.ts.map +1 -1
  262. package/dist/ui/toast.js +12 -12
  263. package/dist/ui/toast.mjs +1 -1
  264. package/dist/ui/toggle/animated/toggle-animated.d.ts.map +1 -1
  265. package/dist/ui/toggle/animated.js +5 -4
  266. package/dist/ui/toggle/animated.js.map +1 -1
  267. package/dist/ui/toggle/animated.mjs +4 -3
  268. package/dist/ui/toggle/animated.mjs.map +1 -1
  269. package/dist/ui/toggle/toggle-base.d.ts.map +1 -1
  270. package/dist/ui/toggle/variants.d.ts +1 -0
  271. package/dist/ui/toggle/variants.d.ts.map +1 -1
  272. package/dist/ui/toggle.js +8 -7
  273. package/dist/ui/toggle.js.map +1 -1
  274. package/dist/ui/toggle.mjs +6 -5
  275. package/dist/ui/toggle.mjs.map +1 -1
  276. package/dist/ui/tooltip/animated.js +3 -3
  277. package/dist/ui/tooltip/animated.mjs +1 -1
  278. package/dist/ui/tooltip/variants.d.ts.map +1 -1
  279. package/dist/ui/tooltip.js +7 -7
  280. package/dist/ui/tooltip.mjs +1 -1
  281. package/dist/ui/typography/blockquote-base.d.ts.map +1 -1
  282. package/dist/ui/typography/code-block-base.d.ts.map +1 -1
  283. package/dist/ui/typography/heading-base.d.ts.map +1 -1
  284. package/dist/ui/typography/inline-code-base.d.ts.map +1 -1
  285. package/dist/ui/typography/variants.d.ts.map +1 -1
  286. package/dist/ui/typography.js +19 -19
  287. package/dist/ui/typography.js.map +1 -1
  288. package/dist/ui/typography.mjs +19 -19
  289. package/dist/ui/typography.mjs.map +1 -1
  290. package/package.json +4 -3
  291. package/src/charts/area/Area.tsx +1 -1
  292. package/src/charts/bubble/Bubble.tsx +10 -2
  293. package/src/charts/pie/Pie.tsx +22 -3
  294. package/src/charts/shared/types.ts +1 -1
  295. package/src/hooks/useDynamicStepper/index.ts +1 -0
  296. package/src/hooks/useDynamicStepper/useDynamicStepper.test.ts +107 -0
  297. package/src/hooks/useDynamicStepper/useDynamicStepper.ts +85 -0
  298. package/src/ui/accordion/variants.ts +55 -43
  299. package/src/ui/alert/variants.ts +45 -32
  300. package/src/ui/avatar/variants.ts +34 -26
  301. package/src/ui/badge/variants.ts +42 -29
  302. package/src/ui/breadcrumb/variants.ts +30 -25
  303. package/src/ui/buttons/variants.ts +40 -30
  304. package/src/ui/card/variants.ts +49 -39
  305. package/src/ui/divider/variants.ts +26 -26
  306. package/src/ui/drawer/drawer-base.tsx +1 -1
  307. package/src/ui/drawer/variants.ts +64 -48
  308. package/src/ui/dropdown/dropdown.tsx +1 -1
  309. package/src/ui/dropdown/variants.ts +63 -52
  310. package/src/ui/dynamic-stepper/dynamic-stepper.test.tsx +113 -0
  311. package/src/ui/dynamic-stepper/dynamic-stepper.tsx +173 -0
  312. package/src/ui/dynamic-stepper/index.ts +22 -0
  313. package/src/ui/dynamic-stepper/types.ts +85 -0
  314. package/src/ui/dynamic-stepper/variants.ts +247 -0
  315. package/src/ui/empty-state/variants.ts +14 -11
  316. package/src/ui/file-upload/file-upload.tsx +5 -3
  317. package/src/ui/file-upload/variants.ts +16 -15
  318. package/src/ui/inputs/types.ts +1 -1
  319. package/src/ui/inputs/variants.ts +106 -47
  320. package/src/ui/modal/modal-base.tsx +1 -1
  321. package/src/ui/modal/variants.ts +64 -47
  322. package/src/ui/pagination/pagination.tsx +186 -197
  323. package/src/ui/pagination/types.ts +2 -5
  324. package/src/ui/pagination/variants.ts +31 -28
  325. package/src/ui/progress/variants.ts +79 -65
  326. package/src/ui/search/search-bar.tsx +2 -1
  327. package/src/ui/search/search-suggestion-list.tsx +7 -5
  328. package/src/ui/select/variants.ts +72 -66
  329. package/src/ui/skeleton/variants.ts +22 -13
  330. package/src/ui/slider/variants.ts +25 -25
  331. package/src/ui/spinner/animated/variants.ts +22 -22
  332. package/src/ui/stepper/stepper.tsx +5 -2
  333. package/src/ui/stepper/variants.ts +25 -24
  334. package/src/ui/table/table-base.tsx +1 -1
  335. package/src/ui/table/variants.ts +53 -45
  336. package/src/ui/tabs/variants.ts +38 -23
  337. package/src/ui/toast/toast-base.tsx +1 -4
  338. package/src/ui/toast/variants.ts +33 -26
  339. package/src/ui/toggle/animated/toggle-animated.tsx +3 -2
  340. package/src/ui/toggle/toggle-base.tsx +4 -3
  341. package/src/ui/toggle/variants.ts +60 -28
  342. package/src/ui/tooltip/variants.ts +21 -20
  343. package/src/ui/typography/blockquote-base.tsx +0 -2
  344. package/src/ui/typography/code-block-base.tsx +1 -3
  345. package/src/ui/typography/heading-base.tsx +0 -2
  346. package/src/ui/typography/inline-code-base.tsx +0 -2
  347. package/src/ui/typography/variants.ts +21 -18
  348. package/dist/chunk-2BAMNRAL.mjs +0 -323
  349. package/dist/chunk-2BAMNRAL.mjs.map +0 -1
  350. package/dist/chunk-5TV7EL3H.mjs +0 -70
  351. package/dist/chunk-5TV7EL3H.mjs.map +0 -1
  352. package/dist/chunk-7TLKLMBM.js.map +0 -1
  353. package/dist/chunk-A6KMZ5ZS.mjs.map +0 -1
  354. package/dist/chunk-AD2LA3XN.js.map +0 -1
  355. package/dist/chunk-AOEI4V3W.mjs +0 -286
  356. package/dist/chunk-AOEI4V3W.mjs.map +0 -1
  357. package/dist/chunk-AUGLZ3AN.js.map +0 -1
  358. package/dist/chunk-BCZIYH53.js.map +0 -1
  359. package/dist/chunk-C5L465FW.mjs.map +0 -1
  360. package/dist/chunk-E4FZY7O2.js.map +0 -1
  361. package/dist/chunk-FQBMIZH2.mjs +0 -217
  362. package/dist/chunk-FQBMIZH2.mjs.map +0 -1
  363. package/dist/chunk-G3LEYBRV.mjs.map +0 -1
  364. package/dist/chunk-I6GR234Z.mjs +0 -126
  365. package/dist/chunk-I6GR234Z.mjs.map +0 -1
  366. package/dist/chunk-INMNX3HQ.mjs.map +0 -1
  367. package/dist/chunk-JBAUEGYD.mjs.map +0 -1
  368. package/dist/chunk-JQ5TIJ4F.mjs +0 -68
  369. package/dist/chunk-JQ5TIJ4F.mjs.map +0 -1
  370. package/dist/chunk-JUDMPOCI.js.map +0 -1
  371. package/dist/chunk-LN77JJTY.mjs.map +0 -1
  372. package/dist/chunk-MCOQHXRW.js +0 -130
  373. package/dist/chunk-MCOQHXRW.js.map +0 -1
  374. package/dist/chunk-MTLLJFUI.mjs.map +0 -1
  375. package/dist/chunk-N2OAI2HN.js.map +0 -1
  376. package/dist/chunk-OB4KJZK2.js +0 -72
  377. package/dist/chunk-OB4KJZK2.js.map +0 -1
  378. package/dist/chunk-OLEMP2HL.js.map +0 -1
  379. package/dist/chunk-PWL5WD34.js.map +0 -1
  380. package/dist/chunk-Q5B44QW7.js.map +0 -1
  381. package/dist/chunk-QZKMFSH5.js +0 -288
  382. package/dist/chunk-QZKMFSH5.js.map +0 -1
  383. package/dist/chunk-QZTEFGZF.mjs.map +0 -1
  384. package/dist/chunk-S7WKFNPT.js +0 -229
  385. package/dist/chunk-S7WKFNPT.js.map +0 -1
  386. package/dist/chunk-TINHLHCN.mjs.map +0 -1
  387. package/dist/chunk-TJUNN2PT.mjs.map +0 -1
  388. package/dist/chunk-UWA23DUC.js.map +0 -1
  389. package/dist/chunk-X22LLJL6.js +0 -71
  390. package/dist/chunk-X22LLJL6.js.map +0 -1
  391. package/dist/chunk-Y745GQR2.js.map +0 -1
  392. package/dist/chunk-YTRGRHEB.js.map +0 -1
  393. package/dist/chunk-ZBBFOMSJ.mjs.map +0 -1
  394. package/dist/chunk-ZYZJ74XB.mjs.map +0 -1
@@ -1,42 +1,42 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkYTRGRHEB_js = require('../chunk-YTRGRHEB.js');
4
+ var chunkHV7LVRK3_js = require('../chunk-HV7LVRK3.js');
5
5
  require('../chunk-ZS5756ZC.js');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
 
8
8
  var Progress = (props) => {
9
- return /* @__PURE__ */ jsxRuntime.jsx(chunkYTRGRHEB_js.ProgressBase, { ...props });
9
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkHV7LVRK3_js.ProgressBase, { ...props });
10
10
  };
11
11
  Progress.displayName = "Progress";
12
12
 
13
13
  Object.defineProperty(exports, "ProgressBar", {
14
14
  enumerable: true,
15
- get: function () { return chunkYTRGRHEB_js.ProgressBar; }
15
+ get: function () { return chunkHV7LVRK3_js.ProgressBar; }
16
16
  });
17
17
  Object.defineProperty(exports, "ProgressBase", {
18
18
  enumerable: true,
19
- get: function () { return chunkYTRGRHEB_js.ProgressBase; }
19
+ get: function () { return chunkHV7LVRK3_js.ProgressBase; }
20
20
  });
21
21
  Object.defineProperty(exports, "ProgressLabel", {
22
22
  enumerable: true,
23
- get: function () { return chunkYTRGRHEB_js.ProgressLabel; }
23
+ get: function () { return chunkHV7LVRK3_js.ProgressLabel; }
24
24
  });
25
25
  Object.defineProperty(exports, "ProgressValue", {
26
26
  enumerable: true,
27
- get: function () { return chunkYTRGRHEB_js.ProgressValue; }
27
+ get: function () { return chunkHV7LVRK3_js.ProgressValue; }
28
28
  });
29
29
  Object.defineProperty(exports, "progressBarVariants", {
30
30
  enumerable: true,
31
- get: function () { return chunkYTRGRHEB_js.progressBarVariants; }
31
+ get: function () { return chunkHV7LVRK3_js.progressBarVariants; }
32
32
  });
33
33
  Object.defineProperty(exports, "progressTrackVariants", {
34
34
  enumerable: true,
35
- get: function () { return chunkYTRGRHEB_js.progressTrackVariants; }
35
+ get: function () { return chunkHV7LVRK3_js.progressTrackVariants; }
36
36
  });
37
37
  Object.defineProperty(exports, "progressVariants", {
38
38
  enumerable: true,
39
- get: function () { return chunkYTRGRHEB_js.progressVariants; }
39
+ get: function () { return chunkHV7LVRK3_js.progressVariants; }
40
40
  });
41
41
  exports.Progress = Progress;
42
42
  //# sourceMappingURL=progress.js.map
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { ProgressBase } from '../chunk-G3LEYBRV.mjs';
3
- export { ProgressBar, ProgressBase, ProgressLabel, ProgressValue, progressBarVariants, progressTrackVariants, progressVariants } from '../chunk-G3LEYBRV.mjs';
2
+ import { ProgressBase } from '../chunk-25EAVVGS.mjs';
3
+ export { ProgressBar, ProgressBase, ProgressLabel, ProgressValue, progressBarVariants, progressTrackVariants, progressVariants } from '../chunk-25EAVVGS.mjs';
4
4
  import '../chunk-4D54YOL6.mjs';
5
5
  import { jsx } from 'react/jsx-runtime';
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"search-bar.d.ts","sourceRoot":"","sources":["../../../src/ui/search/search-bar.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,SAAS;sOAmBnB,cAAc;;CAoDhB,CAAC"}
1
+ {"version":3,"file":"search-bar.d.ts","sourceRoot":"","sources":["../../../src/ui/search/search-bar.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,SAAS;sOAmBnB,cAAc;;CAqDhB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"search-suggestion-list.d.ts","sourceRoot":"","sources":["../../../src/ui/search/search-suggestion-list.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAKzD,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,GACX,EAAE,yBAAyB,2CAwF3B;yBAjGe,oBAAoB"}
1
+ {"version":3,"file":"search-suggestion-list.d.ts","sourceRoot":"","sources":["../../../src/ui/search/search-suggestion-list.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAKzD,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,GACX,EAAE,yBAAyB,2CA0F3B;yBAnGe,oBAAoB"}
package/dist/ui/search.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkQZKMFSH5_js = require('../chunk-QZKMFSH5.js');
4
+ var chunkQNF4JPFP_js = require('../chunk-QNF4JPFP.js');
5
5
  var chunkZS5756ZC_js = require('../chunk-ZS5756ZC.js');
6
6
  var react = require('react');
7
7
  var jsxRuntime = require('react/jsx-runtime');
@@ -38,7 +38,7 @@ var SearchBar = function SearchBar2({
38
38
  leadingSlot ? /* @__PURE__ */ jsxRuntime.jsx(
39
39
  "span",
40
40
  {
41
- className: "pointer-events-none absolute left-3 top-1/2 z-1 flex -translate-y-1/2 text-slate-400 [&_svg]:size-4",
41
+ className: "pointer-events-none absolute left-3 top-1/2 z-1 flex -translate-y-1/2 text-slate-900 dark:text-slate-200 [&_svg]:size-4",
42
42
  "aria-hidden": true,
43
43
  children: leadingSlot
44
44
  }
@@ -56,9 +56,10 @@ var SearchBar = function SearchBar2({
56
56
  "aria-label": ariaLabel ?? (combobox ? void 0 : "Search"),
57
57
  "data-slot": "search-bar-input",
58
58
  className: chunkZS5756ZC_js.cn(
59
- chunkQZKMFSH5_js.inputVariants({ appearance, size: inputSize, ring, as: "input" }),
59
+ chunkQNF4JPFP_js.inputVariants({ appearance, size: inputSize, ring, as: "input" }),
60
60
  leadingSlot ? "pl-10" : null,
61
- inputClassName
61
+ inputClassName,
62
+ "[&::-webkit-search-cancel-button]:hidden"
62
63
  ),
63
64
  onChange: (event) => {
64
65
  onChange?.(event);
@@ -85,7 +86,7 @@ function searchSuggestionOptionDomId(listboxId, itemId) {
85
86
  const safe = itemId.replace(/[^a-zA-Z0-9_-]/g, "_");
86
87
  return `${listboxId}_opt_${safe}`;
87
88
  }
88
- var rowClassName = "flex w-full flex-col gap-0.5 rounded-lg px-3 py-2.5 text-left text-sm transition-colors hover:bg-white/5 focus-visible:bg-white/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-400/50";
89
+ var rowClassName = "flex w-full flex-col gap-0.5 rounded-lg px-3 py-2.5 text-left text-sm transition-colors dark:hover:bg-white/5 hover:bg-black/10 focus-visible:bg-white/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-400/50";
89
90
  function SearchSuggestionList({
90
91
  items,
91
92
  onSelect,
@@ -102,7 +103,7 @@ function SearchSuggestionList({
102
103
  {
103
104
  "data-slot": "search-suggestion-list-empty",
104
105
  className: chunkZS5756ZC_js.cn(
105
- "px-1 py-6 text-center text-sm text-slate-500",
106
+ "px-1 py-6 text-center text-sm text-slate-900 dark:text-slate-200",
106
107
  className
107
108
  ),
108
109
  children: emptyLabel ?? "No matches."
@@ -144,7 +145,7 @@ function SearchSuggestionList({
144
145
  "div",
145
146
  {
146
147
  role: "presentation",
147
- className: "sticky top-0 z-1 bg-slate-950/95 px-2 pb-1 pt-2 text-xs font-semibold uppercase tracking-wide text-slate-500 backdrop-blur-sm",
148
+ className: "sticky rounded-lg top-0 z-1 dark:bg-slate-950/95 bg-slate-50/95 px-2 pb-1 pt-2 text-xs font-semibold uppercase tracking-wide text-slate-900 dark:text-slate-200 backdrop-blur-sm",
148
149
  children: item.group
149
150
  }
150
151
  ) : null,
@@ -161,8 +162,8 @@ function SearchSuggestionList({
161
162
  onFocus: () => onActiveIdChange?.(item.id),
162
163
  onClick: () => onSelect(item.id),
163
164
  children: [
164
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-slate-100", children: item.label }),
165
- item.description ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs text-slate-500", children: item.description }) : null
165
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-slate-900 dark:text-slate-100", children: item.label }),
166
+ item.description ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs text-slate-900 dark:text-slate-200", children: item.description }) : null
166
167
  ]
167
168
  }
168
169
  )
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/search/search-bar.tsx","../../src/ui/search/search-suggestion-utils.ts","../../src/ui/search/search-suggestion-list.tsx","../../src/ui/search/filter-search-suggestions.ts"],"names":["SearchBar","useId","jsxs","cn","jsx","inputVariants","Fragment"],"mappings":"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","file":"search.js","sourcesContent":["\"use client\";\n\nimport { useId } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputVariants } from \"../inputs/variants\";\n\nimport type { SearchBarProps } from \"./types\";\n\nexport const SearchBar = function SearchBar({\n value,\n onValueChange,\n leadingSlot,\n className,\n inputClassName,\n appearance = \"default\",\n inputSize = \"md\",\n ring = true,\n id,\n onChange,\n disabled,\n type,\n comboboxListboxId,\n comboboxActiveOptionId,\n comboboxExpanded,\n \"aria-label\": ariaLabel,\n ref,\n ...rest\n}: SearchBarProps) {\n const generatedId = useId();\n const controlId = id ?? generatedId;\n const combobox = Boolean(comboboxListboxId);\n\n return (\n <div\n data-slot=\"search-bar\"\n className={cn(\"relative flex w-full min-w-0 items-center\", className)}\n >\n {leadingSlot ? (\n <span\n className=\"pointer-events-none absolute left-3 top-1/2 z-1 flex -translate-y-1/2 text-slate-400 [&_svg]:size-4\"\n aria-hidden\n >\n {leadingSlot}\n </span>\n ) : null}\n <input\n ref={ref}\n id={controlId}\n type={type ?? \"search\"}\n autoComplete=\"off\"\n spellCheck={false}\n disabled={disabled}\n value={value}\n aria-label={ariaLabel ?? (combobox ? undefined : \"Search\")}\n data-slot=\"search-bar-input\"\n className={cn(\n inputVariants({ appearance, size: inputSize, ring, as: \"input\" }),\n leadingSlot ? \"pl-10\" : null,\n inputClassName,\n )}\n onChange={(event) => {\n onChange?.(event);\n onValueChange?.(event.target.value);\n }}\n {...(combobox\n ? {\n role: \"combobox\" as const,\n \"aria-autocomplete\": \"list\" as const,\n \"aria-controls\": comboboxListboxId,\n \"aria-expanded\": comboboxExpanded ?? false,\n ...(comboboxActiveOptionId\n ? { \"aria-activedescendant\": comboboxActiveOptionId }\n : {}),\n }\n : {})}\n {...rest}\n />\n </div>\n );\n};\n\nSearchBar.displayName = \"SearchBar\";\n","/**\n * Builds a stable DOM id for a listbox option so `aria-activedescendant` on the combobox\n * input can reference it. Safe for href-like `itemId` strings.\n */\nexport function searchSuggestionOptionDomId(\n listboxId: string,\n itemId: string,\n): string {\n const safe = itemId.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n return `${listboxId}_opt_${safe}`;\n}\n","\"use client\";\n\nimport { Fragment } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { searchSuggestionOptionDomId } from \"./search-suggestion-utils\";\n\nimport type { SearchSuggestionListProps } from \"./types\";\n\nconst rowClassName =\n \"flex w-full flex-col gap-0.5 rounded-lg px-3 py-2.5 text-left text-sm transition-colors hover:bg-white/5 focus-visible:bg-white/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-400/50\";\n\nexport function SearchSuggestionList({\n items,\n onSelect,\n activeId,\n onActiveIdChange,\n listboxId,\n className,\n listClassName,\n emptyLabel,\n}: SearchSuggestionListProps) {\n if (items.length === 0) {\n return (\n <div\n data-slot=\"search-suggestion-list-empty\"\n className={cn(\n \"px-1 py-6 text-center text-sm text-slate-500\",\n className,\n )}\n >\n {emptyLabel ?? \"No matches.\"}\n </div>\n );\n }\n\n const useListbox = Boolean(listboxId);\n\n const rows: Array<{\n item: (typeof items)[number];\n showGroup: boolean;\n }> = [];\n let lastGroupSeen: string | undefined;\n for (const item of items) {\n const showGroup = Boolean(item.group && item.group !== lastGroupSeen);\n if (item.group) {\n lastGroupSeen = item.group;\n }\n rows.push({ item, showGroup });\n }\n\n return (\n <nav\n data-slot=\"search-suggestion-list\"\n aria-label=\"Search results\"\n className={cn(\n \"flex max-h-[min(50vh,360px)] flex-col gap-1 overflow-y-auto pr-1\",\n className,\n )}\n >\n <div\n {...(useListbox\n ? {\n id: listboxId,\n role: \"listbox\" as const,\n }\n : {})}\n className={cn(\"flex flex-col gap-0.5\", listClassName)}\n >\n {rows.map(({ item, showGroup }) => {\n const isActive = activeId === item.id;\n const optionDomId =\n useListbox && listboxId\n ? searchSuggestionOptionDomId(listboxId, item.id)\n : undefined;\n return (\n <Fragment key={item.id}>\n {showGroup ? (\n <div\n role=\"presentation\"\n className=\"sticky top-0 z-1 bg-slate-950/95 px-2 pb-1 pt-2 text-xs font-semibold uppercase tracking-wide text-slate-500 backdrop-blur-sm\"\n >\n {item.group}\n </div>\n ) : null}\n <button\n type=\"button\"\n id={optionDomId}\n role={useListbox ? \"option\" : undefined}\n aria-selected={useListbox ? isActive : undefined}\n data-active={isActive ? \"\" : undefined}\n className={cn(rowClassName, isActive ? \"bg-white/5\" : null)}\n onMouseEnter={() => onActiveIdChange?.(item.id)}\n onFocus={() => onActiveIdChange?.(item.id)}\n onClick={() => onSelect(item.id)}\n >\n <span className=\"font-medium text-slate-100\">{item.label}</span>\n {item.description ? (\n <span className=\"truncate text-xs text-slate-500\">\n {item.description}\n </span>\n ) : null}\n </button>\n </Fragment>\n );\n })}\n </div>\n </nav>\n );\n}\n\nSearchSuggestionList.displayName = \"SearchSuggestionList\";\n","import type { SearchFilterable } from \"./types\";\n\nexport type FilterSearchSuggestionsOptions = {\n /** Maximum number of matches returned. */\n maxResults?: number;\n};\n\n/**\n * Returns items whose label, description, href, or keywords contain the query (case-insensitive).\n * Whitespace-only query matches no items.\n */\nexport function filterSearchSuggestions<T extends SearchFilterable>({\n query,\n items,\n options = { maxResults: 20 },\n}: {\n query: string;\n items: readonly T[];\n options?: FilterSearchSuggestionsOptions;\n}): T[] {\n const maxResults = options.maxResults ?? 20;\n const normalized = query.trim().toLowerCase();\n if (!normalized) {\n return [];\n }\n\n const matches: T[] = [];\n for (const item of items) {\n const isMatch =\n item.label.toLowerCase().includes(normalized) ||\n item.description?.toLowerCase().includes(normalized) ||\n item.href?.toLowerCase().includes(normalized) ||\n item.keywords?.some((k) => k.toLowerCase().includes(normalized));\n\n if (isMatch) {\n matches.push(item);\n if (matches.length >= maxResults || maxResults <= 0) {\n break;\n }\n }\n }\n return matches;\n}\n"]}
1
+ {"version":3,"sources":["../../src/ui/search/search-bar.tsx","../../src/ui/search/search-suggestion-utils.ts","../../src/ui/search/search-suggestion-list.tsx","../../src/ui/search/filter-search-suggestions.ts"],"names":["SearchBar","useId","jsxs","cn","jsx","inputVariants","Fragment"],"mappings":"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","file":"search.js","sourcesContent":["\"use client\";\n\nimport { useId } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputVariants } from \"../inputs/variants\";\n\nimport type { SearchBarProps } from \"./types\";\n\nexport const SearchBar = function SearchBar({\n value,\n onValueChange,\n leadingSlot,\n className,\n inputClassName,\n appearance = \"default\",\n inputSize = \"md\",\n ring = true,\n id,\n onChange,\n disabled,\n type,\n comboboxListboxId,\n comboboxActiveOptionId,\n comboboxExpanded,\n \"aria-label\": ariaLabel,\n ref,\n ...rest\n}: SearchBarProps) {\n const generatedId = useId();\n const controlId = id ?? generatedId;\n const combobox = Boolean(comboboxListboxId);\n\n return (\n <div\n data-slot=\"search-bar\"\n className={cn(\"relative flex w-full min-w-0 items-center\", className)}\n >\n {leadingSlot ? (\n <span\n className=\"pointer-events-none absolute left-3 top-1/2 z-1 flex -translate-y-1/2 text-slate-900 dark:text-slate-200 [&_svg]:size-4\"\n aria-hidden\n >\n {leadingSlot}\n </span>\n ) : null}\n <input\n ref={ref}\n id={controlId}\n type={type ?? \"search\"}\n autoComplete=\"off\"\n spellCheck={false}\n disabled={disabled}\n value={value}\n aria-label={ariaLabel ?? (combobox ? undefined : \"Search\")}\n data-slot=\"search-bar-input\"\n className={cn(\n inputVariants({ appearance, size: inputSize, ring, as: \"input\" }),\n leadingSlot ? \"pl-10\" : null,\n inputClassName,\n \"[&::-webkit-search-cancel-button]:hidden\",\n )}\n onChange={(event) => {\n onChange?.(event);\n onValueChange?.(event.target.value);\n }}\n {...(combobox\n ? {\n role: \"combobox\" as const,\n \"aria-autocomplete\": \"list\" as const,\n \"aria-controls\": comboboxListboxId,\n \"aria-expanded\": comboboxExpanded ?? false,\n ...(comboboxActiveOptionId\n ? { \"aria-activedescendant\": comboboxActiveOptionId }\n : {}),\n }\n : {})}\n {...rest}\n />\n </div>\n );\n};\n\nSearchBar.displayName = \"SearchBar\";\n","/**\n * Builds a stable DOM id for a listbox option so `aria-activedescendant` on the combobox\n * input can reference it. Safe for href-like `itemId` strings.\n */\nexport function searchSuggestionOptionDomId(\n listboxId: string,\n itemId: string,\n): string {\n const safe = itemId.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n return `${listboxId}_opt_${safe}`;\n}\n","\"use client\";\n\nimport { Fragment } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { searchSuggestionOptionDomId } from \"./search-suggestion-utils\";\n\nimport type { SearchSuggestionListProps } from \"./types\";\n\nconst rowClassName =\n \"flex w-full flex-col gap-0.5 rounded-lg px-3 py-2.5 text-left text-sm transition-colors dark:hover:bg-white/5 hover:bg-black/10 focus-visible:bg-white/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-400/50\";\n\nexport function SearchSuggestionList({\n items,\n onSelect,\n activeId,\n onActiveIdChange,\n listboxId,\n className,\n listClassName,\n emptyLabel,\n}: SearchSuggestionListProps) {\n if (items.length === 0) {\n return (\n <div\n data-slot=\"search-suggestion-list-empty\"\n className={cn(\n \"px-1 py-6 text-center text-sm text-slate-900 dark:text-slate-200\",\n className,\n )}\n >\n {emptyLabel ?? \"No matches.\"}\n </div>\n );\n }\n\n const useListbox = Boolean(listboxId);\n\n const rows: Array<{\n item: (typeof items)[number];\n showGroup: boolean;\n }> = [];\n let lastGroupSeen: string | undefined;\n for (const item of items) {\n const showGroup = Boolean(item.group && item.group !== lastGroupSeen);\n if (item.group) {\n lastGroupSeen = item.group;\n }\n rows.push({ item, showGroup });\n }\n\n return (\n <nav\n data-slot=\"search-suggestion-list\"\n aria-label=\"Search results\"\n className={cn(\n \"flex max-h-[min(50vh,360px)] flex-col gap-1 overflow-y-auto pr-1\",\n className,\n )}\n >\n <div\n {...(useListbox\n ? {\n id: listboxId,\n role: \"listbox\" as const,\n }\n : {})}\n className={cn(\"flex flex-col gap-0.5\", listClassName)}\n >\n {rows.map(({ item, showGroup }) => {\n const isActive = activeId === item.id;\n const optionDomId =\n useListbox && listboxId\n ? searchSuggestionOptionDomId(listboxId, item.id)\n : undefined;\n return (\n <Fragment key={item.id}>\n {showGroup ? (\n <div\n role=\"presentation\"\n className=\"sticky rounded-lg top-0 z-1 dark:bg-slate-950/95 bg-slate-50/95 px-2 pb-1 pt-2 text-xs font-semibold uppercase tracking-wide text-slate-900 dark:text-slate-200 backdrop-blur-sm\"\n >\n {item.group}\n </div>\n ) : null}\n <button\n type=\"button\"\n id={optionDomId}\n role={useListbox ? \"option\" : undefined}\n aria-selected={useListbox ? isActive : undefined}\n data-active={isActive ? \"\" : undefined}\n className={cn(rowClassName, isActive ? \"bg-white/5\" : null)}\n onMouseEnter={() => onActiveIdChange?.(item.id)}\n onFocus={() => onActiveIdChange?.(item.id)}\n onClick={() => onSelect(item.id)}\n >\n <span className=\"font-medium text-slate-900 dark:text-slate-100\">\n {item.label}\n </span>\n {item.description ? (\n <span className=\"truncate text-xs text-slate-900 dark:text-slate-200\">\n {item.description}\n </span>\n ) : null}\n </button>\n </Fragment>\n );\n })}\n </div>\n </nav>\n );\n}\n\nSearchSuggestionList.displayName = \"SearchSuggestionList\";\n","import type { SearchFilterable } from \"./types\";\n\nexport type FilterSearchSuggestionsOptions = {\n /** Maximum number of matches returned. */\n maxResults?: number;\n};\n\n/**\n * Returns items whose label, description, href, or keywords contain the query (case-insensitive).\n * Whitespace-only query matches no items.\n */\nexport function filterSearchSuggestions<T extends SearchFilterable>({\n query,\n items,\n options = { maxResults: 20 },\n}: {\n query: string;\n items: readonly T[];\n options?: FilterSearchSuggestionsOptions;\n}): T[] {\n const maxResults = options.maxResults ?? 20;\n const normalized = query.trim().toLowerCase();\n if (!normalized) {\n return [];\n }\n\n const matches: T[] = [];\n for (const item of items) {\n const isMatch =\n item.label.toLowerCase().includes(normalized) ||\n item.description?.toLowerCase().includes(normalized) ||\n item.href?.toLowerCase().includes(normalized) ||\n item.keywords?.some((k) => k.toLowerCase().includes(normalized));\n\n if (isMatch) {\n matches.push(item);\n if (matches.length >= maxResults || maxResults <= 0) {\n break;\n }\n }\n }\n return matches;\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { inputVariants } from '../chunk-AOEI4V3W.mjs';
2
+ import { inputVariants } from '../chunk-RFFGQYDQ.mjs';
3
3
  import { cn } from '../chunk-4D54YOL6.mjs';
4
4
  import { useId, Fragment } from 'react';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -36,7 +36,7 @@ var SearchBar = function SearchBar2({
36
36
  leadingSlot ? /* @__PURE__ */ jsx(
37
37
  "span",
38
38
  {
39
- className: "pointer-events-none absolute left-3 top-1/2 z-1 flex -translate-y-1/2 text-slate-400 [&_svg]:size-4",
39
+ className: "pointer-events-none absolute left-3 top-1/2 z-1 flex -translate-y-1/2 text-slate-900 dark:text-slate-200 [&_svg]:size-4",
40
40
  "aria-hidden": true,
41
41
  children: leadingSlot
42
42
  }
@@ -56,7 +56,8 @@ var SearchBar = function SearchBar2({
56
56
  className: cn(
57
57
  inputVariants({ appearance, size: inputSize, ring, as: "input" }),
58
58
  leadingSlot ? "pl-10" : null,
59
- inputClassName
59
+ inputClassName,
60
+ "[&::-webkit-search-cancel-button]:hidden"
60
61
  ),
61
62
  onChange: (event) => {
62
63
  onChange?.(event);
@@ -83,7 +84,7 @@ function searchSuggestionOptionDomId(listboxId, itemId) {
83
84
  const safe = itemId.replace(/[^a-zA-Z0-9_-]/g, "_");
84
85
  return `${listboxId}_opt_${safe}`;
85
86
  }
86
- var rowClassName = "flex w-full flex-col gap-0.5 rounded-lg px-3 py-2.5 text-left text-sm transition-colors hover:bg-white/5 focus-visible:bg-white/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-400/50";
87
+ var rowClassName = "flex w-full flex-col gap-0.5 rounded-lg px-3 py-2.5 text-left text-sm transition-colors dark:hover:bg-white/5 hover:bg-black/10 focus-visible:bg-white/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-400/50";
87
88
  function SearchSuggestionList({
88
89
  items,
89
90
  onSelect,
@@ -100,7 +101,7 @@ function SearchSuggestionList({
100
101
  {
101
102
  "data-slot": "search-suggestion-list-empty",
102
103
  className: cn(
103
- "px-1 py-6 text-center text-sm text-slate-500",
104
+ "px-1 py-6 text-center text-sm text-slate-900 dark:text-slate-200",
104
105
  className
105
106
  ),
106
107
  children: emptyLabel ?? "No matches."
@@ -142,7 +143,7 @@ function SearchSuggestionList({
142
143
  "div",
143
144
  {
144
145
  role: "presentation",
145
- className: "sticky top-0 z-1 bg-slate-950/95 px-2 pb-1 pt-2 text-xs font-semibold uppercase tracking-wide text-slate-500 backdrop-blur-sm",
146
+ className: "sticky rounded-lg top-0 z-1 dark:bg-slate-950/95 bg-slate-50/95 px-2 pb-1 pt-2 text-xs font-semibold uppercase tracking-wide text-slate-900 dark:text-slate-200 backdrop-blur-sm",
146
147
  children: item.group
147
148
  }
148
149
  ) : null,
@@ -159,8 +160,8 @@ function SearchSuggestionList({
159
160
  onFocus: () => onActiveIdChange?.(item.id),
160
161
  onClick: () => onSelect(item.id),
161
162
  children: [
162
- /* @__PURE__ */ jsx("span", { className: "font-medium text-slate-100", children: item.label }),
163
- item.description ? /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-slate-500", children: item.description }) : null
163
+ /* @__PURE__ */ jsx("span", { className: "font-medium text-slate-900 dark:text-slate-100", children: item.label }),
164
+ item.description ? /* @__PURE__ */ jsx("span", { className: "truncate text-xs text-slate-900 dark:text-slate-200", children: item.description }) : null
164
165
  ]
165
166
  }
166
167
  )
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/search/search-bar.tsx","../../src/ui/search/search-suggestion-utils.ts","../../src/ui/search/search-suggestion-list.tsx","../../src/ui/search/filter-search-suggestions.ts"],"names":["SearchBar","jsx","jsxs"],"mappings":"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","file":"search.mjs","sourcesContent":["\"use client\";\n\nimport { useId } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputVariants } from \"../inputs/variants\";\n\nimport type { SearchBarProps } from \"./types\";\n\nexport const SearchBar = function SearchBar({\n value,\n onValueChange,\n leadingSlot,\n className,\n inputClassName,\n appearance = \"default\",\n inputSize = \"md\",\n ring = true,\n id,\n onChange,\n disabled,\n type,\n comboboxListboxId,\n comboboxActiveOptionId,\n comboboxExpanded,\n \"aria-label\": ariaLabel,\n ref,\n ...rest\n}: SearchBarProps) {\n const generatedId = useId();\n const controlId = id ?? generatedId;\n const combobox = Boolean(comboboxListboxId);\n\n return (\n <div\n data-slot=\"search-bar\"\n className={cn(\"relative flex w-full min-w-0 items-center\", className)}\n >\n {leadingSlot ? (\n <span\n className=\"pointer-events-none absolute left-3 top-1/2 z-1 flex -translate-y-1/2 text-slate-400 [&_svg]:size-4\"\n aria-hidden\n >\n {leadingSlot}\n </span>\n ) : null}\n <input\n ref={ref}\n id={controlId}\n type={type ?? \"search\"}\n autoComplete=\"off\"\n spellCheck={false}\n disabled={disabled}\n value={value}\n aria-label={ariaLabel ?? (combobox ? undefined : \"Search\")}\n data-slot=\"search-bar-input\"\n className={cn(\n inputVariants({ appearance, size: inputSize, ring, as: \"input\" }),\n leadingSlot ? \"pl-10\" : null,\n inputClassName,\n )}\n onChange={(event) => {\n onChange?.(event);\n onValueChange?.(event.target.value);\n }}\n {...(combobox\n ? {\n role: \"combobox\" as const,\n \"aria-autocomplete\": \"list\" as const,\n \"aria-controls\": comboboxListboxId,\n \"aria-expanded\": comboboxExpanded ?? false,\n ...(comboboxActiveOptionId\n ? { \"aria-activedescendant\": comboboxActiveOptionId }\n : {}),\n }\n : {})}\n {...rest}\n />\n </div>\n );\n};\n\nSearchBar.displayName = \"SearchBar\";\n","/**\n * Builds a stable DOM id for a listbox option so `aria-activedescendant` on the combobox\n * input can reference it. Safe for href-like `itemId` strings.\n */\nexport function searchSuggestionOptionDomId(\n listboxId: string,\n itemId: string,\n): string {\n const safe = itemId.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n return `${listboxId}_opt_${safe}`;\n}\n","\"use client\";\n\nimport { Fragment } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { searchSuggestionOptionDomId } from \"./search-suggestion-utils\";\n\nimport type { SearchSuggestionListProps } from \"./types\";\n\nconst rowClassName =\n \"flex w-full flex-col gap-0.5 rounded-lg px-3 py-2.5 text-left text-sm transition-colors hover:bg-white/5 focus-visible:bg-white/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-400/50\";\n\nexport function SearchSuggestionList({\n items,\n onSelect,\n activeId,\n onActiveIdChange,\n listboxId,\n className,\n listClassName,\n emptyLabel,\n}: SearchSuggestionListProps) {\n if (items.length === 0) {\n return (\n <div\n data-slot=\"search-suggestion-list-empty\"\n className={cn(\n \"px-1 py-6 text-center text-sm text-slate-500\",\n className,\n )}\n >\n {emptyLabel ?? \"No matches.\"}\n </div>\n );\n }\n\n const useListbox = Boolean(listboxId);\n\n const rows: Array<{\n item: (typeof items)[number];\n showGroup: boolean;\n }> = [];\n let lastGroupSeen: string | undefined;\n for (const item of items) {\n const showGroup = Boolean(item.group && item.group !== lastGroupSeen);\n if (item.group) {\n lastGroupSeen = item.group;\n }\n rows.push({ item, showGroup });\n }\n\n return (\n <nav\n data-slot=\"search-suggestion-list\"\n aria-label=\"Search results\"\n className={cn(\n \"flex max-h-[min(50vh,360px)] flex-col gap-1 overflow-y-auto pr-1\",\n className,\n )}\n >\n <div\n {...(useListbox\n ? {\n id: listboxId,\n role: \"listbox\" as const,\n }\n : {})}\n className={cn(\"flex flex-col gap-0.5\", listClassName)}\n >\n {rows.map(({ item, showGroup }) => {\n const isActive = activeId === item.id;\n const optionDomId =\n useListbox && listboxId\n ? searchSuggestionOptionDomId(listboxId, item.id)\n : undefined;\n return (\n <Fragment key={item.id}>\n {showGroup ? (\n <div\n role=\"presentation\"\n className=\"sticky top-0 z-1 bg-slate-950/95 px-2 pb-1 pt-2 text-xs font-semibold uppercase tracking-wide text-slate-500 backdrop-blur-sm\"\n >\n {item.group}\n </div>\n ) : null}\n <button\n type=\"button\"\n id={optionDomId}\n role={useListbox ? \"option\" : undefined}\n aria-selected={useListbox ? isActive : undefined}\n data-active={isActive ? \"\" : undefined}\n className={cn(rowClassName, isActive ? \"bg-white/5\" : null)}\n onMouseEnter={() => onActiveIdChange?.(item.id)}\n onFocus={() => onActiveIdChange?.(item.id)}\n onClick={() => onSelect(item.id)}\n >\n <span className=\"font-medium text-slate-100\">{item.label}</span>\n {item.description ? (\n <span className=\"truncate text-xs text-slate-500\">\n {item.description}\n </span>\n ) : null}\n </button>\n </Fragment>\n );\n })}\n </div>\n </nav>\n );\n}\n\nSearchSuggestionList.displayName = \"SearchSuggestionList\";\n","import type { SearchFilterable } from \"./types\";\n\nexport type FilterSearchSuggestionsOptions = {\n /** Maximum number of matches returned. */\n maxResults?: number;\n};\n\n/**\n * Returns items whose label, description, href, or keywords contain the query (case-insensitive).\n * Whitespace-only query matches no items.\n */\nexport function filterSearchSuggestions<T extends SearchFilterable>({\n query,\n items,\n options = { maxResults: 20 },\n}: {\n query: string;\n items: readonly T[];\n options?: FilterSearchSuggestionsOptions;\n}): T[] {\n const maxResults = options.maxResults ?? 20;\n const normalized = query.trim().toLowerCase();\n if (!normalized) {\n return [];\n }\n\n const matches: T[] = [];\n for (const item of items) {\n const isMatch =\n item.label.toLowerCase().includes(normalized) ||\n item.description?.toLowerCase().includes(normalized) ||\n item.href?.toLowerCase().includes(normalized) ||\n item.keywords?.some((k) => k.toLowerCase().includes(normalized));\n\n if (isMatch) {\n matches.push(item);\n if (matches.length >= maxResults || maxResults <= 0) {\n break;\n }\n }\n }\n return matches;\n}\n"]}
1
+ {"version":3,"sources":["../../src/ui/search/search-bar.tsx","../../src/ui/search/search-suggestion-utils.ts","../../src/ui/search/search-suggestion-list.tsx","../../src/ui/search/filter-search-suggestions.ts"],"names":["SearchBar","jsx","jsxs"],"mappings":"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","file":"search.mjs","sourcesContent":["\"use client\";\n\nimport { useId } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { inputVariants } from \"../inputs/variants\";\n\nimport type { SearchBarProps } from \"./types\";\n\nexport const SearchBar = function SearchBar({\n value,\n onValueChange,\n leadingSlot,\n className,\n inputClassName,\n appearance = \"default\",\n inputSize = \"md\",\n ring = true,\n id,\n onChange,\n disabled,\n type,\n comboboxListboxId,\n comboboxActiveOptionId,\n comboboxExpanded,\n \"aria-label\": ariaLabel,\n ref,\n ...rest\n}: SearchBarProps) {\n const generatedId = useId();\n const controlId = id ?? generatedId;\n const combobox = Boolean(comboboxListboxId);\n\n return (\n <div\n data-slot=\"search-bar\"\n className={cn(\"relative flex w-full min-w-0 items-center\", className)}\n >\n {leadingSlot ? (\n <span\n className=\"pointer-events-none absolute left-3 top-1/2 z-1 flex -translate-y-1/2 text-slate-900 dark:text-slate-200 [&_svg]:size-4\"\n aria-hidden\n >\n {leadingSlot}\n </span>\n ) : null}\n <input\n ref={ref}\n id={controlId}\n type={type ?? \"search\"}\n autoComplete=\"off\"\n spellCheck={false}\n disabled={disabled}\n value={value}\n aria-label={ariaLabel ?? (combobox ? undefined : \"Search\")}\n data-slot=\"search-bar-input\"\n className={cn(\n inputVariants({ appearance, size: inputSize, ring, as: \"input\" }),\n leadingSlot ? \"pl-10\" : null,\n inputClassName,\n \"[&::-webkit-search-cancel-button]:hidden\",\n )}\n onChange={(event) => {\n onChange?.(event);\n onValueChange?.(event.target.value);\n }}\n {...(combobox\n ? {\n role: \"combobox\" as const,\n \"aria-autocomplete\": \"list\" as const,\n \"aria-controls\": comboboxListboxId,\n \"aria-expanded\": comboboxExpanded ?? false,\n ...(comboboxActiveOptionId\n ? { \"aria-activedescendant\": comboboxActiveOptionId }\n : {}),\n }\n : {})}\n {...rest}\n />\n </div>\n );\n};\n\nSearchBar.displayName = \"SearchBar\";\n","/**\n * Builds a stable DOM id for a listbox option so `aria-activedescendant` on the combobox\n * input can reference it. Safe for href-like `itemId` strings.\n */\nexport function searchSuggestionOptionDomId(\n listboxId: string,\n itemId: string,\n): string {\n const safe = itemId.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n return `${listboxId}_opt_${safe}`;\n}\n","\"use client\";\n\nimport { Fragment } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { searchSuggestionOptionDomId } from \"./search-suggestion-utils\";\n\nimport type { SearchSuggestionListProps } from \"./types\";\n\nconst rowClassName =\n \"flex w-full flex-col gap-0.5 rounded-lg px-3 py-2.5 text-left text-sm transition-colors dark:hover:bg-white/5 hover:bg-black/10 focus-visible:bg-white/5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-400/50\";\n\nexport function SearchSuggestionList({\n items,\n onSelect,\n activeId,\n onActiveIdChange,\n listboxId,\n className,\n listClassName,\n emptyLabel,\n}: SearchSuggestionListProps) {\n if (items.length === 0) {\n return (\n <div\n data-slot=\"search-suggestion-list-empty\"\n className={cn(\n \"px-1 py-6 text-center text-sm text-slate-900 dark:text-slate-200\",\n className,\n )}\n >\n {emptyLabel ?? \"No matches.\"}\n </div>\n );\n }\n\n const useListbox = Boolean(listboxId);\n\n const rows: Array<{\n item: (typeof items)[number];\n showGroup: boolean;\n }> = [];\n let lastGroupSeen: string | undefined;\n for (const item of items) {\n const showGroup = Boolean(item.group && item.group !== lastGroupSeen);\n if (item.group) {\n lastGroupSeen = item.group;\n }\n rows.push({ item, showGroup });\n }\n\n return (\n <nav\n data-slot=\"search-suggestion-list\"\n aria-label=\"Search results\"\n className={cn(\n \"flex max-h-[min(50vh,360px)] flex-col gap-1 overflow-y-auto pr-1\",\n className,\n )}\n >\n <div\n {...(useListbox\n ? {\n id: listboxId,\n role: \"listbox\" as const,\n }\n : {})}\n className={cn(\"flex flex-col gap-0.5\", listClassName)}\n >\n {rows.map(({ item, showGroup }) => {\n const isActive = activeId === item.id;\n const optionDomId =\n useListbox && listboxId\n ? searchSuggestionOptionDomId(listboxId, item.id)\n : undefined;\n return (\n <Fragment key={item.id}>\n {showGroup ? (\n <div\n role=\"presentation\"\n className=\"sticky rounded-lg top-0 z-1 dark:bg-slate-950/95 bg-slate-50/95 px-2 pb-1 pt-2 text-xs font-semibold uppercase tracking-wide text-slate-900 dark:text-slate-200 backdrop-blur-sm\"\n >\n {item.group}\n </div>\n ) : null}\n <button\n type=\"button\"\n id={optionDomId}\n role={useListbox ? \"option\" : undefined}\n aria-selected={useListbox ? isActive : undefined}\n data-active={isActive ? \"\" : undefined}\n className={cn(rowClassName, isActive ? \"bg-white/5\" : null)}\n onMouseEnter={() => onActiveIdChange?.(item.id)}\n onFocus={() => onActiveIdChange?.(item.id)}\n onClick={() => onSelect(item.id)}\n >\n <span className=\"font-medium text-slate-900 dark:text-slate-100\">\n {item.label}\n </span>\n {item.description ? (\n <span className=\"truncate text-xs text-slate-900 dark:text-slate-200\">\n {item.description}\n </span>\n ) : null}\n </button>\n </Fragment>\n );\n })}\n </div>\n </nav>\n );\n}\n\nSearchSuggestionList.displayName = \"SearchSuggestionList\";\n","import type { SearchFilterable } from \"./types\";\n\nexport type FilterSearchSuggestionsOptions = {\n /** Maximum number of matches returned. */\n maxResults?: number;\n};\n\n/**\n * Returns items whose label, description, href, or keywords contain the query (case-insensitive).\n * Whitespace-only query matches no items.\n */\nexport function filterSearchSuggestions<T extends SearchFilterable>({\n query,\n items,\n options = { maxResults: 20 },\n}: {\n query: string;\n items: readonly T[];\n options?: FilterSearchSuggestionsOptions;\n}): T[] {\n const maxResults = options.maxResults ?? 20;\n const normalized = query.trim().toLowerCase();\n if (!normalized) {\n return [];\n }\n\n const matches: T[] = [];\n for (const item of items) {\n const isMatch =\n item.label.toLowerCase().includes(normalized) ||\n item.description?.toLowerCase().includes(normalized) ||\n item.href?.toLowerCase().includes(normalized) ||\n item.keywords?.some((k) => k.toLowerCase().includes(normalized));\n\n if (isMatch) {\n matches.push(item);\n if (matches.length >= maxResults || maxResults <= 0) {\n break;\n }\n }\n }\n return matches;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/ui/select/variants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB;;;8EAgDjC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;8EAsD9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;8EAyDjC,CAAC"}
1
+ {"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/ui/select/variants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB;;;8EAsDjC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;8EAsD9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;8EAyDjC,CAAC"}
package/dist/ui/select.js CHANGED
@@ -7,32 +7,32 @@ var classVarianceAuthority = require('class-variance-authority');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
 
9
9
  var selectTriggerVariants = classVarianceAuthority.cva(
10
- "flex items-center justify-between rounded-md border transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-400 focus-visible:ring-offset-2",
10
+ "flex items-center cursor-pointer justify-between rounded-md border transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-600 dark:focus-visible:ring-gray-400 focus-visible:ring-offset-2",
11
11
  {
12
12
  variants: {
13
13
  variant: {
14
- default: "border-gray-300 bg-white text-gray-900",
15
- outline: "border-2 border-gray-500",
16
- ghost: "border-transparent",
17
- sky: "border-sky-600 text-sky-600",
18
- rose: "border-rose-600 text-rose-600",
19
- purple: "border-purple-600 text-purple-600",
20
- pink: "border-pink-600 text-pink-600",
21
- orange: "border-orange-600 text-orange-600",
22
- yellow: "border-yellow-600 text-yellow-600",
23
- teal: "border-teal-600 text-teal-600",
14
+ default: "border-gray-300 dark:border-gray-300 bg-white dark:bg-black text-gray-900 dark:text-white",
15
+ outline: "border-2 border-gray-500 text-gray-500 dark:text-gray-100",
16
+ ghost: "border-transparent text-slate-900 dark:text-slate-200",
17
+ sky: "border-sky-900 dark:border-sky-600 text-sky-900 dark:text-sky-600",
18
+ rose: "border-rose-900 dark:border-rose-600 text-rose-900 dark:text-rose-600",
19
+ purple: "border-purple-900 dark:border-purple-600 text-purple-900 dark:text-purple-600",
20
+ pink: "border-pink-900 dark:border-pink-600 text-pink-900 dark:text-pink-600",
21
+ orange: "border-orange-900 dark:border-orange-600 text-orange-900 dark:text-orange-600",
22
+ yellow: "border-yellow-900 dark:border-yellow-600 text-yellow-900 dark:text-yellow-600",
23
+ teal: "border-teal-900 dark:border-teal-600 text-teal-900 dark:text-teal-600",
24
24
  indigo: "border-indigo-500 text-indigo-500",
25
- emerald: "border-emerald-600 text-emerald-600",
26
- glass: "border-white/15 bg-white/10 text-white backdrop-blur-md",
27
- "gradient-blue": "bg-linear-to-r from-blue-600 to-purple-600 backdrop-blur-xl text-white",
28
- "gradient-green": "bg-linear-to-r from-green-600 to-lime-600 backdrop-blur-xl text-white",
29
- "gradient-red": "bg-linear-to-r from-red-600 to-pink-600 backdrop-blur-xl text-white",
30
- "gradient-yellow": "bg-linear-to-r from-yellow-600 to-orange-600 backdrop-blur-xl text-white",
31
- "gradient-purple": "bg-linear-to-r from-purple-600 to-pink-600 backdrop-blur-xl text-white",
32
- "gradient-teal": "bg-linear-to-r from-teal-600 to-cyan-600 backdrop-blur-xl text-white",
33
- "gradient-indigo": "bg-linear-to-r from-indigo-600 to-purple-600 backdrop-blur-xl text-white",
34
- "gradient-pink": "bg-linear-to-r from-pink-600 to-rose-600 backdrop-blur-xl text-white",
35
- "gradient-orange": "bg-linear-to-r from-orange-600 to-red-600 backdrop-blur-xl text-white"
25
+ emerald: "border-emerald-900 dark:border-emerald-600 text-emerald-900 dark:text-emerald-600",
26
+ glass: "border-black/15 dark:border-white/15 bg-black/10 dark:bg-white/10 text-slate-900 dark:text-white backdrop-blur-md",
27
+ "gradient-blue": "bg-linear-to-r from-blue-900 dark:from-blue-600 to-purple-900 dark:to-purple-600 backdrop-blur-xl text-white",
28
+ "gradient-green": "bg-linear-to-r from-green-900 dark:from-green-600 to-lime-900 dark:to-lime-600 backdrop-blur-xl text-white",
29
+ "gradient-red": "bg-linear-to-r from-red-900 dark:from-red-600 to-pink-900 dark:to-pink-600 backdrop-blur-xl text-white",
30
+ "gradient-yellow": "bg-linear-to-r from-yellow-900 dark:from-yellow-600 to-orange-900 dark:to-orange-600 backdrop-blur-xl text-white",
31
+ "gradient-purple": "bg-linear-to-r from-purple-900 dark:from-purple-600 to-pink-900 dark:to-pink-600 backdrop-blur-xl text-white",
32
+ "gradient-teal": "bg-linear-to-r from-teal-900 dark:from-teal-600 to-cyan-900 dark:to-cyan-600 backdrop-blur-xl text-white",
33
+ "gradient-indigo": "bg-linear-to-r from-indigo-900 dark:from-indigo-600 to-purple-900 dark:to-purple-600 backdrop-blur-xl text-white",
34
+ "gradient-pink": "bg-linear-to-r from-pink-900 dark:from-pink-600 to-rose-900 dark:to-rose-600 backdrop-blur-xl text-white",
35
+ "gradient-orange": "bg-linear-to-r from-orange-900 dark:from-orange-600 to-red-900 dark:to-red-600 backdrop-blur-xl text-white"
36
36
  },
37
37
  size: {
38
38
  sm: "px-2 py-1 text-sm",
@@ -47,32 +47,32 @@ var selectTriggerVariants = classVarianceAuthority.cva(
47
47
  }
48
48
  );
49
49
  var selectItemVariants = classVarianceAuthority.cva(
50
- "cursor-pointer px-3 py-2 rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-400 focus-visible:ring-inset",
50
+ "cursor-pointer px-3 py-2 rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-600 dark:focus-visible:ring-gray-400 focus-visible:ring-inset",
51
51
  {
52
52
  variants: {
53
53
  appearance: {
54
- default: "bg-white text-gray-900 data-[selected=true]:bg-gray-200 data-[selected=true]:text-gray-900",
55
- glass: "bg-white/10 text-gray-100 data-[selected=true]:bg-white/10 data-[selected=true]:text-gray-100",
56
- outline: "border-2 border-gray-500 text-gray-900 data-[selected=true]:border-2 data-[selected=true]:border-gray-500 data-[selected=true]:bg-gray-200 data-[selected=true]:text-gray-900",
57
- ghost: "border-transparent text-gray-900 data-[selected=true]:border-transparent data-[selected=true]:bg-transparent data-[selected=true]:text-gray-900",
58
- sky: "border-sky-600 text-sky-800 data-[selected=true]:border-sky-600 data-[selected=true]:bg-sky-200 data-[selected=true]:text-sky-800",
59
- rose: "border-rose-600 text-rose-800 data-[selected=true]:border-rose-600 data-[selected=true]:bg-rose-200 data-[selected=true]:text-rose-800",
60
- purple: "border-purple-600 text-purple-800 data-[selected=true]:border-purple-600 data-[selected=true]:bg-purple-200 data-[selected=true]:text-purple-800",
61
- pink: "border-pink-600 text-pink-800 data-[selected=true]:border-pink-600 data-[selected=true]:bg-pink-200 data-[selected=true]:text-pink-800",
62
- orange: "border-orange-600 text-orange-800 data-[selected=true]:border-orange-600 data-[selected=true]:bg-orange-200 data-[selected=true]:text-orange-800",
63
- yellow: "border-yellow-600 text-yellow-800 data-[selected=true]:border-yellow-600 data-[selected=true]:bg-yellow-200 data-[selected=true]:text-yellow-800",
64
- teal: "border-teal-600 text-teal-800 data-[selected=true]:border-teal-600 data-[selected=true]:bg-teal-200 data-[selected=true]:text-teal-800",
65
- indigo: "border-indigo-600 text-indigo-800 data-[selected=true]:border-indigo-600 data-[selected=true]:bg-indigo-200 data-[selected=true]:text-indigo-800",
66
- emerald: "border-emerald-600 text-emerald-800 data-[selected=true]:border-emerald-600 data-[selected=true]:bg-emerald-200 data-[selected=true]:text-emerald-800",
67
- "gradient-blue": "bg-linear-to-r from-blue-950/70 to-purple-950/70 backdrop-blur-xl text-blue-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-blue-600 data-[selected=true]:to-purple-600 data-[selected=true]:text-blue-100",
68
- "gradient-green": "bg-linear-to-r from-green-950/70 to-lime-950/70 backdrop-blur-xl text-green-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-green-600 data-[selected=true]:to-lime-600 data-[selected=true]:text-green-100",
69
- "gradient-red": "bg-linear-to-r from-red-950/70 to-pink-950/70 backdrop-blur-xl text-red-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-red-600 data-[selected=true]:to-pink-600 data-[selected=true]:text-red-100",
70
- "gradient-yellow": "bg-linear-to-r from-yellow-950/70 to-orange-950/70 backdrop-blur-xl text-yellow-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-yellow-600 data-[selected=true]:to-orange-600 data-[selected=true]:text-yellow-100",
71
- "gradient-purple": "bg-linear-to-r from-purple-950/70 to-pink-950/70 backdrop-blur-xl text-purple-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-purple-600 data-[selected=true]:to-pink-600 data-[selected=true]:text-purple-100",
72
- "gradient-teal": "bg-linear-to-r from-teal-950/70 to-cyan-950/70 backdrop-blur-xl text-teal-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-teal-600 data-[selected=true]:to-cyan-600 data-[selected=true]:text-teal-100",
73
- "gradient-indigo": "bg-linear-to-r from-indigo-950/70 to-purple-950/70 backdrop-blur-xl text-indigo-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-indigo-600 data-[selected=true]:to-purple-600 data-[selected=true]:text-indigo-100",
74
- "gradient-pink": "bg-linear-to-r from-pink-950/70 to-rose-950/70 backdrop-blur-xl text-pink-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-pink-600 data-[selected=true]:to-rose-600 data-[selected=true]:text-pink-100",
75
- "gradient-orange": "bg-linear-to-r from-orange-950/70 to-red-950/70 backdrop-blur-xl text-orange-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-orange-600 data-[selected=true]:to-red-600 data-[selected=true]:text-orange-100"
54
+ default: "bg-white dark:bg-black text-gray-900 dark:text-gray-200 data-[selected=true]:bg-gray-200 data-[selected=true]:text-gray-700 dark:data-[selected=true]:text-gray-900",
55
+ glass: "bg-black/10 dark:bg-white/10 text-gray-700 dark:text-gray-900 data-[selected=true]:bg-black/10 dark:data-[selected=true]:bg-white/10 data-[selected=true]:text-gray-700 dark:data-[selected=true]:text-gray-900",
56
+ outline: "border-2 border-gray-500 text-gray-900 dark:text-gray-100 data-[selected=true]:border-2 data-[selected=true]:border-gray-500 data-[selected=true]:bg-gray-200 data-[selected=true]:text-gray-900 dark:data-[selected=true]:text-gray-900",
57
+ ghost: "border-transparent text-gray-900 dark:text-gray-100 data-[selected=true]:border-transparent data-[selected=true]:bg-transparent data-[selected=true]:text-gray-900 dark:data-[selected=true]:text-gray-100",
58
+ sky: "border-sky-900 dark:border-sky-600 text-sky-900 dark:text-sky-200 data-[selected=true]:border-sky-900 dark:data-[selected=true]:border-sky-600 data-[selected=true]:bg-sky-200 data-[selected=true]:text-sky-900 dark:data-[selected=true]:text-sky-900",
59
+ rose: "border-rose-900 dark:border-rose-600 text-rose-900 dark:text-rose-200 data-[selected=true]:border-rose-900 dark:data-[selected=true]:border-rose-600 data-[selected=true]:bg-rose-200 data-[selected=true]:text-rose-900 dark:data-[selected=true]:text-rose-900",
60
+ purple: "border-purple-900 dark:border-purple-600 text-purple-900 dark:text-purple-200 data-[selected=true]:border-purple-900 dark:data-[selected=true]:border-purple-600 data-[selected=true]:bg-purple-200 data-[selected=true]:text-purple-900 dark:data-[selected=true]:text-purple-900",
61
+ pink: "border-pink-900 dark:border-pink-600 text-pink-900 dark:text-pink-200 data-[selected=true]:border-pink-900 dark:data-[selected=true]:border-pink-600 data-[selected=true]:bg-pink-200 data-[selected=true]:text-pink-900 dark:data-[selected=true]:text-pink-900",
62
+ orange: "border-orange-900 dark:border-orange-600 text-orange-900 dark:text-orange-200 data-[selected=true]:border-orange-900 dark:data-[selected=true]:border-orange-600 data-[selected=true]:bg-orange-200 data-[selected=true]:text-orange-900 dark:data-[selected=true]:text-orange-900",
63
+ yellow: "border-yellow-900 dark:border-yellow-600 text-yellow-900 dark:text-yellow-200 data-[selected=true]:border-yellow-900 dark:data-[selected=true]:border-yellow-600 data-[selected=true]:bg-yellow-200 data-[selected=true]:text-yellow-900 dark:data-[selected=true]:text-yellow-900",
64
+ teal: "border-teal-900 dark:border-teal-600 text-teal-900 dark:text-teal-200 data-[selected=true]:border-teal-900 dark:data-[selected=true]:border-teal-600 data-[selected=true]:bg-teal-200 data-[selected=true]:text-teal-900 dark:data-[selected=true]:text-teal-900",
65
+ indigo: "border-indigo-900 dark:border-indigo-600 text-indigo-900 dark:text-indigo-200 data-[selected=true]:border-indigo-900 dark:data-[selected=true]:border-indigo-600 data-[selected=true]:bg-indigo-200 data-[selected=true]:text-indigo-900 dark:data-[selected=true]:text-indigo-900",
66
+ emerald: "border-emerald-900 dark:border-emerald-600 text-emerald-900 dark:text-emerald-200 data-[selected=true]:border-emerald-900 dark:data-[selected=true]:border-emerald-600 data-[selected=true]:bg-emerald-200 data-[selected=true]:text-emerald-900 dark:data-[selected=true]:text-emerald-900",
67
+ "gradient-blue": "bg-transparent backdrop-blur-xl text-blue-50 dark:text-blue-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-blue-50 dark:data-[selected=true]:from-blue-50 data-[selected=true]:to-purple-50 dark:data-[selected=true]:to-purple-50 data-[selected=true]:text-blue-900",
68
+ "gradient-green": "bg-transparent backdrop-blur-xl text-green-50 dark:text-green-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-green-50 dark:data-[selected=true]:from-green-50 data-[selected=true]:to-lime-50 dark:data-[selected=true]:to-lime-50 data-[selected=true]:text-green-900",
69
+ "gradient-red": "bg-transparent backdrop-blur-xl text-red-50 dark:text-red-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-red-50 dark:data-[selected=true]:from-red-50 data-[selected=true]:to-pink-50 dark:data-[selected=true]:to-pink-50 data-[selected=true]:text-red-900",
70
+ "gradient-yellow": "bg-transparent backdrop-blur-xl text-yellow-50 dark:text-yellow-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-yellow-50 dark:data-[selected=true]:from-yellow-50 data-[selected=true]:to-orange-50 dark:data-[selected=true]:to-orange-50 data-[selected=true]:text-yellow-900",
71
+ "gradient-purple": "bg-transparent backdrop-blur-xl text-purple-50 dark:text-purple-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-purple-50 dark:data-[selected=true]:from-purple-50 data-[selected=true]:to-pink-50 dark:data-[selected=true]:to-pink-50 data-[selected=true]:text-purple-900",
72
+ "gradient-teal": "bg-transparent backdrop-blur-xl text-teal-50 dark:text-teal-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-teal-50 dark:data-[selected=true]:from-teal-50 data-[selected=true]:to-cyan-50 dark:data-[selected=true]:to-cyan-50 data-[selected=true]:text-teal-900",
73
+ "gradient-indigo": "bg-transparent backdrop-blur-xl text-indigo-50 dark:text-indigo-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-indigo-50 dark:data-[selected=true]:from-indigo-50 data-[selected=true]:to-purple-50 dark:data-[selected=true]:to-purple-50 data-[selected=true]:text-indigo-900",
74
+ "gradient-pink": "bg-transparent backdrop-blur-xl text-pink-50 dark:text-pink-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-pink-50 dark:data-[selected=true]:from-pink-50 data-[selected=true]:to-rose-50 dark:data-[selected=true]:to-rose-50 data-[selected=true]:text-pink-900",
75
+ "gradient-orange": "bg-transparent backdrop-blur-xl text-orange-50 dark:text-orange-50 data-[selected=true]:bg-linear-to-r data-[selected=true]:from-orange-50 dark:data-[selected=true]:from-orange-50 data-[selected=true]:to-red-50 dark:data-[selected=true]:to-red-50 data-[selected=true]:text-orange-900"
76
76
  },
77
77
  disabled: {
78
78
  true: "opacity-50 cursor-not-allowed"
@@ -84,32 +84,32 @@ var selectItemVariants = classVarianceAuthority.cva(
84
84
  }
85
85
  );
86
86
  var selectContentVariants = classVarianceAuthority.cva(
87
- "absolute z-10 mt-2 w-full rounded-md border bg-white shadow-md",
87
+ "absolute z-10 mt-2 w-full rounded-md border bg-white dark:bg-black shadow-md",
88
88
  {
89
89
  variants: {
90
90
  appearance: {
91
- default: "bg-white shadow-md",
92
- glass: "bg-white/10 backdrop-blur-md",
91
+ default: "bg-white dark:bg-black shadow-md",
92
+ glass: "bg-black/10 dark:bg-white/10 backdrop-blur-md",
93
93
  outline: "border-2 border-gray-500",
94
94
  ghost: "border-transparent",
95
- sky: "border-sky-600",
96
- rose: "border-rose-600",
97
- purple: "border-purple-600",
98
- pink: "border-pink-600",
99
- orange: "border-orange-600",
100
- yellow: "border-yellow-600",
101
- teal: "border-teal-600",
102
- indigo: "border-indigo-600",
103
- emerald: "border-emerald-600",
104
- "gradient-blue": "bg-linear-to-r from-blue-600 to-purple-600 backdrop-blur-xl",
105
- "gradient-green": "bg-linear-to-r from-green-600 to-lime-600 backdrop-blur-xl",
106
- "gradient-red": "bg-linear-to-r from-red-600 to-pink-600 backdrop-blur-xl",
107
- "gradient-yellow": "bg-linear-to-r from-yellow-600 to-orange-600 backdrop-blur-xl",
108
- "gradient-purple": "bg-linear-to-r from-purple-600 to-pink-600 backdrop-blur-xl",
109
- "gradient-teal": "bg-linear-to-r from-teal-600 to-cyan-600 backdrop-blur-xl",
110
- "gradient-indigo": "bg-linear-to-r from-indigo-600 to-purple-600 backdrop-blur-xl",
111
- "gradient-pink": "bg-linear-to-r from-pink-600 to-rose-600 backdrop-blur-xl",
112
- "gradient-orange": "bg-linear-to-r from-orange-600 to-red-600 backdrop-blur-xl"
95
+ sky: "border-sky-900 dark:border-sky-600",
96
+ rose: "border-rose-900 dark:border-rose-600",
97
+ purple: "border-purple-900 dark:border-purple-600",
98
+ pink: "border-pink-900 dark:border-pink-600",
99
+ orange: "border-orange-900 dark:border-orange-600",
100
+ yellow: "border-yellow-900 dark:border-yellow-600",
101
+ teal: "border-teal-900 dark:border-teal-600",
102
+ indigo: "border-indigo-900 dark:border-indigo-600",
103
+ emerald: "border-emerald-900 dark:border-emerald-600",
104
+ "gradient-blue": "bg-linear-to-r from-blue-900 dark:from-blue-600 to-purple-900 dark:to-purple-600 backdrop-blur-xl",
105
+ "gradient-green": "bg-linear-to-r from-green-900 dark:from-green-600 to-lime-900 dark:to-lime-600 backdrop-blur-xl",
106
+ "gradient-red": "bg-linear-to-r from-red-900 dark:from-red-600 to-pink-900 dark:to-pink-600 backdrop-blur-xl",
107
+ "gradient-yellow": "bg-linear-to-r from-yellow-900 dark:from-yellow-600 to-orange-900 dark:to-orange-600 backdrop-blur-xl",
108
+ "gradient-purple": "bg-linear-to-r from-purple-900 dark:from-purple-600 to-pink-900 dark:to-pink-600 backdrop-blur-xl",
109
+ "gradient-teal": "bg-linear-to-r from-teal-900 dark:from-teal-600 to-cyan-900 dark:to-cyan-600 backdrop-blur-xl",
110
+ "gradient-indigo": "bg-linear-to-r from-indigo-900 dark:from-indigo-600 to-purple-900 dark:to-purple-600 backdrop-blur-xl",
111
+ "gradient-pink": "bg-linear-to-r from-pink-900 dark:from-pink-600 to-rose-900 dark:to-rose-600 backdrop-blur-xl",
112
+ "gradient-orange": "bg-linear-to-r from-orange-900 dark:from-orange-600 to-red-900 dark:to-red-600 backdrop-blur-xl"
113
113
  },
114
114
  size: {
115
115
  sm: "px-2 py-1 text-sm",