@wow-two-beta/ui 0.0.56 → 0.0.58

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 (1158) hide show
  1. package/dist/actions/backToTopButton/BackToTopButton.d.ts +0 -1
  2. package/dist/actions/backToTopButton/index.d.ts +0 -1
  3. package/dist/actions/button/Button.d.ts +0 -10
  4. package/dist/actions/button/Button.variants.d.ts +0 -1
  5. package/dist/actions/button/index.d.ts +0 -1
  6. package/dist/actions/buttonGroup/ButtonGroup.d.ts +2 -3
  7. package/dist/actions/buttonGroup/index.d.ts +0 -1
  8. package/dist/actions/copyButton/CopyButton.d.ts +0 -1
  9. package/dist/actions/copyButton/index.d.ts +0 -1
  10. package/dist/actions/disclosureButton/DisclosureButton.d.ts +1 -2
  11. package/dist/actions/disclosureButton/index.d.ts +0 -1
  12. package/dist/actions/fab/FAB.d.ts +0 -1
  13. package/dist/actions/fab/FAB.variants.d.ts +0 -1
  14. package/dist/actions/fab/index.d.ts +0 -1
  15. package/dist/actions/index.d.ts +0 -1
  16. package/dist/actions/index.js +8 -8
  17. package/dist/actions/link/Link.d.ts +0 -1
  18. package/dist/actions/link/Link.variants.d.ts +0 -1
  19. package/dist/actions/link/index.d.ts +0 -1
  20. package/dist/actions/segmentedControl/SegmentedControl.d.ts +0 -1
  21. package/dist/actions/segmentedControl/index.d.ts +0 -1
  22. package/dist/actions/speedDial/SpeedDial.d.ts +2 -3
  23. package/dist/actions/speedDial/index.d.ts +0 -1
  24. package/dist/actions/toggleButton/ToggleButton.d.ts +1 -2
  25. package/dist/actions/toggleButton/ToggleButton.variants.d.ts +0 -1
  26. package/dist/actions/toggleButton/index.d.ts +0 -1
  27. package/dist/actions/toggleButtonGroup/ToggleButtonGroup.d.ts +1 -2
  28. package/dist/actions/toggleButtonGroup/index.d.ts +0 -1
  29. package/dist/actions/toolbar/Toolbar.d.ts +0 -1
  30. package/dist/actions/toolbar/index.d.ts +0 -1
  31. package/dist/{chunk-BWWF3DDM.js → chunk-4XWLEKH2.js} +11 -5
  32. package/dist/chunk-4XWLEKH2.js.map +1 -0
  33. package/dist/{chunk-CRKW4VXA.js → chunk-577JZ2A2.js} +3 -3
  34. package/dist/{chunk-CRKW4VXA.js.map → chunk-577JZ2A2.js.map} +1 -1
  35. package/dist/{chunk-PZ5AY32C.js → chunk-DCHYNTHI.js} +2 -2
  36. package/dist/{chunk-PZ5AY32C.js.map → chunk-DCHYNTHI.js.map} +1 -1
  37. package/dist/chunk-DJJOQWOG.js +27 -0
  38. package/dist/chunk-DJJOQWOG.js.map +1 -0
  39. package/dist/{chunk-BKR7A7WH.js → chunk-EEHJHPAP.js} +126 -68
  40. package/dist/chunk-EEHJHPAP.js.map +1 -0
  41. package/dist/{chunk-O2DK3E3E.js → chunk-EJCO7AWR.js} +47 -46
  42. package/dist/chunk-EJCO7AWR.js.map +1 -0
  43. package/dist/{chunk-LLNJ3GD2.js → chunk-EX4AOJCN.js} +80 -70
  44. package/dist/chunk-EX4AOJCN.js.map +1 -0
  45. package/dist/{chunk-526AMQXZ.js → chunk-FNSC4LAL.js} +4 -4
  46. package/dist/{chunk-526AMQXZ.js.map → chunk-FNSC4LAL.js.map} +1 -1
  47. package/dist/{chunk-2HWZH6GF.js → chunk-FYG23O4O.js} +311 -35
  48. package/dist/chunk-FYG23O4O.js.map +1 -0
  49. package/dist/{chunk-5QP5D3H3.js → chunk-GSAOM2ZR.js} +134 -66
  50. package/dist/chunk-GSAOM2ZR.js.map +1 -0
  51. package/dist/{chunk-BKWLS6V2.js → chunk-HG7NX6GP.js} +853 -574
  52. package/dist/chunk-HG7NX6GP.js.map +1 -0
  53. package/dist/{chunk-RDDIOVK4.js → chunk-JYGC5SRP.js} +42 -8
  54. package/dist/chunk-JYGC5SRP.js.map +1 -0
  55. package/dist/{chunk-KDXJQNB6.js → chunk-LGTGZ3RW.js} +2 -3
  56. package/dist/chunk-LGTGZ3RW.js.map +1 -0
  57. package/dist/{chunk-IEAFEEZB.js → chunk-MTD4RTGO.js} +63 -33
  58. package/dist/chunk-MTD4RTGO.js.map +1 -0
  59. package/dist/{chunk-F227LKWK.js → chunk-MVMDDGW7.js} +4 -4
  60. package/dist/{chunk-F227LKWK.js.map → chunk-MVMDDGW7.js.map} +1 -1
  61. package/dist/{chunk-T6ZDMPHL.js → chunk-NR5DYKSJ.js} +4 -4
  62. package/dist/{chunk-T6ZDMPHL.js.map → chunk-NR5DYKSJ.js.map} +1 -1
  63. package/dist/{chunk-46BOUO7J.js → chunk-OBW7JUNL.js} +13 -13
  64. package/dist/chunk-OBW7JUNL.js.map +1 -0
  65. package/dist/{chunk-BMABNEZX.js → chunk-TTSJZEL7.js} +189 -59
  66. package/dist/chunk-TTSJZEL7.js.map +1 -0
  67. package/dist/{chunk-NUMFGKPY.js → chunk-V267IMBH.js} +136 -27
  68. package/dist/chunk-V267IMBH.js.map +1 -0
  69. package/dist/chunk-X2MYOHOB.js +40 -0
  70. package/dist/chunk-X2MYOHOB.js.map +1 -0
  71. package/dist/{chunk-VIWAIXVK.js → chunk-XDATW7NF.js} +10 -6
  72. package/dist/chunk-XDATW7NF.js.map +1 -0
  73. package/dist/{chunk-PGU27Z2H.js → chunk-Y5GS4CLT.js} +372 -243
  74. package/dist/chunk-Y5GS4CLT.js.map +1 -0
  75. package/dist/display/accordion/Accordion.d.ts +15 -12
  76. package/dist/display/accordion/index.d.ts +0 -1
  77. package/dist/display/activityFeed/ActivityFeed.d.ts +2 -3
  78. package/dist/display/activityFeed/index.d.ts +0 -1
  79. package/dist/display/animatedNumber/AnimatedNumber.d.ts +0 -1
  80. package/dist/display/animatedNumber/index.d.ts +0 -1
  81. package/dist/display/annotationMarker/AnnotationMarker.d.ts +6 -8
  82. package/dist/display/annotationMarker/index.d.ts +0 -1
  83. package/dist/display/audioPlayer/AudioPlayer.d.ts +1 -2
  84. package/dist/display/audioPlayer/index.d.ts +0 -1
  85. package/dist/display/audioWaveform/AudioWaveform.d.ts +1 -2
  86. package/dist/display/audioWaveform/index.d.ts +0 -1
  87. package/dist/display/avatar/Avatar.d.ts +1 -2
  88. package/dist/display/avatar/Avatar.variants.d.ts +0 -1
  89. package/dist/display/avatar/index.d.ts +0 -1
  90. package/dist/display/avatarGroup/AvatarGroup.d.ts +0 -1
  91. package/dist/display/avatarGroup/index.d.ts +0 -1
  92. package/dist/display/badge/Badge.d.ts +0 -1
  93. package/dist/display/badge/Badge.variants.d.ts +0 -1
  94. package/dist/display/badge/index.d.ts +0 -1
  95. package/dist/display/badgeOverlay/BadgeOverlay.d.ts +1 -2
  96. package/dist/display/badgeOverlay/index.d.ts +0 -1
  97. package/dist/display/card/Card.d.ts +0 -1
  98. package/dist/display/card/index.d.ts +0 -1
  99. package/dist/display/carousel/Carousel.d.ts +1 -2
  100. package/dist/display/carousel/index.d.ts +0 -1
  101. package/dist/display/chatBubble/ChatBubble.d.ts +2 -3
  102. package/dist/display/chatBubble/index.d.ts +0 -1
  103. package/dist/display/code/Code.d.ts +0 -1
  104. package/dist/display/code/Code.variants.d.ts +0 -1
  105. package/dist/display/code/index.d.ts +0 -1
  106. package/dist/display/collapsible/Collapsible.d.ts +2 -3
  107. package/dist/display/collapsible/index.d.ts +0 -1
  108. package/dist/display/commentThread/CommentThread.d.ts +1 -2
  109. package/dist/display/commentThread/index.d.ts +0 -1
  110. package/dist/display/confetti/Confetti.d.ts +2 -3
  111. package/dist/display/confetti/index.d.ts +0 -1
  112. package/dist/display/countBadge/CountBadge.d.ts +3 -5
  113. package/dist/display/countBadge/index.d.ts +0 -1
  114. package/dist/display/countUp/CountUp.d.ts +2 -3
  115. package/dist/display/countUp/index.d.ts +0 -1
  116. package/dist/display/dataGrid/DataGrid.d.ts +2 -3
  117. package/dist/display/dataGrid/index.d.ts +0 -1
  118. package/dist/display/dataTable/DataTable.d.ts +5 -6
  119. package/dist/display/dataTable/index.d.ts +0 -1
  120. package/dist/display/descriptionList/DescriptionList.d.ts +0 -1
  121. package/dist/display/descriptionList/index.d.ts +0 -1
  122. package/dist/display/diffViewer/DiffViewer.d.ts +1 -2
  123. package/dist/display/diffViewer/index.d.ts +0 -1
  124. package/dist/display/emptyState/EmptyState.d.ts +0 -1
  125. package/dist/display/emptyState/index.d.ts +0 -1
  126. package/dist/display/eventCalendar/EventCalendar.d.ts +1 -2
  127. package/dist/display/eventCalendar/index.d.ts +0 -1
  128. package/dist/display/eyebrow/Eyebrow.d.ts +0 -1
  129. package/dist/display/eyebrow/index.d.ts +0 -1
  130. package/dist/display/gantt/Gantt.d.ts +1 -2
  131. package/dist/display/gantt/index.d.ts +0 -1
  132. package/dist/display/gradientText/GradientText.d.ts +2 -3
  133. package/dist/display/gradientText/index.d.ts +0 -1
  134. package/dist/display/heading/Heading.d.ts +0 -1
  135. package/dist/display/heading/Heading.variants.d.ts +0 -1
  136. package/dist/display/heading/index.d.ts +0 -1
  137. package/dist/display/heatmapCalendar/HeatmapCalendar.d.ts +2 -2
  138. package/dist/display/heatmapCalendar/index.d.ts +0 -1
  139. package/dist/display/highlight/Highlight.d.ts +2 -3
  140. package/dist/display/highlight/index.d.ts +0 -1
  141. package/dist/display/image/Image.d.ts +0 -1
  142. package/dist/display/image/index.d.ts +0 -1
  143. package/dist/display/index.d.ts +0 -1
  144. package/dist/display/index.js +10 -10
  145. package/dist/display/infoRow/InfoRow.d.ts +0 -1
  146. package/dist/display/infoRow/index.d.ts +0 -1
  147. package/dist/display/kbd/Kbd.d.ts +0 -1
  148. package/dist/display/kbd/index.d.ts +0 -1
  149. package/dist/display/keyboardShortcut/KeyboardShortcut.d.ts +0 -1
  150. package/dist/display/keyboardShortcut/index.d.ts +0 -1
  151. package/dist/display/list/List.d.ts +2 -3
  152. package/dist/display/list/List.variants.d.ts +0 -1
  153. package/dist/display/list/index.d.ts +0 -1
  154. package/dist/display/mark/Mark.d.ts +0 -1
  155. package/dist/display/mark/index.d.ts +0 -1
  156. package/dist/display/marquee/Marquee.d.ts +1 -2
  157. package/dist/display/marquee/index.d.ts +0 -1
  158. package/dist/display/messageList/MessageList.d.ts +3 -4
  159. package/dist/display/messageList/index.d.ts +0 -1
  160. package/dist/display/metaInline/MetaInline.d.ts +0 -1
  161. package/dist/display/metaInline/index.d.ts +0 -1
  162. package/dist/display/metricChip/MetricChip.d.ts +0 -1
  163. package/dist/display/metricChip/index.d.ts +0 -1
  164. package/dist/display/nodeEditor/NodeEditor.d.ts +0 -1
  165. package/dist/display/nodeEditor/index.d.ts +0 -1
  166. package/dist/display/notificationDot/NotificationDot.d.ts +1 -2
  167. package/dist/display/notificationDot/index.d.ts +0 -1
  168. package/dist/display/pdfViewer/PDFViewer.d.ts +1 -2
  169. package/dist/display/pdfViewer/index.d.ts +0 -1
  170. package/dist/display/quote/Quote.d.ts +0 -1
  171. package/dist/display/quote/index.d.ts +0 -1
  172. package/dist/display/reactionBar/ReactionBar.d.ts +6 -7
  173. package/dist/display/reactionBar/index.d.ts +0 -1
  174. package/dist/display/scheduleView/ScheduleView.d.ts +0 -1
  175. package/dist/display/scheduleView/index.d.ts +0 -1
  176. package/dist/display/scrollReveal/ScrollReveal.d.ts +1 -2
  177. package/dist/display/scrollReveal/index.d.ts +0 -1
  178. package/dist/display/sectionHeader/SectionHeader.d.ts +1 -2
  179. package/dist/display/sectionHeader/index.d.ts +0 -1
  180. package/dist/display/separator/Separator.d.ts +2 -4
  181. package/dist/display/separator/index.d.ts +0 -1
  182. package/dist/display/snippet/Snippet.d.ts +0 -1
  183. package/dist/display/snippet/index.d.ts +0 -1
  184. package/dist/display/sparkline/Sparkline.d.ts +1 -2
  185. package/dist/display/sparkline/index.d.ts +0 -1
  186. package/dist/display/stat/Stat.d.ts +0 -1
  187. package/dist/display/stat/index.d.ts +0 -1
  188. package/dist/display/status/Status.d.ts +1 -2
  189. package/dist/display/status/index.d.ts +0 -1
  190. package/dist/display/swipeActions/SwipeActions.d.ts +1 -2
  191. package/dist/display/swipeActions/index.d.ts +0 -1
  192. package/dist/display/table/Table.d.ts +17 -6
  193. package/dist/display/table/index.d.ts +1 -2
  194. package/dist/display/tabs/Tabs.d.ts +1 -2
  195. package/dist/display/tabs/index.d.ts +0 -1
  196. package/dist/display/tag/Tag.d.ts +0 -1
  197. package/dist/display/tag/Tag.variants.d.ts +0 -1
  198. package/dist/display/tag/index.d.ts +0 -1
  199. package/dist/display/text/Text.d.ts +0 -1
  200. package/dist/display/text/Text.variants.d.ts +14 -15
  201. package/dist/display/text/index.d.ts +0 -1
  202. package/dist/display/threadView/ThreadView.d.ts +2 -3
  203. package/dist/display/threadView/index.d.ts +0 -1
  204. package/dist/display/tilt/Tilt.d.ts +2 -4
  205. package/dist/display/tilt/index.d.ts +0 -1
  206. package/dist/display/timeline/Timeline.d.ts +0 -1
  207. package/dist/display/timeline/index.d.ts +0 -1
  208. package/dist/display/tooltip/Tooltip.d.ts +9 -4
  209. package/dist/display/tooltip/index.d.ts +0 -1
  210. package/dist/display/tree/Tree.d.ts +2 -3
  211. package/dist/display/tree/index.d.ts +0 -1
  212. package/dist/display/typewriter/Typewriter.d.ts +2 -3
  213. package/dist/display/typewriter/index.d.ts +0 -1
  214. package/dist/display/videoPlayer/VideoPlayer.d.ts +0 -1
  215. package/dist/display/videoPlayer/index.d.ts +0 -1
  216. package/dist/feedback/alert/Alert.d.ts +0 -1
  217. package/dist/feedback/alert/index.d.ts +0 -1
  218. package/dist/feedback/alertSimple/AlertSimple.d.ts +0 -1
  219. package/dist/feedback/alertSimple/AlertSimple.variants.d.ts +0 -1
  220. package/dist/feedback/alertSimple/index.d.ts +0 -1
  221. package/dist/feedback/banner/Banner.d.ts +0 -1
  222. package/dist/feedback/banner/index.d.ts +0 -1
  223. package/dist/feedback/bannerSimple/BannerSimple.d.ts +0 -1
  224. package/dist/feedback/bannerSimple/BannerSimple.variants.d.ts +0 -1
  225. package/dist/feedback/bannerSimple/index.d.ts +0 -1
  226. package/dist/feedback/callout/Callout.d.ts +0 -1
  227. package/dist/feedback/callout/index.d.ts +0 -1
  228. package/dist/feedback/index.d.ts +0 -1
  229. package/dist/feedback/index.js +10 -10
  230. package/dist/feedback/inlineSpinner/InlineSpinner.d.ts +0 -1
  231. package/dist/feedback/inlineSpinner/index.d.ts +0 -1
  232. package/dist/feedback/liveCursor/LiveCursor.d.ts +4 -7
  233. package/dist/feedback/liveCursor/index.d.ts +0 -1
  234. package/dist/feedback/loadingOverlay/LoadingOverlay.d.ts +5 -7
  235. package/dist/feedback/loadingOverlay/index.d.ts +0 -1
  236. package/dist/feedback/loadingState/LoadingState.d.ts +0 -1
  237. package/dist/feedback/loadingState/index.d.ts +0 -1
  238. package/dist/feedback/meterBar/MeterBar.d.ts +0 -1
  239. package/dist/feedback/meterBar/index.d.ts +0 -1
  240. package/dist/feedback/notificationCenter/NotificationCenter.d.ts +1 -2
  241. package/dist/feedback/notificationCenter/index.d.ts +0 -1
  242. package/dist/feedback/onboardingChecklist/OnboardingChecklist.d.ts +3 -4
  243. package/dist/feedback/onboardingChecklist/index.d.ts +0 -1
  244. package/dist/feedback/presenceIndicator/PresenceIndicator.d.ts +1 -2
  245. package/dist/feedback/presenceIndicator/index.d.ts +0 -1
  246. package/dist/feedback/progressBar/ProgressBar.d.ts +0 -1
  247. package/dist/feedback/progressBar/ProgressBar.variants.d.ts +0 -1
  248. package/dist/feedback/progressBar/index.d.ts +0 -1
  249. package/dist/feedback/progressCircle/ProgressCircle.d.ts +0 -1
  250. package/dist/feedback/progressCircle/index.d.ts +0 -1
  251. package/dist/feedback/progressSteps/ProgressSteps.d.ts +0 -1
  252. package/dist/feedback/progressSteps/index.d.ts +0 -1
  253. package/dist/feedback/skeleton/Skeleton.d.ts +0 -1
  254. package/dist/feedback/skeleton/Skeleton.variants.d.ts +0 -1
  255. package/dist/feedback/skeleton/index.d.ts +0 -1
  256. package/dist/feedback/spinner/Spinner.d.ts +0 -1
  257. package/dist/feedback/spinner/Spinner.variants.d.ts +0 -1
  258. package/dist/feedback/spinner/index.d.ts +0 -1
  259. package/dist/feedback/statusIndicator/StatusIndicator.d.ts +1 -2
  260. package/dist/feedback/statusIndicator/index.d.ts +0 -1
  261. package/dist/feedback/toast/Toast.d.ts +0 -1
  262. package/dist/feedback/toast/index.d.ts +0 -1
  263. package/dist/feedback/toastSimple/ToastSimple.d.ts +0 -1
  264. package/dist/feedback/toastSimple/ToastSimple.variants.d.ts +0 -1
  265. package/dist/feedback/toastSimple/index.d.ts +0 -1
  266. package/dist/feedback/toaster/Toaster.d.ts +2 -3
  267. package/dist/feedback/toaster/index.d.ts +0 -1
  268. package/dist/feedback/tour/Tour.d.ts +2 -3
  269. package/dist/feedback/tour/index.d.ts +0 -1
  270. package/dist/feedback/trendIndicator/TrendIndicator.d.ts +2 -3
  271. package/dist/feedback/trendIndicator/index.d.ts +0 -1
  272. package/dist/feedback/typingIndicator/TypingIndicator.d.ts +1 -2
  273. package/dist/feedback/typingIndicator/index.d.ts +0 -1
  274. package/dist/feedback/undoBar/UndoBar.d.ts +4 -5
  275. package/dist/feedback/undoBar/index.d.ts +0 -1
  276. package/dist/forms/ColorExtensions.d.ts +0 -1
  277. package/dist/forms/DateExtensions.d.ts +0 -1
  278. package/dist/forms/InputStyles.d.ts +0 -1
  279. package/dist/forms/MonthGrid.d.ts +0 -1
  280. package/dist/forms/addressForm/AddressForm.d.ts +3 -4
  281. package/dist/forms/addressForm/index.d.ts +0 -1
  282. package/dist/forms/calendar/Calendar.d.ts +1 -2
  283. package/dist/forms/calendar/index.d.ts +0 -1
  284. package/dist/forms/characterCount/CharacterCount.d.ts +1 -2
  285. package/dist/forms/characterCount/index.d.ts +0 -1
  286. package/dist/forms/chatComposer/ChatComposer.d.ts +2 -3
  287. package/dist/forms/chatComposer/index.d.ts +0 -1
  288. package/dist/forms/checkbox/Checkbox.d.ts +1 -2
  289. package/dist/forms/checkbox/Checkbox.variants.d.ts +0 -1
  290. package/dist/forms/checkbox/index.d.ts +0 -1
  291. package/dist/forms/checkboxField/CheckboxField.d.ts +0 -1
  292. package/dist/forms/checkboxField/index.d.ts +0 -1
  293. package/dist/forms/checkboxGroup/CheckboxGroup.d.ts +0 -1
  294. package/dist/forms/checkboxGroup/index.d.ts +0 -1
  295. package/dist/forms/choiceCard/ChoiceCard.d.ts +0 -1
  296. package/dist/forms/choiceCard/index.d.ts +0 -1
  297. package/dist/forms/codeEditor/CodeEditor.d.ts +2 -3
  298. package/dist/forms/codeEditor/index.d.ts +0 -1
  299. package/dist/forms/colorArea/ColorArea.d.ts +2 -3
  300. package/dist/forms/colorArea/index.d.ts +0 -1
  301. package/dist/forms/colorField/ColorField.d.ts +2 -3
  302. package/dist/forms/colorField/index.d.ts +0 -1
  303. package/dist/forms/colorPicker/ColorPicker.d.ts +3 -4
  304. package/dist/forms/colorPicker/index.d.ts +0 -1
  305. package/dist/forms/colorSlider/ColorSlider.d.ts +2 -3
  306. package/dist/forms/colorSlider/index.d.ts +0 -1
  307. package/dist/forms/colorSwatch/ColorSwatch.d.ts +0 -1
  308. package/dist/forms/colorSwatch/ColorSwatch.variants.d.ts +14 -15
  309. package/dist/forms/colorSwatch/index.d.ts +0 -1
  310. package/dist/forms/colorSwatchPicker/ColorSwatchPicker.d.ts +3 -4
  311. package/dist/forms/colorSwatchPicker/index.d.ts +0 -1
  312. package/dist/forms/colorWheel/ColorWheel.d.ts +2 -3
  313. package/dist/forms/colorWheel/index.d.ts +0 -1
  314. package/dist/forms/combobox/Combobox.d.ts +4 -5
  315. package/dist/forms/combobox/index.d.ts +0 -1
  316. package/dist/forms/cronInput/CronInput.d.ts +2 -3
  317. package/dist/forms/cronInput/index.d.ts +0 -1
  318. package/dist/forms/currencyInput/CurrencyInput.d.ts +0 -1
  319. package/dist/forms/currencyInput/index.d.ts +0 -1
  320. package/dist/forms/dateField/DateField.d.ts +1 -2
  321. package/dist/forms/dateField/index.d.ts +0 -1
  322. package/dist/forms/datePicker/DatePicker.d.ts +2 -3
  323. package/dist/forms/datePicker/index.d.ts +0 -1
  324. package/dist/forms/dateRangePicker/DateRangePicker.d.ts +2 -3
  325. package/dist/forms/dateRangePicker/index.d.ts +0 -1
  326. package/dist/forms/editable/Editable.d.ts +7 -8
  327. package/dist/forms/editable/index.d.ts +0 -1
  328. package/dist/forms/emailInput/EmailInput.d.ts +0 -1
  329. package/dist/forms/emailInput/index.d.ts +0 -1
  330. package/dist/forms/emojiPicker/EmojiPicker.d.ts +1 -2
  331. package/dist/forms/emojiPicker/index.d.ts +0 -1
  332. package/dist/forms/fieldset/Fieldset.d.ts +0 -1
  333. package/dist/forms/fieldset/index.d.ts +0 -1
  334. package/dist/forms/filePicker/FilePicker.d.ts +0 -1
  335. package/dist/forms/filePicker/index.d.ts +0 -1
  336. package/dist/forms/fileUpload/FileUpload.d.ts +1 -2
  337. package/dist/forms/fileUpload/index.d.ts +0 -1
  338. package/dist/forms/fontPicker/FontPicker.d.ts +1 -2
  339. package/dist/forms/fontPicker/index.d.ts +0 -1
  340. package/dist/forms/formErrorMessage/FormErrorMessage.d.ts +0 -1
  341. package/dist/forms/formErrorMessage/index.d.ts +0 -1
  342. package/dist/forms/formField/FormField.d.ts +0 -1
  343. package/dist/forms/formField/index.d.ts +0 -1
  344. package/dist/forms/formHelperText/FormHelperText.d.ts +0 -1
  345. package/dist/forms/formHelperText/index.d.ts +0 -1
  346. package/dist/forms/gradientPicker/GradientPicker.d.ts +1 -2
  347. package/dist/forms/gradientPicker/index.d.ts +0 -1
  348. package/dist/forms/iconPicker/IconPicker.d.ts +1 -2
  349. package/dist/forms/iconPicker/index.d.ts +0 -1
  350. package/dist/forms/index.d.ts +0 -1
  351. package/dist/forms/index.js +15 -15
  352. package/dist/forms/inputAddon/InputAddon.d.ts +0 -1
  353. package/dist/forms/inputAddon/index.d.ts +0 -1
  354. package/dist/forms/inputGroup/InputGroup.d.ts +0 -1
  355. package/dist/forms/inputGroup/index.d.ts +0 -1
  356. package/dist/forms/jsonEditor/JSONEditor.d.ts +3 -4
  357. package/dist/forms/jsonEditor/index.d.ts +0 -1
  358. package/dist/forms/keyboardShortcutPicker/KeyboardShortcutPicker.d.ts +0 -1
  359. package/dist/forms/keyboardShortcutPicker/index.d.ts +0 -1
  360. package/dist/forms/knob/Knob.d.ts +2 -3
  361. package/dist/forms/knob/index.d.ts +0 -1
  362. package/dist/forms/label/Label.d.ts +1 -2
  363. package/dist/forms/label/index.d.ts +0 -1
  364. package/dist/forms/labeledInput/LabeledInput.d.ts +0 -1
  365. package/dist/forms/labeledInput/index.d.ts +0 -1
  366. package/dist/forms/legend/Legend.d.ts +0 -1
  367. package/dist/forms/legend/index.d.ts +0 -1
  368. package/dist/forms/listbox/Listbox.d.ts +8 -5
  369. package/dist/forms/listbox/Listbox.variants.d.ts +0 -1
  370. package/dist/forms/listbox/index.d.ts +0 -1
  371. package/dist/forms/markdownEditor/MarkdownEditor.d.ts +5 -4
  372. package/dist/forms/markdownEditor/index.d.ts +0 -1
  373. package/dist/forms/maskedInput/MaskedInput.d.ts +0 -1
  374. package/dist/forms/maskedInput/index.d.ts +0 -1
  375. package/dist/forms/multiSelect/MultiSelect.d.ts +4 -5
  376. package/dist/forms/multiSelect/index.d.ts +0 -1
  377. package/dist/forms/numberInput/NumberInput.d.ts +0 -1
  378. package/dist/forms/numberInput/index.d.ts +0 -1
  379. package/dist/forms/passwordInput/PasswordInput.d.ts +1 -2
  380. package/dist/forms/passwordInput/index.d.ts +0 -1
  381. package/dist/forms/passwordStrength/PasswordStrength.d.ts +1 -2
  382. package/dist/forms/passwordStrength/index.d.ts +0 -1
  383. package/dist/forms/percentInput/PercentInput.d.ts +0 -1
  384. package/dist/forms/percentInput/index.d.ts +0 -1
  385. package/dist/forms/phoneInput/PhoneInput.d.ts +3 -4
  386. package/dist/forms/phoneInput/index.d.ts +0 -1
  387. package/dist/forms/pinInput/PinInput.d.ts +1 -2
  388. package/dist/forms/pinInput/index.d.ts +0 -1
  389. package/dist/forms/radio/Radio.d.ts +0 -1
  390. package/dist/forms/radio/index.d.ts +0 -1
  391. package/dist/forms/radioField/RadioField.d.ts +0 -1
  392. package/dist/forms/radioField/index.d.ts +0 -1
  393. package/dist/forms/radioGroup/RadioGroup.d.ts +0 -1
  394. package/dist/forms/radioGroup/index.d.ts +0 -1
  395. package/dist/forms/rangeCalendar/RangeCalendar.d.ts +1 -2
  396. package/dist/forms/rangeCalendar/index.d.ts +0 -1
  397. package/dist/forms/reactionPicker/ReactionPicker.d.ts +1 -2
  398. package/dist/forms/reactionPicker/index.d.ts +0 -1
  399. package/dist/forms/recurrenceEditor/RecurrenceEditor.d.ts +2 -3
  400. package/dist/forms/recurrenceEditor/index.d.ts +0 -1
  401. package/dist/forms/searchInput/SearchInput.d.ts +1 -2
  402. package/dist/forms/searchInput/index.d.ts +0 -1
  403. package/dist/forms/select/Select.d.ts +18 -12
  404. package/dist/forms/select/Select.variants.d.ts +46 -4
  405. package/dist/forms/select/index.d.ts +0 -1
  406. package/dist/forms/slider/Slider.d.ts +0 -1
  407. package/dist/forms/slider/index.d.ts +0 -1
  408. package/dist/forms/stepper/Stepper.d.ts +1 -2
  409. package/dist/forms/stepper/index.d.ts +0 -1
  410. package/dist/forms/switch/Switch.d.ts +0 -1
  411. package/dist/forms/switch/index.d.ts +0 -1
  412. package/dist/forms/switchField/SwitchField.d.ts +0 -1
  413. package/dist/forms/switchField/index.d.ts +0 -1
  414. package/dist/forms/tagsInput/TagsInput.d.ts +2 -3
  415. package/dist/forms/tagsInput/index.d.ts +0 -1
  416. package/dist/forms/telInput/TelInput.d.ts +0 -1
  417. package/dist/forms/telInput/index.d.ts +0 -1
  418. package/dist/forms/textInput/TextInput.d.ts +0 -1
  419. package/dist/forms/textInput/index.d.ts +0 -1
  420. package/dist/forms/textarea/Textarea.d.ts +0 -1
  421. package/dist/forms/textarea/index.d.ts +0 -1
  422. package/dist/forms/timeField/TimeField.d.ts +1 -2
  423. package/dist/forms/timeField/index.d.ts +0 -1
  424. package/dist/forms/timePicker/TimePicker.d.ts +2 -3
  425. package/dist/forms/timePicker/index.d.ts +0 -1
  426. package/dist/forms/urlInput/UrlInput.d.ts +0 -1
  427. package/dist/forms/urlInput/index.d.ts +0 -1
  428. package/dist/forms/wizard/Wizard.d.ts +5 -6
  429. package/dist/forms/wizard/index.d.ts +0 -1
  430. package/dist/hooks/index.d.ts +1 -1
  431. package/dist/hooks/index.js +3 -3
  432. package/dist/hooks/useClipboard.d.ts +0 -1
  433. package/dist/hooks/useControlled.d.ts +0 -1
  434. package/dist/hooks/useDebounceHandler.d.ts +0 -1
  435. package/dist/hooks/useDisclosure.d.ts +0 -1
  436. package/dist/hooks/useEscape.d.ts +0 -1
  437. package/dist/hooks/useEventListener.d.ts +0 -1
  438. package/dist/hooks/useFocusTrap.d.ts +0 -1
  439. package/dist/hooks/useId.d.ts +0 -1
  440. package/dist/hooks/useMediaQuery.d.ts +1 -1
  441. package/dist/hooks/useOutsideClick.d.ts +0 -1
  442. package/dist/hooks/useReducedMotion.d.ts +0 -1
  443. package/dist/hooks/useResizeObserver.d.ts +0 -1
  444. package/dist/hooks/useScrollLock.d.ts +0 -1
  445. package/dist/hooks/useTypeahead.d.ts +37 -0
  446. package/dist/icons/Icon.d.ts +0 -1
  447. package/dist/icons/Spinner.d.ts +0 -1
  448. package/dist/icons/index.d.ts +0 -1
  449. package/dist/icons/index.js +4 -4
  450. package/dist/index.d.ts +0 -1
  451. package/dist/index.js +22 -22
  452. package/dist/layout/appShell/AppShell.d.ts +3 -3
  453. package/dist/layout/appShell/index.d.ts +0 -1
  454. package/dist/layout/aspectRatio/AspectRatio.d.ts +0 -1
  455. package/dist/layout/aspectRatio/index.d.ts +0 -1
  456. package/dist/layout/box/Box.d.ts +0 -1
  457. package/dist/layout/box/index.d.ts +0 -1
  458. package/dist/layout/center/Center.d.ts +0 -1
  459. package/dist/layout/center/index.d.ts +0 -1
  460. package/dist/layout/cluster/Cluster.d.ts +0 -1
  461. package/dist/layout/cluster/index.d.ts +0 -1
  462. package/dist/layout/container/Container.d.ts +0 -1
  463. package/dist/layout/container/Container.variants.d.ts +0 -1
  464. package/dist/layout/container/index.d.ts +0 -1
  465. package/dist/layout/flex/Flex.d.ts +0 -1
  466. package/dist/layout/flex/index.d.ts +0 -1
  467. package/dist/layout/frame/Frame.d.ts +1 -2
  468. package/dist/layout/frame/index.d.ts +0 -1
  469. package/dist/layout/grid/Grid.d.ts +17 -6
  470. package/dist/layout/grid/Grid.variants.d.ts +15 -1
  471. package/dist/layout/grid/index.d.ts +1 -2
  472. package/dist/layout/hStack/HStack.d.ts +0 -1
  473. package/dist/layout/hStack/index.d.ts +0 -1
  474. package/dist/layout/index.d.ts +2 -1
  475. package/dist/layout/index.js +12 -12
  476. package/dist/layout/inline/Inline.d.ts +5 -1
  477. package/dist/layout/inline/index.d.ts +0 -1
  478. package/dist/layout/navbar/Navbar.d.ts +37 -0
  479. package/dist/layout/navbar/Navbar.variants.d.ts +76 -0
  480. package/dist/layout/navbar/index.d.ts +2 -0
  481. package/dist/layout/overlay/Overlay.d.ts +0 -1
  482. package/dist/layout/overlay/Overlay.variants.d.ts +0 -1
  483. package/dist/layout/overlay/index.d.ts +0 -1
  484. package/dist/layout/pullToRefresh/PullToRefresh.d.ts +1 -2
  485. package/dist/layout/pullToRefresh/index.d.ts +0 -1
  486. package/dist/layout/resizablePanels/ResizablePanels.d.ts +1 -2
  487. package/dist/layout/resizablePanels/index.d.ts +0 -1
  488. package/dist/layout/scrollArea/ScrollArea.d.ts +0 -1
  489. package/dist/layout/scrollArea/index.d.ts +0 -1
  490. package/dist/layout/section/Section.d.ts +26 -0
  491. package/dist/layout/section/Section.variants.d.ts +62 -0
  492. package/dist/layout/section/index.d.ts +2 -0
  493. package/dist/layout/spacer/Spacer.d.ts +0 -1
  494. package/dist/layout/spacer/index.d.ts +0 -1
  495. package/dist/layout/stack/Stack.d.ts +0 -1
  496. package/dist/layout/stack/Stack.variants.d.ts +0 -1
  497. package/dist/layout/stack/index.d.ts +0 -1
  498. package/dist/layout/surface/Surface.d.ts +0 -1
  499. package/dist/layout/surface/index.d.ts +0 -1
  500. package/dist/layout/twoColumn/TwoColumn.d.ts +0 -1
  501. package/dist/layout/twoColumn/index.d.ts +0 -1
  502. package/dist/layout/vStack/VStack.d.ts +0 -1
  503. package/dist/layout/vStack/index.d.ts +0 -1
  504. package/dist/nav/breadcrumb/Breadcrumb.d.ts +0 -1
  505. package/dist/nav/breadcrumb/index.d.ts +0 -1
  506. package/dist/nav/commandPalette/CommandPalette.d.ts +1 -2
  507. package/dist/nav/commandPalette/index.d.ts +0 -1
  508. package/dist/nav/contextMenu/ContextMenu.d.ts +1 -2
  509. package/dist/nav/contextMenu/index.d.ts +0 -1
  510. package/dist/nav/dropdownMenu/DropdownMenu.d.ts +0 -1
  511. package/dist/nav/dropdownMenu/index.d.ts +0 -1
  512. package/dist/nav/index.d.ts +0 -1
  513. package/dist/nav/index.js +12 -12
  514. package/dist/nav/menu/Menu.d.ts +5 -4
  515. package/dist/nav/menu/Menu.variants.d.ts +0 -1
  516. package/dist/nav/menu/index.d.ts +0 -1
  517. package/dist/nav/menubar/Menubar.d.ts +0 -1
  518. package/dist/nav/menubar/Menubar.variants.d.ts +0 -1
  519. package/dist/nav/menubar/index.d.ts +0 -1
  520. package/dist/nav/navItem/NavItem.d.ts +2 -4
  521. package/dist/nav/navItem/index.d.ts +0 -1
  522. package/dist/nav/navigationMenu/NavigationMenu.d.ts +0 -1
  523. package/dist/nav/navigationMenu/index.d.ts +0 -1
  524. package/dist/nav/pagination/Pagination.d.ts +0 -1
  525. package/dist/nav/pagination/index.d.ts +0 -1
  526. package/dist/nav/scrollSpy/ScrollSpy.d.ts +0 -1
  527. package/dist/nav/scrollSpy/index.d.ts +0 -1
  528. package/dist/nav/tableOfContents/TableOfContents.d.ts +1 -2
  529. package/dist/nav/tableOfContents/index.d.ts +0 -1
  530. package/dist/overlays/OverlayChrome.d.ts +0 -1
  531. package/dist/overlays/actionSheet/ActionSheet.d.ts +1 -2
  532. package/dist/overlays/actionSheet/index.d.ts +0 -1
  533. package/dist/overlays/alertDialog/AlertDialog.d.ts +0 -1
  534. package/dist/overlays/alertDialog/index.d.ts +0 -1
  535. package/dist/overlays/backdrop/Backdrop.d.ts +3 -7
  536. package/dist/overlays/backdrop/index.d.ts +0 -1
  537. package/dist/overlays/bottomSheet/BottomSheet.d.ts +9 -2
  538. package/dist/overlays/bottomSheet/index.d.ts +1 -2
  539. package/dist/overlays/dialog/Dialog.d.ts +1 -2
  540. package/dist/overlays/dialog/index.d.ts +0 -1
  541. package/dist/overlays/drawer/Drawer.d.ts +1 -2
  542. package/dist/overlays/drawer/index.d.ts +0 -1
  543. package/dist/overlays/hoverCard/HoverCard.d.ts +0 -1
  544. package/dist/overlays/hoverCard/index.d.ts +0 -1
  545. package/dist/overlays/index.d.ts +0 -1
  546. package/dist/overlays/index.js +11 -11
  547. package/dist/overlays/popover/Popover.d.ts +1 -2
  548. package/dist/overlays/popover/index.d.ts +0 -1
  549. package/dist/primitives/accessibleIcon/AccessibleIcon.d.ts +0 -1
  550. package/dist/primitives/accessibleIcon/index.d.ts +0 -1
  551. package/dist/primitives/anchoredPositioner/AnchoredPositioner.d.ts +1 -2
  552. package/dist/primitives/anchoredPositioner/index.d.ts +0 -1
  553. package/dist/primitives/announce/Announce.d.ts +0 -1
  554. package/dist/primitives/announce/index.d.ts +0 -1
  555. package/dist/primitives/collection/Collection.d.ts +0 -1
  556. package/dist/primitives/collection/index.d.ts +0 -1
  557. package/dist/primitives/directionProvider/DirectionProvider.d.ts +0 -1
  558. package/dist/primitives/directionProvider/index.d.ts +0 -1
  559. package/dist/primitives/dismissableLayer/DismissableLayer.d.ts +2 -3
  560. package/dist/primitives/dismissableLayer/index.d.ts +0 -1
  561. package/dist/primitives/focusScope/FocusScope.d.ts +0 -1
  562. package/dist/primitives/focusScope/index.d.ts +0 -1
  563. package/dist/primitives/formControlContext/FormControlContext.d.ts +0 -1
  564. package/dist/primitives/formControlContext/index.d.ts +0 -1
  565. package/dist/primitives/index.d.ts +0 -1
  566. package/dist/primitives/index.js +4 -4
  567. package/dist/primitives/overlayArrow/OverlayArrow.d.ts +0 -1
  568. package/dist/primitives/overlayArrow/index.d.ts +0 -1
  569. package/dist/primitives/portal/Portal.d.ts +1 -2
  570. package/dist/primitives/portal/index.d.ts +0 -1
  571. package/dist/primitives/presence/Presence.d.ts +8 -5
  572. package/dist/primitives/presence/index.d.ts +0 -1
  573. package/dist/primitives/rovingFocusGroup/RovingFocusGroup.d.ts +6 -3
  574. package/dist/primitives/rovingFocusGroup/index.d.ts +1 -2
  575. package/dist/primitives/scrollLockProvider/ScrollLockProvider.d.ts +2 -3
  576. package/dist/primitives/scrollLockProvider/index.d.ts +0 -1
  577. package/dist/primitives/slot/Slot.d.ts +0 -1
  578. package/dist/primitives/slot/index.d.ts +0 -1
  579. package/dist/primitives/visuallyHidden/VisuallyHidden.d.ts +0 -1
  580. package/dist/primitives/visuallyHidden/index.d.ts +0 -1
  581. package/dist/utils/ColorExtensions.d.ts +0 -1
  582. package/dist/utils/CssExtensions.d.ts +0 -1
  583. package/dist/utils/Environment.d.ts +8 -0
  584. package/dist/utils/Equality.d.ts +0 -1
  585. package/dist/utils/HtmlExtensions.d.ts +0 -1
  586. package/dist/utils/KeyboardExtensions.d.ts +0 -1
  587. package/dist/utils/Layers.d.ts +0 -1
  588. package/dist/utils/OptionalExtensions.d.ts +0 -1
  589. package/dist/utils/PressExtensions.d.ts +0 -1
  590. package/dist/utils/StyleTokens.d.ts +0 -1
  591. package/dist/utils/SurfaceStyles.d.ts +7 -1
  592. package/dist/utils/Tones.d.ts +1 -2
  593. package/dist/utils/TransitionExtensions.d.ts +0 -1
  594. package/dist/utils/cn.d.ts +0 -1
  595. package/dist/utils/composeEventHandlers.d.ts +0 -1
  596. package/dist/utils/composeRefs.d.ts +11 -3
  597. package/dist/utils/dataAttr.d.ts +0 -1
  598. package/dist/utils/index.d.ts +1 -1
  599. package/dist/utils/index.js +3 -3
  600. package/dist/utils/polymorphic.d.ts +0 -1
  601. package/dist/utils/tv.d.ts +0 -1
  602. package/package.json +27 -14
  603. package/dist/actions/backToTopButton/BackToTopButton.d.ts.map +0 -1
  604. package/dist/actions/backToTopButton/index.d.ts.map +0 -1
  605. package/dist/actions/button/Button.d.ts.map +0 -1
  606. package/dist/actions/button/Button.variants.d.ts.map +0 -1
  607. package/dist/actions/button/index.d.ts.map +0 -1
  608. package/dist/actions/buttonGroup/ButtonGroup.d.ts.map +0 -1
  609. package/dist/actions/buttonGroup/index.d.ts.map +0 -1
  610. package/dist/actions/copyButton/CopyButton.d.ts.map +0 -1
  611. package/dist/actions/copyButton/index.d.ts.map +0 -1
  612. package/dist/actions/disclosureButton/DisclosureButton.d.ts.map +0 -1
  613. package/dist/actions/disclosureButton/index.d.ts.map +0 -1
  614. package/dist/actions/fab/FAB.d.ts.map +0 -1
  615. package/dist/actions/fab/FAB.variants.d.ts.map +0 -1
  616. package/dist/actions/fab/index.d.ts.map +0 -1
  617. package/dist/actions/index.d.ts.map +0 -1
  618. package/dist/actions/link/Link.d.ts.map +0 -1
  619. package/dist/actions/link/Link.variants.d.ts.map +0 -1
  620. package/dist/actions/link/index.d.ts.map +0 -1
  621. package/dist/actions/segmentedControl/SegmentedControl.d.ts.map +0 -1
  622. package/dist/actions/segmentedControl/index.d.ts.map +0 -1
  623. package/dist/actions/speedDial/SpeedDial.d.ts.map +0 -1
  624. package/dist/actions/speedDial/index.d.ts.map +0 -1
  625. package/dist/actions/toggleButton/ToggleButton.d.ts.map +0 -1
  626. package/dist/actions/toggleButton/ToggleButton.variants.d.ts.map +0 -1
  627. package/dist/actions/toggleButton/index.d.ts.map +0 -1
  628. package/dist/actions/toggleButtonGroup/ToggleButtonGroup.d.ts.map +0 -1
  629. package/dist/actions/toggleButtonGroup/index.d.ts.map +0 -1
  630. package/dist/actions/toolbar/Toolbar.d.ts.map +0 -1
  631. package/dist/actions/toolbar/index.d.ts.map +0 -1
  632. package/dist/chunk-2HWZH6GF.js.map +0 -1
  633. package/dist/chunk-46BOUO7J.js.map +0 -1
  634. package/dist/chunk-5QP5D3H3.js.map +0 -1
  635. package/dist/chunk-BKR7A7WH.js.map +0 -1
  636. package/dist/chunk-BKWLS6V2.js.map +0 -1
  637. package/dist/chunk-BLXE2RCC.js +0 -27
  638. package/dist/chunk-BLXE2RCC.js.map +0 -1
  639. package/dist/chunk-BMABNEZX.js.map +0 -1
  640. package/dist/chunk-BWWF3DDM.js.map +0 -1
  641. package/dist/chunk-IEAFEEZB.js.map +0 -1
  642. package/dist/chunk-KDXJQNB6.js.map +0 -1
  643. package/dist/chunk-LDRFQG44.js +0 -25
  644. package/dist/chunk-LDRFQG44.js.map +0 -1
  645. package/dist/chunk-LLNJ3GD2.js.map +0 -1
  646. package/dist/chunk-NUMFGKPY.js.map +0 -1
  647. package/dist/chunk-O2DK3E3E.js.map +0 -1
  648. package/dist/chunk-PGU27Z2H.js.map +0 -1
  649. package/dist/chunk-RDDIOVK4.js.map +0 -1
  650. package/dist/chunk-VIWAIXVK.js.map +0 -1
  651. package/dist/display/accordion/Accordion.d.ts.map +0 -1
  652. package/dist/display/accordion/index.d.ts.map +0 -1
  653. package/dist/display/activityFeed/ActivityFeed.d.ts.map +0 -1
  654. package/dist/display/activityFeed/index.d.ts.map +0 -1
  655. package/dist/display/animatedNumber/AnimatedNumber.d.ts.map +0 -1
  656. package/dist/display/animatedNumber/index.d.ts.map +0 -1
  657. package/dist/display/annotationMarker/AnnotationMarker.d.ts.map +0 -1
  658. package/dist/display/annotationMarker/index.d.ts.map +0 -1
  659. package/dist/display/audioPlayer/AudioPlayer.d.ts.map +0 -1
  660. package/dist/display/audioPlayer/index.d.ts.map +0 -1
  661. package/dist/display/audioWaveform/AudioWaveform.d.ts.map +0 -1
  662. package/dist/display/audioWaveform/index.d.ts.map +0 -1
  663. package/dist/display/avatar/Avatar.d.ts.map +0 -1
  664. package/dist/display/avatar/Avatar.variants.d.ts.map +0 -1
  665. package/dist/display/avatar/index.d.ts.map +0 -1
  666. package/dist/display/avatarGroup/AvatarGroup.d.ts.map +0 -1
  667. package/dist/display/avatarGroup/index.d.ts.map +0 -1
  668. package/dist/display/badge/Badge.d.ts.map +0 -1
  669. package/dist/display/badge/Badge.variants.d.ts.map +0 -1
  670. package/dist/display/badge/index.d.ts.map +0 -1
  671. package/dist/display/badgeOverlay/BadgeOverlay.d.ts.map +0 -1
  672. package/dist/display/badgeOverlay/index.d.ts.map +0 -1
  673. package/dist/display/card/Card.d.ts.map +0 -1
  674. package/dist/display/card/index.d.ts.map +0 -1
  675. package/dist/display/carousel/Carousel.d.ts.map +0 -1
  676. package/dist/display/carousel/index.d.ts.map +0 -1
  677. package/dist/display/chatBubble/ChatBubble.d.ts.map +0 -1
  678. package/dist/display/chatBubble/index.d.ts.map +0 -1
  679. package/dist/display/code/Code.d.ts.map +0 -1
  680. package/dist/display/code/Code.variants.d.ts.map +0 -1
  681. package/dist/display/code/index.d.ts.map +0 -1
  682. package/dist/display/collapsible/Collapsible.d.ts.map +0 -1
  683. package/dist/display/collapsible/index.d.ts.map +0 -1
  684. package/dist/display/commentThread/CommentThread.d.ts.map +0 -1
  685. package/dist/display/commentThread/index.d.ts.map +0 -1
  686. package/dist/display/confetti/Confetti.d.ts.map +0 -1
  687. package/dist/display/confetti/index.d.ts.map +0 -1
  688. package/dist/display/countBadge/CountBadge.d.ts.map +0 -1
  689. package/dist/display/countBadge/index.d.ts.map +0 -1
  690. package/dist/display/countUp/CountUp.d.ts.map +0 -1
  691. package/dist/display/countUp/index.d.ts.map +0 -1
  692. package/dist/display/dataGrid/DataGrid.d.ts.map +0 -1
  693. package/dist/display/dataGrid/index.d.ts.map +0 -1
  694. package/dist/display/dataTable/DataTable.d.ts.map +0 -1
  695. package/dist/display/dataTable/index.d.ts.map +0 -1
  696. package/dist/display/descriptionList/DescriptionList.d.ts.map +0 -1
  697. package/dist/display/descriptionList/index.d.ts.map +0 -1
  698. package/dist/display/diffViewer/DiffViewer.d.ts.map +0 -1
  699. package/dist/display/diffViewer/index.d.ts.map +0 -1
  700. package/dist/display/emptyState/EmptyState.d.ts.map +0 -1
  701. package/dist/display/emptyState/index.d.ts.map +0 -1
  702. package/dist/display/eventCalendar/EventCalendar.d.ts.map +0 -1
  703. package/dist/display/eventCalendar/index.d.ts.map +0 -1
  704. package/dist/display/eyebrow/Eyebrow.d.ts.map +0 -1
  705. package/dist/display/eyebrow/index.d.ts.map +0 -1
  706. package/dist/display/gantt/Gantt.d.ts.map +0 -1
  707. package/dist/display/gantt/index.d.ts.map +0 -1
  708. package/dist/display/gradientText/GradientText.d.ts.map +0 -1
  709. package/dist/display/gradientText/index.d.ts.map +0 -1
  710. package/dist/display/heading/Heading.d.ts.map +0 -1
  711. package/dist/display/heading/Heading.variants.d.ts.map +0 -1
  712. package/dist/display/heading/index.d.ts.map +0 -1
  713. package/dist/display/heatmapCalendar/HeatmapCalendar.d.ts.map +0 -1
  714. package/dist/display/heatmapCalendar/index.d.ts.map +0 -1
  715. package/dist/display/highlight/Highlight.d.ts.map +0 -1
  716. package/dist/display/highlight/index.d.ts.map +0 -1
  717. package/dist/display/image/Image.d.ts.map +0 -1
  718. package/dist/display/image/index.d.ts.map +0 -1
  719. package/dist/display/index.d.ts.map +0 -1
  720. package/dist/display/infoRow/InfoRow.d.ts.map +0 -1
  721. package/dist/display/infoRow/index.d.ts.map +0 -1
  722. package/dist/display/kbd/Kbd.d.ts.map +0 -1
  723. package/dist/display/kbd/index.d.ts.map +0 -1
  724. package/dist/display/keyboardShortcut/KeyboardShortcut.d.ts.map +0 -1
  725. package/dist/display/keyboardShortcut/index.d.ts.map +0 -1
  726. package/dist/display/list/List.d.ts.map +0 -1
  727. package/dist/display/list/List.variants.d.ts.map +0 -1
  728. package/dist/display/list/index.d.ts.map +0 -1
  729. package/dist/display/mark/Mark.d.ts.map +0 -1
  730. package/dist/display/mark/index.d.ts.map +0 -1
  731. package/dist/display/marquee/Marquee.d.ts.map +0 -1
  732. package/dist/display/marquee/index.d.ts.map +0 -1
  733. package/dist/display/messageList/MessageList.d.ts.map +0 -1
  734. package/dist/display/messageList/index.d.ts.map +0 -1
  735. package/dist/display/metaInline/MetaInline.d.ts.map +0 -1
  736. package/dist/display/metaInline/index.d.ts.map +0 -1
  737. package/dist/display/metricChip/MetricChip.d.ts.map +0 -1
  738. package/dist/display/metricChip/index.d.ts.map +0 -1
  739. package/dist/display/nodeEditor/NodeEditor.d.ts.map +0 -1
  740. package/dist/display/nodeEditor/index.d.ts.map +0 -1
  741. package/dist/display/notificationDot/NotificationDot.d.ts.map +0 -1
  742. package/dist/display/notificationDot/index.d.ts.map +0 -1
  743. package/dist/display/pdfViewer/PDFViewer.d.ts.map +0 -1
  744. package/dist/display/pdfViewer/index.d.ts.map +0 -1
  745. package/dist/display/quote/Quote.d.ts.map +0 -1
  746. package/dist/display/quote/index.d.ts.map +0 -1
  747. package/dist/display/reactionBar/ReactionBar.d.ts.map +0 -1
  748. package/dist/display/reactionBar/index.d.ts.map +0 -1
  749. package/dist/display/scheduleView/ScheduleView.d.ts.map +0 -1
  750. package/dist/display/scheduleView/index.d.ts.map +0 -1
  751. package/dist/display/scrollReveal/ScrollReveal.d.ts.map +0 -1
  752. package/dist/display/scrollReveal/index.d.ts.map +0 -1
  753. package/dist/display/sectionHeader/SectionHeader.d.ts.map +0 -1
  754. package/dist/display/sectionHeader/index.d.ts.map +0 -1
  755. package/dist/display/separator/Separator.d.ts.map +0 -1
  756. package/dist/display/separator/index.d.ts.map +0 -1
  757. package/dist/display/snippet/Snippet.d.ts.map +0 -1
  758. package/dist/display/snippet/index.d.ts.map +0 -1
  759. package/dist/display/sparkline/Sparkline.d.ts.map +0 -1
  760. package/dist/display/sparkline/index.d.ts.map +0 -1
  761. package/dist/display/stat/Stat.d.ts.map +0 -1
  762. package/dist/display/stat/index.d.ts.map +0 -1
  763. package/dist/display/status/Status.d.ts.map +0 -1
  764. package/dist/display/status/index.d.ts.map +0 -1
  765. package/dist/display/swipeActions/SwipeActions.d.ts.map +0 -1
  766. package/dist/display/swipeActions/index.d.ts.map +0 -1
  767. package/dist/display/table/Table.d.ts.map +0 -1
  768. package/dist/display/table/index.d.ts.map +0 -1
  769. package/dist/display/tabs/Tabs.d.ts.map +0 -1
  770. package/dist/display/tabs/index.d.ts.map +0 -1
  771. package/dist/display/tag/Tag.d.ts.map +0 -1
  772. package/dist/display/tag/Tag.variants.d.ts.map +0 -1
  773. package/dist/display/tag/index.d.ts.map +0 -1
  774. package/dist/display/text/Text.d.ts.map +0 -1
  775. package/dist/display/text/Text.variants.d.ts.map +0 -1
  776. package/dist/display/text/index.d.ts.map +0 -1
  777. package/dist/display/threadView/ThreadView.d.ts.map +0 -1
  778. package/dist/display/threadView/index.d.ts.map +0 -1
  779. package/dist/display/tilt/Tilt.d.ts.map +0 -1
  780. package/dist/display/tilt/index.d.ts.map +0 -1
  781. package/dist/display/timeline/Timeline.d.ts.map +0 -1
  782. package/dist/display/timeline/index.d.ts.map +0 -1
  783. package/dist/display/tooltip/Tooltip.d.ts.map +0 -1
  784. package/dist/display/tooltip/index.d.ts.map +0 -1
  785. package/dist/display/tree/Tree.d.ts.map +0 -1
  786. package/dist/display/tree/index.d.ts.map +0 -1
  787. package/dist/display/typewriter/Typewriter.d.ts.map +0 -1
  788. package/dist/display/typewriter/index.d.ts.map +0 -1
  789. package/dist/display/videoPlayer/VideoPlayer.d.ts.map +0 -1
  790. package/dist/display/videoPlayer/index.d.ts.map +0 -1
  791. package/dist/feedback/alert/Alert.d.ts.map +0 -1
  792. package/dist/feedback/alert/index.d.ts.map +0 -1
  793. package/dist/feedback/alertSimple/AlertSimple.d.ts.map +0 -1
  794. package/dist/feedback/alertSimple/AlertSimple.variants.d.ts.map +0 -1
  795. package/dist/feedback/alertSimple/index.d.ts.map +0 -1
  796. package/dist/feedback/banner/Banner.d.ts.map +0 -1
  797. package/dist/feedback/banner/index.d.ts.map +0 -1
  798. package/dist/feedback/bannerSimple/BannerSimple.d.ts.map +0 -1
  799. package/dist/feedback/bannerSimple/BannerSimple.variants.d.ts.map +0 -1
  800. package/dist/feedback/bannerSimple/index.d.ts.map +0 -1
  801. package/dist/feedback/callout/Callout.d.ts.map +0 -1
  802. package/dist/feedback/callout/index.d.ts.map +0 -1
  803. package/dist/feedback/index.d.ts.map +0 -1
  804. package/dist/feedback/inlineSpinner/InlineSpinner.d.ts.map +0 -1
  805. package/dist/feedback/inlineSpinner/index.d.ts.map +0 -1
  806. package/dist/feedback/liveCursor/LiveCursor.d.ts.map +0 -1
  807. package/dist/feedback/liveCursor/index.d.ts.map +0 -1
  808. package/dist/feedback/loadingOverlay/LoadingOverlay.d.ts.map +0 -1
  809. package/dist/feedback/loadingOverlay/index.d.ts.map +0 -1
  810. package/dist/feedback/loadingState/LoadingState.d.ts.map +0 -1
  811. package/dist/feedback/loadingState/index.d.ts.map +0 -1
  812. package/dist/feedback/meterBar/MeterBar.d.ts.map +0 -1
  813. package/dist/feedback/meterBar/index.d.ts.map +0 -1
  814. package/dist/feedback/notificationCenter/NotificationCenter.d.ts.map +0 -1
  815. package/dist/feedback/notificationCenter/index.d.ts.map +0 -1
  816. package/dist/feedback/onboardingChecklist/OnboardingChecklist.d.ts.map +0 -1
  817. package/dist/feedback/onboardingChecklist/index.d.ts.map +0 -1
  818. package/dist/feedback/presenceIndicator/PresenceIndicator.d.ts.map +0 -1
  819. package/dist/feedback/presenceIndicator/index.d.ts.map +0 -1
  820. package/dist/feedback/progressBar/ProgressBar.d.ts.map +0 -1
  821. package/dist/feedback/progressBar/ProgressBar.variants.d.ts.map +0 -1
  822. package/dist/feedback/progressBar/index.d.ts.map +0 -1
  823. package/dist/feedback/progressCircle/ProgressCircle.d.ts.map +0 -1
  824. package/dist/feedback/progressCircle/index.d.ts.map +0 -1
  825. package/dist/feedback/progressSteps/ProgressSteps.d.ts.map +0 -1
  826. package/dist/feedback/progressSteps/index.d.ts.map +0 -1
  827. package/dist/feedback/skeleton/Skeleton.d.ts.map +0 -1
  828. package/dist/feedback/skeleton/Skeleton.variants.d.ts.map +0 -1
  829. package/dist/feedback/skeleton/index.d.ts.map +0 -1
  830. package/dist/feedback/spinner/Spinner.d.ts.map +0 -1
  831. package/dist/feedback/spinner/Spinner.variants.d.ts.map +0 -1
  832. package/dist/feedback/spinner/index.d.ts.map +0 -1
  833. package/dist/feedback/statusIndicator/StatusIndicator.d.ts.map +0 -1
  834. package/dist/feedback/statusIndicator/index.d.ts.map +0 -1
  835. package/dist/feedback/toast/Toast.d.ts.map +0 -1
  836. package/dist/feedback/toast/index.d.ts.map +0 -1
  837. package/dist/feedback/toastSimple/ToastSimple.d.ts.map +0 -1
  838. package/dist/feedback/toastSimple/ToastSimple.variants.d.ts.map +0 -1
  839. package/dist/feedback/toastSimple/index.d.ts.map +0 -1
  840. package/dist/feedback/toaster/Toaster.d.ts.map +0 -1
  841. package/dist/feedback/toaster/index.d.ts.map +0 -1
  842. package/dist/feedback/tour/Tour.d.ts.map +0 -1
  843. package/dist/feedback/tour/index.d.ts.map +0 -1
  844. package/dist/feedback/trendIndicator/TrendIndicator.d.ts.map +0 -1
  845. package/dist/feedback/trendIndicator/index.d.ts.map +0 -1
  846. package/dist/feedback/typingIndicator/TypingIndicator.d.ts.map +0 -1
  847. package/dist/feedback/typingIndicator/index.d.ts.map +0 -1
  848. package/dist/feedback/undoBar/UndoBar.d.ts.map +0 -1
  849. package/dist/feedback/undoBar/index.d.ts.map +0 -1
  850. package/dist/forms/ColorExtensions.d.ts.map +0 -1
  851. package/dist/forms/DateExtensions.d.ts.map +0 -1
  852. package/dist/forms/InputStyles.d.ts.map +0 -1
  853. package/dist/forms/MonthGrid.d.ts.map +0 -1
  854. package/dist/forms/addressForm/AddressForm.d.ts.map +0 -1
  855. package/dist/forms/addressForm/index.d.ts.map +0 -1
  856. package/dist/forms/calendar/Calendar.d.ts.map +0 -1
  857. package/dist/forms/calendar/index.d.ts.map +0 -1
  858. package/dist/forms/characterCount/CharacterCount.d.ts.map +0 -1
  859. package/dist/forms/characterCount/index.d.ts.map +0 -1
  860. package/dist/forms/chatComposer/ChatComposer.d.ts.map +0 -1
  861. package/dist/forms/chatComposer/index.d.ts.map +0 -1
  862. package/dist/forms/checkbox/Checkbox.d.ts.map +0 -1
  863. package/dist/forms/checkbox/Checkbox.variants.d.ts.map +0 -1
  864. package/dist/forms/checkbox/index.d.ts.map +0 -1
  865. package/dist/forms/checkboxField/CheckboxField.d.ts.map +0 -1
  866. package/dist/forms/checkboxField/index.d.ts.map +0 -1
  867. package/dist/forms/checkboxGroup/CheckboxGroup.d.ts.map +0 -1
  868. package/dist/forms/checkboxGroup/index.d.ts.map +0 -1
  869. package/dist/forms/choiceCard/ChoiceCard.d.ts.map +0 -1
  870. package/dist/forms/choiceCard/index.d.ts.map +0 -1
  871. package/dist/forms/codeEditor/CodeEditor.d.ts.map +0 -1
  872. package/dist/forms/codeEditor/index.d.ts.map +0 -1
  873. package/dist/forms/colorArea/ColorArea.d.ts.map +0 -1
  874. package/dist/forms/colorArea/index.d.ts.map +0 -1
  875. package/dist/forms/colorField/ColorField.d.ts.map +0 -1
  876. package/dist/forms/colorField/index.d.ts.map +0 -1
  877. package/dist/forms/colorPicker/ColorPicker.d.ts.map +0 -1
  878. package/dist/forms/colorPicker/index.d.ts.map +0 -1
  879. package/dist/forms/colorSlider/ColorSlider.d.ts.map +0 -1
  880. package/dist/forms/colorSlider/index.d.ts.map +0 -1
  881. package/dist/forms/colorSwatch/ColorSwatch.d.ts.map +0 -1
  882. package/dist/forms/colorSwatch/ColorSwatch.variants.d.ts.map +0 -1
  883. package/dist/forms/colorSwatch/index.d.ts.map +0 -1
  884. package/dist/forms/colorSwatchPicker/ColorSwatchPicker.d.ts.map +0 -1
  885. package/dist/forms/colorSwatchPicker/index.d.ts.map +0 -1
  886. package/dist/forms/colorWheel/ColorWheel.d.ts.map +0 -1
  887. package/dist/forms/colorWheel/index.d.ts.map +0 -1
  888. package/dist/forms/combobox/Combobox.d.ts.map +0 -1
  889. package/dist/forms/combobox/index.d.ts.map +0 -1
  890. package/dist/forms/cronInput/CronInput.d.ts.map +0 -1
  891. package/dist/forms/cronInput/index.d.ts.map +0 -1
  892. package/dist/forms/currencyInput/CurrencyInput.d.ts.map +0 -1
  893. package/dist/forms/currencyInput/index.d.ts.map +0 -1
  894. package/dist/forms/dateField/DateField.d.ts.map +0 -1
  895. package/dist/forms/dateField/index.d.ts.map +0 -1
  896. package/dist/forms/datePicker/DatePicker.d.ts.map +0 -1
  897. package/dist/forms/datePicker/index.d.ts.map +0 -1
  898. package/dist/forms/dateRangePicker/DateRangePicker.d.ts.map +0 -1
  899. package/dist/forms/dateRangePicker/index.d.ts.map +0 -1
  900. package/dist/forms/editable/Editable.d.ts.map +0 -1
  901. package/dist/forms/editable/index.d.ts.map +0 -1
  902. package/dist/forms/emailInput/EmailInput.d.ts.map +0 -1
  903. package/dist/forms/emailInput/index.d.ts.map +0 -1
  904. package/dist/forms/emojiPicker/EmojiPicker.d.ts.map +0 -1
  905. package/dist/forms/emojiPicker/index.d.ts.map +0 -1
  906. package/dist/forms/fieldset/Fieldset.d.ts.map +0 -1
  907. package/dist/forms/fieldset/index.d.ts.map +0 -1
  908. package/dist/forms/filePicker/FilePicker.d.ts.map +0 -1
  909. package/dist/forms/filePicker/index.d.ts.map +0 -1
  910. package/dist/forms/fileUpload/FileUpload.d.ts.map +0 -1
  911. package/dist/forms/fileUpload/index.d.ts.map +0 -1
  912. package/dist/forms/fontPicker/FontPicker.d.ts.map +0 -1
  913. package/dist/forms/fontPicker/index.d.ts.map +0 -1
  914. package/dist/forms/formErrorMessage/FormErrorMessage.d.ts.map +0 -1
  915. package/dist/forms/formErrorMessage/index.d.ts.map +0 -1
  916. package/dist/forms/formField/FormField.d.ts.map +0 -1
  917. package/dist/forms/formField/index.d.ts.map +0 -1
  918. package/dist/forms/formHelperText/FormHelperText.d.ts.map +0 -1
  919. package/dist/forms/formHelperText/index.d.ts.map +0 -1
  920. package/dist/forms/gradientPicker/GradientPicker.d.ts.map +0 -1
  921. package/dist/forms/gradientPicker/index.d.ts.map +0 -1
  922. package/dist/forms/iconPicker/IconPicker.d.ts.map +0 -1
  923. package/dist/forms/iconPicker/index.d.ts.map +0 -1
  924. package/dist/forms/index.d.ts.map +0 -1
  925. package/dist/forms/inputAddon/InputAddon.d.ts.map +0 -1
  926. package/dist/forms/inputAddon/index.d.ts.map +0 -1
  927. package/dist/forms/inputGroup/InputGroup.d.ts.map +0 -1
  928. package/dist/forms/inputGroup/index.d.ts.map +0 -1
  929. package/dist/forms/jsonEditor/JSONEditor.d.ts.map +0 -1
  930. package/dist/forms/jsonEditor/index.d.ts.map +0 -1
  931. package/dist/forms/keyboardShortcutPicker/KeyboardShortcutPicker.d.ts.map +0 -1
  932. package/dist/forms/keyboardShortcutPicker/index.d.ts.map +0 -1
  933. package/dist/forms/knob/Knob.d.ts.map +0 -1
  934. package/dist/forms/knob/index.d.ts.map +0 -1
  935. package/dist/forms/label/Label.d.ts.map +0 -1
  936. package/dist/forms/label/index.d.ts.map +0 -1
  937. package/dist/forms/labeledInput/LabeledInput.d.ts.map +0 -1
  938. package/dist/forms/labeledInput/index.d.ts.map +0 -1
  939. package/dist/forms/legend/Legend.d.ts.map +0 -1
  940. package/dist/forms/legend/index.d.ts.map +0 -1
  941. package/dist/forms/listbox/Listbox.d.ts.map +0 -1
  942. package/dist/forms/listbox/Listbox.variants.d.ts.map +0 -1
  943. package/dist/forms/listbox/index.d.ts.map +0 -1
  944. package/dist/forms/markdownEditor/MarkdownEditor.d.ts.map +0 -1
  945. package/dist/forms/markdownEditor/index.d.ts.map +0 -1
  946. package/dist/forms/maskedInput/MaskedInput.d.ts.map +0 -1
  947. package/dist/forms/maskedInput/index.d.ts.map +0 -1
  948. package/dist/forms/multiSelect/MultiSelect.d.ts.map +0 -1
  949. package/dist/forms/multiSelect/index.d.ts.map +0 -1
  950. package/dist/forms/numberInput/NumberInput.d.ts.map +0 -1
  951. package/dist/forms/numberInput/index.d.ts.map +0 -1
  952. package/dist/forms/passwordInput/PasswordInput.d.ts.map +0 -1
  953. package/dist/forms/passwordInput/index.d.ts.map +0 -1
  954. package/dist/forms/passwordStrength/PasswordStrength.d.ts.map +0 -1
  955. package/dist/forms/passwordStrength/index.d.ts.map +0 -1
  956. package/dist/forms/percentInput/PercentInput.d.ts.map +0 -1
  957. package/dist/forms/percentInput/index.d.ts.map +0 -1
  958. package/dist/forms/phoneInput/PhoneInput.d.ts.map +0 -1
  959. package/dist/forms/phoneInput/index.d.ts.map +0 -1
  960. package/dist/forms/pinInput/PinInput.d.ts.map +0 -1
  961. package/dist/forms/pinInput/index.d.ts.map +0 -1
  962. package/dist/forms/radio/Radio.d.ts.map +0 -1
  963. package/dist/forms/radio/index.d.ts.map +0 -1
  964. package/dist/forms/radioField/RadioField.d.ts.map +0 -1
  965. package/dist/forms/radioField/index.d.ts.map +0 -1
  966. package/dist/forms/radioGroup/RadioGroup.d.ts.map +0 -1
  967. package/dist/forms/radioGroup/index.d.ts.map +0 -1
  968. package/dist/forms/rangeCalendar/RangeCalendar.d.ts.map +0 -1
  969. package/dist/forms/rangeCalendar/index.d.ts.map +0 -1
  970. package/dist/forms/reactionPicker/ReactionPicker.d.ts.map +0 -1
  971. package/dist/forms/reactionPicker/index.d.ts.map +0 -1
  972. package/dist/forms/recurrenceEditor/RecurrenceEditor.d.ts.map +0 -1
  973. package/dist/forms/recurrenceEditor/index.d.ts.map +0 -1
  974. package/dist/forms/searchInput/SearchInput.d.ts.map +0 -1
  975. package/dist/forms/searchInput/index.d.ts.map +0 -1
  976. package/dist/forms/select/Select.d.ts.map +0 -1
  977. package/dist/forms/select/Select.variants.d.ts.map +0 -1
  978. package/dist/forms/select/index.d.ts.map +0 -1
  979. package/dist/forms/slider/Slider.d.ts.map +0 -1
  980. package/dist/forms/slider/index.d.ts.map +0 -1
  981. package/dist/forms/stepper/Stepper.d.ts.map +0 -1
  982. package/dist/forms/stepper/index.d.ts.map +0 -1
  983. package/dist/forms/switch/Switch.d.ts.map +0 -1
  984. package/dist/forms/switch/index.d.ts.map +0 -1
  985. package/dist/forms/switchField/SwitchField.d.ts.map +0 -1
  986. package/dist/forms/switchField/index.d.ts.map +0 -1
  987. package/dist/forms/tagsInput/TagsInput.d.ts.map +0 -1
  988. package/dist/forms/tagsInput/index.d.ts.map +0 -1
  989. package/dist/forms/telInput/TelInput.d.ts.map +0 -1
  990. package/dist/forms/telInput/index.d.ts.map +0 -1
  991. package/dist/forms/textInput/TextInput.d.ts.map +0 -1
  992. package/dist/forms/textInput/index.d.ts.map +0 -1
  993. package/dist/forms/textarea/Textarea.d.ts.map +0 -1
  994. package/dist/forms/textarea/index.d.ts.map +0 -1
  995. package/dist/forms/timeField/TimeField.d.ts.map +0 -1
  996. package/dist/forms/timeField/index.d.ts.map +0 -1
  997. package/dist/forms/timePicker/TimePicker.d.ts.map +0 -1
  998. package/dist/forms/timePicker/index.d.ts.map +0 -1
  999. package/dist/forms/urlInput/UrlInput.d.ts.map +0 -1
  1000. package/dist/forms/urlInput/index.d.ts.map +0 -1
  1001. package/dist/forms/wizard/Wizard.d.ts.map +0 -1
  1002. package/dist/forms/wizard/index.d.ts.map +0 -1
  1003. package/dist/hooks/index.d.ts.map +0 -1
  1004. package/dist/hooks/useClipboard.d.ts.map +0 -1
  1005. package/dist/hooks/useControlled.d.ts.map +0 -1
  1006. package/dist/hooks/useDebounceHandler.d.ts.map +0 -1
  1007. package/dist/hooks/useDisclosure.d.ts.map +0 -1
  1008. package/dist/hooks/useEscape.d.ts.map +0 -1
  1009. package/dist/hooks/useEventListener.d.ts.map +0 -1
  1010. package/dist/hooks/useFocusTrap.d.ts.map +0 -1
  1011. package/dist/hooks/useId.d.ts.map +0 -1
  1012. package/dist/hooks/useMediaQuery.d.ts.map +0 -1
  1013. package/dist/hooks/useOutsideClick.d.ts.map +0 -1
  1014. package/dist/hooks/useReducedMotion.d.ts.map +0 -1
  1015. package/dist/hooks/useResizeObserver.d.ts.map +0 -1
  1016. package/dist/hooks/useScrollLock.d.ts.map +0 -1
  1017. package/dist/icons/Icon.d.ts.map +0 -1
  1018. package/dist/icons/Spinner.d.ts.map +0 -1
  1019. package/dist/icons/index.d.ts.map +0 -1
  1020. package/dist/index.d.ts.map +0 -1
  1021. package/dist/layout/appShell/AppShell.d.ts.map +0 -1
  1022. package/dist/layout/appShell/index.d.ts.map +0 -1
  1023. package/dist/layout/aspectRatio/AspectRatio.d.ts.map +0 -1
  1024. package/dist/layout/aspectRatio/index.d.ts.map +0 -1
  1025. package/dist/layout/box/Box.d.ts.map +0 -1
  1026. package/dist/layout/box/index.d.ts.map +0 -1
  1027. package/dist/layout/center/Center.d.ts.map +0 -1
  1028. package/dist/layout/center/index.d.ts.map +0 -1
  1029. package/dist/layout/cluster/Cluster.d.ts.map +0 -1
  1030. package/dist/layout/cluster/index.d.ts.map +0 -1
  1031. package/dist/layout/container/Container.d.ts.map +0 -1
  1032. package/dist/layout/container/Container.variants.d.ts.map +0 -1
  1033. package/dist/layout/container/index.d.ts.map +0 -1
  1034. package/dist/layout/flex/Flex.d.ts.map +0 -1
  1035. package/dist/layout/flex/index.d.ts.map +0 -1
  1036. package/dist/layout/frame/Frame.d.ts.map +0 -1
  1037. package/dist/layout/frame/index.d.ts.map +0 -1
  1038. package/dist/layout/grid/Grid.d.ts.map +0 -1
  1039. package/dist/layout/grid/Grid.variants.d.ts.map +0 -1
  1040. package/dist/layout/grid/index.d.ts.map +0 -1
  1041. package/dist/layout/hStack/HStack.d.ts.map +0 -1
  1042. package/dist/layout/hStack/index.d.ts.map +0 -1
  1043. package/dist/layout/index.d.ts.map +0 -1
  1044. package/dist/layout/inline/Inline.d.ts.map +0 -1
  1045. package/dist/layout/inline/index.d.ts.map +0 -1
  1046. package/dist/layout/overlay/Overlay.d.ts.map +0 -1
  1047. package/dist/layout/overlay/Overlay.variants.d.ts.map +0 -1
  1048. package/dist/layout/overlay/index.d.ts.map +0 -1
  1049. package/dist/layout/pullToRefresh/PullToRefresh.d.ts.map +0 -1
  1050. package/dist/layout/pullToRefresh/index.d.ts.map +0 -1
  1051. package/dist/layout/resizablePanels/ResizablePanels.d.ts.map +0 -1
  1052. package/dist/layout/resizablePanels/index.d.ts.map +0 -1
  1053. package/dist/layout/scrollArea/ScrollArea.d.ts.map +0 -1
  1054. package/dist/layout/scrollArea/index.d.ts.map +0 -1
  1055. package/dist/layout/spacer/Spacer.d.ts.map +0 -1
  1056. package/dist/layout/spacer/index.d.ts.map +0 -1
  1057. package/dist/layout/stack/Stack.d.ts.map +0 -1
  1058. package/dist/layout/stack/Stack.variants.d.ts.map +0 -1
  1059. package/dist/layout/stack/index.d.ts.map +0 -1
  1060. package/dist/layout/surface/Surface.d.ts.map +0 -1
  1061. package/dist/layout/surface/index.d.ts.map +0 -1
  1062. package/dist/layout/twoColumn/TwoColumn.d.ts.map +0 -1
  1063. package/dist/layout/twoColumn/index.d.ts.map +0 -1
  1064. package/dist/layout/vStack/VStack.d.ts.map +0 -1
  1065. package/dist/layout/vStack/index.d.ts.map +0 -1
  1066. package/dist/nav/breadcrumb/Breadcrumb.d.ts.map +0 -1
  1067. package/dist/nav/breadcrumb/index.d.ts.map +0 -1
  1068. package/dist/nav/commandPalette/CommandPalette.d.ts.map +0 -1
  1069. package/dist/nav/commandPalette/index.d.ts.map +0 -1
  1070. package/dist/nav/contextMenu/ContextMenu.d.ts.map +0 -1
  1071. package/dist/nav/contextMenu/index.d.ts.map +0 -1
  1072. package/dist/nav/dropdownMenu/DropdownMenu.d.ts.map +0 -1
  1073. package/dist/nav/dropdownMenu/index.d.ts.map +0 -1
  1074. package/dist/nav/index.d.ts.map +0 -1
  1075. package/dist/nav/menu/Menu.d.ts.map +0 -1
  1076. package/dist/nav/menu/Menu.variants.d.ts.map +0 -1
  1077. package/dist/nav/menu/index.d.ts.map +0 -1
  1078. package/dist/nav/menubar/Menubar.d.ts.map +0 -1
  1079. package/dist/nav/menubar/Menubar.variants.d.ts.map +0 -1
  1080. package/dist/nav/menubar/index.d.ts.map +0 -1
  1081. package/dist/nav/navItem/NavItem.d.ts.map +0 -1
  1082. package/dist/nav/navItem/index.d.ts.map +0 -1
  1083. package/dist/nav/navigationMenu/NavigationMenu.d.ts.map +0 -1
  1084. package/dist/nav/navigationMenu/index.d.ts.map +0 -1
  1085. package/dist/nav/pagination/Pagination.d.ts.map +0 -1
  1086. package/dist/nav/pagination/index.d.ts.map +0 -1
  1087. package/dist/nav/scrollSpy/ScrollSpy.d.ts.map +0 -1
  1088. package/dist/nav/scrollSpy/index.d.ts.map +0 -1
  1089. package/dist/nav/tableOfContents/TableOfContents.d.ts.map +0 -1
  1090. package/dist/nav/tableOfContents/index.d.ts.map +0 -1
  1091. package/dist/overlays/OverlayChrome.d.ts.map +0 -1
  1092. package/dist/overlays/actionSheet/ActionSheet.d.ts.map +0 -1
  1093. package/dist/overlays/actionSheet/index.d.ts.map +0 -1
  1094. package/dist/overlays/alertDialog/AlertDialog.d.ts.map +0 -1
  1095. package/dist/overlays/alertDialog/index.d.ts.map +0 -1
  1096. package/dist/overlays/backdrop/Backdrop.d.ts.map +0 -1
  1097. package/dist/overlays/backdrop/index.d.ts.map +0 -1
  1098. package/dist/overlays/bottomSheet/BottomSheet.d.ts.map +0 -1
  1099. package/dist/overlays/bottomSheet/index.d.ts.map +0 -1
  1100. package/dist/overlays/dialog/Dialog.d.ts.map +0 -1
  1101. package/dist/overlays/dialog/index.d.ts.map +0 -1
  1102. package/dist/overlays/drawer/Drawer.d.ts.map +0 -1
  1103. package/dist/overlays/drawer/index.d.ts.map +0 -1
  1104. package/dist/overlays/hoverCard/HoverCard.d.ts.map +0 -1
  1105. package/dist/overlays/hoverCard/index.d.ts.map +0 -1
  1106. package/dist/overlays/index.d.ts.map +0 -1
  1107. package/dist/overlays/popover/Popover.d.ts.map +0 -1
  1108. package/dist/overlays/popover/index.d.ts.map +0 -1
  1109. package/dist/primitives/accessibleIcon/AccessibleIcon.d.ts.map +0 -1
  1110. package/dist/primitives/accessibleIcon/index.d.ts.map +0 -1
  1111. package/dist/primitives/anchoredPositioner/AnchoredPositioner.d.ts.map +0 -1
  1112. package/dist/primitives/anchoredPositioner/index.d.ts.map +0 -1
  1113. package/dist/primitives/announce/Announce.d.ts.map +0 -1
  1114. package/dist/primitives/announce/index.d.ts.map +0 -1
  1115. package/dist/primitives/collection/Collection.d.ts.map +0 -1
  1116. package/dist/primitives/collection/index.d.ts.map +0 -1
  1117. package/dist/primitives/directionProvider/DirectionProvider.d.ts.map +0 -1
  1118. package/dist/primitives/directionProvider/index.d.ts.map +0 -1
  1119. package/dist/primitives/dismissableLayer/DismissableLayer.d.ts.map +0 -1
  1120. package/dist/primitives/dismissableLayer/index.d.ts.map +0 -1
  1121. package/dist/primitives/focusScope/FocusScope.d.ts.map +0 -1
  1122. package/dist/primitives/focusScope/index.d.ts.map +0 -1
  1123. package/dist/primitives/formControlContext/FormControlContext.d.ts.map +0 -1
  1124. package/dist/primitives/formControlContext/index.d.ts.map +0 -1
  1125. package/dist/primitives/index.d.ts.map +0 -1
  1126. package/dist/primitives/overlayArrow/OverlayArrow.d.ts.map +0 -1
  1127. package/dist/primitives/overlayArrow/index.d.ts.map +0 -1
  1128. package/dist/primitives/portal/Portal.d.ts.map +0 -1
  1129. package/dist/primitives/portal/index.d.ts.map +0 -1
  1130. package/dist/primitives/presence/Presence.d.ts.map +0 -1
  1131. package/dist/primitives/presence/index.d.ts.map +0 -1
  1132. package/dist/primitives/rovingFocusGroup/RovingFocusGroup.d.ts.map +0 -1
  1133. package/dist/primitives/rovingFocusGroup/index.d.ts.map +0 -1
  1134. package/dist/primitives/scrollLockProvider/ScrollLockProvider.d.ts.map +0 -1
  1135. package/dist/primitives/scrollLockProvider/index.d.ts.map +0 -1
  1136. package/dist/primitives/slot/Slot.d.ts.map +0 -1
  1137. package/dist/primitives/slot/index.d.ts.map +0 -1
  1138. package/dist/primitives/visuallyHidden/VisuallyHidden.d.ts.map +0 -1
  1139. package/dist/primitives/visuallyHidden/index.d.ts.map +0 -1
  1140. package/dist/utils/ColorExtensions.d.ts.map +0 -1
  1141. package/dist/utils/CssExtensions.d.ts.map +0 -1
  1142. package/dist/utils/Equality.d.ts.map +0 -1
  1143. package/dist/utils/HtmlExtensions.d.ts.map +0 -1
  1144. package/dist/utils/KeyboardExtensions.d.ts.map +0 -1
  1145. package/dist/utils/Layers.d.ts.map +0 -1
  1146. package/dist/utils/OptionalExtensions.d.ts.map +0 -1
  1147. package/dist/utils/PressExtensions.d.ts.map +0 -1
  1148. package/dist/utils/StyleTokens.d.ts.map +0 -1
  1149. package/dist/utils/SurfaceStyles.d.ts.map +0 -1
  1150. package/dist/utils/Tones.d.ts.map +0 -1
  1151. package/dist/utils/TransitionExtensions.d.ts.map +0 -1
  1152. package/dist/utils/cn.d.ts.map +0 -1
  1153. package/dist/utils/composeEventHandlers.d.ts.map +0 -1
  1154. package/dist/utils/composeRefs.d.ts.map +0 -1
  1155. package/dist/utils/dataAttr.d.ts.map +0 -1
  1156. package/dist/utils/index.d.ts.map +0 -1
  1157. package/dist/utils/polymorphic.d.ts.map +0 -1
  1158. package/dist/utils/tv.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/forms/label/Label.tsx","../src/forms/formHelperText/FormHelperText.tsx","../src/forms/formErrorMessage/FormErrorMessage.tsx","../src/forms/fieldset/Fieldset.tsx","../src/forms/legend/Legend.tsx","../src/forms/InputStyles.ts","../src/forms/textInput/TextInput.tsx","../src/forms/emailInput/EmailInput.tsx","../src/forms/telInput/TelInput.tsx","../src/forms/urlInput/UrlInput.tsx","../src/forms/numberInput/NumberInput.tsx","../src/forms/passwordInput/PasswordInput.tsx","../src/forms/searchInput/SearchInput.tsx","../src/forms/textarea/Textarea.tsx","../src/forms/checkbox/Checkbox.variants.ts","../src/forms/checkbox/Checkbox.tsx","../src/forms/radio/Radio.tsx","../src/forms/switch/Switch.tsx","../src/forms/slider/Slider.tsx","../src/forms/formField/FormField.tsx","../src/forms/checkboxField/CheckboxField.tsx","../src/forms/radioField/RadioField.tsx","../src/forms/switchField/SwitchField.tsx","../src/forms/checkboxGroup/CheckboxGroup.tsx","../src/forms/radioGroup/RadioGroup.tsx","../src/forms/pinInput/PinInput.tsx","../src/forms/maskedInput/MaskedInput.tsx","../src/forms/currencyInput/CurrencyInput.tsx","../src/forms/percentInput/PercentInput.tsx","../src/forms/characterCount/CharacterCount.tsx","../src/forms/inputAddon/InputAddon.tsx","../src/forms/inputGroup/InputGroup.tsx","../src/forms/labeledInput/LabeledInput.tsx","../src/forms/choiceCard/ChoiceCard.tsx","../src/forms/passwordStrength/PasswordStrength.tsx","../src/forms/filePicker/FilePicker.tsx","../src/forms/listbox/Listbox.tsx","../src/forms/select/Select.variants.ts","../src/forms/select/Select.tsx","../src/forms/multiSelect/MultiSelect.tsx","../src/forms/combobox/Combobox.tsx","../src/forms/MonthGrid.tsx","../src/forms/calendar/Calendar.tsx","../src/forms/dateField/DateField.tsx","../src/forms/timeField/TimeField.tsx","../src/forms/rangeCalendar/RangeCalendar.tsx","../src/forms/datePicker/DatePicker.tsx","../src/forms/timePicker/TimePicker.tsx","../src/forms/dateRangePicker/DateRangePicker.tsx","../src/forms/colorSwatch/ColorSwatch.variants.ts","../src/forms/colorSwatch/ColorSwatch.tsx","../src/forms/ColorExtensions.ts","../src/forms/colorField/ColorField.tsx","../src/forms/colorSlider/ColorSlider.tsx","../src/forms/colorArea/ColorArea.tsx","../src/forms/colorWheel/ColorWheel.tsx","../src/forms/colorSwatchPicker/ColorSwatchPicker.tsx","../src/forms/colorPicker/ColorPicker.tsx","../src/forms/stepper/Stepper.tsx","../src/forms/tagsInput/TagsInput.tsx","../src/forms/fileUpload/FileUpload.tsx","../src/forms/editable/Editable.tsx","../src/forms/wizard/Wizard.tsx","../src/forms/codeEditor/CodeEditor.tsx","../src/forms/markdownEditor/MarkdownEditor.tsx","../src/forms/jsonEditor/JSONEditor.tsx","../src/forms/recurrenceEditor/RecurrenceEditor.tsx","../src/forms/knob/Knob.tsx","../src/forms/keyboardShortcutPicker/KeyboardShortcutPicker.tsx","../src/forms/iconPicker/IconPicker.tsx","../src/forms/fontPicker/FontPicker.tsx","../src/forms/cronInput/CronInput.tsx","../src/forms/gradientPicker/GradientPicker.tsx","../src/forms/addressForm/AddressForm.tsx","../src/forms/phoneInput/PhoneInput.tsx","../src/forms/emojiPicker/EmojiPicker.tsx","../src/forms/reactionPicker/ReactionPicker.tsx","../src/forms/chatComposer/ChatComposer.tsx"],"names":["forwardRef","jsx","jsxs","useRef","useImperativeHandle","useState","Minus","TRACK_CLASS","useId","Children","isValidElement","cloneElement","SIZE","Check","ListboxItem","createContext","useContext","useCallback","useMemo","SelectTrigger","X","SelectItem","useEffect","MultiSelectTrigger","ChevronDown","MultiSelectItem","ComboboxInput","ComboboxItem","Calendar","DateField","TimeField","RangeCalendar","DatePicker","CalendarIcon","defaultFormat","TimePicker","DateRangePicker","Fragment","ColorSwatch","ColorField","ColorSlider","ratio","ColorArea","ColorWheel","ColorPicker","value","Stepper","StepperList","StepperStep","StepperPanel","TagsInput","FileUpload","EditablePreview","EditableInput","EditableSubmit","EditableCancel","Wizard","next","WizardSteps","WizardStep","WizardFooter","CodeEditor","MarkdownEditor","JSONEditor","ChevronRight","RecurrenceEditor","Knob","KeyboardShortcutPicker","Clock","Code","Eye","Link2","Map","Plus","Search","Tag","Upload","IconPicker","FontPicker","CronInput","GradientPicker","Trash","AddressForm","PhoneInput","EmojiPicker","Send"],"mappings":"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","file":"chunk-BKWLS6V2.js","sourcesContent":["import { forwardRef, type LabelHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n /** Show a `*` indicator. Auto-derived from `FormControl.isRequired` when present. */\n required?: boolean;\n /** Visual size. Default `md`. */\n size?: 'xs' | 'sm' | 'md';\n}\n\nconst SIZE: Record<NonNullable<LabelProps['size']>, string> = {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-sm',\n};\n\n/**\n * `<label>` wired to `FormControl` context — when wrapped in a `FormControl`\n * it auto-fills `htmlFor` and `id`. Standalone use: pass `htmlFor` directly.\n */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, required, size = 'md', htmlFor, id, children, ...props }, ref) => {\n const ctx = useFormControl();\n const isRequired = required ?? ctx?.isRequired ?? false;\n return (\n <label\n ref={ref}\n htmlFor={htmlFor ?? ctx?.id}\n id={id ?? ctx?.labelId}\n className={cn(\n SIZE[size],\n 'font-medium text-foreground',\n ctx?.isDisabled && 'opacity-60',\n className,\n )}\n {...props}\n >\n {children}\n {isRequired && <span className=\"ml-0.5 text-destructive\" aria-hidden=\"true\">*</span>}\n </label>\n );\n },\n);\nLabel.displayName = 'Label';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport type FormHelperTextProps = ComponentPropsWithoutRef<'p'>;\n\n/**\n * Helper / hint text below a form control. Reads `helperId` from\n * `FormControl` so the input can reference it via `aria-describedby`.\n */\nexport const FormHelperText = forwardRef<HTMLParagraphElement, FormHelperTextProps>(\n ({ className, id, ...props }, ref) => {\n const ctx = useFormControl();\n return (\n <p\n ref={ref}\n id={id ?? ctx?.helperId}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n );\n },\n);\nFormHelperText.displayName = 'FormHelperText';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport type FormErrorMessageProps = ComponentPropsWithoutRef<'p'>;\n\n/**\n * Error copy under a form control. Renders only when the surrounding\n * `FormControl` is `isInvalid`. `id={errorId}` for `aria-describedby` wiring.\n */\nexport const FormErrorMessage = forwardRef<HTMLParagraphElement, FormErrorMessageProps>(\n ({ className, id, ...props }, ref) => {\n const ctx = useFormControl();\n if (ctx && !ctx.isInvalid) return null;\n return (\n <p\n ref={ref}\n id={id ?? ctx?.errorId}\n role=\"alert\"\n className={cn('text-sm text-destructive', className)}\n {...props}\n />\n );\n },\n);\nFormErrorMessage.displayName = 'FormErrorMessage';\n","import { forwardRef, type FieldsetHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\n\nexport type FieldsetProps = FieldsetHTMLAttributes<HTMLFieldSetElement>;\n\n/**\n * Semantic `<fieldset>` for grouping related controls. Pair with `Legend`\n * for the group label.\n */\nexport const Fieldset = forwardRef<HTMLFieldSetElement, FieldsetProps>(\n ({ className, ...props }, ref) => (\n <fieldset\n ref={ref}\n className={cn('m-0 min-w-0 border-0 p-0', className)}\n {...props}\n />\n ),\n);\nFieldset.displayName = 'Fieldset';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\n\nexport type LegendProps = HTMLAttributes<HTMLLegendElement>;\n\n/**\n * `<legend>` styled to match `Label`. Pair with `Fieldset`.\n */\nexport const Legend = forwardRef<HTMLLegendElement, LegendProps>(\n ({ className, ...props }, ref) => (\n <legend\n ref={ref}\n className={cn('mb-2 text-sm font-medium text-foreground', className)}\n {...props}\n />\n ),\n);\nLegend.displayName = 'Legend';\n","// Shared visual primitives for form atoms. Co-located in `forms/` so imports\n// stay within-domain (ESLint boundaries allow same-domain imports).\n\nimport { tv, type VariantProps } from '../utils';\n\nexport const inputBaseVariants = tv({\n base: 'flex w-full rounded-md border bg-popover text-foreground placeholder:text-subtle-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60 read-only:bg-muted',\n variants: {\n size: {\n xs: 'h-7 px-2 text-xs',\n sm: 'h-8 px-2.5 text-sm',\n md: 'h-10 px-3 text-sm',\n lg: 'h-12 px-4 text-base',\n },\n state: {\n default: 'border-input hover:border-border-strong',\n invalid: 'border-destructive focus-visible:ring-destructive',\n },\n },\n defaultVariants: {\n size: 'md',\n state: 'default',\n },\n});\n\nexport type InputBaseVariants = VariantProps<typeof inputBaseVariants>;\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\nexport interface TextInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {}\n\n/**\n * Single-line text input. For email/tel/url/number/password/search variants\n * use the dedicated input component (each carries only the props/buttons it\n * actually needs).\n */\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n ({ className, size, state, id, disabled, required, readOnly, ...props }, ref) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <input\n ref={ref}\n type=\"text\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nTextInput.displayName = 'TextInput';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\nexport interface EmailInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {}\n\n/** `<input type=\"email\">` with sensible defaults (autocomplete, inputmode). */\nexport const EmailInput = forwardRef<HTMLInputElement, EmailInputProps>(\n ({ className, size, state, id, disabled, required, readOnly, ...props }, ref) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <input\n ref={ref}\n type=\"email\"\n autoComplete=\"email\"\n inputMode=\"email\"\n spellCheck={false}\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nEmailInput.displayName = 'EmailInput';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\nexport interface TelInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {}\n\n/** `<input type=\"tel\">` with `inputmode=\"tel\"` and `autocomplete=\"tel\"`. */\nexport const TelInput = forwardRef<HTMLInputElement, TelInputProps>(\n ({ className, size, state, id, disabled, required, readOnly, ...props }, ref) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <input\n ref={ref}\n type=\"tel\"\n autoComplete=\"tel\"\n inputMode=\"tel\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nTelInput.displayName = 'TelInput';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\nexport interface UrlInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {}\n\n/** `<input type=\"url\">` with `inputmode=\"url\"` and `autocomplete=\"url\"`. */\nexport const UrlInput = forwardRef<HTMLInputElement, UrlInputProps>(\n ({ className, size, state, id, disabled, required, readOnly, ...props }, ref) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <input\n ref={ref}\n type=\"url\"\n autoComplete=\"url\"\n inputMode=\"url\"\n spellCheck={false}\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nUrlInput.displayName = 'UrlInput';\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type InputHTMLAttributes,\n} from 'react';\nimport { Minus, Plus } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\nexport interface NumberInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {\n step?: number;\n}\n\n/**\n * Numeric input with stepper buttons. Steppers are raw `<button>` elements\n * to keep the strict atom rule (NumberInput is L3; importing Button would\n * make this an atom-on-atom composition).\n */\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n { className, size, state, id, disabled, required, readOnly, step = 1, ...props },\n forwardedRef,\n ) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n const inputRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement);\n\n const adjust = (direction: 1 | -1) => {\n const el = inputRef.current;\n if (!el || typeof el.stepUp !== 'function') return;\n if (direction === 1) el.stepUp(step);\n else el.stepDown(step);\n el.dispatchEvent(new Event('input', { bubbles: true }));\n el.dispatchEvent(new Event('change', { bubbles: true }));\n };\n\n const isDisabled = disabled ?? ctx?.isDisabled ?? false;\n\n return (\n <div className={cn('relative', className)}>\n <input\n ref={inputRef}\n type=\"number\"\n inputMode=\"decimal\"\n step={step}\n id={id ?? ctx?.id}\n disabled={isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), 'pr-12 [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none')}\n {...props}\n />\n <div className=\"absolute right-1 top-1/2 flex -translate-y-1/2 items-center\">\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={() => adjust(-1)}\n aria-label=\"Decrement\"\n className=\"grid h-7 w-6 place-items-center rounded text-muted-foreground hover:bg-muted disabled:opacity-50\"\n >\n <Icon icon={Minus} size={14} />\n </button>\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={() => adjust(1)}\n aria-label=\"Increment\"\n className=\"grid h-7 w-6 place-items-center rounded text-muted-foreground hover:bg-muted disabled:opacity-50\"\n >\n <Icon icon={Plus} size={14} />\n </button>\n </div>\n </div>\n );\n },\n);\nNumberInput.displayName = 'NumberInput';\n","import { forwardRef, useState, type InputHTMLAttributes } from 'react';\nimport { Eye, EyeOff } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\nexport interface PasswordInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {\n /** Whether to render the visibility-toggle button. Default true. */\n toggleable?: boolean;\n}\n\n/**\n * Password input with optional visibility toggle. Toggle is a raw `<button>`\n * to keep the strict atom rule.\n */\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(\n (\n {\n className,\n size,\n state,\n id,\n disabled,\n required,\n readOnly,\n toggleable = true,\n autoComplete = 'current-password',\n ...props\n },\n ref,\n ) => {\n const [visible, setVisible] = useState(false);\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n const isDisabled = disabled ?? ctx?.isDisabled ?? false;\n\n return (\n <div className={cn('relative', className)}>\n <input\n ref={ref}\n type={visible ? 'text' : 'password'}\n autoComplete={autoComplete}\n spellCheck={false}\n id={id ?? ctx?.id}\n disabled={isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), toggleable && 'pr-10')}\n {...props}\n />\n {toggleable && (\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={() => setVisible((v) => !v)}\n aria-label={visible ? 'Hide password' : 'Show password'}\n aria-pressed={visible}\n className=\"absolute right-1 top-1/2 grid h-8 w-8 -translate-y-1/2 place-items-center rounded text-muted-foreground hover:bg-muted disabled:opacity-50\"\n >\n <Icon icon={visible ? EyeOff : Eye} size={16} />\n </button>\n )}\n </div>\n );\n },\n);\nPasswordInput.displayName = 'PasswordInput';\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n useState,\n type InputHTMLAttributes,\n} from 'react';\nimport { Search, X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\nexport interface SearchInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'>,\n InputBaseVariants {\n /** Show a clear (×) button when the input has a value. Default true. */\n clearable?: boolean;\n onClear?: () => void;\n}\n\n/**\n * Search input with leading search icon and optional clear button.\n * Buttons are raw `<button>` elements to keep the strict atom rule.\n */\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n className,\n size,\n state,\n id,\n disabled,\n required,\n readOnly,\n clearable = true,\n onClear,\n onChange,\n defaultValue,\n value,\n ...props\n },\n forwardedRef,\n ) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n const isDisabled = disabled ?? ctx?.isDisabled ?? false;\n const inputRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement);\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = useState(defaultValue ?? '');\n const currentValue = isControlled ? value : uncontrolled;\n const showClear = clearable && String(currentValue ?? '').length > 0;\n\n const handleClear = () => {\n const el = inputRef.current;\n if (el) {\n const setter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value')\n ?.set;\n setter?.call(el, '');\n el.dispatchEvent(new Event('input', { bubbles: true }));\n el.focus();\n }\n if (!isControlled) setUncontrolled('');\n onClear?.();\n };\n\n return (\n <div className={cn('relative', className)}>\n <Icon\n icon={Search}\n size={16}\n className=\"absolute left-3 top-1/2 -translate-y-1/2 text-subtle-foreground\"\n />\n <input\n ref={inputRef}\n type=\"search\"\n id={id ?? ctx?.id}\n value={isControlled ? value : undefined}\n defaultValue={!isControlled ? (defaultValue as string | number | undefined) : undefined}\n onChange={(e) => {\n if (!isControlled) setUncontrolled(e.target.value);\n onChange?.(e);\n }}\n disabled={isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(\n inputBaseVariants({ size, state: finalState }),\n 'pl-9',\n showClear && 'pr-9',\n '[&::-webkit-search-cancel-button]:appearance-none',\n )}\n {...props}\n />\n {showClear && (\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={handleClear}\n aria-label=\"Clear search\"\n className=\"absolute right-1 top-1/2 grid h-8 w-8 -translate-y-1/2 place-items-center rounded text-subtle-foreground hover:bg-muted hover:text-muted-foreground\"\n >\n <Icon icon={X} size={14} />\n </button>\n )}\n </div>\n );\n },\n);\nSearchInput.displayName = 'SearchInput';\n","import { forwardRef, type TextareaHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\nexport interface TextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>,\n InputBaseVariants {}\n\n/**\n * Multi-line text input. Inherits the input visual base. For autosize, pair\n * with a sibling-domain hook in v1 — kept simple at L3.\n */\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n { className, size, state, id, disabled, required, readOnly, rows = 3, ...props },\n ref,\n ) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n return (\n <textarea\n ref={ref}\n rows={rows}\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(\n inputBaseVariants({ size, state: finalState }),\n 'h-auto resize-y py-2',\n className,\n )}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = 'Textarea';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const checkboxVariants = tv({\n base: 'pointer-events-none grid h-full w-full place-items-center rounded-sm border transition-colors peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-1 peer-disabled:opacity-50',\n variants: {\n variant: {\n solid: 'border-input bg-background',\n soft: 'border-transparent',\n outline: 'bg-transparent',\n ghost: 'border-transparent bg-transparent',\n glass: 'border-white/40 bg-black/40 backdrop-blur-sm',\n 'glass-surface': 'border-white/60 bg-black/40 backdrop-blur-sm',\n },\n tone: {\n primary: '',\n neutral: '',\n danger: '',\n success: '',\n warning: '',\n },\n },\n compoundVariants: [\n // === SOLID × tone — bg-background unchecked → tone fill checked ===\n { variant: 'solid', tone: 'primary', class: 'text-primary-foreground peer-checked:border-primary peer-checked:bg-primary' },\n { variant: 'solid', tone: 'neutral', class: 'text-background peer-checked:border-foreground peer-checked:bg-foreground' },\n { variant: 'solid', tone: 'danger', class: 'text-destructive-foreground peer-checked:border-destructive peer-checked:bg-destructive' },\n { variant: 'solid', tone: 'success', class: 'text-success-foreground peer-checked:border-success peer-checked:bg-success' },\n { variant: 'solid', tone: 'warning', class: 'text-warning-foreground peer-checked:border-warning peer-checked:bg-warning' },\n\n // === SOFT × tone — soft bg unchecked → strong tone fill checked ===\n { variant: 'soft', tone: 'primary', class: 'bg-primary-soft text-primary-soft-foreground peer-checked:bg-primary peer-checked:text-primary-foreground' },\n { variant: 'soft', tone: 'neutral', class: 'bg-muted text-foreground peer-checked:bg-foreground peer-checked:text-background' },\n { variant: 'soft', tone: 'danger', class: 'bg-destructive-soft text-destructive-soft-foreground peer-checked:bg-destructive peer-checked:text-destructive-foreground' },\n { variant: 'soft', tone: 'success', class: 'bg-success-soft text-success-soft-foreground peer-checked:bg-success peer-checked:text-success-foreground' },\n { variant: 'soft', tone: 'warning', class: 'bg-warning-soft text-warning-soft-foreground peer-checked:bg-warning peer-checked:text-warning-foreground' },\n\n // === OUTLINE × tone — tone border unchecked → tone fill checked ===\n { variant: 'outline', tone: 'primary', class: 'border-primary text-primary peer-checked:bg-primary peer-checked:text-primary-foreground' },\n { variant: 'outline', tone: 'neutral', class: 'border-border-strong text-foreground peer-checked:bg-foreground peer-checked:text-background' },\n { variant: 'outline', tone: 'danger', class: 'border-destructive text-destructive peer-checked:bg-destructive peer-checked:text-destructive-foreground' },\n { variant: 'outline', tone: 'success', class: 'border-success text-success peer-checked:bg-success peer-checked:text-success-foreground' },\n { variant: 'outline', tone: 'warning', class: 'border-warning text-warning peer-checked:bg-warning peer-checked:text-warning-foreground' },\n\n // === GHOST × tone — no border/bg unchecked → tone-tinted bg + tone check checked ===\n { variant: 'ghost', tone: 'primary', class: 'text-primary peer-checked:bg-primary/10' },\n { variant: 'ghost', tone: 'neutral', class: 'text-foreground peer-checked:bg-muted' },\n { variant: 'ghost', tone: 'danger', class: 'text-destructive peer-checked:bg-destructive/10' },\n { variant: 'ghost', tone: 'success', class: 'text-success peer-checked:bg-success/10' },\n { variant: 'ghost', tone: 'warning', class: 'text-warning peer-checked:bg-warning/10' },\n\n // === GLASS × tone — dark glass stays on check; only the white check icon appears (peer-checked:opacity-100 on Check). Tone is preserved as text-white throughout — bg doesn't swap, matching the photo-overlay aesthetic. ===\n { variant: 'glass', tone: 'primary', class: 'text-white' },\n { variant: 'glass', tone: 'neutral', class: 'text-white' },\n { variant: 'glass', tone: 'danger', class: 'text-white' },\n { variant: 'glass', tone: 'success', class: 'text-white' },\n { variant: 'glass', tone: 'warning', class: 'text-white' },\n\n // === GLASS-SURFACE × tone — same: dark glass + white check on check. Border emphasis (white/80) optional on check for stronger affordance. ===\n { variant: 'glass-surface', tone: 'primary', class: 'text-white peer-checked:border-white/80' },\n { variant: 'glass-surface', tone: 'neutral', class: 'text-white peer-checked:border-white/80' },\n { variant: 'glass-surface', tone: 'danger', class: 'text-white peer-checked:border-white/80' },\n { variant: 'glass-surface', tone: 'success', class: 'text-white peer-checked:border-white/80' },\n { variant: 'glass-surface', tone: 'warning', class: 'text-white peer-checked:border-white/80' },\n ],\n defaultVariants: {\n variant: 'solid',\n tone: 'primary',\n },\n});\n\nexport type CheckboxVariants = VariantProps<typeof checkboxVariants>;\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { Check, Minus } from 'lucide-react';\nimport { cn, ColorExtensions, CssExtensions, type ColorProp, type ColorTone, type SizePreset, type SizeUnion } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { checkboxVariants, type CheckboxVariants } from './Checkbox.variants';\n\nconst COMPONENT_NAME = 'Checkbox';\n\n/* Checkbox supports the 5-preset core (skips `2xl` — outsized for a form control). */\ntype CheckboxSizePreset = Extract<SizePreset, 'xs' | 'sm' | 'md' | 'lg' | 'xl'>;\nconst CHECKBOX_SIZE_PRESETS: ReadonlySet<string> = new Set<CheckboxSizePreset>([\n 'xs', 'sm', 'md', 'lg', 'xl',\n]);\n\n/* Outer wrapper box dim per preset. */\nconst BOX_SIZE_CLASS: Record<CheckboxSizePreset, string> = {\n xs: 'h-3.5 w-3.5', // 14px — dense / mobile-tight (consumer must ensure ≥24px hit target via wrapping label)\n sm: 'h-4 w-4', // 16px\n md: 'h-5 w-5', // 20px (default)\n lg: 'h-6 w-6', // 24px (WCAG-compliant standalone)\n xl: 'h-7 w-7', // 28px (emphasis / a11y-first)\n};\n\n/* Inner icon dim per preset — scales proportionally to box. */\nconst ICON_SIZE_CLASS: Record<CheckboxSizePreset, string> = {\n xs: 'h-2.5 w-2.5',\n sm: 'h-3 w-3',\n md: 'h-3.5 w-3.5',\n lg: 'h-4 w-4',\n xl: 'h-5 w-5',\n};\n\n/* Fallback icon dim when raw/object size used — middle of scale. */\nconst DEFAULT_ICON_CLASS = 'h-3 w-3';\n\nexport interface CheckboxProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size' | 'color'>,\n CheckboxVariants {\n /* Size: preset (`xs|sm|md|lg|xl`) → box + icon scale · raw number/string → square inline · object → explicit dims. See `SizeUnion`. */\n size?: SizeUnion<CheckboxSizePreset>;\n\n /* Tristate visual — input stays `checked={false}` but renders as a dash with the same checked-state styling. */\n indeterminate?: boolean;\n\n /* Per-instance color override (string seed or slot object). Overrides the active `tone`'s theme tokens locally. */\n color?: ColorProp;\n}\n\n/* When indeterminate=true, apply the compound's checked classes regardless of peer-checked state. */\nconst INDETERMINATE_CHECKED_CLASS: Record<\n NonNullable<CheckboxVariants['variant']>,\n Record<NonNullable<CheckboxVariants['tone']>, string>\n> = {\n solid: {\n primary: 'bg-primary border-primary text-primary-foreground',\n neutral: 'bg-foreground border-foreground text-background',\n danger: 'bg-destructive border-destructive text-destructive-foreground',\n success: 'bg-success border-success text-success-foreground',\n warning: 'bg-warning border-warning text-warning-foreground',\n },\n soft: {\n primary: 'bg-primary text-primary-foreground',\n neutral: 'bg-foreground text-background',\n danger: 'bg-destructive text-destructive-foreground',\n success: 'bg-success text-success-foreground',\n warning: 'bg-warning text-warning-foreground',\n },\n outline: {\n primary: 'bg-primary text-primary-foreground',\n neutral: 'bg-foreground text-background',\n danger: 'bg-destructive text-destructive-foreground',\n success: 'bg-success text-success-foreground',\n warning: 'bg-warning text-warning-foreground',\n },\n ghost: {\n primary: 'bg-primary/10 text-primary',\n neutral: 'bg-muted text-foreground',\n danger: 'bg-destructive/10 text-destructive',\n success: 'bg-success/10 text-success',\n warning: 'bg-warning/10 text-warning',\n },\n /* Glass family keeps dark glass bg in indeterminate state (matches checked behavior). The Minus icon renders unconditionally; text-white from variant base makes it visible. */\n glass: {\n primary: 'text-white',\n neutral: 'text-white',\n danger: 'text-white',\n success: 'text-white',\n warning: 'text-white',\n },\n 'glass-surface': {\n primary: 'text-white border-white/80',\n neutral: 'text-white border-white/80',\n danger: 'text-white border-white/80',\n success: 'text-white border-white/80',\n warning: 'text-white border-white/80',\n },\n};\n\n/* Native checkbox with custom visual. Renders the input visually hidden but accessible — wrap in a `<label>` (or pair with `Label` via `FormControl`). Supports 6 variants × 5 tones matrix + indeterminate. */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className,\n size = 'md',\n indeterminate,\n variant = 'solid',\n tone = 'primary',\n color,\n id,\n disabled,\n required,\n checked,\n ...props\n },\n ref,\n ) => {\n const ctx = useFormControl();\n const isDisabled = disabled ?? ctx?.isDisabled;\n\n /* Parse union-typed `size` — preset routes to box+icon class lookup, raw/object routes to inline dims. */\n const { preset: sizePreset, box: sizeBox } = CssExtensions.parseSizeUnion<CheckboxSizePreset>(\n size,\n CHECKBOX_SIZE_PRESETS,\n );\n const boxClass = sizePreset ? BOX_SIZE_CLASS[sizePreset] : undefined;\n const iconClass = sizePreset ? ICON_SIZE_CLASS[sizePreset] : DEFAULT_ICON_CLASS;\n const boxStyle = sizeBox ? CssExtensions.resolveBoxSize(sizeBox) : undefined;\n /* Per-instance color override → sets CSS vars on wrapper; the visual span inherits via cascade. */\n const colorStyle = ColorExtensions.toneColorOverride(color, tone as ColorTone | undefined);\n const composedStyle =\n colorStyle || boxStyle ? { ...colorStyle, ...boxStyle } : undefined;\n\n return (\n <span\n className={cn('relative inline-flex shrink-0', boxClass, className)}\n style={composedStyle}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n id={id ?? ctx?.id}\n disabled={isDisabled}\n required={required ?? ctx?.isRequired}\n checked={checked}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className=\"peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n {...props}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n checkboxVariants({ variant, tone }),\n indeterminate\n ? INDETERMINATE_CHECKED_CLASS[variant][tone]\n /* Opacity gate lives on this span (a peer sibling of the input) — child-selector targets the SVG. peer-checked: cannot reach descendants directly. */\n : '[&>svg]:opacity-0 peer-checked:[&>svg]:opacity-100',\n )}\n >\n {indeterminate ? (\n <Minus className={iconClass} />\n ) : (\n <Check className={iconClass} />\n )}\n </span>\n </span>\n );\n },\n);\n\nCheckbox.displayName = COMPONENT_NAME;\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface RadioProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst SIZE_CLASS: Record<NonNullable<RadioProps['size']>, string> = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n};\n\n/**\n * Native radio button with custom visual. Use multiple with the same `name`\n * to form a mutually exclusive group; for arrow-key nav, wrap in\n * `RadioGroup` (L4).\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n ({ className, size = 'md', id, disabled, required, ...props }, ref) => {\n const ctx = useFormControl();\n return (\n <span className={cn('relative inline-flex shrink-0', SIZE_CLASS[size], className)}>\n <input\n ref={ref}\n type=\"radio\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n aria-invalid={ctx?.isInvalid || undefined}\n className=\"peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n {...props}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none grid h-full w-full place-items-center rounded-full border border-input bg-background transition-colors',\n 'peer-checked:border-primary',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-1',\n 'peer-disabled:opacity-50',\n )}\n >\n <span className=\"h-2 w-2 rounded-full bg-primary opacity-0 peer-checked:opacity-100\" />\n </span>\n </span>\n );\n },\n);\nRadio.displayName = 'Radio';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface SwitchProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst TRACK_CLASS: Record<NonNullable<SwitchProps['size']>, string> = {\n sm: 'h-4 w-7',\n md: 'h-5 w-9',\n lg: 'h-6 w-11',\n};\nconst THUMB_CLASS: Record<NonNullable<SwitchProps['size']>, string> = {\n sm: 'h-3 w-3 peer-checked:translate-x-3',\n md: 'h-4 w-4 peer-checked:translate-x-4',\n lg: 'h-5 w-5 peer-checked:translate-x-5',\n};\n\n/**\n * Toggle switch — native checkbox styled as an iOS-style track + thumb.\n * Strict atom: no built-in label; pair via `FormControl` or wrap manually.\n */\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n ({ className, size = 'md', id, disabled, required, ...props }, ref) => {\n const ctx = useFormControl();\n return (\n <span className={cn('relative inline-flex shrink-0', TRACK_CLASS[size], className)}>\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n aria-invalid={ctx?.isInvalid || undefined}\n className=\"peer absolute inset-0 m-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n {...props}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none flex h-full w-full items-center rounded-full bg-input px-0.5 transition-colors',\n 'peer-checked:bg-primary',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-1',\n 'peer-disabled:opacity-50',\n )}\n >\n <span\n className={cn(\n 'rounded-full bg-background shadow-sm transition-transform duration-150',\n THUMB_CLASS[size],\n )}\n />\n </span>\n </span>\n );\n },\n);\nSwitch.displayName = 'Switch';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\n\nexport interface SliderProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst TRACK_CLASS: Record<NonNullable<SliderProps['size']>, string> = {\n sm: 'h-1',\n md: 'h-1.5',\n lg: 'h-2',\n};\n\n/**\n * Single-value range slider — native `<input type=\"range\">` styled across\n * browsers. Multi-thumb / range slider lives at L5.\n */\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n (\n { className, size = 'md', id, disabled, required, min = 0, max = 100, ...props },\n ref,\n ) => {\n const ctx = useFormControl();\n return (\n <input\n ref={ref}\n type=\"range\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n min={min}\n max={max}\n aria-invalid={ctx?.isInvalid || undefined}\n className={cn(\n 'w-full appearance-none bg-transparent disabled:cursor-not-allowed disabled:opacity-50',\n // WebKit\n '[&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-muted',\n `[&::-webkit-slider-runnable-track]:${TRACK_CLASS[size]}`,\n '[&::-webkit-slider-thumb]:mt-[-6px] [&::-webkit-slider-thumb]:h-4 [&::-webkit-slider-thumb]:w-4 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-primary [&::-webkit-slider-thumb]:bg-background',\n // Firefox\n `[&::-moz-range-track]:${TRACK_CLASS[size]}`,\n '[&::-moz-range-track]:rounded-full [&::-moz-range-track]:bg-muted',\n '[&::-moz-range-thumb]:h-4 [&::-moz-range-thumb]:w-4 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:border-primary [&::-moz-range-thumb]:bg-background',\n 'focus-visible:outline-none focus-visible:[&::-webkit-slider-thumb]:ring-2 focus-visible:[&::-webkit-slider-thumb]:ring-ring',\n className,\n )}\n {...props}\n />\n );\n },\n);\nSlider.displayName = 'Slider';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { FormControlProvider } from '../../primitives/formControlContext/FormControlContext';\nimport { Label } from '../label/Label';\nimport { FormHelperText } from '../formHelperText/FormHelperText';\nimport { FormErrorMessage } from '../formErrorMessage/FormErrorMessage';\n\nexport interface FormFieldProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** Label text. Pass a node for richer content (e.g. label + tooltip). */\n label?: ReactNode;\n /** Helper / hint shown beneath the control. Hidden when `error` is set. */\n helper?: ReactNode;\n /** Error text — renders only when truthy. Sets `isInvalid` on the form context. */\n error?: ReactNode;\n /** Mark required (also exposes `isRequired` to the control via context). */\n isRequired?: boolean;\n /** Mark disabled (also exposes `isDisabled` to the control). */\n isDisabled?: boolean;\n /** Mark read-only (also exposes `isReadOnly` to the control). */\n isReadOnly?: boolean;\n /** The single form control (Input, Select, etc.) — receives wired id/aria via context. */\n children: ReactNode;\n}\n\n/**\n * One-stop label + control + helper + error wrapper. Wraps children in a\n * `FormControlProvider` so the inner control auto-wires `id`, `aria-describedby`,\n * `aria-invalid`, `disabled`, `required`, `readOnly`.\n */\nexport const FormField = forwardRef<HTMLDivElement, FormFieldProps>(\n (\n { label, helper, error, isRequired, isDisabled, isReadOnly, children, className, ...props },\n ref,\n ) => (\n <FormControlProvider\n isInvalid={Boolean(error)}\n isRequired={isRequired}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n >\n <div\n ref={ref}\n className={cn('flex flex-col gap-1.5', className)}\n {...props}\n >\n {label && <Label>{label}</Label>}\n {children}\n {error ? <FormErrorMessage>{error}</FormErrorMessage> : helper && <FormHelperText>{helper}</FormHelperText>}\n </div>\n </FormControlProvider>\n ),\n);\nFormField.displayName = 'FormField';\n","import { forwardRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useId } from '../../hooks';\nimport { Checkbox, type CheckboxProps } from '../checkbox/Checkbox';\n\nexport interface CheckboxFieldProps extends Omit<CheckboxProps, 'children'> {\n /** Right-side label. */\n label: ReactNode;\n /** Smaller helper / description below. */\n description?: ReactNode;\n /** Wrap-element className (the `<label>`). */\n wrapperClassName?: string;\n}\n\n/**\n * Checkbox + right-side label + optional description, wrapped in a single\n * `<label>` so clicking text toggles the box.\n */\nexport const CheckboxField = forwardRef<HTMLInputElement, CheckboxFieldProps>(\n ({ label, description, id, wrapperClassName, className, ...props }, ref) => {\n const generated = useId();\n const inputId = id ?? generated;\n return (\n <label\n htmlFor={inputId}\n className={cn('flex items-start gap-2.5 cursor-pointer', wrapperClassName)}\n >\n <Checkbox ref={ref} id={inputId} className={className} {...props} />\n <span className=\"flex flex-col gap-0.5 text-sm\">\n <span className=\"font-medium text-foreground\">{label}</span>\n {description && <span className=\"text-muted-foreground\">{description}</span>}\n </span>\n </label>\n );\n },\n);\nCheckboxField.displayName = 'CheckboxField';\n","import { forwardRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useId } from '../../hooks';\nimport { Radio, type RadioProps } from '../radio/Radio';\n\nexport interface RadioFieldProps extends Omit<RadioProps, 'children'> {\n label: ReactNode;\n description?: ReactNode;\n wrapperClassName?: string;\n}\n\n/**\n * Radio + right-side label + optional description, wrapped in a `<label>`.\n */\nexport const RadioField = forwardRef<HTMLInputElement, RadioFieldProps>(\n ({ label, description, id, wrapperClassName, className, ...props }, ref) => {\n const generated = useId();\n const inputId = id ?? generated;\n return (\n <label htmlFor={inputId} className={cn('flex items-start gap-2.5 cursor-pointer', wrapperClassName)}>\n <Radio ref={ref} id={inputId} className={className} {...props} />\n <span className=\"flex flex-col gap-0.5 text-sm\">\n <span className=\"font-medium text-foreground\">{label}</span>\n {description && <span className=\"text-muted-foreground\">{description}</span>}\n </span>\n </label>\n );\n },\n);\nRadioField.displayName = 'RadioField';\n","import { forwardRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useId } from '../../hooks';\nimport { Switch, type SwitchProps } from '../switch/Switch';\n\nexport interface SwitchFieldProps extends Omit<SwitchProps, 'children'> {\n label: ReactNode;\n description?: ReactNode;\n /** Place the switch on the left (default) or right of the label. */\n side?: 'left' | 'right';\n wrapperClassName?: string;\n}\n\n/**\n * Switch + label + optional description in a single clickable `<label>`.\n * `side=\"right\"` is the common settings-row pattern (label left, switch right).\n */\nexport const SwitchField = forwardRef<HTMLInputElement, SwitchFieldProps>(\n ({ label, description, side = 'left', id, wrapperClassName, className, ...props }, ref) => {\n const generated = useId();\n const inputId = id ?? generated;\n const text = (\n <span className=\"flex flex-col gap-0.5 text-sm\">\n <span className=\"font-medium text-foreground\">{label}</span>\n {description && <span className=\"text-muted-foreground\">{description}</span>}\n </span>\n );\n return (\n <label\n htmlFor={inputId}\n className={cn(\n 'flex cursor-pointer items-start gap-3',\n side === 'right' && 'flex-row-reverse justify-between',\n wrapperClassName,\n )}\n >\n <Switch ref={ref} id={inputId} className={className} {...props} />\n {text}\n </label>\n );\n },\n);\nSwitchField.displayName = 'SwitchField';\n","import { Children, cloneElement, forwardRef, isValidElement, type HTMLAttributes, type ReactElement, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Fieldset } from '../fieldset/Fieldset';\nimport { Legend } from '../legend/Legend';\nimport type { CheckboxFieldProps } from '../checkboxField/CheckboxField';\n\ninterface CheckboxGroupProps extends Omit<HTMLAttributes<HTMLFieldSetElement>, 'onChange'> {\n /** Group legend (label-equivalent for fieldset). */\n legend?: ReactNode;\n /** Selected values (controlled). */\n value?: string[];\n /** Initial values (uncontrolled). */\n defaultValue?: string[];\n /** Fires whenever selection changes. */\n onValueChange?: (next: string[]) => void;\n /** Disable the whole group. */\n isDisabled?: boolean;\n /** Layout direction. Default `vertical`. */\n orientation?: 'horizontal' | 'vertical';\n /** `<CheckboxField>` children with `value=\"…\"` attached. */\n children: ReactNode;\n}\n\ninterface ChildLike extends CheckboxFieldProps {\n value?: string;\n}\n\n/**\n * Multi-select group of `CheckboxField` children. Each child must declare a\n * `value` prop the group uses to track selection.\n */\nexport const CheckboxGroup = forwardRef<HTMLFieldSetElement, CheckboxGroupProps>(\n (\n {\n legend,\n value,\n defaultValue,\n onValueChange,\n isDisabled,\n orientation = 'vertical',\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const [selected, setSelected] = useControlled<string[]>({\n controlled: value,\n default: defaultValue ?? [],\n onChange: onValueChange,\n });\n\n const toggle = (v: string | undefined) => {\n if (v === undefined) return;\n setSelected(selected.includes(v) ? selected.filter((x) => x !== v) : [...selected, v]);\n };\n\n return (\n <Fieldset ref={ref} disabled={isDisabled} className={cn(className)} {...props}>\n {legend && <Legend>{legend}</Legend>}\n <div className={cn('flex gap-3', orientation === 'vertical' ? 'flex-col' : 'flex-row flex-wrap')}>\n {Children.map(children, (child) => {\n if (!isValidElement(child)) return child;\n const c = child as ReactElement<ChildLike>;\n const v = c.props.value;\n return cloneElement(c, {\n checked: v !== undefined && selected.includes(v),\n onChange: () => toggle(v),\n } as Partial<ChildLike>);\n })}\n </div>\n </Fieldset>\n );\n },\n);\nCheckboxGroup.displayName = 'CheckboxGroup';\n\nexport type { CheckboxGroupProps };\n","import { Children, cloneElement, forwardRef, isValidElement, useId, type HTMLAttributes, type ReactElement, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Fieldset } from '../fieldset/Fieldset';\nimport { Legend } from '../legend/Legend';\nimport type { RadioFieldProps } from '../radioField/RadioField';\n\ninterface RadioGroupProps extends Omit<HTMLAttributes<HTMLFieldSetElement>, 'onChange' | 'defaultValue'> {\n legend?: ReactNode;\n /** Shared `name` (required for native radio behavior). Auto-generated if omitted. */\n name?: string;\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (next: string | null) => void;\n isDisabled?: boolean;\n orientation?: 'horizontal' | 'vertical';\n children: ReactNode;\n}\n\ninterface ChildLike extends RadioFieldProps {\n value?: string;\n}\n\n/**\n * Mutex group of `RadioField` children. Single-value selection; auto-generates\n * a shared `name` if not provided.\n */\nexport const RadioGroup = forwardRef<HTMLFieldSetElement, RadioGroupProps>(\n (\n {\n legend,\n name,\n value,\n defaultValue,\n onValueChange,\n isDisabled,\n orientation = 'vertical',\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const generatedName = useId();\n const groupName = name ?? generatedName;\n const [selected, setSelected] = useControlled<string | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange: onValueChange,\n });\n\n return (\n <Fieldset ref={ref} disabled={isDisabled} className={cn(className)} {...props}>\n {legend && <Legend>{legend}</Legend>}\n <div className={cn('flex gap-3', orientation === 'vertical' ? 'flex-col' : 'flex-row flex-wrap')}>\n {Children.map(children, (child) => {\n if (!isValidElement(child)) return child;\n const c = child as ReactElement<ChildLike>;\n const v = c.props.value;\n return cloneElement(c, {\n name: groupName,\n checked: v !== undefined && selected === v,\n onChange: () => setSelected(v ?? null),\n } as Partial<ChildLike>);\n })}\n </div>\n </Fieldset>\n );\n },\n);\nRadioGroup.displayName = 'RadioGroup';\n\nexport type { RadioGroupProps };\n","import {\n forwardRef,\n useImperativeHandle,\n useRef,\n type ComponentPropsWithoutRef,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { inputBaseVariants } from '../InputStyles';\n\nexport interface PinInputProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'onChange'> {\n /** Number of digit cells. Default 6. */\n length?: number;\n /** Controlled value (full string). */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n /** Fires whenever the value changes. */\n onValueChange?: (value: string) => void;\n /** Fires when the user fills the final cell. */\n onComplete?: (value: string) => void;\n /** Restrict to digits (`numeric`) or any single char (`alphanumeric`). Default `numeric`. */\n type?: 'numeric' | 'alphanumeric';\n /** Cell visual size. Default `md`. */\n size?: 'sm' | 'md' | 'lg';\n /** Render each cell as `*` (good for verification codes). */\n mask?: boolean;\n isDisabled?: boolean;\n}\n\nconst SIZE: Record<NonNullable<PinInputProps['size']>, string> = {\n sm: 'h-9 w-9 text-base',\n md: 'h-11 w-11 text-lg',\n lg: 'h-14 w-14 text-xl',\n};\n\n/**\n * One-time-code / PIN input — N single-character cells with auto-advance,\n * paste-spread, and backspace-to-previous behavior.\n */\nexport const PinInput = forwardRef<HTMLDivElement, PinInputProps>(\n (\n {\n length = 6,\n value,\n defaultValue,\n onValueChange,\n onComplete,\n type = 'numeric',\n size = 'md',\n mask,\n isDisabled,\n className,\n ...props\n },\n ref,\n ) => {\n const [val, setVal] = useControlled({\n controlled: value,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const cells = Array.from({ length }, (_, i) => val[i] ?? '');\n const inputs = useRef<(HTMLInputElement | null)[]>([]);\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n useImperativeHandle(ref, () => wrapperRef.current as HTMLDivElement);\n\n const isAllowed = (ch: string) =>\n type === 'numeric' ? /^[0-9]$/.test(ch) : /^[A-Za-z0-9]$/.test(ch);\n\n const update = (next: string) => {\n const trimmed = next.slice(0, length);\n setVal(trimmed);\n if (trimmed.length === length) onComplete?.(trimmed);\n };\n\n const handleChange = (i: number, raw: string) => {\n const ch = raw.slice(-1);\n if (ch && !isAllowed(ch)) return;\n const arr = cells.slice();\n arr[i] = ch;\n const next = arr.join('').slice(0, length);\n update(next);\n if (ch && i < length - 1) inputs.current[i + 1]?.focus();\n };\n\n const handleKeyDown = (i: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && !cells[i] && i > 0) {\n inputs.current[i - 1]?.focus();\n } else if (e.key === 'ArrowLeft' && i > 0) {\n e.preventDefault();\n inputs.current[i - 1]?.focus();\n } else if (e.key === 'ArrowRight' && i < length - 1) {\n e.preventDefault();\n inputs.current[i + 1]?.focus();\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pasted = e.clipboardData.getData('text').replace(/\\s+/g, '');\n const filtered = pasted.split('').filter(isAllowed).join('');\n if (filtered) {\n e.preventDefault();\n update(filtered);\n const focusIdx = Math.min(filtered.length, length - 1);\n inputs.current[focusIdx]?.focus();\n }\n };\n\n return (\n <div ref={wrapperRef} className={cn('inline-flex gap-2', className)} {...props}>\n {cells.map((ch, i) => (\n <input\n key={i}\n ref={(el) => {\n inputs.current[i] = el;\n }}\n type={mask ? 'password' : 'text'}\n inputMode={type === 'numeric' ? 'numeric' : 'text'}\n autoComplete=\"one-time-code\"\n maxLength={1}\n disabled={isDisabled}\n value={ch}\n onChange={(e) => handleChange(i, e.target.value)}\n onKeyDown={(e) => handleKeyDown(i, e)}\n onPaste={handlePaste}\n className={cn(\n inputBaseVariants({ state: 'default' }),\n 'text-center font-medium',\n SIZE[size],\n )}\n />\n ))}\n </div>\n );\n },\n);\nPinInput.displayName = 'PinInput';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\nexport interface MaskedInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'value' | 'defaultValue' | 'onChange'>,\n InputBaseVariants {\n /** Mask pattern. `#` = digit, `A` = alpha, `*` = alphanumeric, anything else = literal. */\n mask: string;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n}\n\nfunction applyMask(raw: string, mask: string): string {\n let out = '';\n let r = 0;\n for (let m = 0; m < mask.length && r < raw.length; m++) {\n const tok = mask[m];\n const ch = raw[r];\n if (!tok || !ch) break;\n if (tok === '#') {\n if (/[0-9]/.test(ch)) {\n out += ch;\n r++;\n } else {\n r++;\n m--;\n }\n } else if (tok === 'A') {\n if (/[A-Za-z]/.test(ch)) {\n out += ch;\n r++;\n } else {\n r++;\n m--;\n }\n } else if (tok === '*') {\n if (/[A-Za-z0-9]/.test(ch)) {\n out += ch;\n r++;\n } else {\n r++;\n m--;\n }\n } else {\n // literal\n out += tok;\n if (ch === tok) r++;\n }\n }\n return out;\n}\n\n/**\n * Text input with a simple character-class mask. Tokens: `#` digit, `A`\n * letter, `*` alphanumeric. Anything else is a literal that's auto-inserted.\n *\n * Examples: `\"###-###-####\"` (US phone), `\"##/##/####\"` (date), `\"AAA-####\"`.\n */\nexport const MaskedInput = forwardRef<HTMLInputElement, MaskedInputProps>(\n (\n { className, size, state, mask, value, defaultValue, onValueChange, id, disabled, required, readOnly, ...props },\n ref,\n ) => {\n const ctx = useFormControl();\n const finalState = state ?? (ctx?.isInvalid ? 'invalid' : 'default');\n const [val, setVal] = useControlled({\n controlled: value,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n return (\n <input\n ref={ref}\n type=\"text\"\n value={val}\n onChange={(e) => setVal(applyMask(e.target.value, mask))}\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n readOnly={readOnly ?? ctx?.isReadOnly}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n className={cn(inputBaseVariants({ size, state: finalState }), className)}\n {...props}\n />\n );\n },\n);\nMaskedInput.displayName = 'MaskedInput';\n","import { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport { NumberInput, type NumberInputProps } from '../numberInput/NumberInput';\n\nexport interface CurrencyInputProps extends Omit<NumberInputProps, 'children'> {\n /** Currency symbol or 3-letter code displayed as a prefix. Default `\"$\"`. */\n symbol?: string;\n}\n\n/**\n * `NumberInput` with a leading currency symbol. Symbol shown as a non-input\n * decoration (input value is the bare number).\n */\nexport const CurrencyInput = forwardRef<HTMLInputElement, CurrencyInputProps>(\n ({ symbol = '$', className, ...props }, ref) => (\n <div className={cn('relative', className)}>\n <span className=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-sm text-muted-foreground\">\n {symbol}\n </span>\n <NumberInput ref={ref} {...props} className=\"pl-7\" />\n </div>\n ),\n);\nCurrencyInput.displayName = 'CurrencyInput';\n","import { forwardRef } from 'react';\nimport { cn } from '../../utils';\nimport { NumberInput, type NumberInputProps } from '../numberInput/NumberInput';\n\nexport type PercentInputProps = Omit<NumberInputProps, 'children'>;\n\n/**\n * `NumberInput` with a trailing `%` decoration. Input value remains the\n * bare number (interpret as 0–100 in your form).\n */\nexport const PercentInput = forwardRef<HTMLInputElement, PercentInputProps>(\n ({ className, ...props }, ref) => (\n <div className={cn('relative', className)}>\n <NumberInput ref={ref} {...props} className=\"pr-16\" />\n <span className=\"pointer-events-none absolute right-12 top-1/2 -translate-y-1/2 text-sm text-muted-foreground\">\n %\n </span>\n </div>\n ),\n);\nPercentInput.displayName = 'PercentInput';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface CharacterCountProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** Current length. */\n value: number;\n /** Maximum allowed length (also flips text to destructive when exceeded). */\n max: number;\n /** Show as `current / max` (default) or just `current`. */\n showMax?: boolean;\n}\n\n/**\n * Counter for character-limited fields. Drop in below a Textarea / Input.\n * Goes destructive once `value > max`.\n */\nexport const CharacterCount = forwardRef<HTMLDivElement, CharacterCountProps>(\n ({ value, max, showMax = true, className, ...props }, ref) => {\n const over = value > max;\n return (\n <div\n ref={ref}\n aria-live=\"polite\"\n className={cn(\n 'text-right text-xs',\n over ? 'text-destructive' : 'text-muted-foreground',\n className,\n )}\n {...props}\n >\n {value}{showMax && ` / ${max}`}\n </div>\n );\n },\n);\nCharacterCount.displayName = 'CharacterCount';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface InputAddonProps extends ComponentPropsWithoutRef<'div'> {\n /** Element rendered to the left of the input (e.g. \"https://\"). */\n leading?: ReactNode;\n /** Element rendered to the right of the input (e.g. \".com\"). */\n trailing?: ReactNode;\n /** The input element (TextInput, EmailInput, etc.). */\n children: ReactNode;\n}\n\n/**\n * Wrap any input with leading and/or trailing addon slots — visually\n * connected to the input border. Common for protocol prefixes, units,\n * suffixes (\"https://\", \".com\", \"kg\").\n */\nexport const InputAddon = forwardRef<HTMLDivElement, InputAddonProps>(\n ({ leading, trailing, children, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'inline-flex w-full items-stretch [&>*]:rounded-none',\n '[&>*:first-child]:rounded-l-md [&>*:last-child]:rounded-r-md',\n '[&>*:not(:first-child)]:-ml-px',\n className,\n )}\n {...props}\n >\n {leading && (\n <span className=\"inline-flex shrink-0 items-center border border-input bg-muted px-3 text-sm text-muted-foreground\">\n {leading}\n </span>\n )}\n {children}\n {trailing && (\n <span className=\"inline-flex shrink-0 items-center border border-input bg-muted px-3 text-sm text-muted-foreground\">\n {trailing}\n </span>\n )}\n </div>\n ),\n);\nInputAddon.displayName = 'InputAddon';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface InputGroupProps extends ComponentPropsWithoutRef<'div'> {\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Visually joins a row/column of inputs (TextInput, NumberInput, etc.)\n * — collapses inner radii so they read as one connected control. Mirror\n * of `actions/ButtonGroup`.\n */\nexport const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(\n ({ orientation = 'horizontal', className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'inline-flex w-full',\n orientation === 'horizontal' ? 'flex-row' : 'flex-col',\n orientation === 'horizontal'\n ? '[&>*]:rounded-none [&>*:first-child]:rounded-l-md [&>*:last-child]:rounded-r-md [&>*:not(:first-child)]:-ml-px'\n : '[&>*]:rounded-none [&>*:first-child]:rounded-t-md [&>*:last-child]:rounded-b-md [&>*:not(:first-child)]:-mt-px',\n className,\n )}\n {...props}\n />\n ),\n);\nInputGroup.displayName = 'InputGroup';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useId } from '../../hooks';\nimport { Label } from '../label/Label';\n\nexport interface LabeledInputProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n label: ReactNode;\n /** The input element. Receives a generated `id` linked to the label. */\n children: React.ReactElement<{ id?: string }>;\n /** Optional inline-end label (e.g. \"Optional\"). */\n trailing?: ReactNode;\n}\n\n/**\n * Lighter alternative to `FormField` — just `Label` + control, no helper /\n * error / context wiring. Good for compact inline forms.\n */\nexport const LabeledInput = forwardRef<HTMLDivElement, LabeledInputProps>(\n ({ label, children, trailing, className, ...props }, ref) => {\n const generated = useId();\n const id = children.props.id ?? generated;\n return (\n <div ref={ref} className={cn('flex flex-col gap-1.5', className)} {...props}>\n <div className=\"flex items-center justify-between\">\n <Label htmlFor={id}>{label}</Label>\n {trailing && <span className=\"text-xs text-muted-foreground\">{trailing}</span>}\n </div>\n {React.cloneElement(children, { id })}\n </div>\n );\n },\n);\nLabeledInput.displayName = 'LabeledInput';\n\nimport * as React from 'react';\n","import { forwardRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport { useId } from '../../hooks';\nimport { Radio, type RadioProps } from '../radio/Radio';\n\nexport interface ChoiceCardProps extends Omit<RadioProps, 'children' | 'size'> {\n label: ReactNode;\n description?: ReactNode;\n /** Optional icon rendered above the label. */\n icon?: ReactNode;\n /** Card size. Default `md`. */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst SIZE: Record<NonNullable<ChoiceCardProps['size']>, string> = {\n sm: 'p-3 text-xs',\n md: 'p-4 text-sm',\n lg: 'p-5 text-base',\n};\n\n/**\n * Radio styled as a clickable card with title + description + optional\n * icon. Common for plan/option pickers. Compose inside `RadioGroup` for\n * mutex selection.\n */\nexport const ChoiceCard = forwardRef<HTMLInputElement, ChoiceCardProps>(\n ({ label, description, icon, size = 'md', id, className, ...props }, ref) => {\n const generated = useId();\n const inputId = id ?? generated;\n return (\n <label\n htmlFor={inputId}\n className={cn(\n 'group relative block cursor-pointer rounded-lg border border-input bg-card text-card-foreground transition-colors',\n 'hover:border-border-strong has-[:checked]:border-primary has-[:checked]:bg-primary-soft/30',\n 'has-[:focus-visible]:ring-2 has-[:focus-visible]:ring-ring',\n SIZE[size],\n className,\n )}\n >\n <Radio ref={ref} id={inputId} className=\"absolute right-3 top-3\" {...props} />\n <div className=\"flex items-start gap-3 pr-7\">\n {icon && <span className=\"text-muted-foreground\">{icon}</span>}\n <div className=\"min-w-0 flex-1\">\n <div className=\"font-medium text-foreground\">{label}</div>\n {description && <div className=\"mt-0.5 text-muted-foreground\">{description}</div>}\n </div>\n </div>\n </label>\n );\n },\n);\nChoiceCard.displayName = 'ChoiceCard';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface PasswordStrengthProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** The password to measure. */\n value: string;\n /** Override the score (0–4). When set, internal scoring is bypassed. */\n score?: 0 | 1 | 2 | 3 | 4;\n /** Hide the textual label under the bar. */\n hideLabel?: boolean;\n}\n\nconst LABELS = ['Too weak', 'Weak', 'Fair', 'Strong', 'Excellent'];\nconst TONE = ['bg-destructive', 'bg-destructive', 'bg-warning', 'bg-success', 'bg-success'];\n\nfunction scorePassword(pw: string): 0 | 1 | 2 | 3 | 4 {\n let score = 0;\n if (pw.length >= 8) score++;\n if (pw.length >= 12) score++;\n if (/[a-z]/.test(pw) && /[A-Z]/.test(pw)) score++;\n if (/\\d/.test(pw)) score++;\n if (/[^A-Za-z0-9]/.test(pw)) score++;\n return Math.min(4, score) as 0 | 1 | 2 | 3 | 4;\n}\n\n/**\n * Strength meter for password fields. Naive rule-based scoring 0–4. Pass\n * `score` to override (e.g. drive from `zxcvbn`).\n */\nexport const PasswordStrength = forwardRef<HTMLDivElement, PasswordStrengthProps>(\n ({ value, score, hideLabel, className, ...props }, ref) => {\n const s: 0 | 1 | 2 | 3 | 4 = score ?? (value.length === 0 ? 0 : scorePassword(value));\n const label = LABELS[s] ?? '';\n const tone = TONE[s] ?? 'bg-destructive';\n return (\n <div ref={ref} className={cn('flex flex-col gap-1', className)} {...props}>\n <div className=\"flex gap-1\" aria-hidden=\"true\">\n {[0, 1, 2, 3].map((i) => (\n <div\n key={i}\n className={cn(\n 'h-1 flex-1 rounded-full bg-muted transition-colors',\n i < s && tone,\n )}\n />\n ))}\n </div>\n {!hideLabel && value && (\n <div className=\"text-xs text-muted-foreground\">{label}</div>\n )}\n </div>\n );\n },\n);\nPasswordStrength.displayName = 'PasswordStrength';\n","import { forwardRef, useImperativeHandle, useRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { Upload } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\nexport interface FilePickerProps extends Omit<ComponentPropsWithoutRef<'input'>, 'type' | 'value' | 'onChange' | 'size'> {\n /** Button label. Default `\"Choose file\"`. */\n label?: ReactNode;\n /** Fires with the chosen FileList when files are picked. */\n onFilesChange?: (files: FileList | null) => void;\n /** Filename(s) preview rendered next to the button. Pass `null` to hide. */\n preview?: ReactNode;\n /** Visual size of the button. Default `md`. */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst SIZE: Record<NonNullable<FilePickerProps['size']>, string> = {\n sm: 'h-8 px-3 text-sm',\n md: 'h-10 px-4 text-sm',\n lg: 'h-12 px-6 text-base',\n};\n\n/**\n * Basic file picker — styled trigger button + visually-hidden native\n * `<input type=\"file\">`. For drag-drop / preview / progress, use the L5\n * `Dropzone` organism (planned).\n */\nexport const FilePicker = forwardRef<HTMLInputElement, FilePickerProps>(\n ({ label = 'Choose file', onFilesChange, preview, size = 'md', className, disabled, ...props }, ref) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle(ref, () => inputRef.current as HTMLInputElement);\n return (\n <div className={cn('inline-flex items-center gap-3', className)}>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => inputRef.current?.click()}\n className={cn(\n 'inline-flex items-center gap-2 rounded-md border border-input bg-background font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n SIZE[size],\n )}\n >\n <Icon icon={Upload} size={16} />\n {label}\n </button>\n <input\n ref={inputRef}\n type=\"file\"\n disabled={disabled}\n className=\"sr-only\"\n onChange={(e) => onFilesChange?.(e.target.files)}\n {...props}\n />\n {preview && <span className=\"truncate text-sm text-muted-foreground\">{preview}</span>}\n </div>\n );\n },\n);\nFilePicker.displayName = 'FilePicker';\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ForwardedRef,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { Check } from 'lucide-react';\nimport { cn, surfaceVariants, type SurfaceVariants } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n listboxEmptyVariants,\n listboxGroupLabelVariants,\n listboxItemVariants,\n listboxSeparatorVariants,\n listboxVariants,\n} from './Listbox.variants';\n\n/** Represents a function that matches items against the current selection. */\nexport type EqualityFn<T> = (a: T, b: T) => boolean;\n\n/** Provides the default equality (Object.is) — primitives + reference equality. */\nconst defaultEquals: EqualityFn<unknown> = (a, b) => Object.is(a, b);\n\n/** Represents the selection-indicator style applied to every item under this listbox. */\nexport type ListboxIndicator = 'check' | 'checkbox' | 'radio' | 'dot' | 'none';\n\n/** Represents the per-item registry entry maintained by the listbox. */\ninterface ItemEntry {\n id: string;\n value: unknown;\n disabled: boolean;\n}\n\n/** Represents the shape of the listbox context shared with descendants. */\ninterface ListboxContextValue {\n multiple: boolean;\n values: unknown[];\n isEqual: EqualityFn<unknown>;\n activeId: string | null;\n onItemSelect: (value: unknown) => void;\n registerItem: (entry: ItemEntry) => void;\n unregisterItem: (id: string) => void;\n setActiveId: (id: string | null) => void;\n indicator: ListboxIndicator;\n}\n\nconst ListboxContext = createContext<ListboxContextValue | null>(null);\n\nfunction useListboxContext() {\n const ctx = useContext(ListboxContext);\n if (!ctx) throw new Error('Listbox.Item / Group / Separator must be used inside <Listbox>');\n return ctx;\n}\n\ntype SingleProps<T> = {\n multiple?: false;\n value?: T;\n defaultValue?: T;\n onValueChange?: (value: T | undefined) => void;\n};\n\ntype MultiProps<T> = {\n multiple: true;\n value?: T[];\n defaultValue?: T[];\n onValueChange?: (value: T[]) => void;\n};\n\n/** Represents the props shared between single-select and multi-select modes. */\ntype CommonProps<T> = SurfaceVariants & {\n /** Disables all items when true. */\n disabled?: boolean;\n /** Compares item values for equality; defaults to `Object.is`. */\n isEqual?: EqualityFn<T>;\n /** Sets the selection-indicator style; default `check` (single) or `checkbox` (multi). */\n indicator?: ListboxIndicator;\n className?: string;\n children: ReactNode;\n};\n\nexport type ListboxProps<T = string> = Omit<\n HTMLAttributes<HTMLDivElement>,\n 'defaultValue' | 'onChange'\n> &\n (SingleProps<T> | MultiProps<T>) &\n CommonProps<T>;\n\nfunction ListboxImpl<T>(\n props: ListboxProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n): ReactElement {\n const {\n multiple = false,\n value,\n defaultValue,\n onValueChange,\n isEqual,\n indicator,\n variant,\n tone,\n radius,\n padding,\n elevation,\n disabled,\n className,\n children,\n onKeyDown,\n ...rest\n } = props as ListboxProps<T> & {\n multiple?: boolean;\n value?: T | T[];\n defaultValue?: T | T[];\n onValueChange?: ((v: T | undefined) => void) | ((v: T[]) => void);\n };\n\n const equals = (isEqual as EqualityFn<unknown> | undefined) ?? defaultEquals;\n const resolvedIndicator: ListboxIndicator = indicator ?? (multiple ? 'checkbox' : 'check');\n\n const initial: T | T[] | undefined = defaultValue ?? (multiple ? ([] as T[]) : undefined);\n const [current, setCurrent] = useControlled<T | T[] | undefined>({\n controlled: value,\n default: initial,\n onChange: onValueChange as (v: T | T[] | undefined) => void,\n });\n\n const values: unknown[] = useMemo(() => {\n if (Array.isArray(current)) return current as unknown[];\n return current === undefined ? [] : [current];\n }, [current]);\n\n const items = useRef<ItemEntry[]>([]);\n const [activeId, setActiveId] = useState<string | null>(null);\n\n const registerItem = useCallback((entry: ItemEntry) => {\n const idx = items.current.findIndex((i) => i.id === entry.id);\n if (idx >= 0) items.current[idx] = entry;\n else items.current.push(entry);\n }, []);\n\n const unregisterItem = useCallback((id: string) => {\n items.current = items.current.filter((i) => i.id !== id);\n }, []);\n\n const onItemSelect = useCallback(\n (next: unknown) => {\n if (multiple) {\n const cur = (Array.isArray(current) ? current : []) as unknown[];\n const has = cur.some((v) => equals(v, next));\n const out = has ? cur.filter((v) => !equals(v, next)) : [...cur, next];\n (setCurrent as (v: unknown[]) => void)(out);\n } else {\n (setCurrent as (v: unknown) => void)(next);\n }\n },\n [multiple, current, setCurrent, equals],\n );\n\n useEffect(() => {\n if (activeId) return;\n const firstSelected = items.current.find(\n (i) => !i.disabled && values.some((v) => equals(v, i.value)),\n );\n const firstEnabled = items.current.find((i) => !i.disabled);\n setActiveId((firstSelected ?? firstEnabled)?.id ?? null);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const moveActive = useCallback(\n (direction: 1 | -1, jump = 1) => {\n const list = items.current.filter((i) => !i.disabled);\n if (list.length === 0) return;\n const currentIdx = list.findIndex((i) => i.id === activeId);\n let nextIdx = currentIdx + direction * jump;\n if (currentIdx === -1) nextIdx = direction === 1 ? 0 : list.length - 1;\n if (nextIdx < 0) nextIdx = 0;\n if (nextIdx >= list.length) nextIdx = list.length - 1;\n const nextEntry = list[nextIdx];\n if (nextEntry) setActiveId(nextEntry.id);\n },\n [activeId],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented || disabled) return;\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n moveActive(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n moveActive(-1);\n break;\n case 'Home':\n event.preventDefault();\n moveActive(-1, items.current.length);\n break;\n case 'End':\n event.preventDefault();\n moveActive(1, items.current.length);\n break;\n case 'PageDown':\n event.preventDefault();\n moveActive(1, 10);\n break;\n case 'PageUp':\n event.preventDefault();\n moveActive(-1, 10);\n break;\n case 'Enter':\n case ' ': {\n if (!activeId) return;\n const entry = items.current.find((i) => i.id === activeId);\n if (!entry || entry.disabled) return;\n event.preventDefault();\n onItemSelect(entry.value);\n break;\n }\n }\n },\n [activeId, disabled, moveActive, onItemSelect, onKeyDown],\n );\n\n const ctx = useMemo<ListboxContextValue>(\n () => ({\n multiple,\n values,\n isEqual: equals,\n activeId,\n onItemSelect,\n registerItem,\n unregisterItem,\n setActiveId,\n indicator: resolvedIndicator,\n }),\n [\n multiple,\n values,\n equals,\n activeId,\n onItemSelect,\n registerItem,\n unregisterItem,\n resolvedIndicator,\n ],\n );\n\n /* Default padding is `xs` (p-1) for items breathing room — overridable. */\n const resolvedPadding = padding ?? 'xs';\n\n return (\n <ListboxContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"listbox\"\n tabIndex={disabled ? -1 : 0}\n aria-multiselectable={multiple || undefined}\n aria-activedescendant={activeId ?? undefined}\n aria-disabled={disabled || undefined}\n onKeyDown={handleKeyDown}\n className={cn(\n surfaceVariants({ variant, tone, radius, padding: resolvedPadding, elevation }),\n listboxVariants(),\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </ListboxContext.Provider>\n );\n}\n\nconst ListboxForwardRef = forwardRef(ListboxImpl) as <T = string>(\n props: ListboxProps<T> & { ref?: Ref<HTMLDivElement> },\n) => ReactElement;\n\n/* ---------- Indicator visuals ---------- */\n\n/** Provides the leading selection indicator (checkbox · radio · dot). */\nfunction LeadingIndicator({\n indicator,\n isSelected,\n}: {\n indicator: ListboxIndicator;\n isSelected: boolean;\n}) {\n if (indicator === 'checkbox') {\n return (\n <span\n aria-hidden\n className={cn(\n 'flex h-4 w-4 shrink-0 items-center justify-center rounded-sm border',\n isSelected\n ? 'border-primary bg-primary text-primary-foreground'\n : 'border-border',\n )}\n >\n {isSelected && <Check className=\"h-3 w-3\" />}\n </span>\n );\n }\n if (indicator === 'radio') {\n return (\n <span\n aria-hidden\n className={cn(\n 'flex h-4 w-4 shrink-0 items-center justify-center rounded-full border',\n isSelected ? 'border-primary' : 'border-border',\n )}\n >\n {isSelected && <span className=\"h-2 w-2 rounded-full bg-primary\" />}\n </span>\n );\n }\n if (indicator === 'dot') {\n return (\n <span\n aria-hidden\n className={cn(\n 'h-1.5 w-1.5 shrink-0 rounded-full',\n isSelected ? 'bg-primary' : 'bg-transparent',\n )}\n />\n );\n }\n return null;\n}\n\n/** Provides the trailing selection indicator (check icon). */\nfunction TrailingIndicator({\n indicator,\n isSelected,\n multiple,\n}: {\n indicator: ListboxIndicator;\n isSelected: boolean;\n multiple: boolean;\n}) {\n if (indicator === 'check' && isSelected) {\n return <Check className={cn('h-4 w-4 shrink-0', !multiple && 'opacity-80')} />;\n }\n return null;\n}\n\n/* ---------- Item ---------- */\n\n/** Represents the prop surface of `Listbox.Item`. */\nexport interface ListboxItemProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Holds the item value; compared via the parent listbox's `isEqual`. */\n value: unknown;\n /** Disables this item when true. */\n disabled?: boolean;\n /** Overrides the listbox-level indicator for this single item. */\n indicator?: ListboxIndicator;\n children: ReactNode;\n}\n\nexport const ListboxItem = forwardRef<HTMLDivElement, ListboxItemProps>(function ListboxItem(\n { value, disabled = false, indicator: itemIndicator, className, children, onClick, onPointerEnter, ...rest },\n forwardedRef,\n) {\n const ctx = useListboxContext();\n const id = useId();\n const ref = useRef<HTMLDivElement | null>(null);\n const indicator = itemIndicator ?? ctx.indicator;\n\n useEffect(() => {\n ctx.registerItem({ id, value, disabled });\n return () => ctx.unregisterItem(id);\n }, [ctx, id, value, disabled]);\n\n const isSelected = ctx.values.some((v) => ctx.isEqual(v, value));\n const isActive = ctx.activeId === id;\n const state = disabled\n ? 'disabled'\n : isSelected\n ? 'selected'\n : isActive\n ? 'active'\n : 'default';\n\n const setRefs = (node: HTMLDivElement | null) => {\n ref.current = node;\n if (typeof forwardedRef === 'function') forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n };\n\n return (\n <div\n ref={setRefs}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={disabled || undefined}\n data-active={isActive ? '' : undefined}\n data-selected={isSelected ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n ctx.onItemSelect(value);\n }}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n if (!disabled) ctx.setActiveId(id);\n }}\n className={cn(listboxItemVariants({ state }), className)}\n {...rest}\n >\n <LeadingIndicator indicator={indicator} isSelected={isSelected} />\n <span className=\"flex min-w-0 flex-1 items-center gap-2\">{children}</span>\n <TrailingIndicator indicator={indicator} isSelected={isSelected} multiple={ctx.multiple} />\n </div>\n );\n});\n\n/** Represents the prop surface of `Listbox.Group`. */\nexport interface ListboxGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Renders an optional group heading above the contained items. */\n label?: ReactNode;\n children: ReactNode;\n}\n\n/** Provides a labelled group wrapping a subset of items. */\nexport function ListboxGroup({ label, children, className, ...rest }: ListboxGroupProps) {\n const labelId = useId();\n return (\n <div role=\"group\" aria-labelledby={label ? labelId : undefined} className={className} {...rest}>\n {label && (\n <div id={labelId} className={listboxGroupLabelVariants()}>\n {label}\n </div>\n )}\n {children}\n </div>\n );\n}\n\n/** Provides a thin horizontal rule between groups of items. */\nexport function ListboxSeparator(props: HTMLAttributes<HTMLDivElement>) {\n return <div role=\"separator\" className={listboxSeparatorVariants()} {...props} />;\n}\n\n/** Provides the message shown when no items match (e.g., after search filter). */\nexport function ListboxEmpty({ children, className, ...rest }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div role=\"presentation\" className={cn(listboxEmptyVariants(), className)} {...rest}>\n {children}\n </div>\n );\n}\n\ntype ListboxComponent = (<T = string>(\n props: ListboxProps<T> & { ref?: Ref<HTMLDivElement> },\n) => ReactElement) & {\n Item: typeof ListboxItem;\n Group: typeof ListboxGroup;\n Separator: typeof ListboxSeparator;\n Empty: typeof ListboxEmpty;\n};\n\nconst Listbox = ListboxForwardRef as ListboxComponent;\nListbox.Item = ListboxItem;\nListbox.Group = ListboxGroup;\nListbox.Separator = ListboxSeparator;\nListbox.Empty = ListboxEmpty;\n\nexport { Listbox };\nexport default Listbox;\n","import { tv, type VariantProps } from '../../utils';\n\nexport const selectTriggerVariants = tv({\n base: 'flex w-full items-center justify-between gap-2 rounded-md border bg-popover text-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60 data-[state=open]:border-border-strong',\n variants: {\n size: {\n xs: 'h-7 gap-1.5 px-2.5 text-[11px]',\n sm: 'h-8 px-2.5 text-sm',\n md: 'h-10 px-3 text-sm',\n lg: 'h-12 px-4 text-base',\n },\n state: {\n default: 'border-input hover:border-border-strong',\n invalid: 'border-destructive focus-visible:ring-destructive',\n },\n },\n defaultVariants: {\n size: 'md',\n state: 'default',\n },\n});\n\nexport type SelectTriggerVariants = VariantProps<typeof selectTriggerVariants>;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { ChevronDown, X, Loader2 } from 'lucide-react';\nimport {\n cn,\n Equality,\n type EqualityComparer,\n type SurfaceVariants,\n} from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays';\nimport {\n Listbox,\n ListboxItem,\n ListboxGroup,\n ListboxSeparator,\n ListboxEmpty,\n} from '../listbox';\nimport { SearchInput } from '../searchInput';\nimport { selectTriggerVariants, type SelectTriggerVariants } from './Select.variants';\n\n/* ────────── Option model ────────── */\n\n/** Represents a single dropdown option as `{ itemKey, value, label }` — V defaults to K. */\nexport interface SelectOption<K, V = K> {\n itemKey: K;\n value: V;\n label: ReactNode;\n disabled?: boolean;\n}\n\n/** Represents an internal item-registry entry — option + plain-text for substring search. */\ninterface ItemRegistryEntry<K, V> {\n itemKey: K;\n value: V;\n label: ReactNode;\n text: string;\n}\n\n/* ────────── Context ────────── */\n\ninterface SelectContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n selectedKey: unknown;\n hasSelection: boolean;\n onSelect: (entry: ItemRegistryEntry<unknown, unknown>) => void;\n onClear: () => void;\n keyEquals: EqualityComparer<unknown>;\n items: Array<ItemRegistryEntry<unknown, unknown>>;\n registerItem: (entry: ItemRegistryEntry<unknown, unknown>) => void;\n unregisterItem: (itemKey: unknown) => void;\n query: string;\n setQuery: (q: string) => void;\n disabled: boolean;\n isLoading: boolean;\n clearable: boolean;\n serializeKey: (key: unknown) => string;\n name?: string;\n invalid?: boolean;\n}\n\nconst SelectContext = createContext<SelectContextValue | null>(null);\n\nfunction useSelectContext() {\n const ctx = useContext(SelectContext);\n if (!ctx) throw new Error('Select.* must be used inside <Select>');\n return ctx;\n}\n\n/* ────────── Root ────────── */\n\n/** Represents the prop surface of the `Select` root. */\nexport interface SelectProps<K, V = K> {\n /** Holds the selected key; `null` = explicit clear, `undefined` = uncontrolled. */\n selected?: K | null;\n /** Holds the initial selected key for uncontrolled use. */\n defaultSelected?: K | null;\n /** Fires when an item is picked or cleared (`null` on clear). */\n onChange?: (selected: SelectOption<K, V> | null) => void;\n /** Compares keys for equality; defaults to `Equality.strictEquals`. */\n keyEquals?: EqualityComparer<K>;\n /** Disables interaction when true. */\n disabled?: boolean;\n /** Shows a spinner in the trigger and blocks interaction. */\n isLoading?: boolean;\n /** Renders a clear (×) button in the trigger when a value is set. */\n clearable?: boolean;\n /** Names the hidden form input that ships the serialized key. */\n name?: string;\n /** Serializes the key for the hidden form input; defaults to `String(key)`. */\n serializeKey?: (key: K) => string;\n /** Styles the trigger as invalid (red border, error ring). */\n invalid?: boolean;\n /** Opens the dropdown initially when uncontrolled. */\n defaultOpen?: boolean;\n /** Controls the dropdown open state. */\n open?: boolean;\n /** Fires when the open state changes. */\n onOpenChange?: (open: boolean) => void;\n /** Sets the floating placement of the dropdown. */\n placement?: React.ComponentProps<typeof Popover>['placement'];\n children: ReactNode;\n}\n\nfunction SelectImpl<K, V = K>({\n selected,\n defaultSelected,\n onChange,\n keyEquals,\n disabled = false,\n isLoading = false,\n clearable = false,\n name,\n serializeKey,\n invalid,\n defaultOpen = false,\n open: openProp,\n onOpenChange,\n placement = 'bottom',\n children,\n}: SelectProps<K, V>): ReactElement {\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const [keyState, setKeyState] = useControlled<K | null>({\n controlled: selected,\n default: defaultSelected ?? null,\n /* Emits via `emitChange` below — needs both key + value, not just key. */\n onChange: undefined,\n });\n const [items, setItems] = useState<Array<ItemRegistryEntry<unknown, unknown>>>([]);\n const [query, setQuery] = useState('');\n\n /* Ref-stabilises consumer fns so they don't churn `useMemo` deps. */\n const keyEqualsRef = useRef(keyEquals);\n keyEqualsRef.current = keyEquals;\n const serializeKeyRef = useRef(serializeKey);\n serializeKeyRef.current = serializeKey;\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const keyEqualsFn = useCallback<EqualityComparer<unknown>>((a, b) => {\n const fn = keyEqualsRef.current as EqualityComparer<unknown> | undefined;\n return (fn ?? Equality.strictEquals)(a, b);\n }, []);\n\n const serializeKeyFn = useCallback((k: unknown) => {\n const fn = serializeKeyRef.current as ((k: unknown) => string) | undefined;\n return (fn ?? ((x) => String(x)))(k);\n }, []);\n\n const registerItem = useCallback(\n (entry: ItemRegistryEntry<unknown, unknown>) => {\n setItems((prev) => {\n const idx = prev.findIndex((p) => Object.is(p.itemKey, entry.itemKey));\n if (idx >= 0) {\n const existing = prev[idx];\n if (\n existing &&\n existing.label === entry.label &&\n existing.text === entry.text &&\n Object.is(existing.value, entry.value)\n ) {\n return prev;\n }\n const next = prev.slice();\n next[idx] = entry;\n return next;\n }\n return [...prev, entry];\n });\n },\n [],\n );\n\n const unregisterItem = useCallback((k: unknown) => {\n setItems((prev) => {\n const idx = prev.findIndex((p) => Object.is(p.itemKey, k));\n if (idx === -1) return prev;\n const next = prev.slice();\n next.splice(idx, 1);\n return next;\n });\n }, []);\n\n const emitChange = useCallback(\n (next: SelectOption<K, V> | null) => {\n onChangeRef.current?.(next);\n },\n [],\n );\n\n const onSelect = useCallback(\n (entry: ItemRegistryEntry<unknown, unknown>) => {\n (setKeyState as (v: unknown) => void)(entry.itemKey);\n setOpenState(false);\n setQuery('');\n emitChange({\n itemKey: entry.itemKey as K,\n value: entry.value as V,\n label: entry.label,\n });\n },\n [setKeyState, setOpenState, emitChange],\n );\n\n const onClear = useCallback(() => {\n (setKeyState as (v: unknown) => void)(null);\n emitChange(null);\n }, [setKeyState, emitChange]);\n\n const hasSelection = keyState !== null && keyState !== undefined;\n\n const ctx = useMemo<SelectContextValue>(\n () => ({\n open: openState,\n setOpen: setOpenState,\n selectedKey: keyState,\n hasSelection,\n onSelect,\n onClear,\n keyEquals: keyEqualsFn,\n items,\n registerItem,\n unregisterItem,\n query,\n setQuery,\n disabled,\n isLoading,\n clearable,\n serializeKey: serializeKeyFn,\n name,\n invalid,\n }),\n [\n openState,\n setOpenState,\n keyState,\n hasSelection,\n onSelect,\n onClear,\n keyEqualsFn,\n items,\n registerItem,\n unregisterItem,\n query,\n disabled,\n isLoading,\n clearable,\n serializeKeyFn,\n name,\n invalid,\n ],\n );\n\n return (\n <SelectContext.Provider value={ctx}>\n <Popover\n open={openState}\n onOpenChange={(o) => {\n setOpenState(o);\n if (!o) setQuery('');\n }}\n placement={placement}\n offset={4}\n >\n {children}\n </Popover>\n </SelectContext.Provider>\n );\n}\n\nconst Select = SelectImpl as (<K, V = K>(props: SelectProps<K, V>) => ReactElement) & {\n Trigger: typeof SelectTrigger;\n Value: typeof SelectValue;\n Content: typeof SelectContent;\n Item: typeof SelectItem;\n Group: typeof ListboxGroup;\n Separator: typeof ListboxSeparator;\n Empty: typeof ListboxEmpty;\n};\n\n/* ────────── Trigger ────────── */\n\n/** Contains the icon Tailwind classes per trigger size. */\nconst TRIGGER_ICON_CLASSES = {\n xs: 'h-3 w-3',\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n} as const;\n\n/** Contains the clear-button hit-box Tailwind classes per trigger size. */\nconst TRIGGER_CLEAR_BOX_CLASSES = {\n xs: 'h-4 w-4',\n sm: 'h-5 w-5',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n} as const;\n\n/** Contains the vertical-divider height Tailwind classes per trigger size. */\nconst TRIGGER_DIVIDER_CLASSES = {\n xs: 'h-3',\n sm: 'h-3.5',\n md: 'h-4',\n lg: 'h-5',\n} as const;\n\n/** Represents the prop surface of the `Select.Trigger`. */\nexport interface SelectTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>,\n SelectTriggerVariants {\n children?: ReactNode;\n}\n\nexport const SelectTrigger = forwardRef<HTMLButtonElement, SelectTriggerProps>(\n function SelectTrigger({ size, state, className, children, ...rest }, ref) {\n const ctx = useSelectContext();\n const triggerState = state ?? (ctx.invalid ? 'invalid' : 'default');\n const showClear =\n ctx.clearable && ctx.hasSelection && !ctx.isLoading && !ctx.disabled;\n const sizeKey = size ?? 'md';\n const iconClass = TRIGGER_ICON_CLASSES[sizeKey];\n const clearBoxClass = TRIGGER_CLEAR_BOX_CLASSES[sizeKey];\n const dividerClass = TRIGGER_DIVIDER_CLASSES[sizeKey];\n return (\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n disabled={ctx.disabled || ctx.isLoading}\n aria-busy={ctx.isLoading || undefined}\n className={cn(selectTriggerVariants({ size, state: triggerState }), className)}\n {...rest}\n >\n {children ?? <SelectValue />}\n <span className=\"ml-auto flex shrink-0 items-center gap-1.5\">\n {showClear && (\n <>\n <span\n role=\"button\"\n tabIndex={0}\n aria-label=\"Clear selection\"\n onClick={(e) => {\n e.stopPropagation();\n ctx.onClear();\n }}\n onPointerDown={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n ctx.onClear();\n }\n }}\n className={cn(\n 'grid place-items-center rounded-full text-subtle-foreground transition-colors hover:bg-muted hover:text-foreground',\n clearBoxClass,\n )}\n >\n <X className={iconClass} />\n </span>\n {/* Separates the clear button from the chevron — `foreground/20` always contrasts. */}\n <span aria-hidden className={cn('w-px bg-foreground/20', dividerClass)} />\n </>\n )}\n {ctx.isLoading ? (\n <Loader2 className={cn(iconClass, 'animate-spin text-subtle-foreground')} />\n ) : (\n <ChevronDown\n className={cn(\n iconClass,\n 'text-muted-foreground transition-transform',\n ctx.open && 'rotate-180',\n )}\n />\n )}\n </span>\n </button>\n </PopoverTrigger>\n );\n },\n);\n\n/* ────────── Value (label inside trigger) ────────── */\n\n/** Represents the prop surface of the `Select.Value`. */\nexport interface SelectValueProps {\n /** Shows when no item is selected. */\n placeholder?: ReactNode;\n /** Overrides the auto-resolved label (rendered as-is, no item lookup). */\n children?: ReactNode;\n}\n\n/** Provides the label shown inside the trigger for the currently selected item. */\nexport function SelectValue({ placeholder, children }: SelectValueProps) {\n const ctx = useSelectContext();\n if (children) return <span className=\"truncate\">{children}</span>;\n const match = ctx.hasSelection\n ? ctx.items.find((i) => ctx.keyEquals(i.itemKey, ctx.selectedKey))\n : undefined;\n const label =\n match?.label ?? (ctx.hasSelection ? ctx.serializeKey(ctx.selectedKey) : null);\n return (\n <span className={cn('truncate text-left', !label && 'text-subtle-foreground')}>\n {label ?? placeholder}\n </span>\n );\n}\n\n/* ────────── Content ────────── */\n\n/** Represents the prop surface of the `Select.Content`. */\nexport interface SelectContentProps extends SurfaceVariants {\n className?: string;\n /** Renders a search input above the items and filters by label substring. */\n searchable?: boolean;\n /** Sets the placeholder of the search input. */\n searchPlaceholder?: string;\n /** Renders this label when the search yields no matches. */\n noResultsLabel?: ReactNode;\n /** Locks the surface width to the trigger's width and truncates long items. */\n matchWidth?: boolean;\n children: ReactNode;\n}\n\n/** Provides the floating panel that hosts the items below the trigger. */\nexport function SelectContent({\n className,\n searchable = false,\n searchPlaceholder = 'Search…',\n noResultsLabel = 'No results',\n matchWidth = false,\n variant,\n tone,\n radius,\n padding,\n elevation,\n children,\n}: SelectContentProps) {\n const ctx = useSelectContext();\n const hasItems = ctx.items.length > 0;\n const visibleCount = ctx.query\n ? ctx.items.filter((i) => i.text.toLowerCase().includes(ctx.query.toLowerCase())).length\n : ctx.items.length;\n const showEmpty = hasItems && visibleCount === 0;\n\n return (\n <PopoverContent\n variant={variant}\n tone={tone}\n radius={radius}\n padding={padding ?? 'none'}\n elevation={elevation}\n className={cn(\n 'overflow-hidden',\n matchWidth\n ? 'w-(--anchor-width) [&_[role=option]>span.flex-1>:first-child]:truncate'\n : 'w-auto min-w-(--anchor-width)',\n className,\n )}\n >\n {searchable && (\n <div className=\"border-b border-border p-1\">\n <SearchInput\n size=\"sm\"\n autoFocus\n value={ctx.query}\n onChange={(e) => ctx.setQuery(e.target.value)}\n placeholder={searchPlaceholder}\n clearable\n onClear={() => ctx.setQuery('')}\n className=\"rounded-sm\"\n />\n </div>\n )}\n <Listbox<unknown>\n value={ctx.selectedKey ?? undefined}\n onValueChange={(k) => {\n if (k === null || k === undefined) return;\n const entry = ctx.items.find((i) => ctx.keyEquals(i.itemKey, k));\n if (entry) ctx.onSelect(entry);\n }}\n isEqual={ctx.keyEquals}\n variant=\"flat\"\n radius=\"none\"\n >\n {children}\n {showEmpty && <ListboxEmpty>{noResultsLabel}</ListboxEmpty>}\n </Listbox>\n {ctx.name && ctx.hasSelection && (\n <input type=\"hidden\" name={ctx.name} value={ctx.serializeKey(ctx.selectedKey)} />\n )}\n </PopoverContent>\n );\n}\n\n/* ────────── Item ────────── */\n\n/** Provides a plain-text representation of a ReactNode for substring search. */\nfunction extractText(node: ReactNode): string {\n if (node == null || typeof node === 'boolean') return '';\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(extractText).join(' ');\n if (typeof node === 'object' && 'props' in node) {\n const props = (node as { props?: { children?: ReactNode } }).props;\n return extractText(props?.children);\n }\n return '';\n}\n\n/** Represents the prop surface of the `Select.Item`. */\nexport interface SelectItemProps<K = unknown, V = K> {\n /** Identifies the item; drives equality, ARIA, and search. */\n itemKey: K;\n /** Holds the rich payload returned via `onChange`; defaults to `itemKey`. */\n value?: V;\n /** Shows in the trigger when this item is selected. */\n label: ReactNode;\n /** Overrides in-list rendering; falls back to `label` when omitted. */\n children?: ReactNode;\n /** Overrides the searchable text; defaults to the text content of `label`. */\n text?: string;\n /** Disables this item when true. */\n disabled?: boolean;\n className?: string;\n}\n\nexport const SelectItem = forwardRef<HTMLDivElement, SelectItemProps>(function SelectItem(\n { itemKey, value, label, children, text, disabled, className },\n ref,\n) {\n const ctx = useSelectContext();\n const { registerItem, query } = ctx;\n const resolvedValue = (value === undefined ? itemKey : value) as unknown;\n const itemText = useMemo(\n () => text ?? extractText(label) ?? extractText(children),\n [text, label, children],\n );\n\n /* Registers only — never unregisters; items unmount on popover close and the trigger still needs the label. */\n useEffect(() => {\n registerItem({ itemKey, value: resolvedValue, label, text: itemText });\n }, [registerItem, itemKey, resolvedValue, label, itemText]);\n\n const matchesQuery =\n !query || itemText.toLowerCase().includes(query.toLowerCase());\n if (!matchesQuery) return null;\n\n /* Listbox compares via the wired keyEquals — same equality math as Select. */\n return (\n <ListboxItem ref={ref} value={itemKey} disabled={disabled} className={className}>\n {children ?? label}\n </ListboxItem>\n );\n}) as <K, V = K>(props: SelectItemProps<K, V> & { ref?: React.Ref<HTMLDivElement> }) => ReactElement;\n\nSelect.Trigger = SelectTrigger;\nSelect.Value = SelectValue;\nSelect.Content = SelectContent;\nSelect.Item = SelectItem as typeof SelectItem & ((props: SelectItemProps) => ReactElement);\nSelect.Group = ListboxGroup;\nSelect.Separator = ListboxSeparator;\nSelect.Empty = ListboxEmpty;\n\nexport { Select };\nexport default Select;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { ChevronDown, X } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays';\nimport type { SurfaceVariants } from '../../utils';\nimport {\n Listbox,\n ListboxItem,\n ListboxGroup,\n ListboxSeparator,\n ListboxEmpty,\n} from '../listbox';\nimport { selectTriggerVariants, type SelectTriggerVariants } from '../select/Select.variants';\n\ninterface MultiSelectContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n values: string[];\n setValues: (values: string[]) => void;\n labels: Record<string, ReactNode>;\n registerLabel: (value: string, label: ReactNode) => void;\n unregisterLabel: (value: string) => void;\n disabled: boolean;\n name?: string;\n invalid?: boolean;\n}\n\nconst MultiSelectContext = createContext<MultiSelectContextValue | null>(null);\n\nfunction useMultiSelectContext() {\n const ctx = useContext(MultiSelectContext);\n if (!ctx) throw new Error('MultiSelect.* must be used inside <MultiSelect>');\n return ctx;\n}\n\nexport interface MultiSelectProps {\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n disabled?: boolean;\n name?: string;\n invalid?: boolean;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: React.ComponentProps<typeof Popover>['placement'];\n children: ReactNode;\n}\n\nexport function MultiSelect({\n value,\n defaultValue,\n onValueChange,\n disabled = false,\n name,\n invalid,\n defaultOpen = false,\n open: openProp,\n onOpenChange,\n placement = 'bottom',\n children,\n}: MultiSelectProps) {\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const [valuesState, setValuesState] = useControlled<string[]>({\n controlled: value,\n default: defaultValue ?? [],\n onChange: onValueChange,\n });\n const [labels, setLabels] = useState<Record<string, ReactNode>>({});\n\n const registerLabel = useCallback((v: string, label: ReactNode) => {\n setLabels((prev) => (prev[v] === label ? prev : { ...prev, [v]: label }));\n }, []);\n const unregisterLabel = useCallback((v: string) => {\n setLabels((prev) => {\n if (!(v in prev)) return prev;\n const next = { ...prev };\n delete next[v];\n return next;\n });\n }, []);\n\n const ctx = useMemo<MultiSelectContextValue>(\n () => ({\n open: openState,\n setOpen: setOpenState,\n values: valuesState,\n setValues: setValuesState,\n labels,\n registerLabel,\n unregisterLabel,\n disabled,\n name,\n invalid,\n }),\n [\n openState,\n setOpenState,\n valuesState,\n setValuesState,\n labels,\n registerLabel,\n unregisterLabel,\n disabled,\n name,\n invalid,\n ],\n );\n\n return (\n <MultiSelectContext.Provider value={ctx}>\n <Popover\n open={openState}\n onOpenChange={setOpenState}\n placement={placement}\n offset={6}\n >\n {children}\n </Popover>\n </MultiSelectContext.Provider>\n );\n}\n\nexport interface MultiSelectTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'>,\n SelectTriggerVariants {\n children?: ReactNode;\n}\n\nexport const MultiSelectTrigger = forwardRef<HTMLButtonElement, MultiSelectTriggerProps>(\n function MultiSelectTrigger(\n { size, state, className, onKeyDown, children, ...rest },\n ref,\n ) {\n const ctx = useMultiSelectContext();\n const triggerState = state ?? (ctx.invalid ? 'invalid' : 'default');\n return (\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n disabled={ctx.disabled}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === 'Backspace' && ctx.values.length > 0) {\n ctx.setValues(ctx.values.slice(0, -1));\n }\n }}\n className={cn(\n selectTriggerVariants({ size, state: triggerState }),\n 'h-auto min-h-10 flex-wrap py-1.5',\n className,\n )}\n {...rest}\n >\n {children ?? <MultiSelectTags />}\n <ChevronDown\n className={cn(\n 'h-4 w-4 shrink-0 self-center text-muted-foreground transition-transform',\n ctx.open && 'rotate-180',\n )}\n />\n </button>\n </PopoverTrigger>\n );\n },\n);\n\nexport interface MultiSelectTagsProps {\n /** Shown when no values selected. */\n placeholder?: ReactNode;\n}\n\nexport function MultiSelectTags({ placeholder }: MultiSelectTagsProps) {\n const ctx = useMultiSelectContext();\n if (ctx.values.length === 0) {\n return <span className=\"text-subtle-foreground\">{placeholder}</span>;\n }\n return (\n <span className=\"flex flex-1 flex-wrap items-center gap-1\">\n {ctx.values.map((v) => (\n <span\n key={v}\n className=\"inline-flex items-center gap-1 rounded-sm bg-muted px-1.5 py-0.5 text-xs\"\n >\n {ctx.labels[v] ?? v}\n {!ctx.disabled && (\n <span\n role=\"button\"\n tabIndex={-1}\n aria-label={`Remove ${typeof ctx.labels[v] === 'string' ? ctx.labels[v] : v}`}\n onClick={(e) => {\n e.stopPropagation();\n ctx.setValues(ctx.values.filter((x) => x !== v));\n }}\n onPointerDown={(e) => e.stopPropagation()}\n className=\"cursor-pointer rounded-sm p-0.5 hover:bg-border\"\n >\n <X className=\"h-3 w-3\" />\n </span>\n )}\n </span>\n ))}\n </span>\n );\n}\n\nexport interface MultiSelectContentProps extends SurfaceVariants {\n className?: string;\n children: ReactNode;\n}\n\nexport function MultiSelectContent({\n className,\n variant,\n tone,\n radius,\n padding,\n elevation,\n children,\n}: MultiSelectContentProps) {\n const ctx = useMultiSelectContext();\n return (\n <PopoverContent\n variant={variant}\n tone={tone}\n radius={radius}\n padding={padding ?? 'none'}\n elevation={elevation}\n className={cn('w-auto min-w-[var(--anchor-width)] overflow-hidden', className)}\n >\n <Listbox<string>\n multiple\n value={ctx.values}\n onValueChange={(v) => ctx.setValues(v)}\n variant=\"flat\"\n radius=\"none\"\n >\n {children}\n </Listbox>\n {ctx.name &&\n ctx.values.map((v) => <input key={v} type=\"hidden\" name={ctx.name} value={v} />)}\n </PopoverContent>\n );\n}\n\nexport interface MultiSelectItemProps {\n value: string;\n disabled?: boolean;\n className?: string;\n children: ReactNode;\n}\n\nexport const MultiSelectItem = forwardRef<HTMLDivElement, MultiSelectItemProps>(\n function MultiSelectItem(props, ref) {\n const ctx = useMultiSelectContext();\n /* Stable refs out of ctx — same rationale as SelectItem (see comment there). */\n const { registerLabel, unregisterLabel } = ctx;\n useEffect(() => {\n registerLabel(props.value, props.children);\n return () => unregisterLabel(props.value);\n }, [registerLabel, unregisterLabel, props.value, props.children]);\n return <ListboxItem ref={ref} {...props} />;\n },\n);\n\ntype MultiSelectComponent = typeof MultiSelect & {\n Trigger: typeof MultiSelectTrigger;\n Tags: typeof MultiSelectTags;\n Content: typeof MultiSelectContent;\n Item: typeof MultiSelectItem;\n Group: typeof ListboxGroup;\n Separator: typeof ListboxSeparator;\n Empty: typeof ListboxEmpty;\n};\n\n(MultiSelect as MultiSelectComponent).Trigger = MultiSelectTrigger;\n(MultiSelect as MultiSelectComponent).Tags = MultiSelectTags;\n(MultiSelect as MultiSelectComponent).Content = MultiSelectContent;\n(MultiSelect as MultiSelectComponent).Item = MultiSelectItem;\n(MultiSelect as MultiSelectComponent).Group = ListboxGroup;\n(MultiSelect as MultiSelectComponent).Separator = ListboxSeparator;\n(MultiSelect as MultiSelectComponent).Empty = ListboxEmpty;\n\nexport default MultiSelect as MultiSelectComponent;\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { Check } from 'lucide-react';\nimport { cn, composeRefs, surfaceVariants, type SurfaceVariants } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { AnchoredPositioner, DismissableLayer, Portal } from '../../primitives';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\nimport {\n listboxVariants,\n listboxItemVariants,\n listboxGroupLabelVariants,\n listboxSeparatorVariants,\n listboxEmptyVariants,\n} from '../listbox/Listbox.variants';\n\ninterface ComboboxItemEntry {\n id: string;\n value: string;\n disabled: boolean;\n label: ReactNode;\n}\n\ninterface ComboboxContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n value: string;\n setValue: (value: string) => void;\n inputValue: string;\n setInputValue: (input: string) => void;\n activeId: string | null;\n setActiveId: (id: string | null) => void;\n registerItem: (entry: ComboboxItemEntry) => void;\n unregisterItem: (id: string) => void;\n itemsRef: React.MutableRefObject<ComboboxItemEntry[]>;\n inputRef: React.MutableRefObject<HTMLInputElement | null>;\n listboxId: string;\n disabled: boolean;\n invalid?: boolean;\n selectItem: (entry: ComboboxItemEntry, options?: { close?: boolean }) => void;\n}\n\nconst ComboboxContext = createContext<ComboboxContextValue | null>(null);\n\nfunction useComboboxContext() {\n const ctx = useContext(ComboboxContext);\n if (!ctx) throw new Error('Combobox.* must be used inside <Combobox>');\n return ctx;\n}\n\nexport interface ComboboxProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n inputValue?: string;\n defaultInputValue?: string;\n onInputChange?: (input: string) => void;\n disabled?: boolean;\n invalid?: boolean;\n name?: string;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** When the user picks an item, set the input value to its label. Default true. */\n fillInputOnSelect?: boolean;\n children: ReactNode;\n}\n\nexport function Combobox({\n value,\n defaultValue,\n onValueChange,\n inputValue,\n defaultInputValue,\n onInputChange,\n disabled = false,\n invalid,\n name,\n defaultOpen = false,\n open: openProp,\n onOpenChange,\n fillInputOnSelect = true,\n children,\n}: ComboboxProps) {\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const [valueState, setValueState] = useControlled({\n controlled: value,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const [inputState, setInputState] = useControlled({\n controlled: inputValue,\n default: defaultInputValue ?? '',\n onChange: onInputChange,\n });\n\n const itemsRef = useRef<ComboboxItemEntry[]>([]);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [activeId, setActiveId] = useState<string | null>(null);\n const listboxId = useId();\n\n const registerItem = useCallback((entry: ComboboxItemEntry) => {\n const idx = itemsRef.current.findIndex((i) => i.id === entry.id);\n if (idx >= 0) itemsRef.current[idx] = entry;\n else itemsRef.current.push(entry);\n }, []);\n const unregisterItem = useCallback((id: string) => {\n itemsRef.current = itemsRef.current.filter((i) => i.id !== id);\n }, []);\n\n const selectItem = useCallback(\n (entry: ComboboxItemEntry, opts?: { close?: boolean }) => {\n setValueState(entry.value);\n if (fillInputOnSelect) {\n const text = typeof entry.label === 'string' ? entry.label : entry.value;\n setInputState(text);\n }\n if (opts?.close ?? true) setOpenState(false);\n },\n [setValueState, setInputState, setOpenState, fillInputOnSelect],\n );\n\n const ctx = useMemo<ComboboxContextValue>(\n () => ({\n open: openState,\n setOpen: setOpenState,\n value: valueState,\n setValue: setValueState,\n inputValue: inputState,\n setInputValue: setInputState,\n activeId,\n setActiveId,\n registerItem,\n unregisterItem,\n itemsRef,\n inputRef,\n listboxId,\n disabled,\n invalid,\n selectItem,\n }),\n [\n openState,\n setOpenState,\n valueState,\n setValueState,\n inputState,\n setInputState,\n activeId,\n registerItem,\n unregisterItem,\n listboxId,\n disabled,\n invalid,\n selectItem,\n ],\n );\n\n return (\n <ComboboxContext.Provider value={ctx}>\n {children}\n {name && <input type=\"hidden\" name={name} value={valueState} />}\n </ComboboxContext.Provider>\n );\n}\n\nexport interface ComboboxInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'size'>,\n InputBaseVariants {}\n\nexport const ComboboxInput = forwardRef<HTMLInputElement, ComboboxInputProps>(\n function ComboboxInput(\n { className, size, state, onKeyDown, onFocus, ...rest },\n forwardedRef,\n ) {\n const ctx = useComboboxContext();\n const inputState = state ?? (ctx.invalid ? 'invalid' : 'default');\n\n const moveActive = useCallback(\n (direction: 1 | -1) => {\n const list = ctx.itemsRef.current.filter((i) => !i.disabled);\n if (list.length === 0) return;\n const idx = list.findIndex((i) => i.id === ctx.activeId);\n let nextIdx = idx + direction;\n if (idx === -1) nextIdx = direction === 1 ? 0 : list.length - 1;\n if (nextIdx < 0) nextIdx = list.length - 1;\n if (nextIdx >= list.length) nextIdx = 0;\n const next = list[nextIdx];\n if (next) ctx.setActiveId(next.id);\n },\n [ctx],\n );\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || ctx.disabled) return;\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!ctx.open) ctx.setOpen(true);\n else moveActive(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (!ctx.open) ctx.setOpen(true);\n else moveActive(-1);\n break;\n case 'Home':\n if (ctx.open) {\n e.preventDefault();\n const first = ctx.itemsRef.current.find((i) => !i.disabled);\n if (first) ctx.setActiveId(first.id);\n }\n break;\n case 'End':\n if (ctx.open) {\n e.preventDefault();\n const list = ctx.itemsRef.current.filter((i) => !i.disabled);\n const last = list[list.length - 1];\n if (last) ctx.setActiveId(last.id);\n }\n break;\n case 'Enter': {\n if (!ctx.open || !ctx.activeId) return;\n const entry = ctx.itemsRef.current.find((i) => i.id === ctx.activeId);\n if (!entry || entry.disabled) return;\n e.preventDefault();\n ctx.selectItem(entry);\n break;\n }\n case 'Escape':\n if (ctx.open) {\n e.preventDefault();\n ctx.setOpen(false);\n } else if (ctx.inputValue) {\n e.preventDefault();\n ctx.setInputValue('');\n ctx.setValue('');\n }\n break;\n }\n };\n\n return (\n <input\n ref={composeRefs(forwardedRef, ctx.inputRef)}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={ctx.open}\n aria-controls={ctx.listboxId}\n aria-activedescendant={ctx.activeId ?? undefined}\n aria-autocomplete=\"list\"\n aria-disabled={ctx.disabled || undefined}\n disabled={ctx.disabled}\n value={ctx.inputValue}\n onChange={(e) => {\n ctx.setInputValue(e.target.value);\n if (!ctx.open) ctx.setOpen(true);\n // Clear active when input changes — re-init on next render of items.\n ctx.setActiveId(null);\n }}\n onFocus={(e) => {\n onFocus?.(e);\n if (!ctx.open) ctx.setOpen(true);\n }}\n onKeyDown={handleKeyDown}\n className={cn(inputBaseVariants({ size, state: inputState }), className)}\n {...rest}\n />\n );\n },\n);\n\nexport interface ComboboxContentProps extends SurfaceVariants {\n className?: string;\n placement?: React.ComponentProps<typeof AnchoredPositioner>['placement'];\n offset?: number;\n children: ReactNode;\n}\n\nexport function ComboboxContent({\n className,\n placement = 'bottom',\n offset = 6,\n variant,\n tone,\n radius,\n padding,\n elevation,\n children,\n}: ComboboxContentProps) {\n const ctx = useComboboxContext();\n if (!ctx.open) return null;\n /* Default to `xs` (p-1) so items breathe — same as Listbox. */\n const resolvedPadding = padding ?? 'xs';\n return (\n <Portal>\n <AnchoredPositioner\n anchor={ctx.inputRef.current}\n placement={placement}\n offset={offset}\n className=\"z-dropdown\"\n >\n <DismissableLayer\n onEscape={() => ctx.setOpen(false)}\n onOutsidePointerDown={(e) => {\n if (ctx.inputRef.current?.contains(e.target as Node)) return;\n ctx.setOpen(false);\n }}\n >\n <div\n id={ctx.listboxId}\n role=\"listbox\"\n className={cn(\n surfaceVariants({\n variant,\n tone,\n radius,\n padding: resolvedPadding,\n elevation,\n }),\n listboxVariants(),\n className,\n )}\n style={\n ctx.inputRef.current\n ? { minWidth: ctx.inputRef.current.offsetWidth }\n : undefined\n }\n >\n {children}\n </div>\n </DismissableLayer>\n </AnchoredPositioner>\n </Portal>\n );\n}\n\nexport interface ComboboxItemProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n disabled?: boolean;\n children: ReactNode;\n}\n\nexport const ComboboxItem = forwardRef<HTMLDivElement, ComboboxItemProps>(function ComboboxItem(\n { value, disabled = false, className, children, onClick, onPointerEnter, ...rest },\n forwardedRef,\n) {\n const ctx = useComboboxContext();\n const id = useId();\n\n useEffect(() => {\n ctx.registerItem({ id, value, disabled, label: children });\n return () => ctx.unregisterItem(id);\n }, [ctx, id, value, disabled, children]);\n\n // Auto-set first matching item active on render if no active id.\n useEffect(() => {\n if (!ctx.activeId) {\n const list = ctx.itemsRef.current.filter((i) => !i.disabled);\n if (list[0]) ctx.setActiveId(list[0].id);\n }\n }, [ctx]);\n\n const isSelected = ctx.value === value;\n const isActive = ctx.activeId === id;\n const state = disabled\n ? 'disabled'\n : isSelected\n ? 'selected'\n : isActive\n ? 'active'\n : 'default';\n\n return (\n <div\n ref={forwardedRef}\n id={id}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={disabled || undefined}\n data-active={isActive ? '' : undefined}\n data-selected={isSelected ? '' : undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n ctx.selectItem({ id, value, disabled, label: children });\n }}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n if (!disabled) ctx.setActiveId(id);\n }}\n className={cn(listboxItemVariants({ state }), className)}\n {...rest}\n >\n <span className=\"flex-1\">{children}</span>\n {isSelected && <Check className=\"h-4 w-4 opacity-80\" />}\n </div>\n );\n});\n\nexport interface ComboboxGroupProps extends HTMLAttributes<HTMLDivElement> {\n label?: ReactNode;\n children: ReactNode;\n}\n\nexport function ComboboxGroup({ label, children, className, ...rest }: ComboboxGroupProps) {\n const labelId = useId();\n return (\n <div role=\"group\" aria-labelledby={label ? labelId : undefined} className={className} {...rest}>\n {label && (\n <div id={labelId} className={listboxGroupLabelVariants()}>\n {label}\n </div>\n )}\n {children}\n </div>\n );\n}\n\nexport function ComboboxSeparator(props: HTMLAttributes<HTMLDivElement>) {\n return <div role=\"separator\" className={listboxSeparatorVariants()} {...props} />;\n}\n\nexport function ComboboxEmpty({ children, className, ...rest }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div role=\"presentation\" className={cn(listboxEmptyVariants(), className)} {...rest}>\n {children}\n </div>\n );\n}\n\ntype ComboboxComponent = typeof Combobox & {\n Input: typeof ComboboxInput;\n Content: typeof ComboboxContent;\n Item: typeof ComboboxItem;\n Group: typeof ComboboxGroup;\n Separator: typeof ComboboxSeparator;\n Empty: typeof ComboboxEmpty;\n};\n\n(Combobox as ComboboxComponent).Input = ComboboxInput;\n(Combobox as ComboboxComponent).Content = ComboboxContent;\n(Combobox as ComboboxComponent).Item = ComboboxItem;\n(Combobox as ComboboxComponent).Group = ComboboxGroup;\n(Combobox as ComboboxComponent).Separator = ComboboxSeparator;\n(Combobox as ComboboxComponent).Empty = ComboboxEmpty;\n\nexport default Combobox as ComboboxComponent;\n","// Shared month-grid renderer for Calendar and RangeCalendar. Co-located in\n// `forms/` as a domain-internal helper. Owns:\n// - the 42-cell visual layout (header + weekday row + 6×7 grid)\n// - keyboard navigation (arrows / Home/End / PgUp/PgDn / Shift+PgUp/PgDn)\n// - focused-cell management (autofocus on focusedDate change)\n// - month nav buttons\n//\n// Consumers (Calendar, RangeCalendar) provide:\n// - their own selection state via `dayProps(date)` returning extra attrs\n// - `onDayActivate(date)` callback for click/Enter/Space\n//\n// Not exported from `forms/index.ts` — internal only.\n\nimport {\n useCallback,\n useEffect,\n useRef,\n type ButtonHTMLAttributes,\n type KeyboardEvent,\n} from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { cn } from '../utils';\nimport {\n MONTHS_LONG,\n WEEKDAYS_SHORT,\n addDays,\n addMonths,\n buildMonthGrid,\n isSameDay,\n isToday,\n startOfMonth,\n} from './DateExtensions';\n\nexport interface MonthGridDayProps\n extends Pick<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'className' | 'onPointerEnter' | 'onPointerLeave' | 'aria-selected'\n > {\n /** Extra `data-*` attributes (data-selected, data-range-start, etc.). */\n [key: `data-${string}`]: string | boolean | undefined;\n}\n\nexport interface MonthGridProps {\n /** First day of the visible month (use `startOfMonth(date)`). */\n viewMonth: Date;\n /** Called when prev/next steps the visible month. */\n onViewMonthChange: (date: Date) => void;\n /** The currently focused day (cell tabIndex=0). */\n focusedDate: Date;\n /** Called by keyboard navigation. */\n onFocusedDateChange: (date: Date) => void;\n /** Predicate marking a day as disabled. */\n isDayDisabled?: (date: Date) => boolean;\n /** Click / Enter / Space activation. */\n onDayActivate?: (date: Date, meta: { outOfMonth: boolean }) => void;\n /** Extra per-day attributes for selection styling and hover handlers. */\n dayProps?: (date: Date, meta: { outOfMonth: boolean }) => MonthGridDayProps | undefined;\n 'aria-label'?: string;\n className?: string;\n}\n\nexport function MonthGrid({\n viewMonth,\n onViewMonthChange,\n focusedDate,\n onFocusedDateChange,\n isDayDisabled,\n onDayActivate,\n dayProps,\n 'aria-label': ariaLabel = 'Calendar',\n className,\n}: MonthGridProps) {\n const gridRef = useRef<HTMLDivElement | null>(null);\n\n // Re-focus the active day cell when focusedDate changes (keyboard nav).\n useEffect(() => {\n const cell = gridRef.current?.querySelector<HTMLButtonElement>(\n `[data-date=\"${focusedDate.toDateString()}\"]`,\n );\n cell?.focus();\n }, [focusedDate]);\n\n const moveFocus = useCallback(\n (next: Date) => {\n if (\n next.getMonth() !== viewMonth.getMonth() ||\n next.getFullYear() !== viewMonth.getFullYear()\n ) {\n onViewMonthChange(startOfMonth(next));\n }\n onFocusedDateChange(next);\n },\n [viewMonth, onViewMonthChange, onFocusedDateChange],\n );\n\n const onCellKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>, date: Date, outOfMonth: boolean) => {\n switch (e.key) {\n case 'ArrowRight':\n e.preventDefault();\n moveFocus(addDays(date, 1));\n break;\n case 'ArrowLeft':\n e.preventDefault();\n moveFocus(addDays(date, -1));\n break;\n case 'ArrowDown':\n e.preventDefault();\n moveFocus(addDays(date, 7));\n break;\n case 'ArrowUp':\n e.preventDefault();\n moveFocus(addDays(date, -7));\n break;\n case 'Home':\n e.preventDefault();\n moveFocus(addDays(date, -date.getDay()));\n break;\n case 'End':\n e.preventDefault();\n moveFocus(addDays(date, 6 - date.getDay()));\n break;\n case 'PageDown':\n e.preventDefault();\n moveFocus(addMonths(date, e.shiftKey ? 12 : 1));\n break;\n case 'PageUp':\n e.preventDefault();\n moveFocus(addMonths(date, e.shiftKey ? -12 : -1));\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n if (!isDayDisabled?.(date)) onDayActivate?.(date, { outOfMonth });\n break;\n }\n },\n [moveFocus, onDayActivate, isDayDisabled],\n );\n\n const cells = buildMonthGrid(viewMonth.getFullYear(), viewMonth.getMonth());\n\n return (\n <div\n role=\"application\"\n aria-label={ariaLabel}\n className={cn(\n 'inline-flex flex-col gap-2 rounded-md border border-border bg-popover p-3 text-popover-foreground',\n className,\n )}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between gap-2 px-1\">\n <button\n type=\"button\"\n aria-label=\"Previous month\"\n onClick={() => onViewMonthChange(addMonths(viewMonth, -1))}\n className=\"grid h-7 w-7 place-items-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n <div className=\"text-sm font-medium\" aria-live=\"polite\">\n {MONTHS_LONG[viewMonth.getMonth()]} {viewMonth.getFullYear()}\n </div>\n <button\n type=\"button\"\n aria-label=\"Next month\"\n onClick={() => onViewMonthChange(addMonths(viewMonth, 1))}\n className=\"grid h-7 w-7 place-items-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n </div>\n\n {/* Weekday row */}\n <div className=\"grid grid-cols-7 gap-0 px-1\">\n {WEEKDAYS_SHORT.map((w) => (\n <div\n key={w}\n className=\"grid h-7 w-9 place-items-center text-xs font-medium text-muted-foreground\"\n >\n {w}\n </div>\n ))}\n </div>\n\n {/* Day grid */}\n <div ref={gridRef} className=\"grid grid-cols-7 gap-0 px-1\" role=\"grid\">\n {cells.map(({ date, outOfMonth }) => {\n const disabled = isDayDisabled?.(date) ?? false;\n const isFocusedCell = isSameDay(focusedDate, date);\n const consumerProps = dayProps?.(date, { outOfMonth }) ?? {};\n const { className: cellClassName, ...consumerRest } = consumerProps as Record<\n string,\n unknown\n > & { className?: string };\n\n return (\n <button\n key={date.toDateString()}\n type=\"button\"\n role=\"gridcell\"\n data-date={date.toDateString()}\n aria-disabled={disabled || undefined}\n data-today={isToday(date) ? '' : undefined}\n data-out-of-month={outOfMonth ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n tabIndex={isFocusedCell ? 0 : -1}\n disabled={disabled}\n onClick={() => {\n if (disabled) return;\n onDayActivate?.(date, { outOfMonth });\n onFocusedDateChange(date);\n if (outOfMonth) onViewMonthChange(startOfMonth(date));\n }}\n onKeyDown={(e) => onCellKeyDown(e, date, outOfMonth)}\n {...(consumerRest as ButtonHTMLAttributes<HTMLButtonElement>)}\n className={cn(\n 'grid h-9 w-9 place-items-center text-sm transition-colors',\n 'hover:bg-muted hover:text-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n outOfMonth && 'text-muted-foreground/60',\n disabled && 'pointer-events-none opacity-40',\n cellClassName,\n )}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","import { forwardRef, useState, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { isDateDisabled, isSameDay, isToday, startOfMonth } from '../DateExtensions';\nimport { MonthGrid } from '../MonthGrid';\n\nexport interface CalendarProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n /** Controlled selected date. */\n value?: Date | null;\n /** Uncontrolled initial selection. */\n defaultValue?: Date | null;\n /** Selection callback. */\n onChange?: (date: Date) => void;\n /** Initial visible month (uncontrolled). */\n defaultMonth?: Date;\n /** Minimum selectable date. */\n min?: Date | null;\n /** Maximum selectable date. */\n max?: Date | null;\n /** Custom disable predicate. */\n isDisabled?: (date: Date) => boolean;\n /** A11y label. */\n 'aria-label'?: string;\n}\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(function Calendar(\n {\n value,\n defaultValue,\n onChange,\n defaultMonth,\n min,\n max,\n isDisabled,\n 'aria-label': ariaLabel = 'Calendar',\n className,\n ...rest\n },\n ref,\n) {\n const [selected, setSelected] = useControlled<Date | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange: onChange as ((v: Date | null) => void) | undefined,\n });\n const [viewMonth, setViewMonth] = useState<Date>(\n () => startOfMonth(defaultMonth ?? selected ?? new Date()),\n );\n const [focusedDate, setFocusedDate] = useState<Date>(() => selected ?? new Date());\n\n return (\n <div ref={ref} className={cn(className)} {...rest}>\n <MonthGrid\n viewMonth={viewMonth}\n onViewMonthChange={setViewMonth}\n focusedDate={focusedDate}\n onFocusedDateChange={setFocusedDate}\n isDayDisabled={(d) => isDateDisabled(d, { min, max, isDisabled })}\n onDayActivate={(d) => setSelected(d)}\n dayProps={(date) => {\n const isSelectedCell = isSameDay(selected, date);\n return {\n 'aria-selected': isSelectedCell,\n 'data-selected': isSelectedCell ? '' : undefined,\n className: cn(\n 'rounded-sm',\n isToday(date) && !isSelectedCell && 'border border-border',\n isSelectedCell && 'bg-primary text-primary-foreground hover:bg-primary',\n ),\n };\n }}\n aria-label={ariaLabel}\n />\n </div>\n );\n});\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\nimport { formatISODate, parseISODate } from '../DateExtensions';\n\nexport interface DateFieldProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'value' | 'defaultValue' | 'onChange' | 'min' | 'max' | 'size'\n >,\n InputBaseVariants {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (date: Date | null) => void;\n min?: Date | null;\n max?: Date | null;\n}\n\nexport const DateField = forwardRef<HTMLInputElement, DateFieldProps>(function DateField(\n { value, defaultValue, onChange, min, max, size, state, className, id, disabled, required, ...rest },\n ref,\n) {\n const ctx = useFormControl();\n const [current, setCurrent] = useControlled<Date | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange,\n });\n return (\n <input\n ref={ref}\n type=\"date\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n value={formatISODate(current)}\n min={formatISODate(min)}\n max={formatISODate(max)}\n onChange={(e) => setCurrent(parseISODate(e.target.value))}\n className={cn(inputBaseVariants({ size, state: state ?? (ctx?.isInvalid ? 'invalid' : 'default') }), className)}\n {...rest}\n />\n );\n});\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\nimport { formatISOTime, parseISOTime } from '../DateExtensions';\n\nexport interface TimeValue {\n hours: number;\n minutes: number;\n}\n\nexport interface TimeFieldProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'value' | 'defaultValue' | 'onChange' | 'size'\n >,\n InputBaseVariants {\n value?: TimeValue | null;\n defaultValue?: TimeValue | null;\n onChange?: (value: TimeValue | null) => void;\n}\n\nfunction timeToString(t: TimeValue | null | undefined): string {\n if (!t) return '';\n const date = new Date();\n date.setHours(t.hours, t.minutes, 0, 0);\n return formatISOTime(date);\n}\n\nexport const TimeField = forwardRef<HTMLInputElement, TimeFieldProps>(function TimeField(\n { value, defaultValue, onChange, size, state, className, id, disabled, required, ...rest },\n ref,\n) {\n const ctx = useFormControl();\n const [current, setCurrent] = useControlled<TimeValue | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange,\n });\n return (\n <input\n ref={ref}\n type=\"time\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n value={timeToString(current)}\n onChange={(e) => setCurrent(parseISOTime(e.target.value))}\n className={cn(inputBaseVariants({ size, state: state ?? (ctx?.isInvalid ? 'invalid' : 'default') }), className)}\n {...rest}\n />\n );\n});\n","import { forwardRef, useState, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n isDateDisabled,\n isInRange,\n isSameDay,\n isToday,\n startOfDay,\n startOfMonth,\n} from '../DateExtensions';\nimport { MonthGrid } from '../MonthGrid';\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface RangeCalendarProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n value?: DateRange | null;\n defaultValue?: DateRange | null;\n onChange?: (range: DateRange) => void;\n defaultMonth?: Date;\n min?: Date | null;\n max?: Date | null;\n isDisabled?: (date: Date) => boolean;\n 'aria-label'?: string;\n}\n\nexport const RangeCalendar = forwardRef<HTMLDivElement, RangeCalendarProps>(\n function RangeCalendar(\n {\n value,\n defaultValue,\n onChange,\n defaultMonth,\n min,\n max,\n isDisabled,\n 'aria-label': ariaLabel = 'Date range',\n className,\n ...rest\n },\n ref,\n ) {\n const [range, setRange] = useControlled<DateRange | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange: onChange as ((v: DateRange | null) => void) | undefined,\n });\n const [viewMonth, setViewMonth] = useState<Date>(\n () => startOfMonth(defaultMonth ?? range?.start ?? new Date()),\n );\n const [focusedDate, setFocusedDate] = useState<Date>(() => range?.start ?? new Date());\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n const [pendingStart, setPendingStart] = useState<Date | null>(null);\n\n const handleActivate = (date: Date) => {\n if (!pendingStart) {\n setPendingStart(date);\n setRange({ start: date, end: null });\n return;\n }\n const startTime = startOfDay(pendingStart).getTime();\n const endTime = startOfDay(date).getTime();\n const finalStart = startTime <= endTime ? pendingStart : date;\n const finalEnd = startTime <= endTime ? date : pendingStart;\n setRange({ start: finalStart, end: finalEnd });\n setPendingStart(null);\n };\n\n const previewEnd = pendingStart ? hoveredDate : range?.end;\n const isStart = (d: Date) =>\n isSameDay(d, range?.start ?? null) || isSameDay(d, pendingStart);\n const isEnd = (d: Date) => isSameDay(d, range?.end ?? null);\n const inRange = (d: Date) =>\n isInRange(d, pendingStart ?? range?.start, previewEnd ?? null);\n\n return (\n <div ref={ref} className={cn(className)} {...rest}>\n <MonthGrid\n viewMonth={viewMonth}\n onViewMonthChange={setViewMonth}\n focusedDate={focusedDate}\n onFocusedDateChange={setFocusedDate}\n isDayDisabled={(d) => isDateDisabled(d, { min, max, isDisabled })}\n onDayActivate={handleActivate}\n dayProps={(date) => {\n const startCell = isStart(date);\n const endCell = isEnd(date);\n const rangeCell = inRange(date) && !startCell && !endCell;\n const selected = startCell || endCell;\n return {\n 'aria-selected': selected,\n 'data-range-start': startCell ? '' : undefined,\n 'data-range-end': endCell ? '' : undefined,\n 'data-in-range': rangeCell ? '' : undefined,\n onPointerEnter: () => setHoveredDate(date),\n onPointerLeave: () =>\n setHoveredDate((h) => (isSameDay(h, date) ? null : h)),\n className: cn(\n isToday(date) && !startCell && !endCell && 'border border-border rounded-sm',\n rangeCell && 'bg-primary-soft text-primary-soft-foreground',\n startCell && 'bg-primary text-primary-foreground rounded-l-sm',\n endCell && 'bg-primary text-primary-foreground rounded-r-sm',\n !startCell && !endCell && !rangeCell && 'rounded-sm',\n ),\n };\n }}\n aria-label={ariaLabel}\n />\n </div>\n );\n },\n);\n","import { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays';\nimport { selectTriggerVariants, type SelectTriggerVariants } from '../select/Select.variants';\nimport { formatISODate } from '../DateExtensions';\nimport { Calendar } from '../calendar';\n\nexport interface DatePickerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChange' | 'value' | 'defaultValue'>,\n SelectTriggerVariants {\n value?: Date | null;\n defaultValue?: Date | null;\n onChange?: (date: Date | null) => void;\n placeholder?: string;\n format?: (date: Date) => string;\n min?: Date | null;\n max?: Date | null;\n isDisabled?: (date: Date) => boolean;\n invalid?: boolean;\n /** When `name` is set, a hidden input ships the ISO value with form submission. */\n name?: string;\n}\n\nconst defaultFormat = (d: Date) =>\n d.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' });\n\nexport const DatePicker = forwardRef<HTMLButtonElement, DatePickerProps>(function DatePicker(\n {\n value,\n defaultValue,\n onChange,\n placeholder = 'Pick a date',\n format = defaultFormat,\n min,\n max,\n isDisabled: dayDisabled,\n invalid,\n name,\n size,\n state,\n className,\n disabled,\n ...rest\n },\n forwardedRef,\n) {\n const [date, setDate] = useControlled<Date | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange,\n });\n const [open, setOpen] = useControlled<boolean>({\n controlled: undefined,\n default: false,\n });\n\n const triggerState = state ?? (invalid ? 'invalid' : 'default');\n\n return (\n <Popover open={open} onOpenChange={setOpen} placement=\"bottom-start\" offset={6}>\n <PopoverTrigger asChild>\n <button\n ref={forwardedRef}\n type=\"button\"\n disabled={disabled}\n className={cn(selectTriggerVariants({ size, state: triggerState }), className)}\n {...rest}\n >\n <span className={cn('truncate', !date && 'text-subtle-foreground')}>\n {date ? format(date) : placeholder}\n </span>\n <CalendarIcon className=\"h-4 w-4 shrink-0 text-muted-foreground\" />\n </button>\n </PopoverTrigger>\n <PopoverContent bare>\n <Calendar\n value={date}\n onChange={(d) => {\n setDate(d);\n setOpen(false);\n }}\n defaultMonth={date ?? new Date()}\n min={min}\n max={max}\n isDisabled={dayDisabled}\n />\n </PopoverContent>\n {name && <input type=\"hidden\" name={name} value={formatISODate(date)} />}\n </Popover>\n );\n});\n","import { forwardRef, useEffect, useMemo, useRef, type ButtonHTMLAttributes } from 'react';\nimport { Clock } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays';\nimport { selectTriggerVariants, type SelectTriggerVariants } from '../select/Select.variants';\nimport { type TimeValue } from '../timeField';\n\nexport interface TimePickerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChange' | 'value' | 'defaultValue'>,\n SelectTriggerVariants {\n value?: TimeValue | null;\n defaultValue?: TimeValue | null;\n onChange?: (time: TimeValue | null) => void;\n /** Minute interval. Default 5. */\n minuteStep?: number;\n placeholder?: string;\n format?: (time: TimeValue) => string;\n invalid?: boolean;\n name?: string;\n}\n\nconst defaultFormat = (t: TimeValue) =>\n `${String(t.hours).padStart(2, '0')}:${String(t.minutes).padStart(2, '0')}`;\n\nconst HOURS = Array.from({ length: 24 }, (_, i) => i);\n\nexport const TimePicker = forwardRef<HTMLButtonElement, TimePickerProps>(function TimePicker(\n {\n value,\n defaultValue,\n onChange,\n minuteStep = 5,\n placeholder = 'Pick a time',\n format = defaultFormat,\n invalid,\n name,\n size,\n state,\n className,\n disabled,\n ...rest\n },\n forwardedRef,\n) {\n const [time, setTime] = useControlled<TimeValue | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange,\n });\n const [open, setOpen] = useControlled<boolean>({\n controlled: undefined,\n default: false,\n });\n const hoursRef = useRef<HTMLDivElement | null>(null);\n const minutesRef = useRef<HTMLDivElement | null>(null);\n\n const minutes = useMemo(() => {\n const list: number[] = [];\n for (let m = 0; m < 60; m += minuteStep) list.push(m);\n return list;\n }, [minuteStep]);\n\n // Auto-scroll selected hour/minute into view when opening.\n useEffect(() => {\n if (!open) return;\n requestAnimationFrame(() => {\n hoursRef.current\n ?.querySelector<HTMLButtonElement>('[data-selected]')\n ?.scrollIntoView({ block: 'center' });\n minutesRef.current\n ?.querySelector<HTMLButtonElement>('[data-selected]')\n ?.scrollIntoView({ block: 'center' });\n });\n }, [open]);\n\n const triggerState = state ?? (invalid ? 'invalid' : 'default');\n\n const update = (next: Partial<TimeValue>) => {\n const merged: TimeValue = {\n hours: next.hours ?? time?.hours ?? 0,\n minutes: next.minutes ?? time?.minutes ?? 0,\n };\n setTime(merged);\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen} placement=\"bottom-start\" offset={6}>\n <PopoverTrigger asChild>\n <button\n ref={forwardedRef}\n type=\"button\"\n disabled={disabled}\n className={cn(selectTriggerVariants({ size, state: triggerState }), className)}\n {...rest}\n >\n <span className={cn('truncate', !time && 'text-subtle-foreground')}>\n {time ? format(time) : placeholder}\n </span>\n <Clock className=\"h-4 w-4 shrink-0 text-muted-foreground\" />\n </button>\n </PopoverTrigger>\n <PopoverContent bare>\n <div className=\"flex gap-1 rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-md\">\n <div\n ref={hoursRef}\n role=\"listbox\"\n aria-label=\"Hours\"\n className=\"flex max-h-56 flex-col gap-0.5 overflow-y-auto pr-1\"\n >\n {HOURS.map((h) => {\n const selected = time?.hours === h;\n return (\n <button\n key={h}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n data-selected={selected ? '' : undefined}\n onClick={() => update({ hours: h })}\n className={cn(\n 'grid h-8 w-12 place-items-center rounded-sm text-sm transition-colors hover:bg-muted',\n selected && 'bg-primary text-primary-foreground hover:bg-primary',\n )}\n >\n {String(h).padStart(2, '0')}\n </button>\n );\n })}\n </div>\n <div className=\"w-px self-stretch bg-border\" />\n <div\n ref={minutesRef}\n role=\"listbox\"\n aria-label=\"Minutes\"\n className=\"flex max-h-56 flex-col gap-0.5 overflow-y-auto pl-1\"\n >\n {minutes.map((m) => {\n const selected = time?.minutes === m;\n return (\n <button\n key={m}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n data-selected={selected ? '' : undefined}\n onClick={() => update({ minutes: m })}\n className={cn(\n 'grid h-8 w-12 place-items-center rounded-sm text-sm transition-colors hover:bg-muted',\n selected && 'bg-primary text-primary-foreground hover:bg-primary',\n )}\n >\n {String(m).padStart(2, '0')}\n </button>\n );\n })}\n </div>\n </div>\n </PopoverContent>\n {name && time && (\n <input\n type=\"hidden\"\n name={name}\n value={`${String(time.hours).padStart(2, '0')}:${String(time.minutes).padStart(2, '0')}`}\n />\n )}\n </Popover>\n );\n});\n","import { forwardRef, useEffect, useRef, type ButtonHTMLAttributes } from 'react';\nimport { Calendar as CalendarIcon } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays';\nimport { selectTriggerVariants, type SelectTriggerVariants } from '../select/Select.variants';\nimport { formatISODate } from '../DateExtensions';\nimport { RangeCalendar, type DateRange } from '../rangeCalendar';\n\nexport interface DateRangePickerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChange' | 'value' | 'defaultValue'>,\n SelectTriggerVariants {\n value?: DateRange | null;\n defaultValue?: DateRange | null;\n onChange?: (range: DateRange | null) => void;\n placeholder?: string;\n format?: (date: Date) => string;\n min?: Date | null;\n max?: Date | null;\n isDisabled?: (date: Date) => boolean;\n invalid?: boolean;\n /** When `name` is set, two hidden inputs (`{name}_start`, `{name}_end`) ship the ISO values. */\n name?: string;\n}\n\nconst defaultFormat = (d: Date) =>\n d.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' });\n\nexport const DateRangePicker = forwardRef<HTMLButtonElement, DateRangePickerProps>(\n function DateRangePicker(\n {\n value,\n defaultValue,\n onChange,\n placeholder = 'Pick a range',\n format = defaultFormat,\n min,\n max,\n isDisabled: dayDisabled,\n invalid,\n name,\n size,\n state,\n className,\n disabled,\n ...rest\n },\n forwardedRef,\n ) {\n const [range, setRange] = useControlled<DateRange | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange,\n });\n const [open, setOpen] = useControlled<boolean>({\n controlled: undefined,\n default: false,\n });\n const triggerState = state ?? (invalid ? 'invalid' : 'default');\n\n // Auto-close when both ends are picked.\n const wasComplete = useRef(false);\n useEffect(() => {\n const complete = !!(range?.start && range?.end);\n if (complete && !wasComplete.current && open) {\n setOpen(false);\n }\n wasComplete.current = complete;\n }, [range, open, setOpen]);\n\n const display = range?.start\n ? range.end\n ? `${format(range.start)} → ${format(range.end)}`\n : `${format(range.start)} → …`\n : null;\n\n return (\n <Popover open={open} onOpenChange={setOpen} placement=\"bottom-start\" offset={6}>\n <PopoverTrigger asChild>\n <button\n ref={forwardedRef}\n type=\"button\"\n disabled={disabled}\n className={cn(selectTriggerVariants({ size, state: triggerState }), className)}\n {...rest}\n >\n <span className={cn('truncate', !display && 'text-subtle-foreground')}>\n {display ?? placeholder}\n </span>\n <CalendarIcon className=\"h-4 w-4 shrink-0 text-muted-foreground\" />\n </button>\n </PopoverTrigger>\n <PopoverContent bare>\n <RangeCalendar\n value={range}\n onChange={setRange}\n defaultMonth={range?.start ?? new Date()}\n min={min}\n max={max}\n isDisabled={dayDisabled}\n />\n </PopoverContent>\n {name && (\n <>\n <input type=\"hidden\" name={`${name}_start`} value={formatISODate(range?.start)} />\n <input type=\"hidden\" name={`${name}_end`} value={formatISODate(range?.end)} />\n </>\n )}\n </Popover>\n );\n },\n);\n","import { tv, type VariantProps } from '../../utils';\n\nexport const colorSwatchVariants = tv({\n base: 'inline-block shrink-0 border border-border bg-[image:linear-gradient(45deg,_#ddd_25%,_transparent_25%),_linear-gradient(-45deg,_#ddd_25%,_transparent_25%),_linear-gradient(45deg,_transparent_75%,_#ddd_75%),_linear-gradient(-45deg,_transparent_75%,_#ddd_75%)] bg-[length:8px_8px] bg-[position:0_0,_0_4px,_4px_-4px,_-4px_0px]',\n variants: {\n size: {\n xs: 'h-4 w-4',\n sm: 'h-5 w-5',\n md: 'h-6 w-6',\n lg: 'h-9 w-9',\n },\n shape: {\n square: 'rounded-sm',\n circle: 'rounded-full',\n },\n interactive: {\n true: 'cursor-pointer transition-shadow focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 hover:shadow-sm',\n false: '',\n },\n selected: {\n true: 'ring-2 ring-ring ring-offset-1',\n false: '',\n },\n disabled: {\n true: 'cursor-not-allowed opacity-50',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n shape: 'square',\n interactive: false,\n selected: false,\n disabled: false,\n },\n});\n\nexport type ColorSwatchVariants = VariantProps<typeof colorSwatchVariants>;\n","import { forwardRef, type ButtonHTMLAttributes, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { colorSwatchVariants, type ColorSwatchVariants } from './ColorSwatch.variants';\n\ntype CommonProps = Omit<ColorSwatchVariants, 'interactive'> & {\n /** Any CSS color string. Default `#000000`. */\n color?: string;\n className?: string;\n};\n\nexport type ColorSwatchProps =\n | (CommonProps & {\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;\n 'aria-label'?: string;\n } & Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className' | 'color'>)\n | (CommonProps &\n Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'color'> & {\n onClick?: undefined;\n });\n\n/**\n * Color preview chip. Renders as a `<button>` if `onClick` is provided,\n * otherwise a non-interactive `<div>`. The transparent checkerboard backdrop\n * ensures partial-alpha colors render correctly.\n */\nexport const ColorSwatch = forwardRef<HTMLElement, ColorSwatchProps>(function ColorSwatch(\n { color = '#000000', size, shape, selected, disabled, className, onClick, style, ...rest },\n ref,\n) {\n const interactive = !!onClick;\n const classes = cn(\n colorSwatchVariants({ size, shape, interactive, selected, disabled }),\n className,\n );\n // Layer the color on top of the checkerboard via box-shadow inset — keeps\n // the variant class's `bg-[image:...]` checkerboard visible behind alpha.\n const styleWithColor: React.CSSProperties = {\n ...style,\n boxShadow: `inset 0 0 0 100px ${color}`,\n };\n\n if (interactive) {\n const buttonProps = rest as ButtonHTMLAttributes<HTMLButtonElement>;\n return (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type=\"button\"\n disabled={disabled}\n onClick={onClick}\n style={styleWithColor}\n className={classes}\n {...buttonProps}\n />\n );\n }\n const divProps = rest as HTMLAttributes<HTMLDivElement>;\n return (\n <div\n ref={ref as React.Ref<HTMLDivElement>}\n style={styleWithColor}\n className={classes}\n {...divProps}\n />\n );\n});\n","// Color parsing + conversion helpers for ColorPicker, ColorArea, ColorWheel,\n// ColorSlider, ColorSwatch, ColorField. Co-located in `forms/` so imports\n// stay within-domain.\n//\n// Canonical representation: HSV (hue 0–360, saturation 0–1, value 0–1) plus\n// alpha 0–1. HSV picks the cleanest geometry for picker UIs (saturation/value\n// square, hue ring). External interface is hex strings (#RRGGBB or #RRGGBBAA).\n\nexport interface RGB {\n r: number; // 0–255\n g: number; // 0–255\n b: number; // 0–255\n a?: number; // 0–1 (default 1)\n}\n\nexport interface HSV {\n h: number; // 0–360\n s: number; // 0–1\n v: number; // 0–1\n a?: number; // 0–1\n}\n\nexport interface HSL {\n h: number; // 0–360\n s: number; // 0–1\n l: number; // 0–1\n a?: number; // 0–1\n}\n\nexport function clamp01(n: number): number {\n return Math.max(0, Math.min(1, n));\n}\n\nexport function clampHue(h: number): number {\n let v = h % 360;\n if (v < 0) v += 360;\n return v;\n}\n\nexport function clampByte(n: number): number {\n return Math.max(0, Math.min(255, Math.round(n)));\n}\n\n// ───────── hex ↔ rgb ─────────\n\n/** Parse \"#RGB\", \"#RGBA\", \"#RRGGBB\", or \"#RRGGBBAA\". Returns null on invalid. */\nexport function parseHex(input: string | null | undefined): RGB | null {\n if (!input) return null;\n const s = input.trim().replace(/^#/, '');\n let m: string | null = null;\n if (/^[0-9a-fA-F]{3}$/.test(s)) {\n m = s\n .split('')\n .map((c) => c + c)\n .join('');\n } else if (/^[0-9a-fA-F]{4}$/.test(s)) {\n m = s\n .split('')\n .map((c) => c + c)\n .join('');\n } else if (/^[0-9a-fA-F]{6}$/.test(s) || /^[0-9a-fA-F]{8}$/.test(s)) {\n m = s;\n }\n if (!m) return null;\n const r = parseInt(m.slice(0, 2), 16);\n const g = parseInt(m.slice(2, 4), 16);\n const b = parseInt(m.slice(4, 6), 16);\n const a = m.length === 8 ? parseInt(m.slice(6, 8), 16) / 255 : 1;\n return { r, g, b, a };\n}\n\n/** Format RGB → \"#RRGGBB\" (or \"#RRGGBBAA\" if alpha < 1). */\nexport function formatHex(rgb: RGB | null | undefined, options?: { withAlpha?: boolean }): string {\n if (!rgb) return '';\n const r = clampByte(rgb.r).toString(16).padStart(2, '0');\n const g = clampByte(rgb.g).toString(16).padStart(2, '0');\n const b = clampByte(rgb.b).toString(16).padStart(2, '0');\n const includeAlpha = options?.withAlpha ?? (rgb.a !== undefined && rgb.a < 1);\n if (includeAlpha) {\n const a = clampByte((rgb.a ?? 1) * 255)\n .toString(16)\n .padStart(2, '0');\n return `#${r}${g}${b}${a}`;\n }\n return `#${r}${g}${b}`;\n}\n\n// ───────── rgb ↔ hsv ─────────\n\nexport function rgbToHsv({ r, g, b, a = 1 }: RGB): HSV {\n const rn = r / 255;\n const gn = g / 255;\n const bn = b / 255;\n const max = Math.max(rn, gn, bn);\n const min = Math.min(rn, gn, bn);\n const d = max - min;\n let h = 0;\n if (d !== 0) {\n if (max === rn) h = ((gn - bn) / d) % 6;\n else if (max === gn) h = (bn - rn) / d + 2;\n else h = (rn - gn) / d + 4;\n h *= 60;\n if (h < 0) h += 360;\n }\n const s = max === 0 ? 0 : d / max;\n const v = max;\n return { h, s, v, a };\n}\n\nexport function hsvToRgb({ h, s, v, a = 1 }: HSV): RGB {\n const c = v * s;\n const hh = clampHue(h) / 60;\n const x = c * (1 - Math.abs((hh % 2) - 1));\n let r1 = 0;\n let g1 = 0;\n let b1 = 0;\n if (hh >= 0 && hh < 1) [r1, g1, b1] = [c, x, 0];\n else if (hh < 2) [r1, g1, b1] = [x, c, 0];\n else if (hh < 3) [r1, g1, b1] = [0, c, x];\n else if (hh < 4) [r1, g1, b1] = [0, x, c];\n else if (hh < 5) [r1, g1, b1] = [x, 0, c];\n else [r1, g1, b1] = [c, 0, x];\n const m = v - c;\n return {\n r: Math.round((r1 + m) * 255),\n g: Math.round((g1 + m) * 255),\n b: Math.round((b1 + m) * 255),\n a,\n };\n}\n\n// ───────── rgb ↔ hsl ─────────\n\nexport function rgbToHsl({ r, g, b, a = 1 }: RGB): HSL {\n const rn = r / 255;\n const gn = g / 255;\n const bn = b / 255;\n const max = Math.max(rn, gn, bn);\n const min = Math.min(rn, gn, bn);\n const d = max - min;\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n if (d !== 0) {\n s = d / (1 - Math.abs(2 * l - 1));\n if (max === rn) h = ((gn - bn) / d) % 6;\n else if (max === gn) h = (bn - rn) / d + 2;\n else h = (rn - gn) / d + 4;\n h *= 60;\n if (h < 0) h += 360;\n }\n return { h, s, l, a };\n}\n\nexport function hslToRgb({ h, s, l, a = 1 }: HSL): RGB {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const hh = clampHue(h) / 60;\n const x = c * (1 - Math.abs((hh % 2) - 1));\n let r1 = 0;\n let g1 = 0;\n let b1 = 0;\n if (hh >= 0 && hh < 1) [r1, g1, b1] = [c, x, 0];\n else if (hh < 2) [r1, g1, b1] = [x, c, 0];\n else if (hh < 3) [r1, g1, b1] = [0, c, x];\n else if (hh < 4) [r1, g1, b1] = [0, x, c];\n else if (hh < 5) [r1, g1, b1] = [x, 0, c];\n else [r1, g1, b1] = [c, 0, x];\n const m = l - c / 2;\n return {\n r: Math.round((r1 + m) * 255),\n g: Math.round((g1 + m) * 255),\n b: Math.round((b1 + m) * 255),\n a,\n };\n}\n\n// ───────── hex ↔ hsv (most-used composite) ─────────\n\nexport function parseColorToHsv(input: string | null | undefined): HSV | null {\n const rgb = parseHex(input);\n if (!rgb) return null;\n return rgbToHsv(rgb);\n}\n\nexport function hsvToHex(hsv: HSV, options?: { withAlpha?: boolean }): string {\n return formatHex(hsvToRgb(hsv), options);\n}\n\n// ───────── format helpers ─────────\n\nexport function formatRgbString({ r, g, b, a = 1 }: RGB): string {\n if (a < 1) return `rgba(${clampByte(r)}, ${clampByte(g)}, ${clampByte(b)}, ${a.toFixed(2)})`;\n return `rgb(${clampByte(r)}, ${clampByte(g)}, ${clampByte(b)})`;\n}\n\nexport function formatHslString({ h, s, l, a = 1 }: HSL): string {\n const hh = Math.round(clampHue(h));\n const ss = Math.round(s * 100);\n const ll = Math.round(l * 100);\n if (a < 1) return `hsla(${hh}, ${ss}%, ${ll}%, ${a.toFixed(2)})`;\n return `hsl(${hh}, ${ss}%, ${ll}%)`;\n}\n","import {\n forwardRef,\n useEffect,\n useState,\n type FocusEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { useFormControl } from '../../primitives/formControlContext/FormControlContext';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\nimport { formatHex, parseHex } from '../ColorExtensions';\nimport { ColorSwatch } from '../colorSwatch';\n\nexport interface ColorFieldProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'value' | 'defaultValue' | 'onChange' | 'size'\n >,\n InputBaseVariants {\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (hex: string | null) => void;\n swatchShape?: 'square' | 'circle';\n withAlpha?: boolean;\n}\n\nfunction commitHex(text: string, withAlpha: boolean): string | null {\n const normalised = text.startsWith('#') ? text : `#${text}`;\n const rgb = parseHex(normalised);\n if (!rgb) return null;\n return formatHex(rgb, { withAlpha });\n}\n\nexport const ColorField = forwardRef<HTMLInputElement, ColorFieldProps>(function ColorField(\n {\n value,\n defaultValue,\n onChange,\n swatchShape = 'square',\n withAlpha = false,\n size,\n state,\n className,\n id,\n disabled,\n required,\n onBlur,\n onKeyDown,\n ...rest\n },\n ref,\n) {\n const ctx = useFormControl();\n const [committed, setCommitted] = useControlled<string | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange,\n });\n const [draft, setDraft] = useState<string>(committed ?? '');\n\n // Sync draft to committed value when external `value` changes.\n useEffect(() => {\n setDraft(committed ?? '');\n }, [committed]);\n\n const commit = () => {\n if (!draft) {\n setCommitted(null);\n return;\n }\n const next = commitHex(draft, withAlpha);\n if (next) {\n setCommitted(next);\n setDraft(next);\n } else {\n // Invalid — revert.\n setDraft(committed ?? '');\n }\n };\n\n return (\n <div className=\"relative inline-flex w-full items-stretch\">\n <span className=\"pointer-events-none absolute inset-y-0 left-2 flex items-center\">\n <ColorSwatch color={committed ?? '#00000000'} size=\"sm\" shape={swatchShape} />\n </span>\n <input\n ref={ref}\n type=\"text\"\n id={id ?? ctx?.id}\n disabled={disabled ?? ctx?.isDisabled}\n required={required ?? ctx?.isRequired}\n aria-invalid={ctx?.isInvalid || undefined}\n aria-describedby={ctx ? `${ctx.helperId} ${ctx.errorId}` : undefined}\n spellCheck={false}\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n onBlur={(e: FocusEvent<HTMLInputElement>) => {\n onBlur?.(e);\n commit();\n }}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (e.key === 'Enter') {\n e.preventDefault();\n commit();\n }\n }}\n className={cn(\n inputBaseVariants({ size, state: state ?? (ctx?.isInvalid ? 'invalid' : 'default') }),\n 'pl-9 font-mono uppercase',\n className,\n )}\n {...rest}\n />\n </div>\n );\n});\n","import {\n forwardRef,\n useCallback,\n useRef,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { clamp01, clampHue, hsvToHex, type HSV } from '../ColorExtensions';\n\nexport type ColorChannel = 'hue' | 'saturation' | 'value' | 'alpha';\n\nexport interface ColorSliderProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue' | 'color'> {\n channel?: ColorChannel;\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n color?: HSV;\n step?: number;\n disabled?: boolean;\n 'aria-label'?: string;\n}\n\nfunction channelMax(channel: ColorChannel): number {\n return channel === 'hue' ? 360 : 1;\n}\n\nfunction defaultStep(channel: ColorChannel): number {\n return channel === 'hue' ? 1 : 0.01;\n}\n\nfunction buildGradient(channel: ColorChannel, color: HSV | undefined): string {\n if (channel === 'hue') {\n return 'linear-gradient(to right, hsl(0,100%,50%), hsl(60,100%,50%), hsl(120,100%,50%), hsl(180,100%,50%), hsl(240,100%,50%), hsl(300,100%,50%), hsl(360,100%,50%))';\n }\n const ctx: HSV = color ?? { h: 0, s: 1, v: 1 };\n if (channel === 'saturation') {\n const start = hsvToHex({ h: ctx.h, s: 0, v: ctx.v });\n const end = hsvToHex({ h: ctx.h, s: 1, v: ctx.v });\n return `linear-gradient(to right, ${start}, ${end})`;\n }\n if (channel === 'value') {\n const end = hsvToHex({ h: ctx.h, s: ctx.s, v: 1 });\n return `linear-gradient(to right, #000000, ${end})`;\n }\n // alpha\n const opaque = hsvToHex({ h: ctx.h, s: ctx.s, v: ctx.v });\n return `linear-gradient(to right, transparent, ${opaque})`;\n}\n\nconst CHECKERBOARD: CSSProperties = {\n backgroundImage:\n 'linear-gradient(45deg, #ddd 25%, transparent 25%), linear-gradient(-45deg, #ddd 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #ddd 75%), linear-gradient(-45deg, transparent 75%, #ddd 75%)',\n backgroundSize: '8px 8px',\n backgroundPosition: '0 0, 0 4px, 4px -4px, -4px 0px',\n};\n\nexport const ColorSlider = forwardRef<HTMLDivElement, ColorSliderProps>(function ColorSlider(\n {\n channel = 'hue',\n value,\n defaultValue,\n onChange,\n color,\n step,\n disabled = false,\n className,\n 'aria-label': ariaLabel,\n ...rest\n },\n forwardedRef,\n) {\n const max = channelMax(channel);\n const stepValue = step ?? defaultStep(channel);\n const [val, setVal] = useControlled<number>({\n controlled: value,\n default: defaultValue ?? 0,\n onChange,\n });\n\n const trackRef = useRef<HTMLDivElement | null>(null);\n\n const updateFromClientX = useCallback(\n (clientX: number) => {\n const track = trackRef.current;\n if (!track) return;\n const rect = track.getBoundingClientRect();\n const ratio = clamp01((clientX - rect.left) / rect.width);\n const next = ratio * max;\n setVal(channel === 'hue' ? clampHue(next) : clamp01(next));\n },\n [channel, max, setVal],\n );\n\n const handlePointerDown = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n (e.target as Element).setPointerCapture?.(e.pointerId);\n updateFromClientX(e.clientX);\n },\n [disabled, updateFromClientX],\n );\n\n const handlePointerMove = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n if (e.buttons !== 1) return;\n updateFromClientX(e.clientX);\n },\n [disabled, updateFromClientX],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n let next = val;\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n next = val + stepValue;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n next = val - stepValue;\n break;\n case 'PageUp':\n next = val + stepValue * 10;\n break;\n case 'PageDown':\n next = val - stepValue * 10;\n break;\n case 'Home':\n next = 0;\n break;\n case 'End':\n next = max;\n break;\n default:\n return;\n }\n e.preventDefault();\n setVal(channel === 'hue' ? clampHue(next) : clamp01(next));\n },\n [channel, disabled, max, setVal, stepValue, val],\n );\n\n const ratio = channel === 'hue' ? clampHue(val) / 360 : clamp01(val);\n const gradient = buildGradient(channel, color);\n const trackStyle: CSSProperties = {\n backgroundImage: gradient,\n ...(channel === 'alpha' ? { backgroundColor: 'transparent' } : null),\n };\n\n return (\n <div\n ref={forwardedRef}\n className={cn('relative inline-flex w-full select-none items-center', className)}\n {...rest}\n >\n {channel === 'alpha' && (\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 rounded-full\"\n style={CHECKERBOARD}\n />\n )}\n <div\n ref={composeRefs(trackRef)}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-label={ariaLabel ?? `${channel} slider`}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={Math.round(val * 100) / 100}\n aria-disabled={disabled || undefined}\n aria-orientation=\"horizontal\"\n data-disabled={disabled ? '' : undefined}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onKeyDown={handleKeyDown}\n style={trackStyle}\n className={cn(\n 'relative h-3 w-full rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n disabled && 'pointer-events-none opacity-50',\n )}\n >\n <div\n aria-hidden=\"true\"\n className=\"absolute top-1/2 h-4 w-4 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white bg-transparent shadow-md ring-1 ring-black/20\"\n style={{ left: `${ratio * 100}%` }}\n />\n </div>\n </div>\n );\n});\n","import {\n forwardRef,\n useCallback,\n useRef,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { clamp01, hsvToHex } from '../ColorExtensions';\n\nexport interface ColorAreaChange {\n saturation: number;\n value: number;\n}\n\nexport interface ColorAreaProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n hue?: number;\n saturation?: number;\n defaultSaturation?: number;\n value?: number;\n defaultValue?: number;\n onChange?: (next: ColorAreaChange) => void;\n step?: number;\n disabled?: boolean;\n 'aria-label'?: string;\n}\n\nexport const ColorArea = forwardRef<HTMLDivElement, ColorAreaProps>(function ColorArea(\n {\n hue = 0,\n saturation,\n defaultSaturation,\n value,\n defaultValue,\n onChange,\n step = 0.01,\n disabled = false,\n className,\n 'aria-label': ariaLabel = 'Saturation and value',\n ...rest\n },\n forwardedRef,\n) {\n const [s, setS] = useControlled<number>({\n controlled: saturation,\n default: defaultSaturation ?? 1,\n });\n const [v, setV] = useControlled<number>({\n controlled: value,\n default: defaultValue ?? 1,\n });\n\n const trackRef = useRef<HTMLDivElement | null>(null);\n\n const emit = useCallback(\n (nextS: number, nextV: number) => {\n const cs = clamp01(nextS);\n const cv = clamp01(nextV);\n setS(cs);\n setV(cv);\n onChange?.({ saturation: cs, value: cv });\n },\n [onChange, setS, setV],\n );\n\n const updateFromClient = useCallback(\n (clientX: number, clientY: number) => {\n const track = trackRef.current;\n if (!track) return;\n const rect = track.getBoundingClientRect();\n const xRatio = clamp01((clientX - rect.left) / rect.width);\n const yRatio = clamp01((clientY - rect.top) / rect.height);\n emit(xRatio, 1 - yRatio);\n },\n [emit],\n );\n\n const handlePointerDown = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n (e.target as Element).setPointerCapture?.(e.pointerId);\n updateFromClient(e.clientX, e.clientY);\n },\n [disabled, updateFromClient],\n );\n\n const handlePointerMove = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled || e.buttons !== 1) return;\n updateFromClient(e.clientX, e.clientY);\n },\n [disabled, updateFromClient],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n const big = step * 10;\n let nextS = s;\n let nextV = v;\n switch (e.key) {\n case 'ArrowRight':\n nextS = s + step;\n break;\n case 'ArrowLeft':\n nextS = s - step;\n break;\n case 'ArrowUp':\n nextV = v + step;\n break;\n case 'ArrowDown':\n nextV = v - step;\n break;\n case 'PageUp':\n nextV = v + big;\n break;\n case 'PageDown':\n nextV = v - big;\n break;\n case 'Home':\n nextS = 0;\n nextV = 1;\n break;\n case 'End':\n nextS = 1;\n nextV = 0;\n break;\n default:\n return;\n }\n e.preventDefault();\n emit(nextS, nextV);\n },\n [disabled, emit, s, step, v],\n );\n\n const baseColor = `hsl(${hue}, 100%, 50%)`;\n const trackStyle: CSSProperties = {\n backgroundImage: `linear-gradient(to bottom, transparent, #000), linear-gradient(to right, #fff, transparent)`,\n backgroundColor: baseColor,\n };\n\n const thumbColor = hsvToHex({ h: hue, s, v });\n const thumbStyle: CSSProperties = {\n left: `${s * 100}%`,\n top: `${(1 - v) * 100}%`,\n backgroundColor: thumbColor,\n };\n\n return (\n <div\n ref={composeRefs(forwardedRef, trackRef)}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-label={ariaLabel}\n aria-valuetext={`saturation ${(s * 100).toFixed(0)}%, value ${(v * 100).toFixed(0)}%`}\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? '' : undefined}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onKeyDown={handleKeyDown}\n style={trackStyle}\n className={cn(\n 'relative aspect-square w-full select-none rounded-md border border-border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n {...rest}\n >\n <div\n aria-hidden=\"true\"\n style={thumbStyle}\n className=\"absolute h-4 w-4 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow-md ring-1 ring-black/20\"\n />\n </div>\n );\n});\n","import {\n forwardRef,\n useCallback,\n useRef,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { clampHue } from '../ColorExtensions';\n\nexport interface ColorWheelProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n value?: number;\n defaultValue?: number;\n onChange?: (hue: number) => void;\n size?: number;\n thickness?: number;\n step?: number;\n disabled?: boolean;\n 'aria-label'?: string;\n}\n\nfunction angleFromCenter(clientX: number, clientY: number, rect: DOMRect): number {\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n const dx = clientX - cx;\n const dy = clientY - cy;\n const angle = (Math.atan2(dx, -dy) * 180) / Math.PI;\n return (angle + 360) % 360;\n}\n\nexport const ColorWheel = forwardRef<HTMLDivElement, ColorWheelProps>(function ColorWheel(\n {\n value,\n defaultValue,\n onChange,\n size = 200,\n thickness = 30,\n step = 1,\n disabled = false,\n className,\n 'aria-label': ariaLabel = 'Hue',\n ...rest\n },\n forwardedRef,\n) {\n const [hue, setHue] = useControlled<number>({\n controlled: value,\n default: defaultValue ?? 0,\n onChange,\n });\n const trackRef = useRef<HTMLDivElement | null>(null);\n\n const updateFromClient = useCallback(\n (clientX: number, clientY: number) => {\n const track = trackRef.current;\n if (!track) return;\n setHue(clampHue(angleFromCenter(clientX, clientY, track.getBoundingClientRect())));\n },\n [setHue],\n );\n\n const handlePointerDown = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n (e.target as Element).setPointerCapture?.(e.pointerId);\n updateFromClient(e.clientX, e.clientY);\n },\n [disabled, updateFromClient],\n );\n\n const handlePointerMove = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled || e.buttons !== 1) return;\n updateFromClient(e.clientX, e.clientY);\n },\n [disabled, updateFromClient],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n let next = hue;\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n next = hue + step;\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n next = hue - step;\n break;\n case 'PageUp':\n next = hue + step * 10;\n break;\n case 'PageDown':\n next = hue - step * 10;\n break;\n case 'Home':\n next = 0;\n break;\n case 'End':\n next = 359;\n break;\n default:\n return;\n }\n e.preventDefault();\n setHue(clampHue(next));\n },\n [disabled, hue, setHue, step],\n );\n\n const radius = (size - thickness) / 2;\n const angleRad = (hue * Math.PI) / 180;\n const thumbX = size / 2 + radius * Math.sin(angleRad);\n const thumbY = size / 2 - radius * Math.cos(angleRad);\n\n const wheelStyle: CSSProperties = {\n width: size,\n height: size,\n background: 'conic-gradient(from 0deg, hsl(0,100%,50%), hsl(60,100%,50%), hsl(120,100%,50%), hsl(180,100%,50%), hsl(240,100%,50%), hsl(300,100%,50%), hsl(360,100%,50%))',\n WebkitMaskImage: `radial-gradient(circle, transparent ${(radius - thickness / 2)}px, black ${(radius - thickness / 2 + 1)}px, black ${(radius + thickness / 2)}px, transparent ${(radius + thickness / 2 + 1)}px)`,\n maskImage: `radial-gradient(circle, transparent ${(radius - thickness / 2)}px, black ${(radius - thickness / 2 + 1)}px, black ${(radius + thickness / 2)}px, transparent ${(radius + thickness / 2 + 1)}px)`,\n };\n\n return (\n <div\n ref={composeRefs(forwardedRef, trackRef)}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-label={ariaLabel}\n aria-valuemin={0}\n aria-valuemax={360}\n aria-valuenow={Math.round(hue)}\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? '' : undefined}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onKeyDown={handleKeyDown}\n style={wheelStyle}\n className={cn(\n 'relative inline-block select-none rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n {...rest}\n >\n <div\n aria-hidden=\"true\"\n style={{\n left: thumbX,\n top: thumbY,\n backgroundColor: `hsl(${hue}, 100%, 50%)`,\n }}\n className=\"pointer-events-none absolute h-5 w-5 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow-md ring-1 ring-black/30\"\n />\n </div>\n );\n});\n","import { type HTMLAttributes, type KeyboardEvent } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { RovingFocusGroup, useRovingFocusItem } from '../../primitives';\nimport { ColorSwatch, type ColorSwatchVariants } from '../colorSwatch';\n\nexport interface ColorSwatchPickerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n colors: string[];\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (color: string) => void;\n swatchSize?: ColorSwatchVariants['size'];\n swatchShape?: ColorSwatchVariants['shape'];\n disabled?: boolean;\n}\n\ninterface ItemProps {\n color: string;\n selected: boolean;\n disabled: boolean;\n size?: ColorSwatchVariants['size'];\n shape?: ColorSwatchVariants['shape'];\n onSelect: (color: string) => void;\n}\n\nfunction ColorSwatchItem({ color, selected, disabled, size, shape, onSelect }: ItemProps) {\n const roving = useRovingFocusItem();\n return (\n <ColorSwatch\n ref={roving.ref as never}\n color={color}\n size={size}\n shape={shape}\n selected={selected}\n disabled={disabled}\n tabIndex={roving.tabIndex}\n onClick={() => onSelect(color)}\n onKeyDown={(e: KeyboardEvent<HTMLButtonElement>) => {\n roving.onKeyDown(e);\n if (e.defaultPrevented) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect(color);\n }\n }}\n onFocus={roving.onFocus}\n data-roving-focus-item\n aria-label={color}\n />\n );\n}\n\nexport function ColorSwatchPicker({\n colors,\n value,\n defaultValue,\n onChange,\n swatchSize = 'md',\n swatchShape = 'square',\n disabled = false,\n className,\n ...rest\n}: ColorSwatchPickerProps) {\n const [selected, setSelected] = useControlled<string | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange: onChange as ((v: string | null) => void) | undefined,\n });\n\n return (\n <RovingFocusGroup\n orientation=\"both\"\n loop\n className={cn('flex flex-wrap gap-1.5', className)}\n {...rest}\n >\n {colors.map((c) => (\n <ColorSwatchItem\n key={c}\n color={c}\n selected={selected === c}\n disabled={disabled}\n size={swatchSize}\n shape={swatchShape}\n onSelect={(color) => setSelected(color)}\n />\n ))}\n </RovingFocusGroup>\n );\n}\n","import { forwardRef, useEffect, useState } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays';\nimport {\n hsvToHex,\n parseColorToHsv,\n type HSV,\n} from '../ColorExtensions';\nimport { ColorSwatch, type ColorSwatchVariants } from '../colorSwatch';\nimport { ColorArea } from '../colorArea';\nimport { ColorSlider } from '../colorSlider';\nimport { ColorField } from '../colorField';\nimport { ColorSwatchPicker } from '../colorSwatchPicker';\n\nexport interface ColorPickerProps {\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (hex: string) => void;\n withAlpha?: boolean;\n presets?: string[];\n triggerSize?: ColorSwatchVariants['size'];\n disabled?: boolean;\n name?: string;\n className?: string;\n 'aria-label'?: string;\n}\n\nconst FALLBACK_HSV: HSV = { h: 217, s: 0.91, v: 0.96, a: 1 };\n\nexport const ColorPicker = forwardRef<HTMLButtonElement, ColorPickerProps>(function ColorPicker(\n {\n value,\n defaultValue = '#3b82f6',\n onChange,\n withAlpha = false,\n presets,\n triggerSize = 'md',\n disabled = false,\n name,\n className,\n 'aria-label': ariaLabel = 'Pick a color',\n },\n ref,\n) {\n const [hex, setHex] = useControlled<string | null>({\n controlled: value,\n default: defaultValue ?? null,\n onChange: onChange as ((v: string | null) => void) | undefined,\n });\n\n // Internal HSV state (kept in sync with hex). HSV preserves picker geometry\n // when the user moves to a fully-desaturated value (otherwise hue collapses).\n const [hsv, setHsvState] = useState<HSV>(() => parseColorToHsv(hex) ?? FALLBACK_HSV);\n\n useEffect(() => {\n if (!hex) return;\n const parsed = parseColorToHsv(hex);\n if (!parsed) return;\n // Only update internal HSV if the *committed* hex differs from what our\n // HSV currently produces — avoids hue collapsing when SV passes through 0.\n const currentHex = hsvToHex(hsv, { withAlpha });\n if (currentHex.toLowerCase() !== hex.toLowerCase()) {\n setHsvState({ ...parsed, a: hsv.a });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hex, withAlpha]);\n\n const updateHsv = (next: HSV) => {\n setHsvState(next);\n setHex(hsvToHex(next, { withAlpha }));\n };\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n type=\"button\"\n aria-label={ariaLabel}\n disabled={disabled}\n className={cn(\n 'inline-flex items-center gap-2 rounded-md border border-border bg-background px-2 py-1 text-sm transition-colors hover:border-border-strong focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60',\n className,\n )}\n >\n <ColorSwatch color={hex ?? '#00000000'} size={triggerSize} />\n <span className=\"font-mono uppercase\">{hex ?? '—'}</span>\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"flex w-64 flex-col gap-3\">\n <ColorArea\n hue={hsv.h}\n saturation={hsv.s}\n value={hsv.v}\n onChange={({ saturation, value }) => updateHsv({ ...hsv, s: saturation, v: value })}\n />\n <ColorSlider\n channel=\"hue\"\n value={hsv.h}\n onChange={(h) => updateHsv({ ...hsv, h })}\n aria-label=\"Hue\"\n />\n {withAlpha && (\n <ColorSlider\n channel=\"alpha\"\n value={hsv.a ?? 1}\n color={hsv}\n onChange={(a) => updateHsv({ ...hsv, a })}\n aria-label=\"Alpha\"\n />\n )}\n <ColorField\n value={hex}\n onChange={(next) => setHex(next)}\n withAlpha={withAlpha}\n />\n {presets && presets.length > 0 && (\n <ColorSwatchPicker\n colors={presets}\n value={hex}\n onChange={setHex}\n swatchSize=\"sm\"\n />\n )}\n </PopoverContent>\n {name && <input type=\"hidden\" name={name} value={hex ?? ''} />}\n </Popover>\n );\n});\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Check } from 'lucide-react';\nimport { cn, dataAttr } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { RovingFocusGroup, useRovingFocusItem } from '../../primitives';\n\ninterface StepperContextValue {\n value: string;\n setValue: (value: string) => void;\n orientation: 'horizontal' | 'vertical';\n baseId: string;\n registerStep: (value: string) => void;\n unregisterStep: (value: string) => void;\n stepsRef: React.MutableRefObject<string[]>;\n}\n\nconst StepperContext = createContext<StepperContextValue | null>(null);\n\nfunction useStepperContext() {\n const ctx = useContext(StepperContext);\n if (!ctx) throw new Error('Stepper.* must be used inside <Stepper>');\n return ctx;\n}\n\nexport interface StepperProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue'> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n orientation?: 'horizontal' | 'vertical';\n}\n\nexport const Stepper = forwardRef<HTMLDivElement, StepperProps>(function Stepper(\n {\n value,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n className,\n children,\n ...rest\n },\n ref,\n) {\n const [active, setActive] = useControlled<string>({\n controlled: value,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const baseId = useId();\n const stepsRef = useRef<string[]>([]);\n\n const registerStep = useCallback((v: string) => {\n if (!stepsRef.current.includes(v)) stepsRef.current.push(v);\n }, []);\n const unregisterStep = useCallback((v: string) => {\n stepsRef.current = stepsRef.current.filter((x) => x !== v);\n }, []);\n\n const ctx = useMemo<StepperContextValue>(\n () => ({\n value: active,\n setValue: setActive,\n orientation,\n baseId,\n registerStep,\n unregisterStep,\n stepsRef,\n }),\n [active, setActive, orientation, baseId, registerStep, unregisterStep],\n );\n\n return (\n <StepperContext.Provider value={ctx}>\n <div\n ref={ref}\n data-orientation={orientation}\n className={cn(\n orientation === 'vertical' ? 'flex gap-4' : 'flex flex-col gap-4',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </StepperContext.Provider>\n );\n});\n\nexport interface StepperListProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\nexport const StepperList = forwardRef<HTMLDivElement, StepperListProps>(function StepperList(\n { className, children, ...rest },\n ref,\n) {\n const ctx = useStepperContext();\n return (\n <RovingFocusGroup\n ref={ref as never}\n orientation={ctx.orientation}\n role=\"tablist\"\n aria-orientation={ctx.orientation}\n data-orientation={ctx.orientation}\n className={cn(\n 'flex',\n ctx.orientation === 'vertical' ? 'flex-col gap-4' : 'flex-row items-center gap-2',\n className,\n )}\n {...rest}\n >\n {children}\n </RovingFocusGroup>\n );\n});\n\nexport interface StepperStepProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {\n value: string;\n description?: ReactNode;\n disabled?: boolean;\n children: ReactNode;\n}\n\nexport const StepperStep = forwardRef<HTMLButtonElement, StepperStepProps>(function StepperStep(\n { value, description, disabled = false, className, onClick, children, ...rest },\n ref,\n) {\n const ctx = useStepperContext();\n const roving = useRovingFocusItem();\n\n useEffect(() => {\n ctx.registerStep(value);\n return () => ctx.unregisterStep(value);\n }, [ctx, value]);\n\n const ordered = ctx.stepsRef.current;\n const idx = ordered.indexOf(value);\n const activeIdx = ordered.indexOf(ctx.value);\n const status: 'pending' | 'active' | 'complete' =\n idx < activeIdx ? 'complete' : idx === activeIdx ? 'active' : 'pending';\n\n const stepId = `${ctx.baseId}-step-${value}`;\n const panelId = `${ctx.baseId}-panel-${value}`;\n const stepNumber = idx + 1;\n\n return (\n <div className=\"flex flex-1 items-center gap-2\">\n <button\n ref={(node) => {\n roving.ref(node);\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n id={stepId}\n type=\"button\"\n role=\"tab\"\n aria-selected={status === 'active'}\n aria-controls={panelId}\n aria-current={status === 'active' ? 'step' : undefined}\n data-status={status}\n data-disabled={dataAttr(disabled)}\n tabIndex={roving.tabIndex}\n disabled={disabled}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n ctx.setValue(value);\n }}\n onFocus={roving.onFocus}\n onKeyDown={roving.onKeyDown}\n className={cn(\n 'group flex items-center gap-2 text-left text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n {...rest}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n 'grid h-7 w-7 shrink-0 place-items-center rounded-full border-2 text-xs font-semibold transition-colors',\n status === 'pending' && 'border-border text-muted-foreground',\n status === 'active' && 'border-primary bg-primary text-primary-foreground',\n status === 'complete' && 'border-primary bg-primary text-primary-foreground',\n )}\n >\n {status === 'complete' ? <Check className=\"h-4 w-4\" /> : stepNumber}\n </span>\n <span className=\"flex flex-col\">\n <span\n className={cn(\n 'font-medium',\n status === 'pending' ? 'text-muted-foreground' : 'text-foreground',\n )}\n >\n {children}\n </span>\n {description && (\n <span className=\"text-xs text-muted-foreground\">{description}</span>\n )}\n </span>\n </button>\n {ctx.orientation === 'horizontal' && idx < ordered.length - 1 && (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'h-px flex-1 transition-colors',\n status === 'pending' ? 'bg-border' : 'bg-primary',\n )}\n />\n )}\n </div>\n );\n});\n\nexport interface StepperPanelProps extends HTMLAttributes<HTMLDivElement> {\n value: string;\n children: ReactNode;\n}\n\nexport const StepperPanel = forwardRef<HTMLDivElement, StepperPanelProps>(function StepperPanel(\n { value, className, children, ...rest },\n ref,\n) {\n const ctx = useStepperContext();\n if (ctx.value !== value) return null;\n const stepId = `${ctx.baseId}-step-${value}`;\n const panelId = `${ctx.baseId}-panel-${value}`;\n return (\n <div\n ref={ref}\n id={panelId}\n role=\"tabpanel\"\n aria-labelledby={stepId}\n tabIndex={0}\n className={cn('flex-1 outline-none', className)}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\ntype StepperComponent = typeof Stepper & {\n List: typeof StepperList;\n Step: typeof StepperStep;\n Panel: typeof StepperPanel;\n};\n\n(Stepper as StepperComponent).List = StepperList;\n(Stepper as StepperComponent).Step = StepperStep;\n(Stepper as StepperComponent).Panel = StepperPanel;\n\nexport default Stepper as StepperComponent;\n","import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Tag, type TagVariants } from '../../display/tag';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\nexport interface TagsInputProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'value' | 'defaultValue' | 'onChange' | 'size'\n >,\n InputBaseVariants {\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (tags: string[]) => void;\n inputValue?: string;\n onInputChange?: (input: string) => void;\n /** Characters that commit the current input. Enter and Tab always do. */\n delimiters?: string[];\n /** Predicate gating committed tags. Default: non-empty after trim. */\n validate?: (tag: string) => boolean;\n allowDuplicates?: boolean;\n max?: number;\n invalid?: boolean;\n /** Hidden input emits comma-joined value. */\n name?: string;\n tagVariant?: TagVariants['variant'];\n}\n\n/**\n * Free-form tag entry. Type → Enter/comma/Tab commits. Backspace at empty\n * input removes the last tag. Renders chips via `display/Tag`.\n */\nexport const TagsInput = forwardRef<HTMLInputElement, TagsInputProps>(function TagsInput(\n {\n value,\n defaultValue,\n onValueChange,\n inputValue,\n onInputChange,\n placeholder = 'Add tag…',\n delimiters = [','],\n validate = (t) => t.trim().length > 0,\n allowDuplicates = false,\n max,\n invalid,\n disabled,\n readOnly,\n name,\n tagVariant = 'neutral',\n size,\n className,\n onKeyDown,\n onBlur,\n ...rest\n },\n forwardedRef,\n) {\n const [tags, setTags] = useControlled({\n controlled: value,\n default: defaultValue ?? [],\n onChange: onValueChange,\n });\n const [text, setText] = useControlled({\n controlled: inputValue,\n default: '',\n onChange: onInputChange,\n });\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [pendingDelete, setPendingDelete] = useState(false);\n const state = invalid ? 'invalid' : 'default';\n\n const commit = useCallback(\n (raw: string) => {\n const trimmed = raw.trim();\n if (!trimmed || !validate(trimmed)) return;\n if (!allowDuplicates && tags.includes(trimmed)) return;\n if (max != null && tags.length >= max) return;\n setTags([...tags, trimmed]);\n setText('');\n },\n [tags, validate, allowDuplicates, max, setTags, setText],\n );\n\n const removeAt = useCallback(\n (idx: number) => {\n setTags(tags.filter((_, i) => i !== idx));\n },\n [tags, setTags],\n );\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled || readOnly) return;\n if (e.key === 'Enter' || (e.key === 'Tab' && text)) {\n if (text) {\n e.preventDefault();\n commit(text);\n setPendingDelete(false);\n }\n return;\n }\n if (delimiters.includes(e.key)) {\n e.preventDefault();\n commit(text);\n setPendingDelete(false);\n return;\n }\n if (e.key === 'Backspace' && !text && tags.length > 0) {\n if (pendingDelete) {\n e.preventDefault();\n removeAt(tags.length - 1);\n setPendingDelete(false);\n } else {\n setPendingDelete(true);\n }\n return;\n }\n setPendingDelete(false);\n };\n\n const handleContainerClick = (e: MouseEvent<HTMLDivElement>) => {\n if (e.target === e.currentTarget) inputRef.current?.focus();\n };\n\n return (\n <div\n role=\"group\"\n onClick={handleContainerClick}\n data-disabled={disabled || undefined}\n data-readonly={readOnly || undefined}\n data-invalid={invalid || undefined}\n className={cn(\n inputBaseVariants({ size, state }),\n 'h-auto min-h-10 flex-wrap items-center gap-1.5 py-1.5',\n disabled && 'cursor-not-allowed opacity-60',\n className,\n )}\n >\n {tags.map((t, i) => (\n <Tag\n key={`${t}-${i}`}\n variant={tagVariant}\n data-pending-delete={pendingDelete && i === tags.length - 1 ? '' : undefined}\n onClose={!disabled && !readOnly ? () => removeAt(i) : undefined}\n className={cn(pendingDelete && i === tags.length - 1 && 'ring-1 ring-ring')}\n >\n {t}\n </Tag>\n ))}\n <input\n {...rest}\n ref={composeRefs(forwardedRef, inputRef)}\n type=\"text\"\n value={text}\n placeholder={tags.length === 0 ? placeholder : undefined}\n disabled={disabled}\n readOnly={readOnly}\n aria-invalid={invalid || undefined}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={(e) => {\n onBlur?.(e);\n if (text) commit(text);\n setPendingDelete(false);\n }}\n className=\"min-w-[6rem] flex-1 border-0 bg-transparent p-0 text-sm outline-none placeholder:text-subtle-foreground disabled:cursor-not-allowed\"\n />\n {name && <input type=\"hidden\" name={name} value={tags.join(',')} />}\n </div>\n );\n});\nTagsInput.displayName = 'TagsInput';\n","import {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useRef,\n useState,\n type DragEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { UploadCloud } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { Icon } from '../../icons';\n\nexport type FileRejectionReason = 'type' | 'size' | 'count';\n\nexport interface FileRejection {\n file: File;\n reason: FileRejectionReason;\n}\n\nexport interface FileUploadProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'value' | 'onChange' | 'children' | 'size'\n > {\n /** Per-file byte cap. Files exceeding this drop into `rejected`. */\n maxSize?: number;\n /** Cap total accepted files (multiple mode). Excess go to `rejected`. */\n maxFiles?: number;\n onFilesChange?: (accepted: File[], rejected: FileRejection[]) => void;\n invalid?: boolean;\n label?: ReactNode;\n hint?: ReactNode;\n children?: ReactNode;\n}\n\nfunction matchesAccept(file: File, accept?: string): boolean {\n if (!accept) return true;\n const tokens = accept.split(',').map((t) => t.trim().toLowerCase()).filter(Boolean);\n if (tokens.length === 0) return true;\n const fileType = file.type.toLowerCase();\n const fileName = file.name.toLowerCase();\n return tokens.some((t) => {\n if (t.startsWith('.')) return fileName.endsWith(t);\n if (t.endsWith('/*')) return fileType.startsWith(t.slice(0, -1));\n return fileType === t;\n });\n}\n\n/**\n * Drag-drop file zone with click-to-pick fallback. Validates against\n * `accept`, `maxSize`, and `maxFiles`. Emits accepted + rejected lists via\n * `onFilesChange`. The zone itself is a `role=\"button\"` — Enter/Space opens\n * the native file picker.\n */\nexport const FileUpload = forwardRef<HTMLInputElement, FileUploadProps>(function FileUpload(\n {\n accept,\n multiple = false,\n maxSize,\n maxFiles,\n onFilesChange,\n disabled,\n invalid,\n label = 'Drop files here, or click to browse',\n hint,\n children,\n className,\n name,\n ...rest\n },\n forwardedRef,\n) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n useImperativeHandle(forwardedRef, () => inputRef.current as HTMLInputElement);\n const dragCounter = useRef(0);\n const [dragState, setDragState] = useState<'idle' | 'over' | 'reject'>('idle');\n\n const partition = useCallback(\n (files: FileList | File[]): [File[], FileRejection[]] => {\n const accepted: File[] = [];\n const rejected: FileRejection[] = [];\n const arr = Array.from(files);\n for (const f of arr) {\n if (!matchesAccept(f, accept)) {\n rejected.push({ file: f, reason: 'type' });\n continue;\n }\n if (maxSize != null && f.size > maxSize) {\n rejected.push({ file: f, reason: 'size' });\n continue;\n }\n accepted.push(f);\n }\n if (maxFiles != null && accepted.length > maxFiles) {\n const overflow = accepted.splice(maxFiles);\n for (const f of overflow) rejected.push({ file: f, reason: 'count' });\n }\n return [accepted, rejected];\n },\n [accept, maxSize, maxFiles],\n );\n\n const openPicker = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleDragEnter = (e: DragEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n dragCounter.current += 1;\n const items = e.dataTransfer?.items;\n let reject = false;\n if (items && (accept || maxSize)) {\n // We can only inspect type at dragenter — size is not exposed pre-drop.\n if (accept) {\n const tokens = accept.split(',').map((t) => t.trim().toLowerCase()).filter(Boolean);\n for (let i = 0; i < items.length; i++) {\n const it = items[i];\n if (!it || it.kind !== 'file') continue;\n const t = it.type.toLowerCase();\n const ok = tokens.some((tk) => {\n if (tk.startsWith('.')) return false; // can't check extension here\n if (tk.endsWith('/*')) return t.startsWith(tk.slice(0, -1));\n return t === tk;\n });\n if (!ok) {\n reject = true;\n break;\n }\n }\n }\n }\n setDragState(reject ? 'reject' : 'over');\n };\n\n const handleDragOver = (e: DragEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n e.dataTransfer.dropEffect = 'copy';\n };\n\n const handleDragLeave = (e: DragEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n dragCounter.current -= 1;\n if (dragCounter.current <= 0) {\n dragCounter.current = 0;\n setDragState('idle');\n }\n };\n\n const handleDrop = (e: DragEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n dragCounter.current = 0;\n setDragState('idle');\n const files = e.dataTransfer?.files;\n if (!files || files.length === 0) return;\n const [accepted, rejected] = partition(files);\n onFilesChange?.(accepted, rejected);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n openPicker();\n }\n };\n\n const showError = invalid || dragState === 'reject';\n\n return (\n <div className={cn('flex flex-col gap-3', className)}>\n <div\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n data-drag-state={dragState}\n data-invalid={showError || undefined}\n onClick={openPicker}\n onKeyDown={handleKeyDown}\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n 'flex flex-col items-center justify-center gap-2 rounded-md border-2 border-dashed border-input bg-background px-6 py-10 text-center text-sm text-muted-foreground transition-colors',\n 'hover:border-border-strong hover:bg-muted/40',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n dragState === 'over' && 'border-primary bg-primary-soft/30 text-foreground',\n showError && 'border-destructive bg-destructive-soft/30 text-destructive',\n disabled && 'cursor-not-allowed opacity-60 hover:border-input hover:bg-background',\n )}\n >\n <Icon\n icon={UploadCloud}\n size={28}\n className={cn(\n 'text-muted-foreground',\n dragState === 'over' && 'text-primary',\n showError && 'text-destructive',\n )}\n />\n <div className=\"font-medium text-foreground\">{label}</div>\n {hint && <div className=\"text-xs\">{hint}</div>}\n <input\n {...rest}\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n name={name}\n className=\"sr-only\"\n onChange={(e) => {\n const files = e.target.files;\n if (!files || files.length === 0) return;\n const [accepted, rejected] = partition(files);\n onFilesChange?.(accepted, rejected);\n // reset so picking the same file again still fires\n e.target.value = '';\n }}\n />\n </div>\n {children}\n </div>\n );\n});\nFileUpload.displayName = 'FileUpload';\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { Check, X } from 'lucide-react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Icon } from '../../icons';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\ninterface EditableContextValue {\n value: string;\n draft: string;\n setDraft: (v: string) => void;\n editing: boolean;\n setEditing: (open: boolean) => void;\n submit: () => void;\n cancel: () => void;\n placeholder: string;\n disabled: boolean;\n readOnly: boolean;\n submitOnBlur: boolean;\n submitOnEnter: boolean;\n cancelOnEscape: boolean;\n inputRef: React.MutableRefObject<HTMLInputElement | null>;\n}\n\nconst EditableContext = createContext<EditableContextValue | null>(null);\n\nfunction useEditableContext() {\n const ctx = useContext(EditableContext);\n if (!ctx) throw new Error('Editable.* must be used inside <Editable>');\n return ctx;\n}\n\nexport interface EditableProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n editing?: boolean;\n defaultEditing?: boolean;\n onEditingChange?: (editing: boolean) => void;\n placeholder?: string;\n submitOnBlur?: boolean;\n submitOnEnter?: boolean;\n cancelOnEscape?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n name?: string;\n className?: string;\n children: ReactNode;\n}\n\nexport function Editable({\n value: valueProp,\n defaultValue,\n onValueChange,\n editing: editingProp,\n defaultEditing = false,\n onEditingChange,\n placeholder = 'Click to edit',\n submitOnBlur = true,\n submitOnEnter = true,\n cancelOnEscape = true,\n disabled = false,\n readOnly = false,\n name,\n className,\n children,\n}: EditableProps) {\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const [editing, setEditing] = useControlled({\n controlled: editingProp,\n default: defaultEditing,\n onChange: onEditingChange,\n });\n const [draft, setDraft] = useState(value);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n // Sync draft when entering edit mode or when committed value changes externally.\n useEffect(() => {\n if (editing) setDraft(value);\n }, [editing, value]);\n\n const submit = useCallback(() => {\n setValue(draft);\n setEditing(false);\n }, [draft, setValue, setEditing]);\n\n const cancel = useCallback(() => {\n setDraft(value);\n setEditing(false);\n }, [value, setEditing]);\n\n const ctx = useMemo<EditableContextValue>(\n () => ({\n value,\n draft,\n setDraft,\n editing,\n setEditing,\n submit,\n cancel,\n placeholder,\n disabled,\n readOnly,\n submitOnBlur,\n submitOnEnter,\n cancelOnEscape,\n inputRef,\n }),\n [\n value,\n draft,\n editing,\n setEditing,\n submit,\n cancel,\n placeholder,\n disabled,\n readOnly,\n submitOnBlur,\n submitOnEnter,\n cancelOnEscape,\n ],\n );\n\n return (\n <EditableContext.Provider value={ctx}>\n <div className={cn('inline-flex items-center gap-1.5', className)}>\n {children}\n {name && <input type=\"hidden\" name={name} value={value} />}\n </div>\n </EditableContext.Provider>\n );\n}\n\nexport type EditablePreviewProps = HTMLAttributes<HTMLSpanElement>;\n\nexport const EditablePreview = forwardRef<HTMLSpanElement, EditablePreviewProps>(\n function EditablePreview({ className, onClick, onKeyDown, ...rest }, forwardedRef) {\n const ctx = useEditableContext();\n if (ctx.editing) return null;\n const isEmpty = !ctx.value;\n const interactive = !ctx.disabled && !ctx.readOnly;\n return (\n <span\n ref={forwardedRef}\n role={interactive ? 'button' : undefined}\n tabIndex={interactive ? 0 : -1}\n aria-disabled={!interactive || undefined}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented || !interactive) return;\n ctx.setEditing(true);\n }}\n onKeyDown={(e) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || !interactive) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n ctx.setEditing(true);\n }\n }}\n className={cn(\n 'cursor-text rounded-sm px-1 py-0.5 text-sm text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n isEmpty && 'italic text-subtle-foreground',\n !interactive && 'cursor-default hover:bg-transparent',\n className,\n )}\n {...rest}\n >\n {ctx.value || ctx.placeholder}\n </span>\n );\n },\n);\n\nexport interface EditableInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'size'>,\n InputBaseVariants {}\n\nexport const EditableInput = forwardRef<HTMLInputElement, EditableInputProps>(\n function EditableInput(\n { className, size, state, onKeyDown, onBlur, ...rest },\n forwardedRef,\n ) {\n const ctx = useEditableContext();\n\n useEffect(() => {\n if (ctx.editing && ctx.inputRef.current) {\n ctx.inputRef.current.focus();\n const len = ctx.inputRef.current.value.length;\n ctx.inputRef.current.setSelectionRange(len, len);\n }\n }, [ctx.editing, ctx.inputRef]);\n\n if (!ctx.editing) return null;\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n if (ctx.submitOnEnter && e.key === 'Enter') {\n e.preventDefault();\n ctx.submit();\n } else if (ctx.cancelOnEscape && e.key === 'Escape') {\n e.preventDefault();\n ctx.cancel();\n }\n };\n\n return (\n <input\n ref={composeRefs(forwardedRef, ctx.inputRef)}\n type=\"text\"\n value={ctx.draft}\n disabled={ctx.disabled}\n readOnly={ctx.readOnly}\n onChange={(e) => ctx.setDraft(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={(e) => {\n onBlur?.(e);\n if (e.defaultPrevented) return;\n if (ctx.submitOnBlur) ctx.submit();\n }}\n className={cn(inputBaseVariants({ size, state }), className)}\n {...rest}\n />\n );\n },\n);\n\nexport type EditableButtonProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const EditableSubmit = forwardRef<HTMLButtonElement, EditableButtonProps>(\n function EditableSubmit({ className, onClick, children, type = 'button', ...rest }, forwardedRef) {\n const ctx = useEditableContext();\n if (!ctx.editing) return null;\n return (\n <button\n ref={forwardedRef}\n type={type}\n aria-label=\"Submit\"\n // onMouseDown so we fire before the input's blur handler closes us.\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.submit();\n }}\n className={cn(\n 'inline-flex h-8 w-8 items-center justify-center rounded-md text-success transition-colors hover:bg-success-soft focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children ?? <Icon icon={Check} size={14} />}\n </button>\n );\n },\n);\n\nexport const EditableCancel = forwardRef<HTMLButtonElement, EditableButtonProps>(\n function EditableCancel({ className, onClick, children, type = 'button', ...rest }, forwardedRef) {\n const ctx = useEditableContext();\n if (!ctx.editing) return null;\n return (\n <button\n ref={forwardedRef}\n type={type}\n aria-label=\"Cancel\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.cancel();\n }}\n className={cn(\n 'inline-flex h-8 w-8 items-center justify-center rounded-md text-destructive transition-colors hover:bg-destructive-soft focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children ?? <Icon icon={X} size={14} />}\n </button>\n );\n },\n);\n\ntype EditableComponent = typeof Editable & {\n Preview: typeof EditablePreview;\n Input: typeof EditableInput;\n Submit: typeof EditableSubmit;\n Cancel: typeof EditableCancel;\n};\n\n(Editable as EditableComponent).Preview = EditablePreview;\n(Editable as EditableComponent).Input = EditableInput;\n(Editable as EditableComponent).Submit = EditableSubmit;\n(Editable as EditableComponent).Cancel = EditableCancel;\n\nexport default Editable as EditableComponent;\n","import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useMemo,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\n\ninterface StepInfo {\n id: string;\n label?: ReactNode;\n optional?: boolean;\n final?: boolean;\n}\n\ninterface WizardContextValue {\n steps: StepInfo[];\n currentIndex: number;\n currentStep: StepInfo | undefined;\n goTo: (idOrIndex: string | number) => void;\n next: () => Promise<void>;\n back: () => void;\n canGoBack: boolean;\n visited: Set<string>;\n registerStep: (info: StepInfo) => void;\n unregisterStep: (id: string) => void;\n registerValidator: (id: string, validator: () => boolean | Promise<boolean>) => void;\n unregisterValidator: (id: string) => void;\n isPending: boolean;\n}\n\nconst WizardContext = createContext<WizardContextValue | null>(null);\n\nexport function useWizard() {\n const ctx = useContext(WizardContext);\n if (!ctx) throw new Error('useWizard must be used inside <Wizard>');\n return ctx;\n}\n\nexport interface WizardProps extends HTMLAttributes<HTMLDivElement> {\n currentStep?: string;\n defaultCurrentStep?: string;\n onStepChange?: (step: string) => void;\n onComplete?: () => void | Promise<void>;\n canGoBack?: boolean;\n children: ReactNode;\n}\n\nexport const Wizard = forwardRef<HTMLDivElement, WizardProps>(function Wizard(\n {\n currentStep: currentStepProp,\n defaultCurrentStep,\n onStepChange,\n onComplete,\n canGoBack = true,\n className,\n children,\n ...rest\n },\n ref,\n) {\n // Pre-walk children to discover step ids (so context can default to first id).\n const childArray = Children.toArray(children).filter(isValidElement);\n const stepFromChildren: StepInfo[] = childArray\n .filter(\n (c) =>\n (c.type as { displayName?: string }).displayName === 'WizardStep',\n )\n .map((c) => {\n const props = c.props as WizardStepProps;\n return {\n id: props.id,\n label: props.label,\n optional: props.optional,\n final: props.final,\n };\n });\n\n const [steps, setSteps] = useState<StepInfo[]>(stepFromChildren);\n const validatorsRef = useState(() => new Map<string, () => boolean | Promise<boolean>>())[0];\n\n const initialStep = stepFromChildren[0]?.id ?? '';\n const [currentStepId, setCurrentStepId] = useControlled<string>({\n controlled: currentStepProp,\n default: defaultCurrentStep ?? initialStep,\n onChange: onStepChange,\n });\n\n const [visited, setVisited] = useState<Set<string>>(() => new Set([initialStep]));\n const [isPending, setIsPending] = useState(false);\n\n const currentIndex = steps.findIndex((s) => s.id === currentStepId);\n const currentStep = steps[currentIndex];\n\n const registerStep = useCallback((info: StepInfo) => {\n setSteps((prev) => {\n const idx = prev.findIndex((s) => s.id === info.id);\n if (idx >= 0) {\n const next = prev.slice();\n next[idx] = info;\n return next;\n }\n return [...prev, info];\n });\n }, []);\n\n const unregisterStep = useCallback((id: string) => {\n setSteps((prev) => prev.filter((s) => s.id !== id));\n }, []);\n\n const registerValidator = useCallback(\n (id: string, validator: () => boolean | Promise<boolean>) => {\n validatorsRef.set(id, validator);\n },\n [validatorsRef],\n );\n\n const unregisterValidator = useCallback(\n (id: string) => {\n validatorsRef.delete(id);\n },\n [validatorsRef],\n );\n\n const goTo = useCallback(\n (idOrIndex: string | number) => {\n const target =\n typeof idOrIndex === 'number' ? steps[idOrIndex]?.id : idOrIndex;\n if (!target) return;\n setCurrentStepId(target);\n setVisited((prev) => new Set([...prev, target]));\n },\n [steps, setCurrentStepId],\n );\n\n const next = useCallback(async () => {\n if (!currentStep || isPending) return;\n const validator = validatorsRef.get(currentStep.id);\n if (validator) {\n setIsPending(true);\n try {\n const ok = await validator();\n if (!ok) return;\n } finally {\n setIsPending(false);\n }\n }\n if (currentStep.final) {\n setIsPending(true);\n try {\n await onComplete?.();\n } finally {\n setIsPending(false);\n }\n return;\n }\n const nextStep = steps[currentIndex + 1];\n if (nextStep) goTo(nextStep.id);\n }, [currentStep, currentIndex, steps, isPending, onComplete, validatorsRef, goTo]);\n\n const back = useCallback(() => {\n if (!canGoBack) return;\n const prev = steps[currentIndex - 1];\n if (prev) goTo(prev.id);\n }, [canGoBack, currentIndex, steps, goTo]);\n\n const ctx = useMemo<WizardContextValue>(\n () => ({\n steps,\n currentIndex,\n currentStep,\n goTo,\n next,\n back,\n canGoBack,\n visited,\n registerStep,\n unregisterStep,\n registerValidator,\n unregisterValidator,\n isPending,\n }),\n [\n steps,\n currentIndex,\n currentStep,\n goTo,\n next,\n back,\n canGoBack,\n visited,\n registerStep,\n unregisterStep,\n registerValidator,\n unregisterValidator,\n isPending,\n ],\n );\n\n return (\n <WizardContext.Provider value={ctx}>\n <div ref={ref} className={cn('flex flex-col gap-4', className)} {...rest}>\n {children}\n </div>\n </WizardContext.Provider>\n );\n});\n\nexport type WizardStepsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const WizardSteps = forwardRef<HTMLDivElement, WizardStepsProps>(\n function WizardSteps({ className, ...rest }, ref) {\n const ctx = useWizard();\n return (\n <div\n ref={ref}\n role=\"tablist\"\n aria-label=\"Wizard steps\"\n className={cn('flex items-center gap-2 overflow-x-auto', className)}\n {...rest}\n >\n {ctx.steps.map((step, i) => {\n const isCurrent = ctx.currentIndex === i;\n const wasVisited = ctx.visited.has(step.id);\n const canJump = ctx.canGoBack && wasVisited;\n return (\n <button\n key={step.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={isCurrent}\n aria-disabled={!canJump || undefined}\n onClick={() => canJump && ctx.goTo(step.id)}\n className={cn(\n 'flex items-center gap-2 rounded-md px-3 py-1.5 text-xs font-medium transition-colors',\n isCurrent\n ? 'bg-primary text-primary-foreground'\n : wasVisited\n ? 'bg-muted text-foreground hover:bg-muted/70'\n : 'text-muted-foreground',\n !canJump && 'cursor-default',\n )}\n >\n <span className=\"grid h-5 w-5 place-items-center rounded-full bg-background/20 text-[10px]\">\n {i + 1}\n </span>\n {step.label ?? step.id}\n {step.optional && <span className=\"ml-1 text-[10px] opacity-70\">(optional)</span>}\n </button>\n );\n })}\n </div>\n );\n },\n);\n\nexport interface WizardStepProps extends HTMLAttributes<HTMLDivElement> {\n id: string;\n label?: ReactNode;\n validate?: () => boolean | Promise<boolean>;\n optional?: boolean;\n final?: boolean;\n}\n\nexport const WizardStep = forwardRef<HTMLDivElement, WizardStepProps>(function WizardStep(\n { id, label, validate, optional, final, className, children, ...rest },\n ref,\n) {\n const ctx = useWizard();\n const isCurrent = ctx.currentStep?.id === id;\n\n // Register/refresh step metadata.\n useMemo(() => {\n ctx.registerStep({ id, label, optional, final });\n return id;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id, label, optional, final]);\n\n useMemo(() => {\n if (validate) ctx.registerValidator(id, validate);\n else ctx.unregisterValidator(id);\n return validate;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id, validate]);\n\n if (!isCurrent) return null;\n return (\n <div\n ref={ref}\n role=\"tabpanel\"\n aria-labelledby={`wizard-step-${id}`}\n className={cn('flex flex-col gap-3', className)}\n {...rest}\n >\n {children}\n </div>\n );\n});\nWizardStep.displayName = 'WizardStep';\n\nexport interface WizardFooterProps extends HTMLAttributes<HTMLDivElement> {\n prevLabel?: ReactNode;\n nextLabel?: ReactNode;\n submitLabel?: ReactNode;\n /** Render the Prev button when not on first step. Default true. */\n showPrev?: boolean;\n}\n\nexport const WizardFooter = forwardRef<HTMLDivElement, WizardFooterProps>(\n function WizardFooter(\n {\n prevLabel = 'Back',\n nextLabel = 'Next',\n submitLabel = 'Finish',\n showPrev = true,\n className,\n ...rest\n },\n ref,\n ) {\n const ctx = useWizard();\n const isFirst = ctx.currentIndex === 0;\n const isFinal = ctx.currentStep?.final ?? false;\n\n return (\n <div\n ref={ref}\n className={cn('mt-2 flex items-center justify-between gap-3', className)}\n {...rest}\n >\n {showPrev && !isFirst && ctx.canGoBack ? (\n <button\n type=\"button\"\n onClick={ctx.back}\n disabled={ctx.isPending}\n className=\"inline-flex h-9 items-center rounded-md border border-border bg-background px-4 text-sm font-medium hover:bg-muted disabled:opacity-50\"\n >\n {prevLabel}\n </button>\n ) : (\n <span />\n )}\n <button\n type=\"button\"\n onClick={ctx.next}\n disabled={ctx.isPending}\n className=\"inline-flex h-9 items-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50\"\n >\n {ctx.isPending ? '…' : isFinal ? submitLabel : nextLabel}\n </button>\n </div>\n );\n },\n);\n\ntype WizardComponent = typeof Wizard & {\n Steps: typeof WizardSteps;\n Step: typeof WizardStep;\n Footer: typeof WizardFooter;\n};\n\n(Wizard as WizardComponent).Steps = WizardSteps;\n(Wizard as WizardComponent).Step = WizardStep;\n(Wizard as WizardComponent).Footer = WizardFooter;\n\nexport default Wizard as WizardComponent;\n","import {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type TextareaHTMLAttributes,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\n\nexport interface CodeEditorProps\n extends Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'value' | 'defaultValue' | 'onChange'\n > {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n /** Forward-compat hint; unused by this first-gen component. */\n language?: string;\n tabSize?: number;\n useTabs?: boolean;\n invalid?: boolean;\n /** CSS minHeight on the surface (default `12rem`). */\n minHeight?: string;\n}\n\n/**\n * First-generation code editor — styled `<textarea>` + line-number gutter +\n * Tab/Shift-Tab indent handling. **No syntax highlighting** (deferred to a\n * follow-up wrapping Monaco / CodeMirror inside this contract).\n */\nexport const CodeEditor = forwardRef<HTMLTextAreaElement, CodeEditorProps>(\n function CodeEditor(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n language,\n tabSize = 2,\n useTabs = false,\n disabled,\n readOnly,\n invalid,\n minHeight = '12rem',\n placeholder,\n className,\n onKeyDown,\n onScroll,\n ...rest\n },\n forwardedRef,\n ) {\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n const gutterRef = useRef<HTMLDivElement | null>(null);\n const [scrollTop, setScrollTop] = useState(0);\n\n useImperativeHandle(forwardedRef, () => textareaRef.current as HTMLTextAreaElement);\n\n const lineCount = useMemo(() => value.split('\\n').length, [value]);\n const indentChar = useTabs ? '\\t' : ' '.repeat(tabSize);\n\n const insertAtSelection = useCallback(\n (insert: string, selStart: number, selEnd: number) => {\n const next = value.slice(0, selStart) + insert + value.slice(selEnd);\n setValue(next);\n return selStart + insert.length;\n },\n [value, setValue],\n );\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled || readOnly) return;\n const ta = e.currentTarget;\n const start = ta.selectionStart;\n const end = ta.selectionEnd;\n\n if (e.key === 'Tab') {\n e.preventDefault();\n if (start === end) {\n if (e.shiftKey) {\n // Outdent at cursor's line.\n const lineStart = value.lastIndexOf('\\n', start - 1) + 1;\n const lineSlice = value.slice(lineStart, start);\n const match = useTabs ? /^\\t/ : new RegExp(`^ {1,${tabSize}}`);\n const m = match.exec(lineSlice);\n if (m) {\n const next = value.slice(0, lineStart) + lineSlice.slice(m[0].length) + value.slice(start);\n setValue(next);\n requestAnimationFrame(() => {\n if (textareaRef.current) {\n const newPos = start - m[0].length;\n textareaRef.current.selectionStart = newPos;\n textareaRef.current.selectionEnd = newPos;\n }\n });\n }\n } else {\n const newPos = insertAtSelection(indentChar, start, end);\n requestAnimationFrame(() => {\n if (textareaRef.current) {\n textareaRef.current.selectionStart = newPos;\n textareaRef.current.selectionEnd = newPos;\n }\n });\n }\n } else {\n // Multi-line indent / outdent.\n const before = value.slice(0, start);\n const between = value.slice(start, end);\n const after = value.slice(end);\n const lineStartOffset = before.lastIndexOf('\\n') + 1;\n const blockStart = before.slice(0, lineStartOffset);\n const block = before.slice(lineStartOffset) + between;\n if (e.shiftKey) {\n const re = useTabs ? /^\\t/gm : new RegExp(`^ {1,${tabSize}}`, 'gm');\n const next = blockStart + block.replace(re, '') + after;\n setValue(next);\n } else {\n const next = blockStart + block.replace(/^/gm, indentChar) + after;\n setValue(next);\n }\n }\n }\n };\n\n const state = invalid ? 'invalid' : 'default';\n\n // Generate line-number string once per line count.\n const gutterText = useMemo(\n () =>\n Array.from({ length: lineCount }, (_, i) => String(i + 1)).join('\\n'),\n [lineCount],\n );\n\n return (\n <div\n data-state={state}\n data-language={language || undefined}\n data-disabled={disabled || undefined}\n data-readonly={readOnly || undefined}\n className={cn(\n 'relative flex overflow-hidden rounded-md border border-input bg-card text-card-foreground font-mono text-sm shadow-sm',\n 'focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/40',\n state === 'invalid' && 'border-destructive focus-within:border-destructive focus-within:ring-destructive/40',\n disabled && 'cursor-not-allowed opacity-60',\n className,\n )}\n style={{ minHeight }}\n >\n <div\n ref={gutterRef}\n aria-hidden=\"true\"\n className=\"select-none whitespace-pre overflow-hidden border-r border-border bg-muted/40 px-3 py-2 text-right text-muted-foreground tabular-nums\"\n style={{ transform: `translateY(${-scrollTop}px)` }}\n >\n {gutterText}\n </div>\n <textarea\n {...rest}\n ref={composeRefs(forwardedRef, textareaRef)}\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onScroll={(e) => {\n setScrollTop(e.currentTarget.scrollTop);\n onScroll?.(e);\n }}\n disabled={disabled}\n readOnly={readOnly}\n spellCheck={false}\n placeholder={placeholder}\n aria-invalid={invalid || undefined}\n className=\"block flex-1 resize-none whitespace-pre overflow-auto bg-transparent px-3 py-2 outline-none placeholder:text-subtle-foreground disabled:cursor-not-allowed\"\n />\n </div>\n );\n },\n);\n","import {\n forwardRef,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from 'react';\nimport { marked } from 'marked';\nimport { Bold, Code, Heading1, Heading2, Italic, Link2, List, Quote } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Icon } from '../../icons';\n\nexport type MarkdownEditorView = 'split' | 'edit' | 'preview';\n\nexport interface MarkdownEditorProps\n extends Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'value' | 'defaultValue' | 'onChange'\n > {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n view?: MarkdownEditorView;\n defaultView?: MarkdownEditorView;\n onViewChange?: (view: MarkdownEditorView) => void;\n renderPreview?: (markdown: string) => ReactNode;\n invalid?: boolean;\n minHeight?: string;\n}\n\ninterface ToolbarAction {\n key: string;\n label: string;\n icon: ReactNode;\n apply: (sel: { value: string; start: number; end: number }) => {\n value: string;\n selStart: number;\n selEnd: number;\n };\n}\n\nconst wrap = (before: string, after: string) =>\n ({ value, start, end }: { value: string; start: number; end: number }) => {\n const sel = value.slice(start, end);\n const next = value.slice(0, start) + before + sel + after + value.slice(end);\n const selStart = start + before.length;\n return { value: next, selStart, selEnd: selStart + sel.length };\n };\n\nconst linePrefix = (prefix: string) =>\n ({ value, start, end }: { value: string; start: number; end: number }) => {\n const lineStart = value.lastIndexOf('\\n', start - 1) + 1;\n const trailing = value.slice(end).indexOf('\\n');\n const lineEnd = trailing === -1 ? value.length : end + trailing;\n const block = value.slice(lineStart, lineEnd);\n const updated = block\n .split('\\n')\n .map((l) => prefix + l)\n .join('\\n');\n const next = value.slice(0, lineStart) + updated + value.slice(lineEnd);\n return { value: next, selStart: lineStart + prefix.length, selEnd: lineStart + updated.length };\n };\n\nconst ACTIONS: ToolbarAction[] = [\n { key: 'h1', label: 'Heading 1', icon: <Icon icon={Heading1} size={14} />, apply: linePrefix('# ') },\n { key: 'h2', label: 'Heading 2', icon: <Icon icon={Heading2} size={14} />, apply: linePrefix('## ') },\n { key: 'bold', label: 'Bold', icon: <Icon icon={Bold} size={14} />, apply: wrap('**', '**') },\n { key: 'italic', label: 'Italic', icon: <Icon icon={Italic} size={14} />, apply: wrap('*', '*') },\n { key: 'code', label: 'Inline code', icon: <Icon icon={Code} size={14} />, apply: wrap('`', '`') },\n { key: 'link', label: 'Link', icon: <Icon icon={Link2} size={14} />, apply: wrap('[', '](https://)') },\n { key: 'list', label: 'List', icon: <Icon icon={List} size={14} />, apply: linePrefix('- ') },\n { key: 'quote', label: 'Blockquote', icon: <Icon icon={Quote} size={14} />, apply: linePrefix('> ') },\n];\n\n/**\n * Markdown input + live preview. Toolbar wraps selection with syntax;\n * preview pane renders via `marked.parse` (or the consumer-supplied\n * `renderPreview`). Three view modes: `split` / `edit` / `preview`.\n */\nexport const MarkdownEditor = forwardRef<HTMLTextAreaElement, MarkdownEditorProps>(\n function MarkdownEditor(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n view: viewProp,\n defaultView,\n onViewChange,\n renderPreview,\n disabled,\n readOnly,\n invalid,\n minHeight = '18rem',\n placeholder,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const [view, setView] = useControlled({\n controlled: viewProp,\n default: defaultView ?? 'split',\n onChange: onViewChange,\n });\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n const groupId = useId();\n\n useImperativeHandle(forwardedRef, () => textareaRef.current as HTMLTextAreaElement);\n\n const previewHtml = useMemo(() => {\n if (renderPreview) return null;\n try {\n return marked.parse(value, { async: false }) as string;\n } catch {\n return '<p>Failed to render preview.</p>';\n }\n }, [value, renderPreview]);\n\n const applyAction = (action: ToolbarAction) => {\n const ta = textareaRef.current;\n if (!ta) return;\n const next = action.apply({\n value,\n start: ta.selectionStart ?? value.length,\n end: ta.selectionEnd ?? value.length,\n });\n setValue(next.value);\n requestAnimationFrame(() => {\n ta.focus();\n ta.selectionStart = next.selStart;\n ta.selectionEnd = next.selEnd;\n });\n };\n\n const showEdit = view === 'split' || view === 'edit';\n const showPreview = view === 'split' || view === 'preview';\n\n const state = invalid ? 'invalid' : 'default';\n\n return (\n <div\n data-state={state}\n className={cn(\n 'flex flex-col overflow-hidden rounded-md border border-input bg-card text-card-foreground shadow-sm',\n state === 'invalid' && 'border-destructive',\n disabled && 'opacity-60',\n className,\n )}\n style={{ minHeight }}\n >\n <div className=\"flex items-center gap-1 border-b border-border bg-muted/40 px-2 py-1\">\n <div role=\"toolbar\" aria-label=\"Markdown formatting\" className=\"flex items-center gap-0.5\">\n {ACTIONS.map((a) => (\n <button\n key={a.key}\n type=\"button\"\n aria-label={a.label}\n disabled={disabled || readOnly}\n onClick={() => applyAction(a)}\n className=\"inline-flex h-7 w-7 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\"\n >\n {a.icon}\n </button>\n ))}\n </div>\n <div role=\"radiogroup\" aria-label=\"View mode\" className=\"ml-auto flex items-center gap-0.5 rounded-md bg-card p-0.5 ring-1 ring-border\">\n {(['edit', 'split', 'preview'] as MarkdownEditorView[]).map((v) => (\n <button\n key={v}\n type=\"button\"\n role=\"radio\"\n aria-checked={view === v}\n onClick={() => setView(v)}\n className={cn(\n 'inline-flex h-6 items-center rounded px-2 text-xs font-medium transition-colors',\n view === v\n ? 'bg-primary text-primary-foreground'\n : 'text-muted-foreground hover:text-foreground',\n )}\n >\n {v}\n </button>\n ))}\n </div>\n </div>\n <div className=\"flex flex-1 divide-x divide-border\" style={{ minHeight: 0 }}>\n {showEdit && (\n <textarea\n {...rest}\n ref={textareaRef}\n id={groupId}\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n spellCheck={false}\n aria-invalid={invalid || undefined}\n onChange={(e) => setValue(e.target.value)}\n className={cn(\n 'flex-1 resize-none whitespace-pre-wrap break-words bg-transparent p-3 font-mono text-sm outline-none placeholder:text-subtle-foreground disabled:cursor-not-allowed',\n showPreview && 'border-r-0',\n )}\n />\n )}\n {showPreview && (\n <div\n aria-live=\"polite\"\n aria-label=\"Preview\"\n className=\"prose prose-sm flex-1 overflow-auto bg-background p-3 text-sm text-foreground\"\n >\n {renderPreview ? (\n renderPreview(value)\n ) : (\n <div dangerouslySetInnerHTML={{ __html: previewHtml ?? '' }} />\n )}\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n} from 'react';\nimport { ChevronRight, Copy } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Icon } from '../../icons';\n\nexport type JSONEditorMode = 'tree' | 'text';\n\nexport interface JSONEditorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n value?: unknown;\n defaultValue?: unknown;\n onValueChange?: (value: unknown) => void;\n mode?: JSONEditorMode;\n defaultMode?: JSONEditorMode;\n onModeChange?: (mode: JSONEditorMode) => void;\n disabled?: boolean;\n readOnly?: boolean;\n invalid?: boolean;\n indent?: number;\n minHeight?: string;\n}\n\ntype Path = Array<string | number>;\n\nfunction describeType(v: unknown): string {\n if (v === null) return 'null';\n if (Array.isArray(v)) return 'array';\n return typeof v;\n}\n\nfunction pathToString(path: Path): string {\n return path\n .map((p) => (typeof p === 'number' ? `[${p}]` : path.indexOf(p) === 0 ? p : `.${p}`))\n .join('');\n}\n\nfunction setAtPath(root: unknown, path: Path, next: unknown): unknown {\n if (path.length === 0) return next;\n const [head, ...rest] = path;\n if (Array.isArray(root)) {\n const idx = head as number;\n const copy = root.slice();\n copy[idx] = setAtPath(root[idx], rest, next);\n return copy;\n }\n if (root && typeof root === 'object') {\n const key = head as string;\n return { ...(root as Record<string, unknown>), [key]: setAtPath((root as Record<string, unknown>)[key], rest, next) };\n }\n return root;\n}\n\n/**\n * JSON editor with tree-view and raw-text modes. Tree mode supports inline\n * edit of primitive leaves + per-node copy-path. Text mode parses on commit;\n * invalid JSON shows inline error.\n */\nexport const JSONEditor = forwardRef<HTMLDivElement, JSONEditorProps>(function JSONEditor(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n mode: modeProp,\n defaultMode = 'tree',\n onModeChange,\n disabled,\n readOnly,\n invalid,\n indent = 2,\n minHeight = '14rem',\n className,\n ...rest\n },\n ref,\n) {\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? {},\n onChange: onValueChange,\n });\n const [mode, setMode] = useControlled({\n controlled: modeProp,\n default: defaultMode,\n onChange: onModeChange,\n });\n\n const updateAt = (path: Path, next: unknown) => {\n setValue(setAtPath(value, path, next));\n };\n\n return (\n <div\n ref={ref}\n data-state={invalid ? 'invalid' : 'default'}\n className={cn(\n 'flex flex-col overflow-hidden rounded-md border border-input bg-card text-card-foreground shadow-sm',\n invalid && 'border-destructive',\n disabled && 'opacity-60',\n className,\n )}\n style={{ minHeight }}\n {...rest}\n >\n <div className=\"flex items-center gap-1 border-b border-border bg-muted/40 px-2 py-1\">\n <div role=\"radiogroup\" aria-label=\"JSON mode\" className=\"flex items-center gap-0.5 rounded-md bg-card p-0.5 ring-1 ring-border\">\n {(['tree', 'text'] as JSONEditorMode[]).map((m) => (\n <button\n key={m}\n type=\"button\"\n role=\"radio\"\n aria-checked={mode === m}\n onClick={() => setMode(m)}\n className={cn(\n 'inline-flex h-6 items-center rounded px-2 text-xs font-medium transition-colors',\n mode === m\n ? 'bg-primary text-primary-foreground'\n : 'text-muted-foreground hover:text-foreground',\n )}\n >\n {m}\n </button>\n ))}\n </div>\n </div>\n <div className=\"flex-1 overflow-auto\" style={{ minHeight: 0 }}>\n {mode === 'tree' ? (\n <TreeView value={value} updateAt={updateAt} disabled={disabled} readOnly={readOnly} />\n ) : (\n <TextView value={value} setValue={setValue} disabled={disabled} readOnly={readOnly} indent={indent} />\n )}\n </div>\n </div>\n );\n});\n\ninterface TreeViewProps {\n value: unknown;\n updateAt: (path: Path, next: unknown) => void;\n disabled?: boolean;\n readOnly?: boolean;\n}\n\nfunction TreeView({ value, updateAt, disabled, readOnly }: TreeViewProps) {\n return (\n <ul role=\"tree\" className=\"font-mono text-sm\">\n <TreeNode keyName={null} value={value} path={[]} updateAt={updateAt} disabled={disabled} readOnly={readOnly} depth={0} />\n </ul>\n );\n}\n\ninterface TreeNodeProps {\n keyName: string | number | null;\n value: unknown;\n path: Path;\n updateAt: (path: Path, next: unknown) => void;\n disabled?: boolean;\n readOnly?: boolean;\n depth: number;\n}\n\nfunction TreeNode({ keyName, value, path, updateAt, disabled, readOnly, depth }: TreeNodeProps) {\n const type = describeType(value);\n const isObject = type === 'object' || type === 'array';\n const [open, setOpen] = useState(depth < 2);\n const [editing, setEditing] = useState(false);\n const [draft, setDraft] = useState<string>('');\n\n const startEdit = () => {\n if (disabled || readOnly || isObject) return;\n setEditing(true);\n setDraft(typeof value === 'string' ? value : String(value));\n };\n\n const commitEdit = () => {\n setEditing(false);\n if (typeof value === 'number') {\n const n = Number(draft);\n if (!Number.isNaN(n)) updateAt(path, n);\n } else if (typeof value === 'boolean') {\n if (draft === 'true' || draft === 'false') updateAt(path, draft === 'true');\n } else if (value === null) {\n if (draft === 'null') updateAt(path, null);\n } else {\n updateAt(path, draft);\n }\n };\n\n const onKey = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') commitEdit();\n if (e.key === 'Escape') setEditing(false);\n };\n\n const copyPath = () => {\n const text = pathToString(path);\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n navigator.clipboard.writeText(text).catch(() => {});\n }\n };\n\n const entries = isObject\n ? Array.isArray(value)\n ? (value as unknown[]).map((v, i) => [i, v] as const)\n : Object.entries(value as Record<string, unknown>)\n : [];\n\n return (\n <li role=\"treeitem\" aria-expanded={isObject ? open : undefined} className=\"px-1\">\n <div className=\"group flex items-start gap-1 py-0.5\" style={{ paddingLeft: depth * 16 }}>\n {isObject ? (\n <button\n type=\"button\"\n aria-label={open ? 'Collapse' : 'Expand'}\n onClick={() => setOpen((o) => !o)}\n className=\"inline-flex h-5 w-5 items-center justify-center text-muted-foreground hover:text-foreground\"\n >\n <Icon icon={ChevronRight} size={12} className={cn('transition-transform', open && 'rotate-90')} />\n </button>\n ) : (\n <span className=\"inline-block h-5 w-5\" />\n )}\n {keyName !== null && (\n <span className=\"text-foreground\">\n {typeof keyName === 'string' ? `\"${keyName}\"` : keyName}\n <span className=\"text-muted-foreground\">: </span>\n </span>\n )}\n {isObject ? (\n <span className=\"text-muted-foreground\">\n {Array.isArray(value) ? `Array(${entries.length})` : `Object(${entries.length})`}\n </span>\n ) : editing ? (\n <input\n autoFocus\n value={draft}\n onChange={(e) => setDraft(e.target.value)}\n onKeyDown={onKey}\n onBlur={commitEdit}\n className=\"h-5 rounded-sm bg-background px-1 text-sm font-mono outline-none ring-2 ring-ring\"\n />\n ) : (\n <button\n type=\"button\"\n onClick={startEdit}\n className={cn(\n 'cursor-text rounded-sm px-1 text-left transition-colors',\n !disabled && !readOnly && 'hover:bg-muted',\n type === 'string' && 'text-info',\n type === 'number' && 'text-warning',\n type === 'boolean' && 'text-success',\n type === 'null' && 'text-muted-foreground italic',\n )}\n >\n {type === 'string' ? `\"${value as string}\"` : String(value)}\n </button>\n )}\n <button\n type=\"button\"\n aria-label={`Copy path ${pathToString(path) || 'root'}`}\n onClick={copyPath}\n className=\"ml-auto opacity-0 transition-opacity group-hover:opacity-100 inline-flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <Icon icon={Copy} size={11} />\n </button>\n </div>\n {isObject && open && (\n <ul role=\"group\">\n {entries.map(([k, v]) => (\n <TreeNode\n key={String(k)}\n keyName={k}\n value={v}\n path={[...path, k]}\n updateAt={updateAt}\n disabled={disabled}\n readOnly={readOnly}\n depth={depth + 1}\n />\n ))}\n </ul>\n )}\n </li>\n );\n}\n\ninterface TextViewProps {\n value: unknown;\n setValue: (next: unknown) => void;\n disabled?: boolean;\n readOnly?: boolean;\n indent: number;\n}\n\nfunction TextView({ value, setValue, disabled, readOnly, indent }: TextViewProps) {\n const initial = useMemo(() => safeStringify(value, indent), [value, indent]);\n const [draft, setDraft] = useState(initial);\n const [error, setError] = useState<string | null>(null);\n const dirty = useRef(false);\n\n // Re-sync when external value changes (when not actively editing).\n useEffect(() => {\n if (!dirty.current) setDraft(initial);\n }, [initial]);\n\n const commit = () => {\n try {\n const parsed = JSON.parse(draft);\n setError(null);\n setValue(parsed);\n dirty.current = false;\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Invalid JSON');\n }\n };\n\n return (\n <div className=\"flex h-full flex-col\">\n <textarea\n value={draft}\n disabled={disabled}\n readOnly={readOnly}\n spellCheck={false}\n onChange={(e) => {\n dirty.current = true;\n setDraft(e.target.value);\n }}\n onBlur={commit}\n onKeyDown={(e) => {\n if (e.key === 'Escape') {\n setDraft(initial);\n setError(null);\n dirty.current = false;\n }\n }}\n className={cn(\n 'flex-1 resize-none whitespace-pre bg-transparent p-3 font-mono text-sm outline-none placeholder:text-subtle-foreground disabled:cursor-not-allowed',\n error && 'text-foreground',\n )}\n />\n {error && (\n <div role=\"alert\" className=\"border-t border-destructive bg-destructive-soft px-3 py-2 text-xs text-destructive\">\n {error}\n </div>\n )}\n </div>\n );\n}\n\nfunction safeStringify(value: unknown, indent: number): string {\n try {\n return JSON.stringify(value, null, indent);\n } catch {\n return '';\n }\n}\n","import { forwardRef, useMemo, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { addDays, addMonths, formatISODate, parseISODate } from '../DateExtensions';\nimport { inputBaseVariants } from '../InputStyles';\n\nexport type RecurrenceFreq = 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY';\nexport type RecurrenceWeekday = 'MO' | 'TU' | 'WE' | 'TH' | 'FR' | 'SA' | 'SU';\n\nexport interface RecurrenceRule {\n freq: RecurrenceFreq;\n interval: number;\n byDay?: RecurrenceWeekday[];\n byMonthDay?: number;\n count?: number;\n until?: Date | null;\n}\n\nexport interface RecurrenceEditorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue'> {\n value?: RecurrenceRule;\n defaultValue?: RecurrenceRule;\n onValueChange?: (rule: RecurrenceRule) => void;\n from?: Date;\n previewCount?: number;\n disabled?: boolean;\n readOnly?: boolean;\n /** When set, emits a hidden input with the serialized `RRULE:` string. */\n name?: string;\n}\n\nconst ALL_WEEKDAYS: RecurrenceWeekday[] = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];\nconst WEEKDAY_LABEL: Record<RecurrenceWeekday, string> = {\n SU: 'Su',\n MO: 'Mo',\n TU: 'Tu',\n WE: 'We',\n TH: 'Th',\n FR: 'Fr',\n SA: 'Sa',\n};\nconst JS_TO_RRULE: RecurrenceWeekday[] = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];\n\nfunction serializeRule(r: RecurrenceRule): string {\n const parts: string[] = [`FREQ=${r.freq}`];\n if (r.interval > 1) parts.push(`INTERVAL=${r.interval}`);\n if (r.byDay && r.byDay.length > 0) parts.push(`BYDAY=${r.byDay.join(',')}`);\n if (r.byMonthDay) parts.push(`BYMONTHDAY=${r.byMonthDay}`);\n if (r.count) parts.push(`COUNT=${r.count}`);\n if (r.until) parts.push(`UNTIL=${formatISODate(r.until).replace(/-/g, '')}`);\n return `RRULE:${parts.join(';')}`;\n}\n\nfunction nextOccurrence(rule: RecurrenceRule, prev: Date): Date | null {\n switch (rule.freq) {\n case 'DAILY':\n return addDays(prev, rule.interval);\n case 'WEEKLY': {\n if (!rule.byDay || rule.byDay.length === 0) return addDays(prev, 7 * rule.interval);\n // Find the next allowed weekday after `prev`. After exhausting the week, jump `interval-1` weeks forward.\n const allowed = new Set(rule.byDay);\n let cursor = addDays(prev, 1);\n let weekJumps = 0;\n const maxIter = 7 * rule.interval + 1;\n for (let i = 0; i < maxIter; i++) {\n const wd = JS_TO_RRULE[cursor.getDay()]!;\n if (allowed.has(wd)) {\n return cursor;\n }\n cursor = addDays(cursor, 1);\n if (cursor.getDay() === 0) weekJumps++;\n if (weekJumps >= rule.interval) {\n // Wrap to next interval window.\n // Continue scanning — first hit wins anyway.\n }\n }\n return null;\n }\n case 'MONTHLY': {\n const next = addMonths(prev, rule.interval);\n if (rule.byMonthDay) {\n next.setDate(rule.byMonthDay);\n }\n return next;\n }\n case 'YEARLY': {\n const c = new Date(prev);\n c.setFullYear(c.getFullYear() + rule.interval);\n return c;\n }\n }\n}\n\nfunction buildPreview(rule: RecurrenceRule, from: Date, count: number): Date[] {\n const out: Date[] = [];\n let cursor = from;\n // Include `from` if it satisfies the rule (simplification: always include for visual hint).\n out.push(new Date(cursor));\n for (let i = 0; i < count - 1; i++) {\n const next = nextOccurrence(rule, cursor);\n if (!next) break;\n if (rule.until && next > rule.until) break;\n if (rule.count && out.length >= rule.count) break;\n out.push(next);\n cursor = next;\n }\n return out;\n}\n\nconst DEFAULT_RULE: RecurrenceRule = { freq: 'WEEKLY', interval: 1, byDay: ['MO'] };\n\n/**\n * Visual RRULE editor. Output is a JS `RecurrenceRule` object via `onValueChange`;\n * if `name` is set, also emits a hidden `RRULE:FREQ=…` string for forms.\n */\nexport const RecurrenceEditor = forwardRef<HTMLDivElement, RecurrenceEditorProps>(\n function RecurrenceEditor(\n {\n value,\n defaultValue,\n onValueChange,\n from = new Date(),\n previewCount = 5,\n disabled,\n readOnly,\n name,\n className,\n ...rest\n },\n ref,\n ) {\n const [rule, setRule] = useControlled({\n controlled: value,\n default: defaultValue ?? DEFAULT_RULE,\n onChange: onValueChange,\n });\n\n const preview = useMemo(() => buildPreview(rule, from, previewCount), [rule, from, previewCount]);\n\n const update = (patch: Partial<RecurrenceRule>) => {\n const next = { ...rule, ...patch };\n // Reset incompatible fields when freq changes.\n if (patch.freq && patch.freq !== rule.freq) {\n if (patch.freq !== 'WEEKLY') next.byDay = undefined;\n if (patch.freq !== 'MONTHLY') next.byMonthDay = undefined;\n }\n setRule(next);\n };\n\n const endMode: 'never' | 'count' | 'until' = rule.count\n ? 'count'\n : rule.until\n ? 'until'\n : 'never';\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col gap-3 rounded-md border border-border bg-card p-4 text-card-foreground shadow-sm',\n disabled && 'opacity-60',\n className,\n )}\n {...rest}\n >\n <div className=\"flex flex-wrap items-center gap-2 text-sm\">\n <span className=\"text-muted-foreground\">Every</span>\n <input\n type=\"number\"\n min={1}\n max={999}\n value={rule.interval}\n disabled={disabled}\n readOnly={readOnly}\n onChange={(e) => update({ interval: Math.max(1, Number(e.target.value) || 1) })}\n className={cn(inputBaseVariants({ size: 'sm' }), 'w-16')}\n />\n <select\n aria-label=\"Frequency\"\n value={rule.freq}\n disabled={disabled}\n onChange={(e) => update({ freq: e.target.value as RecurrenceFreq })}\n className={cn(inputBaseVariants({ size: 'sm' }), 'w-32')}\n >\n <option value=\"DAILY\">{rule.interval > 1 ? 'days' : 'day'}</option>\n <option value=\"WEEKLY\">{rule.interval > 1 ? 'weeks' : 'week'}</option>\n <option value=\"MONTHLY\">{rule.interval > 1 ? 'months' : 'month'}</option>\n <option value=\"YEARLY\">{rule.interval > 1 ? 'years' : 'year'}</option>\n </select>\n </div>\n\n {rule.freq === 'WEEKLY' && (\n <div className=\"flex items-center gap-2 text-sm\">\n <span className=\"text-muted-foreground\">On</span>\n <div role=\"group\" aria-label=\"Days of week\" className=\"flex flex-wrap gap-1\">\n {ALL_WEEKDAYS.map((wd) => {\n const checked = rule.byDay?.includes(wd) ?? false;\n return (\n <button\n key={wd}\n type=\"button\"\n role=\"checkbox\"\n aria-checked={checked}\n disabled={disabled || readOnly}\n onClick={() => {\n const set = new Set(rule.byDay ?? []);\n if (set.has(wd)) set.delete(wd);\n else set.add(wd);\n update({ byDay: Array.from(set) as RecurrenceWeekday[] });\n }}\n className={cn(\n 'inline-flex h-7 w-9 items-center justify-center rounded-md border text-xs font-medium transition-colors',\n checked\n ? 'border-primary bg-primary text-primary-foreground'\n : 'border-input bg-background text-muted-foreground hover:bg-muted',\n )}\n >\n {WEEKDAY_LABEL[wd]}\n </button>\n );\n })}\n </div>\n </div>\n )}\n\n {rule.freq === 'MONTHLY' && (\n <div className=\"flex items-center gap-2 text-sm\">\n <span className=\"text-muted-foreground\">On day</span>\n <input\n type=\"number\"\n min={1}\n max={31}\n value={rule.byMonthDay ?? from.getDate()}\n disabled={disabled}\n readOnly={readOnly}\n onChange={(e) => update({ byMonthDay: Math.min(31, Math.max(1, Number(e.target.value) || 1)) })}\n className={cn(inputBaseVariants({ size: 'sm' }), 'w-20')}\n />\n <span className=\"text-muted-foreground\">of the month</span>\n </div>\n )}\n\n <div role=\"radiogroup\" aria-label=\"End mode\" className=\"flex flex-col gap-2 text-sm\">\n <label className=\"flex items-center gap-2\">\n <input\n type=\"radio\"\n name={`${name ?? 'rule'}-end`}\n checked={endMode === 'never'}\n disabled={disabled || readOnly}\n onChange={() => update({ count: undefined, until: null })}\n />\n Never\n </label>\n <label className=\"flex items-center gap-2\">\n <input\n type=\"radio\"\n name={`${name ?? 'rule'}-end`}\n checked={endMode === 'count'}\n disabled={disabled || readOnly}\n onChange={() => update({ count: rule.count ?? 10, until: null })}\n />\n After\n <input\n type=\"number\"\n min={1}\n value={rule.count ?? ''}\n disabled={disabled || readOnly || endMode !== 'count'}\n onChange={(e) => update({ count: Math.max(1, Number(e.target.value) || 1), until: null })}\n className={cn(inputBaseVariants({ size: 'sm' }), 'w-20')}\n />\n occurrences\n </label>\n <label className=\"flex items-center gap-2\">\n <input\n type=\"radio\"\n name={`${name ?? 'rule'}-end`}\n checked={endMode === 'until'}\n disabled={disabled || readOnly}\n onChange={() => update({ until: addMonths(from, 6), count: undefined })}\n />\n On\n <input\n type=\"date\"\n value={formatISODate(rule.until ?? null)}\n disabled={disabled || readOnly || endMode !== 'until'}\n onChange={(e) => update({ until: parseISODate(e.target.value), count: undefined })}\n className={cn(inputBaseVariants({ size: 'sm' }), 'w-44')}\n />\n </label>\n </div>\n\n <div className=\"rounded-md bg-muted/40 p-3 text-xs\">\n <div className=\"mb-1 font-medium text-muted-foreground\">Next occurrences</div>\n <ul aria-live=\"polite\" className=\"grid grid-cols-2 gap-x-4 gap-y-0.5 sm:grid-cols-3\">\n {preview.map((d, i) => (\n <li key={i} className=\"text-foreground tabular-nums\">\n {formatISODate(d)}\n </li>\n ))}\n </ul>\n </div>\n {name && <input type=\"hidden\" name={name} value={serializeRule(rule)} />}\n </div>\n );\n },\n);\n","import {\n forwardRef,\n useCallback,\n useRef,\n type HTMLAttributes,\n type KeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\n\nexport type KnobTone = 'brand' | 'success' | 'warning' | 'danger' | 'muted';\n\nconst TONE_CLASS: Record<KnobTone, string> = {\n brand: 'text-primary',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-destructive',\n muted: 'text-muted-foreground',\n};\n\nexport interface KnobProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n largeStep?: number;\n size?: number;\n arcDegrees?: number;\n tone?: KnobTone;\n format?: (value: number) => ReactNode;\n showValue?: boolean;\n disabled?: boolean;\n name?: string;\n 'aria-label'?: string;\n}\n\nfunction clamp(v: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, v));\n}\n\n/**\n * Rotational dial input. Pointer drag rotates over `arcDegrees` (default 270°\n * from -135° to +135°). Wheel + arrow keys step; Home/End → min/max.\n */\nexport const Knob = forwardRef<HTMLDivElement, KnobProps>(function Knob(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n min = 0,\n max = 1,\n step = 0.01,\n largeStep = 0.1,\n size = 64,\n arcDegrees = 270,\n tone = 'brand',\n format = (v) => v.toFixed(2),\n showValue = true,\n disabled,\n name,\n className,\n 'aria-label': ariaLabel = 'Knob',\n ...rest\n },\n ref,\n) {\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? min,\n onChange: onValueChange,\n });\n const containerRef = useRef<HTMLDivElement | null>(null);\n const dragStateRef = useRef<{ startY: number; startValue: number } | null>(null);\n\n const fraction = (clamp(value, min, max) - min) / (max - min);\n const halfArc = arcDegrees / 2;\n const startAngle = -halfArc - 90; // -90 puts 0° at top\n const endAngle = halfArc - 90;\n const angle = startAngle + fraction * arcDegrees;\n\n const setClamped = useCallback(\n (v: number) => setValue(clamp(v, min, max)),\n [min, max, setValue],\n );\n\n const handlePointerDown = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled || e.button !== 0) return;\n dragStateRef.current = { startY: e.clientY, startValue: value };\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n };\n\n const handlePointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled || !dragStateRef.current) return;\n const dy = dragStateRef.current.startY - e.clientY; // up = increase\n const range = max - min;\n const sensitivity = range / 200; // 200px drag = full range\n setClamped(dragStateRef.current.startValue + dy * sensitivity);\n };\n\n const handlePointerUp = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (!dragStateRef.current) return;\n dragStateRef.current = null;\n (e.currentTarget as HTMLElement).releasePointerCapture?.(e.pointerId);\n };\n\n const handleWheel = (e: React.WheelEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.preventDefault();\n const delta = e.deltaY < 0 ? step : -step;\n setClamped(value + delta);\n };\n\n const handleKey = (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n const s = e.shiftKey ? largeStep : step;\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowRight':\n e.preventDefault();\n setClamped(value + s);\n break;\n case 'ArrowDown':\n case 'ArrowLeft':\n e.preventDefault();\n setClamped(value - s);\n break;\n case 'Home':\n e.preventDefault();\n setClamped(min);\n break;\n case 'End':\n e.preventDefault();\n setClamped(max);\n break;\n }\n };\n\n // SVG arc path math.\n const radius = size / 2 - 4;\n const center = size / 2;\n const polar = (deg: number, r: number) => {\n const rad = (deg * Math.PI) / 180;\n return [center + r * Math.cos(rad), center + r * Math.sin(rad)] as const;\n };\n const [trackStartX, trackStartY] = polar(startAngle, radius);\n const [trackEndX, trackEndY] = polar(endAngle, radius);\n const largeArc = arcDegrees > 180 ? 1 : 0;\n const trackPath = `M ${trackStartX} ${trackStartY} A ${radius} ${radius} 0 ${largeArc} 1 ${trackEndX} ${trackEndY}`;\n\n const [valueEndX, valueEndY] = polar(angle, radius);\n const valueLargeArc = fraction * arcDegrees > 180 ? 1 : 0;\n const valuePath = `M ${trackStartX} ${trackStartY} A ${radius} ${radius} 0 ${valueLargeArc} 1 ${valueEndX} ${valueEndY}`;\n\n const [pointerInnerX, pointerInnerY] = polar(angle, radius * 0.45);\n const [pointerOuterX, pointerOuterY] = polar(angle, radius * 0.85);\n\n return (\n <div\n ref={(el) => {\n containerRef.current = el;\n if (typeof ref === 'function') ref(el);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = el;\n }}\n role=\"slider\"\n aria-label={ariaLabel}\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-orientation=\"vertical\"\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n onWheel={handleWheel}\n onKeyDown={handleKey}\n style={{ width: size, height: size, touchAction: 'none' }}\n className={cn(\n 'relative inline-flex select-none items-center justify-center rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n TONE_CLASS[tone],\n disabled ? 'cursor-not-allowed opacity-50' : 'cursor-grab active:cursor-grabbing',\n className,\n )}\n {...rest}\n >\n <svg width={size} height={size} className=\"overflow-visible\">\n <path\n d={trackPath}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={4}\n strokeLinecap=\"round\"\n className=\"opacity-20\"\n />\n <path\n d={valuePath}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={4}\n strokeLinecap=\"round\"\n />\n <line\n x1={pointerInnerX}\n y1={pointerInnerY}\n x2={pointerOuterX}\n y2={pointerOuterY}\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n />\n </svg>\n {showValue && (\n <span\n aria-hidden=\"true\"\n className=\"absolute inset-0 grid place-items-center text-[10px] font-medium tabular-nums text-foreground\"\n >\n {format(value)}\n </span>\n )}\n {name && <input type=\"hidden\" name={name} value={value} />}\n </div>\n );\n});\n","import {\n forwardRef,\n Fragment,\n useEffect,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Kbd } from '../../display/kbd';\n\nexport interface KeyboardShortcutPickerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'value' | 'defaultValue' | 'onChange'> {\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (keys: string[]) => void;\n placeholder?: ReactNode;\n recordLabel?: ReactNode;\n /** Hidden input emits `+`-joined chord. */\n name?: string;\n}\n\nconst MODIFIER_NAMES: Record<string, string> = {\n Control: 'Ctrl',\n Meta: navigator?.platform?.toLowerCase?.().includes('mac') ? '⌘' : 'Meta',\n Alt: 'Alt',\n Shift: 'Shift',\n};\n\nfunction isModifier(key: string): boolean {\n return ['Control', 'Meta', 'Alt', 'Shift'].includes(key);\n}\n\nfunction normalizeKey(key: string): string {\n if (key === ' ') return 'Space';\n if (key.length === 1) return key.toUpperCase();\n return key;\n}\n\n/**\n * Capture a key chord. Click record → press keys → captured. Escape cancels;\n * Backspace during listening clears. Output is a normalized name array\n * (e.g. `['Meta', 'Shift', 'K']`).\n */\nexport const KeyboardShortcutPicker = forwardRef<HTMLButtonElement, KeyboardShortcutPickerProps>(\n function KeyboardShortcutPicker(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n placeholder = 'Click to record',\n recordLabel = 'Press keys…',\n disabled,\n name,\n className,\n type = 'button',\n ...rest\n },\n ref,\n ) {\n const [keys, setKeys] = useControlled<string[]>({\n controlled: valueProp,\n default: defaultValue ?? [],\n onChange: onValueChange,\n });\n const [recording, setRecording] = useState(false);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n\n useEffect(() => {\n if (!recording) return;\n const handleKey = (e: KeyboardEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (e.key === 'Escape') {\n setRecording(false);\n return;\n }\n if (e.key === 'Backspace') {\n setKeys([]);\n setRecording(false);\n return;\n }\n if (isModifier(e.key)) return;\n const captured: string[] = [];\n if (e.metaKey) captured.push('Meta');\n if (e.ctrlKey) captured.push('Control');\n if (e.altKey) captured.push('Alt');\n if (e.shiftKey) captured.push('Shift');\n captured.push(normalizeKey(e.key));\n setKeys(captured);\n setRecording(false);\n };\n const handleClickOutside = (e: MouseEvent) => {\n if (buttonRef.current && !buttonRef.current.contains(e.target as Node)) {\n setRecording(false);\n }\n };\n document.addEventListener('keydown', handleKey, true);\n document.addEventListener('pointerdown', handleClickOutside);\n return () => {\n document.removeEventListener('keydown', handleKey, true);\n document.removeEventListener('pointerdown', handleClickOutside);\n };\n }, [recording, setKeys]);\n\n const startRecord = () => {\n if (disabled) return;\n setRecording(true);\n };\n\n const handleButtonKey = (e: ReactKeyboardEvent<HTMLButtonElement>) => {\n if (recording) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n startRecord();\n }\n };\n\n return (\n <>\n <button\n {...rest}\n ref={(el) => {\n buttonRef.current = el;\n if (typeof ref === 'function') ref(el);\n else if (ref) (ref as React.MutableRefObject<HTMLButtonElement | null>).current = el;\n }}\n type={type}\n aria-pressed={recording}\n disabled={disabled}\n onClick={startRecord}\n onKeyDown={handleButtonKey}\n className={cn(\n 'inline-flex h-9 items-center gap-2 rounded-md border border-input bg-background px-3 text-sm transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60',\n recording && 'border-primary bg-primary-soft text-primary-soft-foreground',\n className,\n )}\n >\n {recording ? (\n <span className=\"text-xs text-muted-foreground\">{recordLabel}</span>\n ) : keys.length === 0 ? (\n <span className=\"text-xs text-muted-foreground\">{placeholder}</span>\n ) : (\n <span className=\"inline-flex items-center gap-1 text-muted-foreground\">\n {keys.map((k, i) => (\n <Fragment key={i}>\n {i > 0 && <span aria-hidden=\"true\">+</span>}\n <Kbd>{MODIFIER_NAMES[k] ?? k}</Kbd>\n </Fragment>\n ))}\n </span>\n )}\n </button>\n {name && <input type=\"hidden\" name={name} value={keys.join('+')} />}\n </>\n );\n },\n);\n","import {\n forwardRef,\n useMemo,\n useState,\n type ComponentType,\n type HTMLAttributes,\n type SVGAttributes,\n} from 'react';\nimport {\n Bell,\n Bookmark,\n Calendar,\n Camera,\n Check,\n ChevronDown,\n Clock,\n Cloud,\n Code,\n Coffee,\n Compass,\n Download,\n Edit,\n ExternalLink,\n Eye,\n File,\n Folder,\n Globe,\n Heart,\n Home,\n Image,\n Inbox,\n Info,\n Layers,\n Lightbulb,\n Link2,\n Lock,\n Mail,\n Map,\n MessageCircle,\n Mic,\n Moon,\n Music,\n Paperclip,\n Pencil,\n Phone,\n Pin,\n Play,\n Plus,\n Search,\n Send,\n Settings,\n Share2,\n ShoppingCart,\n Star,\n Sun,\n Tag,\n Trash,\n Upload,\n User,\n Video,\n Wallet,\n Zap,\n} from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Icon } from '../../icons';\nimport { inputBaseVariants } from '../InputStyles';\n\ntype IconComponent = ComponentType<SVGAttributes<SVGSVGElement>>;\n\nconst BUILT_IN_ICONS: Record<string, IconComponent> = {\n bell: Bell,\n bookmark: Bookmark,\n calendar: Calendar,\n camera: Camera,\n check: Check,\n 'chevron-down': ChevronDown,\n clock: Clock,\n cloud: Cloud,\n code: Code,\n coffee: Coffee,\n compass: Compass,\n download: Download,\n edit: Edit,\n 'external-link': ExternalLink,\n eye: Eye,\n file: File,\n folder: Folder,\n globe: Globe,\n heart: Heart,\n home: Home,\n image: Image,\n inbox: Inbox,\n info: Info,\n layers: Layers,\n lightbulb: Lightbulb,\n link: Link2,\n lock: Lock,\n mail: Mail,\n map: Map,\n message: MessageCircle,\n mic: Mic,\n moon: Moon,\n music: Music,\n paperclip: Paperclip,\n pencil: Pencil,\n phone: Phone,\n pin: Pin,\n play: Play,\n plus: Plus,\n search: Search,\n send: Send,\n settings: Settings,\n share: Share2,\n cart: ShoppingCart,\n star: Star,\n sun: Sun,\n tag: Tag,\n trash: Trash,\n upload: Upload,\n user: User,\n video: Video,\n wallet: Wallet,\n zap: Zap,\n};\n\nexport interface IconPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (name: string) => void;\n icons?: Record<string, IconComponent>;\n columns?: number;\n size?: number;\n iconButtonSize?: number;\n placeholder?: string;\n disabled?: boolean;\n name?: string;\n}\n\n/**\n * Searchable icon-picker grid. Built-in 50+ icon subset from `lucide-react`;\n * pass your own `icons` map to override.\n */\nexport const IconPicker = forwardRef<HTMLDivElement, IconPickerProps>(\n function IconPicker(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n icons = BUILT_IN_ICONS,\n columns = 8,\n size = 20,\n iconButtonSize = 36,\n placeholder = 'Search icons…',\n disabled,\n name,\n className,\n ...rest\n },\n ref,\n ) {\n const [value, setValue] = useControlled<string>({\n controlled: valueProp,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const [query, setQuery] = useState('');\n\n const filtered = useMemo(() => {\n const entries = Object.entries(icons);\n if (!query) return entries;\n const q = query.toLowerCase();\n return entries.filter(([key]) => key.toLowerCase().includes(q));\n }, [icons, query]);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col gap-2 rounded-md border border-border bg-card p-3 text-card-foreground shadow-sm',\n className,\n )}\n {...rest}\n >\n <input\n type=\"search\"\n value={query}\n placeholder={placeholder}\n disabled={disabled}\n onChange={(e) => setQuery(e.target.value)}\n className={cn(inputBaseVariants({ size: 'sm' }))}\n />\n <div\n role=\"grid\"\n aria-label=\"Icons\"\n className=\"grid gap-1 overflow-y-auto\"\n style={{ gridTemplateColumns: `repeat(${columns}, ${iconButtonSize}px)`, maxHeight: 240 }}\n >\n {filtered.map(([key, IconComp]) => {\n const selected = value === key;\n return (\n <div role=\"gridcell\" key={key}>\n <button\n type=\"button\"\n aria-pressed={selected}\n aria-label={key}\n disabled={disabled}\n onClick={() => setValue(key)}\n style={{ width: iconButtonSize, height: iconButtonSize }}\n className={cn(\n 'inline-flex items-center justify-center rounded-md border text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n selected\n ? 'border-primary bg-primary text-primary-foreground hover:bg-primary'\n : 'border-transparent',\n )}\n >\n <Icon icon={IconComp} size={size} />\n </button>\n </div>\n );\n })}\n {filtered.length === 0 && (\n <div className=\"col-span-full px-2 py-6 text-center text-xs text-muted-foreground\">\n No icons match.\n </div>\n )}\n </div>\n {name && <input type=\"hidden\" name={name} value={value} />}\n </div>\n );\n },\n);\n","import { forwardRef, useMemo, useState, type HTMLAttributes } from 'react';\nimport { ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Icon } from '../../icons';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../overlays/popover';\n\nexport interface FontOption {\n name: string;\n family: string;\n sample?: string;\n}\n\nexport const BUILT_IN_FONTS: FontOption[] = [\n { name: 'System Sans', family: 'system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif' },\n { name: 'System Serif', family: 'ui-serif, Cambria, Georgia, \"Times New Roman\", serif' },\n { name: 'System Mono', family: 'ui-monospace, SFMono-Regular, Menlo, Consolas, monospace' },\n { name: 'Helvetica', family: 'Helvetica, Arial, sans-serif' },\n { name: 'Times', family: '\"Times New Roman\", Times, serif' },\n { name: 'Courier', family: '\"Courier New\", Courier, monospace' },\n { name: 'Georgia', family: 'Georgia, \"Times New Roman\", serif' },\n { name: 'Verdana', family: 'Verdana, Geneva, Tahoma, sans-serif' },\n { name: 'Tahoma', family: 'Tahoma, Geneva, Verdana, sans-serif' },\n { name: 'Trebuchet', family: '\"Trebuchet MS\", Helvetica, sans-serif' },\n { name: 'Garamond', family: 'Garamond, \"Times New Roman\", serif' },\n { name: 'Comic Sans', family: '\"Comic Sans MS\", \"Comic Sans\", cursive' },\n { name: 'Impact', family: 'Impact, \"Arial Narrow\", sans-serif' },\n];\n\nexport interface FontPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (family: string) => void;\n fonts?: FontOption[];\n placeholder?: string;\n previewText?: string;\n disabled?: boolean;\n name?: string;\n}\n\n/**\n * Font-family picker with live preview. Each option row renders in its own\n * font face. Wraps `overlays/Popover` for the dropdown.\n */\nexport const FontPicker = forwardRef<HTMLDivElement, FontPickerProps>(\n function FontPicker(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n fonts = BUILT_IN_FONTS,\n placeholder = 'Select font…',\n previewText = 'The quick brown fox',\n disabled,\n name,\n className,\n ...rest\n },\n ref,\n ) {\n const [value, setValue] = useControlled<string>({\n controlled: valueProp,\n default: defaultValue ?? fonts[0]?.family ?? '',\n onChange: onValueChange,\n });\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const filtered = useMemo(() => {\n if (!query) return fonts;\n const q = query.toLowerCase();\n return fonts.filter((f) => f.name.toLowerCase().includes(q));\n }, [fonts, query]);\n\n const current = fonts.find((f) => f.family === value);\n\n return (\n <div ref={ref} className={cn('inline-block', className)} {...rest}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n className={cn(\n 'inline-flex h-10 min-w-[14rem] items-center justify-between gap-2 rounded-md border border-input bg-background px-3 text-sm transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-60',\n )}\n >\n <span style={{ fontFamily: value }} className=\"truncate text-foreground\">\n {current?.name ?? placeholder}\n </span>\n <Icon icon={ChevronDown} size={14} className=\"text-muted-foreground\" />\n </button>\n </PopoverTrigger>\n <PopoverContent bare className=\"w-[20rem] p-2\">\n <input\n type=\"search\"\n autoFocus\n value={query}\n placeholder=\"Search fonts…\"\n onChange={(e) => setQuery(e.target.value)}\n className=\"mb-2 h-8 w-full rounded-md border border-input bg-background px-2 text-sm outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n />\n <div role=\"listbox\" aria-label=\"Fonts\" className=\"max-h-72 overflow-y-auto\">\n {filtered.map((f) => {\n const selected = f.family === value;\n return (\n <button\n key={f.name}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n onClick={() => {\n setValue(f.family);\n setOpen(false);\n }}\n className={cn(\n 'flex w-full items-center justify-between rounded-sm px-2 py-1.5 text-left text-sm transition-colors hover:bg-muted',\n selected && 'bg-primary-soft text-primary-soft-foreground',\n )}\n >\n <span className=\"font-medium\">{f.name}</span>\n <span style={{ fontFamily: f.family }} className=\"ml-3 truncate text-xs text-muted-foreground\">\n {f.sample ?? previewText}\n </span>\n </button>\n );\n })}\n {filtered.length === 0 && (\n <div className=\"px-2 py-6 text-center text-xs text-muted-foreground\">No fonts match.</div>\n )}\n </div>\n </PopoverContent>\n </Popover>\n {name && <input type=\"hidden\" name={name} value={value} />}\n </div>\n );\n },\n);\n","import { forwardRef, useMemo, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { inputBaseVariants, type InputBaseVariants } from '../InputStyles';\n\nexport interface CronInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'onChange' | 'size'>,\n InputBaseVariants {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n invalid?: boolean;\n showPreview?: boolean;\n}\n\nconst WEEKDAY_NAMES = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\nconst MONTH_NAMES = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\ninterface CronField {\n raw: string;\n kind: 'every' | 'specific' | 'range' | 'list' | 'step' | 'invalid';\n value?: number | number[];\n step?: number;\n range?: [number, number];\n}\n\nfunction parseField(raw: string, min: number, max: number): CronField {\n if (raw === '*') return { raw, kind: 'every' };\n // Step: \"*/N\" or \"from-to/N\" — only support \"*/N\" first-gen.\n if (/^\\*\\/(\\d+)$/.test(raw)) {\n const step = Number(raw.slice(2));\n if (step < 1 || step > max) return { raw, kind: 'invalid' };\n return { raw, kind: 'step', step };\n }\n // Range: \"N-M\".\n if (/^(\\d+)-(\\d+)$/.test(raw)) {\n const [a, b] = raw.split('-').map(Number);\n if (a == null || b == null || a < min || b > max || a > b) return { raw, kind: 'invalid' };\n return { raw, kind: 'range', range: [a, b] };\n }\n // List: \"N,M,O\".\n if (/^\\d+(,\\d+)+$/.test(raw)) {\n const parts = raw.split(',').map(Number);\n if (parts.some((p) => p < min || p > max)) return { raw, kind: 'invalid' };\n return { raw, kind: 'list', value: parts };\n }\n // Specific number.\n if (/^\\d+$/.test(raw)) {\n const n = Number(raw);\n if (n < min || n > max) return { raw, kind: 'invalid' };\n return { raw, kind: 'specific', value: n };\n }\n return { raw, kind: 'invalid' };\n}\n\nfunction describeField(field: CronField, names?: string[], unit = '', plural = ''): string {\n if (field.kind === 'every') return '*';\n if (field.kind === 'invalid') return '?';\n if (field.kind === 'step' && field.step != null) return `every ${field.step} ${plural || unit + 's'}`;\n if (field.kind === 'range' && field.range) {\n const [a, b] = field.range;\n const aLabel = names?.[a] ?? a;\n const bLabel = names?.[b] ?? b;\n return `${aLabel} through ${bLabel}`;\n }\n if (field.kind === 'list' && Array.isArray(field.value)) {\n return field.value.map((v) => names?.[v] ?? v).join(', ');\n }\n if (field.kind === 'specific' && typeof field.value === 'number') {\n return String(names?.[field.value] ?? field.value);\n }\n return field.raw;\n}\n\nfunction parseCron(value: string): string {\n const parts = value.trim().split(/\\s+/);\n if (parts.length !== 5) return 'Cron expressions must have 5 fields (min hour dom month dow).';\n const [minRaw, hourRaw, domRaw, monRaw, dowRaw] = parts as [string, string, string, string, string];\n const minute = parseField(minRaw, 0, 59);\n const hour = parseField(hourRaw, 0, 23);\n const dom = parseField(domRaw, 1, 31);\n const month = parseField(monRaw, 1, 12);\n const dow = parseField(dowRaw, 0, 6);\n\n if ([minute, hour, dom, month, dow].some((f) => f.kind === 'invalid')) {\n return 'Invalid cron expression.';\n }\n\n // Common-case readouts.\n if (minute.kind === 'step' && hour.kind === 'every' && dom.kind === 'every' && month.kind === 'every' && dow.kind === 'every') {\n return `Every ${minute.step} minutes`;\n }\n if (minute.kind === 'every' && hour.kind === 'step' && dom.kind === 'every' && month.kind === 'every' && dow.kind === 'every') {\n return `Every ${hour.step} hours`;\n }\n if (\n minute.kind === 'specific' &&\n hour.kind === 'specific' &&\n dom.kind === 'every' &&\n month.kind === 'every' &&\n dow.kind === 'every'\n ) {\n return `Every day at ${String(hour.value).padStart(2, '0')}:${String(minute.value).padStart(2, '0')}`;\n }\n if (\n minute.kind === 'specific' &&\n hour.kind === 'specific' &&\n dom.kind === 'every' &&\n month.kind === 'every' &&\n (dow.kind === 'list' || dow.kind === 'specific')\n ) {\n return `At ${String(hour.value).padStart(2, '0')}:${String(minute.value).padStart(2, '0')} on ${describeField(dow, WEEKDAY_NAMES)}`;\n }\n if (minute.kind === 'every' && hour.kind === 'every' && dom.kind === 'every' && month.kind === 'every' && dow.kind === 'every') {\n return 'Every minute';\n }\n // Fallback — describe each field.\n const parts2 = [];\n if (minute.kind !== 'every') parts2.push(`minute: ${describeField(minute, undefined, 'minute')}`);\n if (hour.kind !== 'every') parts2.push(`hour: ${describeField(hour, undefined, 'hour')}`);\n if (dom.kind !== 'every') parts2.push(`day: ${describeField(dom)}`);\n if (month.kind !== 'every') parts2.push(`month: ${describeField(month, ['', ...MONTH_NAMES])}`);\n if (dow.kind !== 'every') parts2.push(`weekday: ${describeField(dow, WEEKDAY_NAMES)}`);\n return parts2.length === 0 ? 'Every minute' : parts2.join(' · ');\n}\n\n/**\n * Cron-string input with human-readable preview. Supports asterisk, N,\n * step (asterisk-slash-N), N-M, N,M,O per field. Quartz extensions\n * (?, L, W, #) deferred.\n */\nexport const CronInput = forwardRef<HTMLInputElement, CronInputProps>(\n function CronInput(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n placeholder = '* * * * *',\n invalid,\n size,\n state,\n showPreview = true,\n disabled,\n readOnly,\n name,\n className,\n ...rest\n },\n ref,\n ) {\n const [value, setValue] = useControlled<string>({\n controlled: valueProp,\n default: defaultValue ?? '*/5 * * * *',\n onChange: onValueChange,\n });\n const preview = useMemo(() => parseCron(value), [value]);\n const isError = invalid || preview.startsWith('Invalid') || preview.startsWith('Cron');\n const inputState = isError ? 'invalid' : (state ?? 'default');\n\n return (\n <div className={cn('flex flex-col gap-1', className)}>\n <input\n {...rest}\n ref={ref}\n type=\"text\"\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n aria-invalid={isError || undefined}\n spellCheck={false}\n onChange={(e) => setValue(e.target.value)}\n className={cn(inputBaseVariants({ size, state: inputState }), 'font-mono')}\n />\n {showPreview && (\n <div\n aria-live=\"polite\"\n className={cn(\n 'px-1 text-xs',\n isError ? 'text-destructive' : 'text-muted-foreground',\n )}\n >\n {preview}\n </div>\n )}\n {name && <input type=\"hidden\" name={name} value={value} />}\n </div>\n );\n },\n);\n","import { forwardRef, useMemo, type HTMLAttributes } from 'react';\nimport { Plus, Trash } from 'lucide-react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Icon } from '../../icons';\nimport { inputBaseVariants } from '../InputStyles';\n\nexport type GradientKind = 'linear' | 'radial' | 'conic';\n\nexport interface GradientStop {\n color: string;\n position: number;\n}\n\nexport interface Gradient {\n kind: GradientKind;\n angle: number;\n stops: GradientStop[];\n}\n\nexport interface GradientPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {\n value?: Gradient;\n defaultValue?: Gradient;\n onValueChange?: (value: Gradient) => void;\n disabled?: boolean;\n name?: string;\n}\n\nconst DEFAULT_GRADIENT: Gradient = {\n kind: 'linear',\n angle: 90,\n stops: [\n { color: '#3b82f6', position: 0 },\n { color: '#a855f7', position: 100 },\n ],\n};\n\nexport function gradientToCss(g: Gradient): string {\n const stops = [...g.stops].sort((a, b) => a.position - b.position);\n const stopsStr = stops.map((s) => `${s.color} ${s.position}%`).join(', ');\n if (g.kind === 'linear') return `linear-gradient(${g.angle}deg, ${stopsStr})`;\n if (g.kind === 'radial') return `radial-gradient(circle, ${stopsStr})`;\n return `conic-gradient(from ${g.angle}deg, ${stopsStr})`;\n}\n\n/**\n * Visual gradient editor — kind / angle / stops. Output `Gradient` object via\n * `onValueChange`; `name` emits the CSS string for forms.\n */\nexport const GradientPicker = forwardRef<HTMLDivElement, GradientPickerProps>(\n function GradientPicker(\n { value: valueProp, defaultValue, onValueChange, disabled, name, className, ...rest },\n ref,\n ) {\n const [gradient, setGradient] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? DEFAULT_GRADIENT,\n onChange: onValueChange,\n });\n\n const css = useMemo(() => gradientToCss(gradient), [gradient]);\n\n const update = (patch: Partial<Gradient>) => setGradient({ ...gradient, ...patch });\n const updateStop = (i: number, patch: Partial<GradientStop>) =>\n setGradient({\n ...gradient,\n stops: gradient.stops.map((s, idx) => (idx === i ? { ...s, ...patch } : s)),\n });\n const addStop = () => {\n const last = gradient.stops[gradient.stops.length - 1];\n const newPos = last ? Math.min(100, last.position + 25) : 50;\n setGradient({\n ...gradient,\n stops: [...gradient.stops, { color: '#ffffff', position: newPos }],\n });\n };\n const removeStop = (i: number) => {\n if (gradient.stops.length <= 2) return;\n setGradient({ ...gradient, stops: gradient.stops.filter((_, idx) => idx !== i) });\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-col gap-3 rounded-md border border-border bg-card p-3 text-card-foreground shadow-sm',\n disabled && 'opacity-60',\n className,\n )}\n {...rest}\n >\n {/* Kind + angle */}\n <div className=\"flex items-center gap-2 text-sm\">\n <div role=\"radiogroup\" aria-label=\"Gradient kind\" className=\"flex items-center gap-0.5 rounded-md bg-muted/40 p-0.5 ring-1 ring-border\">\n {(['linear', 'radial', 'conic'] as GradientKind[]).map((k) => (\n <button\n key={k}\n type=\"button\"\n role=\"radio\"\n aria-checked={gradient.kind === k}\n disabled={disabled}\n onClick={() => update({ kind: k })}\n className={cn(\n 'inline-flex h-6 items-center rounded px-2 text-xs font-medium transition-colors',\n gradient.kind === k\n ? 'bg-primary text-primary-foreground'\n : 'text-muted-foreground hover:text-foreground',\n )}\n >\n {k}\n </button>\n ))}\n </div>\n {gradient.kind !== 'radial' && (\n <label className=\"ml-auto flex items-center gap-2 text-xs text-muted-foreground\">\n Angle\n <input\n type=\"number\"\n min={0}\n max={360}\n value={gradient.angle}\n disabled={disabled}\n onChange={(e) => update({ angle: Math.max(0, Math.min(360, Number(e.target.value) || 0)) })}\n className={cn(inputBaseVariants({ size: 'sm' }), 'w-20')}\n />\n °\n </label>\n )}\n </div>\n\n {/* Preview bar */}\n <div\n aria-hidden=\"true\"\n className=\"h-12 rounded-md border border-border\"\n style={{ background: css }}\n />\n\n {/* Stops */}\n <ul className=\"flex flex-col gap-2\">\n {gradient.stops.map((stop, i) => (\n <li key={i} className=\"flex items-center gap-2\">\n <input\n type=\"color\"\n value={stop.color}\n disabled={disabled}\n onChange={(e) => updateStop(i, { color: e.target.value })}\n className=\"h-7 w-10 cursor-pointer rounded-sm border border-input bg-background\"\n />\n <input\n type=\"text\"\n value={stop.color}\n disabled={disabled}\n onChange={(e) => updateStop(i, { color: e.target.value })}\n className={cn(inputBaseVariants({ size: 'sm' }), 'flex-1 font-mono')}\n />\n <input\n type=\"number\"\n min={0}\n max={100}\n value={stop.position}\n disabled={disabled}\n onChange={(e) => updateStop(i, { position: Math.max(0, Math.min(100, Number(e.target.value) || 0)) })}\n className={cn(inputBaseVariants({ size: 'sm' }), 'w-16')}\n />\n <span className=\"text-xs text-muted-foreground\">%</span>\n <button\n type=\"button\"\n aria-label=\"Remove stop\"\n disabled={disabled || gradient.stops.length <= 2}\n onClick={() => removeStop(i)}\n className=\"inline-flex h-7 w-7 items-center justify-center rounded text-destructive hover:bg-destructive-soft disabled:pointer-events-none disabled:opacity-40\"\n >\n <Icon icon={Trash} size={12} />\n </button>\n </li>\n ))}\n </ul>\n\n <button\n type=\"button\"\n disabled={disabled}\n onClick={addStop}\n className=\"inline-flex h-8 w-full items-center justify-center gap-1 rounded-md border border-dashed border-border text-xs text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <Icon icon={Plus} size={12} /> Add stop\n </button>\n\n {/* CSS output */}\n <code className=\"block break-all rounded-md bg-muted/40 px-2 py-1.5 text-[10px] text-muted-foreground\">\n {css}\n </code>\n {name && <input type=\"hidden\" name={name} value={css} />}\n </div>\n );\n },\n);\n","import { forwardRef, useId, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { inputBaseVariants } from '../InputStyles';\n\nexport interface Address {\n country: string;\n line1: string;\n line2?: string;\n city: string;\n region: string;\n postalCode: string;\n}\n\ninterface CountryConfig {\n iso: string;\n name: string;\n regionLabel: string;\n postalLabel: string;\n regionOptions?: Array<{ value: string; label: string }>;\n}\n\nconst COUNTRIES: CountryConfig[] = [\n {\n iso: 'US',\n name: 'United States',\n regionLabel: 'State',\n postalLabel: 'ZIP code',\n regionOptions: [\n 'AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA', 'HI', 'ID', 'IL', 'IN', 'IA',\n 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ',\n 'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT',\n 'VA', 'WA', 'WV', 'WI', 'WY',\n ].map((s) => ({ value: s, label: s })),\n },\n {\n iso: 'CA',\n name: 'Canada',\n regionLabel: 'Province',\n postalLabel: 'Postal code',\n regionOptions: ['AB', 'BC', 'MB', 'NB', 'NL', 'NS', 'NT', 'NU', 'ON', 'PE', 'QC', 'SK', 'YT'].map(\n (s) => ({ value: s, label: s }),\n ),\n },\n { iso: 'GB', name: 'United Kingdom', regionLabel: 'County', postalLabel: 'Postcode' },\n { iso: 'DE', name: 'Germany', regionLabel: 'Bundesland', postalLabel: 'PLZ' },\n { iso: 'FR', name: 'France', regionLabel: 'Région', postalLabel: 'Code postal' },\n { iso: 'AU', name: 'Australia', regionLabel: 'State', postalLabel: 'Postcode' },\n { iso: 'JP', name: 'Japan', regionLabel: 'Prefecture', postalLabel: '〒' },\n];\n\nconst FALLBACK: CountryConfig = {\n iso: 'XX',\n name: 'Other',\n regionLabel: 'Region',\n postalLabel: 'Postal code',\n};\n\nfunction configFor(iso: string): CountryConfig {\n return COUNTRIES.find((c) => c.iso === iso) ?? FALLBACK;\n}\n\nexport interface AddressFormProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {\n value?: Address;\n defaultValue?: Address;\n onValueChange?: (address: Address) => void;\n disabled?: boolean;\n readOnly?: boolean;\n compact?: boolean;\n /** Prefix for hidden inputs (`{name}.line1`, etc.). */\n name?: string;\n}\n\nconst EMPTY: Address = { country: 'US', line1: '', city: '', region: '', postalCode: '' };\n\n/**\n * Country-aware address form. Country select drives the region label/options\n * and postal-code label. Built-in config for US/CA/GB/DE/FR/AU/JP; generic\n * fallback for the rest.\n */\nexport const AddressForm = forwardRef<HTMLDivElement, AddressFormProps>(\n function AddressForm(\n { value: valueProp, defaultValue, onValueChange, disabled, readOnly, compact, name, className, ...rest },\n ref,\n ) {\n const [address, setAddress] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? EMPTY,\n onChange: onValueChange,\n });\n\n const config = configFor(address.country);\n const ids = {\n country: useId(),\n line1: useId(),\n line2: useId(),\n city: useId(),\n region: useId(),\n postal: useId(),\n };\n\n const update = (patch: Partial<Address>) => setAddress({ ...address, ...patch });\n\n return (\n <div ref={ref} className={cn('flex flex-col gap-3', className)} {...rest}>\n {/* Country */}\n <div className=\"flex flex-col gap-1\">\n <label htmlFor={ids.country} className=\"text-xs font-medium text-foreground\">\n Country\n </label>\n <select\n id={ids.country}\n value={address.country}\n disabled={disabled || readOnly}\n onChange={(e) => update({ country: e.target.value, region: '' })}\n className={cn(inputBaseVariants({ size: 'md' }))}\n >\n {COUNTRIES.map((c) => (\n <option key={c.iso} value={c.iso}>\n {c.name}\n </option>\n ))}\n <option value=\"XX\">Other</option>\n </select>\n </div>\n {/* Line 1 */}\n <div className=\"flex flex-col gap-1\">\n <label htmlFor={ids.line1} className=\"text-xs font-medium text-foreground\">\n Address line 1\n </label>\n <input\n id={ids.line1}\n type=\"text\"\n autoComplete=\"address-line1\"\n value={address.line1}\n disabled={disabled}\n readOnly={readOnly}\n onChange={(e) => update({ line1: e.target.value })}\n className={cn(inputBaseVariants({ size: 'md' }))}\n />\n </div>\n {/* Line 2 */}\n <div className=\"flex flex-col gap-1\">\n <label htmlFor={ids.line2} className=\"text-xs font-medium text-muted-foreground\">\n Address line 2 <span className=\"text-[10px]\">(optional)</span>\n </label>\n <input\n id={ids.line2}\n type=\"text\"\n autoComplete=\"address-line2\"\n value={address.line2 ?? ''}\n disabled={disabled}\n readOnly={readOnly}\n onChange={(e) => update({ line2: e.target.value })}\n className={cn(inputBaseVariants({ size: 'md' }))}\n />\n </div>\n {/* City + Region + Postal */}\n <div className={cn('grid gap-3', compact ? 'grid-cols-1' : 'grid-cols-3')}>\n <div className=\"flex flex-col gap-1\">\n <label htmlFor={ids.city} className=\"text-xs font-medium text-foreground\">\n City\n </label>\n <input\n id={ids.city}\n type=\"text\"\n autoComplete=\"address-level2\"\n value={address.city}\n disabled={disabled}\n readOnly={readOnly}\n onChange={(e) => update({ city: e.target.value })}\n className={cn(inputBaseVariants({ size: 'md' }))}\n />\n </div>\n <div className=\"flex flex-col gap-1\">\n <label htmlFor={ids.region} className=\"text-xs font-medium text-foreground\">\n {config.regionLabel}\n </label>\n {config.regionOptions ? (\n <select\n id={ids.region}\n value={address.region}\n disabled={disabled || readOnly}\n onChange={(e) => update({ region: e.target.value })}\n className={cn(inputBaseVariants({ size: 'md' }))}\n >\n <option value=\"\">—</option>\n {config.regionOptions.map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n </select>\n ) : (\n <input\n id={ids.region}\n type=\"text\"\n autoComplete=\"address-level1\"\n value={address.region}\n disabled={disabled}\n readOnly={readOnly}\n onChange={(e) => update({ region: e.target.value })}\n className={cn(inputBaseVariants({ size: 'md' }))}\n />\n )}\n </div>\n <div className=\"flex flex-col gap-1\">\n <label htmlFor={ids.postal} className=\"text-xs font-medium text-foreground\">\n {config.postalLabel}\n </label>\n <input\n id={ids.postal}\n type=\"text\"\n autoComplete=\"postal-code\"\n value={address.postalCode}\n disabled={disabled}\n readOnly={readOnly}\n onChange={(e) => update({ postalCode: e.target.value })}\n className={cn(inputBaseVariants({ size: 'md' }))}\n />\n </div>\n </div>\n {name && (\n <>\n <input type=\"hidden\" name={`${name}.country`} value={address.country} />\n <input type=\"hidden\" name={`${name}.line1`} value={address.line1} />\n <input type=\"hidden\" name={`${name}.line2`} value={address.line2 ?? ''} />\n <input type=\"hidden\" name={`${name}.city`} value={address.city} />\n <input type=\"hidden\" name={`${name}.region`} value={address.region} />\n <input type=\"hidden\" name={`${name}.postalCode`} value={address.postalCode} />\n </>\n )}\n </div>\n );\n },\n);\n\nexport const ADDRESS_COUNTRIES = COUNTRIES;\n","import { forwardRef, useMemo, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { inputBaseVariants } from '../InputStyles';\n\nexport interface PhoneCountry {\n iso: string;\n name: string;\n dial: string; // includes leading +\n flag: string; // emoji\n}\n\nexport const PHONE_COUNTRIES: PhoneCountry[] = [\n { iso: 'US', name: 'United States', dial: '+1', flag: '🇺🇸' },\n { iso: 'CA', name: 'Canada', dial: '+1', flag: '🇨🇦' },\n { iso: 'GB', name: 'United Kingdom', dial: '+44', flag: '🇬🇧' },\n { iso: 'AU', name: 'Australia', dial: '+61', flag: '🇦🇺' },\n { iso: 'DE', name: 'Germany', dial: '+49', flag: '🇩🇪' },\n { iso: 'FR', name: 'France', dial: '+33', flag: '🇫🇷' },\n { iso: 'ES', name: 'Spain', dial: '+34', flag: '🇪🇸' },\n { iso: 'IT', name: 'Italy', dial: '+39', flag: '🇮🇹' },\n { iso: 'NL', name: 'Netherlands', dial: '+31', flag: '🇳🇱' },\n { iso: 'BE', name: 'Belgium', dial: '+32', flag: '🇧🇪' },\n { iso: 'CH', name: 'Switzerland', dial: '+41', flag: '🇨🇭' },\n { iso: 'AT', name: 'Austria', dial: '+43', flag: '🇦🇹' },\n { iso: 'SE', name: 'Sweden', dial: '+46', flag: '🇸🇪' },\n { iso: 'NO', name: 'Norway', dial: '+47', flag: '🇳🇴' },\n { iso: 'DK', name: 'Denmark', dial: '+45', flag: '🇩🇰' },\n { iso: 'FI', name: 'Finland', dial: '+358', flag: '🇫🇮' },\n { iso: 'IE', name: 'Ireland', dial: '+353', flag: '🇮🇪' },\n { iso: 'PT', name: 'Portugal', dial: '+351', flag: '🇵🇹' },\n { iso: 'PL', name: 'Poland', dial: '+48', flag: '🇵🇱' },\n { iso: 'CZ', name: 'Czechia', dial: '+420', flag: '🇨🇿' },\n { iso: 'GR', name: 'Greece', dial: '+30', flag: '🇬🇷' },\n { iso: 'TR', name: 'Türkiye', dial: '+90', flag: '🇹🇷' },\n { iso: 'RU', name: 'Russia', dial: '+7', flag: '🇷🇺' },\n { iso: 'UA', name: 'Ukraine', dial: '+380', flag: '🇺🇦' },\n { iso: 'IL', name: 'Israel', dial: '+972', flag: '🇮🇱' },\n { iso: 'AE', name: 'UAE', dial: '+971', flag: '🇦🇪' },\n { iso: 'SA', name: 'Saudi Arabia', dial: '+966', flag: '🇸🇦' },\n { iso: 'EG', name: 'Egypt', dial: '+20', flag: '🇪🇬' },\n { iso: 'ZA', name: 'South Africa', dial: '+27', flag: '🇿🇦' },\n { iso: 'NG', name: 'Nigeria', dial: '+234', flag: '🇳🇬' },\n { iso: 'KE', name: 'Kenya', dial: '+254', flag: '🇰🇪' },\n { iso: 'IN', name: 'India', dial: '+91', flag: '🇮🇳' },\n { iso: 'PK', name: 'Pakistan', dial: '+92', flag: '🇵🇰' },\n { iso: 'BD', name: 'Bangladesh', dial: '+880', flag: '🇧🇩' },\n { iso: 'SG', name: 'Singapore', dial: '+65', flag: '🇸🇬' },\n { iso: 'MY', name: 'Malaysia', dial: '+60', flag: '🇲🇾' },\n { iso: 'TH', name: 'Thailand', dial: '+66', flag: '🇹🇭' },\n { iso: 'VN', name: 'Vietnam', dial: '+84', flag: '🇻🇳' },\n { iso: 'PH', name: 'Philippines', dial: '+63', flag: '🇵🇭' },\n { iso: 'ID', name: 'Indonesia', dial: '+62', flag: '🇮🇩' },\n { iso: 'JP', name: 'Japan', dial: '+81', flag: '🇯🇵' },\n { iso: 'KR', name: 'South Korea', dial: '+82', flag: '🇰🇷' },\n { iso: 'CN', name: 'China', dial: '+86', flag: '🇨🇳' },\n { iso: 'HK', name: 'Hong Kong', dial: '+852', flag: '🇭🇰' },\n { iso: 'TW', name: 'Taiwan', dial: '+886', flag: '🇹🇼' },\n { iso: 'NZ', name: 'New Zealand', dial: '+64', flag: '🇳🇿' },\n { iso: 'BR', name: 'Brazil', dial: '+55', flag: '🇧🇷' },\n { iso: 'AR', name: 'Argentina', dial: '+54', flag: '🇦🇷' },\n { iso: 'CL', name: 'Chile', dial: '+56', flag: '🇨🇱' },\n { iso: 'CO', name: 'Colombia', dial: '+57', flag: '🇨🇴' },\n { iso: 'MX', name: 'Mexico', dial: '+52', flag: '🇲🇽' },\n];\n\nexport interface PhoneInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (e164: string) => void;\n defaultCountry?: string;\n disabled?: boolean;\n readOnly?: boolean;\n invalid?: boolean;\n placeholder?: string;\n name?: string;\n}\n\nfunction splitE164(value: string, defaultIso: string): { iso: string; national: string } {\n if (!value) return { iso: defaultIso, national: '' };\n // Match the longest dial code prefix.\n const sorted = [...PHONE_COUNTRIES].sort((a, b) => b.dial.length - a.dial.length);\n for (const c of sorted) {\n if (value.startsWith(c.dial)) {\n return { iso: c.iso, national: value.slice(c.dial.length).replace(/\\D/g, '') };\n }\n }\n return { iso: defaultIso, national: value.replace(/\\D/g, '') };\n}\n\n/**\n * International phone input — country dial-code select + national-number\n * input. Output is E.164 (`+<country><number>`). First-gen list; full\n * `libphonenumber` validation/format deferred.\n */\nexport const PhoneInput = forwardRef<HTMLDivElement, PhoneInputProps>(\n function PhoneInput(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n defaultCountry = 'US',\n disabled,\n readOnly,\n invalid,\n placeholder = '(555) 555-5555',\n name,\n className,\n ...rest\n },\n ref,\n ) {\n const [value, setValue] = useControlled<string>({\n controlled: valueProp,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const { iso, national } = useMemo(() => splitE164(value, defaultCountry), [value, defaultCountry]);\n const country = PHONE_COUNTRIES.find((c) => c.iso === iso) ?? PHONE_COUNTRIES[0]!;\n\n const setCountry = (nextIso: string) => {\n const next = PHONE_COUNTRIES.find((c) => c.iso === nextIso) ?? country;\n setValue(`${next.dial}${national}`);\n };\n const setNational = (raw: string) => {\n const digits = raw.replace(/\\D/g, '');\n setValue(`${country.dial}${digits}`);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'inline-flex items-stretch overflow-hidden rounded-md border bg-background',\n invalid ? 'border-destructive' : 'border-input',\n disabled && 'opacity-60',\n className,\n )}\n {...rest}\n >\n <select\n aria-label=\"Country\"\n value={iso}\n disabled={disabled || readOnly}\n onChange={(e) => setCountry(e.target.value)}\n className={cn(\n 'h-10 cursor-pointer border-r border-input bg-card pl-2 pr-1 text-sm outline-none focus-visible:ring-2 focus-visible:ring-ring',\n )}\n style={{ minWidth: 90 }}\n >\n {PHONE_COUNTRIES.map((c) => (\n <option key={c.iso} value={c.iso}>\n {c.flag} {c.dial}\n </option>\n ))}\n </select>\n <input\n type=\"tel\"\n inputMode=\"tel\"\n autoComplete=\"tel-national\"\n value={national}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n aria-invalid={invalid || undefined}\n onChange={(e) => setNational(e.target.value)}\n className={cn(\n inputBaseVariants({ size: 'md' }),\n 'rounded-none border-0 focus-visible:ring-0',\n )}\n />\n {name && <input type=\"hidden\" name={name} value={value} />}\n </div>\n );\n },\n);\n","import { forwardRef, useMemo, useRef, useState, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils';\nimport { inputBaseVariants } from '../InputStyles';\n\nexport interface EmojiEntry {\n emoji: string;\n name: string;\n keywords?: string[];\n}\n\nexport interface EmojiCategory {\n id: string;\n label: string;\n icon: string;\n emojis: EmojiEntry[];\n}\n\nconst EMOJI: EmojiCategory[] = [\n {\n id: 'smileys',\n label: 'Smileys',\n icon: '😀',\n emojis: [\n { emoji: '😀', name: 'grinning face' },\n { emoji: '😃', name: 'grinning with big eyes' },\n { emoji: '😄', name: 'grinning, smiling eyes' },\n { emoji: '😁', name: 'beaming face' },\n { emoji: '😆', name: 'squinting face' },\n { emoji: '😅', name: 'sweat smile' },\n { emoji: '🤣', name: 'rolling on the floor laughing' },\n { emoji: '😂', name: 'face with tears of joy' },\n { emoji: '🙂', name: 'slight smile' },\n { emoji: '🙃', name: 'upside-down face' },\n { emoji: '😉', name: 'wink' },\n { emoji: '😊', name: 'blushing smile' },\n { emoji: '😇', name: 'halo' },\n { emoji: '🥰', name: 'smile with hearts' },\n { emoji: '😍', name: 'heart eyes' },\n { emoji: '🤩', name: 'star eyes' },\n { emoji: '😘', name: 'kiss' },\n { emoji: '😗', name: 'kissing face' },\n { emoji: '🤔', name: 'thinking' },\n { emoji: '😐', name: 'neutral' },\n { emoji: '😑', name: 'expressionless' },\n { emoji: '😶', name: 'no mouth' },\n { emoji: '🙄', name: 'eye roll' },\n { emoji: '😏', name: 'smirk' },\n { emoji: '😒', name: 'unamused' },\n { emoji: '😞', name: 'disappointed' },\n { emoji: '😔', name: 'pensive' },\n { emoji: '😟', name: 'worried' },\n { emoji: '😕', name: 'confused' },\n { emoji: '🙁', name: 'slight frown' },\n { emoji: '😣', name: 'persevering' },\n { emoji: '😖', name: 'confounded' },\n { emoji: '😫', name: 'tired' },\n { emoji: '😩', name: 'weary' },\n { emoji: '🥺', name: 'pleading' },\n { emoji: '😢', name: 'crying' },\n { emoji: '😭', name: 'loudly crying' },\n { emoji: '😡', name: 'pouting' },\n { emoji: '😠', name: 'angry' },\n { emoji: '🤬', name: 'cursing' },\n { emoji: '🥶', name: 'cold' },\n { emoji: '🥵', name: 'hot' },\n { emoji: '😳', name: 'flushed' },\n { emoji: '🤯', name: 'mind blown' },\n { emoji: '😱', name: 'screaming' },\n { emoji: '😨', name: 'fearful' },\n { emoji: '😰', name: 'anxious' },\n { emoji: '🥱', name: 'yawning' },\n { emoji: '😴', name: 'sleeping' },\n { emoji: '🤤', name: 'drooling' },\n ],\n },\n {\n id: 'people',\n label: 'People',\n icon: '👍',\n emojis: [\n { emoji: '👍', name: 'thumbs up' },\n { emoji: '👎', name: 'thumbs down' },\n { emoji: '👌', name: 'OK' },\n { emoji: '✌️', name: 'victory' },\n { emoji: '🤞', name: 'crossed fingers' },\n { emoji: '🤟', name: 'love-you' },\n { emoji: '🤘', name: 'rock on' },\n { emoji: '🤙', name: 'call me' },\n { emoji: '👈', name: 'point left' },\n { emoji: '👉', name: 'point right' },\n { emoji: '👆', name: 'point up' },\n { emoji: '👇', name: 'point down' },\n { emoji: '☝️', name: 'index up' },\n { emoji: '✋', name: 'raised hand' },\n { emoji: '🖐️', name: 'hand fingers splayed' },\n { emoji: '🖖', name: 'vulcan' },\n { emoji: '👋', name: 'wave' },\n { emoji: '🤚', name: 'back of hand' },\n { emoji: '👏', name: 'clap' },\n { emoji: '🙌', name: 'raising hands' },\n { emoji: '🤝', name: 'handshake' },\n { emoji: '🙏', name: 'pray' },\n { emoji: '💪', name: 'flexed bicep' },\n { emoji: '👀', name: 'eyes' },\n { emoji: '👤', name: 'silhouette' },\n { emoji: '👥', name: 'silhouettes' },\n { emoji: '🧑', name: 'person' },\n { emoji: '👶', name: 'baby' },\n { emoji: '🧒', name: 'child' },\n { emoji: '👦', name: 'boy' },\n { emoji: '👧', name: 'girl' },\n { emoji: '🧓', name: 'older person' },\n ],\n },\n {\n id: 'nature',\n label: 'Nature',\n icon: '🌳',\n emojis: [\n { emoji: '🐶', name: 'dog' },\n { emoji: '🐱', name: 'cat' },\n { emoji: '🐭', name: 'mouse' },\n { emoji: '🐹', name: 'hamster' },\n { emoji: '🐰', name: 'rabbit' },\n { emoji: '🦊', name: 'fox' },\n { emoji: '🐻', name: 'bear' },\n { emoji: '🐼', name: 'panda' },\n { emoji: '🐨', name: 'koala' },\n { emoji: '🐯', name: 'tiger' },\n { emoji: '🦁', name: 'lion' },\n { emoji: '🐮', name: 'cow' },\n { emoji: '🐷', name: 'pig' },\n { emoji: '🐸', name: 'frog' },\n { emoji: '🐵', name: 'monkey' },\n { emoji: '🐔', name: 'chicken' },\n { emoji: '🐧', name: 'penguin' },\n { emoji: '🐦', name: 'bird' },\n { emoji: '🐤', name: 'baby chick' },\n { emoji: '🦆', name: 'duck' },\n { emoji: '🦅', name: 'eagle' },\n { emoji: '🦉', name: 'owl' },\n { emoji: '🌸', name: 'cherry blossom' },\n { emoji: '🌹', name: 'rose' },\n { emoji: '🌻', name: 'sunflower' },\n { emoji: '🌷', name: 'tulip' },\n { emoji: '🌼', name: 'daisy' },\n { emoji: '🌳', name: 'tree' },\n { emoji: '🌲', name: 'evergreen' },\n { emoji: '🌴', name: 'palm' },\n { emoji: '🌵', name: 'cactus' },\n { emoji: '🍀', name: 'four-leaf clover' },\n { emoji: '☀️', name: 'sun' },\n { emoji: '🌙', name: 'moon' },\n { emoji: '⭐', name: 'star' },\n { emoji: '⚡', name: 'lightning' },\n { emoji: '🔥', name: 'fire' },\n ],\n },\n {\n id: 'food',\n label: 'Food',\n icon: '🍕',\n emojis: [\n { emoji: '🍎', name: 'apple' },\n { emoji: '🍊', name: 'orange' },\n { emoji: '🍌', name: 'banana' },\n { emoji: '🍇', name: 'grapes' },\n { emoji: '🍓', name: 'strawberry' },\n { emoji: '🍉', name: 'watermelon' },\n { emoji: '🍒', name: 'cherries' },\n { emoji: '🍑', name: 'peach' },\n { emoji: '🍍', name: 'pineapple' },\n { emoji: '🥑', name: 'avocado' },\n { emoji: '🍅', name: 'tomato' },\n { emoji: '🥕', name: 'carrot' },\n { emoji: '🌽', name: 'corn' },\n { emoji: '🥬', name: 'leafy green' },\n { emoji: '🍞', name: 'bread' },\n { emoji: '🥐', name: 'croissant' },\n { emoji: '🥯', name: 'bagel' },\n { emoji: '🥖', name: 'baguette' },\n { emoji: '🧀', name: 'cheese' },\n { emoji: '🥚', name: 'egg' },\n { emoji: '🍳', name: 'cooking' },\n { emoji: '🥞', name: 'pancakes' },\n { emoji: '🥓', name: 'bacon' },\n { emoji: '🍔', name: 'burger' },\n { emoji: '🍟', name: 'fries' },\n { emoji: '🍕', name: 'pizza' },\n { emoji: '🌭', name: 'hotdog' },\n { emoji: '🌮', name: 'taco' },\n { emoji: '🌯', name: 'burrito' },\n { emoji: '🍣', name: 'sushi' },\n { emoji: '🍰', name: 'cake' },\n { emoji: '🧁', name: 'cupcake' },\n { emoji: '🍩', name: 'donut' },\n { emoji: '🍪', name: 'cookie' },\n { emoji: '🍫', name: 'chocolate' },\n { emoji: '🍯', name: 'honey' },\n { emoji: '☕', name: 'coffee' },\n { emoji: '🍵', name: 'tea' },\n { emoji: '🍺', name: 'beer' },\n { emoji: '🍷', name: 'wine' },\n ],\n },\n {\n id: 'objects',\n label: 'Objects',\n icon: '💡',\n emojis: [\n { emoji: '💡', name: 'lightbulb' },\n { emoji: '🔋', name: 'battery' },\n { emoji: '📱', name: 'phone' },\n { emoji: '💻', name: 'laptop' },\n { emoji: '🖥️', name: 'desktop' },\n { emoji: '⌨️', name: 'keyboard' },\n { emoji: '🖱️', name: 'mouse' },\n { emoji: '📷', name: 'camera' },\n { emoji: '🎥', name: 'video camera' },\n { emoji: '📺', name: 'tv' },\n { emoji: '📻', name: 'radio' },\n { emoji: '🎙️', name: 'microphone' },\n { emoji: '🔊', name: 'speaker loud' },\n { emoji: '🔈', name: 'speaker' },\n { emoji: '📢', name: 'megaphone' },\n { emoji: '🔔', name: 'bell' },\n { emoji: '🔇', name: 'muted' },\n { emoji: '⏰', name: 'alarm' },\n { emoji: '⌚', name: 'watch' },\n { emoji: '📅', name: 'calendar' },\n { emoji: '📌', name: 'pin' },\n { emoji: '✂️', name: 'scissors' },\n { emoji: '🔑', name: 'key' },\n { emoji: '🔒', name: 'locked' },\n { emoji: '🔓', name: 'unlocked' },\n { emoji: '💰', name: 'money bag' },\n { emoji: '💳', name: 'card' },\n { emoji: '📦', name: 'package' },\n { emoji: '✉️', name: 'envelope' },\n { emoji: '📨', name: 'incoming envelope' },\n { emoji: '✏️', name: 'pencil' },\n { emoji: '🖊️', name: 'pen' },\n { emoji: '📝', name: 'memo' },\n { emoji: '📎', name: 'paperclip' },\n { emoji: '📁', name: 'folder' },\n { emoji: '📂', name: 'open folder' },\n { emoji: '📊', name: 'bar chart' },\n { emoji: '📈', name: 'up chart' },\n { emoji: '📉', name: 'down chart' },\n ],\n },\n {\n id: 'symbols',\n label: 'Symbols',\n icon: '✅',\n emojis: [\n { emoji: '✅', name: 'check' },\n { emoji: '❌', name: 'cross' },\n { emoji: '❗', name: 'exclamation' },\n { emoji: '❓', name: 'question' },\n { emoji: '⚠️', name: 'warning' },\n { emoji: '✨', name: 'sparkles' },\n { emoji: '⭐', name: 'star' },\n { emoji: '🌟', name: 'glowing star' },\n { emoji: '💫', name: 'dizzy' },\n { emoji: '💢', name: 'anger' },\n { emoji: '💥', name: 'collision' },\n { emoji: '💦', name: 'sweat drops' },\n { emoji: '💨', name: 'dash' },\n { emoji: '🎉', name: 'party' },\n { emoji: '🎊', name: 'confetti ball' },\n { emoji: '🎁', name: 'gift' },\n { emoji: '🏆', name: 'trophy' },\n { emoji: '🥇', name: 'gold medal' },\n { emoji: '🥈', name: 'silver medal' },\n { emoji: '🥉', name: 'bronze medal' },\n { emoji: '❤️', name: 'red heart' },\n { emoji: '🧡', name: 'orange heart' },\n { emoji: '💛', name: 'yellow heart' },\n { emoji: '💚', name: 'green heart' },\n { emoji: '💙', name: 'blue heart' },\n { emoji: '💜', name: 'purple heart' },\n { emoji: '🖤', name: 'black heart' },\n { emoji: '🤍', name: 'white heart' },\n { emoji: '💔', name: 'broken heart' },\n { emoji: '➕', name: 'plus' },\n { emoji: '➖', name: 'minus' },\n { emoji: '➗', name: 'divide' },\n { emoji: '✖️', name: 'multiply' },\n { emoji: '♻️', name: 'recycle' },\n { emoji: '⚡', name: 'lightning' },\n ],\n },\n];\n\nexport interface EmojiPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n onSelect: (emoji: string) => void;\n placeholder?: string;\n columns?: number;\n cellSize?: number;\n categories?: EmojiCategory[];\n disabled?: boolean;\n}\n\n/**\n * Emoji picker with category jump strip + search. Built-in ~200 emoji\n * subset; pass `categories` to override. Designed for use inside `Popover`.\n */\nexport const EmojiPicker = forwardRef<HTMLDivElement, EmojiPickerProps>(\n function EmojiPicker(\n {\n onSelect,\n placeholder = 'Search emoji…',\n columns = 8,\n cellSize = 28,\n categories = EMOJI,\n disabled,\n className,\n ...rest\n },\n ref,\n ) {\n const [query, setQuery] = useState('');\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n const matches = useMemo(() => {\n if (!query) return null;\n const q = query.toLowerCase();\n const found: EmojiEntry[] = [];\n for (const cat of categories) {\n for (const e of cat.emojis) {\n if (e.name.includes(q) || (e.keywords?.some((k) => k.includes(q)) ?? false)) {\n found.push(e);\n }\n }\n }\n return found;\n }, [query, categories]);\n\n const jumpTo = (id: string) => {\n const root = containerRef.current;\n if (!root) return;\n const target = root.querySelector(`[data-cat=\"${id}\"]`);\n if (target instanceof HTMLElement) {\n target.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n };\n\n return (\n <div\n ref={(el) => {\n containerRef.current = el;\n if (typeof ref === 'function') ref(el);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = el;\n }}\n className={cn(\n 'flex flex-col rounded-md border border-border bg-card text-card-foreground shadow-sm',\n disabled && 'opacity-60',\n className,\n )}\n style={{ width: columns * cellSize + 24 }}\n {...rest}\n >\n <div className=\"border-b border-border p-2\">\n <input\n type=\"search\"\n value={query}\n placeholder={placeholder}\n disabled={disabled}\n onChange={(e) => setQuery(e.target.value)}\n className={cn(inputBaseVariants({ size: 'sm' }))}\n />\n </div>\n {!matches && (\n <div role=\"tablist\" aria-label=\"Emoji categories\" className=\"flex border-b border-border\">\n {categories.map((c) => (\n <button\n key={c.id}\n type=\"button\"\n role=\"tab\"\n aria-controls={`emoji-cat-${c.id}`}\n onClick={() => jumpTo(c.id)}\n title={c.label}\n className=\"flex flex-1 items-center justify-center py-1.5 text-base hover:bg-muted\"\n >\n <span aria-hidden=\"true\">{c.icon}</span>\n <span className=\"sr-only\">{c.label}</span>\n </button>\n ))}\n </div>\n )}\n <div\n role=\"grid\"\n aria-label=\"Emoji\"\n className=\"overflow-y-auto p-2\"\n style={{ maxHeight: 280 }}\n >\n {matches ? (\n matches.length === 0 ? (\n <div className=\"px-2 py-6 text-center text-xs text-muted-foreground\">No emoji match.</div>\n ) : (\n <div className=\"grid\" style={{ gridTemplateColumns: `repeat(${columns}, ${cellSize}px)` }}>\n {matches.map((e) => (\n <EmojiCell key={e.emoji} entry={e} cellSize={cellSize} disabled={disabled} onSelect={onSelect} />\n ))}\n </div>\n )\n ) : (\n categories.map((cat) => (\n <div key={cat.id} data-cat={cat.id} id={`emoji-cat-${cat.id}`} className=\"mb-3\">\n <div className=\"mb-1 px-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground\">\n {cat.label}\n </div>\n <div className=\"grid\" style={{ gridTemplateColumns: `repeat(${columns}, ${cellSize}px)` }}>\n {cat.emojis.map((e) => (\n <EmojiCell key={e.emoji} entry={e} cellSize={cellSize} disabled={disabled} onSelect={onSelect} />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n </div>\n );\n },\n);\n\ninterface EmojiCellProps {\n entry: EmojiEntry;\n cellSize: number;\n disabled?: boolean;\n onSelect: (emoji: string) => void;\n}\n\nfunction EmojiCell({ entry, cellSize, disabled, onSelect }: EmojiCellProps) {\n return (\n <div role=\"gridcell\">\n <button\n type=\"button\"\n aria-label={entry.name}\n disabled={disabled}\n onClick={() => onSelect(entry.emoji)}\n style={{ width: cellSize, height: cellSize }}\n className=\"inline-flex items-center justify-center rounded-md text-lg transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n {entry.emoji}\n </button>\n </div>\n );\n}\n\nexport const BUILT_IN_EMOJI = EMOJI;\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { Plus } from 'lucide-react';\nimport { cn } from '../../utils';\n\nexport interface ReactionPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n /** List of emoji shortcuts shown as quick-pick buttons. */\n emojis?: string[];\n /** Currently active emoji keys (highlighted). */\n selected?: string[];\n /** Fires when an emoji is picked. */\n onSelect?: (emoji: string) => void;\n /** Fires when the trailing \"more\" button is clicked (open full picker). */\n onMore?: () => void;\n /** Hide the trailing \"more\" button. */\n hideMore?: boolean;\n /** Compact button size. */\n size?: 'sm' | 'md';\n}\n\nconst DEFAULT_REACTIONS = ['👍', '❤️', '😂', '🎉', '😮', '😢', '🚀'];\n\nconst SIZE: Record<NonNullable<ReactionPickerProps['size']>, string> = {\n sm: 'h-7 w-7 text-base',\n md: 'h-8 w-8 text-lg',\n};\n\n/**\n * Quick-pick row of common emoji reactions. Pair with `overlays/Popover`\n * to surface as a hover/long-press affordance on a `ChatBubble`. Click\n * `+` to fall through to a fuller `forms/EmojiPicker`.\n */\nexport const ReactionPicker = forwardRef<HTMLDivElement, ReactionPickerProps>(\n (\n {\n emojis = DEFAULT_REACTIONS,\n selected,\n onSelect,\n onMore,\n hideMore,\n size = 'md',\n className,\n ...props\n },\n ref,\n ) => (\n <div\n ref={ref}\n role=\"toolbar\"\n aria-label=\"Reaction picker\"\n className={cn(\n 'inline-flex items-center gap-1 rounded-full border border-border bg-popover p-1 shadow-sm',\n className,\n )}\n {...props}\n >\n {emojis.map((emoji) => {\n const active = selected?.includes(emoji);\n return (\n <button\n key={emoji}\n type=\"button\"\n data-active={active ? '' : undefined}\n aria-pressed={active}\n aria-label={`React with ${emoji}`}\n onClick={() => onSelect?.(emoji)}\n className={cn(\n 'inline-flex items-center justify-center rounded-full leading-none transition-transform',\n 'hover:scale-125 hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n active && 'bg-primary-soft',\n SIZE[size],\n )}\n >\n <span aria-hidden=\"true\">{emoji}</span>\n </button>\n );\n })}\n {!hideMore && onMore && (\n <button\n type=\"button\"\n aria-label=\"More reactions\"\n onClick={onMore}\n className={cn(\n 'inline-flex items-center justify-center rounded-full text-muted-foreground transition-colors',\n 'hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n SIZE[size],\n )}\n >\n <Plus className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n ),\n);\nReactionPicker.displayName = 'ReactionPicker';\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n type FormEvent,\n type FormHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n type TextareaHTMLAttributes,\n} from 'react';\nimport { Send } from 'lucide-react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled } from '../../hooks';\n\ntype SubmitTrigger = 'enter' | 'mod-enter';\n\nexport interface ChatComposerProps\n extends Omit<FormHTMLAttributes<HTMLFormElement>, 'onSubmit' | 'children'> {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n /** Fires on send (Enter / Mod+Enter / button click). Receives the text value. */\n onSubmit?: (value: string) => void;\n /** Placeholder text. */\n placeholder?: string;\n /** Disable the input + send button. */\n disabled?: boolean;\n /** Slot rendered on the leading edge of the toolbar (e.g. attach button). */\n leading?: ReactNode;\n /** Slot rendered between the leading slot and the send button. */\n trailing?: ReactNode;\n /** Replace or hide the default send button. */\n sendButton?: ReactNode;\n /** Hide the send button entirely (e.g. when consumer renders a custom CTA). */\n hideSendButton?: boolean;\n /** When the textarea should submit. `enter` = Enter alone (default).\n * `mod-enter` = Cmd/Ctrl+Enter (Enter inserts a newline). */\n submitOn?: SubmitTrigger;\n /** Maximum textarea pixel height before scroll kicks in. Default `200`. */\n maxHeight?: number;\n /** Pass-through textarea props (rows is overridden). */\n textareaProps?: Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n 'value' | 'defaultValue' | 'onChange'\n >;\n}\n\n/**\n * Chat input row with auto-resizing textarea and send button. Enter sends\n * by default (Shift+Enter inserts a newline); set `submitOn=\"mod-enter\"` to\n * flip the convention. Use `leading` / `trailing` slots for attach / emoji\n * pickers.\n */\nexport const ChatComposer = forwardRef<HTMLTextAreaElement, ChatComposerProps>(\n (\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n onSubmit,\n placeholder = 'Write a message…',\n disabled,\n leading,\n trailing,\n sendButton,\n hideSendButton,\n submitOn = 'enter',\n maxHeight = 200,\n textareaProps,\n className,\n ...props\n },\n ref,\n ) => {\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? '',\n onChange: onValueChange,\n });\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n const composedRef = composeRefs(textareaRef, ref);\n\n const resize = useCallback(() => {\n const ta = textareaRef.current;\n if (!ta) return;\n ta.style.height = 'auto';\n const next = Math.min(ta.scrollHeight, maxHeight);\n ta.style.height = `${next}px`;\n ta.style.overflowY = ta.scrollHeight > maxHeight ? 'auto' : 'hidden';\n }, [maxHeight]);\n\n useEffect(() => {\n resize();\n }, [value, resize]);\n\n const handleSubmit = (e?: FormEvent) => {\n e?.preventDefault();\n const trimmed = value.trim();\n if (!trimmed || disabled) return;\n onSubmit?.(trimmed);\n if (valueProp === undefined) setValue('');\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n textareaProps?.onKeyDown?.(e);\n if (e.defaultPrevented) return;\n const isEnter = e.key === 'Enter' && !e.shiftKey && !e.nativeEvent.isComposing;\n const wantsMod = submitOn === 'mod-enter';\n const modPressed = e.metaKey || e.ctrlKey;\n if (isEnter && (wantsMod ? modPressed : !modPressed)) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n const isEmpty = value.trim().length === 0;\n\n return (\n <form\n onSubmit={handleSubmit}\n className={cn(\n 'flex w-full items-end gap-2 rounded-2xl border border-input bg-background px-3 py-2',\n 'focus-within:ring-2 focus-within:ring-ring',\n disabled && 'cursor-not-allowed opacity-60',\n className,\n )}\n {...props}\n >\n {leading && <div className=\"flex shrink-0 items-center gap-1 self-end pb-1\">{leading}</div>}\n <textarea\n {...textareaProps}\n ref={composedRef}\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n rows={1}\n placeholder={placeholder}\n disabled={disabled}\n className={cn(\n 'flex-1 resize-none bg-transparent py-1 text-sm leading-relaxed text-foreground placeholder:text-muted-foreground focus:outline-none',\n textareaProps?.className,\n )}\n />\n {trailing && <div className=\"flex shrink-0 items-center gap-1 self-end pb-1\">{trailing}</div>}\n {!hideSendButton && (\n sendButton ?? (\n <button\n type=\"submit\"\n disabled={disabled || isEmpty}\n aria-label=\"Send message\"\n className={cn(\n 'inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full self-end',\n isEmpty\n ? 'bg-muted text-muted-foreground'\n : 'bg-primary text-primary-foreground hover:bg-primary/90',\n 'disabled:cursor-not-allowed',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n )}\n >\n <Send className=\"h-4 w-4\" />\n </button>\n )\n )}\n </form>\n );\n },\n);\nChatComposer.displayName = 'ChatComposer';\n"]}