@marktiderman/genesis-ui 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/dist/AppShell-BJarYZzz.d.ts +198 -0
  2. package/dist/{chunk-NJMO3VPA.js → chunk-22XB3Q6H.js} +8 -8
  3. package/dist/chunk-22XB3Q6H.js.map +1 -0
  4. package/dist/{chunk-2MXMWBDV.js → chunk-27ELYTGE.js} +6 -6
  5. package/dist/chunk-27ELYTGE.js.map +1 -0
  6. package/dist/chunk-46TZGMFW.js +159 -0
  7. package/dist/chunk-46TZGMFW.js.map +1 -0
  8. package/dist/chunk-4CQHPWJD.js +117 -0
  9. package/dist/chunk-4CQHPWJD.js.map +1 -0
  10. package/dist/{chunk-ZDAT5JDH.js → chunk-65SPT7EA.js} +24 -6
  11. package/dist/chunk-65SPT7EA.js.map +1 -0
  12. package/dist/chunk-6KHY647C.js +67 -0
  13. package/dist/chunk-6KHY647C.js.map +1 -0
  14. package/dist/chunk-6M4NHHKG.js +51 -0
  15. package/dist/chunk-6M4NHHKG.js.map +1 -0
  16. package/dist/{chunk-AI6CCNWK.js → chunk-6NPEMLBA.js} +2 -2
  17. package/dist/chunk-6NPEMLBA.js.map +1 -0
  18. package/dist/chunk-6Q6CLLJ4.js +9 -0
  19. package/dist/chunk-6Q6CLLJ4.js.map +1 -0
  20. package/dist/{chunk-UGHQFQOE.js → chunk-6TVMQH6M.js} +28 -28
  21. package/dist/chunk-6TVMQH6M.js.map +1 -0
  22. package/dist/{chunk-UKSBLFEK.js → chunk-6XPMU65K.js} +5 -5
  23. package/dist/{chunk-UKSBLFEK.js.map → chunk-6XPMU65K.js.map} +1 -1
  24. package/dist/{chunk-YZEA5TGK.js → chunk-7XMZVISM.js} +16 -16
  25. package/dist/chunk-7XMZVISM.js.map +1 -0
  26. package/dist/chunk-A7AHVDG7.js +52 -0
  27. package/dist/chunk-A7AHVDG7.js.map +1 -0
  28. package/dist/chunk-AFZ76Q26.js +84 -0
  29. package/dist/chunk-AFZ76Q26.js.map +1 -0
  30. package/dist/{chunk-4V4H2ZM7.js → chunk-AL5TMEZQ.js} +31 -31
  31. package/dist/chunk-AL5TMEZQ.js.map +1 -0
  32. package/dist/{chunk-O4B5ALO7.js → chunk-AOZGQM6W.js} +3 -3
  33. package/dist/chunk-AOZGQM6W.js.map +1 -0
  34. package/dist/chunk-ARJI2JUV.js +122 -0
  35. package/dist/chunk-ARJI2JUV.js.map +1 -0
  36. package/dist/chunk-AVFZ4P4B.js +25 -0
  37. package/dist/chunk-AVFZ4P4B.js.map +1 -0
  38. package/dist/chunk-B2GIBUQD.js +11 -0
  39. package/dist/chunk-B2GIBUQD.js.map +1 -0
  40. package/dist/{chunk-JXI2MYL3.js → chunk-C46ITXE4.js} +5 -5
  41. package/dist/chunk-C46ITXE4.js.map +1 -0
  42. package/dist/chunk-CNTWQSUT.js +65 -0
  43. package/dist/chunk-CNTWQSUT.js.map +1 -0
  44. package/dist/chunk-D2LIXA2Y.js +65 -0
  45. package/dist/chunk-D2LIXA2Y.js.map +1 -0
  46. package/dist/{chunk-FCGFG4RV.js → chunk-D4JTQYP5.js} +3 -3
  47. package/dist/{chunk-FCGFG4RV.js.map → chunk-D4JTQYP5.js.map} +1 -1
  48. package/dist/{chunk-T5VX5DYO.js → chunk-F47U5KNW.js} +5 -5
  49. package/dist/chunk-F47U5KNW.js.map +1 -0
  50. package/dist/chunk-FEJAZFP3.js +1100 -0
  51. package/dist/chunk-FEJAZFP3.js.map +1 -0
  52. package/dist/{chunk-2B3MFHBQ.js → chunk-FK42ZGGV.js} +21 -21
  53. package/dist/chunk-FK42ZGGV.js.map +1 -0
  54. package/dist/{chunk-XISSLIMH.js → chunk-FTTNGGLA.js} +2 -2
  55. package/dist/{chunk-XISSLIMH.js.map → chunk-FTTNGGLA.js.map} +1 -1
  56. package/dist/chunk-G5YKBPBF.js +74 -0
  57. package/dist/chunk-G5YKBPBF.js.map +1 -0
  58. package/dist/chunk-GCQFVMPI.js +56 -0
  59. package/dist/chunk-GCQFVMPI.js.map +1 -0
  60. package/dist/{chunk-LDPPIBIJ.js → chunk-IJCT5IJD.js} +3 -3
  61. package/dist/{chunk-LDPPIBIJ.js.map → chunk-IJCT5IJD.js.map} +1 -1
  62. package/dist/{chunk-DGRHPJ3M.js → chunk-J6FBA7PH.js} +3 -3
  63. package/dist/{chunk-DGRHPJ3M.js.map → chunk-J6FBA7PH.js.map} +1 -1
  64. package/dist/chunk-JAMLFMDS.js +12 -0
  65. package/dist/chunk-JAMLFMDS.js.map +1 -0
  66. package/dist/{chunk-C6H7AMO4.js → chunk-LNFF2RBD.js} +9 -9
  67. package/dist/chunk-LNFF2RBD.js.map +1 -0
  68. package/dist/{chunk-QBZMY2AF.js → chunk-M62CHO3N.js} +18 -18
  69. package/dist/chunk-M62CHO3N.js.map +1 -0
  70. package/dist/{chunk-5Q4FABZQ.js → chunk-NUXW6NPP.js} +8 -8
  71. package/dist/chunk-NUXW6NPP.js.map +1 -0
  72. package/dist/{chunk-I6JQHP6D.js → chunk-NWSCYLPT.js} +78 -17
  73. package/dist/chunk-NWSCYLPT.js.map +1 -0
  74. package/dist/{chunk-63FW5ZUA.js → chunk-P3ZL6FGR.js} +7 -7
  75. package/dist/chunk-P3ZL6FGR.js.map +1 -0
  76. package/dist/chunk-P64MFQXZ.js +191 -0
  77. package/dist/chunk-P64MFQXZ.js.map +1 -0
  78. package/dist/chunk-PLIYF6KI.js +52 -0
  79. package/dist/chunk-PLIYF6KI.js.map +1 -0
  80. package/dist/chunk-PSR47JRA.js +26 -0
  81. package/dist/chunk-PSR47JRA.js.map +1 -0
  82. package/dist/{chunk-QLCDAFS7.js → chunk-Q4I4SFBD.js} +3 -3
  83. package/dist/chunk-Q4I4SFBD.js.map +1 -0
  84. package/dist/{chunk-SBJV3K4G.js → chunk-QJ6P2DW6.js} +28 -28
  85. package/dist/chunk-QJ6P2DW6.js.map +1 -0
  86. package/dist/{chunk-IP6TMT3D.js → chunk-R7QFP6EL.js} +3 -3
  87. package/dist/chunk-R7QFP6EL.js.map +1 -0
  88. package/dist/{chunk-WZWR2ELB.js → chunk-SEBU6JCK.js} +6 -6
  89. package/dist/chunk-SEBU6JCK.js.map +1 -0
  90. package/dist/{chunk-7OBL3H5P.js → chunk-SEFK4NZV.js} +3 -3
  91. package/dist/chunk-SEFK4NZV.js.map +1 -0
  92. package/dist/chunk-SRIT4NFQ.js +67 -0
  93. package/dist/chunk-SRIT4NFQ.js.map +1 -0
  94. package/dist/chunk-SY62XJFA.js +19 -0
  95. package/dist/chunk-SY62XJFA.js.map +1 -0
  96. package/dist/{chunk-SVXDWPLO.js → chunk-THD3YOOZ.js} +17 -17
  97. package/dist/chunk-THD3YOOZ.js.map +1 -0
  98. package/dist/chunk-VXFYETRK.js +58 -0
  99. package/dist/chunk-VXFYETRK.js.map +1 -0
  100. package/dist/chunk-XBX6QMR5.js +58 -0
  101. package/dist/chunk-XBX6QMR5.js.map +1 -0
  102. package/dist/{chunk-SCUT2ZCD.js → chunk-XCGZPFT7.js} +17 -17
  103. package/dist/chunk-XCGZPFT7.js.map +1 -0
  104. package/dist/chunk-XMK3T4TA.js +73 -0
  105. package/dist/chunk-XMK3T4TA.js.map +1 -0
  106. package/dist/chunk-YJ6MPS6U.js +226 -0
  107. package/dist/chunk-YJ6MPS6U.js.map +1 -0
  108. package/dist/chunk-YRYQXU3G.js +38 -0
  109. package/dist/chunk-YRYQXU3G.js.map +1 -0
  110. package/dist/{chunk-5J7BP5DI.js → chunk-YWFPMND7.js} +10 -10
  111. package/dist/chunk-YWFPMND7.js.map +1 -0
  112. package/dist/chunk-YYEGAFUE.js +94 -0
  113. package/dist/chunk-YYEGAFUE.js.map +1 -0
  114. package/dist/{chunk-TKA4LOMT.js → chunk-ZZ7H7VVX.js} +8 -8
  115. package/dist/chunk-ZZ7H7VVX.js.map +1 -0
  116. package/dist/components/data/index.d.ts +223 -74
  117. package/dist/components/data/index.js +504 -539
  118. package/dist/components/data/index.js.map +1 -1
  119. package/dist/components/layout/dashboard-page.d.ts +4 -0
  120. package/dist/components/layout/dashboard-page.js +5 -0
  121. package/dist/components/layout/dashboard-page.js.map +1 -0
  122. package/dist/components/layout/detail-page.d.ts +91 -0
  123. package/dist/components/layout/detail-page.js +6 -0
  124. package/dist/components/layout/detail-page.js.map +1 -0
  125. package/dist/components/layout/form-page.d.ts +82 -0
  126. package/dist/components/layout/form-page.js +5 -0
  127. package/dist/components/layout/form-page.js.map +1 -0
  128. package/dist/components/layout/index.d.ts +15 -0
  129. package/dist/components/layout/index.js +21 -0
  130. package/dist/components/layout/index.js.map +1 -0
  131. package/dist/components/layout/settings-page.d.ts +114 -0
  132. package/dist/components/layout/settings-page.js +6 -0
  133. package/dist/components/layout/settings-page.js.map +1 -0
  134. package/dist/components/patterns/empty-state.d.ts +74 -0
  135. package/dist/components/{ui → patterns}/empty-state.js +2 -1
  136. package/dist/components/{ui → patterns}/form-field.d.ts +2 -2
  137. package/dist/components/{ui → patterns}/form-field.js +2 -2
  138. package/dist/components/patterns/index.d.ts +18 -0
  139. package/dist/components/patterns/index.js +18 -0
  140. package/dist/components/patterns/index.js.map +1 -0
  141. package/dist/components/patterns/page-loading.d.ts +25 -0
  142. package/dist/components/patterns/page-loading.js +5 -0
  143. package/dist/components/patterns/page-loading.js.map +1 -0
  144. package/dist/components/patterns/settings-row.d.ts +42 -0
  145. package/dist/components/patterns/settings-row.js +6 -0
  146. package/dist/components/patterns/settings-row.js.map +1 -0
  147. package/dist/components/patterns/status-badge.d.ts +38 -0
  148. package/dist/components/patterns/status-badge.js +4 -0
  149. package/dist/components/patterns/status-badge.js.map +1 -0
  150. package/dist/components/patterns/toggle-row.d.ts +36 -0
  151. package/dist/components/patterns/toggle-row.js +8 -0
  152. package/dist/components/patterns/toggle-row.js.map +1 -0
  153. package/dist/components/patterns/user-avatar.d.ts +34 -0
  154. package/dist/components/patterns/user-avatar.js +5 -0
  155. package/dist/components/patterns/user-avatar.js.map +1 -0
  156. package/dist/components/ui/accessible-icon.d.ts +48 -0
  157. package/dist/components/ui/accessible-icon.js +3 -0
  158. package/dist/components/ui/accessible-icon.js.map +1 -0
  159. package/dist/components/ui/accordion.d.ts +5 -5
  160. package/dist/components/ui/accordion.js +1 -1
  161. package/dist/components/ui/alert-dialog.d.ts +10 -10
  162. package/dist/components/ui/alert-dialog.js +1 -1
  163. package/dist/components/ui/aspect-ratio.d.ts +2 -2
  164. package/dist/components/ui/aspect-ratio.js +1 -1
  165. package/dist/components/ui/avatar.d.ts +4 -4
  166. package/dist/components/ui/avatar.js +1 -1
  167. package/dist/components/ui/button.d.ts +75 -8
  168. package/dist/components/ui/button.js +1 -1
  169. package/dist/components/ui/calendar.js +2 -2
  170. package/dist/components/ui/carousel.d.ts +4 -3
  171. package/dist/components/ui/carousel.js +2 -2
  172. package/dist/components/ui/checkbox.d.ts +2 -2
  173. package/dist/components/ui/checkbox.js +1 -1
  174. package/dist/components/ui/collapsible.d.ts +4 -4
  175. package/dist/components/ui/collapsible.js +1 -1
  176. package/dist/components/ui/command-palette.d.ts +30 -0
  177. package/dist/components/ui/command-palette.js +6 -0
  178. package/dist/components/ui/command-palette.js.map +1 -0
  179. package/dist/components/ui/command.d.ts +9 -9
  180. package/dist/components/ui/command.js +2 -2
  181. package/dist/components/ui/context-menu.d.ts +15 -15
  182. package/dist/components/ui/context-menu.js +1 -1
  183. package/dist/components/ui/date-picker.js +4 -4
  184. package/dist/components/ui/dialog.d.ts +9 -9
  185. package/dist/components/ui/dialog.js +1 -1
  186. package/dist/components/ui/drawer.d.ts +7 -7
  187. package/dist/components/ui/dropdown-menu.d.ts +15 -15
  188. package/dist/components/ui/dropdown-menu.js +1 -1
  189. package/dist/components/ui/hover-card.d.ts +4 -4
  190. package/dist/components/ui/hover-card.js +1 -1
  191. package/dist/components/ui/input-otp.d.ts +2 -2
  192. package/dist/components/ui/label.d.ts +2 -2
  193. package/dist/components/ui/label.js +1 -1
  194. package/dist/components/ui/menubar.d.ts +16 -16
  195. package/dist/components/ui/menubar.js +1 -1
  196. package/dist/components/ui/navigation-menu.d.ts +9 -9
  197. package/dist/components/ui/navigation-menu.js +1 -1
  198. package/dist/components/ui/pagination.js +2 -2
  199. package/dist/components/ui/password-toggle-field.d.ts +121 -0
  200. package/dist/components/ui/password-toggle-field.js +4 -0
  201. package/dist/components/ui/password-toggle-field.js.map +1 -0
  202. package/dist/components/ui/popover.d.ts +4 -4
  203. package/dist/components/ui/popover.js +1 -1
  204. package/dist/components/ui/radio-group.d.ts +3 -3
  205. package/dist/components/ui/radio-group.js +1 -1
  206. package/dist/components/ui/resizable.d.ts +1 -1
  207. package/dist/components/ui/scroll-area.d.ts +60 -3
  208. package/dist/components/ui/scroll-area.js +1 -1
  209. package/dist/components/ui/select.d.ts +9 -9
  210. package/dist/components/ui/select.js +1 -1
  211. package/dist/components/ui/sheet.d.ts +11 -9
  212. package/dist/components/ui/sheet.js +1 -1
  213. package/dist/components/ui/slider.d.ts +2 -2
  214. package/dist/components/ui/slider.js +1 -1
  215. package/dist/components/ui/switch.d.ts +2 -2
  216. package/dist/components/ui/switch.js +1 -1
  217. package/dist/components/ui/tabs.d.ts +29 -14
  218. package/dist/components/ui/tabs.js +1 -1
  219. package/dist/components/ui/toggle-group.d.ts +3 -3
  220. package/dist/components/ui/toggle-group.js +2 -2
  221. package/dist/components/ui/toggle.d.ts +2 -2
  222. package/dist/components/ui/toggle.js +1 -1
  223. package/dist/components/ui/toolbar.d.ts +104 -0
  224. package/dist/components/ui/toolbar.js +6 -0
  225. package/dist/components/ui/toolbar.js.map +1 -0
  226. package/dist/components/ui/tooltip.d.ts +46 -4
  227. package/dist/components/ui/tooltip.js +1 -1
  228. package/dist/components/ui/visually-hidden.d.ts +48 -0
  229. package/dist/components/ui/visually-hidden.js +4 -0
  230. package/dist/components/ui/visually-hidden.js.map +1 -0
  231. package/dist/dashboard-page-C0TihRl5.d.ts +107 -0
  232. package/dist/hooks/index.d.ts +5 -3
  233. package/dist/hooks/index.js +10 -5
  234. package/dist/hooks/use-data-filters.d.ts +1 -1
  235. package/dist/hooks/use-data-filters.js +2 -2
  236. package/dist/hooks/use-keyboard-navigation.d.ts +58 -2
  237. package/dist/hooks/use-keyboard-navigation.js +1 -1
  238. package/dist/hooks/use-resource-page.d.ts +3 -2
  239. package/dist/hooks/use-resource-page.js +2 -2
  240. package/dist/hooks/use-saved-views.d.ts +28 -0
  241. package/dist/hooks/use-saved-views.js +3 -0
  242. package/dist/hooks/use-saved-views.js.map +1 -0
  243. package/dist/hooks/use-view-preference.d.ts +1 -1
  244. package/dist/hooks/use-view-preference.js +1 -1
  245. package/dist/index.d.ts +25 -26
  246. package/dist/index.js +55 -38
  247. package/dist/{navigation-qI86Ldug.d.ts → navigation-CpOEyUSb.d.ts} +4 -0
  248. package/dist/spacing-BS6qECD4.d.ts +191 -0
  249. package/dist/split-Dk9f4Mi0.d.ts +57 -0
  250. package/dist/{use-resource-page-B-CFcikK.d.ts → use-resource-page-CPs6wjKt.d.ts} +10 -2
  251. package/dist/view-settings--KXNT_jE.d.ts +12 -0
  252. package/package.json +77 -32
  253. package/dist/chunk-2B3MFHBQ.js.map +0 -1
  254. package/dist/chunk-2MXMWBDV.js.map +0 -1
  255. package/dist/chunk-4V4H2ZM7.js.map +0 -1
  256. package/dist/chunk-5J7BP5DI.js.map +0 -1
  257. package/dist/chunk-5Q4FABZQ.js.map +0 -1
  258. package/dist/chunk-63FW5ZUA.js.map +0 -1
  259. package/dist/chunk-7OBL3H5P.js.map +0 -1
  260. package/dist/chunk-AI6CCNWK.js.map +0 -1
  261. package/dist/chunk-C6H7AMO4.js.map +0 -1
  262. package/dist/chunk-EI5EGKHL.js +0 -32
  263. package/dist/chunk-EI5EGKHL.js.map +0 -1
  264. package/dist/chunk-I6JQHP6D.js.map +0 -1
  265. package/dist/chunk-IP6TMT3D.js.map +0 -1
  266. package/dist/chunk-JJ4NOMMI.js +0 -73
  267. package/dist/chunk-JJ4NOMMI.js.map +0 -1
  268. package/dist/chunk-JXI2MYL3.js.map +0 -1
  269. package/dist/chunk-KBS4BHME.js +0 -11
  270. package/dist/chunk-KBS4BHME.js.map +0 -1
  271. package/dist/chunk-LRXDZBV2.js +0 -26
  272. package/dist/chunk-LRXDZBV2.js.map +0 -1
  273. package/dist/chunk-NJMO3VPA.js.map +0 -1
  274. package/dist/chunk-O4B5ALO7.js.map +0 -1
  275. package/dist/chunk-OCTV3S4I.js +0 -29
  276. package/dist/chunk-OCTV3S4I.js.map +0 -1
  277. package/dist/chunk-QBZMY2AF.js.map +0 -1
  278. package/dist/chunk-QLCDAFS7.js.map +0 -1
  279. package/dist/chunk-SBJV3K4G.js.map +0 -1
  280. package/dist/chunk-SCUT2ZCD.js.map +0 -1
  281. package/dist/chunk-SVXDWPLO.js.map +0 -1
  282. package/dist/chunk-T465NJRL.js +0 -134
  283. package/dist/chunk-T465NJRL.js.map +0 -1
  284. package/dist/chunk-T5VX5DYO.js.map +0 -1
  285. package/dist/chunk-TKA4LOMT.js.map +0 -1
  286. package/dist/chunk-UGHQFQOE.js.map +0 -1
  287. package/dist/chunk-WALXVR6V.js +0 -9
  288. package/dist/chunk-WALXVR6V.js.map +0 -1
  289. package/dist/chunk-WZWR2ELB.js.map +0 -1
  290. package/dist/chunk-YZEA5TGK.js.map +0 -1
  291. package/dist/chunk-ZDAT5JDH.js.map +0 -1
  292. package/dist/components/ui/empty-state.d.ts +0 -22
  293. /package/dist/components/{ui → patterns}/empty-state.js.map +0 -0
  294. /package/dist/components/{ui → patterns}/form-field.js.map +0 -0
  295. /package/dist/{ViewToggle-DDe_Luj2.d.ts → view-toggle-DDe_Luj2.d.ts} +0 -0
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import { cn } from './chunk-NZ5WBA4R.js';
3
3
  import * as React from 'react';
4
- import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
4
+ import { Checkbox as Checkbox$1 } from 'radix-ui';
5
5
  import { Minus, Check } from 'lucide-react';
6
6
  import { jsx } from 'react/jsx-runtime';
7
7
 
8
8
  var Checkbox = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
9
- CheckboxPrimitive.Root,
9
+ Checkbox$1.Root,
10
10
  {
11
11
  ref,
12
12
  className: cn(
@@ -15,7 +15,7 @@ var Checkbox = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
15
15
  ),
16
16
  ...props,
17
17
  children: /* @__PURE__ */ jsx(
18
- CheckboxPrimitive.Indicator,
18
+ Checkbox$1.Indicator,
19
19
  {
20
20
  className: cn("flex items-center justify-center text-current"),
21
21
  children: props.checked === "indeterminate" ? /* @__PURE__ */ jsx(Minus, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx(Check, { className: "h-3 w-3" })
@@ -23,8 +23,8 @@ var Checkbox = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
23
23
  )
24
24
  }
25
25
  ));
26
- Checkbox.displayName = CheckboxPrimitive.Root.displayName;
26
+ Checkbox.displayName = Checkbox$1.Root.displayName;
27
27
 
28
28
  export { Checkbox };
29
- //# sourceMappingURL=chunk-WZWR2ELB.js.map
30
- //# sourceMappingURL=chunk-WZWR2ELB.js.map
29
+ //# sourceMappingURL=chunk-SEBU6JCK.js.map
30
+ //# sourceMappingURL=chunk-SEBU6JCK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/checkbox.tsx"],"names":["CheckboxPrimitive"],"mappings":";;;;;;AAOA,IAAM,QAAA,GAAiB,iBAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B,GAAA;AAAA,EAACA,UAAA,CAAkB,IAAA;AAAA,EAAlB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,scAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAA,GAAA;AAAA,MAACA,UAAA,CAAkB,SAAA;AAAA,MAAlB;AAAA,QACC,SAAA,EAAW,GAAG,+CAA+C,CAAA;AAAA,QAE5D,QAAA,EAAA,KAAA,CAAM,OAAA,KAAY,eAAA,mBACjB,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,CAAA,mBAE3B,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAE/B;AACF,CACD;AACD,QAAA,CAAS,WAAA,GAAcA,WAAkB,IAAA,CAAK,WAAA","file":"chunk-SEBU6JCK.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\nimport { Check, Minus } from \"lucide-react\";\nimport { cn } from \"../../utils\";\n\nconst Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded border border-border shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-foreground data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary data-[state=indeterminate]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n {props.checked === \"indeterminate\" ? (\n <Minus className=\"h-3 w-3\" />\n ) : (\n <Check className=\"h-3 w-3\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n"]}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Dialog, DialogContent } from './chunk-YZEA5TGK.js';
2
+ import { Dialog, DialogContent } from './chunk-7XMZVISM.js';
3
3
  import { cn } from './chunk-NZ5WBA4R.js';
4
4
  import * as React from 'react';
5
5
  import { Command as Command$1 } from 'cmdk';
@@ -79,5 +79,5 @@ var CommandShortcut = ({ className, ...props }) => {
79
79
  CommandShortcut.displayName = "CommandShortcut";
80
80
 
81
81
  export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut };
82
- //# sourceMappingURL=chunk-7OBL3H5P.js.map
83
- //# sourceMappingURL=chunk-7OBL3H5P.js.map
82
+ //# sourceMappingURL=chunk-SEFK4NZV.js.map
83
+ //# sourceMappingURL=chunk-SEFK4NZV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/command.tsx"],"names":["CommandPrimitive"],"mappings":"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","file":"chunk-SEFK4NZV.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n// Namespace import, like every other Radix consumer here: the unified\n// `radix-ui` package re-exports each primitive as a namespace, so the prop\n// type is reached as `Dialog.DialogProps` rather than as a bare named export.\nimport { type Dialog as DialogPrimitive } from \"radix-ui\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\n\nimport { cn } from \"../../utils\";\nimport { Dialog, DialogContent } from \"./dialog\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ninterface CommandDialogProps extends DialogPrimitive.DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />);\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn(\"-mx-1 h-px bg-border\", className)} {...props} />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50\",\n className,\n )}\n {...props}\n />\n));\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)} {...props} />;\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n"]}
@@ -0,0 +1,67 @@
1
+ "use client";
2
+ import { cn } from './chunk-NZ5WBA4R.js';
3
+ import * as React from 'react';
4
+ import { unstable_PasswordToggleField } from 'radix-ui';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ function PasswordToggleField({
8
+ className,
9
+ testID,
10
+ children,
11
+ ...props
12
+ }) {
13
+ return /* @__PURE__ */ jsx(unstable_PasswordToggleField.Root, { ...props, children: /* @__PURE__ */ jsx(
14
+ "div",
15
+ {
16
+ "data-slot": "password-toggle-field",
17
+ "data-testid": testID,
18
+ className: cn("relative w-full", className),
19
+ children
20
+ }
21
+ ) });
22
+ }
23
+ PasswordToggleField.displayName = "PasswordToggleField";
24
+ var PasswordToggleFieldInput = React.forwardRef(({ className, testID, ...props }, ref) => /* @__PURE__ */ jsx(
25
+ unstable_PasswordToggleField.Input,
26
+ {
27
+ ref,
28
+ "data-slot": "input",
29
+ "data-testid": testID,
30
+ className: cn(
31
+ "flex h-10 w-full min-w-0 rounded-md border border-input bg-background py-2 pl-3 pr-10 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm aria-invalid:border-destructive aria-invalid:ring-destructive/20",
32
+ className
33
+ ),
34
+ ...props
35
+ }
36
+ ));
37
+ PasswordToggleFieldInput.displayName = "PasswordToggleFieldInput";
38
+ var PasswordToggleFieldToggle = React.forwardRef(({ className, testID, ...props }, ref) => /* @__PURE__ */ jsx(
39
+ unstable_PasswordToggleField.Toggle,
40
+ {
41
+ ref,
42
+ "data-testid": testID,
43
+ className: cn(
44
+ "absolute right-1 top-1/2 inline-flex size-8 -translate-y-1/2 items-center justify-center rounded-md text-muted-foreground ring-offset-background transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
45
+ className
46
+ ),
47
+ ...props
48
+ }
49
+ ));
50
+ PasswordToggleFieldToggle.displayName = "PasswordToggleFieldToggle";
51
+ function PasswordToggleFieldSlot(props) {
52
+ return /* @__PURE__ */ jsx(unstable_PasswordToggleField.Slot, { ...props });
53
+ }
54
+ PasswordToggleFieldSlot.displayName = "PasswordToggleFieldSlot";
55
+ var PasswordToggleFieldIcon = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
56
+ unstable_PasswordToggleField.Icon,
57
+ {
58
+ ref,
59
+ className: cn("size-4 shrink-0", className),
60
+ ...props
61
+ }
62
+ ));
63
+ PasswordToggleFieldIcon.displayName = "PasswordToggleFieldIcon";
64
+
65
+ export { PasswordToggleField, PasswordToggleFieldIcon, PasswordToggleFieldInput, PasswordToggleFieldSlot, PasswordToggleFieldToggle };
66
+ //# sourceMappingURL=chunk-SRIT4NFQ.js.map
67
+ //# sourceMappingURL=chunk-SRIT4NFQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/password-toggle-field.tsx"],"names":["PasswordToggleFieldPrimitive"],"mappings":";;;;;AA6DO,SAAS,mBAAA,CAAoB;AAAA,EAClC,SAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6B;AAC3B,EAAA,uBACE,GAAA,CAACA,4BAAA,CAA6B,IAAA,EAA7B,EAAmC,GAAG,KAAA,EACrC,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,uBAAA;AAAA,MACV,aAAA,EAAa,MAAA;AAAA,MACb,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA;AAAA,MAEzC;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AACA,mBAAA,CAAoB,WAAA,GAAc,qBAAA;AAoB3B,IAAM,wBAAA,GAAiC,iBAG5C,CAAC,EAAE,WAAW,MAAA,EAAQ,GAAG,KAAA,EAAM,EAAG,GAAA,qBAClC,GAAA;AAAA,EAACA,4BAAA,CAA6B,KAAA;AAAA,EAA7B;AAAA,IACC,GAAA;AAAA,IACA,WAAA,EAAU,OAAA;AAAA,IACV,aAAA,EAAa,MAAA;AAAA,IACb,SAAA,EAAW,EAAA;AAAA,MACT,0XAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,wBAAA,CAAyB,WAAA,GAAc,0BAAA;AAwBhC,IAAM,yBAAA,GAAkC,iBAG7C,CAAC,EAAE,WAAW,MAAA,EAAQ,GAAG,KAAA,EAAM,EAAG,GAAA,qBAClC,GAAA;AAAA,EAACA,4BAAA,CAA6B,MAAA;AAAA,EAA7B;AAAA,IACC,GAAA;AAAA,IACA,aAAA,EAAa,MAAA;AAAA,IACb,SAAA,EAAW,EAAA;AAAA,MACT,kaAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,yBAAA,CAA0B,WAAA,GAAc,2BAAA;AAgBjC,SAAS,wBAAwB,KAAA,EAAqC;AAC3E,EAAA,uBAAO,GAAA,CAACA,4BAAA,CAA6B,IAAA,EAA7B,EAAmC,GAAG,KAAA,EAAO,CAAA;AACvD;AACA,uBAAA,CAAwB,WAAA,GAAc,yBAAA;AAgB/B,IAAM,uBAAA,GAAgC,iBAG3C,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B,GAAA;AAAA,EAACA,4BAAA,CAA6B,IAAA;AAAA,EAA7B;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA;AAAA,IACzC,GAAG;AAAA;AACN,CACD;AACD,uBAAA,CAAwB,WAAA,GAAc,yBAAA","file":"chunk-SRIT4NFQ.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { unstable_PasswordToggleField as PasswordToggleFieldPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../utils\";\n\nexport interface PasswordToggleFieldProps\n extends React.ComponentPropsWithoutRef<\n typeof PasswordToggleFieldPrimitive.Root\n > {\n /** Class names for the field wrapper (the positioned box, see below). */\n className?: string;\n /** Stable test/automation selector for the wrapper (emitted as `data-testid`). */\n testID?: string;\n}\n\n/**\n * PasswordToggleField — a password input with a show/hide control that keeps\n * focus and caret position across the toggle.\n *\n * Composition:\n *\n * ```tsx\n * <PasswordToggleField>\n * <PasswordToggleFieldInput placeholder=\"Password\" />\n * <PasswordToggleFieldToggle>\n * <PasswordToggleFieldSlot visible={<EyeOff />} hidden={<Eye />} />\n * </PasswordToggleFieldToggle>\n * </PasswordToggleField>\n * ```\n *\n * Why Radix and not five lines of `useState` plus `type={shown ? \"text\" :\n * \"password\"}`: the naive version loses the caret on every toggle, leaves the\n * button unlabelled (or labelled with a state that never updates), and — the\n * part nobody writes — leaves the password visible in the DOM after the form is\n * submitted or reset. Radix resets visibility on both `submit` and `reset`,\n * restores `selectionStart`/`selectionEnd` after the type swap, and derives the\n * toggle's `aria-label` (\"Show password\" / \"Hide password\") from the current\n * state unless the caller supplies text or a label of their own.\n *\n * Radix's own root is a **context provider with no DOM node of its own**, so\n * this wrapper renders a `relative` box around the children. That box is\n * load-bearing, not decoration: `PasswordToggleFieldToggle` is positioned\n * `absolute`, and absolute positioning resolves against the nearest positioned\n * ancestor. Without a wrapper the toggle would escape the field and land\n * against whatever positioned ancestor the consumer's page happened to have —\n * or the initial containing block, i.e. the page corner. The composition\n * documented above would put the show/hide button nowhere near the input.\n *\n * ---\n *\n * **Stability.** Radix ships this primitive as `unstable_PasswordToggleField`\n * and documents its API as subject to change; the underlying\n * `@radix-ui/react-password-toggle-field` package is still on `0.1.x`. It is\n * exported here under its stable-looking name for ergonomics, but it is the one\n * component in this package whose props may change in a minor release. Pin the\n * package if that is unacceptable, or compose `Input` + `Button` yourself.\n *\n * @stability Experimental\n */\nexport function PasswordToggleField({\n className,\n testID,\n children,\n ...props\n}: PasswordToggleFieldProps) {\n return (\n <PasswordToggleFieldPrimitive.Root {...props}>\n <div\n data-slot=\"password-toggle-field\"\n data-testid={testID}\n className={cn(\"relative w-full\", className)}\n >\n {children}\n </div>\n </PasswordToggleFieldPrimitive.Root>\n );\n}\nPasswordToggleField.displayName = \"PasswordToggleField\";\n\nexport interface PasswordToggleFieldInputProps\n extends React.ComponentPropsWithoutRef<\n typeof PasswordToggleFieldPrimitive.Input\n > {\n /** Stable test/automation selector (emitted as `data-testid`). */\n testID?: string;\n}\n\n/**\n * PasswordToggleFieldInput — the field itself.\n *\n * Styling matches `Input`, with right padding reserved for the toggle so the\n * button never sits on top of the text. Radix owns `type`, which is why it is\n * absent from the props: it is derived from the field's visibility state and\n * a caller-supplied value would fight it.\n *\n * @stability Experimental\n */\nexport const PasswordToggleFieldInput = React.forwardRef<\n React.ComponentRef<typeof PasswordToggleFieldPrimitive.Input>,\n PasswordToggleFieldInputProps\n>(({ className, testID, ...props }, ref) => (\n <PasswordToggleFieldPrimitive.Input\n ref={ref}\n data-slot=\"input\"\n data-testid={testID}\n className={cn(\n \"flex h-10 w-full min-w-0 rounded-md border border-input bg-background py-2 pl-3 pr-10 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm aria-invalid:border-destructive aria-invalid:ring-destructive/20\",\n className\n )}\n {...props}\n />\n));\nPasswordToggleFieldInput.displayName = \"PasswordToggleFieldInput\";\n\nexport interface PasswordToggleFieldToggleProps\n extends React.ComponentPropsWithoutRef<\n typeof PasswordToggleFieldPrimitive.Toggle\n > {\n /** Stable test/automation selector (emitted as `data-testid`). */\n testID?: string;\n}\n\n/**\n * PasswordToggleFieldToggle — the show/hide button.\n *\n * Positioned `absolute` against the `relative` box that `PasswordToggleField`\n * renders — which is why that box exists; see the root's docs. Keep this\n * component inside a `PasswordToggleField`: positioning it against an\n * arbitrary ancestor is not a supported arrangement.\n *\n * Its accessible name comes from Radix (\"Show password\" / \"Hide password\",\n * following the current state) unless you provide inner text or an\n * `aria-label`.\n *\n * @stability Experimental\n */\nexport const PasswordToggleFieldToggle = React.forwardRef<\n React.ComponentRef<typeof PasswordToggleFieldPrimitive.Toggle>,\n PasswordToggleFieldToggleProps\n>(({ className, testID, ...props }, ref) => (\n <PasswordToggleFieldPrimitive.Toggle\n ref={ref}\n data-testid={testID}\n className={cn(\n \"absolute right-1 top-1/2 inline-flex size-8 -translate-y-1/2 items-center justify-center rounded-md text-muted-foreground ring-offset-background transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className\n )}\n {...props}\n />\n));\nPasswordToggleFieldToggle.displayName = \"PasswordToggleFieldToggle\";\n\nexport type PasswordToggleFieldSlotProps = React.ComponentPropsWithoutRef<\n typeof PasswordToggleFieldPrimitive.Slot\n>;\n\n/**\n * PasswordToggleFieldSlot — renders one of two nodes depending on visibility.\n *\n * Takes either the declarative pair (`visible` / `hidden`) or a `render`\n * callback receiving `{ visible }`. Unstyled by design: it is a switch, not a\n * box, and wrapping it in an element would break the toggle's `[&_svg]` icon\n * sizing.\n *\n * @stability Experimental\n */\nexport function PasswordToggleFieldSlot(props: PasswordToggleFieldSlotProps) {\n return <PasswordToggleFieldPrimitive.Slot {...props} />;\n}\nPasswordToggleFieldSlot.displayName = \"PasswordToggleFieldSlot\";\n\nexport interface PasswordToggleFieldIconProps\n extends React.ComponentPropsWithoutRef<\n typeof PasswordToggleFieldPrimitive.Icon\n > {}\n\n/**\n * PasswordToggleFieldIcon — the SVG-level variant of `PasswordToggleFieldSlot`.\n *\n * Swaps the icon's inner content while keeping ONE `<svg>` element mounted, so\n * a CSS transition on the glyph survives the toggle instead of being restarted\n * by a remount.\n *\n * @stability Experimental\n */\nexport const PasswordToggleFieldIcon = React.forwardRef<\n React.ComponentRef<typeof PasswordToggleFieldPrimitive.Icon>,\n PasswordToggleFieldIconProps\n>(({ className, ...props }, ref) => (\n <PasswordToggleFieldPrimitive.Icon\n ref={ref}\n className={cn(\"size-4 shrink-0\", className)}\n {...props}\n />\n));\nPasswordToggleFieldIcon.displayName = \"PasswordToggleFieldIcon\";\n"]}
@@ -0,0 +1,19 @@
1
+ import { cn } from './chunk-NZ5WBA4R.js';
2
+ import * as React from 'react';
3
+ import { VisuallyHidden as VisuallyHidden$1 } from 'radix-ui';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ var VisuallyHidden = React.forwardRef(({ className, testID, ...props }, ref) => /* @__PURE__ */ jsx(
7
+ VisuallyHidden$1.Root,
8
+ {
9
+ ref,
10
+ "data-testid": testID,
11
+ className: cn(className),
12
+ ...props
13
+ }
14
+ ));
15
+ VisuallyHidden.displayName = VisuallyHidden$1.Root.displayName;
16
+
17
+ export { VisuallyHidden };
18
+ //# sourceMappingURL=chunk-SY62XJFA.js.map
19
+ //# sourceMappingURL=chunk-SY62XJFA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/visually-hidden.tsx"],"names":["VisuallyHiddenPrimitive"],"mappings":";;;;;AAsDO,IAAM,cAAA,GAAuB,iBAGlC,CAAC,EAAE,WAAW,MAAA,EAAQ,GAAG,KAAA,EAAM,EAAG,GAAA,qBAClC,GAAA;AAAA,EAACA,gBAAA,CAAwB,IAAA;AAAA,EAAxB;AAAA,IACC,GAAA;AAAA,IACA,aAAA,EAAa,MAAA;AAAA,IACb,SAAA,EAAW,GAAG,SAAS,CAAA;AAAA,IACtB,GAAG;AAAA;AACN,CACD;AACD,cAAA,CAAe,WAAA,GAAcA,iBAAwB,IAAA,CAAK,WAAA","file":"chunk-SY62XJFA.js","sourcesContent":["// No \"use client\": this renders a span with inline styles and no hooks, and\n// neither `radix-ui` nor `@radix-ui/react-visually-hidden` carries the\n// directive itself. Leaving it off keeps the primitive importable from an RSC\n// server component — which matters, because the label an icon-only control\n// needs is very often rendered on the server.\nimport * as React from \"react\";\nimport { VisuallyHidden as VisuallyHiddenPrimitive } from \"radix-ui\";\n\nimport { cn } from \"../../utils\";\n\nexport interface VisuallyHiddenProps\n extends React.ComponentPropsWithoutRef<typeof VisuallyHiddenPrimitive.Root> {\n /** Stable test/automation selector (emitted as `data-testid`). */\n testID?: string;\n}\n\n/**\n * VisuallyHidden — content removed from the visual layout but kept in the\n * accessibility tree.\n *\n * This is the correct tool for the label an icon-only control needs, for the\n * `DialogTitle` a dialog must have even when the design shows none, and for\n * live-region status text. It is NOT `display: none` and it is NOT\n * `visibility: hidden` — both of those remove the node from the a11y tree too,\n * which is the exact opposite of the intent.\n *\n * Why Radix rather than Tailwind's `sr-only`: the two produce the same result,\n * but `sr-only` is a class a consumer's `@apply`, a purge misconfiguration, or\n * a competing utility can quietly defeat, and the failure is silent — the text\n * simply becomes visible, or the layout shifts, and nothing in a build catches\n * it. Radix applies the clip rectangle as inline styles on the element itself,\n * so there is no stylesheet for the consumer's build to lose.\n *\n * **That robustness cuts both ways, and it is the one thing to know before\n * reaching for this.** An inline style beats any ordinary class declaration, so\n * a `className` cannot override the clipping either — not accidentally, and\n * not on purpose. `className` is merged for non-visual concerns (a test hook, a\n * data attribute target); it is NOT a way to reveal the content.\n *\n * The escape hatch is the `style` prop, which Radix spreads *after* its own\n * (`{...VISUALLY_HIDDEN_STYLES, ...props.style}`) and which therefore wins.\n * Both behaviours are pinned in this component's tests, because the docs above\n * depend on them.\n *\n * **This is therefore the wrong primitive for a skip link.** A skip link is\n * hidden until focused, and \"until focused\" is state, not a class — a static\n * `style` prop cannot express it and `focus-within:` utilities cannot win\n * against the inline rule. Give a skip link its own element with real CSS, or\n * drive the `style` prop from `onFocus`/`onBlur`. Use `VisuallyHidden` for text\n * that stays hidden: control labels, dialog titles a design omits, live-region\n * status text.\n *\n * @stability Beta\n */\nexport const VisuallyHidden = React.forwardRef<\n React.ComponentRef<typeof VisuallyHiddenPrimitive.Root>,\n VisuallyHiddenProps\n>(({ className, testID, ...props }, ref) => (\n <VisuallyHiddenPrimitive.Root\n ref={ref}\n data-testid={testID}\n className={cn(className)}\n {...props}\n />\n));\nVisuallyHidden.displayName = VisuallyHiddenPrimitive.Root.displayName;\n"]}
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import { cn } from './chunk-NZ5WBA4R.js';
3
3
  import * as React from 'react';
4
- import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
4
+ import { NavigationMenu as NavigationMenu$1 } from 'radix-ui';
5
5
  import { ChevronDown } from 'lucide-react';
6
6
  import { cva } from 'class-variance-authority';
7
7
  import { jsxs, jsx } from 'react/jsx-runtime';
8
8
 
9
9
  var NavigationMenu = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
10
- NavigationMenuPrimitive.Root,
10
+ NavigationMenu$1.Root,
11
11
  {
12
12
  ref,
13
13
  className: cn(
@@ -21,9 +21,9 @@ var NavigationMenu = React.forwardRef(({ className, children, ...props }, ref) =
21
21
  ]
22
22
  }
23
23
  ));
24
- NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
24
+ NavigationMenu.displayName = NavigationMenu$1.Root.displayName;
25
25
  var NavigationMenuList = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
26
- NavigationMenuPrimitive.List,
26
+ NavigationMenu$1.List,
27
27
  {
28
28
  ref,
29
29
  className: cn(
@@ -33,13 +33,13 @@ var NavigationMenuList = React.forwardRef(({ className, ...props }, ref) => /* @
33
33
  ...props
34
34
  }
35
35
  ));
36
- NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
37
- var NavigationMenuItem = NavigationMenuPrimitive.Item;
36
+ NavigationMenuList.displayName = NavigationMenu$1.List.displayName;
37
+ var NavigationMenuItem = NavigationMenu$1.Item;
38
38
  var navigationMenuTriggerStyle = cva(
39
39
  "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
40
40
  );
41
41
  var NavigationMenuTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
42
- NavigationMenuPrimitive.Trigger,
42
+ NavigationMenu$1.Trigger,
43
43
  {
44
44
  ref,
45
45
  className: cn(navigationMenuTriggerStyle(), "group", className),
@@ -57,9 +57,9 @@ var NavigationMenuTrigger = React.forwardRef(({ className, children, ...props },
57
57
  ]
58
58
  }
59
59
  ));
60
- NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
60
+ NavigationMenuTrigger.displayName = NavigationMenu$1.Trigger.displayName;
61
61
  var NavigationMenuContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
62
- NavigationMenuPrimitive.Content,
62
+ NavigationMenu$1.Content,
63
63
  {
64
64
  ref,
65
65
  className: cn(
@@ -69,10 +69,10 @@ var NavigationMenuContent = React.forwardRef(({ className, ...props }, ref) => /
69
69
  ...props
70
70
  }
71
71
  ));
72
- NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
73
- var NavigationMenuLink = NavigationMenuPrimitive.Link;
72
+ NavigationMenuContent.displayName = NavigationMenu$1.Content.displayName;
73
+ var NavigationMenuLink = NavigationMenu$1.Link;
74
74
  var NavigationMenuViewport = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx(
75
- NavigationMenuPrimitive.Viewport,
75
+ NavigationMenu$1.Viewport,
76
76
  {
77
77
  className: cn(
78
78
  "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
@@ -82,9 +82,9 @@ var NavigationMenuViewport = React.forwardRef(({ className, ...props }, ref) =>
82
82
  ...props
83
83
  }
84
84
  ) }));
85
- NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
85
+ NavigationMenuViewport.displayName = NavigationMenu$1.Viewport.displayName;
86
86
  var NavigationMenuIndicator = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
87
- NavigationMenuPrimitive.Indicator,
87
+ NavigationMenu$1.Indicator,
88
88
  {
89
89
  ref,
90
90
  className: cn(
@@ -95,8 +95,8 @@ var NavigationMenuIndicator = React.forwardRef(({ className, ...props }, ref) =>
95
95
  children: /* @__PURE__ */ jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
96
96
  }
97
97
  ));
98
- NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
98
+ NavigationMenuIndicator.displayName = NavigationMenu$1.Indicator.displayName;
99
99
 
100
100
  export { NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, navigationMenuTriggerStyle };
101
- //# sourceMappingURL=chunk-SVXDWPLO.js.map
102
- //# sourceMappingURL=chunk-SVXDWPLO.js.map
101
+ //# sourceMappingURL=chunk-THD3YOOZ.js.map
102
+ //# sourceMappingURL=chunk-THD3YOOZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/navigation-menu.tsx"],"names":["NavigationMenuPrimitive"],"mappings":"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","file":"chunk-THD3YOOZ.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { NavigationMenu as NavigationMenuPrimitive } from \"radix-ui\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cva } from \"class-variance-authority\";\n\nimport { cn } from \"../../utils\";\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn(\n \"relative z-10 flex max-w-max flex-1 items-center justify-center\",\n className\n )}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n));\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn(\n \"group flex flex-1 list-none items-center justify-center space-x-1\",\n className\n )}\n {...props}\n />\n));\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item;\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50\"\n);\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), \"group\", className)}\n {...props}\n >\n {children}{\" \"}\n <ChevronDown\n className=\"relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n));\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n \"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto\",\n className\n )}\n {...props}\n />\n));\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link;\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn(\"absolute left-0 top-full flex justify-center\")}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n \"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]\",\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n));\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName;\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n \"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n));\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName;\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n};\n"]}
@@ -0,0 +1,58 @@
1
+ "use client";
2
+ import { cn } from './chunk-NZ5WBA4R.js';
3
+ import * as React from 'react';
4
+ import { Tabs as Tabs$1 } from 'radix-ui';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ var Tabs = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
8
+ Tabs$1.Root,
9
+ {
10
+ ref,
11
+ className: cn("w-full", className),
12
+ ...props
13
+ }
14
+ ));
15
+ Tabs.displayName = Tabs$1.Root.displayName;
16
+ var TabsList = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
17
+ Tabs$1.List,
18
+ {
19
+ ref,
20
+ className: cn(
21
+ "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
22
+ className
23
+ ),
24
+ ...props
25
+ }
26
+ ));
27
+ TabsList.displayName = Tabs$1.List.displayName;
28
+ var TabsTrigger = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
29
+ Tabs$1.Trigger,
30
+ {
31
+ ref,
32
+ className: cn(
33
+ "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
34
+ // Same active styling as before, now keyed off the `data-state` Radix
35
+ // maintains rather than an `isActive` boolean read from local context.
36
+ "data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
37
+ className
38
+ ),
39
+ ...props
40
+ }
41
+ ));
42
+ TabsTrigger.displayName = Tabs$1.Trigger.displayName;
43
+ var TabsContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
44
+ Tabs$1.Content,
45
+ {
46
+ ref,
47
+ className: cn(
48
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
49
+ className
50
+ ),
51
+ ...props
52
+ }
53
+ ));
54
+ TabsContent.displayName = Tabs$1.Content.displayName;
55
+
56
+ export { Tabs, TabsContent, TabsList, TabsTrigger };
57
+ //# sourceMappingURL=chunk-VXFYETRK.js.map
58
+ //# sourceMappingURL=chunk-VXFYETRK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/tabs.tsx"],"names":["TabsPrimitive"],"mappings":";;;;;AAkCA,IAAM,IAAA,GAAa,iBAGjB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B,GAAA;AAAA,EAACA,MAAA,CAAc,IAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,SAAS,CAAA;AAAA,IAChC,GAAG;AAAA;AACN,CACD;AACD,IAAA,CAAK,WAAA,GAAcA,OAAc,IAAA,CAAK,WAAA;AAEtC,IAAM,QAAA,GAAiB,iBAGrB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B,GAAA;AAAA,EAACA,MAAA,CAAc,IAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,4FAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,QAAA,CAAS,WAAA,GAAcA,OAAc,IAAA,CAAK,WAAA;AAE1C,IAAM,WAAA,GAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B,GAAA;AAAA,EAACA,MAAA,CAAc,OAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iSAAA;AAAA;AAAA;AAAA,MAGA,qGAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,WAAA,GAAcA,OAAc,OAAA,CAAQ,WAAA;AAEhD,IAAM,WAAA,GAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B,GAAA;AAAA,EAACA,MAAA,CAAc,OAAA;AAAA,EAAd;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,iIAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG;AAAA;AACN,CACD;AACD,WAAA,CAAY,WAAA,GAAcA,OAAc,OAAA,CAAQ,WAAA","file":"chunk-VXFYETRK.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Tabs as TabsPrimitive } from \"radix-ui\";\nimport { cn } from \"../../utils\";\n\ninterface TabsProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n /**\n * Required here even though Radix's own `defaultValue` is optional — that is\n * the existing contract, and loosening it is a separate decision.\n */\n defaultValue: string;\n}\n\n/**\n * Tabs — a tablist and its panels.\n *\n * Backed by Radix `Tabs`. The hand-rolled version was a React context plus a\n * row of plain `<button>`s: it tracked the selected value correctly and\n * nothing else. Every keyboard and screen-reader affordance the WAI-ARIA tabs\n * pattern asks for was missing — `role=\"tablist\"`/`\"tab\"`/`\"tabpanel\"`, the\n * `aria-selected` state, the `aria-controls`/`aria-labelledby` link between a\n * tab and its panel, the roving `tabindex` that makes the whole tablist ONE\n * tab stop instead of N, and Arrow/Home/End navigation between tabs. Radix\n * supplies all of it, plus the selection state the old version already\n * handled.\n *\n * One behavioural note worth knowing: Radix selects on `mousedown` rather than\n * `click`. Pointer users see no difference, but a synthetic `fireEvent.click`\n * on a trigger no longer changes tabs.\n *\n * @stability Stable\n */\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n TabsProps\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Root\n ref={ref}\n className={cn(\"w-full\", className)}\n {...props}\n />\n));\nTabs.displayName = TabsPrimitive.Root.displayName;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n // Same active styling as before, now keyed off the `data-state` Radix\n // maintains rather than an `isActive` boolean read from local context.\n \"data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"]}
@@ -0,0 +1,58 @@
1
+ import { Avatar, AvatarImage, AvatarFallback } from './chunk-LNFF2RBD.js';
2
+ import { cn } from './chunk-NZ5WBA4R.js';
3
+ import { cva } from 'class-variance-authority';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var userAvatarVariants = cva("shrink-0", {
7
+ variants: {
8
+ size: {
9
+ sm: "h-8 w-8 text-xs",
10
+ default: "h-10 w-10 text-sm",
11
+ lg: "h-12 w-12 text-base"
12
+ }
13
+ },
14
+ defaultVariants: {
15
+ size: "default"
16
+ }
17
+ });
18
+ var graphemeSegmenter;
19
+ function getGraphemeSegmenter() {
20
+ if (graphemeSegmenter === void 0) {
21
+ graphemeSegmenter = typeof Intl !== "undefined" && typeof Intl.Segmenter === "function" ? new Intl.Segmenter(void 0, { granularity: "grapheme" }) : null;
22
+ }
23
+ return graphemeSegmenter;
24
+ }
25
+ function firstGrapheme(word) {
26
+ const segmenter = getGraphemeSegmenter();
27
+ if (segmenter) {
28
+ for (const { segment } of segmenter.segment(word)) return segment;
29
+ return "";
30
+ }
31
+ return Array.from(word)[0] ?? "";
32
+ }
33
+ function getInitials(name) {
34
+ const words = name.trim().split(/\s+/).filter(Boolean);
35
+ if (words.length === 0) return "?";
36
+ const first = firstGrapheme(words[0]);
37
+ const last = firstGrapheme(words[words.length - 1]);
38
+ return (words.length === 1 ? first : first + last).toUpperCase();
39
+ }
40
+ function UserAvatar({ name, src, size, className, testID }) {
41
+ return /* @__PURE__ */ jsxs(
42
+ Avatar,
43
+ {
44
+ role: "img",
45
+ "aria-label": name,
46
+ "data-testid": testID,
47
+ className: cn(userAvatarVariants({ size }), className),
48
+ children: [
49
+ src ? /* @__PURE__ */ jsx(AvatarImage, { src, alt: "" }) : null,
50
+ /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(name) })
51
+ ]
52
+ }
53
+ );
54
+ }
55
+
56
+ export { UserAvatar, userAvatarVariants };
57
+ //# sourceMappingURL=chunk-XBX6QMR5.js.map
58
+ //# sourceMappingURL=chunk-XBX6QMR5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/patterns/user-avatar.tsx"],"names":[],"mappings":";;;;;AAKA,IAAM,kBAAA,GAAqB,IAAI,UAAA,EAAY;AAAA,EACzC,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,iBAAA;AAAA,MACJ,OAAA,EAAS,mBAAA;AAAA,MACT,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC;AAID,IAAI,iBAAA;AAEJ,SAAS,oBAAA,GAA8C;AACrD,EAAA,IAAI,sBAAsB,MAAA,EAAW;AACnC,IAAA,iBAAA,GACE,OAAO,IAAA,KAAS,WAAA,IAAe,OAAO,KAAK,SAAA,KAAc,UAAA,GACrD,IAAI,IAAA,CAAK,UAAU,MAAA,EAAW,EAAE,WAAA,EAAa,UAAA,EAAY,CAAA,GACzD,IAAA;AAAA,EACR;AACA,EAAA,OAAO,iBAAA;AACT;AAWA,SAAS,cAAc,IAAA,EAAsB;AAC3C,EAAA,MAAM,YAAY,oBAAA,EAAqB;AACvC,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,KAAA,MAAW,EAAE,OAAA,EAAQ,IAAK,UAAU,OAAA,CAAQ,IAAI,GAAG,OAAO,OAAA;AAC1D,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,CAAE,CAAC,CAAA,IAAK,EAAA;AAChC;AAGA,SAAS,YAAY,IAAA,EAAsB;AACzC,EAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,EAAK,CAAE,MAAM,KAAK,CAAA,CAAE,OAAO,OAAO,CAAA;AACrD,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,GAAA;AAC/B,EAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,KAAA,CAAM,CAAC,CAAE,CAAA;AACrC,EAAA,MAAM,OAAO,aAAA,CAAc,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAE,CAAA;AACnD,EAAA,OAAA,CAAQ,MAAM,MAAA,KAAW,CAAA,GAAI,KAAA,GAAQ,KAAA,GAAQ,MAAM,WAAA,EAAY;AACjE;AA2BO,SAAS,WAAW,EAAE,IAAA,EAAM,KAAK,IAAA,EAAM,SAAA,EAAW,QAAO,EAAoB;AAClF,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,KAAA;AAAA,MACL,YAAA,EAAY,IAAA;AAAA,MACZ,aAAA,EAAa,MAAA;AAAA,MACb,WAAW,EAAA,CAAG,kBAAA,CAAmB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,MAOpD,QAAA,EAAA;AAAA,QAAA,GAAA,mBAAM,GAAA,CAAC,WAAA,EAAA,EAAY,GAAA,EAAU,GAAA,EAAI,IAAG,CAAA,GAAK,IAAA;AAAA,wBAC1C,GAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,WAAA,CAAY,IAAI,CAAA,EAAE;AAAA;AAAA;AAAA,GACrC;AAEJ","file":"chunk-XBX6QMR5.js","sourcesContent":["import * as React from \"react\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../ui/avatar\";\nimport { cn } from \"../../utils\";\n\nconst userAvatarVariants = cva(\"shrink-0\", {\n variants: {\n size: {\n sm: \"h-8 w-8 text-xs\",\n default: \"h-10 w-10 text-sm\",\n lg: \"h-12 w-12 text-base\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n});\n\n// Built lazily once — constructing a Segmenter per call is wasteful, and a\n// runtime either has Intl.Segmenter or never will.\nlet graphemeSegmenter: Intl.Segmenter | null | undefined;\n\nfunction getGraphemeSegmenter(): Intl.Segmenter | null {\n if (graphemeSegmenter === undefined) {\n graphemeSegmenter =\n typeof Intl !== \"undefined\" && typeof Intl.Segmenter === \"function\"\n ? new Intl.Segmenter(undefined, { granularity: \"grapheme\" })\n : null;\n }\n return graphemeSegmenter;\n}\n\n/**\n * First user-perceived character of `word`.\n *\n * `charAt(0)` / `[0]` index UTF-16 code units, so a name starting outside the\n * BMP (\"𐐀 Smith\", \"😊 Jones\") yields a lone surrogate that renders as a\n * replacement glyph. Grapheme segmentation additionally keeps combining marks\n * attached (\"é\" as e + U+0301); the `Array.from` fallback is code-point based,\n * which still fixes the surrogate case on runtimes without `Intl.Segmenter`.\n */\nfunction firstGrapheme(word: string): string {\n const segmenter = getGraphemeSegmenter();\n if (segmenter) {\n for (const { segment } of segmenter.segment(word)) return segment;\n return \"\";\n }\n return Array.from(word)[0] ?? \"\";\n}\n\n/** First + last initial from a display name (\"Ada Lovelace\" -> \"AL\", \"Cher\" -> \"C\"). */\nfunction getInitials(name: string): string {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n if (words.length === 0) return \"?\";\n const first = firstGrapheme(words[0]!);\n const last = firstGrapheme(words[words.length - 1]!);\n return (words.length === 1 ? first : first + last).toUpperCase();\n}\n\nexport interface UserAvatarProps extends VariantProps<typeof userAvatarVariants> {\n /** Full display name. Source for the computed initials fallback and the accessible name. */\n name: string;\n /** Image URL. Omit — or let it fail to load — to show the initials fallback. */\n src?: string | null;\n className?: string;\n /** Stable test/automation selector (emitted as `data-testid`). */\n testID?: string;\n}\n\n/**\n * UserAvatar — canonical user-identity avatar. Shows the person's photo when\n * `src` is set and loads successfully; otherwise (including a failed image\n * load — Radix's Avatar swaps to the fallback automatically) it falls back\n * to initials computed from `name`. Wraps the lower-level\n * `Avatar`/`AvatarImage`/`AvatarFallback` primitives so call sites stop\n * hand-rolling initials logic per-usage.\n *\n * The root carries `role=\"img\"` + `aria-label={name}` so the person's full name\n * is the accessible name on BOTH paths — without it the fallback route renders\n * a bare `span`, a generic element whose author-supplied label AT may ignore,\n * announcing only the visible initials (\"AL\").\n *\n * @stability Beta\n */\nexport function UserAvatar({ name, src, size, className, testID }: UserAvatarProps) {\n return (\n <Avatar\n role=\"img\"\n aria-label={name}\n data-testid={testID}\n className={cn(userAvatarVariants({ size }), className)}\n >\n {/*\n alt=\"\" is deliberate: the root already exposes `name` as the accessible\n name, so labelling the nested <img> too would announce the person twice\n once the image loads.\n */}\n {src ? <AvatarImage src={src} alt=\"\" /> : null}\n <AvatarFallback>{getInitials(name)}</AvatarFallback>\n </Avatar>\n );\n}\n\nexport { userAvatarVariants };\n"]}
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
  import { cn } from './chunk-NZ5WBA4R.js';
3
3
  import * as React from 'react';
4
- import * as SheetPrimitive from '@radix-ui/react-dialog';
4
+ import { Dialog } from 'radix-ui';
5
5
  import { cva } from 'class-variance-authority';
6
6
  import { X } from 'lucide-react';
7
7
  import { jsx, jsxs } from 'react/jsx-runtime';
8
8
 
9
- var Sheet = SheetPrimitive.Root;
10
- var SheetTrigger = SheetPrimitive.Trigger;
11
- var SheetClose = SheetPrimitive.Close;
12
- var SheetPortal = SheetPrimitive.Portal;
9
+ var Sheet = Dialog.Root;
10
+ var SheetTrigger = Dialog.Trigger;
11
+ var SheetClose = Dialog.Close;
12
+ var SheetPortal = Dialog.Portal;
13
13
  var SheetOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
14
- SheetPrimitive.Overlay,
14
+ Dialog.Overlay,
15
15
  {
16
16
  className: cn(
17
17
  "fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
@@ -21,7 +21,7 @@ var SheetOverlay = React.forwardRef(({ className, ...props }, ref) => /* @__PURE
21
21
  ref
22
22
  }
23
23
  ));
24
- SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
24
+ SheetOverlay.displayName = Dialog.Overlay.displayName;
25
25
  var sheetVariants = cva(
26
26
  "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
27
27
  {
@@ -38,17 +38,17 @@ var sheetVariants = cva(
38
38
  }
39
39
  }
40
40
  );
41
- var SheetContent = React.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
41
+ var SheetContent = React.forwardRef(({ side = "right", className, children, showCloseButton = true, ...props }, ref) => /* @__PURE__ */ jsxs(SheetPortal, { children: [
42
42
  /* @__PURE__ */ jsx(SheetOverlay, {}),
43
43
  /* @__PURE__ */ jsxs(
44
- SheetPrimitive.Content,
44
+ Dialog.Content,
45
45
  {
46
46
  ref,
47
47
  className: cn(sheetVariants({ side }), className),
48
48
  ...props,
49
49
  children: [
50
50
  children,
51
- /* @__PURE__ */ jsxs(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
51
+ showCloseButton && /* @__PURE__ */ jsxs(Dialog.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
52
52
  /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
53
53
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
54
54
  ] })
@@ -56,7 +56,7 @@ var SheetContent = React.forwardRef(({ side = "right", className, children, ...p
56
56
  }
57
57
  )
58
58
  ] }));
59
- SheetContent.displayName = SheetPrimitive.Content.displayName;
59
+ SheetContent.displayName = Dialog.Content.displayName;
60
60
  var SheetHeader = ({
61
61
  className,
62
62
  ...props
@@ -86,24 +86,24 @@ var SheetFooter = ({
86
86
  );
87
87
  SheetFooter.displayName = "SheetFooter";
88
88
  var SheetTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
89
- SheetPrimitive.Title,
89
+ Dialog.Title,
90
90
  {
91
91
  ref,
92
92
  className: cn("text-lg font-semibold text-foreground", className),
93
93
  ...props
94
94
  }
95
95
  ));
96
- SheetTitle.displayName = SheetPrimitive.Title.displayName;
96
+ SheetTitle.displayName = Dialog.Title.displayName;
97
97
  var SheetDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
98
- SheetPrimitive.Description,
98
+ Dialog.Description,
99
99
  {
100
100
  ref,
101
101
  className: cn("text-sm text-muted-foreground", className),
102
102
  ...props
103
103
  }
104
104
  ));
105
- SheetDescription.displayName = SheetPrimitive.Description.displayName;
105
+ SheetDescription.displayName = Dialog.Description.displayName;
106
106
 
107
107
  export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger };
108
- //# sourceMappingURL=chunk-SCUT2ZCD.js.map
109
- //# sourceMappingURL=chunk-SCUT2ZCD.js.map
108
+ //# sourceMappingURL=chunk-XCGZPFT7.js.map
109
+ //# sourceMappingURL=chunk-XCGZPFT7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/sheet.tsx"],"names":["SheetPrimitive"],"mappings":"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","file":"chunk-XCGZPFT7.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Dialog as SheetPrimitive } from \"radix-ui\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../utils\";\n\nconst Sheet = SheetPrimitive.Root;\nconst SheetTrigger = SheetPrimitive.Trigger;\nconst SheetClose = SheetPrimitive.Close;\nconst SheetPortal = SheetPrimitive.Portal;\n\nconst SheetOverlay = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className,\n )}\n {...props}\n ref={ref}\n />\n));\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n);\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {\n /** Show the built-in top-right close affordance. Default true. Mirrors `DialogContent`'s `showCloseButton` — set false when a composing consumer (e.g. `DetailPanel`) renders its own close control. */\n showCloseButton?: boolean;\n}\n\nconst SheetContent = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, showCloseButton = true, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Content>\n </SheetPortal>\n));\nSheetContent.displayName = SheetPrimitive.Content.displayName;\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className,\n )}\n {...props}\n />\n);\nSheetHeader.displayName = \"SheetHeader\";\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className,\n )}\n {...props}\n />\n);\nSheetFooter.displayName = \"SheetFooter\";\n\nconst SheetTitle = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n));\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\n\nconst SheetDescription = React.forwardRef<\n React.ComponentRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n"]}