@pk-design/react-tailwind 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/dist/cjs/components/Accordion/Accordion.js +61 -0
  2. package/dist/cjs/components/Accordion/Accordion.js.map +1 -0
  3. package/dist/cjs/components/ActionSheet/ActionSheet.js +38 -0
  4. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -0
  5. package/dist/cjs/components/Alert/Alert.js +34 -0
  6. package/dist/cjs/components/Alert/Alert.js.map +1 -0
  7. package/dist/cjs/components/Badge/Badge.js +33 -0
  8. package/dist/cjs/components/Badge/Badge.js.map +1 -0
  9. package/dist/cjs/components/Banner/Banner.js +41 -0
  10. package/dist/cjs/components/Banner/Banner.js.map +1 -0
  11. package/dist/cjs/components/BodyText/BodyText.js +59 -0
  12. package/dist/cjs/components/BodyText/BodyText.js.map +1 -0
  13. package/dist/cjs/components/BottomNavigation/BottomNavigation.js +52 -0
  14. package/dist/cjs/components/BottomNavigation/BottomNavigation.js.map +1 -0
  15. package/dist/cjs/components/Breadcrumb/Breadcrumb.js +63 -0
  16. package/dist/cjs/components/Breadcrumb/Breadcrumb.js.map +1 -0
  17. package/dist/cjs/components/Button/Button.js +118 -0
  18. package/dist/cjs/components/Button/Button.js.map +1 -0
  19. package/dist/cjs/components/ButtonGroup/ButtonGroup.js +100 -0
  20. package/dist/cjs/components/ButtonGroup/ButtonGroup.js.map +1 -0
  21. package/dist/cjs/components/Card/Card.js +65 -0
  22. package/dist/cjs/components/Card/Card.js.map +1 -0
  23. package/dist/cjs/components/Checkbox/Checkbox.js +64 -0
  24. package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -0
  25. package/dist/cjs/components/CheckboxGroup/CheckboxGroup.js +82 -0
  26. package/dist/cjs/components/CheckboxGroup/CheckboxGroup.js.map +1 -0
  27. package/dist/cjs/components/DataList/DataList.js +287 -0
  28. package/dist/cjs/components/DataList/DataList.js.map +1 -0
  29. package/dist/cjs/components/DataTable/DataTable.icons.js +20 -0
  30. package/dist/cjs/components/DataTable/DataTable.icons.js.map +1 -0
  31. package/dist/cjs/components/DataTable/DataTable.js +110 -0
  32. package/dist/cjs/components/DataTable/DataTable.js.map +1 -0
  33. package/dist/cjs/components/DataTable/DataTable.utils.js +87 -0
  34. package/dist/cjs/components/DataTable/DataTable.utils.js.map +1 -0
  35. package/dist/cjs/components/DetailedInformation/DetailedInformation.js +67 -0
  36. package/dist/cjs/components/DetailedInformation/DetailedInformation.js.map +1 -0
  37. package/dist/cjs/components/Dot/index.js +12 -0
  38. package/dist/cjs/components/Dot/index.js.map +1 -0
  39. package/dist/cjs/components/Drawer/Drawer.js +67 -0
  40. package/dist/cjs/components/Drawer/Drawer.js.map +1 -0
  41. package/dist/cjs/components/Dropdown/Dropdown.js +50 -0
  42. package/dist/cjs/components/Dropdown/Dropdown.js.map +1 -0
  43. package/dist/cjs/components/EmptyState/index.js +14 -0
  44. package/dist/cjs/components/EmptyState/index.js.map +1 -0
  45. package/dist/cjs/components/Flex/Flex.js +25 -0
  46. package/dist/cjs/components/Flex/Flex.js.map +1 -0
  47. package/dist/cjs/components/FloatingActionButton/FloatingActionButton.js +71 -0
  48. package/dist/cjs/components/FloatingActionButton/FloatingActionButton.js.map +1 -0
  49. package/dist/cjs/components/Grid/Grid.js +33 -0
  50. package/dist/cjs/components/Grid/Grid.js.map +1 -0
  51. package/dist/cjs/components/HeadingText/HeadingText.js +89 -0
  52. package/dist/cjs/components/HeadingText/HeadingText.js.map +1 -0
  53. package/dist/cjs/components/Icons/ArrowDownAZ.svg.js +46 -0
  54. package/dist/cjs/components/Icons/ArrowDownAZ.svg.js.map +1 -0
  55. package/dist/cjs/components/Icons/ArrowDownNarrowWide.svg.js +46 -0
  56. package/dist/cjs/components/Icons/ArrowDownNarrowWide.svg.js.map +1 -0
  57. package/dist/cjs/components/Icons/ArrowDownWideNarrow.svg.js +46 -0
  58. package/dist/cjs/components/Icons/ArrowDownWideNarrow.svg.js.map +1 -0
  59. package/dist/cjs/components/Icons/ArrowDownZA.svg.js +46 -0
  60. package/dist/cjs/components/Icons/ArrowDownZA.svg.js.map +1 -0
  61. package/dist/cjs/components/Icons/ArrowUpDown.svg.js +46 -0
  62. package/dist/cjs/components/Icons/ArrowUpDown.svg.js.map +1 -0
  63. package/dist/cjs/components/Icons/BadgeCheck.svg.js +48 -0
  64. package/dist/cjs/components/Icons/BadgeCheck.svg.js.map +1 -0
  65. package/dist/cjs/components/Icons/Check.svg.js +46 -0
  66. package/dist/cjs/components/Icons/Check.svg.js.map +1 -0
  67. package/dist/cjs/components/Icons/ChevronDown.svg.js +46 -0
  68. package/dist/cjs/components/Icons/ChevronDown.svg.js.map +1 -0
  69. package/dist/cjs/components/Icons/ChevronLeft.svg.js +46 -0
  70. package/dist/cjs/components/Icons/ChevronLeft.svg.js.map +1 -0
  71. package/dist/cjs/components/Icons/ChevronRight.svg.js +46 -0
  72. package/dist/cjs/components/Icons/ChevronRight.svg.js.map +1 -0
  73. package/dist/cjs/components/Icons/CircleAlert.svg.js +50 -0
  74. package/dist/cjs/components/Icons/CircleAlert.svg.js.map +1 -0
  75. package/dist/cjs/components/Icons/CircleCheck.svg.js +50 -0
  76. package/dist/cjs/components/Icons/CircleCheck.svg.js.map +1 -0
  77. package/dist/cjs/components/Icons/CirclePlus.svg.js +50 -0
  78. package/dist/cjs/components/Icons/CirclePlus.svg.js.map +1 -0
  79. package/dist/cjs/components/Icons/CircleX.svg.js +50 -0
  80. package/dist/cjs/components/Icons/CircleX.svg.js.map +1 -0
  81. package/dist/cjs/components/Icons/FolderPlus.svg.js +46 -0
  82. package/dist/cjs/components/Icons/FolderPlus.svg.js.map +1 -0
  83. package/dist/cjs/components/Icons/Info.svg.js +50 -0
  84. package/dist/cjs/components/Icons/Info.svg.js.map +1 -0
  85. package/dist/cjs/components/Icons/Search.svg.js +50 -0
  86. package/dist/cjs/components/Icons/Search.svg.js.map +1 -0
  87. package/dist/cjs/components/Icons/Slash.svg.js +46 -0
  88. package/dist/cjs/components/Icons/Slash.svg.js.map +1 -0
  89. package/dist/cjs/components/Icons/TriangleAlert.svg.js +46 -0
  90. package/dist/cjs/components/Icons/TriangleAlert.svg.js.map +1 -0
  91. package/dist/cjs/components/Icons/X.svg.js +46 -0
  92. package/dist/cjs/components/Icons/X.svg.js.map +1 -0
  93. package/dist/cjs/components/Input/Input.js +85 -0
  94. package/dist/cjs/components/Input/Input.js.map +1 -0
  95. package/dist/cjs/components/Label/Label.js +14 -0
  96. package/dist/cjs/components/Label/Label.js.map +1 -0
  97. package/dist/cjs/components/Loader/index.js +18 -0
  98. package/dist/cjs/components/Loader/index.js.map +1 -0
  99. package/dist/cjs/components/MobileHeader/MobileHeader.js +45 -0
  100. package/dist/cjs/components/MobileHeader/MobileHeader.js.map +1 -0
  101. package/dist/cjs/components/MobilePicker/MobilePicker.js +368 -0
  102. package/dist/cjs/components/MobilePicker/MobilePicker.js.map +1 -0
  103. package/dist/cjs/components/MobileStepper/MobileStepper.js +33 -0
  104. package/dist/cjs/components/MobileStepper/MobileStepper.js.map +1 -0
  105. package/dist/cjs/components/Pagination/Pagination.js +33 -0
  106. package/dist/cjs/components/Pagination/Pagination.js.map +1 -0
  107. package/dist/cjs/components/Pagination/usePagination.js +33 -0
  108. package/dist/cjs/components/Pagination/usePagination.js.map +1 -0
  109. package/dist/cjs/components/PasswordInput/PasswordInput.js +56 -0
  110. package/dist/cjs/components/PasswordInput/PasswordInput.js.map +1 -0
  111. package/dist/cjs/components/PinInput/PinInput.js +98 -0
  112. package/dist/cjs/components/PinInput/PinInput.js.map +1 -0
  113. package/dist/cjs/components/PullToRefresh/PullToRefresh.js +83 -0
  114. package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -0
  115. package/dist/cjs/components/QuantityStepper/QuantityStepper.js +77 -0
  116. package/dist/cjs/components/QuantityStepper/QuantityStepper.js.map +1 -0
  117. package/dist/cjs/components/Radio/Radio.js +34 -0
  118. package/dist/cjs/components/Radio/Radio.js.map +1 -0
  119. package/dist/cjs/components/RadioGroup/RadioGroup.js +50 -0
  120. package/dist/cjs/components/RadioGroup/RadioGroup.js.map +1 -0
  121. package/dist/cjs/components/RadioSwitch/RadioSwitch.js +116 -0
  122. package/dist/cjs/components/RadioSwitch/RadioSwitch.js.map +1 -0
  123. package/dist/cjs/components/RangeInput/RangeInput.js +66 -0
  124. package/dist/cjs/components/RangeInput/RangeInput.js.map +1 -0
  125. package/dist/cjs/components/RangeSlider/RangeSlider.js +167 -0
  126. package/dist/cjs/components/RangeSlider/RangeSlider.js.map +1 -0
  127. package/dist/cjs/components/SegmentedControl/SegmentedControl.js +64 -0
  128. package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -0
  129. package/dist/cjs/components/SelectBox/SelectBox.js +305 -0
  130. package/dist/cjs/components/SelectBox/SelectBox.js.map +1 -0
  131. package/dist/cjs/components/Skeleton/Skeleton.js +36 -0
  132. package/dist/cjs/components/Skeleton/Skeleton.js.map +1 -0
  133. package/dist/cjs/components/StatusPill/StatusPill.js +46 -0
  134. package/dist/cjs/components/StatusPill/StatusPill.js.map +1 -0
  135. package/dist/cjs/components/StickyActionBar/StickyActionBar.js +22 -0
  136. package/dist/cjs/components/StickyActionBar/StickyActionBar.js.map +1 -0
  137. package/dist/cjs/components/SwipeableRow/SwipeableRow.js +187 -0
  138. package/dist/cjs/components/SwipeableRow/SwipeableRow.js.map +1 -0
  139. package/dist/cjs/components/SwipeableTabs/SwipeableTabs.js +91 -0
  140. package/dist/cjs/components/SwipeableTabs/SwipeableTabs.js.map +1 -0
  141. package/dist/cjs/components/Table/Table.js +57 -0
  142. package/dist/cjs/components/Table/Table.js.map +1 -0
  143. package/dist/cjs/components/Tabs/Tabs.js +53 -0
  144. package/dist/cjs/components/Tabs/Tabs.js.map +1 -0
  145. package/dist/cjs/components/TextContent/TextContent.js +47 -0
  146. package/dist/cjs/components/TextContent/TextContent.js.map +1 -0
  147. package/dist/cjs/components/Textarea/Textarea.js +64 -0
  148. package/dist/cjs/components/Textarea/Textarea.js.map +1 -0
  149. package/dist/cjs/components/Toast/Toast.js +96 -0
  150. package/dist/cjs/components/Toast/Toast.js.map +1 -0
  151. package/dist/cjs/components/Toast/ToastProvider.js +151 -0
  152. package/dist/cjs/components/Toast/ToastProvider.js.map +1 -0
  153. package/dist/cjs/components/VirtualizedDataTable/VirtualizedDataTable.js +122 -0
  154. package/dist/cjs/components/VirtualizedDataTable/VirtualizedDataTable.js.map +1 -0
  155. package/dist/cjs/components/VirtualizedDataTable/VirtualizedRow.js +48 -0
  156. package/dist/cjs/components/VirtualizedDataTable/VirtualizedRow.js.map +1 -0
  157. package/dist/cjs/components/WheelPicker/WheelPicker.js +82 -0
  158. package/dist/cjs/components/WheelPicker/WheelPicker.js.map +1 -0
  159. package/dist/cjs/components/common-responsive.js +310 -0
  160. package/dist/cjs/components/common-responsive.js.map +1 -0
  161. package/dist/cjs/hooks/use-debounce.js +31 -0
  162. package/dist/cjs/hooks/use-debounce.js.map +1 -0
  163. package/dist/cjs/hooks/use-is-mobile.js +24 -0
  164. package/dist/cjs/hooks/use-is-mobile.js.map +1 -0
  165. package/dist/cjs/hooks/use-is-tablet-or-mobile.js +13 -0
  166. package/dist/cjs/hooks/use-is-tablet-or-mobile.js.map +1 -0
  167. package/dist/cjs/hooks/use-is-tablet.js +21 -0
  168. package/dist/cjs/hooks/use-is-tablet.js.map +1 -0
  169. package/dist/cjs/index.js +163 -0
  170. package/dist/cjs/index.js.map +1 -0
  171. package/dist/cjs/react-tailwind.css +2 -0
  172. package/dist/cjs/react-tailwind.css.map +1 -0
  173. package/dist/cjs/utils/build-classname.js +8 -0
  174. package/dist/cjs/utils/build-classname.js.map +1 -0
  175. package/dist/cjs/utils/get.js +20 -0
  176. package/dist/cjs/utils/get.js.map +1 -0
  177. package/dist/cjs/utils/is-array.js +12 -0
  178. package/dist/cjs/utils/is-array.js.map +1 -0
  179. package/dist/cjs/utils/is-empty.js +26 -0
  180. package/dist/cjs/utils/is-empty.js.map +1 -0
  181. package/dist/es/components/Accordion/Accordion.js +59 -0
  182. package/dist/es/components/Accordion/Accordion.js.map +1 -0
  183. package/dist/es/components/ActionSheet/ActionSheet.js +36 -0
  184. package/dist/es/components/ActionSheet/ActionSheet.js.map +1 -0
  185. package/dist/es/components/Alert/Alert.js +32 -0
  186. package/dist/es/components/Alert/Alert.js.map +1 -0
  187. package/dist/es/components/Badge/Badge.js +31 -0
  188. package/dist/es/components/Badge/Badge.js.map +1 -0
  189. package/dist/es/components/Banner/Banner.js +39 -0
  190. package/dist/es/components/Banner/Banner.js.map +1 -0
  191. package/dist/es/components/BodyText/BodyText.js +57 -0
  192. package/dist/es/components/BodyText/BodyText.js.map +1 -0
  193. package/dist/es/components/BottomNavigation/BottomNavigation.js +50 -0
  194. package/dist/es/components/BottomNavigation/BottomNavigation.js.map +1 -0
  195. package/dist/es/components/Breadcrumb/Breadcrumb.js +61 -0
  196. package/dist/es/components/Breadcrumb/Breadcrumb.js.map +1 -0
  197. package/dist/es/components/Button/Button.js +116 -0
  198. package/dist/es/components/Button/Button.js.map +1 -0
  199. package/dist/es/components/ButtonGroup/ButtonGroup.js +98 -0
  200. package/dist/es/components/ButtonGroup/ButtonGroup.js.map +1 -0
  201. package/dist/es/components/Card/Card.js +57 -0
  202. package/dist/es/components/Card/Card.js.map +1 -0
  203. package/dist/es/components/Checkbox/Checkbox.js +62 -0
  204. package/dist/es/components/Checkbox/Checkbox.js.map +1 -0
  205. package/dist/es/components/CheckboxGroup/CheckboxGroup.js +80 -0
  206. package/dist/es/components/CheckboxGroup/CheckboxGroup.js.map +1 -0
  207. package/dist/es/components/DataList/DataList.js +285 -0
  208. package/dist/es/components/DataList/DataList.js.map +1 -0
  209. package/dist/es/components/DataTable/DataTable.icons.js +17 -0
  210. package/dist/es/components/DataTable/DataTable.icons.js.map +1 -0
  211. package/dist/es/components/DataTable/DataTable.js +108 -0
  212. package/dist/es/components/DataTable/DataTable.js.map +1 -0
  213. package/dist/es/components/DataTable/DataTable.utils.js +83 -0
  214. package/dist/es/components/DataTable/DataTable.utils.js.map +1 -0
  215. package/dist/es/components/DetailedInformation/DetailedInformation.js +65 -0
  216. package/dist/es/components/DetailedInformation/DetailedInformation.js.map +1 -0
  217. package/dist/es/components/Dot/index.js +10 -0
  218. package/dist/es/components/Dot/index.js.map +1 -0
  219. package/dist/es/components/Drawer/Drawer.js +65 -0
  220. package/dist/es/components/Drawer/Drawer.js.map +1 -0
  221. package/dist/es/components/Dropdown/Dropdown.js +48 -0
  222. package/dist/es/components/Dropdown/Dropdown.js.map +1 -0
  223. package/dist/es/components/EmptyState/index.js +12 -0
  224. package/dist/es/components/EmptyState/index.js.map +1 -0
  225. package/dist/es/components/Flex/Flex.js +22 -0
  226. package/dist/es/components/Flex/Flex.js.map +1 -0
  227. package/dist/es/components/FloatingActionButton/FloatingActionButton.js +69 -0
  228. package/dist/es/components/FloatingActionButton/FloatingActionButton.js.map +1 -0
  229. package/dist/es/components/Grid/Grid.js +30 -0
  230. package/dist/es/components/Grid/Grid.js.map +1 -0
  231. package/dist/es/components/HeadingText/HeadingText.js +87 -0
  232. package/dist/es/components/HeadingText/HeadingText.js.map +1 -0
  233. package/dist/es/components/Icons/ArrowDownAZ.svg.js +23 -0
  234. package/dist/es/components/Icons/ArrowDownAZ.svg.js.map +1 -0
  235. package/dist/es/components/Icons/ArrowDownNarrowWide.svg.js +23 -0
  236. package/dist/es/components/Icons/ArrowDownNarrowWide.svg.js.map +1 -0
  237. package/dist/es/components/Icons/ArrowDownWideNarrow.svg.js +23 -0
  238. package/dist/es/components/Icons/ArrowDownWideNarrow.svg.js.map +1 -0
  239. package/dist/es/components/Icons/ArrowDownZA.svg.js +23 -0
  240. package/dist/es/components/Icons/ArrowDownZA.svg.js.map +1 -0
  241. package/dist/es/components/Icons/ArrowUpDown.svg.js +23 -0
  242. package/dist/es/components/Icons/ArrowUpDown.svg.js.map +1 -0
  243. package/dist/es/components/Icons/BadgeCheck.svg.js +25 -0
  244. package/dist/es/components/Icons/BadgeCheck.svg.js.map +1 -0
  245. package/dist/es/components/Icons/Check.svg.js +23 -0
  246. package/dist/es/components/Icons/Check.svg.js.map +1 -0
  247. package/dist/es/components/Icons/ChevronDown.svg.js +23 -0
  248. package/dist/es/components/Icons/ChevronDown.svg.js.map +1 -0
  249. package/dist/es/components/Icons/ChevronLeft.svg.js +23 -0
  250. package/dist/es/components/Icons/ChevronLeft.svg.js.map +1 -0
  251. package/dist/es/components/Icons/ChevronRight.svg.js +23 -0
  252. package/dist/es/components/Icons/ChevronRight.svg.js.map +1 -0
  253. package/dist/es/components/Icons/CircleAlert.svg.js +27 -0
  254. package/dist/es/components/Icons/CircleAlert.svg.js.map +1 -0
  255. package/dist/es/components/Icons/CircleCheck.svg.js +27 -0
  256. package/dist/es/components/Icons/CircleCheck.svg.js.map +1 -0
  257. package/dist/es/components/Icons/CirclePlus.svg.js +27 -0
  258. package/dist/es/components/Icons/CirclePlus.svg.js.map +1 -0
  259. package/dist/es/components/Icons/CircleX.svg.js +27 -0
  260. package/dist/es/components/Icons/CircleX.svg.js.map +1 -0
  261. package/dist/es/components/Icons/FolderPlus.svg.js +23 -0
  262. package/dist/es/components/Icons/FolderPlus.svg.js.map +1 -0
  263. package/dist/es/components/Icons/Info.svg.js +27 -0
  264. package/dist/es/components/Icons/Info.svg.js.map +1 -0
  265. package/dist/es/components/Icons/Search.svg.js +27 -0
  266. package/dist/es/components/Icons/Search.svg.js.map +1 -0
  267. package/dist/es/components/Icons/Slash.svg.js +23 -0
  268. package/dist/es/components/Icons/Slash.svg.js.map +1 -0
  269. package/dist/es/components/Icons/TriangleAlert.svg.js +23 -0
  270. package/dist/es/components/Icons/TriangleAlert.svg.js.map +1 -0
  271. package/dist/es/components/Icons/X.svg.js +23 -0
  272. package/dist/es/components/Icons/X.svg.js.map +1 -0
  273. package/dist/es/components/Input/Input.js +82 -0
  274. package/dist/es/components/Input/Input.js.map +1 -0
  275. package/dist/es/components/Label/Label.js +12 -0
  276. package/dist/es/components/Label/Label.js.map +1 -0
  277. package/dist/es/components/Loader/index.js +16 -0
  278. package/dist/es/components/Loader/index.js.map +1 -0
  279. package/dist/es/components/MobileHeader/MobileHeader.js +43 -0
  280. package/dist/es/components/MobileHeader/MobileHeader.js.map +1 -0
  281. package/dist/es/components/MobilePicker/MobilePicker.js +366 -0
  282. package/dist/es/components/MobilePicker/MobilePicker.js.map +1 -0
  283. package/dist/es/components/MobileStepper/MobileStepper.js +31 -0
  284. package/dist/es/components/MobileStepper/MobileStepper.js.map +1 -0
  285. package/dist/es/components/Pagination/Pagination.js +31 -0
  286. package/dist/es/components/Pagination/Pagination.js.map +1 -0
  287. package/dist/es/components/Pagination/usePagination.js +30 -0
  288. package/dist/es/components/Pagination/usePagination.js.map +1 -0
  289. package/dist/es/components/PasswordInput/PasswordInput.js +51 -0
  290. package/dist/es/components/PasswordInput/PasswordInput.js.map +1 -0
  291. package/dist/es/components/PinInput/PinInput.js +96 -0
  292. package/dist/es/components/PinInput/PinInput.js.map +1 -0
  293. package/dist/es/components/PullToRefresh/PullToRefresh.js +81 -0
  294. package/dist/es/components/PullToRefresh/PullToRefresh.js.map +1 -0
  295. package/dist/es/components/QuantityStepper/QuantityStepper.js +75 -0
  296. package/dist/es/components/QuantityStepper/QuantityStepper.js.map +1 -0
  297. package/dist/es/components/Radio/Radio.js +32 -0
  298. package/dist/es/components/Radio/Radio.js.map +1 -0
  299. package/dist/es/components/RadioGroup/RadioGroup.js +48 -0
  300. package/dist/es/components/RadioGroup/RadioGroup.js.map +1 -0
  301. package/dist/es/components/RadioSwitch/RadioSwitch.js +114 -0
  302. package/dist/es/components/RadioSwitch/RadioSwitch.js.map +1 -0
  303. package/dist/es/components/RangeInput/RangeInput.js +64 -0
  304. package/dist/es/components/RangeInput/RangeInput.js.map +1 -0
  305. package/dist/es/components/RangeSlider/RangeSlider.js +165 -0
  306. package/dist/es/components/RangeSlider/RangeSlider.js.map +1 -0
  307. package/dist/es/components/SegmentedControl/SegmentedControl.js +62 -0
  308. package/dist/es/components/SegmentedControl/SegmentedControl.js.map +1 -0
  309. package/dist/es/components/SelectBox/SelectBox.js +303 -0
  310. package/dist/es/components/SelectBox/SelectBox.js.map +1 -0
  311. package/dist/es/components/Skeleton/Skeleton.js +34 -0
  312. package/dist/es/components/Skeleton/Skeleton.js.map +1 -0
  313. package/dist/es/components/StatusPill/StatusPill.js +44 -0
  314. package/dist/es/components/StatusPill/StatusPill.js.map +1 -0
  315. package/dist/es/components/StickyActionBar/StickyActionBar.js +20 -0
  316. package/dist/es/components/StickyActionBar/StickyActionBar.js.map +1 -0
  317. package/dist/es/components/SwipeableRow/SwipeableRow.js +185 -0
  318. package/dist/es/components/SwipeableRow/SwipeableRow.js.map +1 -0
  319. package/dist/es/components/SwipeableTabs/SwipeableTabs.js +89 -0
  320. package/dist/es/components/SwipeableTabs/SwipeableTabs.js.map +1 -0
  321. package/dist/es/components/Table/Table.js +48 -0
  322. package/dist/es/components/Table/Table.js.map +1 -0
  323. package/dist/es/components/Tabs/Tabs.js +51 -0
  324. package/dist/es/components/Tabs/Tabs.js.map +1 -0
  325. package/dist/es/components/TextContent/TextContent.js +45 -0
  326. package/dist/es/components/TextContent/TextContent.js.map +1 -0
  327. package/dist/es/components/Textarea/Textarea.js +62 -0
  328. package/dist/es/components/Textarea/Textarea.js.map +1 -0
  329. package/dist/es/components/Toast/Toast.js +94 -0
  330. package/dist/es/components/Toast/Toast.js.map +1 -0
  331. package/dist/es/components/Toast/ToastProvider.js +148 -0
  332. package/dist/es/components/Toast/ToastProvider.js.map +1 -0
  333. package/dist/es/components/VirtualizedDataTable/VirtualizedDataTable.js +120 -0
  334. package/dist/es/components/VirtualizedDataTable/VirtualizedDataTable.js.map +1 -0
  335. package/dist/es/components/VirtualizedDataTable/VirtualizedRow.js +46 -0
  336. package/dist/es/components/VirtualizedDataTable/VirtualizedRow.js.map +1 -0
  337. package/dist/es/components/WheelPicker/WheelPicker.js +80 -0
  338. package/dist/es/components/WheelPicker/WheelPicker.js.map +1 -0
  339. package/dist/es/components/common-responsive.js +287 -0
  340. package/dist/es/components/common-responsive.js.map +1 -0
  341. package/dist/es/hooks/use-debounce.js +28 -0
  342. package/dist/es/hooks/use-debounce.js.map +1 -0
  343. package/dist/es/hooks/use-is-mobile.js +22 -0
  344. package/dist/es/hooks/use-is-mobile.js.map +1 -0
  345. package/dist/es/hooks/use-is-tablet-or-mobile.js +11 -0
  346. package/dist/es/hooks/use-is-tablet-or-mobile.js.map +1 -0
  347. package/dist/es/hooks/use-is-tablet.js +19 -0
  348. package/dist/es/hooks/use-is-tablet.js.map +1 -0
  349. package/dist/es/index.js +67 -0
  350. package/dist/es/index.js.map +1 -0
  351. package/dist/es/react-tailwind.css +2 -0
  352. package/dist/es/react-tailwind.css.map +1 -0
  353. package/dist/es/utils/build-classname.js +6 -0
  354. package/dist/es/utils/build-classname.js.map +1 -0
  355. package/dist/es/utils/get.js +18 -0
  356. package/dist/es/utils/get.js.map +1 -0
  357. package/dist/es/utils/is-array.js +10 -0
  358. package/dist/es/utils/is-array.js.map +1 -0
  359. package/dist/es/utils/is-empty.js +24 -0
  360. package/dist/es/utils/is-empty.js.map +1 -0
  361. package/dist/react-tailwind.cjs.js +2298 -472
  362. package/dist/react-tailwind.cjs.js.map +1 -1
  363. package/dist/react-tailwind.es.js +2284 -474
  364. package/dist/react-tailwind.es.js.map +1 -1
  365. package/dist/types/components/ActionSheet/ActionSheet.d.ts +5 -0
  366. package/dist/types/components/ActionSheet/ActionSheet.test.d.ts +1 -0
  367. package/dist/types/components/ActionSheet/ActionSheet.types.d.ts +44 -0
  368. package/dist/types/components/ActionSheet/index.d.ts +2 -0
  369. package/dist/types/components/Badge/Badge.types.d.ts +1 -1
  370. package/dist/types/components/BottomNavigation/BottomNavigation.d.ts +5 -0
  371. package/dist/types/components/BottomNavigation/BottomNavigation.test.d.ts +1 -0
  372. package/dist/types/components/BottomNavigation/BottomNavigation.types.d.ts +41 -0
  373. package/dist/types/components/BottomNavigation/index.d.ts +2 -0
  374. package/dist/types/components/Card/Card.types.d.ts +25 -0
  375. package/dist/types/components/DataList/DataList.d.ts +5 -0
  376. package/dist/types/components/DataList/DataList.test.d.ts +1 -0
  377. package/dist/types/components/DataList/DataList.types.d.ts +81 -0
  378. package/dist/types/components/DataList/index.d.ts +2 -0
  379. package/dist/types/components/DataTable/DataTable.d.ts +1 -1
  380. package/dist/types/components/DataTable/DataTable.types.d.ts +10 -0
  381. package/dist/types/components/Flex/Flex.d.ts +3 -0
  382. package/dist/types/components/Flex/Flex.test.d.ts +1 -0
  383. package/dist/types/components/Flex/Flex.types.d.ts +92 -0
  384. package/dist/types/components/Flex/index.d.ts +2 -0
  385. package/dist/types/components/FloatingActionButton/FloatingActionButton.d.ts +5 -0
  386. package/dist/types/components/FloatingActionButton/FloatingActionButton.test.d.ts +1 -0
  387. package/dist/types/components/FloatingActionButton/FloatingActionButton.types.d.ts +48 -0
  388. package/dist/types/components/FloatingActionButton/index.d.ts +2 -0
  389. package/dist/types/components/Grid/Grid.d.ts +3 -0
  390. package/dist/types/components/Grid/Grid.test.d.ts +1 -0
  391. package/dist/types/components/Grid/Grid.types.d.ts +136 -0
  392. package/dist/types/components/Grid/index.d.ts +2 -0
  393. package/dist/types/components/Input/Input.types.d.ts +3 -3
  394. package/dist/types/components/MobileHeader/MobileHeader.d.ts +5 -0
  395. package/dist/types/components/MobileHeader/MobileHeader.test.d.ts +1 -0
  396. package/dist/types/components/MobileHeader/MobileHeader.types.d.ts +49 -0
  397. package/dist/types/components/MobileHeader/index.d.ts +2 -0
  398. package/dist/types/components/MobilePicker/MobilePicker.d.ts +6 -0
  399. package/dist/types/components/MobilePicker/MobilePicker.test.d.ts +1 -0
  400. package/dist/types/components/MobilePicker/MobilePicker.types.d.ts +90 -0
  401. package/dist/types/components/MobilePicker/index.d.ts +2 -0
  402. package/dist/types/components/MobileStepper/MobileStepper.d.ts +5 -0
  403. package/dist/types/components/MobileStepper/MobileStepper.test.d.ts +1 -0
  404. package/dist/types/components/MobileStepper/MobileStepper.types.d.ts +28 -0
  405. package/dist/types/components/MobileStepper/index.d.ts +2 -0
  406. package/dist/types/components/PinInput/PinInput.d.ts +5 -0
  407. package/dist/types/components/PinInput/PinInput.test.d.ts +1 -0
  408. package/dist/types/components/PinInput/PinInput.types.d.ts +29 -0
  409. package/dist/types/components/PinInput/index.d.ts +2 -0
  410. package/dist/types/components/PullToRefresh/PullToRefresh.d.ts +5 -0
  411. package/dist/types/components/PullToRefresh/PullToRefresh.test.d.ts +1 -0
  412. package/dist/types/components/PullToRefresh/PullToRefresh.types.d.ts +23 -0
  413. package/dist/types/components/PullToRefresh/index.d.ts +2 -0
  414. package/dist/types/components/QuantityStepper/QuantityStepper.types.d.ts +18 -1
  415. package/dist/types/components/SelectBox/SelectBox.types.d.ts +9 -0
  416. package/dist/types/components/SwipeableRow/SwipeableRow.d.ts +3 -0
  417. package/dist/types/components/SwipeableRow/SwipeableRow.test.d.ts +1 -0
  418. package/dist/types/components/SwipeableRow/SwipeableRow.types.d.ts +42 -0
  419. package/dist/types/components/SwipeableRow/index.d.ts +2 -0
  420. package/dist/types/components/SwipeableTabs/SwipeableTabs.d.ts +5 -0
  421. package/dist/types/components/SwipeableTabs/SwipeableTabs.test.d.ts +1 -0
  422. package/dist/types/components/SwipeableTabs/SwipeableTabs.types.d.ts +38 -0
  423. package/dist/types/components/SwipeableTabs/index.d.ts +2 -0
  424. package/dist/types/components/WheelPicker/WheelPicker.d.ts +5 -0
  425. package/dist/types/components/WheelPicker/WheelPicker.test.d.ts +1 -0
  426. package/dist/types/components/WheelPicker/WheelPicker.types.d.ts +35 -0
  427. package/dist/types/components/WheelPicker/index.d.ts +2 -0
  428. package/dist/types/components/common-responsive.d.ts +57 -0
  429. package/dist/types/index.d.ts +14 -0
  430. package/package.json +11 -3
@@ -1 +1 @@
1
- {"version":3,"file":"react-tailwind.es.js","sources":["../src/utils/build-classname.ts","../src/components/Icons/ChevronDown.svg","../src/components/Accordion/Accordion.tsx","../src/components/Icons/BadgeCheck.svg","../src/components/Icons/CircleX.svg","../src/components/Icons/CircleAlert.svg","../src/components/Icons/Info.svg","../src/components/Icons/X.svg","../src/components/Loader/index.tsx","../src/components/TextContent/TextContent.tsx","../src/components/Button/Button.tsx","../src/components/Alert/Alert.tsx","../src/components/Badge/Badge.tsx","../src/components/Icons/TriangleAlert.svg","../src/components/Icons/CircleCheck.svg","../src/components/Banner/Banner.tsx","../src/components/BodyText/BodyText.tsx","../src/components/Icons/Slash.svg","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Card/Card.tsx","../src/components/Label/Label.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/CheckboxGroup/CheckboxGroup.tsx","../src/components/Table/Table.tsx","../src/components/Pagination/usePagination.tsx","../src/components/Icons/ChevronLeft.svg","../src/components/Icons/ChevronRight.svg","../src/components/Pagination/Pagination.tsx","../src/utils/get.ts","../src/components/DataTable/DataTable.utils.ts","../src/components/Icons/ArrowDownWideNarrow.svg","../src/components/Icons/ArrowDownNarrowWide.svg","../src/components/Icons/ArrowDownAZ.svg","../src/components/Icons/ArrowDownZA.svg","../src/components/Icons/ArrowUpDown.svg","../src/components/DataTable/DataTable.icons.tsx","../src/components/DataTable/DataTable.tsx","../src/components/HeadingText/HeadingText.tsx","../src/components/DetailedInformation/DetailedInformation.tsx","../src/components/Dot/index.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Icons/FolderPlus.svg","../src/components/EmptyState/index.tsx","../src/components/Input/Input.tsx","../src/components/PasswordInput/PasswordInput.tsx","../src/components/Radio/Radio.tsx","../src/components/RadioGroup/RadioGroup.tsx","../src/components/RadioSwitch/RadioSwitch.tsx","../src/utils/is-array.ts","../src/utils/is-empty.ts","../src/components/RangeInput/RangeInput.tsx","../src/components/RangeSlider/RangeSlider.tsx","../src/hooks/use-debounce.tsx","../src/components/Icons/Check.svg","../src/components/Icons/CirclePlus.svg","../src/components/SelectBox/SelectBox.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/QuantityStepper/QuantityStepper.tsx","../src/components/SegmentedControl/SegmentedControl.tsx","../src/components/StatusPill/StatusPill.tsx","../src/components/StickyActionBar/StickyActionBar.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Toast/Toast.tsx","../src/components/Toast/ToastProvider.tsx","../src/components/VirtualizedDataTable/VirtualizedRow.tsx","../src/components/VirtualizedDataTable/VirtualizedDataTable.tsx","../src/hooks/use-is-mobile.tsx","../src/hooks/use-is-tablet.tsx","../src/hooks/use-is-tablet-or-mobile.tsx"],"sourcesContent":["import { twMerge } from 'tailwind-merge'\n\nexport const buildClassName = (...classes: any[]) => twMerge(classes.filter(Boolean))\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-chevron-down-icon lucide-chevron-down\"><path d=\"m6 9 6 6 6-6\"/></svg>","import React, { useId, useMemo, useState } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport ChevronDownIcon from '../Icons/ChevronDown.svg'\nimport type { AccordionItem, AccordionProps, AccordionVariant } from './Accordion.types'\n\nconst CONTAINER_CLASS: Record<AccordionVariant, string> = {\n bordered:\n 'rounded-lg border border-gray-200 dark:border-white/10 divide-y divide-gray-200 dark:divide-white/10 bg-white dark:bg-gray-800 overflow-hidden',\n separated: 'space-y-2',\n plain: 'divide-y divide-gray-200 dark:divide-white/10',\n}\n\nconst ITEM_CLASS: Record<AccordionVariant, string> = {\n bordered: '',\n separated:\n 'rounded-lg border border-gray-200 dark:border-white/10 bg-white dark:bg-gray-800 overflow-hidden',\n plain: '',\n}\n\nconst HEADER_CLASS =\n 'flex w-full items-center justify-between gap-2 py-3 px-4 text-left text-sm font-medium ' +\n 'text-gray-900 dark:text-white hover:bg-gray-50 dark:hover:bg-gray-700/50 ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--ui-focus-ring)] ' +\n 'disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none ' +\n 'transition-colors duration-150 cursor-pointer'\n\nexport const Accordion: React.FC<AccordionProps> = ({\n items,\n type = 'single',\n variant = 'bordered',\n collapsible = true,\n defaultOpenIds,\n openIds: controlledOpenIds,\n onChange,\n expandIcon,\n className = '',\n titleClass = '',\n panelClass = '',\n}) => {\n const baseId = useId()\n\n const resolvedItems = useMemo(\n () => items.map((item, index) => ({ ...item, id: item.id ?? index })),\n [items],\n )\n\n const [uncontrolledOpenIds, setUncontrolledOpenIds] = useState<Array<string | number>>(\n defaultOpenIds ?? [],\n )\n\n const isControlled = controlledOpenIds !== undefined\n const openIds = isControlled ? controlledOpenIds : uncontrolledOpenIds\n\n const toggle = (id: string | number) => {\n const isOpen = openIds.includes(id)\n const next =\n type === 'single'\n ? isOpen\n ? collapsible\n ? []\n : openIds\n : [id]\n : isOpen\n ? openIds.filter((openId) => openId !== id)\n : [...openIds, id]\n\n if (next === openIds) return\n if (!isControlled) setUncontrolledOpenIds(next)\n onChange?.(next)\n }\n\n const renderIndicator = (isOpen: boolean) => {\n if (typeof expandIcon === 'function') return expandIcon(isOpen)\n\n return (\n <span\n className={buildClassName(\n 'inline-flex shrink-0 transition-transform duration-200',\n isOpen && 'rotate-180',\n )}\n >\n {expandIcon ?? <ChevronDownIcon className=\"size-4 stroke-gray-500 dark:stroke-gray-400\" />}\n </span>\n )\n }\n\n return (\n <div className={buildClassName(CONTAINER_CLASS[variant], className)}>\n {resolvedItems.map((item: AccordionItem & { id: string | number }) => {\n const isOpen = openIds.includes(item.id)\n const headerId = `${baseId}-${item.id}-header`\n const panelId = `${baseId}-${item.id}-panel`\n\n return (\n <div key={item.id} className={ITEM_CLASS[variant]}>\n <h3 className=\"m-0\">\n <button\n type=\"button\"\n id={headerId}\n aria-expanded={isOpen}\n aria-controls={panelId}\n disabled={item.disabled}\n onClick={() => toggle(item.id)}\n className={buildClassName(HEADER_CLASS, titleClass, item.titleClass)}\n >\n <span className=\"flex items-center gap-2\">\n {item.icon && <span className=\"inline-flex shrink-0\">{item.icon}</span>}\n {item.title}\n </span>\n {renderIndicator(isOpen)}\n </button>\n </h3>\n\n <div\n id={panelId}\n role=\"region\"\n aria-labelledby={headerId}\n className={buildClassName(\n 'grid transition-[grid-template-rows] duration-200 ease-in-out',\n isOpen ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]',\n )}\n >\n <div className=\"overflow-hidden\">\n <div\n className={buildClassName(\n 'px-4 pt-2 pb-4 text-sm text-gray-600 dark:text-gray-300',\n panelClass,\n item.panelClass,\n )}\n >\n {item.content}\n </div>\n </div>\n </div>\n </div>\n )\n })}\n </div>\n )\n}\n\nAccordion.displayName = 'Accordion'\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-badge-check-icon lucide-badge-check\"><path d=\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\"/><path d=\"m9 12 2 2 4-4\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-circle-x-icon lucide-circle-x\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m15 9-6 6\"/><path d=\"m9 9 6 6\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-circle-alert-icon lucide-circle-alert\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\"/><line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-info-icon lucide-info\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4\"/><path d=\"M12 8h.01\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-x-icon lucide-x\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>","import React from 'react'\nimport { buildClassName } from '../../utils/build-classname'\n\nimport './loader.css'\n\nexport type LoaderSize = 'xs' | 'sm' | 'md' | 'lg'\n\ntype LoaderSizeMap = {\n [k in LoaderSize]: string\n}\n\ninterface LoaderProps extends React.SVGAttributes<SVGSVGElement> {\n size?: LoaderSize\n className?: string\n}\n\nconst loaderSizeMap: LoaderSizeMap = {\n xs: 'size-4',\n sm: 'size-6',\n md: 'size-8',\n lg: 'size-10',\n}\n\nexport const Loader: React.FC<LoaderProps> = ({ className = '', size = 'md', ...props }) => {\n const hasColorClass = /\\btext-/.test(className)\n\n return (\n <svg\n className={buildClassName(\n !hasColorClass && 'text-blue-600 dark:text-white',\n loaderSizeMap[size],\n className,\n 'spinner',\n )}\n viewBox=\"0 0 50 50\"\n {...props}\n >\n <circle\n className=\"path\"\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"5\"\n />\n </svg>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { TextContentProps, TextContentSize, TextContentWeight } from './TextContent.types'\n\nconst sizeClassMap: Record<TextContentSize, string> = {\n xs: 'text-xs/5',\n sm: 'text-sm/6',\n md: 'text-base/7',\n lg: 'text-lg/8',\n xl: 'text-xl/9',\n}\n\nconst weightClassMap: Record<TextContentWeight, string> = {\n light: 'font-light',\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n}\n\nexport const TextContent = forwardRef<HTMLElement, TextContentProps>((props, ref) => {\n const {\n as = 'span',\n size,\n weight,\n xsmall = false,\n small = false,\n strong = false,\n muted = false,\n error = false,\n success = false,\n warning = false,\n info = false,\n invert = false,\n monospace = false,\n truncate = false,\n className,\n children,\n ...rest\n } = props\n\n const textColorClass = error\n ? 'text-[var(--ui-text-danger)]'\n : success\n ? 'text-[var(--ui-success)]'\n : warning\n ? 'text-[var(--ui-warning)]'\n : info\n ? 'text-[var(--ui-info)]'\n : muted\n ? invert\n ? 'text-gray-300 dark:text-gray-600'\n : 'text-[var(--ui-text-muted)]'\n : invert\n ? 'text-white dark:text-black'\n : 'text-[var(--ui-text)]'\n\n return React.createElement(as, {\n ref,\n className: buildClassName(\n textColorClass,\n size ? sizeClassMap[size] : xsmall ? 'text-xs/5' : small ? 'text-sm/6' : undefined,\n weight ? weightClassMap[weight] : strong ? 'font-semibold' : undefined,\n monospace && 'font-mono',\n truncate && 'truncate inline-block max-w-full',\n className,\n ),\n ...rest,\n children,\n })\n})\n\nTextContent.displayName = 'TextContent'\n","import React, { ElementType, forwardRef, useMemo } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport { Loader } from '../Loader'\nimport { TextContent } from '../TextContent'\nimport type { ButtonComponent, ButtonProps, ButtonSize, ThemedButtonClass } from './Button.types'\nimport type { PolymorphicRef } from '../common-type'\n\n/**\n * Tailwind CSS classes for theme + variant combinations.\n */\nconst THEMED_BTN_CLASS: ThemedButtonClass = {\n primary: {\n default:\n 'text-white bg-[var(--ui-primary)] hover:bg-[var(--ui-primary-hover)] focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-primary-ring)] disabled:bg-[var(--ui-primary-disabled)]',\n outlined:\n 'text-[var(--ui-primary-text)] hover:text-white border border-[var(--ui-primary)] hover:bg-[var(--ui-primary)] focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-primary-ring)] disabled:text-[var(--ui-primary-disabled)] disabled:border-[var(--ui-primary-disabled)]',\n plain:\n 'text-[var(--ui-primary-text)] hover:bg-black/5 dark:hover:bg-gray-700 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-primary-ring)] disabled:text-[var(--ui-primary-disabled)]',\n },\n danger: {\n default:\n 'text-white bg-[var(--ui-danger)] hover:bg-[var(--ui-danger-hover)] focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-danger-ring)] disabled:bg-[var(--ui-danger-disabled)]',\n outlined:\n 'text-[var(--ui-danger-text)] hover:text-white border border-[var(--ui-danger)] hover:bg-[var(--ui-danger)] focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-danger-ring)] disabled:text-[var(--ui-danger-disabled)] disabled:border-[var(--ui-danger-disabled)]',\n plain:\n 'text-[var(--ui-danger-text)] hover:bg-black/5 dark:hover:bg-gray-700 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-danger-ring)] disabled:text-[var(--ui-danger-disabled)]',\n },\n secondary: {\n default:\n 'text-gray-700 bg-white border border-gray-300 hover:bg-gray-100 dark:bg-gray-800 dark:text-white dark:border-gray-600 dark:hover:bg-gray-700 dark:hover:border-gray-600 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-focus-ring)] disabled:bg-gray-200 dark:disabled:bg-gray-700',\n outlined:\n 'text-gray-700 hover:text-white border border-gray-500 hover:bg-gray-700 dark:border-gray-500 dark:text-gray-200 dark:hover:text-white dark:hover:bg-gray-600 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-focus-ring)] disabled:text-gray-400 disabled:border-gray-400',\n plain:\n 'text-gray-700 hover:bg-black/5 dark:text-gray-200 dark:hover:bg-gray-700 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-focus-ring)] disabled:text-gray-400',\n },\n success: {\n default:\n 'text-white bg-emerald-600 hover:bg-emerald-700 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-emerald-500 disabled:bg-emerald-300 dark:disabled:bg-emerald-900',\n outlined:\n 'text-emerald-600 hover:text-white border border-emerald-600 hover:bg-emerald-600 dark:text-emerald-400 dark:border-emerald-500 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-emerald-500 disabled:opacity-50',\n plain:\n 'text-emerald-600 hover:bg-emerald-50 dark:text-emerald-400 dark:hover:bg-emerald-950/40 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-emerald-500 disabled:opacity-50',\n },\n warning: {\n default:\n 'text-white bg-amber-500 hover:bg-amber-600 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-amber-500 disabled:bg-amber-300 dark:disabled:bg-amber-900',\n outlined:\n 'text-amber-600 hover:text-white border border-amber-500 hover:bg-amber-500 dark:text-amber-400 dark:border-amber-500 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-amber-500 disabled:opacity-50',\n plain:\n 'text-amber-600 hover:bg-amber-50 dark:text-amber-400 dark:hover:bg-amber-950/40 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-amber-500 disabled:opacity-50',\n },\n}\n\nconst LOADER_TEXT_CLASS: ThemedButtonClass = {\n primary: {\n default: 'text-white',\n outlined: 'text-[var(--ui-primary-text)]',\n plain: 'text-[var(--ui-primary-text)]',\n },\n danger: {\n default: 'text-white',\n outlined: 'text-[var(--ui-danger-text)]',\n plain: 'text-[var(--ui-danger-text)]',\n },\n secondary: {\n default: 'text-gray-700 dark:text-white',\n outlined: 'text-gray-700 dark:text-gray-200',\n plain: 'text-gray-700 dark:text-gray-200',\n },\n success: {\n default: 'text-white',\n outlined: 'text-emerald-600 dark:text-emerald-400',\n plain: 'text-emerald-600 dark:text-emerald-400',\n },\n warning: {\n default: 'text-white',\n outlined: 'text-amber-600 dark:text-amber-400',\n plain: 'text-amber-600 dark:text-amber-400',\n },\n}\n\n/**\n * Generate size classes.\n */\nconst getBtnSizeClasses = (size: ButtonSize, iconOnly = false) => {\n switch (size) {\n case 'xs':\n return iconOnly ? 'h-7 w-7 p-1 rounded-sm text-xs' : 'h-7 px-2.5 rounded-sm gap-1 text-xs'\n\n case 'sm':\n return iconOnly ? 'h-8 w-8 p-1.5 rounded text-sm' : 'h-8 px-3 rounded gap-1.5 text-sm'\n\n case 'md':\n return iconOnly ? 'h-9 w-9 p-2 rounded-md text-sm' : 'h-9 px-4 rounded-md gap-2 text-sm'\n\n case 'lg':\n return iconOnly\n ? 'h-10 w-10 p-2.5 rounded-lg text-base'\n : 'h-10 px-5 rounded-lg gap-2 text-base'\n }\n}\n\n/**\n * Base shared tailwind classes.\n */\nconst BASE_BTN_CLASS =\n 'font-medium flex items-center justify-center shrink-0 cursor-pointer ' +\n 'disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-75 ' +\n 'active:scale-[0.98] transition-all duration-150 ease-out focus:outline-none'\n\nexport const Button = forwardRef(\n <C extends ElementType = 'button'>(\n { as, type, ...props }: ButtonProps<C>,\n ref: PolymorphicRef<C>,\n ) => {\n const {\n className = '',\n children,\n theme = 'primary',\n variant = 'default',\n size = 'md',\n leftIcon,\n rightIcon,\n fullWidth = false,\n loading = false,\n loadingText = '',\n rounded = false,\n disabled,\n iconOnly = false,\n noOutlineOnFocus = false,\n ...restProps\n } = props\n\n const Component = as || 'button'\n\n // Accessibility guard for icon-only buttons\n if (iconOnly && !(restProps as Record<string, unknown>)['aria-label']) {\n console.warn('[ui] <Button iconOnly> requires aria-label for accessibility.')\n }\n\n const resolvedDisabled = disabled || loading\n\n // Clean invalid props when not rendering a real button\n const { type: _ignoreType, disabled: _ignoreDisabled, ...cleanRest } = restProps\n\n const buttonSpecificProps =\n Component === 'button'\n ? {\n type: type ?? 'button',\n disabled: resolvedDisabled,\n }\n : {}\n\n const classes = useMemo(\n () =>\n buildClassName(\n BASE_BTN_CLASS,\n THEMED_BTN_CLASS[theme][variant],\n getBtnSizeClasses(size, iconOnly),\n !noOutlineOnFocus && 'focus:outline focus:outline-2 focus:outline-offset-2',\n rounded && 'rounded-full',\n fullWidth && 'w-full',\n variant === 'default' && 'shadow-xs hover:shadow-none disabled:shadow-none',\n className,\n ),\n [theme, variant, size, iconOnly, rounded, fullWidth, noOutlineOnFocus, className],\n )\n\n /**\n * SPECIAL CASE: iconOnly + loading → show spinner only\n */\n if (loading && iconOnly) {\n return (\n <Component ref={ref} className={classes} {...buttonSpecificProps} {...cleanRest}>\n <Loader\n data-testid=\"btn-loader-icon\"\n size=\"xs\"\n className={buildClassName(LOADER_TEXT_CLASS[theme][variant])}\n />\n </Component>\n )\n }\n\n const loaderIcon = (\n <Loader\n data-testid=\"btn-loader-icon\"\n size=\"xs\"\n className={buildClassName(LOADER_TEXT_CLASS[theme][variant])}\n />\n )\n\n return (\n <Component ref={ref} className={classes} {...buttonSpecificProps} {...cleanRest}>\n {loading && !loadingText ? (\n <span className=\"flex items-center gap-2\" aria-live=\"polite\">\n {loaderIcon}\n {children}\n </span>\n ) : loading && loadingText ? (\n <span className=\"flex items-center gap-2\" aria-live=\"polite\">\n {loaderIcon}\n <TextContent className={buildClassName(LOADER_TEXT_CLASS[theme][variant])}>\n {loadingText}\n </TextContent>\n </span>\n ) : (\n <>\n {leftIcon && <span className=\"shrink-0 flex items-center\">{leftIcon}</span>}\n {children}\n {rightIcon && <span className=\"shrink-0 flex items-center\">{rightIcon}</span>}\n </>\n )}\n </Component>\n )\n },\n) as ButtonComponent\n\nButton.displayName = 'Button'\n","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport BadgeCheckIcon from '../Icons/BadgeCheck.svg'\nimport CircleXIcon from '../Icons/CircleX.svg'\nimport CircleAlertIcon from '../Icons/CircleAlert.svg'\nimport InfoIcon from '../Icons/Info.svg'\nimport XIcon from '../Icons/X.svg'\nimport { Button } from '../Button'\nimport type { AlertProps } from './Alert.types'\n\nconst AlertTypeIconMap = {\n success: BadgeCheckIcon,\n danger: CircleXIcon,\n warning: CircleAlertIcon,\n info: InfoIcon,\n}\n\nconst TypeClassMap = {\n success:\n 'bg-[var(--ui-success-light)] ring-[var(--ui-success-ring-subtle)] text-[var(--ui-success-text)]',\n danger:\n 'bg-[var(--ui-danger-light)] ring-[var(--ui-danger-ring-subtle)] text-[var(--ui-danger-text)]',\n warning:\n 'bg-[var(--ui-warning-light)] ring-[var(--ui-warning-ring-subtle)] text-[var(--ui-warning-text)]',\n info: 'bg-[var(--ui-info-light)] ring-[var(--ui-info-ring-subtle)] text-[var(--ui-info-text)]',\n}\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>((props, ref) => {\n const {\n type = 'info',\n className,\n message,\n children,\n removable = false,\n onRemove,\n icon,\n title,\n ...restProps\n } = props\n\n const DefaultIcon = AlertTypeIconMap[type] || InfoIcon\n const iconNode =\n icon !== undefined ? (\n icon\n ) : (\n <DefaultIcon className=\"size-5 shrink-0\" data-testid={`alert-${type}-icon`} />\n )\n\n return (\n <div\n ref={ref}\n className={buildClassName(\n 'flex items-center justify-between rounded-md p-3 text-sm ring-1 ring-inset gap-2',\n TypeClassMap[type],\n className,\n )}\n {...restProps}\n >\n <span className=\"inline-flex items-start gap-2 min-w-0\">\n {iconNode && <span className=\"shrink-0 inline-flex mt-0.5\">{iconNode}</span>}\n <span className=\"inline-flex flex-col gap-0.5 min-w-0\">\n {title && <span className=\"font-semibold\">{title}</span>}\n <span className=\"inline-flex items-center\">{message ?? children}</span>\n </span>\n </span>\n {removable && (\n <Button\n iconOnly\n aria-label=\"Dismiss alert\"\n size=\"xs\"\n variant=\"plain\"\n theme=\"secondary\"\n className=\"hover:bg-black/10 dark:hover:bg-white/10 shrink-0\"\n onClick={() => onRemove?.()}\n data-testid=\"alert-remove-btn\"\n >\n <XIcon className=\"size-4.5\" data-testid=\"alert-remove-icon\" />\n </Button>\n )}\n </div>\n )\n})\n\nAlert.displayName = 'Alert'\n","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport XIcon from '../Icons/X.svg'\nimport { BadgeProps } from './Badge.types'\nimport { TextContent } from '../TextContent'\n\nconst ThemeClassMap = {\n success:\n 'bg-[var(--ui-success-light)] text-[var(--ui-success-text)] ring-[var(--ui-success-ring-subtle)]',\n danger:\n 'bg-[var(--ui-danger-light)] text-[var(--ui-danger-text)] ring-[var(--ui-danger-ring-subtle)]',\n warning:\n 'bg-[var(--ui-warning-light)] text-[var(--ui-warning-text)] ring-[var(--ui-warning-ring-subtle)]',\n info: 'bg-[var(--ui-info-light)] text-[var(--ui-info-text)] ring-[var(--ui-info-ring-subtle)]',\n secondary:\n 'bg-gray-50 dark:bg-gray-700 text-gray-700 dark:text-gray-200 ring-[var(--ui-secondary-ring-subtle)]',\n}\n\nconst SIZE_CLASS = {\n sm: 'text-xs py-0.5 px-2',\n md: 'text-xs py-1 px-3',\n}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>((props, ref) => {\n const {\n theme = 'info',\n className,\n children,\n removable = false,\n rounded = false,\n onRemove,\n size = 'md',\n icon,\n ...restProps\n } = props\n\n return (\n <TextContent\n ref={ref}\n className={buildClassName(\n 'inline-flex items-center gap-1 font-medium ring-1 ring-inset',\n SIZE_CLASS[size],\n ThemeClassMap[theme],\n rounded ? 'rounded-full' : 'rounded-md',\n icon ? 'pl-2' : '',\n removable ? 'pr-1' : '',\n className,\n )}\n data-testid={`badge-${theme}`}\n {...restProps}\n >\n {icon && <span className=\"shrink-0 inline-flex\">{icon}</span>}\n {children}\n {removable && (\n <XIcon\n className=\"size-4 shrink-0 hover:bg-black/10 dark:hover:bg-white/10 rounded-sm cursor-pointer\"\n role=\"button\"\n tabIndex={0}\n aria-label=\"Remove\"\n onClick={() => onRemove?.()}\n onKeyDown={(e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onRemove?.()\n }\n }}\n />\n )}\n </TextContent>\n )\n})\n\nBadge.displayName = 'Badge'\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-triangle-alert-icon lucide-triangle-alert\"><path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"/><path d=\"M12 9v4\"/><path d=\"M12 17h.01\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-circle-check-icon lucide-circle-check\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m9 12 2 2 4-4\"/></svg>","import React, { forwardRef } from 'react'\nimport TriangleAlertIcon from '../Icons/TriangleAlert.svg'\nimport CircleXIcon from '../Icons/CircleX.svg'\nimport CircleCheckIcon from '../Icons/CircleCheck.svg'\nimport InfoIcon from '../Icons/Info.svg'\nimport XIcon from '../Icons/X.svg'\nimport { buildClassName } from '../../utils/build-classname'\nimport { Button } from '../Button'\nimport { BannerProps } from './Banner.types'\n\nconst sizeMap = {\n xs: 'size-4',\n sm: 'size-5',\n md: 'size-6',\n lg: 'size-8',\n xl: 'size-10',\n}\n\nconst IconMap = {\n info: InfoIcon,\n error: CircleXIcon,\n success: CircleCheckIcon,\n warning: TriangleAlertIcon,\n}\n\nconst TypeClassMap = {\n info: 'bg-[var(--ui-info-light)] ring-[var(--ui-info-ring-subtle)] text-[var(--ui-info-text)]',\n error:\n 'bg-[var(--ui-danger-light)] ring-[var(--ui-danger-ring-subtle)] text-[var(--ui-danger-text)]',\n success:\n 'bg-[var(--ui-success-light)] ring-[var(--ui-success-ring-subtle)] text-[var(--ui-success-text)]',\n warning:\n 'bg-[var(--ui-warning-light)] ring-[var(--ui-warning-ring-subtle)] text-[var(--ui-warning-text)]',\n}\n\nexport const Banner = forwardRef<HTMLDivElement, BannerProps>((props, ref) => {\n const {\n type = 'info',\n iconSize = 'sm',\n children,\n icon,\n removable = false,\n onRemove,\n className,\n ...restProps\n } = props\n\n const DefaultIcon = IconMap[type]\n const iconNode =\n icon !== undefined ? (\n icon\n ) : (\n <DefaultIcon\n data-testid={`banner-${type}-icon`}\n className={buildClassName('shrink-0', sizeMap[iconSize])}\n />\n )\n\n return (\n <div\n ref={ref}\n className={buildClassName(\n 'text-sm rounded-md flex w-full p-3 items-center gap-3 ring-1 ring-inset',\n TypeClassMap[type],\n className,\n )}\n data-testid={`banner-${type}`}\n {...restProps}\n >\n {iconNode}\n <div className=\"flex items-center w-full justify-between\">{children}</div>\n {removable && (\n <Button\n iconOnly\n aria-label=\"Dismiss banner\"\n size=\"xs\"\n variant=\"plain\"\n theme=\"secondary\"\n className=\"hover:bg-black/10 dark:hover:bg-white/10 shrink-0\"\n onClick={() => onRemove?.()}\n data-testid=\"banner-remove-btn\"\n >\n <XIcon className=\"size-4.5\" data-testid=\"banner-remove-icon\" />\n </Button>\n )}\n </div>\n )\n})\n\nBanner.displayName = 'Banner'\n","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { BodyTextAlign, BodyTextProps, BodyTextSize, BodyTextWeight } from './BodyText.types'\n\nconst sizeClassMap: Record<BodyTextSize, string> = {\n xs: 'text-xs/5',\n sm: 'text-sm/6',\n md: 'text-base/7',\n lg: 'text-lg/8',\n xl: 'text-xl/9',\n}\n\nconst weightClassMap: Record<BodyTextWeight, string> = {\n light: 'font-light',\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n}\n\nconst alignClassMap: Record<BodyTextAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n}\n\nconst clampClassMap = {\n 1: 'line-clamp-1',\n 2: 'line-clamp-2',\n 3: 'line-clamp-3',\n 4: 'line-clamp-4',\n}\n\nexport const BodyText = forwardRef<HTMLParagraphElement, BodyTextProps>((props, ref) => {\n const {\n as = 'p',\n size,\n weight,\n small = false,\n strong = false,\n muted = false,\n error = false,\n success = false,\n warning = false,\n info = false,\n inline = false,\n invert = false,\n align,\n truncate = false,\n clamp,\n className,\n children,\n ...rest\n } = props\n\n const textColorClass = error\n ? 'text-[var(--ui-text-danger)]'\n : success\n ? 'text-[var(--ui-success)]'\n : warning\n ? 'text-[var(--ui-warning)]'\n : info\n ? 'text-[var(--ui-info)]'\n : muted\n ? invert\n ? 'text-gray-300 dark:text-gray-600'\n : 'text-[var(--ui-text-muted)]'\n : invert\n ? 'text-white dark:text-black'\n : 'text-[var(--ui-text)]'\n\n return React.createElement(as, {\n ref,\n className: buildClassName(\n textColorClass,\n size ? sizeClassMap[size] : small && 'text-sm/6',\n weight ? weightClassMap[weight] : strong && 'font-semibold',\n align && alignClassMap[align],\n inline && 'inline-flex items-center gap-2',\n truncate && 'truncate',\n clamp && clampClassMap[clamp],\n className,\n ),\n ...rest,\n children,\n })\n})\n\nBodyText.displayName = 'BodyText'\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-slash-icon lucide-slash\"><path d=\"M22 2 2 22\"/></svg>","import { forwardRef, useState, type ReactNode } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport SlashIcon from '../Icons/Slash.svg'\nimport type { BreadcrumbItem, BreadcrumbProps } from './Breadcrumb.types'\n\nconst SIZE_CONTAINER_CLASS: Record<string, string> = {\n sm: 'text-xs gap-1.5',\n md: 'text-sm gap-2',\n lg: 'text-base gap-2.5',\n}\n\nconst SIZE_ICON_CLASS: Record<string, string> = {\n sm: 'size-3',\n md: 'size-3.5',\n lg: 'size-4',\n}\n\nfunction RenderSeparator({\n separator,\n size,\n index,\n className,\n}: {\n separator: BreadcrumbProps['separator']\n size: 'sm' | 'md' | 'lg'\n index: number\n className?: string\n}) {\n const testId = `breadcrumb-divider-${index}`\n\n if (separator === 'slash' || !separator) {\n return (\n <SlashIcon\n data-testid={testId}\n className={buildClassName(\n SIZE_ICON_CLASS[size] || 'size-3.5',\n 'text-gray-400 dark:text-gray-500 shrink-0 select-none',\n className,\n )}\n />\n )\n }\n\n if (separator === 'chevron') {\n return (\n <svg\n data-testid={testId}\n className={buildClassName(\n SIZE_ICON_CLASS[size] || 'size-3.5',\n 'text-gray-400 dark:text-gray-500 shrink-0 select-none',\n className,\n )}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n )\n }\n\n if (separator === 'dot') {\n return (\n <span\n data-testid={testId}\n className={buildClassName(\n 'size-1 rounded-full bg-gray-400 dark:bg-gray-500 shrink-0 select-none mx-0.5',\n className,\n )}\n />\n )\n }\n\n return (\n <span data-testid={testId} className={buildClassName('shrink-0 select-none', className)}>\n {separator}\n </span>\n )\n}\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>((props, ref) => {\n const {\n items = [],\n render,\n separator = 'slash',\n size = 'md',\n maxItems,\n className,\n itemClass,\n activeItemClass,\n separatorClass,\n ...navProps\n } = props\n\n const [expanded, setExpanded] = useState(false)\n const count = items.length\n const shouldTruncate = maxItems !== undefined && maxItems > 1 && count > maxItems && !expanded\n\n const getVisibleItems = () => {\n if (!shouldTruncate) return items\n // Always keep 1st item and last 1-2 items\n const firstItem = items[0]\n const lastItems = items.slice(count - (maxItems - 1))\n return [firstItem, ...lastItems]\n }\n\n const hiddenItems = shouldTruncate ? items.slice(1, count - (maxItems - 1)) : []\n const visibleItems = getVisibleItems()\n\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n data-testid=\"breadcrumb-container\"\n className={buildClassName(\n 'flex flex-wrap items-center text-gray-600 dark:text-gray-300 font-medium',\n SIZE_CONTAINER_CLASS[size] || SIZE_CONTAINER_CLASS.md,\n className,\n )}\n {...navProps}\n >\n {items.map((item, index) => {\n const isLast = index === count - 1\n const isCollapsedMiddle = shouldTruncate && index > 0 && index < count - (maxItems - 1)\n\n if (isCollapsedMiddle) {\n if (index === 1) {\n // Render the single '...' collapse pill\n return (\n <span\n key=\"breadcrumb-collapsed\"\n className=\"inline-flex items-center gap-2 relative group/ellipsis\"\n >\n <button\n type=\"button\"\n onClick={() => setExpanded(true)}\n className=\"px-1.5 py-0.5 rounded-md text-xs font-semibold bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700 text-gray-600 dark:text-gray-300 transition-colors cursor-pointer\"\n aria-label={`Expand ${hiddenItems.length} hidden breadcrumbs`}\n title={`Show ${hiddenItems.length} hidden levels`}\n >\n •••\n </button>\n <RenderSeparator\n separator={separator}\n size={size}\n index={index}\n className={separatorClass}\n />\n </span>\n )\n }\n return null\n }\n\n const defaultContent = isLast ? (\n <span\n className={buildClassName(\n 'text-gray-900 dark:text-white font-semibold',\n activeItemClass,\n item.className,\n )}\n >\n {item.text}\n </span>\n ) : item.to ? (\n <a\n href={item.to}\n className={buildClassName(\n 'hover:text-blue-600 dark:hover:text-blue-400 transition-colors',\n itemClass,\n item.className,\n )}\n >\n {item.text}\n </a>\n ) : (\n <span className={buildClassName(itemClass, item.className)}>{item.text}</span>\n )\n\n return (\n <span\n key={item.key}\n className=\"inline-flex items-center gap-2\"\n data-testid={`breadcrumb-item-${item.key}`}\n >\n <span\n className=\"inline-flex items-center gap-1.5\"\n {...(isLast ? { 'aria-current': 'page' as const } : {})}\n >\n {item.icon && <span className=\"shrink-0 text-gray-400\">{item.icon}</span>}\n {isLast ? (\n defaultContent\n ) : render ? (\n <span className={buildClassName(itemClass, item.className)}>{render(item)}</span>\n ) : (\n defaultContent\n )}\n </span>\n {!isLast && (\n <RenderSeparator\n separator={separator}\n size={size}\n index={index}\n className={separatorClass}\n />\n )}\n </span>\n )\n })}\n </nav>\n )\n})\n\nBreadcrumb.displayName = 'Breadcrumb'\n","import React, { Children, cloneElement, isValidElement, useMemo } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { ButtonSize, ButtonTheme } from '../Button/Button.types'\nimport type { ButtonGroupOrientation, ButtonGroupProps } from './ButtonGroup.types'\n\nconst EDGE_ROUNDING: Record<\n ButtonGroupOrientation,\n Record<ButtonSize, { first: string; last: string }>\n> = {\n horizontal: {\n xs: { first: 'rounded-l-sm rounded-r-none', last: 'rounded-r-sm rounded-l-none' },\n sm: { first: 'rounded-l rounded-r-none', last: 'rounded-r rounded-l-none' },\n md: { first: 'rounded-l-md rounded-r-none', last: 'rounded-r-md rounded-l-none' },\n lg: { first: 'rounded-l-lg rounded-r-none', last: 'rounded-r-lg rounded-l-none' },\n },\n vertical: {\n xs: { first: 'rounded-t-sm rounded-b-none', last: 'rounded-b-sm rounded-t-none' },\n sm: { first: 'rounded-t rounded-b-none', last: 'rounded-b rounded-t-none' },\n md: { first: 'rounded-t-md rounded-b-none', last: 'rounded-b-md rounded-t-none' },\n lg: { first: 'rounded-t-lg rounded-b-none', last: 'rounded-b-lg rounded-t-none' },\n },\n}\n\nconst PILL_EDGE_ROUNDING: Record<ButtonGroupOrientation, { first: string; last: string }> = {\n horizontal: { first: 'rounded-l-full rounded-r-none', last: 'rounded-r-full rounded-l-none' },\n vertical: { first: 'rounded-t-full rounded-b-none', last: 'rounded-b-full rounded-t-none' },\n}\n\nconst getEdgeRoundingClass = ({\n index,\n count,\n size,\n orientation,\n pill,\n}: {\n index: number\n count: number\n size: ButtonSize\n orientation: ButtonGroupOrientation\n pill: boolean\n}) => {\n if (count <= 1) return ''\n if (index !== 0 && index !== count - 1) return 'rounded-none'\n\n const position = index === 0 ? 'first' : 'last'\n return pill\n ? PILL_EDGE_ROUNDING[orientation][position]\n : EDGE_ROUNDING[orientation][size][position]\n}\n\nexport const ButtonGroup: React.FC<ButtonGroupProps> = ({\n children,\n orientation = 'horizontal',\n theme = 'secondary',\n variant = 'default',\n size = 'md',\n value,\n onChange,\n disabled: groupDisabled = false,\n rounded = false,\n fullWidth = false,\n label,\n className = '',\n}) => {\n const isVertical = orientation === 'vertical'\n const items = useMemo(() => Children.toArray(children).filter(isValidElement), [children])\n const count = items.length\n const isToggleMode = value !== undefined\n\n return (\n <div\n role=\"group\"\n aria-label={label}\n className={buildClassName(\n 'inline-flex items-stretch',\n isVertical ? 'flex-col' : 'flex-row',\n fullWidth && 'flex w-full',\n className,\n )}\n >\n {items.map((child, index) => {\n const childProps = child.props as Record<string, any>\n const childSize = (childProps.size as ButtonSize) ?? size\n const childDisabled = childProps.disabled ?? groupDisabled\n\n // Resolve item value for toggle mode\n const itemVal =\n childProps.value ??\n childProps.id ??\n (typeof childProps.children === 'string' || typeof childProps.children === 'number'\n ? childProps.children\n : index)\n\n const isSelected = isToggleMode\n ? Array.isArray(value)\n ? value.includes(itemVal)\n : value === itemVal\n : false\n\n const resolvedTheme: ButtonTheme = isToggleMode\n ? isSelected\n ? (childProps.theme ?? 'primary')\n : (childProps.theme ?? 'secondary')\n : (childProps.theme ?? theme)\n\n const resolvedVariant = childProps.variant ?? variant\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n childProps.onClick?.(e)\n if (isToggleMode && !childDisabled) {\n onChange?.(itemVal)\n }\n }\n\n return cloneElement(child as React.ReactElement<Record<string, unknown>>, {\n theme: resolvedTheme,\n variant: resolvedVariant,\n size: childSize,\n disabled: childDisabled,\n ...(isToggleMode ? { 'aria-pressed': isSelected } : {}),\n onClick: handleClick,\n className: buildClassName(\n childProps.className,\n getEdgeRoundingClass({\n index,\n count,\n size: childSize,\n orientation,\n pill: rounded,\n }),\n count > 1 && [\n 'relative shadow-none hover:z-10 focus:z-10 focus-visible:z-10',\n isSelected && 'z-10',\n index > 0 && (isVertical ? '-mt-px' : '-ml-px'),\n index > 0 &&\n resolvedVariant === 'default' &&\n (isVertical\n ? resolvedTheme === 'primary' || resolvedTheme === 'danger'\n ? 'border-t border-white/25 dark:border-white/20'\n : 'border-t border-gray-300/70 dark:border-gray-700/70'\n : resolvedTheme === 'primary' || resolvedTheme === 'danger'\n ? 'border-l border-white/25 dark:border-white/20'\n : 'border-l border-gray-300/70 dark:border-gray-700/70'),\n ],\n fullWidth && 'flex-1',\n ),\n })\n })}\n </div>\n )\n}\n\nButtonGroup.displayName = 'ButtonGroup'\n","import { ElementType, forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type {\n CardComponent,\n CardContentProps,\n CardDescriptionProps,\n CardFooterProps,\n CardHeaderProps,\n CardMediaProps,\n CardProps,\n CardTitleProps,\n} from './Card.types'\nimport type { PolymorphicRef } from '../common-type'\n\nconst RADIUS_CLASS: Record<string, string> = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n}\n\nconst ASPECT_RATIO_CLASS: Record<string, string> = {\n auto: 'aspect-auto',\n square: 'aspect-square',\n video: 'aspect-video',\n wide: 'aspect-[21/9]',\n}\n\nexport const Card = forwardRef(\n <C extends ElementType = 'div'>({ as, ...props }: CardProps<C>, ref: PolymorphicRef<C>) => {\n const {\n variant = 'outlined',\n radius = 'xl',\n hoverable = false,\n clickable = false,\n selected = false,\n bordered = true,\n compact = false,\n zeroPadding = false,\n ...rest\n } = props\n\n const Component = as || 'div'\n const { className, ...cleanRest } = rest as { className?: string }\n\n const isOutlined = variant === 'outlined' && bordered\n const isElevated = variant === 'elevated'\n const isFilled = variant === 'filled'\n const isGhost = variant === 'ghost'\n\n const classes = buildClassName(\n 'block transition-all duration-200',\n RADIUS_CLASS[radius] || RADIUS_CLASS.xl,\n zeroPadding ? '' : compact ? 'p-3 sm:p-4' : 'p-5 sm:p-6',\n\n // Surface variants\n isOutlined && 'bg-white dark:bg-gray-900 border border-[var(--ui-border)]',\n isElevated &&\n 'bg-white dark:bg-gray-900 border border-gray-100 dark:border-gray-800 shadow-md shadow-gray-200/50 dark:shadow-none',\n isFilled && 'bg-gray-50/80 dark:bg-gray-800/60 border border-transparent',\n isGhost && 'bg-transparent border border-transparent',\n\n // Hoverable & Clickable states\n hoverable && 'hover:bg-gray-100/80 dark:hover:bg-gray-800/80',\n clickable && 'cursor-pointer hover:-translate-y-0.5 hover:shadow-lg',\n selected && 'ring-2 ring-[var(--ui-primary)] border-[var(--ui-primary)]',\n\n className,\n )\n\n return <Component ref={ref} className={classes} {...cleanRest} />\n },\n) as unknown as CardComponent\n\nexport const CardHeader = ({\n className,\n bordered = false,\n children,\n ...props\n}: CardHeaderProps) => (\n <div\n className={buildClassName(\n 'flex items-center justify-between gap-4 mb-4',\n bordered && 'pb-4 border-b border-gray-200 dark:border-gray-800',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n)\n\nexport const CardTitle = ({\n className,\n as: Component = 'h3',\n children,\n ...props\n}: CardTitleProps) => (\n <Component\n className={buildClassName(\n 'text-lg font-semibold text-gray-900 dark:text-white tracking-tight',\n className,\n )}\n {...props}\n >\n {children}\n </Component>\n)\n\nexport const CardDescription = ({ className, children, ...props }: CardDescriptionProps) => (\n <p\n className={buildClassName(\n 'text-sm text-gray-500 dark:text-gray-400 font-normal mt-1',\n className,\n )}\n {...props}\n >\n {children}\n </p>\n)\n\nexport const CardContent = ({ className, children, ...props }: CardContentProps) => (\n <div className={buildClassName('space-y-3', className)} {...props}>\n {children}\n </div>\n)\n\nexport const CardFooter = ({\n className,\n bordered = false,\n children,\n ...props\n}: CardFooterProps) => (\n <div\n className={buildClassName(\n 'flex items-center justify-end gap-3 mt-4',\n bordered && 'pt-4 border-t border-gray-200 dark:border-gray-800',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n)\n\nexport const CardMedia = ({\n className,\n aspectRatio = 'video',\n alt = '',\n ...props\n}: CardMediaProps) => (\n <div className={buildClassName('overflow-hidden -mx-5 -mt-5 mb-4 sm:-mx-6 sm:-mt-6', className)}>\n <img\n alt={alt}\n className={buildClassName(\n 'w-full object-cover',\n ASPECT_RATIO_CLASS[aspectRatio] || ASPECT_RATIO_CLASS.video,\n )}\n {...props}\n />\n </div>\n)\n\nCard.Header = CardHeader\nCard.Title = CardTitle\nCard.Description = CardDescription\nCard.Content = CardContent\nCard.Body = CardContent\nCard.Footer = CardFooter\nCard.Media = CardMedia\n\nCard.displayName = 'Card'\n","import React, { forwardRef, type LabelHTMLAttributes } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\n\ninterface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n htmlFor?: string\n}\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>((props, ref) => {\n const { className, children, ...labelProps } = props\n return (\n <label\n ref={ref}\n {...labelProps}\n className={buildClassName(\n 'block text-sm font-medium text-gray-600 dark:text-gray-300',\n className,\n )}\n >\n {children}\n </label>\n )\n})\n\nLabel.displayName = 'Label'\n","import { forwardRef, useEffect, useId, useRef, useImperativeHandle } from 'react'\nimport { Label } from '../Label'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { CheckboxProps, CheckboxSize, CheckboxVariant } from './Checkbox.types'\nimport { TextContent } from '../TextContent'\n\nconst sizeStyles: Record<\n CheckboxSize,\n { box: string; svg: string; text: string; subtext: string }\n> = {\n sm: {\n box: 'size-3.5',\n svg: 'h-2.5 w-2.5',\n text: 'text-xs',\n subtext: 'text-[11px]',\n },\n md: {\n box: 'size-4.5',\n svg: 'h-3.25 w-3.25',\n text: 'text-sm',\n subtext: 'text-xs',\n },\n lg: {\n box: 'size-5.5',\n svg: 'h-4 w-4',\n text: 'text-base',\n subtext: 'text-sm',\n },\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {\n const {\n id,\n name,\n label,\n labelClass = '',\n wrapperClass = '',\n containerClass = '',\n error,\n helperText,\n disabled = false,\n indeterminate = false,\n size = 'md',\n variant = 'default',\n description,\n className = '',\n checked,\n onChange,\n ...rest\n } = props\n\n const generatedId = useId()\n const checkboxId = id ?? name ?? generatedId\n\n const innerRef = useRef<HTMLInputElement>(null)\n useImperativeHandle(ref, () => innerRef.current as HTMLInputElement)\n\n useEffect(() => {\n if (innerRef.current) {\n innerRef.current.indeterminate = Boolean(indeterminate)\n }\n }, [indeterminate])\n\n const currentSize = sizeStyles[size] || sizeStyles.md\n const isCard = variant === 'card'\n\n return (\n <div className={buildClassName(wrapperClass)}>\n <div\n className={buildClassName(\n isCard\n ? 'rounded-xl border p-3.5 transition-all duration-150 relative'\n : 'flex items-start',\n isCard &&\n (disabled\n ? 'border-gray-200 dark:border-gray-800 bg-gray-50/50 dark:bg-gray-900/40 opacity-70'\n : checked || indeterminate\n ? 'border-blue-500/80 bg-blue-50/30 dark:bg-blue-950/20 dark:border-blue-500/60 shadow-xs'\n : 'border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-900 hover:border-gray-300 dark:hover:border-gray-700 shadow-2xs'),\n containerClass,\n )}\n >\n <label\n htmlFor={checkboxId}\n className={buildClassName(\n 'inline-flex items-start relative select-none w-full',\n disabled ? 'cursor-not-allowed opacity-70' : 'cursor-pointer',\n )}\n >\n {/* Custom Checkbox Input Container */}\n <div className=\"relative inline-flex items-center shrink-0 pt-0.5\">\n <input\n ref={innerRef}\n {...rest}\n id={checkboxId}\n name={name}\n type=\"checkbox\"\n disabled={disabled}\n checked={checked}\n onChange={onChange}\n aria-checked={indeterminate ? 'mixed' : checked}\n className={buildClassName(\n 'peer cursor-pointer transition-all appearance-none rounded',\n currentSize.box,\n 'border focus:ring-2 focus:ring-offset-2',\n 'checked:bg-blue-600 checked:border-blue-600 dark:checked:bg-blue-600 dark:checked:border-blue-600',\n 'focus:ring-[var(--ui-focus-ring)] dark:focus:ring-offset-gray-900',\n disabled\n ? 'border-gray-200 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 pointer-events-none'\n : 'bg-white dark:bg-gray-700 border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500 hover:shadow-xs',\n indeterminate &&\n '!bg-blue-600 !border-blue-600 dark:!bg-blue-600 dark:!border-blue-600',\n className,\n )}\n />\n\n {/* Checkmark SVG Icon — Rendered only when NOT indeterminate */}\n {!indeterminate && (\n <span\n className={buildClassName(\n 'absolute text-white pointer-events-none transition-opacity top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2',\n checked !== undefined\n ? checked\n ? 'opacity-100'\n : 'opacity-0'\n : 'opacity-0 peer-checked:opacity-100',\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={currentSize.svg}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n ></path>\n </svg>\n </span>\n )}\n\n {/* Indeterminate Minus SVG Icon — Rendered only when indeterminate */}\n {indeterminate && (\n <span className=\"absolute text-white pointer-events-none top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 opacity-100 z-10\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={currentSize.svg}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4 10a1 1 0 011-1h10a1 1 0 110 2H5a1 1 0 01-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n )}\n </div>\n\n {/* Label & Description Column */}\n {(label || description) && (\n <div className=\"ml-2.5 flex flex-col justify-center min-w-0 flex-1\">\n {label && (\n <Label\n htmlFor={checkboxId}\n className={buildClassName(\n disabled\n ? 'cursor-not-allowed text-gray-400 dark:text-gray-500'\n : 'cursor-pointer text-gray-800 dark:text-gray-200 font-medium',\n currentSize.text,\n labelClass,\n )}\n >\n {label}\n </Label>\n )}\n\n {description && (\n <span\n className={buildClassName(\n 'mt-0.5 text-gray-500 dark:text-gray-400 font-normal leading-normal',\n currentSize.subtext,\n )}\n >\n {description}\n </span>\n )}\n </div>\n )}\n </label>\n </div>\n\n {/* Helper text or error message */}\n {(error || helperText) && (\n <div className=\"mt-1.5 ml-0.5\">\n {error ? (\n <TextContent error small>\n {error}\n </TextContent>\n ) : (\n <TextContent muted small>\n {helperText}\n </TextContent>\n )}\n </div>\n )}\n </div>\n )\n})\n\nCheckbox.displayName = 'Checkbox'\n","import { useId, useMemo, useState, type ChangeEvent } from 'react'\nimport { Checkbox } from '../Checkbox'\nimport { Label } from '../Label'\nimport { BodyText } from '../BodyText'\nimport { TextContent } from '../TextContent'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { CheckboxGroupItem, CheckboxGroupProps } from './CheckboxGroup.types'\n\nconst columnClasses: Record<number, string> = {\n 1: 'grid grid-cols-1 gap-3',\n 2: 'grid grid-cols-1 sm:grid-cols-2 gap-3',\n 3: 'grid grid-cols-1 sm:grid-cols-3 gap-3',\n 4: 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3',\n}\n\nexport const CheckboxGroup = <T,>(props: CheckboxGroupProps<T>) => {\n const {\n name,\n options,\n label,\n labelClass = '',\n labelWrapperClass = '',\n labelHint,\n containerClass = '',\n value: controlledValue,\n defaultValue,\n onChange,\n inline = false,\n columns,\n size = 'md',\n variant = 'default',\n showSelectAll = false,\n selectAllLabel = 'Select All',\n error,\n helperText,\n disabled = false,\n } = props\n\n const groupId = useId()\n const [internalValue, setInternalValue] = useState<T[]>(defaultValue || [])\n\n const isControlled = controlledValue !== undefined\n const currentValue = isControlled ? controlledValue : internalValue\n\n const items = useMemo(\n () =>\n options.map((opt) =>\n typeof opt === 'string' ? ({ label: opt, value: opt } as CheckboxGroupItem<T>) : opt,\n ),\n [options],\n )\n\n const enabledItems = useMemo(\n () => items.filter((i) => !i.disabled && !disabled),\n [items, disabled],\n )\n\n // Select All State calculation\n const allSelected = useMemo(() => {\n if (!enabledItems.length) return false\n return enabledItems.every((item) => currentValue.includes(item.value))\n }, [enabledItems, currentValue])\n\n const isIndeterminate = useMemo(() => {\n if (allSelected) return false\n return enabledItems.some((item) => currentValue.includes(item.value))\n }, [allSelected, enabledItems, currentValue])\n\n const handleSelectAllChange = (e: ChangeEvent<HTMLInputElement>) => {\n let updated: T[]\n if (allSelected || isIndeterminate) {\n const enabledValues = new Set(enabledItems.map((i) => i.value))\n updated = currentValue.filter((v) => !enabledValues.has(v))\n } else {\n const enabledValues = enabledItems.map((i) => i.value)\n const uniqueSet = new Set([...currentValue, ...enabledValues])\n updated = Array.from(uniqueSet)\n }\n\n if (!isControlled) {\n setInternalValue(updated)\n }\n onChange?.(updated, e)\n }\n\n const handleGroupChange = (e: ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n const checked = e.target.checked\n\n const matched = items.find((i) => String(i.value) === raw)\n const itemValue = matched ? matched.value : (raw as unknown as T)\n\n let updated: T[]\n if (checked) {\n updated = [...currentValue, itemValue]\n } else {\n updated = currentValue.filter((v) => v !== itemValue)\n }\n\n if (!isControlled) {\n setInternalValue(updated)\n }\n onChange?.(updated, e)\n }\n\n const layoutClass = columns\n ? columnClasses[columns]\n : inline\n ? 'flex flex-wrap gap-3'\n : 'flex flex-col gap-3'\n\n return (\n <div className={buildClassName('mb-3 space-y-3', containerClass)}>\n {label && (\n <div className={buildClassName('flex items-center justify-between', labelWrapperClass)}>\n <Label className={labelClass}>{label}</Label>\n {labelHint && (\n <BodyText muted small>\n {labelHint}\n </BodyText>\n )}\n </div>\n )}\n\n {/* Select All Checkbox Header */}\n {showSelectAll && items.length > 0 && (\n <div className=\"pb-1 border-b border-gray-200 dark:border-gray-800\">\n <Checkbox\n id={`${groupId}-select-all`}\n label={selectAllLabel}\n size={size}\n variant={variant}\n checked={allSelected}\n indeterminate={isIndeterminate}\n disabled={disabled || enabledItems.length === 0}\n onChange={handleSelectAllChange}\n />\n </div>\n )}\n\n {/* Group Items Layout */}\n <div className={layoutClass}>\n {items.map((item, index) => {\n const key =\n typeof item.value === 'string' || typeof item.value === 'number' ? item.value : index\n\n return (\n <Checkbox\n key={key}\n name={name}\n id={`${groupId}-${String(item.value)}`}\n label={item.label}\n description={item.description}\n value={String(item.value)}\n size={size}\n variant={variant}\n disabled={disabled || item.disabled}\n checked={currentValue.includes(item.value)}\n onChange={handleGroupChange}\n />\n )\n })}\n </div>\n\n {/* Group-level Error or Helper Text */}\n {(error || helperText) && (\n <div className=\"mt-1.5 ml-0.5\">\n {error ? (\n <TextContent error small>\n {error}\n </TextContent>\n ) : (\n <TextContent muted small>\n {helperText}\n </TextContent>\n )}\n </div>\n )}\n </div>\n )\n}\n\nCheckboxGroup.displayName = 'CheckboxGroup'\n","import React from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type {\n EmptyTableRowProps,\n TableProps,\n TableBodyProps,\n TableCellProps,\n TableFootProps,\n TableHeaderCellProps,\n TableHeadProps,\n TableRowLoaderProps,\n TableRowProps,\n} from './Table.types'\n\nconst TEXT_ALIGN = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n}\n\nconst TABLE_LAYOUT = {\n fixed: 'table-fixed',\n auto: 'table-auto',\n}\n\n/* ----------------------------------------------\n * Loader Rows\n * ---------------------------------------------- */\nconst TableRowLoader: React.FC<TableRowLoaderProps> = ({ colSize, rowSize }) => (\n <>\n {Array.from({ length: rowSize }).map((_, rowIdx) => (\n <TableRow key={rowIdx} className=\"animate-pulse\">\n {Array.from({ length: colSize }).map((_, colIdx) => (\n <TableCell key={colIdx}>\n <div className=\"flex items-center h-6\">\n <div className=\"h-4 bg-gray-300 dark:bg-gray-700 shimmer rounded w-full\" />\n </div>\n </TableCell>\n ))}\n </TableRow>\n ))}\n </>\n)\n\n/* ----------------------------------------------\n * Table\n * ---------------------------------------------- */\nexport const Table: React.FC<TableProps> = ({\n children,\n layout = 'auto',\n className = '',\n caption,\n}) => (\n <table\n className={buildClassName(\n 'border-collapse w-full divide-y divide-[var(--ui-border)]',\n TABLE_LAYOUT[layout],\n className,\n )}\n >\n {caption && (\n <caption className=\"mb-2 text-sm text-left text-gray-500 dark:text-gray-400\">\n {caption}\n </caption>\n )}\n {children}\n </table>\n)\n\n/* ----------------------------------------------\n * Head\n * ---------------------------------------------- */\nexport const TableHead: React.FC<TableHeadProps> = ({ children, className = '' }) => (\n <thead\n className={buildClassName(\n 'text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-800 dark:text-gray-300',\n className,\n )}\n >\n <tr>{children}</tr>\n </thead>\n)\n\n/* ----------------------------------------------\n * Body\n * ---------------------------------------------- */\nexport const TableBody: React.FC<TableBodyProps> = ({\n children,\n loading,\n colSize = 1,\n rowSize = 5,\n className,\n}) => (\n <tbody\n className={buildClassName(\n 'text-sm text-gray-700 dark:text-white divide-y divide-[var(--ui-border)]',\n className,\n )}\n >\n {loading ? <TableRowLoader colSize={colSize} rowSize={rowSize} /> : children}\n </tbody>\n)\n\n/* ----------------------------------------------\n * Foot\n * ---------------------------------------------- */\nexport const TableFoot: React.FC<TableFootProps> = ({ children }) => (\n <tfoot>\n <tr>{children}</tr>\n </tfoot>\n)\n\n/* ----------------------------------------------\n * Rows\n * ---------------------------------------------- */\nexport const TableRow: React.FC<TableRowProps> = ({\n children,\n hoverable = false,\n className,\n ...props\n}) => (\n <tr\n {...props}\n className={buildClassName(\n 'last:border-b border-[var(--ui-border)]',\n hoverable && 'group',\n className,\n )}\n >\n {children}\n </tr>\n)\n\n/* ----------------------------------------------\n * Cells\n * ---------------------------------------------- */\nexport const TableCell: React.FC<TableCellProps> = ({\n children,\n align = 'left',\n className,\n ...props\n}) => (\n <td\n {...props}\n className={buildClassName(\n 'px-3 py-3 first:pl-4 last:pr-4 bg-white dark:bg-gray-900 group-hover:bg-gray-50 group-hover:dark:bg-gray-800',\n TEXT_ALIGN[align],\n className,\n )}\n >\n <div className=\"leading-normal\">{children}</div>\n </td>\n)\n\nexport const TableHeaderCell: React.FC<TableHeaderCellProps> = ({\n children,\n align = 'left',\n className,\n ...props\n}) => (\n <th\n {...props}\n className={buildClassName(\n 'px-3 py-3 first:pl-4 last:pr-4 tracking-wider whitespace-nowrap text-gray-800 dark:text-gray-300',\n TEXT_ALIGN[align],\n className,\n )}\n >\n {children}\n </th>\n)\n\n/* ----------------------------------------------\n * Empty Row\n * ---------------------------------------------- */\nexport const EmptyTableRow: React.FC<EmptyTableRowProps> = ({\n children,\n colSpan = 1,\n contentClass,\n}) => (\n <tr className=\"bg-white dark:bg-gray-900\">\n <td colSpan={colSpan} className=\"px-4 py-8\">\n <div\n className={buildClassName(\n 'p-6 text-center space-y-3 flex flex-col items-center justify-center',\n contentClass,\n )}\n >\n {children}\n </div>\n </td>\n </tr>\n)\n","import { UsePaginationProps } from './Pagination.types'\n\nexport const DOTS = '...'\n\nexport const usePagination = ({\n totalPages,\n currentPage,\n siblingCount = 1, // number of pages to show around currentPage\n}: UsePaginationProps): (number | string)[] => {\n const totalPageNumbers = siblingCount * 2 + 5\n\n if (totalPageNumbers >= totalPages) {\n return Array.from({ length: totalPages }, (_, i) => i + 1)\n }\n\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1)\n const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages)\n\n const shouldShowLeftDots = leftSiblingIndex > 2\n const shouldShowRightDots = rightSiblingIndex < totalPages - 1\n\n const firstPageIndex = 1\n const lastPageIndex = totalPages\n\n if (!shouldShowLeftDots && shouldShowRightDots) {\n const leftRange = Array.from({ length: 3 + 2 * siblingCount }, (_, i) => i + 1)\n return [...leftRange, DOTS, totalPages]\n }\n\n if (shouldShowLeftDots && !shouldShowRightDots) {\n const rightRange = Array.from(\n { length: 3 + 2 * siblingCount },\n (_, i) => totalPages - (3 + 2 * siblingCount) + 1 + i,\n )\n return [firstPageIndex, DOTS, ...rightRange]\n }\n\n if (shouldShowLeftDots && shouldShowRightDots) {\n const middleRange = Array.from({ length: 2 * siblingCount + 1 }, (_, i) => leftSiblingIndex + i)\n return [firstPageIndex, DOTS, ...middleRange, DOTS, lastPageIndex]\n }\n\n return []\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-chevron-left-icon lucide-chevron-left\"><path d=\"m15 18-6-6 6-6\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-chevron-right-icon lucide-chevron-right\"><path d=\"m9 18 6-6-6-6\"/></svg>","import React from 'react'\nimport { Button } from '../Button'\nimport { usePagination, DOTS } from './usePagination'\nimport { buildClassName } from '../../utils/build-classname'\nimport ChevronLeftIcon from '../Icons/ChevronLeft.svg'\nimport ChevronRightIcon from '../Icons/ChevronRight.svg'\nimport type { PaginationProps } from './Pagination.types'\n\nexport const Pagination: React.FC<PaginationProps> = ({\n page: currentPage,\n limit,\n total,\n onChange,\n className,\n ellipsis = true, // Default to showing ellipsis\n}) => {\n const pages = new Array(Math.ceil(total / limit)).fill(null).map((_, i) => i + 1)\n const isFirstPage = currentPage === 1\n const isLastPage = total === 0 || pages.length === currentPage\n\n const range = usePagination({ totalPages: pages.length, currentPage })\n\n const handlePageChange = (nextVal: number) => {\n if (nextVal === currentPage) return\n\n onChange({ page: nextVal })\n }\n\n if (ellipsis) {\n return (\n <div\n data-testid=\"pagination-container\"\n className={buildClassName(\n 'flex items-center justify-between bg-white dark:bg-gray-800 px-4 py-3 sm:px-6',\n className,\n )}\n >\n <div className=\"flex flex-1 justify-between sm:hidden\">\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isFirstPage}\n onClick={() => handlePageChange(currentPage - 1)}\n data-testid=\"ellipsis-mobile-prev-btn\"\n >\n <span>Previous</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isLastPage}\n onClick={() => handlePageChange(currentPage + 1)}\n data-testid=\"ellipsis-mobile-next-btn\"\n >\n <span>Next</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n </div>\n <div className=\"hidden sm:flex sm:flex-1 sm:items-center sm:justify-between\">\n <p\n data-testid=\"pagination-summary\"\n className=\"text-sm text-gray-600 dark:text-gray-400 flex items-center gap-1\"\n >\n Showing\n <span className=\"font-medium\">\n {total === 0 ? 0 : Math.max(currentPage * limit - limit + 1, 1)}\n </span>\n to\n <span className=\"font-medium\">{Math.min(currentPage * limit, total)}</span>\n of\n <span className=\"font-medium\">{total}</span>\n results\n </p>\n <ul className=\"flex items-center space-x-2 text-sm\">\n <li>\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isFirstPage}\n onClick={() => handlePageChange(currentPage - 1)}\n data-testid=\"ellipsis-prev-btn\"\n >\n Prev\n </Button>\n </li>\n {range.map((page, idx) => {\n if (page === DOTS) {\n return (\n <li\n key={`${page}-${idx}`}\n data-testid={`page-${page}`}\n className=\"px-2 py-1 text-gray-400\"\n >\n &hellip;\n </li>\n )\n }\n return (\n <li key={`${page}-${idx}`}>\n <Button\n size=\"xs\"\n theme={page === currentPage ? 'primary' : 'secondary'}\n variant={page === currentPage ? 'default' : 'plain'}\n aria-current={page === currentPage ? 'page' : undefined}\n onClick={() => handlePageChange(page as number)}\n >\n {page}\n </Button>\n </li>\n )\n })}\n <li>\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isLastPage}\n onClick={() => handlePageChange(currentPage + 1)}\n data-testid=\"ellipsis-next-btn\"\n >\n Next\n </Button>\n </li>\n </ul>\n </div>\n </div>\n )\n }\n\n return (\n <div\n data-testid=\"pagination-container\"\n className={buildClassName(\n 'flex items-center justify-between bg-white dark:bg-gray-800 px-4 py-3 sm:px-6',\n className,\n )}\n >\n <div className=\"flex flex-1 justify-between sm:hidden\">\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isFirstPage}\n onClick={() => handlePageChange(currentPage - 1)}\n data-testid=\"mobile-prev-btn\"\n >\n <span>Previous</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isLastPage}\n onClick={() => handlePageChange(currentPage + 1)}\n data-testid=\"mobile-next-btn\"\n >\n <span>Next</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n </div>\n <div className=\"hidden sm:flex sm:flex-1 sm:items-center sm:justify-between\">\n <p\n data-testid=\"pagination-summary\"\n className=\"text-sm text-gray-600 dark:text-gray-400 flex items-center gap-1\"\n >\n Showing\n <span className=\"font-medium\">\n {total === 0 ? 0 : Math.max(currentPage * limit - limit + 1, 1)}\n </span>\n to\n <span className=\"font-medium\">{Math.min(currentPage * limit, total)}</span>\n of\n <span className=\"font-medium\">{total}</span>\n results\n </p>\n <nav className=\"isolate inline-flex items-center rounded-md\" aria-label=\"Pagination\">\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isFirstPage}\n onClick={() => handlePageChange(currentPage - 1)}\n data-testid=\"prev-btn\"\n >\n <span className=\"sr-only\">Previous</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n {pages.map((page) => (\n <Button\n key={page}\n size=\"xs\"\n theme={page === currentPage ? 'primary' : 'secondary'}\n variant={page === currentPage ? 'default' : 'plain'}\n aria-current={page === currentPage ? 'page' : undefined}\n onClick={() => handlePageChange(page)}\n >\n <span className=\"size-4 block\">{page}</span>\n </Button>\n ))}\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isLastPage}\n onClick={() => handlePageChange(currentPage + 1)}\n data-testid=\"next-btn\"\n >\n <span className=\"sr-only\">Next</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n </nav>\n </div>\n </div>\n )\n}\n","export function get<T = any, R = any>(obj: T, path: string, defaultValue?: R): R {\n if (!path) return defaultValue as R\n\n const keys = path\n .replace(/\\[(\\d+)]/g, '.$1') // convert [0] to .0\n .split('.')\n .filter(Boolean) // remove empty parts\n\n return (\n keys.reduce<any>((acc, key) => {\n if (acc !== null && acc !== undefined && Object.prototype.hasOwnProperty.call(acc, key)) {\n return acc[key]\n }\n return undefined\n }, obj) ?? defaultValue\n )\n}\n","import { useCallback, useMemo, useState } from 'react'\nimport type { DataValueType, Sorting, SortQuery } from './DataTable.types'\n\n/**\n * Compute the next sorting direction for a column.\n * - string: undefined → asc → desc → undefined\n * - number/date: undefined → 1 → -1 → undefined\n */\nexport const nextSortDirection = (\n prev: Sorting | undefined,\n type: 'string' | 'number' | 'date' = 'string',\n): Sorting | undefined => {\n if (type === 'string') {\n if (!prev) return 'asc'\n if (prev === 'asc') return 'desc'\n return undefined\n }\n\n // number / date\n if (!prev) return '1'\n if (prev === '1') return '-1'\n return undefined\n}\n\n/**\n * Update the sort query object for a table column.\n * Toggles sort direction, removing key when reset.\n */\nexport const updateSortQuery = (\n sortQuery: SortQuery,\n name: string,\n type: DataValueType = 'string',\n): SortQuery => {\n const next = nextSortDirection(sortQuery[name], type)\n\n // Shallow clone once\n const updated = { ...sortQuery }\n\n if (next == null) {\n delete updated[name]\n } else {\n updated[name] = next\n }\n\n return updated\n}\n\n/** Options for {@link useRowSelection}. */\nexport interface UseRowSelectionOptions<T> {\n items: T[]\n getKey: (item: T, idx: number) => string | number\n selectedRowKeys?: Array<string | number>\n defaultSelectedRowKeys?: Array<string | number>\n onSelectionChange?: (selectedRowKeys: Array<string | number>, selectedItems: T[]) => void\n isRowSelectable?: (item: T) => boolean\n}\n\n/**\n * Shared row-selection state/behaviour used by DataTable and VirtualizedDataTable.\n * Supports controlled (`selectedRowKeys`) and uncontrolled (`defaultSelectedRowKeys`) usage.\n */\nexport const useRowSelection = <T>({\n items,\n getKey,\n selectedRowKeys,\n defaultSelectedRowKeys = [],\n onSelectionChange,\n isRowSelectable,\n}: UseRowSelectionOptions<T>) => {\n const [internalKeys, setInternalKeys] = useState<Array<string | number>>(defaultSelectedRowKeys)\n const isControlled = selectedRowKeys !== undefined\n const keys = isControlled ? selectedRowKeys : internalKeys\n const keySet = useMemo(() => new Set(keys), [keys])\n\n const selectableEntries = useMemo(\n () =>\n items\n .map((item, idx) => ({ item, key: getKey(item, idx) }))\n .filter(({ item }) => !isRowSelectable || isRowSelectable(item)),\n [items, getKey, isRowSelectable],\n )\n\n const emit = useCallback(\n (nextKeys: Array<string | number>) => {\n if (!isControlled) setInternalKeys(nextKeys)\n const nextKeySet = new Set(nextKeys)\n const nextItems = items.filter((item, idx) => nextKeySet.has(getKey(item, idx)))\n onSelectionChange?.(nextKeys, nextItems)\n },\n [isControlled, items, getKey, onSelectionChange],\n )\n\n const toggleRow = useCallback(\n (key: string | number) => {\n emit(keySet.has(key) ? keys.filter((k) => k !== key) : [...keys, key])\n },\n [keys, keySet, emit],\n )\n\n const allSelected =\n selectableEntries.length > 0 && selectableEntries.every(({ key }) => keySet.has(key))\n const someSelected = !allSelected && selectableEntries.some(({ key }) => keySet.has(key))\n\n const toggleAll = useCallback(() => {\n const selectableKeySet = new Set(selectableEntries.map(({ key }) => key))\n if (allSelected) {\n emit(keys.filter((k) => !selectableKeySet.has(k)))\n } else {\n emit(Array.from(new Set([...keys, ...selectableKeySet])))\n }\n }, [allSelected, selectableEntries, keys, emit])\n\n return {\n selectedKeys: keys,\n isSelected: (key: string | number) => keySet.has(key),\n toggleRow,\n toggleAll,\n allSelected,\n someSelected,\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-wide-narrow-icon lucide-arrow-down-wide-narrow\"><path d=\"m3 16 4 4 4-4\"/><path d=\"M7 20V4\"/><path d=\"M11 4h10\"/><path d=\"M11 8h7\"/><path d=\"M11 12h4\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-narrow-wide-icon lucide-arrow-down-narrow-wide\"><path d=\"m3 16 4 4 4-4\"/><path d=\"M7 20V4\"/><path d=\"M11 4h4\"/><path d=\"M11 8h7\"/><path d=\"M11 12h10\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-az-icon lucide-arrow-down-a-z\"><path d=\"m3 16 4 4 4-4\"/><path d=\"M7 20V4\"/><path d=\"M20 8h-5\"/><path d=\"M15 10V6.5a2.5 2.5 0 0 1 5 0V10\"/><path d=\"M15 14h5l-5 6h5\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-za-icon lucide-arrow-down-z-a\"><path d=\"m3 16 4 4 4-4\"/><path d=\"M7 4v16\"/><path d=\"M15 4h5l-5 6h5\"/><path d=\"M15 20v-3.5a2.5 2.5 0 0 1 5 0V20\"/><path d=\"M20 18h-5\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-up-down-icon lucide-arrow-up-down\"><path d=\"m21 16-4 4-4-4\"/><path d=\"M17 20V4\"/><path d=\"m3 8 4-4 4 4\"/><path d=\"M7 4v16\"/></svg>","import type { SortIconKey, Sorting } from './DataTable.types'\nimport type { ReactNode } from 'react'\n/* Icons */\nimport ArrowDownWideNarrow from '../Icons/ArrowDownWideNarrow.svg'\nimport ArrowDownNarrowWide from '../Icons/ArrowDownNarrowWide.svg'\nimport ArrowDownAZ from '../Icons/ArrowDownAZ.svg'\nimport ArrowDownZA from '../Icons/ArrowDownZA.svg'\nimport ArrowUpDown from '../Icons/ArrowUpDown.svg'\n\nexport const SortIconMap: Record<SortIconKey, ReactNode> = {\n '1': (\n <ArrowDownNarrowWide className=\"size-4 text-gray-400 shrink-0 group-hover:text-gray-800 dark:group-hover:text-white\" />\n ),\n asc: (\n <ArrowDownAZ className=\"size-4 text-gray-400 shrink-0 group-hover:text-gray-800 dark:group-hover:text-white\" />\n ),\n '-1': (\n <ArrowDownWideNarrow className=\"size-4 text-gray-400 shrink-0 group-hover:text-gray-800 dark:group-hover:text-white\" />\n ),\n desc: (\n <ArrowDownZA className=\"size-4 text-gray-400 shrink-0 group-hover:text-gray-800 dark:group-hover:text-white\" />\n ),\n}\n\nexport const getSortIcon = (sort?: Sorting) =>\n sort ? (\n SortIconMap[sort as SortIconKey]\n ) : (\n <ArrowUpDown className=\"size-4 text-gray-400 shrink-0 group-hover:text-gray-800 dark:group-hover:text-white\" />\n )\n","import { useEffect, useRef, useState } from 'react'\nimport {\n EmptyTableRow,\n Table,\n TableBody,\n TableCell,\n TableFoot,\n TableHead,\n TableHeaderCell,\n TableRow,\n} from '../Table'\nimport { buildClassName } from '../../utils/build-classname'\nimport type {\n DataTableProps,\n DataTableColumn,\n DataTableDensity,\n Sorting,\n SortQuery,\n} from './DataTable.types'\nimport { TextContent } from '../TextContent'\nimport { Pagination } from '../Pagination'\nimport { Checkbox } from '../Checkbox'\nimport { get } from '../../utils/get'\nimport { updateSortQuery, useRowSelection } from './DataTable.utils'\nimport { getSortIcon } from './DataTable.icons'\n\nconst DENSITY_CELL_CLASS: Record<DataTableDensity, string> = {\n compact: 'px-2 py-1.5',\n default: '',\n spacious: 'px-4 py-4',\n}\n\nconst autoSortItems = <T,>(items: T[], column: DataTableColumn<T>, sort: Sorting): T[] => {\n const path = column.name\n return [...items].sort((a, b) => {\n const valueA = get(a as Record<string, any>, path)\n const valueB = get(b as Record<string, any>, path)\n\n if (column.type === 'number') {\n const nA = Number(valueA)\n const nB = Number(valueB)\n return sort === 'asc' || sort === '1' ? nA - nB : nB - nA\n }\n\n if (column.type === 'date') {\n const dA = new Date(valueA).getTime()\n const dB = new Date(valueB).getTime()\n return sort === 'asc' || sort === '1' ? dA - dB : dB - dA\n }\n\n const sA = String(valueA).toLowerCase()\n const sB = String(valueB).toLowerCase()\n if (sA < sB) return sort === 'asc' || sort === '1' ? -1 : 1\n if (sA > sB) return sort === 'asc' || sort === '1' ? 1 : -1\n return 0\n })\n}\n\nexport function DataTable<T extends Record<string, any> = Record<string, any>>({\n items,\n columns,\n sorting = {},\n onSort,\n loading,\n pagination,\n setPagination = () => {},\n emptyMessage = 'No data found',\n containerClass = '',\n wrapperClass = '',\n tableClass = '',\n headClass = '',\n footerRow,\n rowKey = 'id',\n onRowClick,\n rowClass,\n density = 'default',\n striped = false,\n layout = 'auto',\n selectable = false,\n selectedRowKeys,\n defaultSelectedRowKeys,\n onSelectionChange,\n isRowSelectable,\n paginationContainerClass,\n}: DataTableProps<T>) {\n const internalSorting = useRef<SortQuery>({})\n const [sortedItems, setSortedItems] = useState(items)\n\n useEffect(() => {\n setSortedItems(items)\n }, [items])\n\n const doAutoSort = (column: DataTableColumn<T>) => {\n internalSorting.current = updateSortQuery(internalSorting.current, column.name, column.type)\n setSortedItems(autoSortItems(items, column, internalSorting.current[column.name]))\n }\n\n const handleSort = (column: DataTableColumn<T>) => {\n if (!column.sortable) return\n onSort ? onSort(column) : doAutoSort(column)\n }\n\n const getKey = (item: T, idx: number): string | number => {\n if (typeof rowKey === 'function') return rowKey(item)\n return (item as any)[rowKey] ?? idx\n }\n\n const getRowClass = (item: T, idx: number): string => {\n if (!rowClass) return ''\n if (typeof rowClass === 'function') return rowClass(item, idx)\n return rowClass\n }\n\n const getCellClass = (column: DataTableColumn<T>, item: T): string => {\n if (!column.cellClass) return ''\n if (typeof column.cellClass === 'function') return column.cellClass(item)\n return column.cellClass\n }\n\n const { isSelected, toggleRow, toggleAll, allSelected, someSelected } = useRowSelection({\n items: sortedItems,\n getKey,\n selectedRowKeys,\n defaultSelectedRowKeys,\n onSelectionChange,\n isRowSelectable,\n })\n\n const densityCellClass = DENSITY_CELL_CLASS[density]\n const colSize = columns.length + (selectable ? 1 : 0)\n\n return (\n <div className={buildClassName('w-full rounded-lg relative', containerClass)}>\n <div\n className={buildClassName(\n 'overflow-x-auto overflow-y-hidden rounded-lg border border-[var(--ui-border)]',\n wrapperClass,\n pagination && 'rounded-b-none border-b-0',\n )}\n >\n <Table\n className={buildClassName('relative w-full max-w-full h-fit', tableClass)}\n layout={layout}\n >\n <TableHead className={headClass}>\n {selectable && (\n <TableHeaderCell\n className={buildClassName('bg-gray-50 dark:bg-gray-800 w-px', densityCellClass)}\n >\n <Checkbox\n aria-label=\"Select all rows\"\n checked={allSelected}\n ref={(el) => {\n if (el) el.indeterminate = someSelected\n }}\n onChange={toggleAll}\n />\n </TableHeaderCell>\n )}\n {columns.map((column) => (\n <TableHeaderCell\n key={column.name}\n align={column.headerAlign}\n style={{ width: column.width || 'auto' }}\n className={buildClassName(\n 'bg-gray-50 dark:bg-gray-800',\n densityCellClass,\n column.sticky === 'left' &&\n 'sticky left-0 z-10 shadow-[2px_0_6px_rgba(0,0,0,0.06)]',\n column.sticky === 'right' &&\n 'sticky right-0 z-10 shadow-[-2px_0_6px_rgba(0,0,0,0.06)]',\n column.headerClass,\n )}\n >\n <TextContent\n role={column.sortable ? 'button' : undefined}\n className={buildClassName(\n 'group',\n column.sortable && 'inline-flex items-center gap-2 cursor-pointer select-none',\n )}\n onClick={() => handleSort(column)}\n >\n <TextContent className=\"shrink-0\">{column.label}</TextContent>\n {column.sortable ? getSortIcon(sorting[column.name]) : null}\n </TextContent>\n </TableHeaderCell>\n ))}\n </TableHead>\n\n <TableBody loading={loading} colSize={colSize} rowSize={pagination?.limit || 5}>\n {!loading && sortedItems.length === 0 ? (\n <EmptyTableRow colSpan={colSize}>{emptyMessage}</EmptyTableRow>\n ) : (\n sortedItems.map((item, idx) => {\n const key = getKey(item, idx)\n const rowSelectable = !isRowSelectable || isRowSelectable(item)\n\n return (\n <TableRow\n key={key}\n className={buildClassName(\n 'group',\n onRowClick && 'cursor-pointer',\n striped && idx % 2 === 1 && 'bg-gray-50 dark:bg-gray-800/40',\n getRowClass(item, idx),\n )}\n onClick={onRowClick ? () => onRowClick(item, idx) : undefined}\n >\n {selectable && (\n <TableCell\n className={buildClassName(\n densityCellClass,\n striped && idx % 2 === 1 && 'bg-gray-50 dark:bg-gray-800/40',\n )}\n >\n <span onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label=\"Select row\"\n checked={isSelected(key)}\n disabled={!rowSelectable}\n onChange={() => toggleRow(key)}\n />\n </span>\n </TableCell>\n )}\n {columns.map((column) => (\n <TableCell\n key={column.name}\n align={column.align}\n className={buildClassName(\n densityCellClass,\n striped && idx % 2 === 1 && 'bg-gray-50 dark:bg-gray-800/40',\n column.sticky === 'left' &&\n 'sticky left-0 z-10 shadow-[2px_0_6px_rgba(0,0,0,0.06)]',\n column.sticky === 'right' &&\n 'sticky right-0 z-10 shadow-[-2px_0_6px_rgba(0,0,0,0.06)]',\n getCellClass(column, item),\n )}\n >\n {column.render\n ? column.render(item)\n : ((get(item, column.name) as any) ?? 'Not set')}\n </TableCell>\n ))}\n </TableRow>\n )\n })\n )}\n </TableBody>\n\n {footerRow && <TableFoot>{footerRow}</TableFoot>}\n </Table>\n </div>\n\n {pagination && (\n <Pagination\n {...pagination}\n className={buildClassName(\n 'rounded-b-lg border-t border-[var(--ui-border)]',\n paginationContainerClass,\n )}\n onChange={setPagination}\n />\n )}\n </div>\n )\n}\n\nDataTable.displayName = 'DataTable'\n","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type {\n HeadingAlign,\n HeadingLevel,\n HeadingSize,\n HeadingTextProps,\n HeadingWeight,\n} from './HeadingText.types'\n\nconst defaultLevelSizeMap: Record<HeadingLevel, string> = {\n 1: 'text-3xl font-bold',\n 2: 'text-2xl font-semibold',\n 3: 'text-xl font-semibold',\n 4: 'text-lg font-medium',\n 5: 'text-base font-medium',\n 6: 'text-sm font-medium',\n}\n\nconst sizeClassMap: Record<HeadingSize, string> = {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n '2xl': 'text-2xl',\n '3xl': 'text-3xl',\n '4xl': 'text-4xl',\n '5xl': 'text-5xl',\n}\n\nconst weightClassMap: Record<HeadingWeight, string> = {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n extrabold: 'font-extrabold',\n}\n\nconst alignClassMap: Record<HeadingAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n}\n\nconst trackingClassMap = {\n tighter: 'tracking-tighter',\n tight: 'tracking-tight',\n normal: 'tracking-normal',\n wide: 'tracking-wide',\n}\n\nconst HeadingTextComponent = forwardRef<HTMLHeadingElement, HeadingTextProps>((props, ref) => {\n const {\n level = 1,\n size,\n weight,\n muted = false,\n error = false,\n success = false,\n warning = false,\n info = false,\n invert = false,\n align,\n tracking,\n truncate = false,\n className,\n children,\n ...rest\n } = props\n\n const tag = `h${Math.min(6, Math.max(1, level))}` as keyof React.JSX.IntrinsicElements\n\n const colorClass = error\n ? 'text-[var(--ui-text-danger)]'\n : success\n ? 'text-[var(--ui-success)]'\n : warning\n ? 'text-[var(--ui-warning)]'\n : info\n ? 'text-[var(--ui-info)]'\n : muted\n ? invert\n ? 'text-gray-300 dark:text-gray-600'\n : 'text-[var(--ui-text-muted)]'\n : invert\n ? 'text-white dark:text-black'\n : 'text-[var(--ui-text)]'\n\n return React.createElement(tag, {\n ref,\n className: buildClassName(\n colorClass,\n size ? sizeClassMap[size] : defaultLevelSizeMap[level],\n weight && weightClassMap[weight],\n align && alignClassMap[align],\n tracking && trackingClassMap[tracking],\n truncate && 'truncate',\n className,\n ),\n ...rest,\n children,\n })\n})\n\nHeadingTextComponent.displayName = 'HeadingText'\n\nconst Title = forwardRef<HTMLHeadingElement, HeadingTextProps>((props, ref) => (\n <HeadingTextComponent ref={ref} level={1} {...props} />\n))\nTitle.displayName = 'HeadingText.Title'\n\nconst SubTitle = forwardRef<HTMLHeadingElement, HeadingTextProps>((props, ref) => (\n <HeadingTextComponent ref={ref} level={2} {...props} />\n))\nSubTitle.displayName = 'HeadingText.SubTitle'\n\nconst SubTitle2 = forwardRef<HTMLHeadingElement, HeadingTextProps>((props, ref) => (\n <HeadingTextComponent ref={ref} level={3} {...props} />\n))\nSubTitle2.displayName = 'HeadingText.SubTitle2'\n\nconst SubTitle3 = forwardRef<HTMLHeadingElement, HeadingTextProps>((props, ref) => (\n <HeadingTextComponent ref={ref} level={4} {...props} />\n))\nSubTitle3.displayName = 'HeadingText.SubTitle3'\n\nconst SubTitle4 = forwardRef<HTMLHeadingElement, HeadingTextProps>((props, ref) => (\n <HeadingTextComponent ref={ref} level={5} {...props} />\n))\nSubTitle4.displayName = 'HeadingText.SubTitle4'\n\nexport const HeadingText = Object.assign(HeadingTextComponent, {\n Title,\n SubTitle,\n SubTitle2,\n SubTitle3,\n SubTitle4,\n})\n","import { forwardRef, useState, type ReactNode } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport { HeadingText } from '../HeadingText'\nimport type { Detail, DetailedInformationProps } from './DetailedInformation.types'\n\nconst COLUMN_GRID_CLASS: Record<number, string> = {\n 1: 'grid-cols-1',\n 2: 'grid grid-cols-1 md:grid-cols-2 gap-x-6 gap-y-3',\n 3: 'grid grid-cols-1 md:grid-cols-3 gap-x-6 gap-y-3',\n 4: 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-x-6 gap-y-3',\n}\n\nfunction CopyableValue({ text, children }: { text: string; children: ReactNode }) {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = async (e: React.MouseEvent) => {\n e.stopPropagation()\n try {\n await navigator.clipboard.writeText(text)\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n } catch {\n // Ignore clipboard error\n }\n }\n\n return (\n <span className=\"inline-flex items-center gap-1.5 group/copy\">\n <span>{children}</span>\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"opacity-0 group-hover/copy:opacity-100 focus:opacity-100 transition-opacity p-0.5 text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 cursor-pointer\"\n title=\"Copy to clipboard\"\n aria-label=\"Copy to clipboard\"\n >\n {copied ? (\n <svg\n className=\"size-3.5 text-emerald-500\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n ) : (\n <svg className=\"size-3.5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\"\n />\n </svg>\n )}\n </button>\n </span>\n )\n}\n\nexport const DetailedInformation = forwardRef<HTMLDivElement, DetailedInformationProps>(\n (props, ref) => {\n const {\n className,\n title,\n subTitle,\n action,\n details = [],\n columns = 1,\n layout = 'horizontal',\n variant = 'flat',\n compact = false,\n bordered = false,\n divider = true,\n emptyValue = '- -',\n titleClass,\n detailsClass,\n labelClass,\n ...divProps\n } = props\n\n const isCard = variant === 'card'\n const isBordered = bordered || variant === 'bordered' || isCard\n const hasTitles = title || subTitle || action\n const filteredDetails = details.filter((detail) => !detail.hidden)\n const isMultiColumn = columns > 1\n\n return (\n <div\n ref={ref}\n className={buildClassName(\n isCard\n ? compact\n ? 'p-3 sm:p-4 bg-gray-50/60 dark:bg-gray-800/40 rounded-2xl border border-gray-200 dark:border-gray-700'\n : 'p-4 sm:p-6 bg-gray-50/60 dark:bg-gray-800/40 rounded-2xl border border-gray-200 dark:border-gray-700'\n : isBordered\n ? compact\n ? 'p-3 sm:p-4 border border-[var(--ui-border)] rounded-2xl'\n : 'p-4 sm:p-6 border border-[var(--ui-border)] rounded-2xl'\n : compact\n ? 'p-2 md:p-3'\n : 'p-3 md:p-4',\n className,\n )}\n {...divProps}\n >\n {hasTitles && (\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <div>\n {title && (\n <HeadingText.SubTitle2 className={buildClassName(titleClass)}>\n {title}\n </HeadingText.SubTitle2>\n )}\n {subTitle && (\n <p className=\"mt-1 max-w-2xl text-sm/6 text-gray-500 dark:text-gray-400 font-normal\">\n {subTitle}\n </p>\n )}\n </div>\n {action && <div className=\"shrink-0 flex items-center\">{action}</div>}\n </div>\n )}\n\n {filteredDetails.length ? (\n <div\n className={buildClassName(\n 'border-[var(--ui-border-muted)]',\n hasTitles && !isMultiColumn && 'border-t pt-2',\n detailsClass,\n )}\n >\n <dl\n className={buildClassName(\n COLUMN_GRID_CLASS[columns] || COLUMN_GRID_CLASS[1],\n !isMultiColumn && divider && 'divide-y divide-[var(--ui-border-muted)]',\n )}\n >\n {filteredDetails.map((detail, index) => {\n const itemFallback = detail.emptyValue ?? emptyValue\n const hasValue =\n detail.value !== undefined && detail.value !== null && detail.value !== ''\n const displayValue = hasValue ? detail.value : itemFallback\n const copyText =\n typeof detail.value === 'string' || typeof detail.value === 'number'\n ? String(detail.value)\n : ''\n\n const isVertical = layout === 'vertical' || isMultiColumn\n\n return (\n <div\n key={detail.label || index}\n className={buildClassName(\n isMultiColumn && isCard\n ? compact\n ? 'p-3 bg-white dark:bg-gray-900 rounded-xl border border-gray-200/80 dark:border-gray-700/80 shadow-2xs flex flex-col gap-1'\n : 'p-4 bg-white dark:bg-gray-900 rounded-xl border border-gray-200/80 dark:border-gray-700/80 shadow-2xs flex flex-col gap-1'\n : isVertical\n ? 'flex flex-col gap-1 py-2 px-1'\n : 'grid grid-cols-3 gap-4 items-center py-2.5 px-1',\n compact && !isMultiColumn ? 'py-1.5' : '',\n )}\n >\n <dt\n className={buildClassName(\n 'text-sm/6 font-medium text-gray-900 dark:text-gray-100 flex items-center gap-1.5',\n labelClass,\n detail.labelClass,\n )}\n >\n {detail.icon && <span className=\"shrink-0 text-gray-400\">{detail.icon}</span>}\n <span>{detail.label}</span>\n {detail.helpText && (\n <span\n className=\"text-xs text-gray-400 font-normal cursor-help\"\n title={detail.helpText}\n >\n (?)\n </span>\n )}\n </dt>\n <dd\n className={buildClassName(\n 'text-sm/6 text-gray-700 dark:text-gray-300',\n !isVertical && 'sm:col-span-2 sm:mt-0',\n detail.contentClass,\n )}\n >\n {detail.copyable && copyText ? (\n <CopyableValue text={copyText}>{displayValue}</CopyableValue>\n ) : (\n displayValue\n )}\n </dd>\n </div>\n )\n })}\n </dl>\n </div>\n ) : null}\n </div>\n )\n },\n)\n\nDetailedInformation.displayName = 'DetailedInformation'\n","import React, { type HTMLAttributes, type JSX, type JSXElementConstructor } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\n\nexport const Dot: React.FC<\n HTMLAttributes<HTMLElement> & {\n as?: keyof JSX.IntrinsicElements | JSXElementConstructor<any>\n }\n> = ({ as = 'span', className, ...props }) =>\n React.createElement(as, {\n className: buildClassName(\n 'inline-block rounded-full bg-gray-500 dark:bg-gray-300',\n 'w-1 h-1',\n className,\n ),\n ...props,\n })\n","import React from 'react'\nimport { Dialog, DialogBackdrop, DialogPanel, DialogTitle } from '@headlessui/react'\nimport { buildClassName } from '../../utils/build-classname'\nimport { Button } from '../Button'\nimport ChevronLeftIcon from '../Icons/ChevronLeft.svg'\nimport XIcon from '../Icons/X.svg'\nimport type { AlignmentMap, DrawerProps, SizeMap } from './Drawer.types'\n\nconst alignmentMap: AlignmentMap = {\n center: 'items-center justify-center h-full',\n start: 'justify-start h-full',\n end: 'justify-end h-full',\n top: 'items-start justify-center w-full',\n bottom: 'items-end justify-center h-full',\n}\n\nconst panelAlignmentMap: AlignmentMap = {\n center: 'data-[closed]:scale-95 rounded-2xl',\n start: 'data-[closed]:-translate-x-1/2 rounded-r-2xl',\n end: 'data-[closed]:translate-x-1/2 rounded-l-2xl',\n top: 'data-[closed]:-translate-y-1/2 rounded-b-2xl',\n bottom: 'data-[closed]:translate-y-1/2 rounded-t-2xl md:rounded-t-3xl max-h-[92svh]',\n}\n\nconst panelSizeMap: SizeMap = {\n xs: 'max-w-xs',\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n '2xl': 'max-w-2xl',\n full: 'w-full',\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n isOpen,\n onClose = () => {},\n closeOnOutsideClick = true,\n align = 'end',\n size = 'md',\n backdrop = true,\n title,\n description,\n children,\n footer,\n footerSticky = false,\n panelClass = '',\n contentClass = '',\n titleClass = '',\n descriptionClass = '',\n titleSticky = false,\n showBackButton = false,\n showCloseButton = true,\n dragHandle,\n}) => {\n const showTitleSection = Boolean(title || description || showBackButton || showCloseButton)\n const shouldShowDragHandle = dragHandle ?? align === 'bottom'\n\n const handleDialogClose = () => {\n if (closeOnOutsideClick) {\n onClose?.()\n }\n }\n\n return (\n <Dialog\n open={isOpen}\n as=\"div\"\n className=\"relative z-50 focus:outline-none\"\n onClose={handleDialogClose}\n transition\n >\n {backdrop && (\n <DialogBackdrop className=\"fixed inset-0 bg-black/40 backdrop-blur-xs transition-opacity duration-200\" />\n )}\n\n <div className=\"fixed inset-0 w-screen h-[100svh]\">\n <div className={buildClassName('flex', alignmentMap[align])}>\n <DialogPanel\n transition\n className={buildClassName(\n 'w-full max-w-full bg-white dark:bg-gray-800 shadow-xl flex flex-col min-w-0',\n 'overflow-y-auto overflow-x-hidden duration-200 ease-out data-[closed]:opacity-0',\n panelAlignmentMap[align],\n panelSizeMap[size],\n panelClass,\n )}\n >\n {/* Top drag handle indicator for mobile bottom sheet */}\n {shouldShowDragHandle && (\n <div\n className=\"w-12 h-1.5 rounded-full bg-gray-300 dark:bg-gray-600 mx-auto my-2.5 shrink-0 cursor-grab\"\n data-testid=\"drawer-drag-handle\"\n />\n )}\n\n {/* Header Section */}\n {showTitleSection && (\n <div\n className={buildClassName(\n 'space-y-1 py-3 px-4 md:px-6 flex flex-col border-b border-gray-100 dark:border-gray-700/60 shrink-0',\n titleSticky && 'sticky top-0 bg-white dark:bg-gray-800 z-10',\n )}\n >\n <div className=\"flex items-center justify-between gap-3 min-w-0\">\n <div className=\"flex items-center gap-2 min-w-0 flex-1\">\n {showBackButton && (\n <Button\n iconOnly\n aria-label=\"Back\"\n variant=\"plain\"\n theme=\"secondary\"\n size=\"xs\"\n onClick={onClose}\n >\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n )}\n {title && (\n <DialogTitle\n as=\"h3\"\n className={buildClassName(\n 'text-lg font-semibold text-gray-900 dark:text-white truncate tracking-tight min-w-0',\n titleClass,\n )}\n >\n {title}\n </DialogTitle>\n )}\n </div>\n\n {showCloseButton && (\n <Button\n iconOnly\n aria-label=\"Close drawer\"\n variant=\"plain\"\n theme=\"secondary\"\n size=\"xs\"\n onClick={onClose}\n className=\"rounded-full text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 shrink-0\"\n >\n <XIcon className=\"size-4\" />\n </Button>\n )}\n </div>\n\n {description && (\n <p\n className={buildClassName(\n 'text-sm text-gray-500 dark:text-gray-400 font-normal truncate',\n descriptionClass,\n )}\n >\n {description}\n </p>\n )}\n </div>\n )}\n\n {/* Content Body */}\n <div className={buildClassName('flex-1 p-4 md:p-6 space-y-4 min-w-0', contentClass)}>\n {children}\n </div>\n\n {/* Footer Section */}\n {footer && (\n <div\n className={buildClassName(\n 'p-4 border-t border-gray-100 dark:border-gray-700/60 bg-gray-50/50 dark:bg-gray-800/80 shrink-0 min-w-0',\n footerSticky && 'sticky bottom-0 z-10',\n )}\n >\n {footer}\n </div>\n )}\n </DialogPanel>\n </div>\n </div>\n </Dialog>\n )\n}\n\nDrawer.displayName = 'Drawer'\n","import React, { Fragment, cloneElement, isValidElement } from 'react'\nimport { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { DropdownItem, DropdownProps } from './Dropdown.types'\n\nconst WIDTH_CLASS: Record<string, string> = {\n auto: 'w-auto min-w-[120px]',\n sm: 'w-44',\n md: 'w-56',\n lg: 'w-64',\n xl: 'w-72',\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({\n triggerButton,\n renderTriggerButton,\n className,\n items,\n renderItem,\n itemsContainerClass,\n transition = true,\n anchor = 'bottom start',\n width = 'md',\n menuItemClass,\n onMenuClick,\n ...restProps\n}: DropdownProps & Record<string, any>) => {\n const widthClass = WIDTH_CLASS[width] || width || WIDTH_CLASS.md\n const { theme, variant, size, disabled } = restProps\n\n return (\n <Menu as=\"div\" className=\"relative inline-block\">\n {/* Trigger */}\n {renderTriggerButton ? (\n <MenuButton as={Fragment}>\n {(state) => {\n const rendered = renderTriggerButton(state)\n if (isValidElement(rendered) && className) {\n return cloneElement(rendered as React.ReactElement<any>, {\n className: buildClassName((rendered.props as any).className, className),\n })\n }\n return rendered as React.ReactElement\n }}\n </MenuButton>\n ) : isValidElement(triggerButton) ? (\n <MenuButton as={Fragment}>\n {cloneElement(triggerButton as React.ReactElement<any>, {\n className: buildClassName((triggerButton.props as any).className, className),\n theme: (triggerButton.props as any).theme ?? theme,\n variant: (triggerButton.props as any).variant ?? variant,\n size: (triggerButton.props as any).size ?? size,\n disabled: (triggerButton.props as any).disabled ?? disabled,\n })}\n </MenuButton>\n ) : (\n <MenuButton as={Fragment}>{triggerButton}</MenuButton>\n )}\n\n {/* Dropdown Panel */}\n <MenuItems\n transition={transition}\n anchor={anchor}\n className={buildClassName(\n 'origin-top-right rounded-xl shadow-lg p-1.5 text-sm transition duration-100 ease-out z-50',\n 'border border-gray-200/80 dark:border-gray-700/80 bg-white dark:bg-gray-800 text-gray-800 dark:text-gray-200',\n 'focus:outline-none data-[closed]:scale-95 data-[closed]:opacity-0',\n '[--anchor-gap:--spacing(1)]',\n widthClass,\n itemsContainerClass,\n )}\n data-testid=\"dropdown-items\"\n as=\"ul\"\n >\n {items.map((item: DropdownItem, idx: number) => (\n <Fragment key={item.id}>\n {item.groupTitle && (\n <li\n key={`group-${item.id}`}\n className=\"px-2.5 pt-2 pb-1 text-[11px] font-semibold text-gray-400 dark:text-gray-500 uppercase tracking-wider select-none\"\n data-testid={`dropdown-group-${item.id}`}\n >\n {item.groupTitle}\n </li>\n )}\n <MenuItem as=\"li\" disabled={item.disabled}>\n {({ disabled, active }) => (\n <div\n onClick={() => {\n if (!disabled) {\n item.onClick?.(item)\n onMenuClick?.(item, idx)\n }\n }}\n className={buildClassName(\n 'flex items-center justify-between gap-3 w-full px-2.5 py-1.5 rounded-lg text-sm transition-colors cursor-pointer select-none',\n item.danger\n ? buildClassName(\n 'text-rose-600 dark:text-rose-400',\n active\n ? 'bg-rose-50 dark:bg-rose-950/40'\n : 'hover:bg-rose-50 dark:hover:bg-rose-950/40',\n )\n : buildClassName(\n 'text-gray-700 dark:text-gray-200',\n active\n ? 'bg-gray-100 dark:bg-gray-700/80'\n : 'hover:bg-gray-100/80 dark:hover:bg-gray-700/80',\n ),\n disabled && 'opacity-40 cursor-not-allowed pointer-events-none',\n menuItemClass,\n )}\n data-testid={`dropdown-item-${item.id}`}\n >\n {renderItem ? (\n renderItem(item)\n ) : (\n <>\n <div className=\"flex items-center gap-2.5 min-w-0 flex-1\">\n {item.icon && (\n <span\n className={buildClassName(\n 'shrink-0',\n item.danger ? 'text-rose-500' : 'text-gray-400 dark:text-gray-500',\n )}\n >\n {item.icon}\n </span>\n )}\n <div className=\"flex flex-col min-w-0\">\n {item.label && <span className=\"font-medium truncate\">{item.label}</span>}\n {item.description && (\n <span className=\"text-xs text-gray-400 dark:text-gray-500 font-normal truncate\">\n {item.description}\n </span>\n )}\n </div>\n </div>\n {item.shortcut && (\n <kbd className=\"shrink-0 text-[10px] font-medium font-mono px-1.5 py-0.5 rounded bg-gray-100 dark:bg-gray-700/80 border border-gray-200/60 dark:border-gray-600/60 text-gray-400 dark:text-gray-400\">\n {item.shortcut}\n </kbd>\n )}\n </>\n )}\n </div>\n )}\n </MenuItem>\n {item.divider && idx < items.length - 1 && (\n <li\n key={`divider-${item.id}`}\n className=\"my-1 h-px bg-gray-200/80 dark:bg-gray-700/80\"\n data-testid=\"dropdown-divider\"\n />\n )}\n </Fragment>\n ))}\n </MenuItems>\n </Menu>\n )\n}\n\nDropdown.displayName = 'Dropdown'\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-folder-plus-icon lucide-folder-plus\"><path d=\"M12 10v6\"/><path d=\"M9 13h6\"/><path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/></svg>","import React, { type ReactNode } from 'react'\nimport FolderPlusIcon from '../Icons/FolderPlus.svg'\nimport { HeadingText } from '../HeadingText'\nimport { BodyText } from '../BodyText'\nimport { buildClassName } from '../../utils/build-classname'\n\nexport interface EmptyStateProps {\n title: string\n description?: string\n action?: ReactNode\n className?: string\n}\n\nexport const EmptyState: React.FC<EmptyStateProps> = ({\n title,\n description,\n className,\n action = null,\n}) => {\n return (\n <div className={buildClassName('w-full flex justify-center px-4 pt-16', className)}>\n <div className=\"max-w-md flex flex-col items-center gap-4\">\n <FolderPlusIcon className=\"size-8 text-[var(--ui-text)]\" />\n <HeadingText.SubTitle>{title}</HeadingText.SubTitle>\n {description && (\n <BodyText as=\"p\" className=\"text-center\" muted small>\n {description}\n </BodyText>\n )}\n {action}\n </div>\n </div>\n )\n}\n","import { forwardRef, useImperativeHandle, useRef, useState, type ChangeEvent } from 'react'\nimport { Label } from '../Label'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { InputProps, InputSize } from './Input.types'\nimport { TextContent } from '../TextContent'\n\nconst sizeClasses: Record<InputSize, { input: string; group: string; icon: string; text: string }> =\n {\n sm: {\n input: 'px-2.5 py-1 text-xs leading-5',\n group: 'w-8 text-xs',\n icon: 'size-3.5',\n text: 'text-xs',\n },\n md: {\n input: 'px-3.5 py-2 text-sm leading-6',\n group: 'w-10 text-sm',\n icon: 'size-4',\n text: 'text-sm',\n },\n lg: {\n input: 'px-4 py-2.5 text-base leading-7',\n group: 'w-12 text-base',\n icon: 'size-5',\n text: 'text-base',\n },\n }\n\nexport function buildInputClass(\n className?: string,\n {\n isFocusWithin = false,\n disabled = false,\n hasError = false,\n size = 'md',\n }: { isFocusWithin?: boolean; disabled?: boolean; hasError?: boolean; size?: InputSize } = {},\n) {\n const currentSize = sizeClasses[size] || sizeClasses.md\n\n return buildClassName(\n 'transition-all duration-150',\n 'block w-full rounded-lg bg-white',\n currentSize.input,\n 'text-gray-900 outline outline-1 -outline-offset-1',\n hasError\n ? '!outline-red-500 !ring-1 !ring-red-500/50 dark:!outline-red-500'\n : 'outline-gray-300 dark:outline-gray-600',\n disabled\n ? 'pointer-events-none bg-gray-100 dark:bg-gray-800 dark:text-gray-600 dark:placeholder-gray-600 placeholder-gray-400 outline-gray-200 dark:outline-gray-700'\n : 'bg-white dark:bg-gray-700 dark:text-white outline-gray-300 dark:outline-gray-600 dark:placeholder-gray-400 placeholder-gray-400',\n isFocusWithin\n ? 'focus-within:outline-[var(--ui-focus-ring)] focus-within:outline-2 focus-within:-outline-offset-2'\n : 'focus:outline-[var(--ui-focus-ring)] focus:outline-2 focus:-outline-offset-2',\n className,\n )\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const {\n name,\n id = name,\n type,\n label,\n labelHint,\n className,\n labelClass,\n labelWrapperClass,\n containerClass,\n error,\n showErrorMessage = true,\n rightGroup,\n leftGroup,\n prefix,\n suffix,\n clearable = false,\n onClear,\n showCount = false,\n helperText,\n size = 'md',\n value,\n defaultValue,\n onChange,\n maxLength,\n ...inputProps\n } = props\n\n const innerRef = useRef<HTMLInputElement>(null)\n useImperativeHandle(ref, () => innerRef.current as HTMLInputElement)\n\n const [uncontrolledValue, setUncontrolledValue] = useState<string>(String(defaultValue ?? ''))\n\n const isControlled = value !== undefined\n const currentVal = isControlled ? String(value ?? '') : uncontrolledValue\n const charLength = currentVal.length\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setUncontrolledValue(e.target.value)\n }\n onChange?.(e)\n }\n\n const handleClear = () => {\n if (innerRef.current) {\n innerRef.current.value = ''\n const event = new Event('input', {\n bubbles: true,\n }) as unknown as ChangeEvent<HTMLInputElement>\n Object.defineProperty(event, 'target', { writable: true, value: { value: '' } })\n if (!isControlled) {\n setUncontrolledValue('')\n }\n onChange?.(event)\n }\n onClear?.()\n }\n\n const hasError = Boolean(error)\n const currentSize = sizeClasses[size] || sizeClasses.md\n\n const showClearButton = clearable && charLength > 0 && !inputProps.disabled\n\n const actualRightGroup =\n rightGroup ??\n (showClearButton ? (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"p-1 rounded-full text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors cursor-pointer\"\n title=\"Clear text\"\n tabIndex={-1}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className={currentSize.icon}\n >\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n ) : null)\n\n const hasRightGroup = actualRightGroup !== null && actualRightGroup !== undefined\n const hasLeftGroup = leftGroup != null && leftGroup !== undefined\n\n return (\n <div className={buildClassName('group', hasError && 'has-error', containerClass)}>\n {label && (\n <div\n className={buildClassName('flex items-center justify-between mb-1.5', labelWrapperClass)}\n >\n <Label className={labelClass} htmlFor={id}>\n {label}\n </Label>\n {labelHint && <TextContent xsmall>{labelHint}</TextContent>}\n </div>\n )}\n\n <div className=\"flex rounded-lg shadow-2xs\">\n {/* Static Prefix Addon */}\n {prefix && (\n <span className=\"inline-flex items-center px-3 rounded-l-lg border border-r-0 border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-500 dark:text-gray-400 text-xs font-medium shrink-0\">\n {prefix}\n </span>\n )}\n\n <div className=\"relative flex-1 min-w-0\">\n {hasLeftGroup && (\n <span\n className={buildClassName(\n 'absolute top-0 h-full flex items-center justify-center text-gray-400 dark:text-gray-500',\n currentSize.group,\n )}\n >\n {leftGroup}\n </span>\n )}\n\n <input\n ref={innerRef}\n autoComplete=\"off\"\n {...inputProps}\n value={value}\n defaultValue={defaultValue}\n onChange={handleInputChange}\n maxLength={maxLength}\n name={name}\n id={id}\n type={type}\n className={buildClassName(\n buildInputClass(className, {\n disabled: inputProps.disabled,\n hasError,\n size,\n }),\n prefix ? '!rounded-l-none' : '',\n suffix ? '!rounded-r-none' : '',\n hasRightGroup ? (size === 'lg' ? 'pe-12' : size === 'sm' ? 'pe-8' : 'pe-10') : '',\n hasLeftGroup ? (size === 'lg' ? 'ps-12' : size === 'sm' ? 'ps-8' : 'ps-10') : '',\n )}\n />\n\n {hasRightGroup && (\n <span\n className={buildClassName(\n 'absolute end-0 top-0 h-full flex items-center justify-center text-gray-400 dark:text-gray-500',\n currentSize.group,\n )}\n >\n {actualRightGroup}\n </span>\n )}\n </div>\n\n {/* Static Suffix Addon */}\n {suffix && (\n <span className=\"inline-flex items-center px-3 rounded-r-lg border border-l-0 border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-800 text-gray-500 dark:text-gray-400 text-xs font-medium shrink-0\">\n {suffix}\n </span>\n )}\n </div>\n\n {/* Footer Row: Error / Helper Text & Live Character Count */}\n {(showErrorMessage && error) || helperText || showCount ? (\n <div className=\"mt-1.5 flex items-center justify-between gap-2 text-xs\">\n <div className=\"min-w-0 flex-1\">\n {showErrorMessage && error ? (\n <TextContent error small>\n {error}\n </TextContent>\n ) : helperText ? (\n <TextContent muted small>\n {helperText}\n </TextContent>\n ) : null}\n </div>\n\n {showCount && (\n <span\n className={buildClassName(\n 'text-[11px] font-medium shrink-0 ml-auto',\n maxLength && charLength >= maxLength\n ? 'text-red-500 font-semibold'\n : 'text-gray-400 dark:text-gray-500',\n )}\n >\n {charLength}\n {maxLength ? ` / ${maxLength}` : ''}\n </span>\n )}\n </div>\n ) : null}\n </div>\n )\n})\n\nInput.displayName = 'Input'\n","import { forwardRef, useState, type ChangeEvent } from 'react'\nimport { Input } from '../Input'\nimport { Button } from '../Button'\nimport type { PasswordInputProps } from './PasswordInput.types'\n\nexport const PASSWORD_TYPE = 'password'\nexport const PASSWORD_PLACEHOLDER = '••••••••••'\n\nexport function evaluatePasswordStrength(val: string): {\n score: number\n label: 'Weak' | 'Fair' | 'Good' | 'Strong'\n colorClass: string\n percent: number\n} {\n if (!val)\n return { score: 0, label: 'Weak', colorClass: 'bg-gray-200 dark:bg-gray-700', percent: 0 }\n\n let score = 0\n if (val.length >= 8) score += 1\n if (val.length >= 12) score += 1\n if (/[0-9]/.test(val)) score += 1\n if (/[a-z]/.test(val) && /[A-Z]/.test(val)) score += 1\n if (/[^A-Za-z0-9]/.test(val)) score += 1\n\n if (score <= 1) {\n return { score: 1, label: 'Weak', colorClass: 'bg-red-500', percent: 25 }\n }\n if (score === 2) {\n return { score: 2, label: 'Fair', colorClass: 'bg-amber-500', percent: 50 }\n }\n if (score === 3) {\n return { score: 3, label: 'Good', colorClass: 'bg-blue-500', percent: 75 }\n }\n return { score: 4, label: 'Strong', colorClass: 'bg-emerald-500', percent: 100 }\n}\n\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>((props, ref) => {\n const {\n showStrength = false,\n placeholder = PASSWORD_PLACEHOLDER,\n onChange,\n value,\n defaultValue,\n ...inputProps\n } = props\n\n const [showPassword, setShowPassword] = useState(false)\n const [uncontrolledValue, setUncontrolledValue] = useState<string>(String(defaultValue ?? ''))\n\n const isControlled = value !== undefined\n const currentVal = isControlled ? String(value ?? '') : uncontrolledValue\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setUncontrolledValue(e.target.value)\n }\n onChange?.(e)\n }\n\n const strength = evaluatePasswordStrength(currentVal)\n\n return (\n <div className=\"space-y-1.5\">\n <Input\n ref={ref}\n {...inputProps}\n value={value}\n defaultValue={defaultValue}\n onChange={handleInputChange}\n type={showPassword ? 'text' : PASSWORD_TYPE}\n placeholder={placeholder}\n rightGroup={\n <Button\n theme=\"secondary\"\n variant=\"plain\"\n size=\"xs\"\n className=\"px-1.5 mr-0.5 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200\"\n type=\"button\"\n onClick={() => setShowPassword((prev) => !prev)}\n tabIndex={-1}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n >\n {showPassword ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"1.5\"\n stroke=\"currentColor\"\n className=\"size-4\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88\"\n />\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"1.5\"\n stroke=\"currentColor\"\n className=\"size-4\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\"\n />\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"\n />\n </svg>\n )}\n </Button>\n }\n />\n\n {/* Visual Password Strength Indicator */}\n {showStrength && currentVal.length > 0 && (\n <div className=\"pt-0.5 space-y-1\">\n <div className=\"flex items-center justify-between text-[11px] font-medium text-gray-500 dark:text-gray-400\">\n <span>Password Strength</span>\n <span className=\"font-semibold text-gray-700 dark:text-gray-200\">{strength.label}</span>\n </div>\n <div className=\"h-1.5 w-full bg-gray-200 dark:bg-gray-800 rounded-full overflow-hidden flex gap-1 p-0.5\">\n <div\n className={`h-full transition-all duration-300 rounded-full ${strength.colorClass}`}\n style={{ width: `${strength.percent}%` }}\n />\n </div>\n </div>\n )}\n </div>\n )\n})\n\nPasswordInput.displayName = 'PasswordInput'\n","import { forwardRef, useId } from 'react'\nimport { Label } from '../Label'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { RadioProps, RadioSize, RadioTheme } from './Radio.types'\nimport { TextContent } from '../TextContent'\n\nconst SIZE_MAP: Record<RadioSize, string> = {\n sm: 'size-4',\n md: 'size-4.5',\n lg: 'size-5.5',\n}\n\nconst THEME_MAP: Record<RadioTheme, string> = {\n primary:\n 'checked:border-[var(--ui-primary)] checked:hover:border-[var(--ui-primary)] focus:ring-[var(--ui-primary-ring)]',\n success: 'checked:border-emerald-600 checked:hover:border-emerald-600 focus:ring-emerald-500',\n danger:\n 'checked:border-[var(--ui-danger)] checked:hover:border-[var(--ui-danger)] focus:ring-[var(--ui-danger-ring)]',\n}\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>((props, ref) => {\n const {\n id,\n name,\n label,\n description,\n size = 'md',\n theme = 'primary',\n labelClass = '',\n descriptionClass = '',\n wrapperClass = '',\n containerClass = '',\n error,\n disabled = false,\n className = '',\n ...rest\n } = props\n\n const generatedId = useId()\n const radioId = id ?? (name && rest.value ? `${name}-${rest.value}` : generatedId)\n\n return (\n <div className={buildClassName(wrapperClass)}>\n <div className={buildClassName('flex items-start gap-2.5', containerClass)}>\n <div className=\"grid place-items-center shrink-0 pt-0.5\">\n <input\n ref={ref}\n {...rest}\n id={radioId}\n name={name}\n type=\"radio\"\n disabled={disabled}\n aria-checked={rest.checked}\n className={buildClassName(\n 'peer transition-all col-start-1 row-start-1 appearance-none shrink-0 rounded-full',\n 'border focus:ring-2 focus:ring-offset-2',\n 'checked:border-5 checked:bg-white',\n 'dark:focus:ring-offset-gray-800',\n SIZE_MAP[size],\n THEME_MAP[theme],\n disabled\n ? 'border-gray-200 dark:border-gray-700 bg-gray-100 dark:bg-gray-800 pointer-events-none'\n : 'bg-white dark:bg-gray-700 border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500 cursor-pointer',\n className,\n )}\n />\n </div>\n {(label || description) && (\n <div className=\"flex flex-col gap-0.5 min-w-0\">\n {label && (\n <Label\n htmlFor={radioId}\n className={buildClassName(\n disabled\n ? 'cursor-not-allowed text-gray-400 dark:text-gray-500'\n : 'cursor-pointer text-gray-700 dark:text-gray-200 font-medium',\n labelClass,\n )}\n >\n {label}\n </Label>\n )}\n {description && (\n <p\n className={buildClassName(\n 'text-xs leading-normal',\n disabled\n ? 'text-gray-300 dark:text-gray-600'\n : 'text-gray-500 dark:text-gray-400',\n descriptionClass,\n )}\n >\n {description}\n </p>\n )}\n </div>\n )}\n </div>\n {error && (\n <div className=\"mt-1\">\n <TextContent error small>\n {error}\n </TextContent>\n </div>\n )}\n </div>\n )\n})\n\nRadio.displayName = 'Radio'\n","import React, { useMemo } from 'react'\nimport { Radio } from '../Radio'\nimport { Label } from '../Label'\nimport { buildClassName } from '../../utils/build-classname'\nimport { TextContent } from '../TextContent'\nimport type { RadioGroupProps, RadionGroupItem } from './RadioGroup.types'\n\nconst COLUMN_GRID_MAP: Record<number, string> = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-3',\n 4: 'grid-cols-1 md:grid-cols-4',\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = (props) => {\n const {\n name,\n variant = 'default',\n size = 'md',\n theme = 'primary',\n label,\n labelClass,\n labelWrapperClass,\n labelHint,\n containerClass,\n options,\n value,\n columns,\n disabled = false,\n row,\n error,\n showErrorMessage = true,\n onChange,\n } = props\n\n const items = useMemo(\n () =>\n options?.map((option) =>\n typeof option === 'string'\n ? {\n label: option,\n value: option,\n description: undefined,\n icon: undefined,\n disabled: undefined,\n }\n : option,\n ) ?? [],\n [options],\n )\n\n const isCards = variant === 'cards'\n\n return (\n <div className={buildClassName(containerClass)}>\n {label && (\n <div\n className={buildClassName('flex items-center justify-between mb-3', labelWrapperClass)}\n >\n <Label className={labelClass}>{label}</Label>\n {labelHint}\n </div>\n )}\n\n <div\n className={buildClassName(\n columns\n ? buildClassName('grid gap-3', COLUMN_GRID_MAP[columns])\n : row || isCards\n ? 'flex flex-wrap gap-3'\n : 'flex flex-col gap-3',\n )}\n >\n {items.map((item) => {\n const isSelected = value === item.value\n const isItemDisabled = disabled || Boolean(item.disabled)\n\n if (isCards) {\n return (\n <label\n key={item.value}\n htmlFor={`${name}-${item.value}`}\n className={buildClassName(\n 'relative flex items-start gap-3 p-4 rounded-xl border transition-all cursor-pointer select-none min-w-[200px] flex-1',\n isSelected\n ? 'border-[var(--ui-primary)] bg-blue-50/40 dark:bg-blue-950/30 ring-2 ring-[var(--ui-primary-ring)]/30'\n : 'border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 hover:border-gray-300 dark:hover:border-gray-600',\n isItemDisabled &&\n 'opacity-50 cursor-not-allowed pointer-events-none bg-gray-50 dark:bg-gray-800/50',\n )}\n >\n <Radio\n name={name}\n id={`${name}-${item.value}`}\n value={item.value}\n aria-label={item.label}\n size={size}\n theme={theme}\n checked={isSelected}\n disabled={isItemDisabled}\n onChange={onChange}\n containerClass=\"pt-0.5\"\n />\n\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n {item.icon && (\n <span className=\"shrink-0 text-gray-500 dark:text-gray-400\">{item.icon}</span>\n )}\n <span className=\"text-sm font-semibold text-gray-900 dark:text-white truncate\">\n {item.label}\n </span>\n </div>\n {item.description && (\n <p className=\"mt-1 text-xs text-gray-500 dark:text-gray-400 font-normal leading-relaxed\">\n {item.description}\n </p>\n )}\n </div>\n </label>\n )\n }\n\n return (\n <Radio\n key={item.value}\n name={name}\n id={`${name}-${item.value}`}\n label={item.label}\n description={item.description}\n value={item.value}\n size={size}\n theme={theme}\n checked={isSelected}\n disabled={isItemDisabled}\n onChange={onChange}\n />\n )\n })}\n </div>\n\n {showErrorMessage && error && (\n <div className=\"mt-1.5\">\n <TextContent error small>\n {error}\n </TextContent>\n </div>\n )}\n </div>\n )\n}\n\nRadioGroup.displayName = 'RadioGroup'\n","import React, { useLayoutEffect, useRef, useState } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type {\n RadioSwitchItem,\n RadioSwitchProps,\n RadioSwitchSize,\n RadioSwitchTheme,\n} from './RadioSwitch.types'\n\nconst SIZE_CONTAINER_CLASS: Record<RadioSwitchSize, string> = {\n sm: 'p-1.5 gap-1 rounded-lg text-xs',\n md: 'p-2 gap-1.5 rounded-xl text-sm',\n lg: 'p-2 gap-2 rounded-2xl text-base',\n}\n\nconst SIZE_ITEM_CLASS: Record<RadioSwitchSize, string> = {\n sm: 'px-4 py-2 text-xs rounded-md min-w-[64px]',\n md: 'px-5 py-2.5 text-sm rounded-lg min-w-[76px]',\n lg: 'px-7 py-3 text-base rounded-xl min-w-[92px]',\n}\n\nconst SIZE_ITEM_DESC_CLASS: Record<RadioSwitchSize, string> = {\n sm: 'px-4 py-2.5 text-xs rounded-md min-w-[80px]',\n md: 'px-5 py-3 text-sm rounded-lg min-w-[96px]',\n lg: 'px-7 py-3.5 text-base rounded-xl min-w-[112px]',\n}\n\nconst THEME_SWITCH_CLASS: Record<RadioSwitchTheme, string> = {\n primary: 'bg-[var(--ui-primary)] text-white shadow-xs',\n secondary: 'bg-white dark:bg-gray-700 text-gray-900 dark:text-white shadow-xs',\n dark: 'bg-gray-900 dark:bg-black text-white shadow-xs',\n}\n\nexport const RadioSwitch: React.FC<RadioSwitchProps> = ({\n label,\n items,\n selected,\n size = 'md',\n theme = 'primary',\n disabled = false,\n onChange,\n wrapperClass,\n switchClass,\n contentClass,\n descriptionClass,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const [style, setStyle] = useState({ left: 0, top: 0, width: 0, height: 0, ready: false })\n\n const getLabel = (i: RadioSwitchItem) => (typeof i === 'string' ? i : i.label)\n const getValue = (i: RadioSwitchItem) => (typeof i === 'string' ? i : i.value)\n const getDescription = (i: RadioSwitchItem) =>\n typeof i === 'string' ? '' : (i.description ?? '')\n const isItemDisabled = (i: RadioSwitchItem) =>\n disabled || (typeof i === 'string' ? false : Boolean(i.disabled))\n\n const hasDescription = items.some((i) => typeof i !== 'string' && Boolean(i.description))\n\n // Position calculation for GPU sliding highlight\n useLayoutEffect(() => {\n if (!containerRef.current) return\n\n const updatePosition = () => {\n if (!containerRef.current) return\n\n const activeEl = containerRef.current.querySelector(\n '[data-selected=\"true\"]',\n ) as HTMLElement | null\n\n if (!activeEl) return\n\n const parentRect = containerRef.current.getBoundingClientRect()\n const rect = activeEl.getBoundingClientRect()\n\n const left = activeEl.offsetLeft || rect.left - parentRect.left\n const top = activeEl.offsetTop || rect.top - parentRect.top\n const width = activeEl.offsetWidth || rect.width\n const height = activeEl.offsetHeight || rect.height\n\n setStyle({\n left,\n top,\n width,\n height,\n ready: true,\n })\n }\n\n updatePosition()\n\n const resizeObserver = new ResizeObserver(updatePosition)\n resizeObserver.observe(containerRef.current)\n\n return () => resizeObserver.disconnect()\n }, [selected, items, size])\n\n // ARIA Keyboard navigation handler\n const handleGroupKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n const enabledItems = items.filter((it) => !isItemDisabled(it))\n if (enabledItems.length === 0) return\n\n const currentVal = selected\n const currentEnabledIndex = enabledItems.findIndex((it) => getValue(it) === currentVal)\n\n let nextItem: RadioSwitchItem | null = null\n\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault()\n const nextIdx = (currentEnabledIndex + 1) % enabledItems.length\n nextItem = enabledItems[nextIdx]\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault()\n const prevIdx = (currentEnabledIndex - 1 + enabledItems.length) % enabledItems.length\n nextItem = enabledItems[prevIdx]\n } else if (e.key === 'Home') {\n e.preventDefault()\n nextItem = enabledItems[0]\n } else if (e.key === 'End') {\n e.preventDefault()\n nextItem = enabledItems[enabledItems.length - 1]\n }\n\n if (nextItem) {\n onChange(getValue(nextItem))\n }\n }\n\n return (\n <div\n ref={containerRef}\n role=\"radiogroup\"\n tabIndex={0}\n aria-label={label}\n onKeyDown={handleGroupKeyDown}\n className={buildClassName(\n 'relative inline-grid grid-flow-col auto-cols-fr items-stretch bg-gray-100 dark:bg-gray-800/80 border border-gray-200/80 dark:border-gray-700/80 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary-ring)]',\n SIZE_CONTAINER_CLASS[size],\n disabled && 'opacity-60 pointer-events-none',\n wrapperClass,\n )}\n >\n {/* GPU Sliding highlight background */}\n <div\n className={buildClassName(\n 'absolute transition-all duration-200 ease-[cubic-bezier(.25,.8,.25,1)] pointer-events-none',\n THEME_SWITCH_CLASS[theme],\n size === 'sm' ? 'rounded-md' : 'rounded-lg',\n style.ready ? 'opacity-100' : 'opacity-0',\n switchClass,\n )}\n style={{\n transform: `translate(${style.left}px, ${style.top}px)`,\n width: style.width,\n height: style.height,\n }}\n />\n\n {/* Item Buttons */}\n {items.map((item) => {\n const itemVal = getValue(item)\n const isSelected = selected === itemVal\n const disabledState = isItemDisabled(item)\n\n return (\n <button\n key={itemVal}\n type=\"button\"\n role=\"radio\"\n aria-checked={isSelected}\n aria-disabled={disabledState}\n tabIndex={isSelected && !disabledState ? 0 : -1}\n disabled={disabledState}\n data-radio-item\n data-value={itemVal}\n data-selected={isSelected ? 'true' : undefined}\n onClick={() => {\n if (!disabledState) {\n onChange(itemVal)\n }\n }}\n className={buildClassName(\n 'relative z-10 appearance-none m-0 select-none group transition-colors flex flex-col items-center justify-center w-full text-center font-semibold focus:outline-none',\n hasDescription ? SIZE_ITEM_DESC_CLASS[size] : SIZE_ITEM_CLASS[size],\n disabledState ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n isSelected\n ? theme === 'secondary'\n ? 'text-gray-900 dark:text-white'\n : 'text-white'\n : buildClassName(\n 'text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-white',\n !disabledState && 'hover:bg-black/[0.04] dark:hover:bg-white/[0.06]',\n ),\n )}\n >\n {getDescription(item) ? (\n <div\n className={buildClassName(\n 'flex flex-col items-center justify-center gap-1',\n contentClass,\n )}\n >\n <span className=\"font-semibold leading-tight text-center truncate\">\n {getLabel(item)}\n </span>\n <span\n className={buildClassName(\n 'text-[12px] leading-tight opacity-80 font-normal text-center truncate',\n descriptionClass,\n )}\n >\n {getDescription(item)}\n </span>\n </div>\n ) : (\n <span className={buildClassName('truncate leading-tight text-center', contentClass)}>\n {getLabel(item)}\n </span>\n )}\n </button>\n )\n })}\n </div>\n )\n}\n\nRadioSwitch.displayName = 'RadioSwitch'\n","/**\n * Checks if a value is an array.\n * Equivalent to lodash's _.isArray.\n */\nexport function isArray(value: any): value is any[] {\n return Array.isArray(value)\n}\n","import { isArray } from './is-array'\n\n/**\n * Checks if a value is empty.\n * Works for arrays, objects, strings, Maps, and Sets.\n * Equivalent to lodash's _.isEmpty.\n */\nexport function isEmpty(value: any): boolean {\n if (value == null) return true // null or undefined\n\n if (typeof value === 'string' || isArray(value)) {\n return value.length === 0\n }\n\n if (value instanceof Map || value instanceof Set) {\n return value.size === 0\n }\n\n if (typeof value === 'object') {\n return Object.keys(value).length === 0\n }\n\n return false // for numbers, booleans, functions, etc.\n}\n","import { forwardRef, useState } from 'react'\nimport { Label } from '../Label'\nimport { buildClassName } from '../../utils/build-classname'\nimport { isEmpty } from '../../utils/is-empty'\nimport { TextContent } from '../TextContent'\nimport type { RangeInputProps, RangeInputSize } from './RangeInput.types'\n\nconst sizeClasses: Record<RangeInputSize, { track: string; thumb: string; text: string }> = {\n sm: {\n track: 'h-1.5',\n thumb:\n '[&::-webkit-slider-thumb]:h-3.5 [&::-webkit-slider-thumb]:w-3.5 [&::-moz-range-thumb]:h-3.5 [&::-moz-range-thumb]:w-3.5',\n text: 'text-xs',\n },\n md: {\n track: 'h-2',\n thumb:\n '[&::-webkit-slider-thumb]:h-4.5 [&::-webkit-slider-thumb]:w-4.5 [&::-moz-range-thumb]:h-4.5 [&::-moz-range-thumb]:w-4.5',\n text: 'text-sm',\n },\n lg: {\n track: 'h-3',\n thumb:\n '[&::-webkit-slider-thumb]:h-6 [&::-webkit-slider-thumb]:w-6 [&::-moz-range-thumb]:h-6 [&::-moz-range-thumb]:w-6',\n text: 'text-base',\n },\n}\n\nexport const RangeInput = forwardRef<HTMLInputElement, RangeInputProps>((props, ref) => {\n const {\n label,\n labelClass = '',\n labelHint = null,\n containerClass = '',\n className = '',\n size = 'md',\n showValue = true,\n valueSuffix = '',\n showTooltip = false,\n marks,\n error = null,\n helperText,\n showErrorMessage = true,\n id,\n min = 0,\n max = 100,\n value,\n defaultValue,\n onChange,\n ...inputProps\n } = props\n\n const [hovering, setHovering] = useState(false)\n const [internalValue, setInternalValue] = useState<number>(Number(defaultValue ?? min))\n\n const isControlled = value !== undefined\n const currentVal = Number(isControlled ? value : internalValue)\n const numMin = Number(min)\n const numMax = Number(max)\n\n const percent = numMax > numMin ? ((currentVal - numMin) / (numMax - numMin)) * 100 : 0\n const currentSize = sizeClasses[size] || sizeClasses.md\n const hasError = !isEmpty(error)\n\n const handleSliderChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(Number(e.target.value))\n }\n onChange?.(e)\n }\n\n // Parse custom marks if object provided\n const markEntries =\n typeof marks === 'object' && marks !== null\n ? Object.entries(marks).map(([k, v]) => ({ value: Number(k), label: v }))\n : typeof marks === 'boolean' && marks\n ? [\n { value: numMin, label: String(numMin) },\n { value: (numMin + numMax) / 2, label: String(Math.round((numMin + numMax) / 2)) },\n { value: numMax, label: String(numMax) },\n ]\n : null\n\n return (\n <div className={buildClassName('group space-y-2', containerClass)}>\n {label && (\n <div className=\"flex items-center justify-between mb-1\">\n <Label htmlFor={id} className={labelClass}>\n {label}\n </Label>\n {labelHint}\n </div>\n )}\n\n <div className=\"relative flex items-center gap-3\">\n <div className=\"relative flex-1 py-2\">\n {/* Floating Tooltip Popup Badge */}\n {showTooltip && hovering && (\n <div\n className=\"absolute -top-7 transform -translate-x-1/2 px-2 py-0.5 rounded bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900 text-[11px] font-semibold shadow-md pointer-events-none transition-all z-20\"\n style={{ left: `${percent}%` }}\n >\n {currentVal}\n {valueSuffix}\n <div className=\"absolute top-full left-1/2 -translate-x-1/2 border-4 border-transparent border-t-gray-900 dark:border-t-gray-100\" />\n </div>\n )}\n\n <input\n ref={ref}\n type=\"range\"\n id={id}\n min={min}\n max={max}\n value={currentVal}\n onChange={handleSliderChange}\n onMouseEnter={() => setHovering(true)}\n onMouseLeave={() => setHovering(false)}\n {...inputProps}\n style={{\n background: `linear-gradient(to right, ${hasError ? '#ef4444' : '#2563eb'} 0%, ${\n hasError ? '#ef4444' : '#2563eb'\n } ${percent}%, ${\n document.documentElement.classList.contains('dark') ? '#374151' : '#e5e7eb'\n } ${percent}%, ${\n document.documentElement.classList.contains('dark') ? '#374151' : '#e5e7eb'\n } 100%)`,\n }}\n className={buildClassName(\n 'w-full rounded-lg appearance-none cursor-pointer transition-all',\n currentSize.track,\n currentSize.thumb,\n '[&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full',\n '[&::-webkit-slider-thumb]:bg-white [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:shadow-md',\n hasError\n ? '[&::-webkit-slider-thumb]:border-red-600 [&::-moz-range-thumb]:border-red-600'\n : '[&::-webkit-slider-thumb]:border-blue-600 [&::-moz-range-thumb]:border-blue-600',\n '[&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:bg-white [&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:shadow-md',\n className,\n )}\n />\n\n {/* Tick Marks & Labels */}\n {markEntries && (\n <div className=\"relative w-full h-4 mt-1\">\n {markEntries.map((m) => {\n const markPercent = ((m.value - numMin) / (numMax - numMin)) * 100\n return (\n <div\n key={m.value}\n className=\"absolute top-0 transform -translate-x-1/2 flex flex-col items-center\"\n style={{ left: `${markPercent}%` }}\n >\n <span className=\"w-1 h-1.5 bg-gray-300 dark:bg-gray-600 rounded-full\" />\n <span className=\"text-[10px] font-medium text-gray-400 dark:text-gray-500 mt-0.5\">\n {m.label}\n </span>\n </div>\n )\n })}\n </div>\n )}\n </div>\n\n {showValue && (\n <span\n className={buildClassName(\n 'font-medium text-gray-700 dark:text-gray-300 min-w-[3rem] text-right shrink-0',\n currentSize.text,\n )}\n >\n {currentVal}\n {valueSuffix}\n </span>\n )}\n </div>\n\n {/* Footer Error or Helper Text */}\n {(showErrorMessage && hasError) || helperText ? (\n <div className=\"mt-1\">\n {showErrorMessage && hasError ? (\n <TextContent error small>\n {error}\n </TextContent>\n ) : helperText ? (\n <TextContent muted small>\n {helperText}\n </TextContent>\n ) : null}\n </div>\n ) : null}\n </div>\n )\n})\n\nRangeInput.displayName = 'RangeInput'\n","import React, { useEffect, useRef, useState } from 'react'\nimport { Label } from '../Label'\nimport { buildClassName } from '../../utils/build-classname'\nimport { isEmpty } from '../../utils/is-empty'\nimport type { RangeSliderProps, RangeSliderSize } from './RangeSlider.types'\nimport { TextContent } from '../TextContent'\n\nconst sizeClasses: Record<\n RangeSliderSize,\n { track: string; thumb: string; thumbPx: number; text: string }\n> = {\n sm: {\n track: 'h-1.5',\n thumb: 'h-4 w-4',\n thumbPx: 16,\n text: 'text-xs',\n },\n md: {\n track: 'h-2',\n thumb: 'h-5 w-5',\n thumbPx: 20,\n text: 'text-sm',\n },\n lg: {\n track: 'h-3',\n thumb: 'h-6 w-6',\n thumbPx: 24,\n text: 'text-base',\n },\n}\n\nexport const RangeSlider: React.FC<RangeSliderProps> = ({\n label,\n labelHint,\n labelClass = '',\n containerClass = '',\n className = '',\n size = 'md',\n min,\n max,\n step = 1,\n valueMin,\n valueMax,\n onChange,\n valueSuffix = '',\n showTooltips = false,\n marks,\n error = null,\n helperText,\n showErrorMessage = true,\n}) => {\n const trackRef = useRef<HTMLDivElement | null>(null)\n const activeThumbRef = useRef<'min' | 'max' | null>(null)\n const [activeThumbState, setActiveThumbState] = useState<'min' | 'max' | null>(null)\n const [hoveringThumb, setHoveringThumb] = useState<'min' | 'max' | null>(null)\n\n const valueMinRef = useRef(valueMin)\n const valueMaxRef = useRef(valueMax)\n const onChangeRef = useRef(onChange)\n valueMinRef.current = valueMin\n valueMaxRef.current = valueMax\n onChangeRef.current = onChange\n\n const hasError = !isEmpty(error)\n const currentSize = sizeClasses[size] || sizeClasses.md\n\n const clampValue = (val: number) => Math.min(Math.max(val, min), max)\n const snapToStep = (val: number) => {\n const clamped = clampValue(val)\n const steps = Math.round((clamped - min) / step)\n return Math.min(Math.max(min + steps * step, min), max)\n }\n\n const percent = (v: number) => ((clampValue(v) - min) / (max - min)) * 100\n\n const stablePointerMoveRef = useRef((e: PointerEvent) => {\n if (!trackRef.current || !activeThumbRef.current) return\n const rect = trackRef.current.getBoundingClientRect()\n const x = Math.min(Math.max(e.clientX - rect.left, 0), rect.width)\n const rawVal = min + (x / rect.width) * (max - min)\n const snappedVal = snapToStep(rawVal)\n\n if (activeThumbRef.current === 'min') {\n const nextMin = Math.min(snappedVal, valueMaxRef.current - step)\n onChangeRef.current(nextMin, valueMaxRef.current)\n } else {\n const nextMax = Math.max(snappedVal, valueMinRef.current + step)\n onChangeRef.current(valueMinRef.current, nextMax)\n }\n })\n\n const stablePointerUpRef = useRef(() => {\n activeThumbRef.current = null\n setActiveThumbState(null)\n window.removeEventListener('pointermove', stablePointerMoveRef.current)\n window.removeEventListener('pointerup', stablePointerUpRef.current)\n })\n\n useEffect(() => {\n const move = stablePointerMoveRef.current\n const up = stablePointerUpRef.current\n return () => {\n window.removeEventListener('pointermove', move)\n window.removeEventListener('pointerup', up)\n }\n }, [])\n\n const startDrag = (thumb: 'min' | 'max') => (_e: React.PointerEvent) => {\n activeThumbRef.current = thumb\n setActiveThumbState(thumb)\n window.addEventListener('pointermove', stablePointerMoveRef.current)\n window.addEventListener('pointerup', stablePointerUpRef.current)\n }\n\n const handleTrackClick = (e: React.MouseEvent) => {\n if (!trackRef.current) return\n\n const rect = trackRef.current.getBoundingClientRect()\n const x = Math.min(Math.max(e.clientX - rect.left, 0), rect.width)\n const rawVal = min + (x / rect.width) * (max - min)\n const snappedVal = snapToStep(rawVal)\n\n const pxMin = (percent(valueMin) / 100) * rect.width\n const pxMax = (percent(valueMax) / 100) * rect.width\n\n if (x <= pxMin) {\n onChange(Math.min(snappedVal, valueMax - step), valueMax)\n return\n }\n\n if (x >= pxMax) {\n onChange(valueMin, Math.max(snappedVal, valueMin + step))\n return\n }\n\n const distMin = Math.abs(snappedVal - valueMin)\n const distMax = Math.abs(snappedVal - valueMax)\n\n if (distMin < distMax) {\n onChange(Math.min(snappedVal, valueMax - step), valueMax)\n } else {\n onChange(valueMin, Math.max(snappedVal, valueMin + step))\n }\n }\n\n // Keyboard accessibility handler for thumbs\n const handleKeyDown = (thumb: 'min' | 'max') => (e: React.KeyboardEvent) => {\n let delta = 0\n if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') delta = -step\n else if (e.key === 'ArrowRight' || e.key === 'ArrowUp') delta = step\n else if (e.key === 'Home') {\n if (thumb === 'min') onChange(min, valueMax)\n else onChange(valueMin, valueMin + step)\n return\n } else if (e.key === 'End') {\n if (thumb === 'min') onChange(valueMax - step, valueMax)\n else onChange(valueMin, max)\n return\n }\n\n if (delta !== 0) {\n e.preventDefault()\n if (thumb === 'min') {\n const next = snapToStep(valueMin + delta)\n onChange(Math.min(next, valueMax - step), valueMax)\n } else {\n const next = snapToStep(valueMax + delta)\n onChange(valueMin, Math.max(next, valueMin + step))\n }\n }\n }\n\n const markEntries = marks\n ? Object.entries(marks).map(([k, v]) => ({ value: Number(k), label: v }))\n : null\n\n return (\n <div className={buildClassName('group space-y-2', hasError && 'has-error', containerClass)}>\n {label && (\n <div className=\"flex items-center justify-between mb-1\">\n <Label className={labelClass}>{label}</Label>\n {labelHint}\n </div>\n )}\n\n {/* TRACK CONTAINER */}\n <div\n ref={trackRef}\n onMouseDown={handleTrackClick}\n className=\"relative h-8 select-none w-full flex items-center cursor-pointer\"\n data-testid=\"range-track\"\n >\n {/* Track background */}\n <div\n className={buildClassName(\n 'absolute top-1/2 left-0 right-0 rounded-full bg-gray-200 dark:bg-gray-700 -translate-y-1/2',\n currentSize.track,\n )}\n />\n\n {/* Highlight active range section */}\n <div\n className={buildClassName(\n 'absolute top-1/2 -translate-y-1/2 rounded-full transition-all duration-150 ease-out',\n hasError ? 'bg-red-500' : 'bg-blue-600 dark:bg-blue-500',\n currentSize.track,\n )}\n style={{\n left: `${percent(valueMin)}%`,\n width: `${percent(valueMax) - percent(valueMin)}%`,\n }}\n />\n\n {/* MIN THUMB */}\n <div\n role=\"slider\"\n tabIndex={0}\n aria-label=\"Minimum value\"\n aria-valuenow={valueMin}\n aria-valuemin={min}\n aria-valuemax={valueMax - step}\n onPointerDown={startDrag('min')}\n onMouseEnter={() => setHoveringThumb('min')}\n onMouseLeave={() => setHoveringThumb(null)}\n onKeyDown={handleKeyDown('min')}\n className={buildClassName(\n 'absolute top-1/2 -translate-y-1/2 rounded-full focus:outline-none',\n 'bg-white border-2 shadow-md cursor-pointer touch-none',\n hasError ? 'border-red-600' : 'border-blue-600',\n 'transition-all duration-150 ease-out',\n currentSize.thumb,\n (activeThumbState === 'min' || hoveringThumb === 'min') &&\n (hasError ? 'ring-4 ring-red-200' : 'ring-4 ring-blue-200'),\n className,\n )}\n style={{\n left: `calc(${percent(valueMin)}% - ${currentSize.thumbPx / 2}px)`,\n zIndex: activeThumbState === 'min' ? 50 : 30,\n }}\n data-testid=\"thumb-min\"\n >\n {/* Floating Tooltip Min */}\n {showTooltips && (activeThumbState === 'min' || hoveringThumb === 'min') && (\n <div className=\"absolute -top-7 left-1/2 -translate-x-1/2 px-2 py-0.5 rounded bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900 text-[11px] font-semibold shadow-md pointer-events-none z-50 whitespace-nowrap\">\n {Math.round(valueMin)}\n {valueSuffix}\n <div className=\"absolute top-full left-1/2 -translate-x-1/2 border-4 border-transparent border-t-gray-900 dark:border-t-gray-100\" />\n </div>\n )}\n </div>\n\n {/* MAX THUMB */}\n <div\n role=\"slider\"\n tabIndex={0}\n aria-label=\"Maximum value\"\n aria-valuenow={valueMax}\n aria-valuemin={valueMin + step}\n aria-valuemax={max}\n onPointerDown={startDrag('max')}\n onMouseEnter={() => setHoveringThumb('max')}\n onMouseLeave={() => setHoveringThumb(null)}\n onKeyDown={handleKeyDown('max')}\n className={buildClassName(\n 'absolute top-1/2 -translate-y-1/2 rounded-full focus:outline-none',\n 'bg-white border-2 shadow-md cursor-pointer touch-none',\n hasError ? 'border-red-600' : 'border-blue-600',\n 'transition-all duration-150 ease-out',\n currentSize.thumb,\n (activeThumbState === 'max' || hoveringThumb === 'max') &&\n (hasError ? 'ring-4 ring-red-200' : 'ring-4 ring-blue-200'),\n className,\n )}\n style={{\n left: `calc(${percent(valueMax)}% - ${currentSize.thumbPx / 2}px)`,\n zIndex: activeThumbState === 'max' ? 50 : 40,\n }}\n data-testid=\"thumb-max\"\n >\n {/* Floating Tooltip Max */}\n {showTooltips && (activeThumbState === 'max' || hoveringThumb === 'max') && (\n <div className=\"absolute -top-7 left-1/2 -translate-x-1/2 px-2 py-0.5 rounded bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900 text-[11px] font-semibold shadow-md pointer-events-none z-50 whitespace-nowrap\">\n {Math.round(valueMax)}\n {valueSuffix}\n <div className=\"absolute top-full left-1/2 -translate-x-1/2 border-4 border-transparent border-t-gray-900 dark:border-t-gray-100\" />\n </div>\n )}\n </div>\n </div>\n\n {/* Step Marks & Labels */}\n {markEntries && (\n <div className=\"relative w-full h-4 mt-1\">\n {markEntries.map((m) => {\n const markPercent = percent(m.value)\n return (\n <div\n key={m.value}\n className=\"absolute top-0 transform -translate-x-1/2 flex flex-col items-center\"\n style={{ left: `${markPercent}%` }}\n >\n <span className=\"w-1 h-1.5 bg-gray-300 dark:bg-gray-600 rounded-full\" />\n <span className=\"text-[10px] font-medium text-gray-400 dark:text-gray-500 mt-0.5\">\n {m.label}\n </span>\n </div>\n )\n })}\n </div>\n )}\n\n {/* Number Range Indicators */}\n <div\n className={buildClassName(\n 'flex justify-between font-medium text-gray-700 dark:text-gray-300',\n currentSize.text,\n )}\n >\n <span>\n {Math.round(valueMin)}\n {valueSuffix}\n </span>\n <span>\n {Math.round(valueMax)}\n {valueSuffix}\n </span>\n </div>\n\n {/* Footer Error or Helper Text */}\n {(showErrorMessage && hasError) || helperText ? (\n <div className=\"mt-1\">\n {showErrorMessage && hasError ? (\n <TextContent error small>\n {error}\n </TextContent>\n ) : helperText ? (\n <TextContent muted small>\n {helperText}\n </TextContent>\n ) : null}\n </div>\n ) : null}\n </div>\n )\n}\n\nRangeSlider.displayName = 'RangeSlider'\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nexport const useDebounce = <T,>(value: T, delay: number): T => {\n const [debouncedValue, setDebouncedValue] = useState<T>(value)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n // Cancel the timeout if value or delay changes\n return () => {\n clearTimeout(handler)\n }\n }, [value, delay])\n\n return debouncedValue\n}\n\nexport const useDebounceFn = (fn: (...args: any[]) => void, ms: number) => {\n const timeout = useRef<any>(null)\n\n useEffect(() => {\n return () => clearTimeout(timeout.current)\n }, [])\n\n return useCallback(\n (...args: any[]) => {\n clearTimeout(timeout.current)\n timeout.current = setTimeout(() => fn(...args), ms)\n },\n [fn, ms],\n )\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-check-icon lucide-check\"><path d=\"M20 6 9 17l-5-5\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-circle-plus-icon lucide-circle-plus\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M8 12h8\"/><path d=\"M12 8v8\"/></svg>","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n Combobox,\n ComboboxButton,\n ComboboxInput,\n ComboboxOption,\n ComboboxOptions,\n} from '@headlessui/react'\n\nimport { Label } from '../Label'\nimport { Badge } from '../Badge'\nimport { Loader } from '../Loader'\nimport { TextContent } from '../TextContent'\nimport { Button } from '../Button'\n\nimport { isArray } from '../../utils/is-array'\nimport { buildClassName } from '../../utils/build-classname'\nimport { isEmpty } from '../../utils/is-empty'\nimport { useDebounce } from '../../hooks/use-debounce'\n\nimport CheckIcon from '../Icons/Check.svg'\nimport ChevronDownIcon from '../Icons/ChevronDown.svg'\nimport XIcon from '../Icons/X.svg'\nimport CirclePlusIcon from '../Icons/CirclePlus.svg'\nimport type { BaseOption, SelectBoxProps, SelectBoxSize } from './SelectBox.types'\nimport { buildInputClass } from '../Input'\nimport { BodyText } from '../BodyText'\n\nconst sizeClasses: Record<\n SelectBoxSize,\n { input: string; group: string; icon: string; badgeSize: 'sm' | 'md' }\n> = {\n sm: {\n input: 'px-2.5 py-1 text-xs leading-5 min-h-[30px]',\n group: 'w-8 text-xs',\n icon: 'size-3.5',\n badgeSize: 'sm',\n },\n md: {\n input: 'px-3.5 py-2 text-sm leading-6 min-h-[38px]',\n group: 'w-10 text-sm',\n icon: 'size-4',\n badgeSize: 'md',\n },\n lg: {\n input: 'px-4 py-2.5 text-base leading-7 min-h-[46px]',\n group: 'w-12 text-base',\n icon: 'size-5',\n badgeSize: 'md',\n },\n}\n\nexport const SelectBox = forwardRef(\n <T extends BaseOption | string = BaseOption>(\n props: SelectBoxProps<T>,\n forwardedRef: React.Ref<HTMLInputElement | HTMLDivElement | null>,\n ) => {\n const {\n labelKey = 'label',\n valueKey = 'value',\n name,\n id = name,\n options = [],\n groups,\n selected,\n size = 'md',\n label = null,\n labelWrapperClass = '',\n labelClass = '',\n labelHint = null,\n disabled = false,\n containerClass = '',\n onChange = () => {},\n placeholder,\n dropdownContainerClass = 'z-20',\n multiple = false,\n maxSelection,\n showSelectAll = false,\n immediate = true,\n showErrorMessage = true,\n error = null,\n helperText,\n leftGroup,\n renderOption,\n async = false,\n searchable = true,\n required = false,\n allowAdd = false,\n addNewText = 'Create',\n onAdd = () => {},\n allowClear = false,\n modalDropdown = false,\n noOptionsText = 'No options available',\n } = props\n\n const hasError = Boolean(error)\n const [query, setQuery] = useState('')\n const debouncedQuery = useDebounce(query, 500)\n const [optionsLoading, setOptionsLoading] = useState(false)\n\n // Normalize options from options prop or groups prop\n const allOptions = useMemo(() => {\n if (groups?.length) {\n return groups.flatMap((g) => g.options)\n }\n return options\n }, [groups, options])\n\n const shouldShowTypeToSearch = async && !query && !optionsLoading && allOptions.length === 0\n const currentSize = sizeClasses[size] || sizeClasses.md\n\n const baseInputClass = useMemo(\n () => buildInputClass('', { disabled, hasError, size }),\n [disabled, hasError, size],\n )\n\n const chevronIconClass = buildClassName(\n currentSize.icon,\n 'stroke-gray-500 group-data-[hover]:stroke-gray-800',\n 'dark:stroke-gray-300 dark:group-data-[hover]:stroke-gray-100',\n disabled && 'dark:stroke-gray-600 stroke-gray-400',\n )\n\n const inputRef = useRef<HTMLInputElement>(null)\n const containerRef = useRef<HTMLDivElement>(null)\n\n useImperativeHandle(forwardedRef, () => inputRef.current!, [inputRef])\n\n const filteredOptions = useMemo(() => {\n if (query === '' || async) return allOptions\n return allOptions.filter((opt) => {\n const lbl = typeof opt === 'string' ? opt : (opt as BaseOption)[labelKey]\n return lbl?.toLowerCase().includes(query.toLowerCase())\n })\n }, [allOptions, query, async, labelKey])\n\n const filteredGroups = useMemo(() => {\n if (!groups?.length) return null\n if (query === '' || async) return groups\n\n return groups\n .map((g) => ({\n ...g,\n options: g.options.filter((opt) => {\n const lbl = typeof opt === 'string' ? opt : (opt as BaseOption)[labelKey]\n return lbl?.toLowerCase().includes(query.toLowerCase())\n }),\n }))\n .filter((g) => g.options.length > 0)\n }, [groups, query, async, labelKey])\n\n const getDisplayValue = useCallback(\n (opt: T) => {\n return typeof opt === 'string' ? opt : opt[labelKey]\n },\n [labelKey],\n )\n\n const getValue = useCallback(\n (opt: T) => {\n return typeof opt === 'string' ? opt : opt[valueKey]\n },\n [valueKey],\n )\n\n const removeSelection = (idx: number) => {\n if (!isArray(selected)) return\n const next = [...selected]\n next.splice(idx, 1)\n onChange(next)\n inputRef.current?.focus()\n }\n\n const handleOnChangeInternal = useCallback(\n (value: T | T[] | null) => {\n if (value === null) {\n onChange(multiple ? ([] as T[]) : null)\n setQuery('')\n return\n }\n\n if (multiple && Array.isArray(value) && maxSelection && value.length > maxSelection) {\n return\n }\n\n onChange(value as T | T[])\n setQuery('')\n },\n [onChange, multiple, maxSelection],\n )\n\n const comboboxOnChangeWrapper = useCallback(\n (raw: unknown) => {\n if (raw === null || raw === undefined) {\n handleOnChangeInternal(null)\n return\n }\n\n if (Array.isArray(raw)) {\n const allNulls = raw.length > 0 && raw.every((v) => v === null)\n if (allNulls) {\n handleOnChangeInternal([] as unknown as T[])\n return\n }\n handleOnChangeInternal(raw as unknown as T[])\n return\n }\n\n handleOnChangeInternal(raw as unknown as T)\n },\n [handleOnChangeInternal],\n )\n\n const handleAddAndSelect = useCallback(\n async (valueToAdd: string) => {\n try {\n const result = await onAdd(valueToAdd)\n if (result) {\n handleOnChangeInternal(result as unknown as T)\n } else {\n handleOnChangeInternal(valueToAdd as unknown as T)\n }\n } catch (err) {\n console.error('onAdd handler error', err)\n }\n },\n [onAdd, handleOnChangeInternal],\n )\n\n const onSearchRef = useRef(props.onSearch)\n useEffect(() => {\n onSearchRef.current = props.onSearch\n }, [props.onSearch])\n\n const handleSearch = useCallback(async (searchString: string) => {\n try {\n setOptionsLoading(true)\n await onSearchRef.current?.(searchString)\n } catch (err) {\n console.error('Error loading options:', err)\n } finally {\n setOptionsLoading(false)\n }\n }, [])\n\n useEffect(() => {\n if (async && debouncedQuery) handleSearch(debouncedQuery)\n }, [debouncedQuery, async, handleSearch])\n\n const isAllSelected = useMemo(() => {\n if (!multiple || !Array.isArray(selected) || !allOptions.length) return false\n return allOptions.length === selected.length\n }, [multiple, selected, allOptions])\n\n const handleToggleSelectAll = () => {\n if (isAllSelected) {\n onChange([] as unknown as T[])\n } else {\n onChange(allOptions as unknown as T[])\n }\n }\n\n const hasLeftGroup = leftGroup != null && leftGroup !== undefined\n\n return (\n <div\n className={buildClassName('group space-y-2', hasError && 'has-error', containerClass)}\n ref={containerRef}\n >\n {label && (\n <div className={buildClassName('flex items-center justify-between', labelWrapperClass)}>\n <Label className={labelClass} htmlFor={id} aria-required={required}>\n {label}\n </Label>\n {labelHint && <TextContent xsmall>{labelHint}</TextContent>}\n </div>\n )}\n\n <Combobox\n multiple={multiple}\n immediate={immediate}\n name={name}\n value={selected}\n onChange={comboboxOnChangeWrapper as any}\n onClose={() => setQuery('')}\n disabled={disabled}\n >\n {multiple ? (\n <div\n className={buildClassName(\n baseInputClass,\n 'flex flex-wrap gap-2 peer relative',\n hasLeftGroup ? (size === 'lg' ? 'ps-12' : size === 'sm' ? 'ps-8' : 'ps-10') : '',\n )}\n ref={forwardedRef as any}\n >\n {hasLeftGroup && (\n <span\n className={buildClassName(\n 'absolute left-0 top-0 h-full flex items-center justify-center text-gray-400 dark:text-gray-500',\n currentSize.group,\n )}\n >\n {leftGroup}\n </span>\n )}\n\n {isArray(selected) &&\n selected?.length > 0 &&\n selected.map((option, idx) => (\n <Badge\n key={`${getValue(option)}-${idx}`}\n theme=\"secondary\"\n size={currentSize.badgeSize}\n removable={!disabled}\n onRemove={() => removeSelection(idx)}\n >\n {getDisplayValue(option)}\n </Badge>\n ))}\n\n <ComboboxInput\n className=\"outline-none flex-1 dark:placeholder-gray-400 placeholder-gray-400 bg-transparent\"\n aria-label={name}\n value={query}\n autoComplete=\"off\"\n placeholder={selected?.length ? '' : placeholder}\n onChange={(e) => setQuery(e.target.value)}\n id={id}\n ref={inputRef}\n onKeyDown={(e) => {\n if (multiple && e.key === 'Backspace' && !query) {\n if (Array.isArray(selected) && selected.length > 0) {\n removeSelection(selected.length - 1)\n }\n }\n }}\n data-testid=\"combobox-input\"\n />\n\n <ComboboxButton\n className=\"group absolute inset-y-0 right-0 px-2.5 flex items-center justify-center\"\n data-testid=\"combobox-button\"\n >\n <ChevronDownIcon className={chevronIconClass} />\n </ComboboxButton>\n </div>\n ) : (\n <div className=\"relative\" ref={forwardedRef as any}>\n {hasLeftGroup && (\n <span\n className={buildClassName(\n 'absolute left-0 top-0 h-full flex items-center justify-center text-gray-400 dark:text-gray-500 z-10',\n currentSize.group,\n )}\n >\n {leftGroup}\n </span>\n )}\n\n <ComboboxInput\n aria-label={name}\n displayValue={(option: any) => (option ? getDisplayValue(option) : null)}\n autoComplete=\"off\"\n placeholder={placeholder}\n onChange={(event) => setQuery(event.target.value)}\n className={buildClassName(\n baseInputClass,\n hasLeftGroup ? (size === 'lg' ? 'ps-12' : size === 'sm' ? 'ps-8' : 'ps-10') : '',\n )}\n disabled={disabled}\n id={id}\n readOnly={!searchable}\n ref={inputRef}\n data-testid=\"combobox-input\"\n />\n\n {allowClear && !isEmpty(selected) && (\n <Button\n size=\"xs\"\n iconOnly\n aria-label=\"Clear selection\"\n theme=\"secondary\"\n variant=\"plain\"\n className=\"group absolute inset-y-0 right-8 h-6 top-2\"\n onClick={() => handleOnChangeInternal(multiple ? ([] as T[]) : null)}\n disabled={disabled}\n data-testid=\"combobox-clear-button\"\n noOutlineOnFocus\n >\n <XIcon className=\"size-4 stroke-gray-500 dark:stroke-gray-300\" />\n </Button>\n )}\n\n <ComboboxButton\n className=\"group absolute inset-y-0 right-0 px-2.5 flex items-center justify-center\"\n data-testid=\"combobox-button\"\n >\n <ChevronDownIcon className={chevronIconClass} />\n </ComboboxButton>\n </div>\n )}\n\n <ComboboxOptions\n anchor={{ to: 'bottom', gap: 5 }}\n as=\"div\"\n modal={modalDropdown}\n className={buildClassName(\n 'w-[var(--input-width)] rounded-lg border border-gray-200 dark:border-white/5 bg-white dark:bg-gray-800 p-1 [--anchor-gap:var(--spacing-1)]',\n '[--anchor-max-height:20rem]',\n 'origin-top border transition duration-200 ease-[cubic-bezier(0.4, 0.0, 0.2, 1)] data-[closed]:translate-y-[-15%] data-[closed]:opacity-0',\n dropdownContainerClass,\n )}\n transition\n data-testid=\"combobox-options\"\n >\n {/* Multi-Select \"Select All\" Action Bar */}\n {multiple && showSelectAll && allOptions.length > 0 && (\n <div className=\"pb-1 mb-1 border-b border-gray-200 dark:border-gray-700/80 px-3 pt-1 flex items-center justify-between\">\n <button\n type=\"button\"\n onClick={handleToggleSelectAll}\n className=\"text-xs font-semibold text-blue-600 dark:text-blue-400 hover:underline cursor-pointer\"\n >\n {isAllSelected ? 'Deselect All' : 'Select All'}\n </button>\n <span className=\"text-[11px] font-medium text-gray-400\">\n {Array.isArray(selected) ? selected.length : 0} of {allOptions.length}\n </span>\n </div>\n )}\n\n {optionsLoading ? (\n <BodyText\n data-testid=\"options-loading\"\n className=\"flex items-center justify-center py-2 px-3 select-none\"\n >\n <Loader size=\"sm\" />\n </BodyText>\n ) : shouldShowTypeToSearch ? (\n <BodyText className=\"flex items-center justify-between py-2 px-3 select-none\">\n Type to search...\n </BodyText>\n ) : (\n <div>\n {/* Render Grouped Options */}\n {filteredGroups\n ? filteredGroups.map((grp, gIdx) => (\n <div key={gIdx}>\n <div className=\"text-[11px] font-bold uppercase tracking-wider text-gray-400 dark:text-gray-500 px-3 py-1 select-none\">\n {grp.group}\n </div>\n {grp.options.map((option) => {\n const optVal = getValue(option)\n const isOptSelected = multiple\n ? isArray(selected) && selected.some((s) => getValue(s) === optVal)\n : selected && getValue(selected as T) === optVal\n\n return (\n <ComboboxOption\n key={optVal}\n disabled={(option as BaseOption).disabled}\n value={option}\n className=\"group rounded-lg py-1.5 px-3 select-none data-[focus]:bg-black/3 dark:data-[focus]:bg-white/10 data-disabled:opacity-50 cursor-pointer data-disabled:pointer-events-none\"\n >\n {renderOption ? (\n renderOption(option, Boolean(isOptSelected))\n ) : (\n <div className=\"flex items-center justify-between gap-2 dark:text-white group-data-[selected]:text-blue-600\">\n <span className=\"text-sm/6\">{getDisplayValue(option)}</span>\n <CheckIcon className=\"invisible size-5 dark:stroke-gray-300 group-data-[selected]:visible\" />\n </div>\n )}\n </ComboboxOption>\n )\n })}\n </div>\n ))\n : /* Render Standard Flat Options */\n filteredOptions.map((option) => {\n const optVal = getValue(option)\n const isOptSelected = multiple\n ? isArray(selected) && selected.some((s) => getValue(s) === optVal)\n : selected && getValue(selected as T) === optVal\n\n return (\n <ComboboxOption\n key={optVal}\n disabled={(option as BaseOption).disabled}\n value={option}\n className=\"group rounded-lg py-1.5 px-3 select-none data-[focus]:bg-black/3 dark:data-[focus]:bg-white/10 data-disabled:opacity-50 cursor-pointer data-disabled:pointer-events-none\"\n >\n {renderOption ? (\n renderOption(option, Boolean(isOptSelected))\n ) : (\n <div className=\"flex items-center justify-between gap-2 dark:text-white group-data-[selected]:text-blue-600\">\n <span className=\"text-sm/6\">{getDisplayValue(option)}</span>\n <CheckIcon className=\"invisible size-5 dark:stroke-gray-300 group-data-[selected]:visible\" />\n </div>\n )}\n </ComboboxOption>\n )\n })}\n\n {filteredOptions.length === 0 && !filteredGroups?.length && (\n <div\n data-testid=\"no-result-found\"\n className=\"flex items-center gap-2 py-1.5 px-3 select-none text-gray-500 dark:text-gray-400\"\n >\n {query ? (\n <>\n No results found for <span className=\"font-semibold\">{query}</span>\n </>\n ) : (\n noOptionsText\n )}\n </div>\n )}\n\n {allowAdd && (\n <ComboboxOption\n value={query}\n className=\"group rounded-lg py-1.5 px-3 cursor-pointer text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700\"\n onClick={() => void handleAddAndSelect(query)}\n >\n <div className=\"flex items-center gap-2\">\n <CirclePlusIcon className=\"size-4.5\" />\n <TextContent>\n {addNewText} \"{query}\"\n </TextContent>\n </div>\n </ComboboxOption>\n )}\n </div>\n )}\n </ComboboxOptions>\n </Combobox>\n\n {showErrorMessage && error && (\n <div className=\"mt-1\">\n <TextContent error small>\n {error}\n </TextContent>\n </div>\n )}\n\n {!error && helperText && (\n <div className=\"mt-1\">\n <TextContent muted small>\n {helperText}\n </TextContent>\n </div>\n )}\n </div>\n )\n },\n)\n\nSelectBox.displayName = 'SelectBox'\n","import { forwardRef, type ElementType } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { SkeletonComponent, SkeletonProps } from './Skeleton.types'\nimport type { PolymorphicRef } from '../common-type'\n\nconst VARIANT_CLASS: Record<string, string> = {\n text: 'rounded-md h-4 w-full my-1',\n circular: 'rounded-full shrink-0',\n rectangular: 'rounded-none w-full h-24',\n rounded: 'rounded-xl w-full h-24',\n}\n\nconst ANIMATION_CLASS: Record<string, string> = {\n pulse: 'animate-pulse bg-gray-200 dark:bg-gray-700',\n wave: 'bg-gradient-to-r from-gray-200 via-gray-100 to-gray-200 dark:from-gray-800 dark:via-gray-700 dark:to-gray-800 bg-[length:200%_100%] animate-[shimmer_1.5s_infinite]',\n none: 'bg-gray-200 dark:bg-gray-700',\n}\n\nexport const Skeleton = forwardRef((props: any, ref: any) => {\n const {\n as,\n variant = 'text',\n animation = 'pulse',\n width,\n height,\n borderRadius,\n className,\n style: customStyle,\n ...restProps\n } = props as SkeletonProps\n\n const Component = as || 'div'\n\n const inlineStyles: React.CSSProperties = {\n ...(width !== undefined ? { width: typeof width === 'number' ? `${width}px` : width } : {}),\n ...(height !== undefined\n ? { height: typeof height === 'number' ? `${height}px` : height }\n : {}),\n ...(borderRadius !== undefined\n ? { borderRadius: typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius }\n : {}),\n ...customStyle,\n }\n\n return (\n <Component\n ref={ref as PolymorphicRef<ElementType>}\n aria-hidden=\"true\"\n style={inlineStyles}\n className={buildClassName(\n 'block select-none pointer-events-none',\n VARIANT_CLASS[variant],\n ANIMATION_CLASS[animation],\n className,\n )}\n data-testid=\"skeleton\"\n {...restProps}\n />\n )\n}) as SkeletonComponent\n\nSkeleton.displayName = 'Skeleton'\n","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { QuantityStepperProps } from './QuantityStepper.types'\n\nconst MinusIcon = ({ className }: { className?: string }) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n)\n\nconst PlusIcon = ({ className }: { className?: string }) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n)\n\nconst BUTTON_SIZE_CLASS = {\n sm: 'size-7',\n md: 'size-9',\n lg: 'size-10',\n}\n\nconst ICON_SIZE_CLASS = {\n sm: 'size-3.5',\n md: 'size-4',\n lg: 'size-4.5',\n}\n\nconst INPUT_TEXT_CLASS = {\n sm: 'w-12 text-xs py-1',\n md: 'w-16 text-sm py-1.5',\n lg: 'w-20 text-base py-2',\n}\n\nexport const QuantityStepper = forwardRef<HTMLInputElement, QuantityStepperProps>((props, ref) => {\n const {\n value,\n onChange,\n min = 0,\n max = 99999,\n step = 1,\n label,\n size = 'md',\n prefix,\n suffix,\n disabled = false,\n className,\n onFocus,\n ...restProps\n } = props\n\n const handleDecrement = () => {\n if (disabled) return\n const next = Math.max(min, Number((value - step).toFixed(4)))\n onChange(next)\n }\n\n const handleIncrement = () => {\n if (disabled) return\n const next = Math.min(max, Number((value + step).toFixed(4)))\n onChange(next)\n }\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n if (raw === '') {\n onChange(0)\n return\n }\n const parsed = parseFloat(raw)\n if (!isNaN(parsed)) {\n onChange(Math.max(min, Math.min(max, parsed)))\n }\n }\n\n const isAtMin = disabled || value <= min\n const isAtMax = disabled || value >= max\n\n return (\n <div className={buildClassName('flex flex-col gap-1 inline-flex', className)}>\n {label && (\n <label className=\"block text-xs font-medium text-gray-700 dark:text-gray-300\">\n {label}\n </label>\n )}\n <div\n className={buildClassName(\n 'inline-flex items-center rounded-lg border border-gray-300 bg-white dark:border-gray-600 dark:bg-gray-800 shadow-xs focus-within:ring-2 focus-within:ring-[var(--ui-primary-ring)] focus-within:border-[var(--ui-primary)] transition-all',\n disabled ? 'opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-900' : '',\n )}\n data-testid=\"quantity-stepper\"\n >\n <button\n type=\"button\"\n disabled={isAtMin}\n onClick={handleDecrement}\n tabIndex={-1}\n aria-label=\"Decrease quantity\"\n className={buildClassName(\n 'flex items-center justify-center rounded-l-md text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 transition-colors',\n BUTTON_SIZE_CLASS[size],\n isAtMin ? 'opacity-30 hover:bg-transparent cursor-not-allowed' : 'cursor-pointer',\n )}\n data-testid=\"stepper-decrement\"\n >\n <MinusIcon className={ICON_SIZE_CLASS[size]} />\n </button>\n\n {prefix && <span className=\"pl-1 text-gray-400 dark:text-gray-500\">{prefix}</span>}\n\n <input\n ref={ref}\n type=\"number\"\n min={min}\n max={max}\n step={step}\n value={value === 0 ? '' : value}\n placeholder=\"0\"\n disabled={disabled}\n onFocus={(e) => {\n e.target.select()\n onFocus?.(e)\n }}\n onChange={handleInputChange}\n className={buildClassName(\n 'text-center font-semibold text-gray-900 dark:text-white bg-transparent focus:outline-none [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none',\n INPUT_TEXT_CLASS[size],\n )}\n data-testid=\"stepper-input\"\n {...restProps}\n />\n\n {suffix && <span className=\"pr-1 text-xs text-gray-500 dark:text-gray-400\">{suffix}</span>}\n\n <button\n type=\"button\"\n disabled={isAtMax}\n onClick={handleIncrement}\n tabIndex={-1}\n aria-label=\"Increase quantity\"\n className={buildClassName(\n 'flex items-center justify-center rounded-r-md text-gray-500 hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200 transition-colors',\n BUTTON_SIZE_CLASS[size],\n isAtMax ? 'opacity-30 hover:bg-transparent cursor-not-allowed' : 'cursor-pointer',\n )}\n data-testid=\"stepper-increment\"\n >\n <PlusIcon className={ICON_SIZE_CLASS[size]} />\n </button>\n </div>\n </div>\n )\n})\n\nQuantityStepper.displayName = 'QuantityStepper'\n","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { SegmentedControlProps } from './SegmentedControl.types'\n\nconst SIZE_CONTAINER_CLASS = {\n sm: 'p-0.5 gap-0.5 rounded-lg text-xs',\n md: 'p-1 gap-1 rounded-xl text-sm',\n lg: 'p-1.5 gap-1.5 rounded-xl text-base',\n}\n\nconst SIZE_OPTION_CLASS = {\n sm: 'px-2 py-1 text-xs font-medium rounded-md',\n md: 'px-3 py-1.5 text-sm font-semibold rounded-lg',\n lg: 'px-4 py-2 text-base font-semibold rounded-lg',\n}\n\nconst SIZE_ICON_CLASS = {\n sm: 'size-3.5',\n md: 'size-4',\n lg: 'size-5',\n}\n\nexport const SegmentedControl = forwardRef<HTMLDivElement, SegmentedControlProps>((props, ref) => {\n const {\n options,\n value,\n onChange,\n disabled = false,\n size = 'md',\n fullWidth = false,\n className,\n ...restProps\n } = props\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>, currentIndex: number) => {\n const enabledOptions = options.filter((opt) => !opt.disabled && !disabled)\n if (enabledOptions.length === 0) return\n\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault()\n const currentPos = enabledOptions.findIndex(\n (opt) => opt.value === options[currentIndex].value,\n )\n const nextPos = (currentPos + 1) % enabledOptions.length\n onChange(enabledOptions[nextPos].value)\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault()\n const currentPos = enabledOptions.findIndex(\n (opt) => opt.value === options[currentIndex].value,\n )\n const prevPos = (currentPos - 1 + enabledOptions.length) % enabledOptions.length\n onChange(enabledOptions[prevPos].value)\n } else if (e.key === 'Home') {\n e.preventDefault()\n onChange(enabledOptions[0].value)\n } else if (e.key === 'End') {\n e.preventDefault()\n onChange(enabledOptions[enabledOptions.length - 1].value)\n }\n }\n\n return (\n <div\n ref={ref}\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n className={buildClassName(\n 'inline-flex items-center border border-gray-200 bg-gray-100/80 dark:border-gray-700 dark:bg-gray-800/80',\n SIZE_CONTAINER_CLASS[size],\n fullWidth ? 'w-full flex' : '',\n disabled ? 'opacity-60 cursor-not-allowed' : '',\n className,\n )}\n data-testid=\"segmented-control\"\n {...restProps}\n >\n {options.map((option, index) => {\n const isSelected = value === option.value\n const isOptionDisabled = disabled || option.disabled\n\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-disabled={isOptionDisabled}\n tabIndex={isSelected && !isOptionDisabled ? 0 : -1}\n disabled={isOptionDisabled}\n title={option.title}\n onClick={() => {\n if (!isOptionDisabled) {\n onChange(option.value)\n }\n }}\n onKeyDown={(e) => handleKeyDown(e, index)}\n className={buildClassName(\n 'inline-flex items-center justify-center gap-1.5 transition-all duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary-ring)]',\n SIZE_OPTION_CLASS[size],\n fullWidth ? 'flex-1' : '',\n isOptionDisabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n isSelected\n ? 'bg-white text-[var(--ui-primary)] dark:bg-gray-700 dark:text-blue-400 shadow-xs font-semibold'\n : 'text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100',\n )}\n data-testid={`segmented-option-${option.value}`}\n >\n {option.icon && (\n <span\n className={buildClassName(\n 'shrink-0 inline-flex items-center justify-center',\n SIZE_ICON_CLASS[size],\n )}\n >\n {option.icon}\n </span>\n )}\n <span>{option.label}</span>\n </button>\n )\n })}\n </div>\n )\n})\n\nSegmentedControl.displayName = 'SegmentedControl'\n","import { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { StatusPillProps } from './StatusPill.types'\n\nconst THEME_PILL_CLASS: Record<string, { bg: string; dot: string }> = {\n success: {\n bg: 'bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 border-emerald-500/20 dark:border-emerald-500/30',\n dot: 'bg-emerald-500',\n },\n warning: {\n bg: 'bg-amber-500/10 text-amber-700 dark:text-amber-300 border-amber-500/20 dark:border-amber-500/30',\n dot: 'bg-amber-500',\n },\n danger: {\n bg: 'bg-rose-500/10 text-rose-700 dark:text-rose-300 border-rose-500/20 dark:border-rose-500/30',\n dot: 'bg-rose-500',\n },\n info: {\n bg: 'bg-blue-500/10 text-blue-700 dark:text-blue-300 border-blue-500/20 dark:border-blue-500/30',\n dot: 'bg-blue-500',\n },\n secondary: {\n bg: 'bg-gray-500/10 text-gray-600 dark:text-gray-400 border-gray-500/20 dark:border-gray-500/30',\n dot: 'bg-gray-400',\n },\n}\n\nconst SIZE_CLASS: Record<string, string> = {\n sm: 'px-2.5 py-0.5 text-xs',\n md: 'px-3 py-1 text-sm',\n}\n\nconst DOT_SIZE_CLASS: Record<string, string> = {\n sm: 'size-1.5',\n md: 'size-2',\n}\n\nexport const StatusPill = forwardRef<HTMLSpanElement, StatusPillProps>((props, ref) => {\n const {\n theme = 'secondary',\n size = 'sm',\n dot = true,\n pulse = false,\n className,\n children,\n ...restProps\n } = props\n\n const style = THEME_PILL_CLASS[theme] ?? THEME_PILL_CLASS.secondary\n\n return (\n <span\n ref={ref}\n className={buildClassName(\n 'inline-flex items-center gap-1.5 rounded-full border font-semibold whitespace-nowrap transition-colors',\n SIZE_CLASS[size],\n style.bg,\n className,\n )}\n data-testid={`status-pill-${theme}`}\n {...restProps}\n >\n {dot && (\n <span\n className={buildClassName(\n 'shrink-0 rounded-full',\n DOT_SIZE_CLASS[size],\n style.dot,\n pulse ? 'animate-pulse' : '',\n )}\n data-testid=\"status-pill-dot\"\n aria-hidden=\"true\"\n />\n )}\n <span>{children}</span>\n </span>\n )\n})\n\nStatusPill.displayName = 'StatusPill'\n","import { forwardRef, useState } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport { Drawer } from '../Drawer'\nimport type { StickyActionBarProps } from './StickyActionBar.types'\n\nconst ChevronUpIcon = ({ className }: { className?: string }) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <polyline points=\"18 15 12 9 6 15\" />\n </svg>\n)\n\nexport const StickyActionBar = forwardRef<HTMLDivElement, StickyActionBarProps>((props, ref) => {\n const {\n summaryContent,\n actionsContent,\n drawerContent,\n drawerTitle = 'Summary Details',\n position = 'fixed',\n containerMaxWidth = 'max-w-5xl',\n className,\n ...restProps\n } = props\n\n const [isDrawerOpen, setIsDrawerOpen] = useState(false)\n\n const positionClass =\n position === 'fixed'\n ? 'fixed bottom-0 left-0 right-0 z-30'\n : position === 'sticky'\n ? 'sticky bottom-0 z-30'\n : 'relative z-10'\n\n return (\n <>\n <div\n ref={ref}\n className={buildClassName(\n positionClass,\n 'border-t border-gray-200/80 bg-white/90 p-3.5 backdrop-blur-md shadow-lg dark:border-gray-800 dark:bg-gray-900/90 transition-all',\n className,\n )}\n data-testid=\"sticky-action-bar\"\n {...restProps}\n >\n <div\n className={buildClassName(\n 'mx-auto flex items-center justify-between gap-3',\n containerMaxWidth,\n )}\n >\n {/* Summary Content Slot */}\n {summaryContent && (\n <div className=\"flex items-center gap-2\">\n {drawerContent ? (\n <button\n type=\"button\"\n onClick={() => setIsDrawerOpen(true)}\n className=\"flex items-center gap-2 text-left transition-opacity hover:opacity-80 cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary-ring)] rounded-lg p-1 -m-1\"\n aria-label=\"Expand summary details\"\n data-testid=\"summary-trigger\"\n >\n <div>{summaryContent}</div>\n <ChevronUpIcon className=\"size-4 text-[var(--ui-primary)] dark:text-blue-400 shrink-0\" />\n </button>\n ) : (\n <div>{summaryContent}</div>\n )}\n </div>\n )}\n\n {/* Actions Stack Slot */}\n {actionsContent && (\n <div className=\"flex items-center gap-2 shrink-0 ml-auto\" data-testid=\"actions-stack\">\n {actionsContent}\n </div>\n )}\n </div>\n </div>\n\n {/* Optional Expandable Details Drawer */}\n {drawerContent && (\n <Drawer\n isOpen={isDrawerOpen}\n onClose={() => setIsDrawerOpen(false)}\n align=\"bottom\"\n size=\"full\"\n title={drawerTitle}\n showBackButton\n contentClass=\"px-4 pb-6 max-h-[calc(100svh-6rem)] overflow-y-auto\"\n >\n {drawerContent}\n </Drawer>\n )}\n </>\n )\n})\n\nStickyActionBar.displayName = 'StickyActionBar'\n","import React, { Fragment } from 'react'\nimport { Tab, TabGroup, TabList, TabPanels, TabPanel } from '@headlessui/react'\nimport { buildClassName } from '../../utils/build-classname'\nimport { TabsProps } from './Tabs.types'\n\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultIndex = 0,\n selectedIndex,\n onChange,\n variant = 'underline',\n orientation = 'horizontal',\n stretch = false,\n className = '',\n listClass = '',\n panelsClass = '',\n}) => {\n const isVertical = orientation === 'vertical'\n\n return (\n <TabGroup\n defaultIndex={defaultIndex}\n selectedIndex={selectedIndex}\n onChange={onChange}\n vertical={isVertical}\n className={buildClassName(\n isVertical && 'flex gap-4',\n stretch && !isVertical && 'w-full',\n className,\n )}\n >\n <TabList\n className={buildClassName(\n isVertical ? 'flex flex-col gap-1' : 'flex gap-2',\n stretch && !isVertical && 'w-full',\n listClass,\n )}\n >\n {tabs.map((tab, idx) => (\n <Tab key={tab.id ?? idx} disabled={tab.disabled} as={Fragment}>\n {({ selected }) => (\n <button\n disabled={tab.disabled}\n className={buildTabClass({\n selected,\n variant,\n stretch,\n isVertical,\n tabClass: tab.tabClass,\n })}\n >\n {tab.icon && <span className=\"inline-flex shrink-0\">{tab.icon}</span>}\n {tab.label}\n </button>\n )}\n </Tab>\n ))}\n </TabList>\n\n <TabPanels className={buildClassName(isVertical ? 'flex-1' : 'mt-3', panelsClass)}>\n {tabs.map((tab, idx) => (\n <TabPanel\n key={tab.id ?? idx}\n className={\n tab.panelClass !== undefined\n ? tab.panelClass\n : 'rounded-lg bg-white dark:bg-gray-800 p-4 shadow-sm'\n }\n >\n {tab.content}\n </TabPanel>\n ))}\n </TabPanels>\n </TabGroup>\n )\n}\n\nfunction buildTabClass({\n selected,\n variant,\n stretch,\n isVertical,\n tabClass,\n}: {\n selected: boolean\n variant: 'underline' | 'segmented' | 'solid'\n stretch?: boolean\n isVertical?: boolean\n tabClass?: string\n}) {\n const base = buildClassName(\n 'inline-flex items-center gap-1.5 text-sm font-medium transition focus:outline-none focus-visible:outline-none focus:ring-0 select-none',\n 'disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none',\n stretch && !isVertical && 'flex-1 justify-center',\n )\n\n let variantClass: string\n\n switch (variant) {\n case 'underline':\n variantClass = isVertical\n ? buildClassName(\n 'px-3 py-2 w-full text-left border-l-2',\n selected\n ? 'border-[var(--ui-primary)] text-gray-900 dark:text-white'\n : 'border-transparent text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white hover:border-gray-300 dark:hover:border-gray-600',\n )\n : buildClassName(\n 'px-3 py-1.5 relative text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white',\n selected &&\n 'text-gray-900 dark:text-white after:absolute after:z-10 after:left-0 after:right-0 after:-bottom-1 after:h-0.5 after:bg-[var(--ui-primary)]',\n )\n break\n\n case 'segmented':\n variantClass = buildClassName(\n 'px-3 py-1.5 rounded-lg',\n selected\n ? 'bg-[var(--ui-primary)] text-white'\n : 'text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700',\n )\n break\n\n case 'solid':\n variantClass = buildClassName(\n 'px-3 py-1.5 rounded-md',\n selected\n ? 'bg-gray-900 dark:bg-gray-700 text-white'\n : 'bg-gray-200 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-300 dark:hover:bg-gray-700',\n )\n break\n }\n\n return buildClassName(base, variantClass, tabClass)\n}\n","import {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n type ChangeEvent,\n} from 'react'\nimport { Label } from '../Label'\nimport { isEmpty } from '../../utils/is-empty'\nimport { buildClassName } from '../../utils/build-classname'\nimport { TextContent } from '../TextContent'\nimport type { TextareaProps, TextareaResize, TextareaSize } from './Textarea.types'\n\nconst sizeClasses: Record<TextareaSize, { textarea: string; text: string }> = {\n sm: {\n textarea: 'px-2.5 py-1.5 text-xs leading-5 min-h-[60px]',\n text: 'text-xs',\n },\n md: {\n textarea: 'px-3.5 py-2 text-sm leading-6 min-h-[80px]',\n text: 'text-sm',\n },\n lg: {\n textarea: 'px-4 py-2.5 text-base leading-7 min-h-[100px]',\n text: 'text-base',\n },\n}\n\nconst resizeClasses: Record<TextareaResize, string> = {\n none: 'resize-none',\n vertical: 'resize-y',\n horizontal: 'resize-x',\n both: 'resize',\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>((props, ref) => {\n const {\n name,\n id = name,\n label = null,\n labelHint = null,\n className = '',\n labelClass = '',\n labelWrapperClass = '',\n containerClass = '',\n error,\n showErrorMessage = true,\n rightGroup = null,\n leftGroup = null,\n size = 'md',\n autoSize = false,\n showCount = false,\n helperText,\n resize = 'vertical',\n value,\n defaultValue,\n onChange,\n maxLength,\n ...inputProps\n } = props\n\n const innerRef = useRef<HTMLTextAreaElement>(null)\n useImperativeHandle(ref, () => innerRef.current as HTMLTextAreaElement)\n\n const [uncontrolledValue, setUncontrolledValue] = useState<string>(String(defaultValue ?? ''))\n\n const isControlled = value !== undefined\n const currentVal = isControlled ? String(value ?? '') : uncontrolledValue\n const charLength = currentVal.length\n\n // Handle Auto-Resize behavior\n useEffect(() => {\n if (autoSize && innerRef.current) {\n innerRef.current.style.height = 'auto'\n innerRef.current.style.height = `${innerRef.current.scrollHeight}px`\n }\n }, [autoSize, currentVal])\n\n const handleTextareaChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n setUncontrolledValue(e.target.value)\n }\n onChange?.(e)\n }\n\n const hasError = !isEmpty(error)\n const hasRightGroup = rightGroup != null && rightGroup !== undefined\n const hasLeftGroup = leftGroup != null && leftGroup !== undefined\n const currentSize = sizeClasses[size] || sizeClasses.md\n\n return (\n <div className={buildClassName('group', hasError && 'has-error', containerClass)}>\n {label && (\n <div\n className={buildClassName('flex items-center justify-between mb-1.5', labelWrapperClass)}\n >\n <Label className={labelClass} htmlFor={id}>\n {label}\n </Label>\n {labelHint && <TextContent xsmall>{labelHint}</TextContent>}\n </div>\n )}\n <div className=\"relative\">\n {hasLeftGroup && (\n <span className=\"absolute top-2.5 left-3 flex items-center justify-center text-gray-400 dark:text-gray-500\">\n {leftGroup}\n </span>\n )}\n <textarea\n ref={innerRef}\n autoComplete=\"off\"\n {...inputProps}\n value={value}\n defaultValue={defaultValue}\n onChange={handleTextareaChange}\n maxLength={maxLength}\n name={name}\n id={id}\n className={buildClassName(\n 'transition-all duration-150',\n 'block w-full rounded-lg bg-white',\n currentSize.textarea,\n autoSize ? 'resize-none overflow-hidden' : resizeClasses[resize],\n 'text-gray-900 outline outline-1 -outline-offset-1',\n hasError\n ? '!outline-red-500 !ring-1 !ring-red-500/50 dark:!outline-red-500'\n : 'outline-gray-300 dark:outline-gray-600',\n 'focus:outline-[var(--ui-focus-ring)] focus:outline-2 focus:-outline-offset-2',\n 'dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 placeholder:text-gray-400 dark:text-white',\n 'disabled:pointer-events-none disabled:bg-gray-100 disabled:outline-gray-200',\n 'dark:disabled:bg-gray-800 dark:disabled:text-gray-600 dark:disabled:placeholder-gray-600 dark:disabled:outline-gray-700',\n hasRightGroup ? 'pe-10' : '',\n hasLeftGroup ? 'ps-10' : '',\n className,\n )}\n />\n {hasRightGroup && (\n <span className=\"absolute end-3 top-2.5 flex items-center justify-center text-gray-400 dark:text-gray-500\">\n {rightGroup}\n </span>\n )}\n </div>\n\n {/* Footer Row: Error / Helper Text & Live Character Count */}\n {(showErrorMessage && error) || helperText || showCount ? (\n <div className=\"mt-1.5 flex items-center justify-between gap-2 text-xs\">\n <div className=\"min-w-0 flex-1\">\n {showErrorMessage && error ? (\n <TextContent error small>\n {error}\n </TextContent>\n ) : helperText ? (\n <TextContent muted small>\n {helperText}\n </TextContent>\n ) : null}\n </div>\n\n {showCount && (\n <span\n className={buildClassName(\n 'text-[11px] font-medium shrink-0 ml-auto',\n maxLength && charLength >= maxLength\n ? 'text-red-500 font-semibold'\n : 'text-gray-400 dark:text-gray-500',\n )}\n >\n {charLength}\n {maxLength ? ` / ${maxLength}` : ''}\n </span>\n )}\n </div>\n ) : null}\n </div>\n )\n})\n\nTextarea.displayName = 'Textarea'\n","import React, { useEffect, useState } from 'react'\nimport { Transition } from '@headlessui/react'\nimport XIcon from '../Icons/X.svg'\nimport CheckCircle from '../Icons/CircleCheck.svg'\nimport AlertCircle from '../Icons/CircleAlert.svg'\nimport Info from '../Icons/Info.svg'\nimport AlertTriangle from '../Icons/TriangleAlert.svg'\n\nimport { Button } from '../Button'\nimport { TextContent } from '../TextContent'\nimport { buildClassName } from '../../utils/build-classname'\n\nimport type { ToastProps, ToastType, ToastVariant } from './Toast.types'\n\n/**\n * Icons for each toast type\n */\nconst iconMap: Record<ToastType, React.ReactNode> = {\n success: <CheckCircle className=\"size-5 text-[var(--ui-success)]\" />,\n error: <AlertCircle className=\"size-5 text-[var(--ui-danger)]\" />,\n info: <Info className=\"size-5 text-[var(--ui-info)]\" />,\n warning: <AlertTriangle className=\"size-5 text-[var(--ui-warning)]\" />,\n}\n\nconst filledIconMap: Record<ToastType, React.ReactNode> = {\n success: <CheckCircle className=\"size-5 text-white\" />,\n error: <AlertCircle className=\"size-5 text-white\" />,\n info: <Info className=\"size-5 text-white\" />,\n warning: <AlertTriangle className=\"size-5 text-white\" />,\n}\n\nconst textColorMap: Record<ToastType, string> = {\n success: 'text-[var(--ui-success-text)]',\n error: 'text-[var(--ui-danger-text)]',\n info: 'text-[var(--ui-info-text)]',\n warning: 'text-[var(--ui-warning-text)]',\n}\n\nconst progressBarColorMap: Record<ToastType, string> = {\n success: 'bg-[var(--ui-success)]',\n error: 'bg-[var(--ui-danger)]',\n info: 'bg-[var(--ui-info)]',\n warning: 'bg-[var(--ui-warning)]',\n}\n\nconst variantStyleMap: Record<ToastVariant, Record<ToastType, string>> = {\n accent: {\n success:\n 'bg-white dark:bg-gray-900 border-l-4 border-[var(--ui-success)] text-gray-900 dark:text-gray-100 shadow-lg border-y border-r border-gray-200/80 dark:border-gray-800/80',\n error:\n 'bg-white dark:bg-gray-900 border-l-4 border-[var(--ui-danger)] text-gray-900 dark:text-gray-100 shadow-lg border-y border-r border-gray-200/80 dark:border-gray-800/80',\n info: 'bg-white dark:bg-gray-900 border-l-4 border-[var(--ui-info)] text-gray-900 dark:text-gray-100 shadow-lg border-y border-r border-gray-200/80 dark:border-gray-800/80',\n warning:\n 'bg-white dark:bg-gray-900 border-l-4 border-[var(--ui-warning)] text-gray-900 dark:text-gray-100 shadow-lg border-y border-r border-gray-200/80 dark:border-gray-800/80',\n },\n filled: {\n success: 'bg-[var(--ui-success)] text-white shadow-lg',\n error: 'bg-[var(--ui-danger)] text-white shadow-lg',\n info: 'bg-[var(--ui-info)] text-white shadow-lg',\n warning: 'bg-[var(--ui-warning)] text-white shadow-lg',\n },\n outlined: {\n success:\n 'bg-white dark:bg-gray-900 border-2 border-[var(--ui-success)] text-gray-900 dark:text-gray-100 shadow-md',\n error:\n 'bg-white dark:bg-gray-900 border-2 border-[var(--ui-danger)] text-gray-900 dark:text-gray-100 shadow-md',\n info: 'bg-white dark:bg-gray-900 border-2 border-[var(--ui-info)] text-gray-900 dark:text-gray-100 shadow-md',\n warning:\n 'bg-white dark:bg-gray-900 border-2 border-[var(--ui-warning)] text-gray-900 dark:text-gray-100 shadow-md',\n },\n glass: {\n success:\n 'backdrop-blur-md bg-white/85 dark:bg-gray-900/85 border border-emerald-500/30 text-gray-900 dark:text-gray-100 shadow-xl',\n error:\n 'backdrop-blur-md bg-white/85 dark:bg-gray-900/85 border border-rose-500/30 text-gray-900 dark:text-gray-100 shadow-xl',\n info: 'backdrop-blur-md bg-white/85 dark:bg-gray-900/85 border border-blue-500/30 text-gray-900 dark:text-gray-100 shadow-xl',\n warning:\n 'backdrop-blur-md bg-white/85 dark:bg-gray-900/85 border border-amber-500/30 text-gray-900 dark:text-gray-100 shadow-xl',\n },\n}\n\nexport const Toast: React.FC<ToastProps & { isTop?: boolean }> = ({\n id,\n title,\n message,\n type,\n variant = 'accent',\n action,\n icon,\n showProgressBar = true,\n duration = 4000,\n isPaused = false,\n onClose,\n className,\n isTop = true,\n}) => {\n const [progress, setProgress] = useState(100)\n\n useEffect(() => {\n if (!showProgressBar || !duration || isPaused) return\n\n const intervalTime = 50\n const step = (intervalTime / duration) * 100\n\n const timer = setInterval(() => {\n setProgress((prev) => {\n if (prev <= 0) {\n clearInterval(timer)\n return 0\n }\n return prev - step\n })\n }, intervalTime)\n\n return () => clearInterval(timer)\n }, [showProgressBar, duration, isPaused])\n\n const enterFrom = isTop ? 'opacity-0 -translate-y-3 scale-95' : 'opacity-0 translate-y-3 scale-95'\n const leaveTo = isTop ? 'opacity-0 -translate-y-2 scale-95' : 'opacity-0 translate-y-2 scale-95'\n\n const renderedIcon = icon ?? (variant === 'filled' ? filledIconMap[type] : iconMap[type])\n\n return (\n <Transition\n appear\n show\n enter=\"transform transition duration-300 ease-out\"\n enterFrom={enterFrom}\n enterTo=\"opacity-100 translate-y-0 scale-100\"\n leave=\"transition duration-200 ease-in\"\n leaveFrom=\"opacity-100 translate-y-0 scale-100\"\n leaveTo={leaveTo}\n >\n <div\n role=\"status\"\n id={id.toString()}\n className={buildClassName(\n 'relative overflow-hidden flex items-start gap-3 rounded-xl px-4 py-3.5 min-w-[280px] max-w-md transition-all',\n variantStyleMap[variant][type],\n className,\n )}\n >\n {/* Icon */}\n <div className=\"shrink-0 mt-0.5\">\n {variant === 'filled' ? (\n renderedIcon\n ) : (\n <TextContent className={buildClassName(textColorMap[type])}>{renderedIcon}</TextContent>\n )}\n </div>\n\n {/* Content Body */}\n <div className=\"flex-1 flex flex-col gap-0.5\">\n {title && (\n <div\n className={buildClassName(\n 'font-semibold text-sm leading-snug',\n variant === 'filled' ? 'text-white' : 'text-gray-900 dark:text-gray-100',\n )}\n >\n {title}\n </div>\n )}\n <div\n className={buildClassName(\n 'text-sm font-medium leading-relaxed',\n variant === 'filled' ? 'text-white/95' : 'text-gray-700 dark:text-gray-300',\n )}\n >\n {message}\n </div>\n\n {/* Action Button */}\n {action && (\n <div className=\"mt-1.5\">\n <button\n type=\"button\"\n onClick={action.onClick}\n className={buildClassName(\n 'text-xs font-semibold underline underline-offset-2 transition-opacity focus:outline-none',\n variant === 'filled'\n ? 'text-white hover:opacity-85'\n : 'text-[var(--ui-primary)] hover:opacity-80',\n )}\n >\n {action.label}\n </button>\n </div>\n )}\n </div>\n\n {/* Close button */}\n <Button\n onClick={onClose}\n aria-label=\"Close toast\"\n className={buildClassName(\n 'shrink-0 mt-0.5 opacity-60 hover:opacity-100 transition',\n variant === 'filled' && 'text-white hover:text-white',\n )}\n iconOnly\n size=\"xs\"\n variant=\"plain\"\n theme={variant === 'filled' ? 'primary' : 'secondary'}\n noOutlineOnFocus\n >\n <XIcon className=\"size-4\" />\n </Button>\n\n {/* Progress Bar Countdown */}\n {showProgressBar && duration > 0 && (\n <div className=\"absolute bottom-0 left-0 right-0 h-1 bg-black/10 dark:bg-white/10 overflow-hidden\">\n <div\n className={buildClassName(\n 'h-full transition-all duration-75 ease-linear',\n variant === 'filled' ? 'bg-white/70' : progressBarColorMap[type],\n )}\n style={{ width: `${Math.max(0, progress)}%` }}\n />\n </div>\n )}\n </div>\n </Transition>\n )\n}\n\nToast.displayName = 'Toast'\n","import React, {\n createContext,\n useContext,\n useEffect,\n useState,\n type ReactNode,\n useRef,\n useCallback,\n useMemo,\n} from 'react'\nimport { Toast } from './Toast'\nimport type {\n IToast,\n ToastContextType,\n ToastOptions,\n ToastPlacement,\n ToastProviderProps,\n} from './Toast.types'\nimport { buildClassName } from '../../utils/build-classname'\n\nconst ToastContext = createContext<ToastContextType | undefined>(undefined)\nlet toastCounter = 0\n\nexport const useToast = (): ToastContextType => {\n const context = useContext(ToastContext)\n if (!context) throw new Error('useToast must be used within ToastProvider')\n return context\n}\n\nconst placementClass: Record<ToastPlacement, string> = {\n 'top-right': 'top-20 right-6 items-end',\n 'top-left': 'top-20 left-6 items-start',\n 'top-center': 'top-20 left-1/2 -translate-x-1/2 items-center',\n\n 'bottom-right': 'bottom-6 right-6 items-end',\n 'bottom-left': 'bottom-6 left-6 items-start',\n 'bottom-center': 'bottom-6 left-1/2 -translate-x-1/2 items-center',\n}\n\ninterface ToastMeta {\n timerId: any\n startTime: number\n remainingTime: number\n}\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({\n children,\n placement = 'top-right',\n maxToasts = 5,\n className,\n}) => {\n const [toasts, setToasts] = useState<IToast[]>([])\n const [pausedIds, setPausedIds] = useState<Set<number>>(new Set())\n const metaRefs = useRef<Map<number, ToastMeta>>(new Map())\n\n const clearTimer = (id: number) => {\n const meta = metaRefs.current.get(id)\n if (meta?.timerId) {\n clearTimeout(meta.timerId)\n meta.timerId = null\n }\n }\n\n const closeToast = useCallback((id: number) => {\n clearTimer(id)\n metaRefs.current.delete(id)\n setPausedIds((prev) => {\n const next = new Set(prev)\n next.delete(id)\n return next\n })\n setToasts((prev) => prev.filter((t) => t.id !== id))\n }, [])\n\n const dismissAll = useCallback(() => {\n metaRefs.current.forEach((meta) => {\n if (meta.timerId) clearTimeout(meta.timerId)\n })\n metaRefs.current.clear()\n setPausedIds(new Set())\n setToasts([])\n }, [])\n\n const startAutoClose = useCallback(\n (toastId: number, delay: number) => {\n clearTimer(toastId)\n\n const timerId = setTimeout(() => {\n closeToast(toastId)\n }, delay)\n\n const meta = metaRefs.current.get(toastId)\n if (meta) {\n meta.timerId = timerId\n meta.startTime = Date.now()\n meta.remainingTime = delay\n } else {\n metaRefs.current.set(toastId, {\n timerId,\n startTime: Date.now(),\n remainingTime: delay,\n })\n }\n },\n [closeToast],\n )\n\n useEffect(() => {\n const refs = metaRefs.current\n return () =>\n refs.forEach((meta) => {\n if (meta.timerId) clearTimeout(meta.timerId)\n })\n }, [])\n\n const showToast = useCallback(\n (message: ReactNode, options?: ToastOptions): number => {\n const id = ++toastCounter\n\n const newToast: IToast = {\n id,\n title: options?.title,\n message,\n type: options?.type ?? 'info',\n variant: options?.variant ?? 'accent',\n duration: options?.duration ?? 4000,\n autoClose: options?.autoClose ?? true,\n pauseOnHover: options?.pauseOnHover ?? true,\n showProgressBar: options?.showProgressBar ?? options?.autoClose !== false,\n action: options?.action,\n icon: options?.icon,\n }\n\n setToasts((prev) => {\n const updated = [...prev, newToast]\n if (updated.length > maxToasts) updated.shift()\n return updated\n })\n\n if (newToast.autoClose) {\n startAutoClose(id, newToast.duration)\n }\n\n return id\n },\n [maxToasts, startAutoClose],\n )\n\n // Hover pauses timer and tracks exact remaining milliseconds\n const handleMouseEnter = (toast: IToast) => {\n if (!toast.pauseOnHover || !toast.autoClose) return\n\n const meta = metaRefs.current.get(toast.id)\n if (meta) {\n const elapsed = Date.now() - meta.startTime\n meta.remainingTime = Math.max(0, meta.remainingTime - elapsed)\n clearTimer(toast.id)\n setPausedIds((prev) => new Set(prev).add(toast.id))\n }\n }\n\n // Mouse leave resumes timer with exact remaining milliseconds\n const handleMouseLeave = (toast: IToast) => {\n if (!toast.pauseOnHover || !toast.autoClose) return\n\n setPausedIds((prev) => {\n const next = new Set(prev)\n next.delete(toast.id)\n return next\n })\n\n const meta = metaRefs.current.get(toast.id)\n if (meta && meta.remainingTime > 0) {\n startAutoClose(toast.id, meta.remainingTime)\n } else if (meta && meta.remainingTime <= 0) {\n closeToast(toast.id)\n }\n }\n\n const toastHelpers = useMemo(\n () => ({\n show: (message: ReactNode, options?: ToastOptions) => showToast(message, options),\n success: (message: ReactNode, options?: ToastOptions) =>\n showToast(message, { ...options, type: 'success' }),\n error: (message: ReactNode, options?: ToastOptions) =>\n showToast(message, { ...options, type: 'error' }),\n info: (message: ReactNode, options?: ToastOptions) =>\n showToast(message, { ...options, type: 'info' }),\n warning: (message: ReactNode, options?: ToastOptions) =>\n showToast(message, { ...options, type: 'warning' }),\n dismiss: (id: number) => closeToast(id),\n dismissAll: () => dismissAll(),\n }),\n [showToast, closeToast, dismissAll],\n )\n\n return (\n <ToastContext.Provider value={{ showToast, closeToast, toast: toastHelpers }}>\n {children}\n\n {/* Toast Container */}\n <div\n className={buildClassName(\n 'fixed z-[9999] flex flex-col gap-3 pointer-events-none',\n placementClass[placement],\n className,\n )}\n >\n {toasts.map((toastItem) => (\n <div\n key={toastItem.id}\n className=\"pointer-events-auto\"\n onMouseEnter={() => handleMouseEnter(toastItem)}\n onMouseLeave={() => handleMouseLeave(toastItem)}\n >\n <Toast\n {...toastItem}\n isPaused={pausedIds.has(toastItem.id)}\n isTop={placement.startsWith('top')}\n onClose={() => closeToast(toastItem.id)}\n />\n </div>\n ))}\n </div>\n </ToastContext.Provider>\n )\n}\n\nToastProvider.displayName = 'ToastProvider'\n","import React from 'react'\nimport { ListChildComponentProps } from 'react-window'\nimport { buildClassName } from '../../utils/build-classname'\nimport { get } from '../../utils/get'\nimport type { DataTableColumn, DataTableDensity } from '../DataTable'\nimport { Checkbox } from '../Checkbox'\nimport type { VirtualizedRowProps } from './VirtualizedDataTable.types'\n\nconst DENSITY_CELL_CLASS: Record<DataTableDensity, string> = {\n compact: 'px-2 py-1.5',\n default: 'px-3 py-3',\n spacious: 'px-4 py-4',\n}\n\nexport const VirtualizedRow = ({\n index,\n style,\n data,\n}: ListChildComponentProps<VirtualizedRowProps>) => {\n const {\n items,\n columns,\n gridTemplate,\n onRowClick,\n rowClass,\n density = 'default',\n striped,\n selectable,\n getKey,\n isSelected,\n toggleRow,\n isRowSelectable,\n } = data\n const item = items[index]\n const isStriped = striped && index % 2 === 1\n const key = getKey?.(item, index) ?? index\n const rowSelectable = !isRowSelectable || isRowSelectable(item)\n\n const resolvedRowClass = !rowClass\n ? ''\n : typeof rowClass === 'function'\n ? rowClass(item, index)\n : rowClass\n\n const getCellClass = (col: DataTableColumn): string => {\n if (!col.cellClass) return ''\n if (typeof col.cellClass === 'function') return col.cellClass(item)\n return col.cellClass\n }\n\n const densityCellClass = DENSITY_CELL_CLASS[density]\n\n return (\n <div\n role=\"row\"\n className={buildClassName(\n 'grid border-b border-[var(--ui-border)] bg-white dark:bg-gray-900 group',\n onRowClick && 'cursor-pointer',\n isStriped && 'bg-gray-50 dark:bg-gray-800/40',\n resolvedRowClass,\n )}\n style={{\n ...style,\n display: 'grid',\n gridTemplateColumns: gridTemplate,\n minWidth: 'fit-content',\n }}\n onClick={onRowClick ? () => onRowClick(item, index) : undefined}\n >\n {selectable && (\n <div\n role=\"cell\"\n className={buildClassName(\n 'flex items-center whitespace-nowrap border-r last:border-r-0 border-[var(--ui-border)]',\n densityCellClass,\n isStriped && 'bg-gray-50 dark:bg-gray-800/40',\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <Checkbox\n aria-label=\"Select row\"\n checked={isSelected?.(key) ?? false}\n disabled={!rowSelectable}\n onChange={() => toggleRow?.(key)}\n />\n </div>\n )}\n {columns.map((col: DataTableColumn) => {\n const content = col.render ? col.render(item) : (get(item, col.name) ?? 'Not set')\n\n return (\n <div\n key={col.name}\n role=\"cell\"\n className={buildClassName(\n 'whitespace-nowrap border-r last:border-r-0 border-[var(--ui-border)]',\n densityCellClass,\n col.align === 'center' && 'text-center',\n col.align === 'right' && 'text-right',\n col.sticky === 'left' &&\n 'sticky left-0 z-10 bg-white dark:bg-gray-900 shadow-[2px_0_4px_rgba(0,0,0,0.05)]',\n col.sticky === 'right' &&\n 'sticky right-0 z-10 bg-white dark:bg-gray-900 shadow-[-2px_0_4px_rgba(0,0,0,0.05)]',\n isStriped && 'bg-gray-50 dark:bg-gray-800/40',\n getCellClass(col),\n )}\n >\n {content}\n </div>\n )\n })}\n </div>\n )\n}\n","import React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { FixedSizeList as List } from 'react-window'\nimport { buildClassName } from '../../utils/build-classname'\nimport { TextContent } from '../TextContent'\nimport { Checkbox } from '../Checkbox'\nimport { VirtualizedRow } from './VirtualizedRow'\nimport {\n type DataTableColumn,\n type DataTableDensity,\n getSortIcon,\n useRowSelection,\n} from '../DataTable'\nimport type { VirtualizedDataTableProps } from './VirtualizedDataTable.types'\n\nconst SELECTION_COLUMN_WIDTH = '44px'\n\nconst DENSITY_CELL_CLASS: Record<DataTableDensity, string> = {\n compact: 'px-2 py-1.5',\n default: 'px-3 py-3',\n spacious: 'px-4 py-4',\n}\n\nconst columnWidth = (col: DataTableColumn): string => {\n if (!col.width) return '1fr'\n if (typeof col.width === 'number') return `${col.width}px`\n return col.width\n}\n\nexport function VirtualizedDataTable<T extends Record<string, any> = Record<string, any>>({\n items,\n columns,\n sorting = {},\n onSort,\n loading = false,\n emptyMessage = 'No data available',\n containerClass = '',\n wrapperClass = '',\n onRowClick,\n rowClass,\n density = 'default',\n striped = false,\n rowHeight = 48,\n maxHeight = 400,\n overscanCount = 3,\n rowKey = 'id',\n selectable = false,\n selectedRowKeys,\n defaultSelectedRowKeys,\n onSelectionChange,\n isRowSelectable,\n}: VirtualizedDataTableProps<T>) {\n const scrollRef = useRef<any>(null)\n const outerRef = useRef<HTMLDivElement>(null)\n const headerRef = useRef<HTMLDivElement | null>(null)\n\n const getKey = useCallback(\n (item: T, idx: number): string | number => {\n if (typeof rowKey === 'function') return rowKey(item)\n return (item as any)[rowKey] ?? idx\n },\n [rowKey],\n )\n\n const { isSelected, toggleRow, toggleAll, allSelected, someSelected } = useRowSelection({\n items,\n getKey,\n selectedRowKeys,\n defaultSelectedRowKeys,\n onSelectionChange,\n isRowSelectable,\n })\n\n const gridTemplate = useMemo(() => {\n const widths = columns.map((col) => columnWidth(col))\n return selectable ? [SELECTION_COLUMN_WIDTH, ...widths].join(' ') : widths.join(' ')\n }, [columns, selectable])\n\n const densityCellClass = DENSITY_CELL_CLASS[density]\n\n const skeletonRows = Math.max(1, Math.floor(maxHeight / rowHeight))\n\n useEffect(() => {\n const el = outerRef.current\n if (!el) return\n const handler = () => {\n if (headerRef.current) headerRef.current.scrollLeft = el.scrollLeft\n }\n el.addEventListener('scroll', handler)\n return () => el.removeEventListener('scroll', handler)\n }, [])\n\n const handleSort = useCallback(\n (column: DataTableColumn) => {\n if (column.sortable) onSort?.(column as DataTableColumn<T>)\n },\n [onSort],\n )\n\n const itemData = useMemo(\n () => ({\n items,\n columns,\n gridTemplate,\n onRowClick,\n rowClass,\n density,\n striped,\n selectable,\n getKey,\n isSelected,\n toggleRow,\n isRowSelectable,\n }),\n [\n items,\n columns,\n gridTemplate,\n onRowClick,\n rowClass,\n density,\n striped,\n selectable,\n getKey,\n isSelected,\n toggleRow,\n isRowSelectable,\n ],\n )\n\n /* -------------------------------------------------------\n * Header\n * ------------------------------------------------------- */\n const Header = (\n <div ref={headerRef} className=\"overflow-hidden w-full\">\n <div\n className=\"grid bg-gray-50 dark:bg-gray-800 border-b border-[var(--ui-border)]\"\n style={{ gridTemplateColumns: gridTemplate, minWidth: 'fit-content' }}\n >\n {selectable && (\n <div\n role=\"columnheader\"\n className={buildClassName(\n 'flex items-center border-r last:border-r-0 border-[var(--ui-border)]',\n densityCellClass,\n )}\n >\n <Checkbox\n aria-label=\"Select all rows\"\n checked={allSelected}\n ref={(el) => {\n if (el) el.indeterminate = someSelected\n }}\n onChange={toggleAll}\n />\n </div>\n )}\n {columns.map((col) => (\n <div\n key={col.name}\n role=\"columnheader\"\n className={buildClassName(\n 'font-semibold text-sm whitespace-nowrap flex items-center',\n densityCellClass,\n 'border-r last:border-r-0 border-[var(--ui-border)]',\n col.sticky === 'left' &&\n 'sticky left-0 z-20 bg-gray-50 dark:bg-gray-800 shadow-[2px_0_4px_rgba(0,0,0,0.05)]',\n col.sticky === 'right' &&\n 'sticky right-0 z-20 bg-gray-50 dark:bg-gray-800 shadow-[-2px_0_4px_rgba(0,0,0,0.05)]',\n col.headerClass,\n )}\n >\n <TextContent\n role={col.sortable ? 'button' : undefined}\n className={buildClassName(\n col.sortable && 'inline-flex items-center gap-2 cursor-pointer select-none',\n )}\n onClick={() => handleSort(col)}\n >\n {col.label}\n {col.sortable ? getSortIcon(sorting[col.name]) : null}\n </TextContent>\n </div>\n ))}\n </div>\n </div>\n )\n\n const wrapperCls = buildClassName(\n 'rounded-lg border border-[var(--ui-border)] overflow-hidden',\n wrapperClass,\n )\n\n /* -------------------------------------------------------\n * Loading state\n * ------------------------------------------------------- */\n if (loading) {\n return (\n <div className={buildClassName('w-full rounded-lg relative', containerClass)}>\n <div className={wrapperCls}>\n {Header}\n <div style={{ height: maxHeight }} className=\"flex flex-col\">\n {Array.from({ length: skeletonRows }).map((_, idx) => (\n <div\n key={idx}\n data-testid=\"skeleton-row\"\n className=\"grid animate-pulse bg-white dark:bg-gray-900 border-b border-[var(--ui-border-muted)]\"\n style={{ gridTemplateColumns: gridTemplate, height: rowHeight }}\n >\n {selectable && <div className={densityCellClass} />}\n {columns.map((col) => (\n <div key={col.name} className={densityCellClass}>\n <div className=\"h-4 w-3/4 bg-gray-300 dark:bg-gray-700 rounded\" />\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n }\n\n /* -------------------------------------------------------\n * Empty state\n * ------------------------------------------------------- */\n if (items.length === 0) {\n return (\n <div className={buildClassName('w-full rounded-lg relative', containerClass)}>\n <div className={wrapperCls}>\n {Header}\n <div\n className=\"flex items-center justify-center text-gray-500 dark:text-gray-300\"\n style={{ height: maxHeight }}\n >\n {emptyMessage}\n </div>\n </div>\n </div>\n )\n }\n\n /* -------------------------------------------------------\n * Virtualized body\n * ------------------------------------------------------- */\n return (\n <div className={buildClassName('w-full rounded-lg relative', containerClass)}>\n <div className={wrapperCls}>\n {Header}\n <List\n ref={scrollRef}\n outerRef={outerRef}\n height={maxHeight}\n width=\"100%\"\n itemCount={items.length}\n itemSize={rowHeight}\n itemData={itemData}\n overscanCount={overscanCount}\n >\n {VirtualizedRow}\n </List>\n </div>\n </div>\n )\n}\n","import { useEffect, useState } from 'react'\n\nexport const useIsMobile = () => {\n const [isMobile, setIsMobile] = useState(false)\n\n useEffect(() => {\n const detect = () => {\n const width = window.innerWidth\n\n const isTouch = navigator.maxTouchPoints > 1 || window.matchMedia('(pointer: coarse)').matches\n\n setIsMobile(width < 600 && isTouch)\n }\n\n detect()\n window.addEventListener('resize', detect)\n return () => window.removeEventListener('resize', detect)\n }, [])\n\n return isMobile\n}\n","import { useEffect, useState } from 'react'\n\nexport const useIsTablet = () => {\n const [isTablet, setIsTablet] = useState(false)\n\n useEffect(() => {\n const detect = () => {\n const width = window.innerWidth\n\n const isTouch = navigator.maxTouchPoints > 1 || window.matchMedia('(pointer: coarse)').matches\n\n setIsTablet(width >= 600 && width <= 1024 && isTouch)\n }\n\n detect()\n window.addEventListener('resize', detect)\n return () => window.removeEventListener('resize', detect)\n }, [])\n\n return isTablet\n}\n","import { useIsMobile } from './use-is-mobile'\nimport { useIsTablet } from './use-is-tablet'\n\nexport const useIsTabletOrMobile = () => {\n const isMobile = useIsMobile()\n const isTablet = useIsTablet()\n\n return isMobile || isTablet\n}\n"],"names":["_path","_extends","_jsx","ChevronDownIcon","_jsxs","_circle","sizeClassMap","weightClassMap","React","BadgeCheckIcon","CircleXIcon","CircleAlertIcon","InfoIcon","TypeClassMap","XIcon","SIZE_CLASS","CircleCheckIcon","TriangleAlertIcon","alignClassMap","SIZE_CONTAINER_CLASS","SIZE_ICON_CLASS","SlashIcon","ChevronLeftIcon","ChevronRightIcon","ArrowDownNarrowWide","ArrowDownAZ","ArrowDownWideNarrow","ArrowDownZA","ArrowUpDown","DENSITY_CELL_CLASS","Fragment","_Fragment","FolderPlusIcon","sizeClasses","CheckIcon","CirclePlusIcon","CheckCircle","AlertCircle","Info","AlertTriangle","List"],"mappings":"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"}
1
+ {"version":3,"file":"react-tailwind.es.js","sources":["../src/utils/build-classname.ts","../src/components/Icons/ChevronDown.svg","../src/components/Accordion/Accordion.tsx","../src/components/Loader/index.tsx","../src/components/TextContent/TextContent.tsx","../src/components/Button/Button.tsx","../src/components/Icons/ChevronLeft.svg","../src/components/Icons/X.svg","../src/components/Drawer/Drawer.tsx","../src/components/ActionSheet/ActionSheet.tsx","../src/components/Icons/BadgeCheck.svg","../src/components/Icons/CircleX.svg","../src/components/Icons/CircleAlert.svg","../src/components/Icons/Info.svg","../src/components/Alert/Alert.tsx","../src/components/Badge/Badge.tsx","../src/components/Icons/TriangleAlert.svg","../src/components/Icons/CircleCheck.svg","../src/components/Banner/Banner.tsx","../src/components/BodyText/BodyText.tsx","../src/components/BottomNavigation/BottomNavigation.tsx","../src/components/Icons/Slash.svg","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Card/Card.tsx","../src/components/Label/Label.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/CheckboxGroup/CheckboxGroup.tsx","../src/components/Table/Table.tsx","../src/components/Pagination/usePagination.tsx","../src/components/Icons/ChevronRight.svg","../src/components/Pagination/Pagination.tsx","../src/utils/get.ts","../src/components/DataTable/DataTable.utils.ts","../src/components/Icons/ArrowDownWideNarrow.svg","../src/components/Icons/ArrowDownNarrowWide.svg","../src/components/Icons/ArrowDownAZ.svg","../src/components/Icons/ArrowDownZA.svg","../src/components/Icons/ArrowUpDown.svg","../src/components/DataTable/DataTable.icons.tsx","../src/components/DataTable/DataTable.tsx","../src/components/HeadingText/HeadingText.tsx","../src/components/DetailedInformation/DetailedInformation.tsx","../src/components/Dot/index.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Icons/FolderPlus.svg","../src/components/EmptyState/index.tsx","../src/components/FloatingActionButton/FloatingActionButton.tsx","../src/components/common-responsive.ts","../src/components/Flex/Flex.tsx","../src/components/Grid/Grid.tsx","../src/components/Input/Input.tsx","../src/components/PasswordInput/PasswordInput.tsx","../src/components/PinInput/PinInput.tsx","../src/components/PullToRefresh/PullToRefresh.tsx","../src/components/Radio/Radio.tsx","../src/components/RadioGroup/RadioGroup.tsx","../src/components/RadioSwitch/RadioSwitch.tsx","../src/utils/is-array.ts","../src/utils/is-empty.ts","../src/components/RangeInput/RangeInput.tsx","../src/components/RangeSlider/RangeSlider.tsx","../src/hooks/use-debounce.tsx","../src/components/Icons/Check.svg","../src/components/Icons/CirclePlus.svg","../src/components/Icons/Search.svg","../src/components/MobilePicker/MobilePicker.tsx","../src/components/WheelPicker/WheelPicker.tsx","../src/components/MobileHeader/MobileHeader.tsx","../src/components/MobileStepper/MobileStepper.tsx","../src/components/SwipeableRow/SwipeableRow.tsx","../src/components/DataList/DataList.tsx","../src/components/SelectBox/SelectBox.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/QuantityStepper/QuantityStepper.tsx","../src/components/SegmentedControl/SegmentedControl.tsx","../src/components/StatusPill/StatusPill.tsx","../src/components/StickyActionBar/StickyActionBar.tsx","../src/components/Tabs/Tabs.tsx","../src/components/SwipeableTabs/SwipeableTabs.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Toast/Toast.tsx","../src/components/Toast/ToastProvider.tsx","../src/components/VirtualizedDataTable/VirtualizedRow.tsx","../src/components/VirtualizedDataTable/VirtualizedDataTable.tsx","../src/hooks/use-is-mobile.tsx","../src/hooks/use-is-tablet.tsx","../src/hooks/use-is-tablet-or-mobile.tsx"],"sourcesContent":["import { twMerge } from 'tailwind-merge'\n\nexport const buildClassName = (...classes: any[]) => twMerge(classes.filter(Boolean))\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-chevron-down-icon lucide-chevron-down\"><path d=\"m6 9 6 6 6-6\"/></svg>","import React, { useId, useMemo, useState } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport ChevronDownIcon from '../Icons/ChevronDown.svg'\nimport type { AccordionItem, AccordionProps, AccordionVariant } from './Accordion.types'\n\nconst CONTAINER_CLASS: Record<AccordionVariant, string> = {\n bordered:\n 'rounded-lg border border-[var(--ui-border)] divide-y divide-[var(--ui-border)] bg-white dark:bg-gray-800 overflow-hidden',\n separated: 'space-y-2',\n plain: 'divide-y divide-[var(--ui-border)]',\n}\n\nconst ITEM_CLASS: Record<AccordionVariant, string> = {\n bordered: '',\n separated:\n 'rounded-lg border border-[var(--ui-border)] bg-white dark:bg-gray-800 overflow-hidden',\n plain: '',\n}\n\nconst HEADER_CLASS =\n 'flex w-full items-center justify-between gap-2 py-3 px-4 text-left text-sm font-medium ' +\n 'text-gray-900 dark:text-white hover:bg-gray-50 dark:hover:bg-gray-700/50 ' +\n 'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--ui-focus-ring)] ' +\n 'disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none ' +\n 'transition-colors duration-150 cursor-pointer'\n\nexport const Accordion: React.FC<AccordionProps> = ({\n items,\n type = 'single',\n variant = 'bordered',\n collapsible = true,\n defaultOpenIds,\n openIds: controlledOpenIds,\n onChange,\n expandIcon,\n className = '',\n titleClass = '',\n panelClass = '',\n}) => {\n const baseId = useId()\n\n const resolvedItems = useMemo(\n () => items.map((item, index) => ({ ...item, id: item.id ?? index })),\n [items],\n )\n\n const [uncontrolledOpenIds, setUncontrolledOpenIds] = useState<Array<string | number>>(\n defaultOpenIds ?? [],\n )\n\n const isControlled = controlledOpenIds !== undefined\n const openIds = isControlled ? controlledOpenIds : uncontrolledOpenIds\n\n const toggle = (id: string | number) => {\n const isOpen = openIds.includes(id)\n const next =\n type === 'single'\n ? isOpen\n ? collapsible\n ? []\n : openIds\n : [id]\n : isOpen\n ? openIds.filter((openId) => openId !== id)\n : [...openIds, id]\n\n if (next === openIds) return\n if (!isControlled) setUncontrolledOpenIds(next)\n onChange?.(next)\n }\n\n const renderIndicator = (isOpen: boolean) => {\n if (typeof expandIcon === 'function') return expandIcon(isOpen)\n\n return (\n <span\n className={buildClassName(\n 'inline-flex shrink-0 transition-transform duration-200',\n isOpen && 'rotate-180',\n )}\n >\n {expandIcon ?? <ChevronDownIcon className=\"size-4 stroke-gray-500 dark:stroke-gray-400\" />}\n </span>\n )\n }\n\n return (\n <div className={buildClassName(CONTAINER_CLASS[variant], className)}>\n {resolvedItems.map((item: AccordionItem & { id: string | number }) => {\n const isOpen = openIds.includes(item.id)\n const headerId = `${baseId}-${item.id}-header`\n const panelId = `${baseId}-${item.id}-panel`\n\n return (\n <div key={item.id} className={ITEM_CLASS[variant]}>\n <h3 className=\"m-0\">\n <button\n type=\"button\"\n id={headerId}\n aria-expanded={isOpen}\n aria-controls={panelId}\n disabled={item.disabled}\n onClick={() => toggle(item.id)}\n className={buildClassName(HEADER_CLASS, titleClass, item.titleClass)}\n >\n <span className=\"flex items-center gap-2\">\n {item.icon && <span className=\"inline-flex shrink-0\">{item.icon}</span>}\n {item.title}\n </span>\n {renderIndicator(isOpen)}\n </button>\n </h3>\n\n <div\n id={panelId}\n role=\"region\"\n aria-labelledby={headerId}\n className={buildClassName(\n 'grid transition-[grid-template-rows] duration-200 ease-in-out',\n isOpen ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]',\n )}\n >\n <div className=\"overflow-hidden\">\n <div\n className={buildClassName(\n 'px-4 pt-2 pb-4 text-sm text-gray-600 dark:text-gray-300',\n panelClass,\n item.panelClass,\n )}\n >\n {item.content}\n </div>\n </div>\n </div>\n </div>\n )\n })}\n </div>\n )\n}\n\nAccordion.displayName = 'Accordion'\n","import React from 'react'\nimport { buildClassName } from '../../utils/build-classname'\n\nimport './loader.css'\n\nexport type LoaderSize = 'xs' | 'sm' | 'md' | 'lg'\n\ntype LoaderSizeMap = {\n [k in LoaderSize]: string\n}\n\ninterface LoaderProps extends React.SVGAttributes<SVGSVGElement> {\n size?: LoaderSize\n className?: string\n}\n\nconst loaderSizeMap: LoaderSizeMap = {\n xs: 'size-4',\n sm: 'size-6',\n md: 'size-8',\n lg: 'size-10',\n}\n\nexport const Loader: React.FC<LoaderProps> = ({ className = '', size = 'md', ...props }) => {\n const hasColorClass = /\\btext-/.test(className)\n\n return (\n <svg\n className={buildClassName(\n !hasColorClass && 'text-blue-600 dark:text-white',\n loaderSizeMap[size],\n className,\n 'spinner',\n )}\n viewBox=\"0 0 50 50\"\n {...props}\n >\n <circle\n className=\"path\"\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeWidth=\"5\"\n />\n </svg>\n )\n}\n","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { TextContentProps, TextContentSize, TextContentWeight } from './TextContent.types'\n\nconst sizeClassMap: Record<TextContentSize, string> = {\n xs: 'text-xs/5',\n sm: 'text-sm/6',\n md: 'text-base/7',\n lg: 'text-lg/8',\n xl: 'text-xl/9',\n}\n\nconst weightClassMap: Record<TextContentWeight, string> = {\n light: 'font-light',\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n}\n\nexport const TextContent = forwardRef<HTMLElement, TextContentProps>((props, ref) => {\n const {\n as = 'span',\n size,\n weight,\n xsmall = false,\n small = false,\n strong = false,\n muted = false,\n error = false,\n success = false,\n warning = false,\n info = false,\n invert = false,\n monospace = false,\n truncate = false,\n className,\n children,\n ...rest\n } = props\n\n const textColorClass = error\n ? 'text-[var(--ui-text-danger)]'\n : success\n ? 'text-[var(--ui-success)]'\n : warning\n ? 'text-[var(--ui-warning)]'\n : info\n ? 'text-[var(--ui-info)]'\n : muted\n ? invert\n ? 'text-gray-300 dark:text-gray-600'\n : 'text-[var(--ui-text-muted)]'\n : invert\n ? 'text-white dark:text-black'\n : 'text-[var(--ui-text)]'\n\n return React.createElement(as, {\n ref,\n className: buildClassName(\n textColorClass,\n size ? sizeClassMap[size] : xsmall ? 'text-xs/5' : small ? 'text-sm/6' : undefined,\n weight ? weightClassMap[weight] : strong ? 'font-semibold' : undefined,\n monospace && 'font-mono',\n truncate && 'truncate inline-block max-w-full',\n className,\n ),\n ...rest,\n children,\n })\n})\n\nTextContent.displayName = 'TextContent'\n","import React, { ElementType, forwardRef, useMemo } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport { Loader } from '../Loader'\nimport { TextContent } from '../TextContent'\nimport type { ButtonComponent, ButtonProps, ButtonSize, ThemedButtonClass } from './Button.types'\nimport type { PolymorphicRef } from '../common-type'\n\n/**\n * Tailwind CSS classes for theme + variant combinations.\n */\nconst THEMED_BTN_CLASS: ThemedButtonClass = {\n primary: {\n default:\n 'text-white bg-[var(--ui-primary)] hover:bg-[var(--ui-primary-hover)] focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-primary-ring)] disabled:bg-[var(--ui-primary-disabled)]',\n outlined:\n 'text-[var(--ui-primary-text)] hover:text-white border border-[var(--ui-primary)] hover:bg-[var(--ui-primary)] focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-primary-ring)] disabled:text-[var(--ui-primary-disabled)] disabled:border-[var(--ui-primary-disabled)]',\n plain:\n 'text-[var(--ui-primary-text)] hover:bg-black/5 dark:hover:bg-gray-700 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-primary-ring)] disabled:text-[var(--ui-primary-disabled)]',\n },\n danger: {\n default:\n 'text-white bg-[var(--ui-danger)] hover:bg-[var(--ui-danger-hover)] focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-danger-ring)] disabled:bg-[var(--ui-danger-disabled)]',\n outlined:\n 'text-[var(--ui-danger-text)] hover:text-white border border-[var(--ui-danger)] hover:bg-[var(--ui-danger)] focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-danger-ring)] disabled:text-[var(--ui-danger-disabled)] disabled:border-[var(--ui-danger-disabled)]',\n plain:\n 'text-[var(--ui-danger-text)] hover:bg-black/5 dark:hover:bg-gray-700 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-danger-ring)] disabled:text-[var(--ui-danger-disabled)]',\n },\n secondary: {\n default:\n 'text-gray-700 bg-white border border-[var(--ui-border)] hover:bg-gray-100 dark:bg-gray-800 dark:text-white dark:hover:bg-gray-700 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-focus-ring)] disabled:bg-gray-200 dark:disabled:bg-gray-700',\n outlined:\n 'text-gray-700 hover:text-white border border-[var(--ui-border)] hover:bg-gray-700 dark:text-gray-200 dark:hover:text-white dark:hover:bg-gray-600 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-focus-ring)] disabled:text-gray-400 disabled:border-[var(--ui-border-muted)]',\n plain:\n 'text-gray-700 hover:bg-black/5 dark:text-gray-200 dark:hover:bg-gray-700 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--ui-focus-ring)] disabled:text-gray-400',\n },\n success: {\n default:\n 'text-white bg-emerald-600 hover:bg-emerald-700 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-emerald-500 disabled:bg-emerald-300 dark:disabled:bg-emerald-900',\n outlined:\n 'text-emerald-600 hover:text-white border border-emerald-600 hover:bg-emerald-600 dark:text-emerald-400 dark:border-emerald-500 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-emerald-500 disabled:opacity-50',\n plain:\n 'text-emerald-600 hover:bg-emerald-50 dark:text-emerald-400 dark:hover:bg-emerald-950/40 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-emerald-500 disabled:opacity-50',\n },\n warning: {\n default:\n 'text-white bg-amber-500 hover:bg-amber-600 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-amber-500 disabled:bg-amber-300 dark:disabled:bg-amber-900',\n outlined:\n 'text-amber-600 hover:text-white border border-amber-500 hover:bg-amber-500 dark:text-amber-400 dark:border-amber-500 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-amber-500 disabled:opacity-50',\n plain:\n 'text-amber-600 hover:bg-amber-50 dark:text-amber-400 dark:hover:bg-amber-950/40 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-amber-500 disabled:opacity-50',\n },\n}\n\nconst LOADER_TEXT_CLASS: ThemedButtonClass = {\n primary: {\n default: 'text-white',\n outlined: 'text-[var(--ui-primary-text)]',\n plain: 'text-[var(--ui-primary-text)]',\n },\n danger: {\n default: 'text-white',\n outlined: 'text-[var(--ui-danger-text)]',\n plain: 'text-[var(--ui-danger-text)]',\n },\n secondary: {\n default: 'text-gray-700 dark:text-white',\n outlined: 'text-gray-700 dark:text-gray-200',\n plain: 'text-gray-700 dark:text-gray-200',\n },\n success: {\n default: 'text-white',\n outlined: 'text-emerald-600 dark:text-emerald-400',\n plain: 'text-emerald-600 dark:text-emerald-400',\n },\n warning: {\n default: 'text-white',\n outlined: 'text-amber-600 dark:text-amber-400',\n plain: 'text-amber-600 dark:text-amber-400',\n },\n}\n\n/**\n * Generate size classes.\n */\nconst getBtnSizeClasses = (size: ButtonSize, iconOnly = false) => {\n switch (size) {\n case 'xs':\n return iconOnly ? 'h-7 w-7 p-1 rounded-sm text-xs' : 'h-7 px-2.5 rounded-sm gap-1 text-xs'\n\n case 'sm':\n return iconOnly ? 'h-8 w-8 p-1.5 rounded text-sm' : 'h-8 px-3 rounded gap-1.5 text-sm'\n\n case 'md':\n return iconOnly ? 'h-9 w-9 p-2 rounded-md text-sm' : 'h-9 px-4 rounded-md gap-2 text-sm'\n\n case 'lg':\n return iconOnly\n ? 'h-10 w-10 p-2.5 rounded-lg text-base'\n : 'h-10 px-5 rounded-lg gap-2 text-base'\n }\n}\n\n/**\n * Base shared tailwind classes.\n */\nconst BASE_BTN_CLASS =\n 'font-medium flex items-center justify-center shrink-0 cursor-pointer ' +\n 'disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-75 ' +\n 'active:scale-[0.98] transition-all duration-150 ease-out focus:outline-none'\n\nexport const Button = forwardRef(\n <C extends ElementType = 'button'>(\n { as, type, ...props }: ButtonProps<C>,\n ref: PolymorphicRef<C>,\n ) => {\n const {\n className = '',\n children,\n theme = 'primary',\n variant = 'default',\n size = 'md',\n leftIcon,\n rightIcon,\n fullWidth = false,\n loading = false,\n loadingText = '',\n rounded = false,\n disabled,\n iconOnly = false,\n noOutlineOnFocus = false,\n ...restProps\n } = props\n\n const Component = as || 'button'\n\n // Accessibility guard for icon-only buttons\n if (iconOnly && !(restProps as Record<string, unknown>)['aria-label']) {\n console.warn('[ui] <Button iconOnly> requires aria-label for accessibility.')\n }\n\n const resolvedDisabled = disabled || loading\n\n // Clean invalid props when not rendering a real button\n const { type: _ignoreType, disabled: _ignoreDisabled, ...cleanRest } = restProps\n\n const buttonSpecificProps =\n Component === 'button'\n ? {\n type: type ?? 'button',\n disabled: resolvedDisabled,\n }\n : {}\n\n const classes = useMemo(\n () =>\n buildClassName(\n BASE_BTN_CLASS,\n THEMED_BTN_CLASS[theme][variant],\n getBtnSizeClasses(size, iconOnly),\n !noOutlineOnFocus && 'focus:outline focus:outline-2 focus:outline-offset-2',\n rounded && 'rounded-full',\n fullWidth && 'w-full',\n variant === 'default' && 'shadow-xs hover:shadow-none disabled:shadow-none',\n className,\n ),\n [theme, variant, size, iconOnly, rounded, fullWidth, noOutlineOnFocus, className],\n )\n\n /**\n * SPECIAL CASE: iconOnly + loading → show spinner only\n */\n if (loading && iconOnly) {\n return (\n <Component ref={ref} className={classes} {...buttonSpecificProps} {...cleanRest}>\n <Loader\n data-testid=\"btn-loader-icon\"\n size=\"xs\"\n className={buildClassName(LOADER_TEXT_CLASS[theme][variant])}\n />\n </Component>\n )\n }\n\n const loaderIcon = (\n <Loader\n data-testid=\"btn-loader-icon\"\n size=\"xs\"\n className={buildClassName(LOADER_TEXT_CLASS[theme][variant])}\n />\n )\n\n return (\n <Component ref={ref} className={classes} {...buttonSpecificProps} {...cleanRest}>\n {loading && !loadingText ? (\n <span className=\"flex items-center gap-2\" aria-live=\"polite\">\n {loaderIcon}\n {children}\n </span>\n ) : loading && loadingText ? (\n <span className=\"flex items-center gap-2\" aria-live=\"polite\">\n {loaderIcon}\n <TextContent className={buildClassName(LOADER_TEXT_CLASS[theme][variant])}>\n {loadingText}\n </TextContent>\n </span>\n ) : (\n <>\n {leftIcon && <span className=\"shrink-0 flex items-center\">{leftIcon}</span>}\n {children}\n {rightIcon && <span className=\"shrink-0 flex items-center\">{rightIcon}</span>}\n </>\n )}\n </Component>\n )\n },\n) as ButtonComponent\n\nButton.displayName = 'Button'\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-chevron-left-icon lucide-chevron-left\"><path d=\"m15 18-6-6 6-6\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-x-icon lucide-x\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>","import React from 'react'\nimport { Dialog, DialogBackdrop, DialogPanel, DialogTitle } from '@headlessui/react'\nimport { buildClassName } from '../../utils/build-classname'\nimport { Button } from '../Button'\nimport ChevronLeftIcon from '../Icons/ChevronLeft.svg'\nimport XIcon from '../Icons/X.svg'\nimport type { AlignmentMap, DrawerProps, SizeMap } from './Drawer.types'\n\nconst alignmentMap: AlignmentMap = {\n center: 'items-center justify-center h-full',\n start: 'justify-start h-full',\n end: 'justify-end h-full',\n top: 'items-start justify-center w-full',\n bottom: 'items-end justify-center h-full',\n}\n\nconst panelAlignmentMap: AlignmentMap = {\n center: 'data-[closed]:scale-95 rounded-2xl',\n start: 'data-[closed]:-translate-x-1/2 rounded-r-2xl',\n end: 'data-[closed]:translate-x-1/2 rounded-l-2xl',\n top: 'data-[closed]:-translate-y-1/2 rounded-b-2xl',\n bottom:\n 'data-[closed]:translate-y-full rounded-t-2xl md:rounded-t-3xl max-h-[88vh] max-h-[88dvh]',\n}\n\nconst panelSizeMap: SizeMap = {\n xs: 'max-w-xs',\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n '2xl': 'max-w-2xl',\n full: 'w-full',\n}\n\nexport const Drawer: React.FC<DrawerProps> = ({\n isOpen,\n onClose = () => {},\n closeOnOutsideClick = true,\n align = 'end',\n size = 'md',\n backdrop = true,\n title,\n description,\n children,\n footer,\n footerSticky = false,\n panelClass = '',\n contentClass = '',\n titleClass = '',\n descriptionClass = '',\n titleSticky = false,\n showBackButton = false,\n showCloseButton = true,\n dragHandle,\n}) => {\n const showTitleSection = Boolean(title || description || showBackButton || showCloseButton)\n const shouldShowDragHandle = dragHandle ?? align === 'bottom'\n const [viewportHeight, setViewportHeight] = React.useState<number | null>(null)\n\n React.useEffect(() => {\n if (!isOpen) {\n setViewportHeight(null)\n return\n }\n\n const updateHeight = () => {\n if (typeof window !== 'undefined' && window.visualViewport) {\n setViewportHeight(window.visualViewport.height)\n }\n }\n\n updateHeight()\n const vv = typeof window !== 'undefined' ? window.visualViewport : null\n vv?.addEventListener('resize', updateHeight)\n vv?.addEventListener('scroll', updateHeight)\n\n return () => {\n vv?.removeEventListener('resize', updateHeight)\n vv?.removeEventListener('scroll', updateHeight)\n }\n }, [isOpen])\n\n const handleDialogClose = () => {\n if (closeOnOutsideClick) {\n onClose?.()\n }\n }\n\n return (\n <Dialog\n open={isOpen}\n as=\"div\"\n className=\"relative z-50 focus:outline-none\"\n onClose={handleDialogClose}\n transition\n >\n {backdrop && (\n <DialogBackdrop className=\"fixed inset-0 bg-black/40 backdrop-blur-xs transition-opacity duration-200\" />\n )}\n\n <div\n className=\"fixed left-0 top-0 w-full\"\n style={{ height: viewportHeight ? `${viewportHeight}px` : '100dvh' }}\n >\n <div className={buildClassName('flex', alignmentMap[align])}>\n <DialogPanel\n transition\n className={buildClassName(\n 'w-full max-w-full bg-white dark:bg-gray-800 shadow-xl flex flex-col min-w-0',\n 'overflow-y-auto overflow-x-hidden overscroll-contain touch-pan-y [-webkit-overflow-scrolling:touch] duration-200 ease-out data-[closed]:opacity-0',\n panelAlignmentMap[align],\n panelSizeMap[size],\n panelClass,\n )}\n >\n {/* Top drag handle indicator for mobile bottom sheet */}\n {shouldShowDragHandle && (\n <div\n className=\"w-12 h-1.5 rounded-full bg-gray-300 dark:bg-gray-600 mx-auto my-2.5 shrink-0 cursor-grab\"\n data-testid=\"drawer-drag-handle\"\n />\n )}\n\n {/* Header Section */}\n {showTitleSection && (\n <div\n className={buildClassName(\n 'space-y-1 py-3 px-4 md:px-6 flex flex-col border-b border-[var(--ui-border)] shrink-0',\n titleSticky && 'sticky top-0 bg-white dark:bg-gray-800 z-10',\n )}\n >\n <div className=\"flex items-center justify-between gap-3 min-w-0\">\n <div className=\"flex items-center gap-2 min-w-0 flex-1\">\n {showBackButton && (\n <Button\n iconOnly\n aria-label=\"Back\"\n variant=\"plain\"\n theme=\"secondary\"\n size=\"xs\"\n onClick={onClose}\n >\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n )}\n {title && (\n <DialogTitle\n as=\"h3\"\n className={buildClassName(\n 'text-lg font-semibold text-gray-900 dark:text-white truncate tracking-tight min-w-0',\n titleClass,\n )}\n >\n {title}\n </DialogTitle>\n )}\n </div>\n\n {showCloseButton && (\n <Button\n iconOnly\n aria-label=\"Close drawer\"\n variant=\"plain\"\n theme=\"secondary\"\n size=\"xs\"\n onClick={onClose}\n className=\"rounded-full text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 shrink-0\"\n >\n <XIcon className=\"size-4\" />\n </Button>\n )}\n </div>\n\n {description && (\n <p\n className={buildClassName(\n 'text-sm text-gray-500 dark:text-gray-400 font-normal truncate',\n descriptionClass,\n )}\n >\n {description}\n </p>\n )}\n </div>\n )}\n\n {/* Content Body */}\n <div className={buildClassName('flex-1 p-4 md:p-6 space-y-4 min-w-0', contentClass)}>\n {children}\n </div>\n\n {/* Footer Section */}\n {footer && (\n <div\n className={buildClassName(\n 'p-4 border-t border-[var(--ui-border-muted)] bg-white dark:bg-gray-800 shrink-0 min-w-0',\n footerSticky && 'sticky bottom-0 z-10',\n )}\n >\n {footer}\n </div>\n )}\n </DialogPanel>\n </div>\n </div>\n </Dialog>\n )\n}\n\nDrawer.displayName = 'Drawer'\n","import React from 'react'\nimport type { ActionSheetProps } from './ActionSheet.types'\nimport { Drawer } from '../Drawer'\nimport { Button } from '../Button'\nimport { buildClassName } from '../../utils/build-classname'\n\nexport function ActionSheet({\n isOpen,\n onClose,\n title,\n description,\n actions,\n showCancelButton = true,\n cancelLabel = 'Cancel',\n onCancel,\n closeOnBackdropClick = true,\n dragHandle = true,\n panelClass = '',\n containerClass = '',\n}: ActionSheetProps) {\n const handleItemClick = (action: (typeof actions)[0]) => {\n if (action.disabled) return\n action.onClick?.()\n onClose()\n }\n\n const handleCancelClick = () => {\n onCancel?.()\n onClose()\n }\n\n return (\n <Drawer\n isOpen={isOpen}\n onClose={onClose}\n align=\"bottom\"\n closeOnOutsideClick={closeOnBackdropClick}\n showCloseButton={false}\n dragHandle={dragHandle}\n panelClass={buildClassName('rounded-t-2xl max-h-[85vh] overflow-hidden', panelClass)}\n data-testid=\"action-sheet-drawer\"\n >\n <div className={buildClassName('space-y-4 py-1', containerClass)} data-testid=\"action-sheet\">\n {/* Header Title & Description */}\n {(title || description) && (\n <div className=\"text-center px-4 pb-2 border-b border-[var(--ui-border-muted)]\">\n {title && (\n <h3 className=\"text-sm font-bold text-gray-900 dark:text-white truncate\">{title}</h3>\n )}\n {description && (\n <p className=\"text-xs text-gray-500 dark:text-gray-400 mt-0.5 truncate\">\n {description}\n </p>\n )}\n </div>\n )}\n\n {/* Action Items Group */}\n <div className=\"space-y-1 bg-gray-50 dark:bg-gray-800/60 p-1.5 rounded-2xl border border-[var(--ui-border-muted)]\">\n {actions.map((action) => {\n const isDanger = action.theme === 'danger'\n const isPrimary = action.theme === 'primary'\n\n return (\n <button\n key={action.id}\n type=\"button\"\n disabled={action.disabled}\n onClick={() => handleItemClick(action)}\n className={buildClassName(\n 'w-full flex items-center gap-3.5 p-3 rounded-xl text-left transition-all duration-150 group cursor-pointer',\n action.disabled && 'opacity-50 cursor-not-allowed pointer-events-none',\n !action.disabled &&\n (isDanger\n ? 'hover:bg-red-50 dark:hover:bg-red-950/40 text-red-600 dark:text-red-400 font-semibold'\n : isPrimary\n ? 'hover:bg-blue-50 dark:hover:bg-blue-950/40 text-blue-600 dark:text-blue-400 font-semibold'\n : 'hover:bg-white dark:hover:bg-gray-800 text-gray-800 dark:text-gray-200 font-medium'),\n )}\n data-testid={`action-sheet-item-${action.id}`}\n >\n {action.icon && (\n <span\n className={buildClassName(\n 'shrink-0 text-base transition-colors',\n isDanger\n ? 'text-red-500 dark:text-red-400'\n : isPrimary\n ? 'text-blue-500 dark:text-blue-400'\n : 'text-gray-500 dark:text-gray-400 group-hover:text-gray-700 dark:group-hover:text-gray-200',\n )}\n >\n {action.icon}\n </span>\n )}\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-sm truncate\">{action.label}</div>\n {action.description && (\n <div className=\"text-xs text-gray-400 dark:text-gray-500 truncate font-normal mt-0.5\">\n {action.description}\n </div>\n )}\n </div>\n </button>\n )\n })}\n </div>\n\n {/* Bottom Separate Cancel Button */}\n {showCancelButton && (\n <div className=\"pt-1\">\n <Button\n theme=\"secondary\"\n size=\"lg\"\n fullWidth\n onClick={handleCancelClick}\n className=\"font-semibold text-sm rounded-xl py-3\"\n data-testid=\"action-sheet-cancel-btn\"\n >\n {cancelLabel}\n </Button>\n </div>\n )}\n </div>\n </Drawer>\n )\n}\n\nActionSheet.displayName = 'ActionSheet'\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-badge-check-icon lucide-badge-check\"><path d=\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\"/><path d=\"m9 12 2 2 4-4\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-circle-x-icon lucide-circle-x\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m15 9-6 6\"/><path d=\"m9 9 6 6\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-circle-alert-icon lucide-circle-alert\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\"/><line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-info-icon lucide-info\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4\"/><path d=\"M12 8h.01\"/></svg>","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport BadgeCheckIcon from '../Icons/BadgeCheck.svg'\nimport CircleXIcon from '../Icons/CircleX.svg'\nimport CircleAlertIcon from '../Icons/CircleAlert.svg'\nimport InfoIcon from '../Icons/Info.svg'\nimport XIcon from '../Icons/X.svg'\nimport { Button } from '../Button'\nimport type { AlertProps } from './Alert.types'\n\nconst AlertTypeIconMap = {\n success: BadgeCheckIcon,\n danger: CircleXIcon,\n warning: CircleAlertIcon,\n info: InfoIcon,\n}\n\nconst TypeClassMap = {\n success:\n 'bg-[var(--ui-success-light)] ring-[var(--ui-success-ring-subtle)] text-[var(--ui-success-text)]',\n danger:\n 'bg-[var(--ui-danger-light)] ring-[var(--ui-danger-ring-subtle)] text-[var(--ui-danger-text)]',\n warning:\n 'bg-[var(--ui-warning-light)] ring-[var(--ui-warning-ring-subtle)] text-[var(--ui-warning-text)]',\n info: 'bg-[var(--ui-info-light)] ring-[var(--ui-info-ring-subtle)] text-[var(--ui-info-text)]',\n}\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>((props, ref) => {\n const {\n type = 'info',\n className,\n message,\n children,\n removable = false,\n onRemove,\n icon,\n title,\n ...restProps\n } = props\n\n const DefaultIcon = AlertTypeIconMap[type] || InfoIcon\n const iconNode =\n icon !== undefined ? (\n icon\n ) : (\n <DefaultIcon className=\"size-5 shrink-0\" data-testid={`alert-${type}-icon`} />\n )\n\n return (\n <div\n ref={ref}\n className={buildClassName(\n 'flex items-center justify-between rounded-md p-3 text-sm ring-1 ring-inset gap-2',\n TypeClassMap[type],\n className,\n )}\n {...restProps}\n >\n <span className=\"inline-flex items-start gap-2 min-w-0\">\n {iconNode && <span className=\"shrink-0 inline-flex mt-0.5\">{iconNode}</span>}\n <span className=\"inline-flex flex-col gap-0.5 min-w-0\">\n {title && <span className=\"font-semibold\">{title}</span>}\n <span className=\"inline-flex items-center\">{message ?? children}</span>\n </span>\n </span>\n {removable && (\n <Button\n iconOnly\n aria-label=\"Dismiss alert\"\n size=\"xs\"\n variant=\"plain\"\n theme=\"secondary\"\n className=\"hover:bg-black/10 dark:hover:bg-white/10 shrink-0\"\n onClick={() => onRemove?.()}\n data-testid=\"alert-remove-btn\"\n >\n <XIcon className=\"size-4.5\" data-testid=\"alert-remove-icon\" />\n </Button>\n )}\n </div>\n )\n})\n\nAlert.displayName = 'Alert'\n","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport XIcon from '../Icons/X.svg'\nimport { BadgeProps } from './Badge.types'\nimport { TextContent } from '../TextContent'\n\nconst ThemeClassMap: Record<string, string> = {\n success:\n 'bg-[var(--ui-success-light)] text-[var(--ui-success-text)] ring-[var(--ui-success-ring-subtle)]',\n danger:\n 'bg-[var(--ui-danger-light)] text-[var(--ui-danger-text)] ring-[var(--ui-danger-ring-subtle)]',\n warning:\n 'bg-[var(--ui-warning-light)] text-[var(--ui-warning-text)] ring-[var(--ui-warning-ring-subtle)]',\n info: 'bg-[var(--ui-info-light)] text-[var(--ui-info-text)] ring-[var(--ui-info-ring-subtle)]',\n primary: 'bg-[var(--ui-info-light)] text-[var(--ui-info-text)] ring-[var(--ui-info-ring-subtle)]',\n secondary:\n 'bg-gray-50 dark:bg-gray-700 text-gray-700 dark:text-gray-200 ring-[var(--ui-secondary-ring-subtle)]',\n}\n\nconst SIZE_CLASS = {\n sm: 'text-xs py-0.5 px-2',\n md: 'text-xs py-1 px-3',\n}\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>((props, ref) => {\n const {\n theme = 'info',\n className,\n children,\n removable = false,\n rounded = false,\n onRemove,\n size = 'md',\n icon,\n ...restProps\n } = props\n\n return (\n <TextContent\n ref={ref}\n className={buildClassName(\n 'inline-flex items-center gap-1 font-medium ring-1 ring-inset',\n SIZE_CLASS[size],\n ThemeClassMap[theme] || ThemeClassMap.info,\n rounded ? 'rounded-full' : 'rounded-md',\n icon ? 'pl-2' : '',\n removable ? 'pr-1' : '',\n className,\n )}\n data-testid={`badge-${theme}`}\n {...restProps}\n >\n {icon && <span className=\"shrink-0 inline-flex\">{icon}</span>}\n {children}\n {removable && (\n <XIcon\n className=\"size-4 shrink-0 hover:bg-black/10 dark:hover:bg-white/10 rounded-sm cursor-pointer\"\n role=\"button\"\n tabIndex={0}\n aria-label=\"Remove\"\n onClick={() => onRemove?.()}\n onKeyDown={(e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onRemove?.()\n }\n }}\n />\n )}\n </TextContent>\n )\n})\n\nBadge.displayName = 'Badge'\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-triangle-alert-icon lucide-triangle-alert\"><path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"/><path d=\"M12 9v4\"/><path d=\"M12 17h.01\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-circle-check-icon lucide-circle-check\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m9 12 2 2 4-4\"/></svg>","import React, { forwardRef } from 'react'\nimport TriangleAlertIcon from '../Icons/TriangleAlert.svg'\nimport CircleXIcon from '../Icons/CircleX.svg'\nimport CircleCheckIcon from '../Icons/CircleCheck.svg'\nimport InfoIcon from '../Icons/Info.svg'\nimport XIcon from '../Icons/X.svg'\nimport { buildClassName } from '../../utils/build-classname'\nimport { Button } from '../Button'\nimport { BannerProps } from './Banner.types'\n\nconst sizeMap = {\n xs: 'size-4',\n sm: 'size-5',\n md: 'size-6',\n lg: 'size-8',\n xl: 'size-10',\n}\n\nconst IconMap = {\n info: InfoIcon,\n error: CircleXIcon,\n success: CircleCheckIcon,\n warning: TriangleAlertIcon,\n}\n\nconst TypeClassMap = {\n info: 'bg-[var(--ui-info-light)] ring-[var(--ui-info-ring-subtle)] text-[var(--ui-info-text)]',\n error:\n 'bg-[var(--ui-danger-light)] ring-[var(--ui-danger-ring-subtle)] text-[var(--ui-danger-text)]',\n success:\n 'bg-[var(--ui-success-light)] ring-[var(--ui-success-ring-subtle)] text-[var(--ui-success-text)]',\n warning:\n 'bg-[var(--ui-warning-light)] ring-[var(--ui-warning-ring-subtle)] text-[var(--ui-warning-text)]',\n}\n\nexport const Banner = forwardRef<HTMLDivElement, BannerProps>((props, ref) => {\n const {\n type = 'info',\n iconSize = 'sm',\n children,\n icon,\n removable = false,\n onRemove,\n className,\n ...restProps\n } = props\n\n const DefaultIcon = IconMap[type]\n const iconNode =\n icon !== undefined ? (\n icon\n ) : (\n <DefaultIcon\n data-testid={`banner-${type}-icon`}\n className={buildClassName('shrink-0', sizeMap[iconSize])}\n />\n )\n\n return (\n <div\n ref={ref}\n className={buildClassName(\n 'text-sm rounded-md flex w-full p-3 items-center gap-3 ring-1 ring-inset',\n TypeClassMap[type],\n className,\n )}\n data-testid={`banner-${type}`}\n {...restProps}\n >\n {iconNode}\n <div className=\"flex items-center w-full justify-between\">{children}</div>\n {removable && (\n <Button\n iconOnly\n aria-label=\"Dismiss banner\"\n size=\"xs\"\n variant=\"plain\"\n theme=\"secondary\"\n className=\"hover:bg-black/10 dark:hover:bg-white/10 shrink-0\"\n onClick={() => onRemove?.()}\n data-testid=\"banner-remove-btn\"\n >\n <XIcon className=\"size-4.5\" data-testid=\"banner-remove-icon\" />\n </Button>\n )}\n </div>\n )\n})\n\nBanner.displayName = 'Banner'\n","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { BodyTextAlign, BodyTextProps, BodyTextSize, BodyTextWeight } from './BodyText.types'\n\nconst sizeClassMap: Record<BodyTextSize, string> = {\n xs: 'text-xs/5',\n sm: 'text-sm/6',\n md: 'text-base/7',\n lg: 'text-lg/8',\n xl: 'text-xl/9',\n}\n\nconst weightClassMap: Record<BodyTextWeight, string> = {\n light: 'font-light',\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n}\n\nconst alignClassMap: Record<BodyTextAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n}\n\nconst clampClassMap = {\n 1: 'line-clamp-1',\n 2: 'line-clamp-2',\n 3: 'line-clamp-3',\n 4: 'line-clamp-4',\n}\n\nexport const BodyText = forwardRef<HTMLParagraphElement, BodyTextProps>((props, ref) => {\n const {\n as = 'p',\n size,\n weight,\n small = false,\n strong = false,\n muted = false,\n error = false,\n success = false,\n warning = false,\n info = false,\n inline = false,\n invert = false,\n align,\n truncate = false,\n clamp,\n className,\n children,\n ...rest\n } = props\n\n const textColorClass = error\n ? 'text-[var(--ui-text-danger)]'\n : success\n ? 'text-[var(--ui-success)]'\n : warning\n ? 'text-[var(--ui-warning)]'\n : info\n ? 'text-[var(--ui-info)]'\n : muted\n ? invert\n ? 'text-gray-300 dark:text-gray-600'\n : 'text-[var(--ui-text-muted)]'\n : invert\n ? 'text-white dark:text-black'\n : 'text-[var(--ui-text)]'\n\n return React.createElement(as, {\n ref,\n className: buildClassName(\n textColorClass,\n size ? sizeClassMap[size] : small && 'text-sm/6',\n weight ? weightClassMap[weight] : strong && 'font-semibold',\n align && alignClassMap[align],\n inline && 'inline-flex items-center gap-2',\n truncate && 'truncate',\n clamp && clampClassMap[clamp],\n className,\n ),\n ...rest,\n children,\n })\n})\n\nBodyText.displayName = 'BodyText'\n","import React from 'react'\nimport type { BottomNavigationProps, BottomNavigationItem } from './BottomNavigation.types'\nimport { buildClassName } from '../../utils/build-classname'\n\nexport function BottomNavigation({\n items,\n activeId,\n onChange,\n fixed = true,\n showLabels = 'always',\n theme = 'light',\n activeIndicatorStyle = 'line',\n containerClass = '',\n itemClass = '',\n}: BottomNavigationProps) {\n const handleTabClick = (item: BottomNavigationItem) => {\n if (item.disabled) return\n item.onClick?.()\n onChange(item.id)\n }\n\n const themeStyles = {\n light:\n 'bg-white dark:bg-gray-900 border-t border-[var(--ui-border)] text-gray-600 dark:text-gray-400',\n dark: 'bg-gray-900 text-gray-400 border-t border-gray-800',\n primary: 'bg-blue-600 text-blue-100 border-t border-blue-700',\n }[theme]\n\n return (\n <nav\n aria-label=\"Bottom Navigation\"\n className={buildClassName(\n 'w-full flex items-center justify-around select-none shadow-lg transition-colors relative',\n fixed && 'fixed bottom-0 left-0 right-0 z-40',\n 'pb-[env(safe-area-inset-bottom,6px)] px-2',\n themeStyles,\n containerClass,\n )}\n data-testid=\"bottom-navigation\"\n >\n {items.map((item) => {\n const isActive = item.id === activeId\n const showLabelText = showLabels === 'always' || (showLabels === 'active' && isActive)\n\n const activeItemColor = {\n light: 'text-blue-600 dark:text-blue-400 font-bold',\n dark: 'text-white font-bold',\n primary: 'text-white font-bold',\n }[theme]\n\n const inactiveItemColor = {\n light:\n 'text-gray-500 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 font-medium',\n dark: 'text-gray-400 hover:text-gray-200 font-medium',\n primary: 'text-blue-200 hover:text-white font-medium',\n }[theme]\n\n const pillActiveStyles = {\n light:\n 'bg-blue-100 dark:bg-blue-950/80 text-blue-600 dark:text-blue-400 shadow-xs scale-105',\n dark: 'bg-gray-800 text-white ring-1 ring-gray-700 shadow-xs scale-105',\n primary: 'bg-white/25 text-white shadow-xs scale-105',\n }[theme]\n\n const badgeColor = {\n danger: 'bg-red-500 text-white',\n info: 'bg-blue-500 text-white',\n success: 'bg-emerald-500 text-white',\n }[item.badgeVariant || 'danger']\n\n return (\n <button\n key={item.id}\n type=\"button\"\n disabled={item.disabled}\n onClick={() => handleTabClick(item)}\n className={buildClassName(\n 'flex-1 flex flex-col items-center justify-center pt-2 pb-1.5 px-1 transition-all duration-200 relative cursor-pointer group',\n item.disabled && 'opacity-40 cursor-not-allowed pointer-events-none',\n isActive ? activeItemColor : inactiveItemColor,\n itemClass,\n )}\n data-testid={`bottom-nav-item-${item.id}`}\n aria-selected={isActive}\n >\n {/* Active Indicator Bar on Top Border */}\n {activeIndicatorStyle === 'line' && isActive && (\n <span\n className={buildClassName(\n 'absolute -top-[1px] h-0.75 w-9 rounded-full transition-all duration-200 z-10',\n theme === 'primary' ? 'bg-white' : 'bg-blue-600 dark:bg-blue-400',\n )}\n />\n )}\n\n {/* Icon & Badge Container */}\n <div\n className={buildClassName(\n 'relative inline-flex items-center justify-center transition-all duration-200',\n activeIndicatorStyle === 'pill'\n ? buildClassName(\n 'px-4 py-1 rounded-full',\n isActive\n ? pillActiveStyles\n : 'group-hover:bg-gray-100/50 dark:group-hover:bg-gray-800/40',\n )\n : 'px-1 py-0.5',\n )}\n >\n <span className=\"text-xl transition-transform duration-150 group-active:scale-95\">\n {isActive && item.activeIcon ? item.activeIcon : item.icon}\n </span>\n\n {/* Notification Badge */}\n {item.badge !== undefined && item.badge !== null && (\n <span\n className={buildClassName(\n 'absolute -top-1 -right-1 min-w-[16px] h-4 px-1 rounded-full text-[10px] font-bold flex items-center justify-center shadow-xs z-10',\n badgeColor,\n )}\n data-testid={`bottom-nav-badge-${item.id}`}\n >\n {item.badge}\n </span>\n )}\n </div>\n\n {/* Label */}\n {showLabelText && (\n <span\n className={buildClassName(\n 'text-[11px] leading-tight mt-1 truncate max-w-full transition-colors duration-150',\n isActive ? 'font-bold' : 'font-medium opacity-90',\n )}\n >\n {item.label}\n </span>\n )}\n\n {/* Active Dot Indicator */}\n {activeIndicatorStyle === 'dot' && isActive && (\n <span\n className={buildClassName(\n 'size-1.5 rounded-full mt-1 transition-all duration-200',\n theme === 'primary' ? 'bg-white' : 'bg-blue-600 dark:bg-blue-400',\n )}\n />\n )}\n </button>\n )\n })}\n </nav>\n )\n}\n\nBottomNavigation.displayName = 'BottomNavigation'\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-slash-icon lucide-slash\"><path d=\"M22 2 2 22\"/></svg>","import { forwardRef, useState, type ReactNode } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport SlashIcon from '../Icons/Slash.svg'\nimport type { BreadcrumbItem, BreadcrumbProps } from './Breadcrumb.types'\n\nconst SIZE_CONTAINER_CLASS: Record<string, string> = {\n sm: 'text-xs gap-1.5',\n md: 'text-sm gap-2',\n lg: 'text-base gap-2.5',\n}\n\nconst SIZE_ICON_CLASS: Record<string, string> = {\n sm: 'size-3',\n md: 'size-3.5',\n lg: 'size-4',\n}\n\nfunction RenderSeparator({\n separator,\n size,\n index,\n className,\n}: {\n separator: BreadcrumbProps['separator']\n size: 'sm' | 'md' | 'lg'\n index: number\n className?: string\n}) {\n const testId = `breadcrumb-divider-${index}`\n\n if (separator === 'slash' || !separator) {\n return (\n <SlashIcon\n data-testid={testId}\n className={buildClassName(\n SIZE_ICON_CLASS[size] || 'size-3.5',\n 'text-gray-400 dark:text-gray-500 shrink-0 select-none',\n className,\n )}\n />\n )\n }\n\n if (separator === 'chevron') {\n return (\n <svg\n data-testid={testId}\n className={buildClassName(\n SIZE_ICON_CLASS[size] || 'size-3.5',\n 'text-gray-400 dark:text-gray-500 shrink-0 select-none',\n className,\n )}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n )\n }\n\n if (separator === 'dot') {\n return (\n <span\n data-testid={testId}\n className={buildClassName(\n 'size-1 rounded-full bg-gray-400 dark:bg-gray-500 shrink-0 select-none mx-0.5',\n className,\n )}\n />\n )\n }\n\n return (\n <span data-testid={testId} className={buildClassName('shrink-0 select-none', className)}>\n {separator}\n </span>\n )\n}\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>((props, ref) => {\n const {\n items = [],\n render,\n separator = 'slash',\n size = 'md',\n maxItems,\n className,\n itemClass,\n activeItemClass,\n separatorClass,\n ...navProps\n } = props\n\n const [expanded, setExpanded] = useState(false)\n const count = items.length\n const shouldTruncate = maxItems !== undefined && maxItems > 1 && count > maxItems && !expanded\n\n const getVisibleItems = () => {\n if (!shouldTruncate) return items\n // Always keep 1st item and last 1-2 items\n const firstItem = items[0]\n const lastItems = items.slice(count - (maxItems - 1))\n return [firstItem, ...lastItems]\n }\n\n const hiddenItems = shouldTruncate ? items.slice(1, count - (maxItems - 1)) : []\n const visibleItems = getVisibleItems()\n\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n data-testid=\"breadcrumb-container\"\n className={buildClassName(\n 'flex flex-wrap items-center text-gray-600 dark:text-gray-300 font-medium',\n SIZE_CONTAINER_CLASS[size] || SIZE_CONTAINER_CLASS.md,\n className,\n )}\n {...navProps}\n >\n {items.map((item, index) => {\n const isLast = index === count - 1\n const isCollapsedMiddle = shouldTruncate && index > 0 && index < count - (maxItems - 1)\n\n if (isCollapsedMiddle) {\n if (index === 1) {\n // Render the single '...' collapse pill\n return (\n <span\n key=\"breadcrumb-collapsed\"\n className=\"inline-flex items-center gap-2 relative group/ellipsis\"\n >\n <button\n type=\"button\"\n onClick={() => setExpanded(true)}\n className=\"px-1.5 py-0.5 rounded-md text-xs font-semibold bg-gray-100 dark:bg-gray-800 hover:bg-gray-200 dark:hover:bg-gray-700 text-gray-600 dark:text-gray-300 transition-colors cursor-pointer\"\n aria-label={`Expand ${hiddenItems.length} hidden breadcrumbs`}\n title={`Show ${hiddenItems.length} hidden levels`}\n >\n •••\n </button>\n <RenderSeparator\n separator={separator}\n size={size}\n index={index}\n className={separatorClass}\n />\n </span>\n )\n }\n return null\n }\n\n const defaultContent = isLast ? (\n <span\n className={buildClassName(\n 'text-gray-900 dark:text-white font-semibold',\n activeItemClass,\n item.className,\n )}\n >\n {item.text}\n </span>\n ) : item.to ? (\n <a\n href={item.to}\n className={buildClassName(\n 'hover:text-blue-600 dark:hover:text-blue-400 transition-colors',\n itemClass,\n item.className,\n )}\n >\n {item.text}\n </a>\n ) : (\n <span className={buildClassName(itemClass, item.className)}>{item.text}</span>\n )\n\n return (\n <span\n key={item.key}\n className=\"inline-flex items-center gap-2\"\n data-testid={`breadcrumb-item-${item.key}`}\n >\n <span\n className=\"inline-flex items-center gap-1.5\"\n {...(isLast ? { 'aria-current': 'page' as const } : {})}\n >\n {item.icon && <span className=\"shrink-0 text-gray-400\">{item.icon}</span>}\n {isLast ? (\n defaultContent\n ) : render ? (\n <span className={buildClassName(itemClass, item.className)}>{render(item)}</span>\n ) : (\n defaultContent\n )}\n </span>\n {!isLast && (\n <RenderSeparator\n separator={separator}\n size={size}\n index={index}\n className={separatorClass}\n />\n )}\n </span>\n )\n })}\n </nav>\n )\n})\n\nBreadcrumb.displayName = 'Breadcrumb'\n","import React, { Children, cloneElement, isValidElement, useMemo } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { ButtonSize, ButtonTheme } from '../Button/Button.types'\nimport type { ButtonGroupOrientation, ButtonGroupProps } from './ButtonGroup.types'\n\nconst EDGE_ROUNDING: Record<\n ButtonGroupOrientation,\n Record<ButtonSize, { first: string; last: string }>\n> = {\n horizontal: {\n xs: { first: 'rounded-l-sm rounded-r-none', last: 'rounded-r-sm rounded-l-none' },\n sm: { first: 'rounded-l rounded-r-none', last: 'rounded-r rounded-l-none' },\n md: { first: 'rounded-l-md rounded-r-none', last: 'rounded-r-md rounded-l-none' },\n lg: { first: 'rounded-l-lg rounded-r-none', last: 'rounded-r-lg rounded-l-none' },\n },\n vertical: {\n xs: { first: 'rounded-t-sm rounded-b-none', last: 'rounded-b-sm rounded-t-none' },\n sm: { first: 'rounded-t rounded-b-none', last: 'rounded-b rounded-t-none' },\n md: { first: 'rounded-t-md rounded-b-none', last: 'rounded-b-md rounded-t-none' },\n lg: { first: 'rounded-t-lg rounded-b-none', last: 'rounded-b-lg rounded-t-none' },\n },\n}\n\nconst PILL_EDGE_ROUNDING: Record<ButtonGroupOrientation, { first: string; last: string }> = {\n horizontal: { first: 'rounded-l-full rounded-r-none', last: 'rounded-r-full rounded-l-none' },\n vertical: { first: 'rounded-t-full rounded-b-none', last: 'rounded-b-full rounded-t-none' },\n}\n\nconst getEdgeRoundingClass = ({\n index,\n count,\n size,\n orientation,\n pill,\n}: {\n index: number\n count: number\n size: ButtonSize\n orientation: ButtonGroupOrientation\n pill: boolean\n}) => {\n if (count <= 1) return ''\n if (index !== 0 && index !== count - 1) return 'rounded-none'\n\n const position = index === 0 ? 'first' : 'last'\n return pill\n ? PILL_EDGE_ROUNDING[orientation][position]\n : EDGE_ROUNDING[orientation][size][position]\n}\n\nexport const ButtonGroup: React.FC<ButtonGroupProps> = ({\n children,\n orientation = 'horizontal',\n theme = 'secondary',\n variant = 'default',\n size = 'md',\n value,\n onChange,\n disabled: groupDisabled = false,\n rounded = false,\n fullWidth = false,\n label,\n className = '',\n}) => {\n const isVertical = orientation === 'vertical'\n const items = useMemo(() => Children.toArray(children).filter(isValidElement), [children])\n const count = items.length\n const isToggleMode = value !== undefined\n\n return (\n <div\n role=\"group\"\n aria-label={label}\n className={buildClassName(\n 'inline-flex items-stretch',\n isVertical ? 'flex-col' : 'flex-row',\n fullWidth && 'flex w-full',\n className,\n )}\n >\n {items.map((child, index) => {\n const childProps = child.props as Record<string, any>\n const childSize = (childProps.size as ButtonSize) ?? size\n const childDisabled = childProps.disabled ?? groupDisabled\n\n // Resolve item value for toggle mode\n const itemVal =\n childProps.value ??\n childProps.id ??\n (typeof childProps.children === 'string' || typeof childProps.children === 'number'\n ? childProps.children\n : index)\n\n const isSelected = isToggleMode\n ? Array.isArray(value)\n ? value.includes(itemVal)\n : value === itemVal\n : false\n\n const resolvedTheme: ButtonTheme = isToggleMode\n ? isSelected\n ? (childProps.theme ?? 'primary')\n : (childProps.theme ?? 'secondary')\n : (childProps.theme ?? theme)\n\n const resolvedVariant = childProps.variant ?? variant\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n childProps.onClick?.(e)\n if (isToggleMode && !childDisabled) {\n onChange?.(itemVal)\n }\n }\n\n return cloneElement(child as React.ReactElement<Record<string, unknown>>, {\n theme: resolvedTheme,\n variant: resolvedVariant,\n size: childSize,\n disabled: childDisabled,\n ...(isToggleMode ? { 'aria-pressed': isSelected } : {}),\n onClick: handleClick,\n className: buildClassName(\n childProps.className,\n getEdgeRoundingClass({\n index,\n count,\n size: childSize,\n orientation,\n pill: rounded,\n }),\n count > 1 && [\n 'relative shadow-none hover:z-10 focus:z-10 focus-visible:z-10',\n isSelected && 'z-10',\n index > 0 && (isVertical ? '-mt-px' : '-ml-px'),\n index > 0 &&\n resolvedVariant === 'default' &&\n (isVertical\n ? resolvedTheme === 'primary' || resolvedTheme === 'danger'\n ? 'border-t border-white/25 dark:border-white/20'\n : 'border-t border-[var(--ui-border)]'\n : resolvedTheme === 'primary' || resolvedTheme === 'danger'\n ? 'border-l border-white/25 dark:border-white/20'\n : 'border-l border-[var(--ui-border)]'),\n ],\n fullWidth && 'flex-1',\n ),\n })\n })}\n </div>\n )\n}\n\nButtonGroup.displayName = 'ButtonGroup'\n","import { ElementType, forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type {\n CardComponent,\n CardContentProps,\n CardDescriptionProps,\n CardFooterProps,\n CardHeaderProps,\n CardMediaProps,\n CardProps,\n CardTitleProps,\n} from './Card.types'\nimport type { PolymorphicRef } from '../common-type'\n\nconst RADIUS_CLASS: Record<string, string> = {\n none: 'rounded-none',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n}\n\nconst ASPECT_RATIO_CLASS: Record<string, string> = {\n auto: 'aspect-auto',\n square: 'aspect-square',\n video: 'aspect-video',\n wide: 'aspect-[21/9]',\n}\n\nfunction ChevronRightIcon({ className = 'size-4' }: { className?: string }) {\n return (\n <svg className={className} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n )\n}\n\nexport const Card = forwardRef(\n <C extends ElementType = 'div'>({ as, ...props }: CardProps<C>, ref: PolymorphicRef<C>) => {\n const {\n variant = 'outlined',\n radius = 'xl',\n hoverable = false,\n clickable = false,\n selected = false,\n bordered = true,\n compact = false,\n zeroPadding = false,\n title,\n subtitle,\n leading,\n trailing,\n badge,\n showChevron = false,\n children,\n onClick,\n ...rest\n } = props\n\n const Component = as || 'div'\n const { className, ...cleanRest } = rest as { className?: string }\n\n const isClickable = clickable || Boolean(onClick)\n const isOutlined = variant === 'outlined' && bordered\n const isElevated = variant === 'elevated'\n const isFilled = variant === 'filled'\n const isGhost = variant === 'ghost'\n\n const classes = buildClassName(\n 'block transition-all duration-150 select-none',\n RADIUS_CLASS[radius] || RADIUS_CLASS.xl,\n zeroPadding ? '' : compact ? 'p-3 sm:p-4' : 'p-5 sm:p-6',\n\n // Surface variants\n isOutlined && 'bg-white dark:bg-gray-900 border border-[var(--ui-border)]',\n isElevated &&\n 'bg-white dark:bg-gray-900 border border-[var(--ui-border)] shadow-md shadow-gray-200/50 dark:shadow-none',\n isFilled && 'bg-gray-50/80 dark:bg-gray-800/60 border border-transparent',\n isGhost && 'bg-transparent border border-transparent',\n\n // Hoverable & Clickable mobile/web touch states\n hoverable && 'hover:bg-gray-100/80 dark:hover:bg-gray-800/80',\n isClickable &&\n 'cursor-pointer hover:-translate-y-0.5 hover:shadow-lg active:scale-[0.99] active:bg-gray-100 dark:active:bg-gray-800/90',\n selected && 'ring-2 ring-[var(--ui-primary)] border-[var(--ui-primary)]',\n\n className,\n )\n\n const hasHeaderRow = title || subtitle || leading || trailing || badge || showChevron\n\n return (\n <Component ref={ref} className={classes} onClick={onClick} {...cleanRest}>\n {hasHeaderRow && (\n <div\n className={buildClassName('flex items-center gap-3 w-full min-w-0', children && 'mb-3')}\n >\n {leading && <div className=\"shrink-0 flex items-center justify-center\">{leading}</div>}\n <div className=\"flex-1 min-w-0 text-left\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n {title && (\n <span className=\"text-sm font-semibold text-gray-900 dark:text-white truncate\">\n {title}\n </span>\n )}\n {badge}\n </div>\n {subtitle && (\n <div className=\"text-xs text-gray-500 dark:text-gray-400 mt-0.5 truncate\">\n {subtitle}\n </div>\n )}\n </div>\n {(trailing || showChevron) && (\n <div className=\"shrink-0 flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400\">\n {trailing}\n {showChevron && <ChevronRightIcon className=\"size-4 text-gray-400\" />}\n </div>\n )}\n </div>\n )}\n {children}\n </Component>\n )\n },\n) as unknown as CardComponent\n\nexport const CardHeader = ({\n className,\n bordered = false,\n children,\n ...props\n}: CardHeaderProps) => (\n <div\n className={buildClassName(\n 'flex items-center justify-between gap-4 mb-4',\n bordered && 'pb-4 border-b border-[var(--ui-border)]',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n)\n\nexport const CardTitle = ({\n className,\n as: Component = 'h3',\n children,\n ...props\n}: CardTitleProps) => (\n <Component\n className={buildClassName(\n 'text-lg font-semibold text-gray-900 dark:text-white tracking-tight',\n className,\n )}\n {...props}\n >\n {children}\n </Component>\n)\n\nexport const CardDescription = ({ className, children, ...props }: CardDescriptionProps) => (\n <p\n className={buildClassName(\n 'text-sm text-gray-500 dark:text-gray-400 font-normal mt-1',\n className,\n )}\n {...props}\n >\n {children}\n </p>\n)\n\nexport const CardContent = ({ className, children, ...props }: CardContentProps) => (\n <div className={buildClassName('space-y-3', className)} {...props}>\n {children}\n </div>\n)\n\nexport const CardFooter = ({\n className,\n bordered = false,\n children,\n ...props\n}: CardFooterProps) => (\n <div\n className={buildClassName(\n 'flex items-center justify-end gap-3 mt-4',\n bordered && 'pt-4 border-t border-[var(--ui-border)]',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n)\n\nexport const CardMedia = ({\n className,\n aspectRatio = 'video',\n alt = '',\n ...props\n}: CardMediaProps) => (\n <div className={buildClassName('overflow-hidden -mx-5 -mt-5 mb-4 sm:-mx-6 sm:-mt-6', className)}>\n <img\n alt={alt}\n className={buildClassName(\n 'w-full object-cover',\n ASPECT_RATIO_CLASS[aspectRatio] || ASPECT_RATIO_CLASS.video,\n )}\n {...props}\n />\n </div>\n)\n\nCard.Header = CardHeader\nCard.Title = CardTitle\nCard.Description = CardDescription\nCard.Content = CardContent\nCard.Body = CardContent\nCard.Footer = CardFooter\nCard.Media = CardMedia\n\nCard.displayName = 'Card'\n","import React, { forwardRef, type LabelHTMLAttributes } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\n\ninterface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n htmlFor?: string\n}\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>((props, ref) => {\n const { className, children, ...labelProps } = props\n return (\n <label\n ref={ref}\n {...labelProps}\n className={buildClassName(\n 'block text-sm font-medium text-gray-600 dark:text-gray-300',\n className,\n )}\n >\n {children}\n </label>\n )\n})\n\nLabel.displayName = 'Label'\n","import { forwardRef, useEffect, useId, useRef, useImperativeHandle } from 'react'\nimport { Label } from '../Label'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { CheckboxProps, CheckboxSize } from './Checkbox.types'\nimport { TextContent } from '../TextContent'\n\nconst sizeStyles: Record<\n CheckboxSize,\n { box: string; svg: string; text: string; subtext: string }\n> = {\n sm: {\n box: 'size-3.5',\n svg: 'size-2.75',\n text: 'text-xs',\n subtext: 'text-[11px]',\n },\n md: {\n box: 'size-4.5',\n svg: 'size-3.5',\n text: 'text-sm',\n subtext: 'text-xs',\n },\n lg: {\n box: 'size-5.5',\n svg: 'size-4.25',\n text: 'text-base',\n subtext: 'text-sm',\n },\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {\n const {\n id,\n name,\n label,\n labelClass = '',\n wrapperClass = '',\n containerClass = '',\n error,\n helperText,\n disabled = false,\n indeterminate = false,\n size = 'md',\n variant = 'default',\n description,\n className = '',\n checked,\n onChange,\n ...rest\n } = props\n\n const generatedId = useId()\n const checkboxId = id ?? name ?? generatedId\n\n const innerRef = useRef<HTMLInputElement>(null)\n useImperativeHandle(ref, () => innerRef.current as HTMLInputElement)\n\n useEffect(() => {\n if (innerRef.current) {\n innerRef.current.indeterminate = Boolean(indeterminate)\n }\n }, [indeterminate])\n\n const currentSize = sizeStyles[size] || sizeStyles.md\n const isCard = variant === 'card'\n\n return (\n <div className={buildClassName(wrapperClass)}>\n <div\n className={buildClassName(\n isCard\n ? 'rounded-xl border p-3.5 transition-all duration-150 relative'\n : 'flex items-center',\n isCard &&\n (disabled\n ? 'border-[var(--ui-border-muted)] bg-gray-50/50 dark:bg-gray-900/40 opacity-70'\n : checked || indeterminate\n ? 'border-blue-500/80 bg-blue-50/30 dark:bg-blue-950/20 dark:border-blue-500/60 shadow-xs'\n : 'border-[var(--ui-border)] bg-white dark:bg-gray-900 hover:border-gray-300 dark:hover:border-gray-700 shadow-2xs'),\n containerClass,\n )}\n >\n <label\n htmlFor={checkboxId}\n className={buildClassName(\n 'inline-flex relative select-none w-full',\n description ? 'items-start' : 'items-center',\n disabled ? 'cursor-not-allowed opacity-70' : 'cursor-pointer',\n )}\n >\n {/* Custom Checkbox Input Container */}\n <div className=\"relative inline-flex items-center justify-center shrink-0\">\n <input\n ref={innerRef}\n {...rest}\n id={checkboxId}\n name={name}\n type=\"checkbox\"\n disabled={disabled}\n checked={checked}\n onChange={onChange}\n aria-checked={indeterminate ? 'mixed' : checked}\n className={buildClassName(\n 'peer cursor-pointer transition-all appearance-none rounded',\n currentSize.box,\n 'border focus:ring-2 focus:ring-offset-2',\n 'checked:bg-blue-600 checked:border-blue-600 dark:checked:bg-blue-600 dark:checked:border-blue-600',\n 'focus:ring-[var(--ui-focus-ring)] dark:focus:ring-offset-gray-900',\n disabled\n ? 'border-[var(--ui-border-muted)] bg-gray-100 dark:bg-gray-800 pointer-events-none'\n : 'bg-white dark:bg-gray-700 border-[var(--ui-border)] hover:border-gray-400 dark:hover:border-gray-500',\n indeterminate &&\n '!bg-blue-600 !border-blue-600 dark:!bg-blue-600 dark:!border-blue-600',\n className,\n )}\n />\n\n {/* Checkmark SVG Icon — Rendered only when NOT indeterminate */}\n {!indeterminate && (\n <span\n className={buildClassName(\n 'absolute inset-0 flex items-center justify-center text-white pointer-events-none transition-opacity',\n checked !== undefined\n ? checked\n ? 'opacity-100'\n : 'opacity-0'\n : 'opacity-0 peer-checked:opacity-100',\n )}\n >\n <svg className={currentSize.svg} viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n )}\n\n {/* Indeterminate Minus SVG Icon — Rendered only when indeterminate */}\n {indeterminate && (\n <span className=\"absolute inset-0 flex items-center justify-center text-white pointer-events-none opacity-100 z-10\">\n <svg className={currentSize.svg} viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fillRule=\"evenodd\"\n d=\"M4 10a1 1 0 011-1h10a1 1 0 110 2H5a1 1 0 01-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </span>\n )}\n </div>\n\n {/* Label & Description Column */}\n {(label || description) && (\n <div className=\"ml-2.5 flex flex-col justify-center min-w-0 flex-1\">\n {label && (\n <Label\n htmlFor={checkboxId}\n className={buildClassName(\n disabled\n ? 'cursor-not-allowed text-gray-400 dark:text-gray-500'\n : 'cursor-pointer text-gray-800 dark:text-gray-200 font-medium',\n currentSize.text,\n labelClass,\n )}\n >\n {label}\n </Label>\n )}\n\n {description && (\n <span\n className={buildClassName(\n 'mt-0.5 text-gray-500 dark:text-gray-400 font-normal leading-normal',\n currentSize.subtext,\n )}\n >\n {description}\n </span>\n )}\n </div>\n )}\n </label>\n </div>\n\n {/* Helper text or error message */}\n {(error || helperText) && (\n <div className=\"mt-1.5 ml-0.5\">\n {error ? (\n <TextContent error small>\n {error}\n </TextContent>\n ) : (\n <TextContent muted small>\n {helperText}\n </TextContent>\n )}\n </div>\n )}\n </div>\n )\n})\n\nCheckbox.displayName = 'Checkbox'\n","import { useId, useMemo, useState, type ChangeEvent } from 'react'\nimport { Checkbox } from '../Checkbox'\nimport { Label } from '../Label'\nimport { BodyText } from '../BodyText'\nimport { TextContent } from '../TextContent'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { CheckboxGroupItem, CheckboxGroupProps } from './CheckboxGroup.types'\n\nconst columnClasses: Record<number, string> = {\n 1: 'grid grid-cols-1 gap-3',\n 2: 'grid grid-cols-1 sm:grid-cols-2 gap-3',\n 3: 'grid grid-cols-1 sm:grid-cols-3 gap-3',\n 4: 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3',\n}\n\nexport const CheckboxGroup = <T,>(props: CheckboxGroupProps<T>) => {\n const {\n name,\n options,\n label,\n labelClass = '',\n labelWrapperClass = '',\n labelHint,\n containerClass = '',\n value: controlledValue,\n defaultValue,\n onChange,\n inline = false,\n columns,\n size = 'md',\n variant = 'default',\n showSelectAll = false,\n selectAllLabel = 'Select All',\n error,\n helperText,\n disabled = false,\n } = props\n\n const groupId = useId()\n const [internalValue, setInternalValue] = useState<T[]>(defaultValue || [])\n\n const isControlled = controlledValue !== undefined\n const currentValue = isControlled ? controlledValue : internalValue\n\n const items = useMemo(\n () =>\n options.map((opt) =>\n typeof opt === 'string' ? ({ label: opt, value: opt } as CheckboxGroupItem<T>) : opt,\n ),\n [options],\n )\n\n const enabledItems = useMemo(\n () => items.filter((i) => !i.disabled && !disabled),\n [items, disabled],\n )\n\n // Select All State calculation\n const allSelected = useMemo(() => {\n if (!enabledItems.length) return false\n return enabledItems.every((item) => currentValue.includes(item.value))\n }, [enabledItems, currentValue])\n\n const isIndeterminate = useMemo(() => {\n if (allSelected) return false\n return enabledItems.some((item) => currentValue.includes(item.value))\n }, [allSelected, enabledItems, currentValue])\n\n const handleSelectAllChange = (e: ChangeEvent<HTMLInputElement>) => {\n let updated: T[]\n if (allSelected || isIndeterminate) {\n const enabledValues = new Set(enabledItems.map((i) => i.value))\n updated = currentValue.filter((v) => !enabledValues.has(v))\n } else {\n const enabledValues = enabledItems.map((i) => i.value)\n const uniqueSet = new Set([...currentValue, ...enabledValues])\n updated = Array.from(uniqueSet)\n }\n\n if (!isControlled) {\n setInternalValue(updated)\n }\n onChange?.(updated, e)\n }\n\n const handleGroupChange = (e: ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n const checked = e.target.checked\n\n const matched = items.find((i) => String(i.value) === raw)\n const itemValue = matched ? matched.value : (raw as unknown as T)\n\n let updated: T[]\n if (checked) {\n updated = [...currentValue, itemValue]\n } else {\n updated = currentValue.filter((v) => v !== itemValue)\n }\n\n if (!isControlled) {\n setInternalValue(updated)\n }\n onChange?.(updated, e)\n }\n\n const layoutClass = columns\n ? columnClasses[columns]\n : inline\n ? 'flex flex-wrap gap-3'\n : 'flex flex-col gap-3'\n\n return (\n <div className={buildClassName('mb-3 space-y-3', containerClass)}>\n {label && (\n <div className={buildClassName('flex items-center justify-between', labelWrapperClass)}>\n <Label className={labelClass}>{label}</Label>\n {labelHint && (\n <BodyText muted small>\n {labelHint}\n </BodyText>\n )}\n </div>\n )}\n\n {/* Select All Checkbox Header */}\n {showSelectAll && items.length > 0 && (\n <div className=\"pb-1 border-b border-[var(--ui-border)]\">\n <Checkbox\n id={`${groupId}-select-all`}\n label={selectAllLabel}\n size={size}\n variant={variant}\n checked={allSelected}\n indeterminate={isIndeterminate}\n disabled={disabled || enabledItems.length === 0}\n onChange={handleSelectAllChange}\n />\n </div>\n )}\n\n {/* Group Items Layout */}\n <div className={layoutClass}>\n {items.map((item, index) => {\n const key =\n typeof item.value === 'string' || typeof item.value === 'number' ? item.value : index\n\n return (\n <Checkbox\n key={key}\n name={name}\n id={`${groupId}-${String(item.value)}`}\n label={item.label}\n description={item.description}\n value={String(item.value)}\n size={size}\n variant={variant}\n disabled={disabled || item.disabled}\n checked={currentValue.includes(item.value)}\n onChange={handleGroupChange}\n />\n )\n })}\n </div>\n\n {/* Group-level Error or Helper Text */}\n {(error || helperText) && (\n <div className=\"mt-1.5 ml-0.5\">\n {error ? (\n <TextContent error small>\n {error}\n </TextContent>\n ) : (\n <TextContent muted small>\n {helperText}\n </TextContent>\n )}\n </div>\n )}\n </div>\n )\n}\n\nCheckboxGroup.displayName = 'CheckboxGroup'\n","import React from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type {\n EmptyTableRowProps,\n TableProps,\n TableBodyProps,\n TableCellProps,\n TableFootProps,\n TableHeaderCellProps,\n TableHeadProps,\n TableRowLoaderProps,\n TableRowProps,\n} from './Table.types'\n\nconst TEXT_ALIGN = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n}\n\nconst TABLE_LAYOUT = {\n fixed: 'table-fixed',\n auto: 'table-auto',\n}\n\n/* ----------------------------------------------\n * Loader Rows\n * ---------------------------------------------- */\nconst TableRowLoader: React.FC<TableRowLoaderProps> = ({ colSize, rowSize }) => (\n <>\n {Array.from({ length: rowSize }).map((_, rowIdx) => (\n <TableRow key={rowIdx} className=\"animate-pulse\">\n {Array.from({ length: colSize }).map((_, colIdx) => (\n <TableCell key={colIdx}>\n <div className=\"flex items-center h-6\">\n <div className=\"h-4 bg-gray-300 dark:bg-gray-700 shimmer rounded w-full\" />\n </div>\n </TableCell>\n ))}\n </TableRow>\n ))}\n </>\n)\n\n/* ----------------------------------------------\n * Table\n * ---------------------------------------------- */\nexport const Table: React.FC<TableProps> = ({\n children,\n layout = 'auto',\n className = '',\n caption,\n}) => (\n <table\n className={buildClassName(\n 'border-collapse w-full divide-y divide-[var(--ui-border)]',\n TABLE_LAYOUT[layout],\n className,\n )}\n >\n {caption && (\n <caption className=\"mb-2 text-sm text-left text-gray-500 dark:text-gray-400\">\n {caption}\n </caption>\n )}\n {children}\n </table>\n)\n\n/* ----------------------------------------------\n * Head\n * ---------------------------------------------- */\nexport const TableHead: React.FC<TableHeadProps> = ({ children, className = '' }) => (\n <thead\n className={buildClassName(\n 'text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-800 dark:text-gray-300',\n className,\n )}\n >\n <tr>{children}</tr>\n </thead>\n)\n\n/* ----------------------------------------------\n * Body\n * ---------------------------------------------- */\nexport const TableBody: React.FC<TableBodyProps> = ({\n children,\n loading,\n colSize = 1,\n rowSize = 5,\n className,\n}) => (\n <tbody\n className={buildClassName(\n 'text-sm text-gray-700 dark:text-white divide-y divide-[var(--ui-border)]',\n className,\n )}\n >\n {loading ? <TableRowLoader colSize={colSize} rowSize={rowSize} /> : children}\n </tbody>\n)\n\n/* ----------------------------------------------\n * Foot\n * ---------------------------------------------- */\nexport const TableFoot: React.FC<TableFootProps> = ({ children }) => (\n <tfoot>\n <tr>{children}</tr>\n </tfoot>\n)\n\n/* ----------------------------------------------\n * Rows\n * ---------------------------------------------- */\nexport const TableRow: React.FC<TableRowProps> = ({\n children,\n hoverable = false,\n className,\n ...props\n}) => (\n <tr\n {...props}\n className={buildClassName(\n 'last:border-b border-[var(--ui-border)]',\n hoverable && 'group',\n className,\n )}\n >\n {children}\n </tr>\n)\n\n/* ----------------------------------------------\n * Cells\n * ---------------------------------------------- */\nexport const TableCell: React.FC<TableCellProps> = ({\n children,\n align = 'left',\n className,\n ...props\n}) => (\n <td\n {...props}\n className={buildClassName(\n 'px-3 py-3 first:pl-4 last:pr-4 bg-white dark:bg-gray-900 group-hover:bg-gray-50 group-hover:dark:bg-gray-800',\n TEXT_ALIGN[align],\n className,\n )}\n >\n <div className=\"leading-normal\">{children}</div>\n </td>\n)\n\nexport const TableHeaderCell: React.FC<TableHeaderCellProps> = ({\n children,\n align = 'left',\n className,\n ...props\n}) => (\n <th\n {...props}\n className={buildClassName(\n 'px-3 py-3 first:pl-4 last:pr-4 tracking-wider whitespace-nowrap text-gray-800 dark:text-gray-300',\n TEXT_ALIGN[align],\n className,\n )}\n >\n {children}\n </th>\n)\n\n/* ----------------------------------------------\n * Empty Row\n * ---------------------------------------------- */\nexport const EmptyTableRow: React.FC<EmptyTableRowProps> = ({\n children,\n colSpan = 1,\n contentClass,\n}) => (\n <tr className=\"bg-white dark:bg-gray-900\">\n <td colSpan={colSpan} className=\"px-4 py-8\">\n <div\n className={buildClassName(\n 'p-6 text-center space-y-3 flex flex-col items-center justify-center',\n contentClass,\n )}\n >\n {children}\n </div>\n </td>\n </tr>\n)\n","import { UsePaginationProps } from './Pagination.types'\n\nexport const DOTS = '...'\n\nexport const usePagination = ({\n totalPages,\n currentPage,\n siblingCount = 1, // number of pages to show around currentPage\n}: UsePaginationProps): (number | string)[] => {\n const totalPageNumbers = siblingCount * 2 + 5\n\n if (totalPageNumbers >= totalPages) {\n return Array.from({ length: totalPages }, (_, i) => i + 1)\n }\n\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1)\n const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages)\n\n const shouldShowLeftDots = leftSiblingIndex > 2\n const shouldShowRightDots = rightSiblingIndex < totalPages - 1\n\n const firstPageIndex = 1\n const lastPageIndex = totalPages\n\n if (!shouldShowLeftDots && shouldShowRightDots) {\n const leftRange = Array.from({ length: 3 + 2 * siblingCount }, (_, i) => i + 1)\n return [...leftRange, DOTS, totalPages]\n }\n\n if (shouldShowLeftDots && !shouldShowRightDots) {\n const rightRange = Array.from(\n { length: 3 + 2 * siblingCount },\n (_, i) => totalPages - (3 + 2 * siblingCount) + 1 + i,\n )\n return [firstPageIndex, DOTS, ...rightRange]\n }\n\n if (shouldShowLeftDots && shouldShowRightDots) {\n const middleRange = Array.from({ length: 2 * siblingCount + 1 }, (_, i) => leftSiblingIndex + i)\n return [firstPageIndex, DOTS, ...middleRange, DOTS, lastPageIndex]\n }\n\n return []\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-chevron-right-icon lucide-chevron-right\"><path d=\"m9 18 6-6-6-6\"/></svg>","import React from 'react'\nimport { Button } from '../Button'\nimport { usePagination, DOTS } from './usePagination'\nimport { buildClassName } from '../../utils/build-classname'\nimport ChevronLeftIcon from '../Icons/ChevronLeft.svg'\nimport ChevronRightIcon from '../Icons/ChevronRight.svg'\nimport type { PaginationProps } from './Pagination.types'\n\nexport const Pagination: React.FC<PaginationProps> = ({\n page: currentPage,\n limit,\n total,\n onChange,\n className,\n ellipsis = true, // Default to showing ellipsis\n}) => {\n const pages = new Array(Math.ceil(total / limit)).fill(null).map((_, i) => i + 1)\n const isFirstPage = currentPage === 1\n const isLastPage = total === 0 || pages.length === currentPage\n\n const range = usePagination({ totalPages: pages.length, currentPage })\n\n const handlePageChange = (nextVal: number) => {\n if (nextVal === currentPage) return\n\n onChange({ page: nextVal })\n }\n\n if (ellipsis) {\n return (\n <div\n data-testid=\"pagination-container\"\n className={buildClassName(\n 'flex items-center justify-between bg-white dark:bg-gray-800 px-4 py-3 sm:px-6',\n className,\n )}\n >\n <div className=\"flex flex-1 justify-between sm:hidden\">\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isFirstPage}\n onClick={() => handlePageChange(currentPage - 1)}\n data-testid=\"ellipsis-mobile-prev-btn\"\n >\n <span>Previous</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isLastPage}\n onClick={() => handlePageChange(currentPage + 1)}\n data-testid=\"ellipsis-mobile-next-btn\"\n >\n <span>Next</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n </div>\n <div className=\"hidden sm:flex sm:flex-1 sm:items-center sm:justify-between\">\n <p\n data-testid=\"pagination-summary\"\n className=\"text-sm text-gray-600 dark:text-gray-400 flex items-center gap-1\"\n >\n Showing\n <span className=\"font-medium\">\n {total === 0 ? 0 : Math.max(currentPage * limit - limit + 1, 1)}\n </span>\n to\n <span className=\"font-medium\">{Math.min(currentPage * limit, total)}</span>\n of\n <span className=\"font-medium\">{total}</span>\n results\n </p>\n <ul className=\"flex items-center space-x-2 text-sm\">\n <li>\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isFirstPage}\n onClick={() => handlePageChange(currentPage - 1)}\n data-testid=\"ellipsis-prev-btn\"\n >\n Prev\n </Button>\n </li>\n {range.map((page, idx) => {\n if (page === DOTS) {\n return (\n <li\n key={`${page}-${idx}`}\n data-testid={`page-${page}`}\n className=\"px-2 py-1 text-gray-400\"\n >\n &hellip;\n </li>\n )\n }\n return (\n <li key={`${page}-${idx}`}>\n <Button\n size=\"xs\"\n theme={page === currentPage ? 'primary' : 'secondary'}\n variant={page === currentPage ? 'default' : 'plain'}\n aria-current={page === currentPage ? 'page' : undefined}\n onClick={() => handlePageChange(page as number)}\n >\n {page}\n </Button>\n </li>\n )\n })}\n <li>\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isLastPage}\n onClick={() => handlePageChange(currentPage + 1)}\n data-testid=\"ellipsis-next-btn\"\n >\n Next\n </Button>\n </li>\n </ul>\n </div>\n </div>\n )\n }\n\n return (\n <div\n data-testid=\"pagination-container\"\n className={buildClassName(\n 'flex items-center justify-between bg-white dark:bg-gray-800 px-4 py-3 sm:px-6',\n className,\n )}\n >\n <div className=\"flex flex-1 justify-between sm:hidden\">\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isFirstPage}\n onClick={() => handlePageChange(currentPage - 1)}\n data-testid=\"mobile-prev-btn\"\n >\n <span>Previous</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isLastPage}\n onClick={() => handlePageChange(currentPage + 1)}\n data-testid=\"mobile-next-btn\"\n >\n <span>Next</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n </div>\n <div className=\"hidden sm:flex sm:flex-1 sm:items-center sm:justify-between\">\n <p\n data-testid=\"pagination-summary\"\n className=\"text-sm text-gray-600 dark:text-gray-400 flex items-center gap-1\"\n >\n Showing\n <span className=\"font-medium\">\n {total === 0 ? 0 : Math.max(currentPage * limit - limit + 1, 1)}\n </span>\n to\n <span className=\"font-medium\">{Math.min(currentPage * limit, total)}</span>\n of\n <span className=\"font-medium\">{total}</span>\n results\n </p>\n <nav className=\"isolate inline-flex items-center rounded-md\" aria-label=\"Pagination\">\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isFirstPage}\n onClick={() => handlePageChange(currentPage - 1)}\n data-testid=\"prev-btn\"\n >\n <span className=\"sr-only\">Previous</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n {pages.map((page) => (\n <Button\n key={page}\n size=\"xs\"\n theme={page === currentPage ? 'primary' : 'secondary'}\n variant={page === currentPage ? 'default' : 'plain'}\n aria-current={page === currentPage ? 'page' : undefined}\n onClick={() => handlePageChange(page)}\n >\n <span className=\"size-4 block\">{page}</span>\n </Button>\n ))}\n <Button\n size=\"xs\"\n theme=\"secondary\"\n variant=\"plain\"\n disabled={isLastPage}\n onClick={() => handlePageChange(currentPage + 1)}\n data-testid=\"next-btn\"\n >\n <span className=\"sr-only\">Next</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n </nav>\n </div>\n </div>\n )\n}\n","export function get<T = any, R = any>(obj: T, path: string, defaultValue?: R): R {\n if (!path) return defaultValue as R\n\n const keys = path\n .replace(/\\[(\\d+)]/g, '.$1') // convert [0] to .0\n .split('.')\n .filter(Boolean) // remove empty parts\n\n return (\n keys.reduce<any>((acc, key) => {\n if (acc !== null && acc !== undefined && Object.prototype.hasOwnProperty.call(acc, key)) {\n return acc[key]\n }\n return undefined\n }, obj) ?? defaultValue\n )\n}\n","import { useCallback, useMemo, useState } from 'react'\nimport type { DataValueType, Sorting, SortQuery } from './DataTable.types'\n\n/**\n * Compute the next sorting direction for a column.\n * - string: undefined → asc → desc → undefined\n * - number/date: undefined → 1 → -1 → undefined\n */\nexport const nextSortDirection = (\n prev: Sorting | undefined,\n type: 'string' | 'number' | 'date' = 'string',\n): Sorting | undefined => {\n if (type === 'string') {\n if (!prev) return 'asc'\n if (prev === 'asc') return 'desc'\n return undefined\n }\n\n // number / date\n if (!prev) return '1'\n if (prev === '1') return '-1'\n return undefined\n}\n\n/**\n * Update the sort query object for a table column.\n * Toggles sort direction, removing key when reset.\n */\nexport const updateSortQuery = (\n sortQuery: SortQuery,\n name: string,\n type: DataValueType = 'string',\n): SortQuery => {\n const next = nextSortDirection(sortQuery[name], type)\n\n // Shallow clone once\n const updated = { ...sortQuery }\n\n if (next == null) {\n delete updated[name]\n } else {\n updated[name] = next\n }\n\n return updated\n}\n\n/** Options for {@link useRowSelection}. */\nexport interface UseRowSelectionOptions<T> {\n items: T[]\n getKey: (item: T, idx: number) => string | number\n selectedRowKeys?: Array<string | number>\n defaultSelectedRowKeys?: Array<string | number>\n onSelectionChange?: (selectedRowKeys: Array<string | number>, selectedItems: T[]) => void\n isRowSelectable?: (item: T) => boolean\n}\n\n/**\n * Shared row-selection state/behaviour used by DataTable and VirtualizedDataTable.\n * Supports controlled (`selectedRowKeys`) and uncontrolled (`defaultSelectedRowKeys`) usage.\n */\nexport const useRowSelection = <T>({\n items,\n getKey,\n selectedRowKeys,\n defaultSelectedRowKeys = [],\n onSelectionChange,\n isRowSelectable,\n}: UseRowSelectionOptions<T>) => {\n const [internalKeys, setInternalKeys] = useState<Array<string | number>>(defaultSelectedRowKeys)\n const isControlled = selectedRowKeys !== undefined\n const keys = isControlled ? selectedRowKeys : internalKeys\n const keySet = useMemo(() => new Set(keys), [keys])\n\n const selectableEntries = useMemo(\n () =>\n items\n .map((item, idx) => ({ item, key: getKey(item, idx) }))\n .filter(({ item }) => !isRowSelectable || isRowSelectable(item)),\n [items, getKey, isRowSelectable],\n )\n\n const emit = useCallback(\n (nextKeys: Array<string | number>) => {\n if (!isControlled) setInternalKeys(nextKeys)\n const nextKeySet = new Set(nextKeys)\n const nextItems = items.filter((item, idx) => nextKeySet.has(getKey(item, idx)))\n onSelectionChange?.(nextKeys, nextItems)\n },\n [isControlled, items, getKey, onSelectionChange],\n )\n\n const toggleRow = useCallback(\n (key: string | number) => {\n emit(keySet.has(key) ? keys.filter((k) => k !== key) : [...keys, key])\n },\n [keys, keySet, emit],\n )\n\n const allSelected =\n selectableEntries.length > 0 && selectableEntries.every(({ key }) => keySet.has(key))\n const someSelected = !allSelected && selectableEntries.some(({ key }) => keySet.has(key))\n\n const toggleAll = useCallback(() => {\n const selectableKeySet = new Set(selectableEntries.map(({ key }) => key))\n if (allSelected) {\n emit(keys.filter((k) => !selectableKeySet.has(k)))\n } else {\n emit(Array.from(new Set([...keys, ...selectableKeySet])))\n }\n }, [allSelected, selectableEntries, keys, emit])\n\n return {\n selectedKeys: keys,\n isSelected: (key: string | number) => keySet.has(key),\n toggleRow,\n toggleAll,\n allSelected,\n someSelected,\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-wide-narrow-icon lucide-arrow-down-wide-narrow\"><path d=\"m3 16 4 4 4-4\"/><path d=\"M7 20V4\"/><path d=\"M11 4h10\"/><path d=\"M11 8h7\"/><path d=\"M11 12h4\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-narrow-wide-icon lucide-arrow-down-narrow-wide\"><path d=\"m3 16 4 4 4-4\"/><path d=\"M7 20V4\"/><path d=\"M11 4h4\"/><path d=\"M11 8h7\"/><path d=\"M11 12h10\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-az-icon lucide-arrow-down-a-z\"><path d=\"m3 16 4 4 4-4\"/><path d=\"M7 20V4\"/><path d=\"M20 8h-5\"/><path d=\"M15 10V6.5a2.5 2.5 0 0 1 5 0V10\"/><path d=\"M15 14h5l-5 6h5\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-down-za-icon lucide-arrow-down-z-a\"><path d=\"m3 16 4 4 4-4\"/><path d=\"M7 4v16\"/><path d=\"M15 4h5l-5 6h5\"/><path d=\"M15 20v-3.5a2.5 2.5 0 0 1 5 0V20\"/><path d=\"M20 18h-5\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-up-down-icon lucide-arrow-up-down\"><path d=\"m21 16-4 4-4-4\"/><path d=\"M17 20V4\"/><path d=\"m3 8 4-4 4 4\"/><path d=\"M7 4v16\"/></svg>","import type { SortIconKey, Sorting } from './DataTable.types'\nimport type { ReactNode } from 'react'\n/* Icons */\nimport ArrowDownWideNarrow from '../Icons/ArrowDownWideNarrow.svg'\nimport ArrowDownNarrowWide from '../Icons/ArrowDownNarrowWide.svg'\nimport ArrowDownAZ from '../Icons/ArrowDownAZ.svg'\nimport ArrowDownZA from '../Icons/ArrowDownZA.svg'\nimport ArrowUpDown from '../Icons/ArrowUpDown.svg'\n\nexport const SortIconMap: Record<SortIconKey, ReactNode> = {\n '1': (\n <ArrowDownNarrowWide className=\"size-4 text-gray-400 shrink-0 group-hover:text-gray-800 dark:group-hover:text-white\" />\n ),\n asc: (\n <ArrowDownAZ className=\"size-4 text-gray-400 shrink-0 group-hover:text-gray-800 dark:group-hover:text-white\" />\n ),\n '-1': (\n <ArrowDownWideNarrow className=\"size-4 text-gray-400 shrink-0 group-hover:text-gray-800 dark:group-hover:text-white\" />\n ),\n desc: (\n <ArrowDownZA className=\"size-4 text-gray-400 shrink-0 group-hover:text-gray-800 dark:group-hover:text-white\" />\n ),\n}\n\nexport const getSortIcon = (sort?: Sorting) =>\n sort ? (\n SortIconMap[sort as SortIconKey]\n ) : (\n <ArrowUpDown className=\"size-4 text-gray-400 shrink-0 group-hover:text-gray-800 dark:group-hover:text-white\" />\n )\n","import { useEffect, useRef, useState } from 'react'\nimport {\n EmptyTableRow,\n Table,\n TableBody,\n TableCell,\n TableFoot,\n TableHead,\n TableHeaderCell,\n TableRow,\n} from '../Table'\nimport { buildClassName } from '../../utils/build-classname'\nimport type {\n DataTableProps,\n DataTableColumn,\n DataTableDensity,\n Sorting,\n SortQuery,\n} from './DataTable.types'\nimport { TextContent } from '../TextContent'\nimport { Pagination } from '../Pagination'\nimport { Checkbox } from '../Checkbox'\nimport { get } from '../../utils/get'\nimport { updateSortQuery, useRowSelection } from './DataTable.utils'\nimport { getSortIcon } from './DataTable.icons'\n\nconst DENSITY_CELL_CLASS: Record<DataTableDensity, string> = {\n compact: 'px-2 py-1.5',\n default: '',\n spacious: 'px-4 py-4',\n}\n\nconst autoSortItems = <T,>(items: T[], column: DataTableColumn<T>, sort: Sorting): T[] => {\n const path = column.name\n return [...items].sort((a, b) => {\n const valueA = get(a as Record<string, any>, path)\n const valueB = get(b as Record<string, any>, path)\n\n if (column.type === 'number') {\n const nA = Number(valueA)\n const nB = Number(valueB)\n return sort === 'asc' || sort === '1' ? nA - nB : nB - nA\n }\n\n if (column.type === 'date') {\n const dA = new Date(valueA).getTime()\n const dB = new Date(valueB).getTime()\n return sort === 'asc' || sort === '1' ? dA - dB : dB - dA\n }\n\n const sA = String(valueA).toLowerCase()\n const sB = String(valueB).toLowerCase()\n if (sA < sB) return sort === 'asc' || sort === '1' ? -1 : 1\n if (sA > sB) return sort === 'asc' || sort === '1' ? 1 : -1\n return 0\n })\n}\n\nexport function DataTable<T extends Record<string, any> = Record<string, any>>({\n items,\n columns,\n sorting = {},\n onSort,\n loading,\n pagination,\n setPagination = () => {},\n emptyMessage = 'No data found',\n containerClass = '',\n wrapperClass = '',\n tableClass = '',\n headClass = '',\n footerRow,\n rowKey = 'id',\n onRowClick,\n rowClass,\n density = 'default',\n striped = false,\n layout = 'auto',\n selectable = false,\n selectedRowKeys,\n defaultSelectedRowKeys,\n onSelectionChange,\n isRowSelectable,\n stickyHeader = true,\n stickyPagination = true,\n paginationContainerClass,\n}: DataTableProps<T>) {\n const internalSorting = useRef<SortQuery>({})\n const [sortedItems, setSortedItems] = useState(items)\n\n useEffect(() => {\n setSortedItems(items)\n }, [items])\n\n const doAutoSort = (column: DataTableColumn<T>) => {\n internalSorting.current = updateSortQuery(internalSorting.current, column.name, column.type)\n setSortedItems(autoSortItems(items, column, internalSorting.current[column.name]))\n }\n\n const handleSort = (column: DataTableColumn<T>) => {\n if (!column.sortable) return\n onSort ? onSort(column) : doAutoSort(column)\n }\n\n const getKey = (item: T, idx: number): string | number => {\n if (typeof rowKey === 'function') return rowKey(item)\n return (item as any)[rowKey] ?? idx\n }\n\n const getRowClass = (item: T, idx: number): string => {\n if (!rowClass) return ''\n if (typeof rowClass === 'function') return rowClass(item, idx)\n return rowClass\n }\n\n const getCellClass = (column: DataTableColumn<T>, item: T): string => {\n if (!column.cellClass) return ''\n if (typeof column.cellClass === 'function') return column.cellClass(item)\n return column.cellClass\n }\n\n const { isSelected, toggleRow, toggleAll, allSelected, someSelected } = useRowSelection({\n items: sortedItems,\n getKey,\n selectedRowKeys,\n defaultSelectedRowKeys,\n onSelectionChange,\n isRowSelectable,\n })\n\n const densityCellClass = DENSITY_CELL_CLASS[density]\n const colSize = columns.length + (selectable ? 1 : 0)\n const wrapperHasOverflow = /\\boverflow-(x-|y-)?(auto|hidden|scroll|visible|clip)\\b/.test(\n wrapperClass,\n )\n\n return (\n <div className={buildClassName('w-full rounded-lg relative', containerClass)}>\n <div\n className={buildClassName(\n !wrapperHasOverflow && 'overflow-x-auto',\n 'rounded-lg border border-[var(--ui-border)]',\n wrapperClass,\n pagination && 'rounded-b-none border-b-0',\n )}\n >\n <Table\n className={buildClassName('relative w-full max-w-full h-fit', tableClass)}\n layout={layout}\n >\n <TableHead className={headClass}>\n {selectable && (\n <TableHeaderCell\n className={buildClassName(\n 'bg-gray-50 dark:bg-gray-800 w-px',\n densityCellClass,\n stickyHeader && 'sticky top-0 z-20 shadow-[0_1px_2px_rgba(0,0,0,0.06)]',\n )}\n >\n <Checkbox\n aria-label=\"Select all rows\"\n checked={allSelected}\n ref={(el) => {\n if (el) el.indeterminate = someSelected\n }}\n onChange={toggleAll}\n />\n </TableHeaderCell>\n )}\n {columns.map((column) => (\n <TableHeaderCell\n key={column.name}\n align={column.headerAlign}\n style={{ width: column.width || 'auto' }}\n className={buildClassName(\n 'bg-gray-50 dark:bg-gray-800',\n densityCellClass,\n stickyHeader && 'sticky top-0 z-20 shadow-[0_1px_2px_rgba(0,0,0,0.06)]',\n column.sticky === 'left' &&\n 'sticky left-0 z-30 shadow-[2px_0_6px_rgba(0,0,0,0.06)]',\n column.sticky === 'right' &&\n 'sticky right-0 z-30 shadow-[-2px_0_6px_rgba(0,0,0,0.06)]',\n column.headerClass,\n )}\n >\n <TextContent\n role={column.sortable ? 'button' : undefined}\n className={buildClassName(\n 'group',\n column.sortable && 'inline-flex items-center gap-2 cursor-pointer select-none',\n )}\n onClick={() => handleSort(column)}\n >\n <TextContent className=\"shrink-0\">{column.label}</TextContent>\n {column.sortable ? getSortIcon(sorting[column.name]) : null}\n </TextContent>\n </TableHeaderCell>\n ))}\n </TableHead>\n\n <TableBody loading={loading} colSize={colSize} rowSize={pagination?.limit || 5}>\n {!loading && sortedItems.length === 0 ? (\n <EmptyTableRow colSpan={colSize}>{emptyMessage}</EmptyTableRow>\n ) : (\n sortedItems.map((item, idx) => {\n const key = getKey(item, idx)\n const rowSelectable = !isRowSelectable || isRowSelectable(item)\n\n return (\n <TableRow\n key={key}\n className={buildClassName(\n 'group',\n onRowClick && 'cursor-pointer',\n striped && idx % 2 === 1 && 'bg-gray-50 dark:bg-gray-800/40',\n getRowClass(item, idx),\n )}\n onClick={onRowClick ? () => onRowClick(item, idx) : undefined}\n >\n {selectable && (\n <TableCell\n className={buildClassName(\n densityCellClass,\n striped && idx % 2 === 1 && 'bg-gray-50 dark:bg-gray-800/40',\n )}\n >\n <span onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label=\"Select row\"\n checked={isSelected(key)}\n disabled={!rowSelectable}\n onChange={() => toggleRow(key)}\n />\n </span>\n </TableCell>\n )}\n {columns.map((column) => (\n <TableCell\n key={column.name}\n align={column.align}\n className={buildClassName(\n densityCellClass,\n striped && idx % 2 === 1 && 'bg-gray-50 dark:bg-gray-800/40',\n column.sticky === 'left' &&\n 'sticky left-0 z-10 shadow-[2px_0_6px_rgba(0,0,0,0.06)]',\n column.sticky === 'right' &&\n 'sticky right-0 z-10 shadow-[-2px_0_6px_rgba(0,0,0,0.06)]',\n getCellClass(column, item),\n )}\n >\n {column.render\n ? column.render(item)\n : ((get(item, column.name) as any) ?? 'Not set')}\n </TableCell>\n ))}\n </TableRow>\n )\n })\n )}\n </TableBody>\n\n {footerRow && <TableFoot>{footerRow}</TableFoot>}\n </Table>\n </div>\n\n {pagination && (\n <Pagination\n {...pagination}\n className={buildClassName(\n 'rounded-b-lg border border-[var(--ui-border)]',\n stickyPagination && 'sticky bottom-0 z-20 bg-white dark:bg-gray-800',\n paginationContainerClass,\n )}\n onChange={setPagination}\n />\n )}\n </div>\n )\n}\n\nDataTable.displayName = 'DataTable'\n","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type {\n HeadingAlign,\n HeadingLevel,\n HeadingSize,\n HeadingTextProps,\n HeadingWeight,\n} from './HeadingText.types'\n\nconst defaultLevelSizeMap: Record<HeadingLevel, string> = {\n 1: 'text-3xl font-bold',\n 2: 'text-2xl font-semibold',\n 3: 'text-xl font-semibold',\n 4: 'text-lg font-medium',\n 5: 'text-base font-medium',\n 6: 'text-sm font-medium',\n}\n\nconst sizeClassMap: Record<HeadingSize, string> = {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n '2xl': 'text-2xl',\n '3xl': 'text-3xl',\n '4xl': 'text-4xl',\n '5xl': 'text-5xl',\n}\n\nconst weightClassMap: Record<HeadingWeight, string> = {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n extrabold: 'font-extrabold',\n}\n\nconst alignClassMap: Record<HeadingAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n}\n\nconst trackingClassMap = {\n tighter: 'tracking-tighter',\n tight: 'tracking-tight',\n normal: 'tracking-normal',\n wide: 'tracking-wide',\n}\n\nconst HeadingTextComponent = forwardRef<HTMLHeadingElement, HeadingTextProps>((props, ref) => {\n const {\n level = 1,\n size,\n weight,\n muted = false,\n error = false,\n success = false,\n warning = false,\n info = false,\n invert = false,\n align,\n tracking,\n truncate = false,\n className,\n children,\n ...rest\n } = props\n\n const tag = `h${Math.min(6, Math.max(1, level))}` as keyof React.JSX.IntrinsicElements\n\n const colorClass = error\n ? 'text-[var(--ui-text-danger)]'\n : success\n ? 'text-[var(--ui-success)]'\n : warning\n ? 'text-[var(--ui-warning)]'\n : info\n ? 'text-[var(--ui-info)]'\n : muted\n ? invert\n ? 'text-gray-300 dark:text-gray-600'\n : 'text-[var(--ui-text-muted)]'\n : invert\n ? 'text-white dark:text-black'\n : 'text-[var(--ui-text)]'\n\n return React.createElement(tag, {\n ref,\n className: buildClassName(\n colorClass,\n size ? sizeClassMap[size] : defaultLevelSizeMap[level],\n weight && weightClassMap[weight],\n align && alignClassMap[align],\n tracking && trackingClassMap[tracking],\n truncate && 'truncate',\n className,\n ),\n ...rest,\n children,\n })\n})\n\nHeadingTextComponent.displayName = 'HeadingText'\n\nconst Title = forwardRef<HTMLHeadingElement, HeadingTextProps>((props, ref) => (\n <HeadingTextComponent ref={ref} level={1} {...props} />\n))\nTitle.displayName = 'HeadingText.Title'\n\nconst SubTitle = forwardRef<HTMLHeadingElement, HeadingTextProps>((props, ref) => (\n <HeadingTextComponent ref={ref} level={2} {...props} />\n))\nSubTitle.displayName = 'HeadingText.SubTitle'\n\nconst SubTitle2 = forwardRef<HTMLHeadingElement, HeadingTextProps>((props, ref) => (\n <HeadingTextComponent ref={ref} level={3} {...props} />\n))\nSubTitle2.displayName = 'HeadingText.SubTitle2'\n\nconst SubTitle3 = forwardRef<HTMLHeadingElement, HeadingTextProps>((props, ref) => (\n <HeadingTextComponent ref={ref} level={4} {...props} />\n))\nSubTitle3.displayName = 'HeadingText.SubTitle3'\n\nconst SubTitle4 = forwardRef<HTMLHeadingElement, HeadingTextProps>((props, ref) => (\n <HeadingTextComponent ref={ref} level={5} {...props} />\n))\nSubTitle4.displayName = 'HeadingText.SubTitle4'\n\nexport const HeadingText = Object.assign(HeadingTextComponent, {\n Title,\n SubTitle,\n SubTitle2,\n SubTitle3,\n SubTitle4,\n})\n","import { forwardRef, useState, type ReactNode } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport { HeadingText } from '../HeadingText'\nimport type { Detail, DetailedInformationProps } from './DetailedInformation.types'\n\nconst COLUMN_GRID_CLASS: Record<number, string> = {\n 1: 'grid-cols-1',\n 2: 'grid grid-cols-1 md:grid-cols-2 gap-x-6 gap-y-3',\n 3: 'grid grid-cols-1 md:grid-cols-3 gap-x-6 gap-y-3',\n 4: 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-x-6 gap-y-3',\n}\n\nfunction CopyableValue({ text, children }: { text: string; children: ReactNode }) {\n const [copied, setCopied] = useState(false)\n\n const handleCopy = async (e: React.MouseEvent) => {\n e.stopPropagation()\n try {\n await navigator.clipboard.writeText(text)\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n } catch {\n // Ignore clipboard error\n }\n }\n\n return (\n <span className=\"inline-flex items-center gap-1.5 group/copy\">\n <span>{children}</span>\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"opacity-0 group-hover/copy:opacity-100 focus:opacity-100 transition-opacity p-0.5 text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 cursor-pointer\"\n title=\"Copy to clipboard\"\n aria-label=\"Copy to clipboard\"\n >\n {copied ? (\n <svg\n className=\"size-3.5 text-emerald-500\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n ) : (\n <svg className=\"size-3.5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\"\n />\n </svg>\n )}\n </button>\n </span>\n )\n}\n\nexport const DetailedInformation = forwardRef<HTMLDivElement, DetailedInformationProps>(\n (props, ref) => {\n const {\n className,\n title,\n subTitle,\n action,\n details = [],\n columns = 1,\n layout = 'horizontal',\n variant = 'flat',\n compact = false,\n bordered = false,\n divider = true,\n emptyValue = '- -',\n titleClass,\n detailsClass,\n labelClass,\n ...divProps\n } = props\n\n const isCard = variant === 'card'\n const isBordered = bordered || variant === 'bordered' || isCard\n const hasTitles = title || subTitle || action\n const filteredDetails = details.filter((detail) => !detail.hidden)\n const isMultiColumn = columns > 1\n\n return (\n <div\n ref={ref}\n className={buildClassName(\n isCard\n ? compact\n ? 'p-3 sm:p-4 bg-gray-50/60 dark:bg-gray-800/40 rounded-2xl border border-[var(--ui-border)]'\n : 'p-4 sm:p-6 bg-gray-50/60 dark:bg-gray-800/40 rounded-2xl border border-[var(--ui-border)]'\n : isBordered\n ? compact\n ? 'p-3 sm:p-4 border border-[var(--ui-border)] rounded-2xl'\n : 'p-4 sm:p-6 border border-[var(--ui-border)] rounded-2xl'\n : compact\n ? 'p-2 md:p-3'\n : 'p-3 md:p-4',\n className,\n )}\n {...divProps}\n >\n {hasTitles && (\n <div className=\"mb-4 flex items-start justify-between gap-4\">\n <div>\n {title && (\n <HeadingText.SubTitle2 className={buildClassName(titleClass)}>\n {title}\n </HeadingText.SubTitle2>\n )}\n {subTitle && (\n <p className=\"mt-1 max-w-2xl text-sm/6 text-gray-500 dark:text-gray-400 font-normal\">\n {subTitle}\n </p>\n )}\n </div>\n {action && <div className=\"shrink-0 flex items-center\">{action}</div>}\n </div>\n )}\n\n {filteredDetails.length ? (\n <div\n className={buildClassName(\n 'border-[var(--ui-border-muted)]',\n hasTitles && !isMultiColumn && 'border-t pt-2',\n detailsClass,\n )}\n >\n <dl\n className={buildClassName(\n COLUMN_GRID_CLASS[columns] || COLUMN_GRID_CLASS[1],\n !isMultiColumn && divider && 'divide-y divide-[var(--ui-border-muted)]',\n )}\n >\n {filteredDetails.map((detail, index) => {\n const itemFallback = detail.emptyValue ?? emptyValue\n const hasValue =\n detail.value !== undefined && detail.value !== null && detail.value !== ''\n const displayValue = hasValue ? detail.value : itemFallback\n const copyText =\n typeof detail.value === 'string' || typeof detail.value === 'number'\n ? String(detail.value)\n : ''\n\n const isVertical = layout === 'vertical' || isMultiColumn\n\n return (\n <div\n key={detail.label || index}\n className={buildClassName(\n isMultiColumn && isCard\n ? compact\n ? 'p-3 bg-white dark:bg-gray-900 rounded-xl border border-[var(--ui-border)] shadow-2xs flex flex-col gap-1'\n : 'p-4 bg-white dark:bg-gray-900 rounded-xl border border-[var(--ui-border)] shadow-2xs flex flex-col gap-1'\n : isVertical\n ? 'flex flex-col gap-1 py-2 px-1'\n : 'grid grid-cols-3 gap-4 items-center py-2.5 px-1',\n compact && !isMultiColumn ? 'py-1.5' : '',\n )}\n >\n <dt\n className={buildClassName(\n 'text-sm/6 font-medium text-gray-900 dark:text-gray-100 flex items-center gap-1.5',\n labelClass,\n detail.labelClass,\n )}\n >\n {detail.icon && <span className=\"shrink-0 text-gray-400\">{detail.icon}</span>}\n <span>{detail.label}</span>\n {detail.helpText && (\n <span\n className=\"text-xs text-gray-400 font-normal cursor-help\"\n title={detail.helpText}\n >\n (?)\n </span>\n )}\n </dt>\n <dd\n className={buildClassName(\n 'text-sm/6 text-gray-700 dark:text-gray-300',\n !isVertical && 'sm:col-span-2 sm:mt-0',\n detail.contentClass,\n )}\n >\n {detail.copyable && copyText ? (\n <CopyableValue text={copyText}>{displayValue}</CopyableValue>\n ) : (\n displayValue\n )}\n </dd>\n </div>\n )\n })}\n </dl>\n </div>\n ) : null}\n </div>\n )\n },\n)\n\nDetailedInformation.displayName = 'DetailedInformation'\n","import React, { type HTMLAttributes, type JSX, type JSXElementConstructor } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\n\nexport const Dot: React.FC<\n HTMLAttributes<HTMLElement> & {\n as?: keyof JSX.IntrinsicElements | JSXElementConstructor<any>\n }\n> = ({ as = 'span', className, ...props }) =>\n React.createElement(as, {\n className: buildClassName(\n 'inline-block rounded-full bg-gray-500 dark:bg-gray-300',\n 'w-1 h-1',\n className,\n ),\n ...props,\n })\n","import React, { Fragment, cloneElement, isValidElement } from 'react'\nimport { Menu, MenuButton, MenuItem, MenuItems } from '@headlessui/react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { DropdownItem, DropdownProps } from './Dropdown.types'\n\nconst WIDTH_CLASS: Record<string, string> = {\n auto: 'w-auto min-w-[120px]',\n sm: 'w-44',\n md: 'w-56',\n lg: 'w-64',\n xl: 'w-72',\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({\n triggerButton,\n renderTriggerButton,\n className,\n items,\n renderItem,\n itemsContainerClass,\n transition = true,\n anchor = 'bottom start',\n width = 'md',\n menuItemClass,\n onMenuClick,\n ...restProps\n}: DropdownProps & Record<string, any>) => {\n const widthClass = WIDTH_CLASS[width] || width || WIDTH_CLASS.md\n const { theme, variant, size, disabled } = restProps\n\n return (\n <Menu as=\"div\" className=\"relative inline-block\">\n {/* Trigger */}\n {renderTriggerButton ? (\n <MenuButton as={Fragment}>\n {(state) => {\n const rendered = renderTriggerButton(state)\n if (isValidElement(rendered) && className) {\n return cloneElement(rendered as React.ReactElement<any>, {\n className: buildClassName((rendered.props as any).className, className),\n })\n }\n return rendered as React.ReactElement\n }}\n </MenuButton>\n ) : isValidElement(triggerButton) ? (\n <MenuButton as={Fragment}>\n {cloneElement(triggerButton as React.ReactElement<any>, {\n className: buildClassName((triggerButton.props as any).className, className),\n theme: (triggerButton.props as any).theme ?? theme,\n variant: (triggerButton.props as any).variant ?? variant,\n size: (triggerButton.props as any).size ?? size,\n disabled: (triggerButton.props as any).disabled ?? disabled,\n })}\n </MenuButton>\n ) : (\n <MenuButton as={Fragment}>{triggerButton}</MenuButton>\n )}\n\n {/* Dropdown Panel */}\n <MenuItems\n transition={transition}\n anchor={anchor}\n className={buildClassName(\n 'origin-top-right rounded-xl shadow-lg p-1.5 text-sm transition duration-100 ease-out z-50',\n 'border border-[var(--ui-border)] bg-white dark:bg-gray-800 text-gray-800 dark:text-gray-200',\n 'focus:outline-none data-[closed]:scale-95 data-[closed]:opacity-0',\n '[--anchor-gap:--spacing(1)]',\n widthClass,\n itemsContainerClass,\n )}\n data-testid=\"dropdown-items\"\n as=\"ul\"\n >\n {items.map((item: DropdownItem, idx: number) => (\n <Fragment key={item.id}>\n {item.groupTitle && (\n <li\n key={`group-${item.id}`}\n className=\"px-2.5 pt-2 pb-1 text-[11px] font-semibold text-gray-400 dark:text-gray-500 uppercase tracking-wider select-none\"\n data-testid={`dropdown-group-${item.id}`}\n >\n {item.groupTitle}\n </li>\n )}\n <MenuItem as=\"li\" disabled={item.disabled}>\n {({ disabled, active }) => (\n <div\n onClick={() => {\n if (!disabled) {\n item.onClick?.(item)\n onMenuClick?.(item, idx)\n }\n }}\n className={buildClassName(\n 'flex items-center justify-between gap-3 w-full px-2.5 py-1.5 rounded-lg text-sm transition-colors cursor-pointer select-none',\n item.danger\n ? buildClassName(\n 'text-rose-600 dark:text-rose-400',\n active\n ? 'bg-rose-50 dark:bg-rose-950/40'\n : 'hover:bg-rose-50 dark:hover:bg-rose-950/40',\n )\n : buildClassName(\n 'text-gray-700 dark:text-gray-200',\n active\n ? 'bg-gray-100 dark:bg-gray-700/80'\n : 'hover:bg-gray-100/80 dark:hover:bg-gray-700/80',\n ),\n disabled && 'opacity-40 cursor-not-allowed pointer-events-none',\n menuItemClass,\n )}\n data-testid={`dropdown-item-${item.id}`}\n >\n {renderItem ? (\n renderItem(item)\n ) : (\n <>\n <div className=\"flex items-center gap-2.5 min-w-0 flex-1\">\n {item.icon && (\n <span\n className={buildClassName(\n 'shrink-0',\n item.danger ? 'text-rose-500' : 'text-gray-400 dark:text-gray-500',\n )}\n >\n {item.icon}\n </span>\n )}\n <div className=\"flex flex-col min-w-0\">\n {item.label && <span className=\"font-medium truncate\">{item.label}</span>}\n {item.description && (\n <span className=\"text-xs text-gray-400 dark:text-gray-500 font-normal truncate\">\n {item.description}\n </span>\n )}\n </div>\n </div>\n {item.shortcut && (\n <kbd className=\"shrink-0 text-[10px] font-medium font-mono px-1.5 py-0.5 rounded bg-gray-100 dark:bg-gray-700/80 border border-[var(--ui-border-muted)] text-gray-400 dark:text-gray-400\">\n {item.shortcut}\n </kbd>\n )}\n </>\n )}\n </div>\n )}\n </MenuItem>\n {item.divider && idx < items.length - 1 && (\n <li\n key={`divider-${item.id}`}\n className=\"my-1 h-px bg-gray-200/80 dark:bg-gray-700/80\"\n data-testid=\"dropdown-divider\"\n />\n )}\n </Fragment>\n ))}\n </MenuItems>\n </Menu>\n )\n}\n\nDropdown.displayName = 'Dropdown'\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-folder-plus-icon lucide-folder-plus\"><path d=\"M12 10v6\"/><path d=\"M9 13h6\"/><path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/></svg>","import React, { type ReactNode } from 'react'\nimport FolderPlusIcon from '../Icons/FolderPlus.svg'\nimport { HeadingText } from '../HeadingText'\nimport { BodyText } from '../BodyText'\nimport { buildClassName } from '../../utils/build-classname'\n\nexport interface EmptyStateProps {\n title: string\n description?: string\n action?: ReactNode\n className?: string\n}\n\nexport const EmptyState: React.FC<EmptyStateProps> = ({\n title,\n description,\n className,\n action = null,\n}) => {\n return (\n <div className={buildClassName('w-full flex justify-center px-4 pt-16', className)}>\n <div className=\"max-w-md flex flex-col items-center gap-4\">\n <FolderPlusIcon className=\"size-8 text-[var(--ui-text)]\" />\n <HeadingText.SubTitle>{title}</HeadingText.SubTitle>\n {description && (\n <BodyText as=\"p\" className=\"text-center\" muted small>\n {description}\n </BodyText>\n )}\n {action}\n </div>\n </div>\n )\n}\n","import React, { useState } from 'react'\nimport type { FloatingActionButtonProps, FABSpeedDialAction } from './FloatingActionButton.types'\nimport { buildClassName } from '../../utils/build-classname'\n\nexport function FloatingActionButton({\n icon,\n activeIcon,\n label,\n variant = 'primary',\n size = 'md',\n position = 'bottom-right',\n speedDialActions,\n isOpen: externalIsOpen,\n onToggle,\n disabled = false,\n onClick,\n 'aria-label': ariaLabel,\n containerClass = '',\n className = '',\n}: FloatingActionButtonProps) {\n const [internalIsOpen, setInternalIsOpen] = useState(false)\n\n const isSpeedDial = Array.isArray(speedDialActions) && speedDialActions.length > 0\n const isOpen = externalIsOpen !== undefined ? externalIsOpen : internalIsOpen\n\n const toggleOpen = () => {\n const nextState = !isOpen\n setInternalIsOpen(nextState)\n onToggle?.(nextState)\n }\n\n const handleMainClick = () => {\n if (disabled) return\n if (isSpeedDial) {\n toggleOpen()\n } else {\n onClick?.()\n }\n }\n\n const handleSubActionClick = (action: FABSpeedDialAction) => {\n if (action.disabled) return\n action.onClick?.()\n setInternalIsOpen(false)\n onToggle?.(false)\n }\n\n const positionClasses = {\n 'bottom-right': 'fixed bottom-6 right-6 z-40',\n 'bottom-left': 'fixed bottom-6 left-6 z-40',\n 'bottom-center': 'fixed bottom-6 left-1/2 -translate-x-1/2 z-40',\n inline: 'relative inline-flex z-10',\n }[position]\n\n const variantClasses = {\n primary:\n 'bg-blue-600 hover:bg-blue-700 active:bg-blue-800 text-white shadow-lg shadow-blue-600/30',\n secondary:\n 'bg-white dark:bg-gray-800 hover:bg-gray-50 dark:hover:bg-gray-700 text-gray-800 dark:text-gray-100 border border-[var(--ui-border)] shadow-lg',\n danger: 'bg-red-600 hover:bg-red-700 active:bg-red-800 text-white shadow-lg shadow-red-600/30',\n dark: 'bg-gray-900 hover:bg-black active:bg-black text-white shadow-lg shadow-gray-900/40',\n }[variant]\n\n const sizeClasses = {\n sm: label ? 'px-3.5 py-2 text-xs gap-2 rounded-full' : 'p-2.5 rounded-full',\n md: label ? 'px-5 py-3 text-sm gap-2.5 rounded-full' : 'p-3.5 rounded-full',\n lg: label ? 'px-6 py-4 text-base gap-3 rounded-full' : 'p-4 rounded-full',\n }[size]\n\n return (\n <div className={buildClassName(positionClasses, containerClass)} data-testid=\"fab-container\">\n {/* Speed Dial Backdrop Overlay */}\n {isSpeedDial && isOpen && (\n <div\n className=\"fixed inset-0 bg-black/25 backdrop-blur-xs z-30 transition-opacity duration-200\"\n onClick={() => toggleOpen()}\n data-testid=\"fab-backdrop\"\n />\n )}\n\n {/* Speed Dial Sub-Actions List */}\n {isSpeedDial && (\n <div\n className={buildClassName(\n 'absolute bottom-full mb-3 flex flex-col gap-2.5 z-40 transition-all duration-200 origin-bottom',\n position === 'bottom-left'\n ? 'items-start left-0'\n : position === 'bottom-center'\n ? 'items-center left-1/2 -translate-x-1/2'\n : 'items-end right-0',\n isOpen\n ? 'scale-100 opacity-100 pointer-events-auto'\n : 'scale-90 opacity-0 pointer-events-none',\n )}\n data-testid=\"fab-speed-dial-menu\"\n >\n {speedDialActions.map((action) => {\n const isDanger = action.theme === 'danger'\n const isPrimary = action.theme === 'primary'\n\n return (\n <button\n key={action.id}\n type=\"button\"\n disabled={action.disabled}\n onClick={() => handleSubActionClick(action)}\n className={buildClassName(\n 'flex items-center gap-2.5 py-2 px-3.5 rounded-full text-xs font-semibold shadow-md transition-all duration-150 cursor-pointer group',\n action.disabled && 'opacity-50 cursor-not-allowed pointer-events-none',\n !action.disabled &&\n (isDanger\n ? 'bg-red-600 text-white hover:bg-red-700'\n : isPrimary\n ? 'bg-blue-600 text-white hover:bg-blue-700'\n : 'bg-white dark:bg-gray-800 text-gray-800 dark:text-gray-100 hover:bg-gray-100 dark:hover:bg-gray-700 border border-[var(--ui-border)]'),\n )}\n data-testid={`fab-action-${action.id}`}\n >\n <span className=\"text-sm\">{action.icon}</span>\n <span className=\"whitespace-nowrap\">{action.label}</span>\n </button>\n )\n })}\n </div>\n )}\n\n {/* Primary Floating Action Button */}\n <button\n type=\"button\"\n disabled={disabled}\n onClick={handleMainClick}\n aria-label={ariaLabel || (typeof label === 'string' ? label : 'Floating action')}\n aria-expanded={isSpeedDial ? isOpen : undefined}\n className={buildClassName(\n 'inline-flex items-center justify-center font-semibold transition-all duration-200 cursor-pointer select-none z-40 active:scale-95',\n disabled && 'opacity-50 cursor-not-allowed pointer-events-none shadow-none',\n variantClasses,\n sizeClasses,\n className,\n )}\n data-testid=\"fab-button\"\n >\n <span\n className={buildClassName('transition-transform duration-200', isOpen && 'rotate-45')}\n >\n {isOpen && activeIcon ? activeIcon : icon}\n </span>\n {label && <span className=\"whitespace-nowrap\">{label}</span>}\n </button>\n </div>\n )\n}\n\nFloatingActionButton.displayName = 'FloatingActionButton'\n","import type { CSSProperties } from 'react'\n\n/**\n * Shared class-name lookup tables for `Flex`/`Grid` (and their `.Item`/`.Col`\n * sub-components).\n *\n * These are intentionally plain object literals with fully spelled-out class\n * names (e.g. `'sm:col-span-6'`) rather than strings built with template\n * interpolation (e.g. `` `sm:col-span-${n}` ``). Tailwind's JIT compiler\n * discovers classes by statically scanning file text for literal substrings —\n * it does not execute this code — so any class name assembled at runtime\n * would never be generated into the final stylesheet. Keep every entry here\n * fully literal.\n */\n\nexport type ResponsiveGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\nexport type ResponsiveAlign = 'start' | 'center' | 'end' | 'baseline' | 'stretch'\nexport type ResponsiveJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly'\nexport type ResponsiveDirection = 'row' | 'row-reverse' | 'col' | 'col-reverse'\nexport type ResponsiveWrap = 'wrap' | 'nowrap' | 'wrap-reverse'\nexport type ResponsiveOrder = 'first' | 'last' | number\n\nexport const GAP_MAP: Record<ResponsiveGap, string> = {\n none: 'gap-0',\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n '2xl': 'gap-12',\n}\n\nexport const GAP_X_MAP: Record<ResponsiveGap, string> = {\n none: 'gap-x-0',\n xs: 'gap-x-1',\n sm: 'gap-x-2',\n md: 'gap-x-4',\n lg: 'gap-x-6',\n xl: 'gap-x-8',\n '2xl': 'gap-x-12',\n}\n\nexport const GAP_Y_MAP: Record<ResponsiveGap, string> = {\n none: 'gap-y-0',\n xs: 'gap-y-1',\n sm: 'gap-y-2',\n md: 'gap-y-4',\n lg: 'gap-y-6',\n xl: 'gap-y-8',\n '2xl': 'gap-y-12',\n}\n\nexport const ALIGN_MAP: Record<ResponsiveAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n baseline: 'items-baseline',\n stretch: 'items-stretch',\n}\n\nexport const JUSTIFY_MAP: Record<ResponsiveJustify, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n}\n\nexport const DIRECTION_MAP: Record<ResponsiveDirection, string> = {\n row: 'flex-row',\n 'row-reverse': 'flex-row-reverse',\n col: 'flex-col',\n 'col-reverse': 'flex-col-reverse',\n}\n\nexport const WRAP_MAP: Record<ResponsiveWrap, string> = {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n}\n\n/**\n * Resolves the `order` prop to inline styles when it's a raw number.\n *\n * `'first'` / `'last'` map to the static `order-first`/`order-last` Tailwind\n * utilities (safe, since those exact class names are literal elsewhere).\n * Arbitrary numeric orders can't be expressed as a safe literal class (the\n * value is unbounded), so they're applied as an inline `order` style instead\n * — that works regardless of what the consuming app's Tailwind build scans.\n */\nexport const resolveOrderStyle = (order?: ResponsiveOrder): CSSProperties | undefined =>\n typeof order === 'number' ? { order } : undefined\n\nexport const resolveOrderClassName = (order?: ResponsiveOrder): string | undefined => {\n if (order === 'first') return '-order-1'\n if (order === 'last') return 'order-last'\n return undefined\n}\n\n/** Width-fraction span classes used by `Flex.Item` (unprefixed / base breakpoint). */\nexport const FLEX_SPAN_MAP: Record<string, string> = {\n 1: 'w-1/12 flex-none',\n 2: 'w-2/12 flex-none',\n 3: 'w-3/12 flex-none',\n 4: 'w-4/12 flex-none',\n 5: 'w-5/12 flex-none',\n 6: 'w-6/12 flex-none',\n 7: 'w-7/12 flex-none',\n 8: 'w-8/12 flex-none',\n 9: 'w-9/12 flex-none',\n 10: 'w-10/12 flex-none',\n 11: 'w-11/12 flex-none',\n 12: 'w-full flex-none',\n auto: 'w-auto flex-none',\n full: 'w-full flex-none',\n}\n\nexport const FLEX_SM_SPAN_MAP: Record<string, string> = {\n 1: 'sm:w-1/12',\n 2: 'sm:w-2/12',\n 3: 'sm:w-3/12',\n 4: 'sm:w-4/12',\n 5: 'sm:w-5/12',\n 6: 'sm:w-6/12',\n 7: 'sm:w-7/12',\n 8: 'sm:w-8/12',\n 9: 'sm:w-9/12',\n 10: 'sm:w-10/12',\n 11: 'sm:w-11/12',\n 12: 'sm:w-full',\n auto: 'sm:w-auto',\n full: 'sm:w-full',\n}\n\nexport const FLEX_MD_SPAN_MAP: Record<string, string> = {\n 1: 'md:w-1/12',\n 2: 'md:w-2/12',\n 3: 'md:w-3/12',\n 4: 'md:w-4/12',\n 5: 'md:w-5/12',\n 6: 'md:w-6/12',\n 7: 'md:w-7/12',\n 8: 'md:w-8/12',\n 9: 'md:w-9/12',\n 10: 'md:w-10/12',\n 11: 'md:w-11/12',\n 12: 'md:w-full',\n auto: 'md:w-auto',\n full: 'md:w-full',\n}\n\nexport const FLEX_LG_SPAN_MAP: Record<string, string> = {\n 1: 'lg:w-1/12',\n 2: 'lg:w-2/12',\n 3: 'lg:w-3/12',\n 4: 'lg:w-4/12',\n 5: 'lg:w-5/12',\n 6: 'lg:w-6/12',\n 7: 'lg:w-7/12',\n 8: 'lg:w-8/12',\n 9: 'lg:w-9/12',\n 10: 'lg:w-10/12',\n 11: 'lg:w-11/12',\n 12: 'lg:w-full',\n auto: 'lg:w-auto',\n full: 'lg:w-full',\n}\n\nexport const FLEX_XL_SPAN_MAP: Record<string, string> = {\n 1: 'xl:w-1/12',\n 2: 'xl:w-2/12',\n 3: 'xl:w-3/12',\n 4: 'xl:w-4/12',\n 5: 'xl:w-5/12',\n 6: 'xl:w-6/12',\n 7: 'xl:w-7/12',\n 8: 'xl:w-8/12',\n 9: 'xl:w-9/12',\n 10: 'xl:w-10/12',\n 11: 'xl:w-11/12',\n 12: 'xl:w-full',\n auto: 'xl:w-auto',\n full: 'xl:w-full',\n}\n\nexport const FLEX_XXL_SPAN_MAP: Record<string, string> = {\n 1: '2xl:w-1/12',\n 2: '2xl:w-2/12',\n 3: '2xl:w-3/12',\n 4: '2xl:w-4/12',\n 5: '2xl:w-5/12',\n 6: '2xl:w-6/12',\n 7: '2xl:w-7/12',\n 8: '2xl:w-8/12',\n 9: '2xl:w-9/12',\n 10: '2xl:w-10/12',\n 11: '2xl:w-11/12',\n 12: '2xl:w-full',\n auto: '2xl:w-auto',\n full: '2xl:w-full',\n}\n\n/** `col-span-*` classes used by `Grid.Col` (unprefixed / base breakpoint). */\nexport const GRID_SPAN_MAP: Record<string, string> = {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n 7: 'col-span-7',\n 8: 'col-span-8',\n 9: 'col-span-9',\n 10: 'col-span-10',\n 11: 'col-span-11',\n 12: 'col-span-12',\n auto: 'col-auto',\n full: 'col-span-full',\n}\n\nexport const GRID_SM_SPAN_MAP: Record<string, string> = {\n 1: 'sm:col-span-1',\n 2: 'sm:col-span-2',\n 3: 'sm:col-span-3',\n 4: 'sm:col-span-4',\n 5: 'sm:col-span-5',\n 6: 'sm:col-span-6',\n 7: 'sm:col-span-7',\n 8: 'sm:col-span-8',\n 9: 'sm:col-span-9',\n 10: 'sm:col-span-10',\n 11: 'sm:col-span-11',\n 12: 'sm:col-span-12',\n auto: 'sm:col-auto',\n full: 'sm:col-span-full',\n}\n\nexport const GRID_MD_SPAN_MAP: Record<string, string> = {\n 1: 'md:col-span-1',\n 2: 'md:col-span-2',\n 3: 'md:col-span-3',\n 4: 'md:col-span-4',\n 5: 'md:col-span-5',\n 6: 'md:col-span-6',\n 7: 'md:col-span-7',\n 8: 'md:col-span-8',\n 9: 'md:col-span-9',\n 10: 'md:col-span-10',\n 11: 'md:col-span-11',\n 12: 'md:col-span-12',\n auto: 'md:col-auto',\n full: 'md:col-span-full',\n}\n\nexport const GRID_LG_SPAN_MAP: Record<string, string> = {\n 1: 'lg:col-span-1',\n 2: 'lg:col-span-2',\n 3: 'lg:col-span-3',\n 4: 'lg:col-span-4',\n 5: 'lg:col-span-5',\n 6: 'lg:col-span-6',\n 7: 'lg:col-span-7',\n 8: 'lg:col-span-8',\n 9: 'lg:col-span-9',\n 10: 'lg:col-span-10',\n 11: 'lg:col-span-11',\n 12: 'lg:col-span-12',\n auto: 'lg:col-auto',\n full: 'lg:col-span-full',\n}\n\nexport const GRID_XL_SPAN_MAP: Record<string, string> = {\n 1: 'xl:col-span-1',\n 2: 'xl:col-span-2',\n 3: 'xl:col-span-3',\n 4: 'xl:col-span-4',\n 5: 'xl:col-span-5',\n 6: 'xl:col-span-6',\n 7: 'xl:col-span-7',\n 8: 'xl:col-span-8',\n 9: 'xl:col-span-9',\n 10: 'xl:col-span-10',\n 11: 'xl:col-span-11',\n 12: 'xl:col-span-12',\n auto: 'xl:col-auto',\n full: 'xl:col-span-full',\n}\n\nexport const GRID_XXL_SPAN_MAP: Record<string, string> = {\n 1: '2xl:col-span-1',\n 2: '2xl:col-span-2',\n 3: '2xl:col-span-3',\n 4: '2xl:col-span-4',\n 5: '2xl:col-span-5',\n 6: '2xl:col-span-6',\n 7: '2xl:col-span-7',\n 8: '2xl:col-span-8',\n 9: '2xl:col-span-9',\n 10: '2xl:col-span-10',\n 11: '2xl:col-span-11',\n 12: '2xl:col-span-12',\n auto: '2xl:col-auto',\n full: '2xl:col-span-full',\n}\n\n/**\n * Preset track-count classes for `Grid`'s `cols` prop. Each preset\n * progressively reveals more columns at wider breakpoints so a grid is\n * responsive out of the box without the caller specifying per-item spans.\n */\nexport const GRID_COLS_MAP: Record<string, string> = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3',\n 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',\n 5: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5',\n 6: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-6',\n 7: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-4 lg:grid-cols-7',\n 8: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-4 lg:grid-cols-8',\n 9: 'grid-cols-1 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-9',\n 10: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-5 lg:grid-cols-10',\n 11: 'grid-cols-1 sm:grid-cols-3 md:grid-cols-6 lg:grid-cols-11',\n 12: 'grid-cols-12',\n auto: 'grid-cols-none auto-cols-auto',\n}\n","import { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport {\n ALIGN_MAP,\n DIRECTION_MAP,\n FLEX_LG_SPAN_MAP,\n FLEX_MD_SPAN_MAP,\n FLEX_SM_SPAN_MAP,\n FLEX_SPAN_MAP,\n FLEX_XL_SPAN_MAP,\n FLEX_XXL_SPAN_MAP,\n GAP_MAP,\n GAP_X_MAP,\n GAP_Y_MAP,\n JUSTIFY_MAP,\n WRAP_MAP,\n resolveOrderClassName,\n resolveOrderStyle,\n} from '../common-responsive'\nimport type { FlexComponent, FlexItemProps, FlexProps } from './Flex.types'\n\nexport const FlexItem = forwardRef<HTMLDivElement, FlexItemProps>((props, ref) => {\n const {\n as: Component = 'div',\n span,\n sm,\n md,\n lg,\n xl,\n xxl,\n grow,\n shrink,\n order,\n className,\n style,\n children,\n ...restProps\n } = props\n\n const classes = buildClassName(\n 'min-w-0 box-border',\n span && FLEX_SPAN_MAP[String(span)],\n sm && FLEX_SM_SPAN_MAP[String(sm)],\n md && FLEX_MD_SPAN_MAP[String(md)],\n lg && FLEX_LG_SPAN_MAP[String(lg)],\n xl && FLEX_XL_SPAN_MAP[String(xl)],\n xxl && FLEX_XXL_SPAN_MAP[String(xxl)],\n resolveOrderClassName(order),\n grow === true && 'grow',\n grow === false && 'grow-0',\n shrink === true && 'shrink',\n shrink === false && 'shrink-0',\n className,\n )\n\n return (\n <Component\n ref={ref}\n className={classes}\n style={{ ...resolveOrderStyle(order), ...style }}\n {...restProps}\n >\n {children}\n </Component>\n )\n})\n\nFlexItem.displayName = 'Flex.Item'\n\nexport const Flex = forwardRef<HTMLDivElement, FlexProps>((props, ref) => {\n const {\n as: Component = 'div',\n gap,\n gapX,\n gapY,\n align = 'stretch',\n justify = 'start',\n direction = 'row',\n wrap = 'wrap',\n inline = false,\n className,\n children,\n ...restProps\n } = props\n\n const classes = buildClassName(\n inline ? 'inline-flex' : 'flex',\n DIRECTION_MAP[direction] || 'flex-row',\n WRAP_MAP[wrap] || 'flex-wrap',\n 'w-full',\n !gapX && !gapY && gap && GAP_MAP[gap],\n gapX && GAP_X_MAP[gapX],\n gapY && GAP_Y_MAP[gapY],\n ALIGN_MAP[align] || 'items-stretch',\n JUSTIFY_MAP[justify] || 'justify-start',\n className,\n )\n\n return (\n <Component ref={ref} className={classes} {...restProps}>\n {children}\n </Component>\n )\n}) as unknown as FlexComponent\n\nFlex.Item = FlexItem\nFlex.Col = FlexItem\nFlex.displayName = 'Flex'\n","import { createContext, forwardRef, useContext } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport {\n ALIGN_MAP,\n DIRECTION_MAP,\n GAP_MAP,\n GAP_X_MAP,\n GAP_Y_MAP,\n GRID_COLS_MAP,\n GRID_LG_SPAN_MAP,\n GRID_MD_SPAN_MAP,\n GRID_SM_SPAN_MAP,\n GRID_SPAN_MAP,\n GRID_XL_SPAN_MAP,\n GRID_XXL_SPAN_MAP,\n JUSTIFY_MAP,\n WRAP_MAP,\n resolveOrderClassName,\n resolveOrderStyle,\n} from '../common-responsive'\nimport type { GridColProps, GridComponent, GridProps } from './Grid.types'\n\ninterface GridContextValue {\n isAutoFit: boolean\n}\n\nconst GridContext = createContext<GridContextValue>({ isAutoFit: false })\n\nexport const GridCol = forwardRef<HTMLDivElement, GridColProps>((props, ref) => {\n const {\n as: Component = 'div',\n span,\n sm,\n md,\n lg,\n xl,\n xxl,\n grow,\n shrink,\n order,\n className,\n style,\n children,\n ...restProps\n } = props\n\n const { isAutoFit } = useContext(GridContext)\n\n const classes = buildClassName(\n 'min-w-0 box-border',\n span ? GRID_SPAN_MAP[String(span)] : isAutoFit ? undefined : 'col-span-12 sm:col-span-4',\n sm && GRID_SM_SPAN_MAP[String(sm)],\n md && GRID_MD_SPAN_MAP[String(md)],\n lg && GRID_LG_SPAN_MAP[String(lg)],\n xl && GRID_XL_SPAN_MAP[String(xl)],\n xxl && GRID_XXL_SPAN_MAP[String(xxl)],\n resolveOrderClassName(order),\n grow === true && 'grow',\n grow === false && 'grow-0',\n shrink === true && 'shrink',\n shrink === false && 'shrink-0',\n className,\n )\n\n return (\n <Component\n ref={ref}\n className={classes}\n style={{ ...resolveOrderStyle(order), ...style }}\n {...restProps}\n >\n {children}\n </Component>\n )\n})\n\nGridCol.displayName = 'Grid.Col'\n\nexport const Grid = forwardRef<HTMLDivElement, GridProps>((props, ref) => {\n const {\n as: Component = 'div',\n cols,\n minColWidth,\n autoFit = true,\n gap = 'md',\n gapX,\n gapY,\n align = 'stretch',\n justify,\n direction = 'row',\n wrap = 'wrap',\n flex = false,\n inline = false,\n className,\n style,\n children,\n ...restProps\n } = props\n\n const isAutoFit = Boolean(!flex && minColWidth)\n\n const classes = buildClassName(\n flex ? (inline ? 'inline-flex' : 'flex') : inline ? 'inline-grid' : 'grid',\n flex && (DIRECTION_MAP[direction] || 'flex-row'),\n flex && (WRAP_MAP[wrap] || 'flex-wrap'),\n !flex &&\n !minColWidth &&\n (cols ? GRID_COLS_MAP[String(cols)] || 'grid-cols-12' : 'grid-cols-12'),\n !flex && 'justify-items-stretch',\n 'w-full',\n !gapX && !gapY && GAP_MAP[gap],\n gapX && GAP_X_MAP[gapX],\n gapY && GAP_Y_MAP[gapY],\n ALIGN_MAP[align] || 'items-stretch',\n justify && (JUSTIFY_MAP[justify] || 'justify-start'),\n className,\n )\n\n const gridTemplateColumns =\n !flex && minColWidth\n ? `repeat(${autoFit ? 'auto-fit' : 'auto-fill'}, minmax(${minColWidth}, 1fr))`\n : undefined\n\n return (\n <GridContext.Provider value={{ isAutoFit }}>\n <Component\n ref={ref}\n className={classes}\n style={gridTemplateColumns ? { gridTemplateColumns, ...style } : style}\n {...restProps}\n >\n {children}\n </Component>\n </GridContext.Provider>\n )\n}) as unknown as GridComponent\n\nGrid.Col = GridCol\nGrid.Item = GridCol\nGrid.displayName = 'Grid'\n","import { forwardRef, useImperativeHandle, useRef, useState, type ChangeEvent } from 'react'\nimport { Label } from '../Label'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { InputProps, InputSize } from './Input.types'\nimport { TextContent } from '../TextContent'\n\nconst sizeClasses: Record<InputSize, { input: string; group: string; icon: string; text: string }> =\n {\n sm: {\n input: 'px-2.5 py-1.5 text-xs leading-5',\n group: 'w-8 text-xs',\n icon: 'size-3.5',\n text: 'text-xs',\n },\n md: {\n input: 'px-3.5 py-2 text-sm leading-6',\n group: 'w-10 text-sm',\n icon: 'size-4',\n text: 'text-sm',\n },\n lg: {\n input: 'px-4 py-2.5 text-base leading-7',\n group: 'w-12 text-base',\n icon: 'size-5',\n text: 'text-base',\n },\n }\n\nexport function buildInputClass(\n className?: string,\n {\n isFocusWithin = false,\n disabled = false,\n hasError = false,\n size = 'md',\n }: { isFocusWithin?: boolean; disabled?: boolean; hasError?: boolean; size?: InputSize } = {},\n) {\n const currentSize = sizeClasses[size] || sizeClasses.md\n\n return buildClassName(\n 'transition-all duration-150',\n 'block w-full rounded-lg bg-white',\n currentSize.input,\n 'text-gray-900 outline outline-1 -outline-offset-1',\n hasError\n ? '!outline-red-500 !ring-1 !ring-red-500/50 dark:!outline-red-500'\n : 'outline-[var(--ui-border)]',\n disabled\n ? 'pointer-events-none bg-gray-100 dark:bg-gray-800 dark:text-gray-600 dark:placeholder-gray-600 placeholder-gray-400 outline-[var(--ui-border-muted)]'\n : 'bg-white dark:bg-gray-700 dark:text-white outline-[var(--ui-border)] dark:placeholder-gray-400 placeholder-gray-400',\n isFocusWithin\n ? 'focus-within:outline-[var(--ui-focus-ring)] focus-within:outline-2 focus-within:-outline-offset-2'\n : 'focus:outline-[var(--ui-focus-ring)] focus:outline-2 focus:-outline-offset-2',\n className,\n )\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const {\n name,\n id = name,\n type,\n label,\n labelHint,\n className,\n labelClass,\n labelWrapperClass,\n containerClass,\n error,\n showErrorMessage = true,\n rightGroup,\n leftGroup,\n prefix,\n suffix,\n clearable = false,\n onClear,\n showCount = false,\n helperText,\n size = 'md',\n value,\n defaultValue,\n onChange,\n maxLength,\n ...inputProps\n } = props\n\n const innerRef = useRef<HTMLInputElement>(null)\n useImperativeHandle(ref, () => innerRef.current as HTMLInputElement)\n\n const [uncontrolledValue, setUncontrolledValue] = useState<string>(String(defaultValue ?? ''))\n\n const isControlled = value !== undefined\n const currentVal = isControlled ? String(value ?? '') : uncontrolledValue\n const charLength = currentVal.length\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setUncontrolledValue(e.target.value)\n }\n onChange?.(e)\n }\n\n const handleClear = () => {\n if (innerRef.current) {\n innerRef.current.value = ''\n const event = new Event('input', {\n bubbles: true,\n }) as unknown as ChangeEvent<HTMLInputElement>\n Object.defineProperty(event, 'target', { writable: true, value: { value: '' } })\n if (!isControlled) {\n setUncontrolledValue('')\n }\n onChange?.(event)\n }\n onClear?.()\n }\n\n const hasError = Boolean(error)\n const currentSize = sizeClasses[size] || sizeClasses.md\n\n const showClearButton = clearable && charLength > 0 && !inputProps.disabled\n\n const actualRightGroup =\n rightGroup ??\n (showClearButton ? (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"p-1 rounded-full text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors cursor-pointer\"\n title=\"Clear text\"\n tabIndex={-1}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className={currentSize.icon}\n >\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n ) : null)\n\n const hasRightGroup = actualRightGroup !== null && actualRightGroup !== undefined\n const hasLeftGroup = leftGroup != null && leftGroup !== undefined\n\n return (\n <div className={buildClassName('group', hasError && 'has-error', containerClass)}>\n {label && (\n <div\n className={buildClassName('flex items-center justify-between mb-1.5', labelWrapperClass)}\n >\n <Label className={labelClass} htmlFor={id}>\n {label}\n </Label>\n {labelHint && <TextContent xsmall>{labelHint}</TextContent>}\n </div>\n )}\n\n <div className=\"flex rounded-lg shadow-2xs\">\n {/* Static Prefix Addon */}\n {prefix && (\n <span className=\"inline-flex items-center px-3 rounded-l-lg border border-r-0 border-[var(--ui-border)] bg-gray-50 dark:bg-gray-800 text-gray-500 dark:text-gray-400 text-xs font-medium shrink-0\">\n {prefix}\n </span>\n )}\n\n <div className=\"relative flex-1 min-w-0\">\n {hasLeftGroup && (\n <span\n className={buildClassName(\n 'absolute top-0 h-full flex items-center justify-center text-gray-400 dark:text-gray-500',\n currentSize.group,\n )}\n >\n {leftGroup}\n </span>\n )}\n\n <input\n ref={innerRef}\n autoComplete=\"off\"\n {...inputProps}\n value={value}\n defaultValue={defaultValue}\n onChange={handleInputChange}\n maxLength={maxLength}\n name={name}\n id={id}\n type={type}\n className={buildClassName(\n buildInputClass(className, {\n disabled: inputProps.disabled,\n hasError,\n size,\n }),\n prefix ? '!rounded-l-none' : '',\n suffix ? '!rounded-r-none' : '',\n hasRightGroup ? (size === 'lg' ? 'pe-12' : size === 'sm' ? 'pe-8' : 'pe-10') : '',\n hasLeftGroup ? (size === 'lg' ? 'ps-12' : size === 'sm' ? 'ps-8' : 'ps-10') : '',\n )}\n />\n\n {hasRightGroup && (\n <span\n className={buildClassName(\n 'absolute end-0 top-0 h-full flex items-center justify-center text-gray-400 dark:text-gray-500',\n currentSize.group,\n )}\n >\n {actualRightGroup}\n </span>\n )}\n </div>\n\n {/* Static Suffix Addon */}\n {suffix && (\n <span className=\"inline-flex items-center px-3 rounded-r-lg border border-l-0 border-[var(--ui-border)] bg-gray-50 dark:bg-gray-800 text-gray-500 dark:text-gray-400 text-xs font-medium shrink-0\">\n {suffix}\n </span>\n )}\n </div>\n\n {/* Footer Row: Error / Helper Text & Live Character Count */}\n {(showErrorMessage && error) || helperText || showCount ? (\n <div className=\"mt-1.5 flex items-center justify-between gap-2 text-xs\">\n <div className=\"min-w-0 flex-1\">\n {showErrorMessage && error ? (\n <TextContent error small>\n {error}\n </TextContent>\n ) : helperText ? (\n <TextContent muted small>\n {helperText}\n </TextContent>\n ) : null}\n </div>\n\n {showCount && (\n <span\n className={buildClassName(\n 'text-[11px] font-medium shrink-0 ml-auto',\n maxLength && charLength >= maxLength\n ? 'text-red-500 font-semibold'\n : 'text-gray-400 dark:text-gray-500',\n )}\n >\n {charLength}\n {maxLength ? ` / ${maxLength}` : ''}\n </span>\n )}\n </div>\n ) : null}\n </div>\n )\n})\n\nInput.displayName = 'Input'\n","import { forwardRef, useState, type ChangeEvent } from 'react'\nimport { Input } from '../Input'\nimport { Button } from '../Button'\nimport type { PasswordInputProps } from './PasswordInput.types'\n\nexport const PASSWORD_TYPE = 'password'\nexport const PASSWORD_PLACEHOLDER = '••••••••••'\n\nexport function evaluatePasswordStrength(val: string): {\n score: number\n label: 'Weak' | 'Fair' | 'Good' | 'Strong'\n colorClass: string\n percent: number\n} {\n if (!val)\n return { score: 0, label: 'Weak', colorClass: 'bg-gray-200 dark:bg-gray-700', percent: 0 }\n\n let score = 0\n if (val.length >= 8) score += 1\n if (val.length >= 12) score += 1\n if (/[0-9]/.test(val)) score += 1\n if (/[a-z]/.test(val) && /[A-Z]/.test(val)) score += 1\n if (/[^A-Za-z0-9]/.test(val)) score += 1\n\n if (score <= 1) {\n return { score: 1, label: 'Weak', colorClass: 'bg-red-500', percent: 25 }\n }\n if (score === 2) {\n return { score: 2, label: 'Fair', colorClass: 'bg-amber-500', percent: 50 }\n }\n if (score === 3) {\n return { score: 3, label: 'Good', colorClass: 'bg-blue-500', percent: 75 }\n }\n return { score: 4, label: 'Strong', colorClass: 'bg-emerald-500', percent: 100 }\n}\n\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>((props, ref) => {\n const {\n showStrength = false,\n placeholder = PASSWORD_PLACEHOLDER,\n onChange,\n value,\n defaultValue,\n ...inputProps\n } = props\n\n const [showPassword, setShowPassword] = useState(false)\n const [uncontrolledValue, setUncontrolledValue] = useState<string>(String(defaultValue ?? ''))\n\n const isControlled = value !== undefined\n const currentVal = isControlled ? String(value ?? '') : uncontrolledValue\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setUncontrolledValue(e.target.value)\n }\n onChange?.(e)\n }\n\n const strength = evaluatePasswordStrength(currentVal)\n\n return (\n <div className=\"space-y-1.5\">\n <Input\n ref={ref}\n {...inputProps}\n value={value}\n defaultValue={defaultValue}\n onChange={handleInputChange}\n type={showPassword ? 'text' : PASSWORD_TYPE}\n placeholder={placeholder}\n rightGroup={\n <Button\n theme=\"secondary\"\n variant=\"plain\"\n size=\"xs\"\n className=\"px-1.5 mr-0.5 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200\"\n type=\"button\"\n onClick={() => setShowPassword((prev) => !prev)}\n tabIndex={-1}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n >\n {showPassword ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"1.5\"\n stroke=\"currentColor\"\n className=\"size-4\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88\"\n />\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"1.5\"\n stroke=\"currentColor\"\n className=\"size-4\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\"\n />\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"\n />\n </svg>\n )}\n </Button>\n }\n />\n\n {/* Visual Password Strength Indicator */}\n {showStrength && currentVal.length > 0 && (\n <div className=\"pt-0.5 space-y-1\">\n <div className=\"flex items-center justify-between text-[11px] font-medium text-gray-500 dark:text-gray-400\">\n <span>Password Strength</span>\n <span className=\"font-semibold text-gray-700 dark:text-gray-200\">{strength.label}</span>\n </div>\n <div className=\"h-1.5 w-full bg-gray-200 dark:bg-gray-800 rounded-full overflow-hidden flex gap-1 p-0.5\">\n <div\n className={`h-full transition-all duration-300 rounded-full ${strength.colorClass}`}\n style={{ width: `${strength.percent}%` }}\n />\n </div>\n </div>\n )}\n </div>\n )\n})\n\nPasswordInput.displayName = 'PasswordInput'\n","import React, { useRef, useState, useEffect } from 'react'\nimport type { PinInputProps } from './PinInput.types'\nimport { buildClassName } from '../../utils/build-classname'\n\nexport function PinInput({\n length = 4,\n value: externalValue,\n onChange,\n onComplete,\n mask = false,\n size = 'md',\n type = 'numeric',\n error,\n disabled = false,\n autoFocus = false,\n containerClass = '',\n inputClass = '',\n}: PinInputProps) {\n const [internalValue, setInternalValue] = useState('')\n const inputRefs = useRef<(HTMLInputElement | null)[]>([])\n\n const pinValue = externalValue !== undefined ? externalValue : internalValue\n const digits = Array.from({ length }, (_, i) => pinValue[i] || '')\n\n useEffect(() => {\n if (autoFocus && inputRefs.current[0] && !disabled) {\n inputRefs.current[0].focus()\n }\n }, [autoFocus, disabled])\n\n const updatePin = (newDigits: string[]) => {\n const newPin = newDigits.join('').slice(0, length)\n setInternalValue(newPin)\n onChange?.(newPin)\n\n if (newPin.length === length) {\n onComplete?.(newPin)\n }\n }\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>, index: number) => {\n const char = e.target.value.slice(-1)\n if (!char) return\n\n const isValid = type === 'numeric' ? /^[0-9]$/.test(char) : /^[a-zA-Z0-9]$/.test(char)\n\n if (!isValid) return\n\n const nextDigits = [...digits]\n nextDigits[index] = char\n updatePin(nextDigits)\n\n if (index < length - 1 && inputRefs.current[index + 1]) {\n inputRefs.current[index + 1]?.focus()\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>, index: number) => {\n if (e.key === 'Backspace') {\n if (!digits[index] && index > 0 && inputRefs.current[index - 1]) {\n const nextDigits = [...digits]\n nextDigits[index - 1] = ''\n updatePin(nextDigits)\n inputRefs.current[index - 1]?.focus()\n } else if (digits[index]) {\n const nextDigits = [...digits]\n nextDigits[index] = ''\n updatePin(nextDigits)\n }\n } else if (e.key === 'ArrowLeft' && index > 0) {\n inputRefs.current[index - 1]?.focus()\n } else if (e.key === 'ArrowRight' && index < length - 1) {\n inputRefs.current[index + 1]?.focus()\n }\n }\n\n const handlePaste = (e: React.ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault()\n if (disabled) return\n\n const pastedData = e.clipboardData.getData('text').trim()\n const regex = type === 'numeric' ? /[0-9]/g : /[a-zA-Z0-9]/g\n const matchedChars = pastedData.match(regex) || []\n\n if (matchedChars.length === 0) return\n\n const nextDigits = Array.from({ length }, (_, i) => matchedChars[i] || '')\n updatePin(nextDigits)\n\n const focusIndex = Math.min(matchedChars.length, length) - 1\n const targetRef = inputRefs.current[focusIndex >= 0 ? focusIndex : 0]\n targetRef?.focus()\n }\n\n const sizeClasses = {\n sm: 'size-9 text-sm rounded-lg',\n md: 'size-11 text-base rounded-xl',\n lg: 'size-14 text-lg rounded-2xl',\n }[size]\n\n return (\n <div\n className={buildClassName('space-y-1.5', containerClass)}\n data-testid=\"pin-input-container\"\n >\n <div className=\"flex items-center gap-2.5 sm:gap-3\">\n {digits.map((digit, index) => {\n const isFilled = Boolean(digit)\n\n return (\n <input\n key={index}\n ref={(el) => {\n inputRefs.current[index] = el\n }}\n type={mask ? 'password' : 'text'}\n inputMode={type === 'numeric' ? 'numeric' : 'text'}\n pattern={type === 'numeric' ? '[0-9]*' : undefined}\n maxLength={1}\n value={digit}\n disabled={disabled}\n onChange={(e) => handleInputChange(e, index)}\n onKeyDown={(e) => handleKeyDown(e, index)}\n onPaste={handlePaste}\n className={buildClassName(\n 'text-center font-bold transition-all duration-150 outline outline-1 -outline-offset-1 select-none',\n sizeClasses,\n disabled\n ? 'pointer-events-none bg-gray-100 dark:bg-gray-800 text-gray-400 dark:text-gray-600 outline-[var(--ui-border-muted)]'\n : error\n ? 'bg-red-50/50 dark:bg-red-950/20 text-red-600 dark:text-red-400 outline-red-500 focus:outline-red-500 focus:outline-2 focus:-outline-offset-2'\n : isFilled\n ? 'bg-blue-50/30 dark:bg-blue-950/30 text-gray-900 dark:text-white outline-blue-500 dark:outline-blue-400 focus:outline-[var(--ui-focus-ring)] focus:outline-2 focus:-outline-offset-2'\n : 'bg-white dark:bg-gray-800 text-gray-900 dark:text-white outline-[var(--ui-border)] focus:outline-[var(--ui-focus-ring)] focus:outline-2 focus:-outline-offset-2',\n inputClass,\n )}\n data-testid={`pin-input-box-${index}`}\n />\n )\n })}\n </div>\n\n {typeof error === 'string' && (\n <div\n className=\"text-xs text-red-500 dark:text-red-400 font-medium pt-0.5\"\n data-testid=\"pin-input-error\"\n >\n {error}\n </div>\n )}\n </div>\n )\n}\n\nPinInput.displayName = 'PinInput'\n","import React, { useRef, useState, useCallback } from 'react'\nimport type { PullToRefreshProps } from './PullToRefresh.types'\nimport { Loader } from '../Loader'\nimport { buildClassName } from '../../utils/build-classname'\n\nfunction PullArrowIcon({ progress }: { progress: number }) {\n const rotation = Math.min(180, progress * 180)\n return (\n <svg\n className=\"size-4 text-blue-600 dark:text-blue-400 transition-transform duration-150\"\n style={{ transform: `rotate(${rotation}deg)` }}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2.5}\n d=\"M19 14l-7 7m0 0l-7-7m7 7V3\"\n />\n </svg>\n )\n}\n\nexport function PullToRefresh({\n onRefresh,\n pullThreshold = 70,\n maxPullDistance = 120,\n disabled = false,\n refreshing: externalRefreshing,\n pullingContent,\n refreshingContent,\n children,\n className = '',\n contentClass = '',\n}: PullToRefreshProps) {\n const containerRef = useRef<HTMLDivElement>(null)\n const startYRef = useRef<number>(0)\n const isPullingRef = useRef<boolean>(false)\n\n const [pullDistance, setPullDistance] = useState<number>(0)\n const [internalRefreshing, setInternalRefreshing] = useState<boolean>(false)\n\n const isRefreshing = externalRefreshing !== undefined ? externalRefreshing : internalRefreshing\n\n const handleTouchStart = useCallback(\n (e: React.TouchEvent<HTMLDivElement>) => {\n if (disabled || isRefreshing) return\n const container = containerRef.current\n if (container && container.scrollTop === 0) {\n startYRef.current = e.touches[0].clientY\n isPullingRef.current = true\n }\n },\n [disabled, isRefreshing],\n )\n\n const handleTouchMove = useCallback(\n (e: React.TouchEvent<HTMLDivElement>) => {\n if (!isPullingRef.current || disabled || isRefreshing) return\n const container = containerRef.current\n if (!container || container.scrollTop > 0) return\n\n const currentY = e.touches[0].clientY\n const rawDistance = currentY - startYRef.current\n\n if (rawDistance > 0) {\n // Rubber-band resistance formula\n const dampened = Math.min(maxPullDistance, rawDistance * 0.45)\n setPullDistance(dampened)\n if (e.cancelable) {\n e.preventDefault()\n }\n } else {\n setPullDistance(0)\n }\n },\n [disabled, isRefreshing, maxPullDistance],\n )\n\n const handleTouchEnd = useCallback(async () => {\n if (!isPullingRef.current || disabled || isRefreshing) return\n isPullingRef.current = false\n\n if (pullDistance >= pullThreshold) {\n setPullDistance(pullThreshold)\n setInternalRefreshing(true)\n try {\n await onRefresh()\n } finally {\n setInternalRefreshing(false)\n setPullDistance(0)\n }\n } else {\n setPullDistance(0)\n }\n }, [disabled, isRefreshing, onRefresh, pullDistance, pullThreshold])\n\n const progress = Math.min(1, pullDistance / pullThreshold)\n const isReady = pullDistance >= pullThreshold\n\n return (\n <div\n ref={containerRef}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n className={buildClassName('relative overflow-y-auto overscroll-none', className)}\n data-testid=\"pull-to-refresh-container\"\n >\n {/* Pull / Refresh Indicator Header */}\n <div\n className=\"left-0 right-0 top-0 flex items-center justify-center pointer-events-none transition-all duration-150 z-20\"\n style={{\n height: isRefreshing ? `${pullThreshold}px` : `${pullDistance}px`,\n opacity: pullDistance > 0 || isRefreshing ? 1 : 0,\n }}\n data-testid=\"pull-to-refresh-indicator\"\n >\n <div className=\"flex items-center gap-2 px-3.5 py-1.5 rounded-full bg-white dark:bg-gray-800 border border-[var(--ui-border)] shadow-md text-xs font-semibold text-gray-700 dark:text-gray-200\">\n {isRefreshing ? (\n refreshingContent || (\n <>\n <Loader size=\"sm\" />\n <span>Refreshing...</span>\n </>\n )\n ) : pullingContent ? (\n pullingContent\n ) : (\n <>\n <PullArrowIcon progress={progress} />\n <span>{isReady ? 'Release to refresh' : 'Pull down to refresh'}</span>\n </>\n )}\n </div>\n </div>\n\n {/* Main Content */}\n <div\n className={buildClassName('transition-transform duration-150', contentClass)}\n style={{\n transform: isRefreshing\n ? `translateY(${pullThreshold}px)`\n : pullDistance > 0\n ? `translateY(${pullDistance}px)`\n : 'translateY(0px)',\n }}\n data-testid=\"pull-to-refresh-content\"\n >\n {children}\n </div>\n </div>\n )\n}\n\nPullToRefresh.displayName = 'PullToRefresh'\n","import { forwardRef, useId } from 'react'\nimport { Label } from '../Label'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { RadioProps, RadioSize, RadioTheme } from './Radio.types'\nimport { TextContent } from '../TextContent'\n\nconst SIZE_MAP: Record<RadioSize, string> = {\n sm: 'size-4',\n md: 'size-4.5',\n lg: 'size-5.5',\n}\n\nconst THEME_MAP: Record<RadioTheme, string> = {\n primary:\n 'checked:border-[var(--ui-primary)] checked:hover:border-[var(--ui-primary)] focus:ring-[var(--ui-primary-ring)]',\n success: 'checked:border-emerald-600 checked:hover:border-emerald-600 focus:ring-emerald-500',\n danger:\n 'checked:border-[var(--ui-danger)] checked:hover:border-[var(--ui-danger)] focus:ring-[var(--ui-danger-ring)]',\n}\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>((props, ref) => {\n const {\n id,\n name,\n label,\n description,\n size = 'md',\n theme = 'primary',\n labelClass = '',\n descriptionClass = '',\n wrapperClass = '',\n containerClass = '',\n error,\n disabled = false,\n className = '',\n ...rest\n } = props\n\n const generatedId = useId()\n const radioId = id ?? (name && rest.value ? `${name}-${rest.value}` : generatedId)\n\n return (\n <div className={buildClassName(wrapperClass)}>\n <div className={buildClassName('flex items-start gap-2.5', containerClass)}>\n <div className=\"grid place-items-center shrink-0 pt-0.5\">\n <input\n ref={ref}\n {...rest}\n id={radioId}\n name={name}\n type=\"radio\"\n disabled={disabled}\n aria-checked={rest.checked}\n className={buildClassName(\n 'peer transition-all col-start-1 row-start-1 appearance-none shrink-0 rounded-full',\n 'border focus:ring-2 focus:ring-offset-2',\n 'checked:border-5 checked:bg-white',\n 'dark:focus:ring-offset-gray-800',\n SIZE_MAP[size],\n THEME_MAP[theme],\n disabled\n ? 'border-[var(--ui-border-muted)] bg-gray-100 dark:bg-gray-800 pointer-events-none'\n : 'bg-white dark:bg-gray-700 border-[var(--ui-border)] hover:border-gray-400 dark:hover:border-gray-500 cursor-pointer',\n className,\n )}\n />\n </div>\n {(label || description) && (\n <div className=\"flex flex-col gap-0.5 min-w-0\">\n {label && (\n <Label\n htmlFor={radioId}\n className={buildClassName(\n disabled\n ? 'cursor-not-allowed text-gray-400 dark:text-gray-500'\n : 'cursor-pointer text-gray-700 dark:text-gray-200 font-medium',\n labelClass,\n )}\n >\n {label}\n </Label>\n )}\n {description && (\n <p\n className={buildClassName(\n 'text-xs leading-normal',\n disabled\n ? 'text-gray-300 dark:text-gray-600'\n : 'text-gray-500 dark:text-gray-400',\n descriptionClass,\n )}\n >\n {description}\n </p>\n )}\n </div>\n )}\n </div>\n {error && (\n <div className=\"mt-1\">\n <TextContent error small>\n {error}\n </TextContent>\n </div>\n )}\n </div>\n )\n})\n\nRadio.displayName = 'Radio'\n","import React, { useMemo } from 'react'\nimport { Radio } from '../Radio'\nimport { Label } from '../Label'\nimport { buildClassName } from '../../utils/build-classname'\nimport { TextContent } from '../TextContent'\nimport type { RadioGroupProps, RadionGroupItem } from './RadioGroup.types'\n\nconst COLUMN_GRID_MAP: Record<number, string> = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-3',\n 4: 'grid-cols-1 md:grid-cols-4',\n}\n\nexport const RadioGroup: React.FC<RadioGroupProps> = (props) => {\n const {\n name,\n variant = 'default',\n size = 'md',\n theme = 'primary',\n label,\n labelClass,\n labelWrapperClass,\n labelHint,\n containerClass,\n options,\n value,\n columns,\n disabled = false,\n row,\n error,\n showErrorMessage = true,\n onChange,\n } = props\n\n const items = useMemo(\n () =>\n options?.map((option) =>\n typeof option === 'string'\n ? {\n label: option,\n value: option,\n description: undefined,\n icon: undefined,\n disabled: undefined,\n }\n : option,\n ) ?? [],\n [options],\n )\n\n const isCards = variant === 'cards'\n\n return (\n <div className={buildClassName(containerClass)}>\n {label && (\n <div\n className={buildClassName('flex items-center justify-between mb-3', labelWrapperClass)}\n >\n <Label className={labelClass}>{label}</Label>\n {labelHint}\n </div>\n )}\n\n <div\n className={buildClassName(\n columns\n ? buildClassName('grid gap-3', COLUMN_GRID_MAP[columns])\n : row || isCards\n ? 'flex flex-wrap gap-3'\n : 'flex flex-col gap-3',\n )}\n >\n {items.map((item) => {\n const isSelected = value === item.value\n const isItemDisabled = disabled || Boolean(item.disabled)\n\n if (isCards) {\n return (\n <label\n key={item.value}\n htmlFor={`${name}-${item.value}`}\n className={buildClassName(\n 'relative flex items-start gap-3 p-4 rounded-xl border transition-all cursor-pointer select-none min-w-[200px] flex-1',\n isSelected\n ? 'border-[var(--ui-primary)] bg-blue-50/40 dark:bg-blue-950/30 ring-2 ring-[var(--ui-primary-ring)]/30'\n : 'border-[var(--ui-border)] bg-white dark:bg-gray-800 hover:border-gray-300 dark:hover:border-gray-600',\n isItemDisabled &&\n 'opacity-50 cursor-not-allowed pointer-events-none bg-gray-50 dark:bg-gray-800/50',\n )}\n >\n <Radio\n name={name}\n id={`${name}-${item.value}`}\n value={item.value}\n aria-label={item.label}\n size={size}\n theme={theme}\n checked={isSelected}\n disabled={isItemDisabled}\n onChange={onChange}\n containerClass=\"pt-0.5\"\n />\n\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n {item.icon && (\n <span className=\"shrink-0 text-gray-500 dark:text-gray-400\">{item.icon}</span>\n )}\n <span className=\"text-sm font-semibold text-gray-900 dark:text-white truncate\">\n {item.label}\n </span>\n </div>\n {item.description && (\n <p className=\"mt-1 text-xs text-gray-500 dark:text-gray-400 font-normal leading-relaxed\">\n {item.description}\n </p>\n )}\n </div>\n </label>\n )\n }\n\n return (\n <Radio\n key={item.value}\n name={name}\n id={`${name}-${item.value}`}\n label={item.label}\n description={item.description}\n value={item.value}\n size={size}\n theme={theme}\n checked={isSelected}\n disabled={isItemDisabled}\n onChange={onChange}\n />\n )\n })}\n </div>\n\n {showErrorMessage && error && (\n <div className=\"mt-1.5\">\n <TextContent error small>\n {error}\n </TextContent>\n </div>\n )}\n </div>\n )\n}\n\nRadioGroup.displayName = 'RadioGroup'\n","import React, { useLayoutEffect, useRef, useState } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type {\n RadioSwitchItem,\n RadioSwitchProps,\n RadioSwitchSize,\n RadioSwitchTheme,\n} from './RadioSwitch.types'\n\nconst SIZE_CONTAINER_CLASS: Record<RadioSwitchSize, string> = {\n sm: 'p-1.5 gap-1 rounded-lg text-xs',\n md: 'p-2 gap-1.5 rounded-xl text-sm',\n lg: 'p-2 gap-2 rounded-2xl text-base',\n}\n\nconst SIZE_ITEM_CLASS: Record<RadioSwitchSize, string> = {\n sm: 'px-4 py-2 text-xs rounded-md min-w-[64px]',\n md: 'px-5 py-2.5 text-sm rounded-lg min-w-[76px]',\n lg: 'px-7 py-3 text-base rounded-xl min-w-[92px]',\n}\n\nconst SIZE_ITEM_DESC_CLASS: Record<RadioSwitchSize, string> = {\n sm: 'px-4 py-2.5 text-xs rounded-md min-w-[80px]',\n md: 'px-5 py-3 text-sm rounded-lg min-w-[96px]',\n lg: 'px-7 py-3.5 text-base rounded-xl min-w-[112px]',\n}\n\nconst THEME_SWITCH_CLASS: Record<RadioSwitchTheme, string> = {\n primary: 'bg-[var(--ui-primary)] text-white shadow-xs',\n secondary: 'bg-white dark:bg-gray-700 text-gray-900 dark:text-white shadow-xs',\n dark: 'bg-gray-900 dark:bg-black text-white shadow-xs',\n}\n\nexport const RadioSwitch: React.FC<RadioSwitchProps> = ({\n label,\n items,\n selected,\n size = 'md',\n theme = 'primary',\n disabled = false,\n onChange,\n wrapperClass,\n switchClass,\n contentClass,\n descriptionClass,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null)\n const [style, setStyle] = useState({ left: 0, top: 0, width: 0, height: 0, ready: false })\n\n const getLabel = (i: RadioSwitchItem) => (typeof i === 'string' ? i : i.label)\n const getValue = (i: RadioSwitchItem) => (typeof i === 'string' ? i : i.value)\n const getDescription = (i: RadioSwitchItem) =>\n typeof i === 'string' ? '' : (i.description ?? '')\n const isItemDisabled = (i: RadioSwitchItem) =>\n disabled || (typeof i === 'string' ? false : Boolean(i.disabled))\n\n const hasDescription = items.some((i) => typeof i !== 'string' && Boolean(i.description))\n\n // Position calculation for GPU sliding highlight\n useLayoutEffect(() => {\n if (!containerRef.current) return\n\n const updatePosition = () => {\n if (!containerRef.current) return\n\n const activeEl = containerRef.current.querySelector(\n '[data-selected=\"true\"]',\n ) as HTMLElement | null\n\n if (!activeEl) return\n\n const parentRect = containerRef.current.getBoundingClientRect()\n const rect = activeEl.getBoundingClientRect()\n\n const left = activeEl.offsetLeft || rect.left - parentRect.left\n const top = activeEl.offsetTop || rect.top - parentRect.top\n const width = activeEl.offsetWidth || rect.width\n const height = activeEl.offsetHeight || rect.height\n\n setStyle({\n left,\n top,\n width,\n height,\n ready: true,\n })\n }\n\n updatePosition()\n\n const resizeObserver = new ResizeObserver(updatePosition)\n resizeObserver.observe(containerRef.current)\n\n return () => resizeObserver.disconnect()\n }, [selected, items, size])\n\n // ARIA Keyboard navigation handler\n const handleGroupKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n const enabledItems = items.filter((it) => !isItemDisabled(it))\n if (enabledItems.length === 0) return\n\n const currentVal = selected\n const currentEnabledIndex = enabledItems.findIndex((it) => getValue(it) === currentVal)\n\n let nextItem: RadioSwitchItem | null = null\n\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault()\n const nextIdx = (currentEnabledIndex + 1) % enabledItems.length\n nextItem = enabledItems[nextIdx]\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault()\n const prevIdx = (currentEnabledIndex - 1 + enabledItems.length) % enabledItems.length\n nextItem = enabledItems[prevIdx]\n } else if (e.key === 'Home') {\n e.preventDefault()\n nextItem = enabledItems[0]\n } else if (e.key === 'End') {\n e.preventDefault()\n nextItem = enabledItems[enabledItems.length - 1]\n }\n\n if (nextItem) {\n onChange(getValue(nextItem))\n }\n }\n\n return (\n <div\n ref={containerRef}\n role=\"radiogroup\"\n tabIndex={0}\n aria-label={label}\n onKeyDown={handleGroupKeyDown}\n className={buildClassName(\n 'relative inline-grid grid-flow-col auto-cols-fr items-stretch bg-gray-100 dark:bg-gray-800/80 border border-[var(--ui-border)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary-ring)]',\n SIZE_CONTAINER_CLASS[size],\n disabled && 'opacity-60 pointer-events-none',\n wrapperClass,\n )}\n >\n {/* GPU Sliding highlight background */}\n <div\n className={buildClassName(\n 'absolute transition-all duration-200 ease-[cubic-bezier(.25,.8,.25,1)] pointer-events-none',\n THEME_SWITCH_CLASS[theme],\n size === 'sm' ? 'rounded-md' : 'rounded-lg',\n style.ready ? 'opacity-100' : 'opacity-0',\n switchClass,\n )}\n style={{\n transform: `translate(${style.left}px, ${style.top}px)`,\n width: style.width,\n height: style.height,\n }}\n />\n\n {/* Item Buttons */}\n {items.map((item) => {\n const itemVal = getValue(item)\n const isSelected = selected === itemVal\n const disabledState = isItemDisabled(item)\n\n return (\n <button\n key={itemVal}\n type=\"button\"\n role=\"radio\"\n aria-checked={isSelected}\n aria-disabled={disabledState}\n tabIndex={isSelected && !disabledState ? 0 : -1}\n disabled={disabledState}\n data-radio-item\n data-value={itemVal}\n data-selected={isSelected ? 'true' : undefined}\n onClick={() => {\n if (!disabledState) {\n onChange(itemVal)\n }\n }}\n className={buildClassName(\n 'relative z-10 appearance-none m-0 select-none group transition-colors flex flex-col items-center justify-center w-full text-center font-semibold focus:outline-none',\n hasDescription ? SIZE_ITEM_DESC_CLASS[size] : SIZE_ITEM_CLASS[size],\n disabledState ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n isSelected\n ? theme === 'secondary'\n ? 'text-gray-900 dark:text-white'\n : 'text-white'\n : buildClassName(\n 'text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-white',\n !disabledState && 'hover:bg-black/[0.04] dark:hover:bg-white/[0.06]',\n ),\n )}\n >\n {getDescription(item) ? (\n <div\n className={buildClassName(\n 'flex flex-col items-center justify-center gap-1',\n contentClass,\n )}\n >\n <span className=\"font-semibold leading-tight text-center truncate\">\n {getLabel(item)}\n </span>\n <span\n className={buildClassName(\n 'text-[12px] leading-tight opacity-80 font-normal text-center truncate',\n descriptionClass,\n )}\n >\n {getDescription(item)}\n </span>\n </div>\n ) : (\n <span className={buildClassName('truncate leading-tight text-center', contentClass)}>\n {getLabel(item)}\n </span>\n )}\n </button>\n )\n })}\n </div>\n )\n}\n\nRadioSwitch.displayName = 'RadioSwitch'\n","/**\n * Checks if a value is an array.\n * Equivalent to lodash's _.isArray.\n */\nexport function isArray(value: any): value is any[] {\n return Array.isArray(value)\n}\n","import { isArray } from './is-array'\n\n/**\n * Checks if a value is empty.\n * Works for arrays, objects, strings, Maps, and Sets.\n * Equivalent to lodash's _.isEmpty.\n */\nexport function isEmpty(value: any): boolean {\n if (value == null) return true // null or undefined\n\n if (typeof value === 'string' || isArray(value)) {\n return value.length === 0\n }\n\n if (value instanceof Map || value instanceof Set) {\n return value.size === 0\n }\n\n if (typeof value === 'object') {\n return Object.keys(value).length === 0\n }\n\n return false // for numbers, booleans, functions, etc.\n}\n","import { forwardRef, useState } from 'react'\nimport { Label } from '../Label'\nimport { buildClassName } from '../../utils/build-classname'\nimport { isEmpty } from '../../utils/is-empty'\nimport { TextContent } from '../TextContent'\nimport type { RangeInputProps, RangeInputSize } from './RangeInput.types'\n\nconst sizeClasses: Record<RangeInputSize, { track: string; thumb: string; text: string }> = {\n sm: {\n track: 'h-1.5',\n thumb:\n '[&::-webkit-slider-thumb]:h-3.5 [&::-webkit-slider-thumb]:w-3.5 [&::-moz-range-thumb]:h-3.5 [&::-moz-range-thumb]:w-3.5',\n text: 'text-xs',\n },\n md: {\n track: 'h-2',\n thumb:\n '[&::-webkit-slider-thumb]:h-4.5 [&::-webkit-slider-thumb]:w-4.5 [&::-moz-range-thumb]:h-4.5 [&::-moz-range-thumb]:w-4.5',\n text: 'text-sm',\n },\n lg: {\n track: 'h-3',\n thumb:\n '[&::-webkit-slider-thumb]:h-6 [&::-webkit-slider-thumb]:w-6 [&::-moz-range-thumb]:h-6 [&::-moz-range-thumb]:w-6',\n text: 'text-base',\n },\n}\n\nexport const RangeInput = forwardRef<HTMLInputElement, RangeInputProps>((props, ref) => {\n const {\n label,\n labelClass = '',\n labelHint = null,\n containerClass = '',\n className = '',\n size = 'md',\n showValue = true,\n valueSuffix = '',\n showTooltip = false,\n marks,\n error = null,\n helperText,\n showErrorMessage = true,\n id,\n min = 0,\n max = 100,\n value,\n defaultValue,\n onChange,\n ...inputProps\n } = props\n\n const [hovering, setHovering] = useState(false)\n const [internalValue, setInternalValue] = useState<number>(Number(defaultValue ?? min))\n\n const isControlled = value !== undefined\n const currentVal = Number(isControlled ? value : internalValue)\n const numMin = Number(min)\n const numMax = Number(max)\n\n const percent = numMax > numMin ? ((currentVal - numMin) / (numMax - numMin)) * 100 : 0\n const currentSize = sizeClasses[size] || sizeClasses.md\n const hasError = !isEmpty(error)\n\n const handleSliderChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(Number(e.target.value))\n }\n onChange?.(e)\n }\n\n // Parse custom marks if object provided\n const markEntries =\n typeof marks === 'object' && marks !== null\n ? Object.entries(marks).map(([k, v]) => ({ value: Number(k), label: v }))\n : typeof marks === 'boolean' && marks\n ? [\n { value: numMin, label: String(numMin) },\n { value: (numMin + numMax) / 2, label: String(Math.round((numMin + numMax) / 2)) },\n { value: numMax, label: String(numMax) },\n ]\n : null\n\n return (\n <div className={buildClassName('group space-y-2', containerClass)}>\n {label && (\n <div className=\"flex items-center justify-between mb-1\">\n <Label htmlFor={id} className={labelClass}>\n {label}\n </Label>\n {labelHint}\n </div>\n )}\n\n <div className=\"relative flex items-center gap-3\">\n <div className=\"relative flex-1 py-2\">\n {/* Floating Tooltip Popup Badge */}\n {showTooltip && hovering && (\n <div\n className=\"absolute -top-7 transform -translate-x-1/2 px-2 py-0.5 rounded bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900 text-[11px] font-semibold shadow-md pointer-events-none transition-all z-20\"\n style={{ left: `${percent}%` }}\n >\n {currentVal}\n {valueSuffix}\n <div className=\"absolute top-full left-1/2 -translate-x-1/2 border-4 border-transparent border-t-gray-900 dark:border-t-gray-100\" />\n </div>\n )}\n\n <input\n ref={ref}\n type=\"range\"\n id={id}\n min={min}\n max={max}\n value={currentVal}\n onChange={handleSliderChange}\n onMouseEnter={() => setHovering(true)}\n onMouseLeave={() => setHovering(false)}\n {...inputProps}\n style={{\n background: `linear-gradient(to right, ${hasError ? '#ef4444' : '#2563eb'} 0%, ${\n hasError ? '#ef4444' : '#2563eb'\n } ${percent}%, ${\n document.documentElement.classList.contains('dark') ? '#374151' : '#e5e7eb'\n } ${percent}%, ${\n document.documentElement.classList.contains('dark') ? '#374151' : '#e5e7eb'\n } 100%)`,\n }}\n className={buildClassName(\n 'w-full rounded-lg appearance-none cursor-pointer transition-all',\n currentSize.track,\n currentSize.thumb,\n '[&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full',\n '[&::-webkit-slider-thumb]:bg-white [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:shadow-md',\n hasError\n ? '[&::-webkit-slider-thumb]:border-red-600 [&::-moz-range-thumb]:border-red-600'\n : '[&::-webkit-slider-thumb]:border-blue-600 [&::-moz-range-thumb]:border-blue-600',\n '[&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:bg-white [&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:shadow-md',\n className,\n )}\n />\n\n {/* Tick Marks & Labels */}\n {markEntries && (\n <div className=\"relative w-full h-4 mt-1\">\n {markEntries.map((m) => {\n const markPercent = ((m.value - numMin) / (numMax - numMin)) * 100\n return (\n <div\n key={m.value}\n className=\"absolute top-0 transform -translate-x-1/2 flex flex-col items-center\"\n style={{ left: `${markPercent}%` }}\n >\n <span className=\"w-1 h-1.5 bg-gray-300 dark:bg-gray-600 rounded-full\" />\n <span className=\"text-[10px] font-medium text-gray-400 dark:text-gray-500 mt-0.5\">\n {m.label}\n </span>\n </div>\n )\n })}\n </div>\n )}\n </div>\n\n {showValue && (\n <span\n className={buildClassName(\n 'font-medium text-gray-700 dark:text-gray-300 min-w-[3rem] text-right shrink-0',\n currentSize.text,\n )}\n >\n {currentVal}\n {valueSuffix}\n </span>\n )}\n </div>\n\n {/* Footer Error or Helper Text */}\n {(showErrorMessage && hasError) || helperText ? (\n <div className=\"mt-1\">\n {showErrorMessage && hasError ? (\n <TextContent error small>\n {error}\n </TextContent>\n ) : helperText ? (\n <TextContent muted small>\n {helperText}\n </TextContent>\n ) : null}\n </div>\n ) : null}\n </div>\n )\n})\n\nRangeInput.displayName = 'RangeInput'\n","import React, { useEffect, useRef, useState } from 'react'\nimport { Label } from '../Label'\nimport { buildClassName } from '../../utils/build-classname'\nimport { isEmpty } from '../../utils/is-empty'\nimport type { RangeSliderProps, RangeSliderSize } from './RangeSlider.types'\nimport { TextContent } from '../TextContent'\n\nconst sizeClasses: Record<\n RangeSliderSize,\n { track: string; thumb: string; thumbPx: number; text: string }\n> = {\n sm: {\n track: 'h-1.5',\n thumb: 'h-4 w-4',\n thumbPx: 16,\n text: 'text-xs',\n },\n md: {\n track: 'h-2',\n thumb: 'h-5 w-5',\n thumbPx: 20,\n text: 'text-sm',\n },\n lg: {\n track: 'h-3',\n thumb: 'h-6 w-6',\n thumbPx: 24,\n text: 'text-base',\n },\n}\n\nexport const RangeSlider: React.FC<RangeSliderProps> = ({\n label,\n labelHint,\n labelClass = '',\n containerClass = '',\n className = '',\n size = 'md',\n min,\n max,\n step = 1,\n valueMin,\n valueMax,\n onChange,\n valueSuffix = '',\n showTooltips = false,\n marks,\n error = null,\n helperText,\n showErrorMessage = true,\n}) => {\n const trackRef = useRef<HTMLDivElement | null>(null)\n const activeThumbRef = useRef<'min' | 'max' | null>(null)\n const [activeThumbState, setActiveThumbState] = useState<'min' | 'max' | null>(null)\n const [hoveringThumb, setHoveringThumb] = useState<'min' | 'max' | null>(null)\n\n const valueMinRef = useRef(valueMin)\n const valueMaxRef = useRef(valueMax)\n const onChangeRef = useRef(onChange)\n valueMinRef.current = valueMin\n valueMaxRef.current = valueMax\n onChangeRef.current = onChange\n\n const hasError = !isEmpty(error)\n const currentSize = sizeClasses[size] || sizeClasses.md\n\n const clampValue = (val: number) => Math.min(Math.max(val, min), max)\n const snapToStep = (val: number) => {\n const clamped = clampValue(val)\n const steps = Math.round((clamped - min) / step)\n return Math.min(Math.max(min + steps * step, min), max)\n }\n\n const percent = (v: number) => ((clampValue(v) - min) / (max - min)) * 100\n\n const stablePointerMoveRef = useRef((e: PointerEvent) => {\n if (!trackRef.current || !activeThumbRef.current) return\n const rect = trackRef.current.getBoundingClientRect()\n const x = Math.min(Math.max(e.clientX - rect.left, 0), rect.width)\n const rawVal = min + (x / rect.width) * (max - min)\n const snappedVal = snapToStep(rawVal)\n\n if (activeThumbRef.current === 'min') {\n const nextMin = Math.min(snappedVal, valueMaxRef.current - step)\n onChangeRef.current(nextMin, valueMaxRef.current)\n } else {\n const nextMax = Math.max(snappedVal, valueMinRef.current + step)\n onChangeRef.current(valueMinRef.current, nextMax)\n }\n })\n\n const stablePointerUpRef = useRef(() => {\n activeThumbRef.current = null\n setActiveThumbState(null)\n window.removeEventListener('pointermove', stablePointerMoveRef.current)\n window.removeEventListener('pointerup', stablePointerUpRef.current)\n })\n\n useEffect(() => {\n const move = stablePointerMoveRef.current\n const up = stablePointerUpRef.current\n return () => {\n window.removeEventListener('pointermove', move)\n window.removeEventListener('pointerup', up)\n }\n }, [])\n\n const startDrag = (thumb: 'min' | 'max') => (_e: React.PointerEvent) => {\n activeThumbRef.current = thumb\n setActiveThumbState(thumb)\n window.addEventListener('pointermove', stablePointerMoveRef.current)\n window.addEventListener('pointerup', stablePointerUpRef.current)\n }\n\n const handleTrackClick = (e: React.MouseEvent) => {\n if (!trackRef.current) return\n\n const rect = trackRef.current.getBoundingClientRect()\n const x = Math.min(Math.max(e.clientX - rect.left, 0), rect.width)\n const rawVal = min + (x / rect.width) * (max - min)\n const snappedVal = snapToStep(rawVal)\n\n const pxMin = (percent(valueMin) / 100) * rect.width\n const pxMax = (percent(valueMax) / 100) * rect.width\n\n if (x <= pxMin) {\n onChange(Math.min(snappedVal, valueMax - step), valueMax)\n return\n }\n\n if (x >= pxMax) {\n onChange(valueMin, Math.max(snappedVal, valueMin + step))\n return\n }\n\n const distMin = Math.abs(snappedVal - valueMin)\n const distMax = Math.abs(snappedVal - valueMax)\n\n if (distMin < distMax) {\n onChange(Math.min(snappedVal, valueMax - step), valueMax)\n } else {\n onChange(valueMin, Math.max(snappedVal, valueMin + step))\n }\n }\n\n // Keyboard accessibility handler for thumbs\n const handleKeyDown = (thumb: 'min' | 'max') => (e: React.KeyboardEvent) => {\n let delta = 0\n if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') delta = -step\n else if (e.key === 'ArrowRight' || e.key === 'ArrowUp') delta = step\n else if (e.key === 'Home') {\n if (thumb === 'min') onChange(min, valueMax)\n else onChange(valueMin, valueMin + step)\n return\n } else if (e.key === 'End') {\n if (thumb === 'min') onChange(valueMax - step, valueMax)\n else onChange(valueMin, max)\n return\n }\n\n if (delta !== 0) {\n e.preventDefault()\n if (thumb === 'min') {\n const next = snapToStep(valueMin + delta)\n onChange(Math.min(next, valueMax - step), valueMax)\n } else {\n const next = snapToStep(valueMax + delta)\n onChange(valueMin, Math.max(next, valueMin + step))\n }\n }\n }\n\n const markEntries = marks\n ? Object.entries(marks).map(([k, v]) => ({ value: Number(k), label: v }))\n : null\n\n return (\n <div className={buildClassName('group space-y-2', hasError && 'has-error', containerClass)}>\n {label && (\n <div className=\"flex items-center justify-between mb-1\">\n <Label className={labelClass}>{label}</Label>\n {labelHint}\n </div>\n )}\n\n {/* TRACK CONTAINER */}\n <div\n ref={trackRef}\n onMouseDown={handleTrackClick}\n className=\"relative h-8 select-none w-full flex items-center cursor-pointer\"\n data-testid=\"range-track\"\n >\n {/* Track background */}\n <div\n className={buildClassName(\n 'absolute top-1/2 left-0 right-0 rounded-full bg-gray-200 dark:bg-gray-700 -translate-y-1/2',\n currentSize.track,\n )}\n />\n\n {/* Highlight active range section */}\n <div\n className={buildClassName(\n 'absolute top-1/2 -translate-y-1/2 rounded-full transition-all duration-150 ease-out',\n hasError ? 'bg-red-500' : 'bg-blue-600 dark:bg-blue-500',\n currentSize.track,\n )}\n style={{\n left: `${percent(valueMin)}%`,\n width: `${percent(valueMax) - percent(valueMin)}%`,\n }}\n />\n\n {/* MIN THUMB */}\n <div\n role=\"slider\"\n tabIndex={0}\n aria-label=\"Minimum value\"\n aria-valuenow={valueMin}\n aria-valuemin={min}\n aria-valuemax={valueMax - step}\n onPointerDown={startDrag('min')}\n onMouseEnter={() => setHoveringThumb('min')}\n onMouseLeave={() => setHoveringThumb(null)}\n onKeyDown={handleKeyDown('min')}\n className={buildClassName(\n 'absolute top-1/2 -translate-y-1/2 rounded-full focus:outline-none',\n 'bg-white border-2 shadow-md cursor-pointer touch-none',\n hasError ? 'border-red-600' : 'border-blue-600',\n 'transition-all duration-150 ease-out',\n currentSize.thumb,\n (activeThumbState === 'min' || hoveringThumb === 'min') &&\n (hasError ? 'ring-4 ring-red-200' : 'ring-4 ring-blue-200'),\n className,\n )}\n style={{\n left: `calc(${percent(valueMin)}% - ${currentSize.thumbPx / 2}px)`,\n zIndex: activeThumbState === 'min' ? 50 : 30,\n }}\n data-testid=\"thumb-min\"\n >\n {/* Floating Tooltip Min */}\n {showTooltips && (activeThumbState === 'min' || hoveringThumb === 'min') && (\n <div className=\"absolute -top-7 left-1/2 -translate-x-1/2 px-2 py-0.5 rounded bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900 text-[11px] font-semibold shadow-md pointer-events-none z-50 whitespace-nowrap\">\n {Math.round(valueMin)}\n {valueSuffix}\n <div className=\"absolute top-full left-1/2 -translate-x-1/2 border-4 border-transparent border-t-gray-900 dark:border-t-gray-100\" />\n </div>\n )}\n </div>\n\n {/* MAX THUMB */}\n <div\n role=\"slider\"\n tabIndex={0}\n aria-label=\"Maximum value\"\n aria-valuenow={valueMax}\n aria-valuemin={valueMin + step}\n aria-valuemax={max}\n onPointerDown={startDrag('max')}\n onMouseEnter={() => setHoveringThumb('max')}\n onMouseLeave={() => setHoveringThumb(null)}\n onKeyDown={handleKeyDown('max')}\n className={buildClassName(\n 'absolute top-1/2 -translate-y-1/2 rounded-full focus:outline-none',\n 'bg-white border-2 shadow-md cursor-pointer touch-none',\n hasError ? 'border-red-600' : 'border-blue-600',\n 'transition-all duration-150 ease-out',\n currentSize.thumb,\n (activeThumbState === 'max' || hoveringThumb === 'max') &&\n (hasError ? 'ring-4 ring-red-200' : 'ring-4 ring-blue-200'),\n className,\n )}\n style={{\n left: `calc(${percent(valueMax)}% - ${currentSize.thumbPx / 2}px)`,\n zIndex: activeThumbState === 'max' ? 50 : 40,\n }}\n data-testid=\"thumb-max\"\n >\n {/* Floating Tooltip Max */}\n {showTooltips && (activeThumbState === 'max' || hoveringThumb === 'max') && (\n <div className=\"absolute -top-7 left-1/2 -translate-x-1/2 px-2 py-0.5 rounded bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-900 text-[11px] font-semibold shadow-md pointer-events-none z-50 whitespace-nowrap\">\n {Math.round(valueMax)}\n {valueSuffix}\n <div className=\"absolute top-full left-1/2 -translate-x-1/2 border-4 border-transparent border-t-gray-900 dark:border-t-gray-100\" />\n </div>\n )}\n </div>\n </div>\n\n {/* Step Marks & Labels */}\n {markEntries && (\n <div className=\"relative w-full h-4 mt-1\">\n {markEntries.map((m) => {\n const markPercent = percent(m.value)\n return (\n <div\n key={m.value}\n className=\"absolute top-0 transform -translate-x-1/2 flex flex-col items-center\"\n style={{ left: `${markPercent}%` }}\n >\n <span className=\"w-1 h-1.5 bg-gray-300 dark:bg-gray-600 rounded-full\" />\n <span className=\"text-[10px] font-medium text-gray-400 dark:text-gray-500 mt-0.5\">\n {m.label}\n </span>\n </div>\n )\n })}\n </div>\n )}\n\n {/* Number Range Indicators */}\n <div\n className={buildClassName(\n 'flex justify-between font-medium text-gray-700 dark:text-gray-300',\n currentSize.text,\n )}\n >\n <span>\n {Math.round(valueMin)}\n {valueSuffix}\n </span>\n <span>\n {Math.round(valueMax)}\n {valueSuffix}\n </span>\n </div>\n\n {/* Footer Error or Helper Text */}\n {(showErrorMessage && hasError) || helperText ? (\n <div className=\"mt-1\">\n {showErrorMessage && hasError ? (\n <TextContent error small>\n {error}\n </TextContent>\n ) : helperText ? (\n <TextContent muted small>\n {helperText}\n </TextContent>\n ) : null}\n </div>\n ) : null}\n </div>\n )\n}\n\nRangeSlider.displayName = 'RangeSlider'\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nexport const useDebounce = <T,>(value: T, delay: number): T => {\n const [debouncedValue, setDebouncedValue] = useState<T>(value)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n // Cancel the timeout if value or delay changes\n return () => {\n clearTimeout(handler)\n }\n }, [value, delay])\n\n return debouncedValue\n}\n\nexport const useDebounceFn = (fn: (...args: any[]) => void, ms: number) => {\n const timeout = useRef<any>(null)\n\n useEffect(() => {\n return () => clearTimeout(timeout.current)\n }, [])\n\n return useCallback(\n (...args: any[]) => {\n clearTimeout(timeout.current)\n timeout.current = setTimeout(() => fn(...args), ms)\n },\n [fn, ms],\n )\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-check-icon lucide-check\"><path d=\"M20 6 9 17l-5-5\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-circle-plus-icon lucide-circle-plus\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M8 12h8\"/><path d=\"M12 8v8\"/></svg>","<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-search-icon lucide-search\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/></svg>\n","import React, { useState, useMemo, useCallback, useEffect, useRef } from 'react'\nimport { Dialog, DialogBackdrop, DialogPanel, DialogTitle } from '@headlessui/react'\nimport { buildClassName } from '../../utils/build-classname'\nimport { buildInputClass } from '../Input'\nimport { Badge } from '../Badge'\nimport { Button } from '../Button'\nimport { Label } from '../Label'\nimport { Loader } from '../Loader'\nimport { TextContent } from '../TextContent'\nimport { useDebounce } from '../../hooks/use-debounce'\nimport CheckIcon from '../Icons/Check.svg'\nimport ChevronDownIcon from '../Icons/ChevronDown.svg'\nimport CirclePlusIcon from '../Icons/CirclePlus.svg'\nimport SearchIcon from '../Icons/Search.svg'\nimport XIcon from '../Icons/X.svg'\nimport type { BaseOption, SelectBoxSize } from '../SelectBox/SelectBox.types'\nimport type { MobilePickerProps } from './MobilePicker.types'\n\nconst sizeConfigMap: Record<\n SelectBoxSize,\n {\n input: string\n icon: string\n badgeSize: 'sm' | 'md'\n group: string\n }\n> = {\n sm: {\n input: 'h-8 text-xs px-2.5',\n icon: 'size-3.5',\n badgeSize: 'sm',\n group: 'w-8',\n },\n md: {\n input: 'h-10 text-sm px-3',\n icon: 'size-4',\n badgeSize: 'md',\n group: 'w-10',\n },\n lg: {\n input: 'h-12 text-base px-3.5',\n icon: 'size-5',\n badgeSize: 'md',\n group: 'w-12',\n },\n}\n\nexport function MobilePicker<T extends BaseOption | string = BaseOption>(\n props: MobilePickerProps<T>,\n) {\n const {\n options = [],\n groups,\n selected = null,\n onChange = () => {},\n size = 'md',\n labelKey = 'label',\n valueKey = 'value',\n id,\n name,\n label,\n labelWrapperClass,\n labelClass,\n labelHint,\n title,\n description,\n placeholder = 'Choose an option...',\n disabled = false,\n multiple = false,\n maxSelection,\n showSelectAll = false,\n confirmText = 'Apply Selection',\n searchable = true,\n searchPlaceholder = 'Search options...',\n async = false,\n onSearch,\n loading = false,\n typeToSearchText = 'Type to search options...',\n filterOption,\n quickOptions,\n quickOptionsTitle = 'Quick Picks',\n allowClear = false,\n allowFreeText = false,\n allowAdd = false,\n addNewText = 'Create',\n onAdd = () => {},\n leftGroup,\n error,\n showErrorMessage = true,\n helperText,\n noOptionsText = 'No options available',\n renderOption,\n containerClass,\n sheetClass,\n } = props\n\n const [isOpen, setIsOpen] = useState(false)\n const [query, setQuery] = useState('')\n const debouncedQuery = useDebounce(query, 400)\n const [optionsLoading, setOptionsLoading] = useState(false)\n const [draftSelected, setDraftSelected] = useState<T | T[] | null>(selected)\n const [viewportHeight, setViewportHeight] = useState<number | null>(null)\n\n useEffect(() => {\n if (!isOpen) {\n setViewportHeight(null)\n return\n }\n\n const updateHeight = () => {\n if (typeof window !== 'undefined' && window.visualViewport) {\n setViewportHeight(window.visualViewport.height)\n }\n }\n\n updateHeight()\n const vv = typeof window !== 'undefined' ? window.visualViewport : null\n vv?.addEventListener('resize', updateHeight)\n vv?.addEventListener('scroll', updateHeight)\n\n return () => {\n vv?.removeEventListener('resize', updateHeight)\n vv?.removeEventListener('scroll', updateHeight)\n }\n }, [isOpen])\n\n const currentSize = sizeConfigMap[size] || sizeConfigMap.md\n const hasError = Boolean(error)\n const isAsyncLoading = loading || optionsLoading\n\n const baseInputClass = useMemo(\n () => buildInputClass('', { disabled, hasError, size }),\n [disabled, hasError, size],\n )\n\n const onSearchRef = useRef(onSearch)\n useEffect(() => {\n onSearchRef.current = onSearch\n }, [onSearch])\n\n const handleAsyncSearch = useCallback(async (searchString: string) => {\n try {\n setOptionsLoading(true)\n await onSearchRef.current?.(searchString)\n } catch (err) {\n console.error('Error loading options:', err)\n } finally {\n setOptionsLoading(false)\n }\n }, [])\n\n useEffect(() => {\n if (isOpen && async) {\n handleAsyncSearch(debouncedQuery)\n }\n }, [isOpen, async, debouncedQuery, handleAsyncSearch])\n\n const getDisplayValue = useCallback(\n (opt: T) => {\n if (typeof opt === 'string') return opt\n return opt?.[labelKey] ?? opt?.[valueKey] ?? String(opt)\n },\n [labelKey, valueKey],\n )\n\n const getValue = useCallback(\n (opt: T) => {\n if (typeof opt === 'string') return opt\n return opt?.[valueKey] ?? opt?.[labelKey] ?? String(opt)\n },\n [valueKey, labelKey],\n )\n\n const normalizedSelected = useMemo(() => {\n if (multiple) {\n if (Array.isArray(selected)) return selected\n if (selected !== null && selected !== undefined) return [selected as T]\n return [] as T[]\n } else {\n if (Array.isArray(selected)) return selected.length > 0 ? selected[0] : null\n return selected ?? null\n }\n }, [multiple, selected])\n\n const normalizedDraft = useMemo(() => {\n if (multiple) {\n if (Array.isArray(draftSelected)) return draftSelected\n if (draftSelected !== null && draftSelected !== undefined) return [draftSelected as T]\n return [] as T[]\n } else {\n if (Array.isArray(draftSelected)) return draftSelected.length > 0 ? draftSelected[0] : null\n return draftSelected ?? null\n }\n }, [multiple, draftSelected])\n\n const rawAllOptions = useMemo(() => {\n if (groups?.length) {\n return groups.flatMap((g) => g.options)\n }\n return options ?? []\n }, [groups, options])\n\n const allOptions = useMemo(() => {\n const list = [...rawAllOptions]\n const selectedList = Array.isArray(normalizedDraft)\n ? normalizedDraft\n : normalizedDraft\n ? [normalizedDraft as T]\n : []\n\n for (const sel of selectedList) {\n if (sel !== null && sel !== undefined) {\n const selVal = getValue(sel)\n const exists = list.some((item) => getValue(item) === selVal)\n if (!exists) {\n list.unshift(sel)\n }\n }\n }\n return list\n }, [rawAllOptions, normalizedDraft, getValue])\n\n useEffect(() => {\n if (isOpen) {\n setDraftSelected(normalizedSelected)\n setQuery('')\n }\n }, [isOpen, normalizedSelected])\n\n const defaultFilter = useCallback(\n (opt: T, q: string) => {\n if (!q.trim()) return true\n const searchTarget = getDisplayValue(opt)?.toLowerCase() || ''\n return searchTarget.includes(q.trim().toLowerCase())\n },\n [getDisplayValue],\n )\n\n const activeFilter = filterOption || defaultFilter\n\n const filteredOptions = useMemo(() => {\n if (async) return allOptions\n if (!query.trim()) return allOptions\n return allOptions.filter((opt) => activeFilter(opt, query))\n }, [allOptions, query, async, activeFilter])\n\n const filteredGroups = useMemo(() => {\n if (!groups?.length) return null\n if (async) return groups\n if (!query.trim()) return groups\n\n return groups\n .map((g) => ({\n ...g,\n options: g.options.filter((opt) => activeFilter(opt, query)),\n }))\n .filter((g) => g.options.length > 0)\n }, [groups, query, async, activeFilter])\n\n const createFreeTextOption = useCallback(\n (text: string): T => {\n const sample = allOptions[0] || (Array.isArray(selected) ? selected[0] : selected)\n if (\n typeof sample === 'string' ||\n (!sample && typeof labelKey === 'string' && labelKey === 'label')\n ) {\n return text as unknown as T\n }\n return {\n [labelKey]: text,\n [valueKey]: text,\n } as unknown as T\n },\n [allOptions, selected, labelKey, valueKey],\n )\n\n const handleToggleOption = (option: T) => {\n const optVal = getValue(option)\n if (multiple) {\n const current = Array.isArray(normalizedDraft) ? [...normalizedDraft] : []\n const index = current.findIndex((item) => getValue(item) === optVal)\n if (index > -1) {\n current.splice(index, 1)\n setDraftSelected(current as T[])\n } else {\n if (maxSelection && current.length >= maxSelection) return\n current.push(option)\n setDraftSelected(current as T[])\n }\n } else {\n setDraftSelected(option)\n onChange(option)\n setIsOpen(false)\n }\n }\n\n const handleCommitFreeText = (text: string) => {\n const trimmed = text.trim()\n if (!trimmed) return\n const existing = allOptions.find(\n (opt) => getDisplayValue(opt).toLowerCase() === trimmed.toLowerCase(),\n )\n const optionToCommit = existing || createFreeTextOption(trimmed)\n\n if (multiple) {\n const current = Array.isArray(normalizedDraft) ? [...normalizedDraft] : []\n const already = current.some(\n (item) => getDisplayValue(item).toLowerCase() === trimmed.toLowerCase(),\n )\n if (!already) {\n if (maxSelection && current.length >= maxSelection) return\n current.push(optionToCommit)\n setDraftSelected(current as T[])\n }\n setQuery('')\n } else {\n setDraftSelected(optionToCommit)\n onChange(optionToCommit)\n setIsOpen(false)\n }\n }\n\n const handleAddAndSelect = async (valueToAdd: string) => {\n try {\n const result = await onAdd(valueToAdd)\n const optionToCommit = (result || valueToAdd) as unknown as T\n if (multiple) {\n const current = Array.isArray(normalizedDraft) ? [...normalizedDraft] : []\n current.push(optionToCommit)\n setDraftSelected(current as T[])\n setQuery('')\n } else {\n setDraftSelected(optionToCommit)\n onChange(optionToCommit)\n setIsOpen(false)\n }\n } catch (err) {\n console.error('MobilePicker onAdd error:', err)\n }\n }\n\n const isAllSelected = useMemo(() => {\n if (!multiple || !Array.isArray(normalizedDraft) || !allOptions.length) return false\n return allOptions.length === normalizedDraft.length\n }, [multiple, normalizedDraft, allOptions])\n\n const handleToggleSelectAll = () => {\n if (isAllSelected) {\n setDraftSelected([] as T[])\n } else {\n setDraftSelected(allOptions as T[])\n }\n }\n\n const handleConfirmMultiSelect = () => {\n onChange(normalizedDraft)\n setIsOpen(false)\n }\n\n const handleClearSingleSelect = (e: React.MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setDraftSelected(multiple ? ([] as T[]) : null)\n onChange(multiple ? ([] as T[]) : null)\n }\n\n const handleTriggerClick = (e: React.MouseEvent) => {\n if (disabled) return\n const isClearClick = (e.target as HTMLElement).closest(\n '[data-testid=\"mobile-picker-clear-button\"]',\n )\n if (isClearClick) return\n setIsOpen(true)\n }\n\n const isOptionSelected = (option: T) => {\n const optVal = getValue(option)\n if (multiple) {\n return (\n Array.isArray(normalizedDraft) && normalizedDraft.some((item) => getValue(item) === optVal)\n )\n } else {\n return Boolean(normalizedDraft && getValue(normalizedDraft as T) === optVal)\n }\n }\n\n const shouldShowTypeToSearch = async && !query && !isAsyncLoading && allOptions.length === 0\n const hasLeftGroup = leftGroup != null && leftGroup !== undefined\n\n return (\n <div className={buildClassName('group space-y-2 w-full', containerClass)}>\n {label && (\n <div className={buildClassName('flex items-center justify-between', labelWrapperClass)}>\n <Label className={labelClass} htmlFor={id}>\n {label}\n </Label>\n {labelHint && <TextContent xsmall>{labelHint}</TextContent>}\n </div>\n )}\n\n {/* Trigger Button */}\n <button\n type=\"button\"\n id={id}\n name={name}\n disabled={disabled}\n onClick={handleTriggerClick}\n className={buildClassName(\n baseInputClass,\n 'w-full flex items-center justify-between gap-2 cursor-pointer relative text-left',\n hasLeftGroup ? (size === 'lg' ? 'ps-12' : size === 'sm' ? 'ps-8' : 'ps-10') : '',\n )}\n data-testid=\"mobile-picker-trigger\"\n >\n {hasLeftGroup && (\n <span\n className={buildClassName(\n 'absolute left-0 top-0 h-full flex items-center justify-center text-gray-400 dark:text-gray-500',\n currentSize.group,\n )}\n >\n {leftGroup}\n </span>\n )}\n\n <div className=\"flex-1 flex flex-wrap items-center gap-1.5 min-w-0 overflow-hidden\">\n {multiple ? (\n Array.isArray(normalizedSelected) && normalizedSelected.length > 0 ? (\n normalizedSelected.map((item, idx) => (\n <Badge\n key={`${getValue(item)}-${idx}`}\n theme=\"secondary\"\n size={currentSize.badgeSize}\n >\n {getDisplayValue(item)}\n </Badge>\n ))\n ) : (\n <span className=\"text-gray-400 dark:text-gray-500\">{placeholder}</span>\n )\n ) : normalizedSelected ? (\n <span className=\"text-gray-900 dark:text-white font-normal truncate\">\n {getDisplayValue(normalizedSelected as T)}\n </span>\n ) : (\n <span className=\"text-gray-400 dark:text-gray-500\">{placeholder}</span>\n )}\n </div>\n\n <div className=\"flex items-center gap-1 shrink-0\">\n {allowClear && !multiple && normalizedSelected && (\n <span\n role=\"button\"\n aria-label=\"Clear selection\"\n tabIndex={0}\n onClick={handleClearSingleSelect}\n className=\"p-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-full cursor-pointer z-10\"\n data-testid=\"mobile-picker-clear-button\"\n >\n <XIcon className=\"size-3.5 stroke-gray-500 dark:stroke-gray-400\" />\n </span>\n )}\n\n <ChevronDownIcon\n className={buildClassName(currentSize.icon, 'stroke-gray-500 shrink-0')}\n />\n </div>\n </button>\n\n {showErrorMessage && error && (\n <div className=\"mt-1\">\n <TextContent error small>\n {error}\n </TextContent>\n </div>\n )}\n\n {!error && helperText && (\n <div className=\"mt-1\">\n <TextContent muted small>\n {helperText}\n </TextContent>\n </div>\n )}\n\n {/* Mobile Bottom Sheet Drawer */}\n <Dialog\n open={isOpen}\n as=\"div\"\n className=\"relative z-50 focus:outline-none\"\n onClose={() => setIsOpen(false)}\n transition\n >\n <DialogBackdrop className=\"fixed inset-0 bg-black/50 backdrop-blur-xs transition-opacity duration-200\" />\n\n <div\n className=\"fixed left-0 top-0 w-full flex items-end justify-center pointer-events-none z-50\"\n style={{\n height: viewportHeight ? `${viewportHeight}px` : '100dvh',\n }}\n >\n <DialogPanel\n transition\n className={buildClassName(\n 'w-full max-w-full md:max-w-lg bg-white dark:bg-gray-900 shadow-2xl rounded-t-3xl max-h-[85vh] max-h-[85dvh] flex flex-col pointer-events-auto overscroll-contain touch-pan-y',\n 'duration-200 ease-out data-[closed]:translate-y-full data-[closed]:opacity-0',\n sheetClass,\n )}\n style={{\n maxHeight: viewportHeight ? `${Math.floor(viewportHeight * 0.9)}px` : undefined,\n }}\n data-testid=\"mobile-picker-sheet\"\n >\n {/* Top drag handle indicator */}\n <div className=\"w-12 h-1.5 rounded-full bg-gray-300 dark:bg-gray-700 mx-auto my-2.5 shrink-0\" />\n\n {/* Sheet Header */}\n <div className=\"px-4 pb-3 border-b border-[var(--ui-border-muted)] flex items-center justify-between gap-3 shrink-0\">\n <div className=\"min-w-0 flex-1\">\n <DialogTitle\n as=\"h3\"\n className=\"text-base md:text-lg font-bold text-gray-900 dark:text-white truncate\"\n >\n {title || label || 'Select Option'}\n </DialogTitle>\n {description && (\n <p className=\"text-xs text-gray-500 dark:text-gray-400 truncate mt-0.5\">\n {description}\n </p>\n )}\n </div>\n\n <Button\n iconOnly\n aria-label=\"Close picker\"\n variant=\"plain\"\n theme=\"secondary\"\n size=\"xs\"\n onClick={() => setIsOpen(false)}\n className=\"rounded-full text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 shrink-0\"\n >\n <XIcon className=\"size-4\" />\n </Button>\n </div>\n\n {/* Optional Search Bar */}\n {searchable && (\n <div className=\"p-3 border-b border-[var(--ui-border-muted)] bg-gray-50 dark:bg-gray-800/50 shrink-0\">\n <div className=\"relative\">\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 size-4 text-gray-400\" />\n <input\n type=\"text\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n onKeyDown={(e) => {\n if (allowFreeText && e.key === 'Enter' && query.trim()) {\n e.preventDefault()\n handleCommitFreeText(query)\n }\n }}\n placeholder={searchPlaceholder}\n className=\"w-full pl-9 pr-10 py-2 text-sm bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-700 rounded-xl text-gray-900 dark:text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500\"\n data-testid=\"mobile-picker-search-input\"\n />\n <div className=\"absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-1.5\">\n {isAsyncLoading ? (\n <Loader size=\"xs\" />\n ) : (\n query && (\n <button\n type=\"button\"\n onClick={() => setQuery('')}\n className=\"p-0.5 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200\"\n >\n <XIcon className=\"size-3.5\" />\n </button>\n )\n )}\n </div>\n </div>\n </div>\n )}\n\n {/* Quick Choice Chips Row */}\n {quickOptions && quickOptions.length > 0 && (\n <div className=\"px-3 py-2 bg-gray-50/60 dark:bg-gray-800/40 border-b border-[var(--ui-border-muted)] shrink-0\">\n <div className=\"text-[11px] font-semibold text-gray-400 uppercase tracking-wider mb-1.5 px-1\">\n {quickOptionsTitle}\n </div>\n <div className=\"flex items-center gap-2 overflow-x-auto no-scrollbar pb-1\">\n {quickOptions.map((chip, cIdx) => {\n const isSelected = isOptionSelected(chip)\n return (\n <button\n key={cIdx}\n type=\"button\"\n onClick={() => handleToggleOption(chip)}\n className={buildClassName(\n 'px-3 py-1 rounded-full text-xs font-medium shrink-0 transition-colors cursor-pointer border',\n isSelected\n ? 'bg-blue-600 text-white border-blue-600'\n : 'bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-300 border-gray-300 dark:border-gray-700 hover:bg-gray-100 dark:hover:bg-gray-700',\n )}\n >\n {getDisplayValue(chip)}\n </button>\n )\n })}\n </div>\n </div>\n )}\n\n {/* Multi-Select Select All Toolbar */}\n {multiple && showSelectAll && allOptions.length > 0 && (\n <div className=\"px-4 py-2 bg-gray-50/80 dark:bg-gray-800/80 border-b border-[var(--ui-border-muted)] flex items-center justify-between text-xs shrink-0\">\n <button\n type=\"button\"\n onClick={handleToggleSelectAll}\n className=\"font-semibold text-blue-600 dark:text-blue-400 hover:underline cursor-pointer\"\n >\n {isAllSelected ? 'Deselect All' : 'Select All'}\n </button>\n <span className=\"text-gray-500 dark:text-gray-400 font-medium\">\n {Array.isArray(normalizedDraft) ? normalizedDraft.length : 0} of{' '}\n {allOptions.length}\n </span>\n </div>\n )}\n\n {/* Sheet Scrollable Option List */}\n <div\n onScroll={(e) => {\n const el = e.currentTarget\n if (el.scrollTop === 0) {\n el.scrollTop = 1\n } else if (el.scrollTop + el.clientHeight >= el.scrollHeight) {\n el.scrollTop = el.scrollHeight - el.clientHeight - 1\n }\n }}\n className=\"flex-1 overflow-y-auto overscroll-contain touch-pan-y [-webkit-overflow-scrolling:touch] p-2 space-y-1 divide-y divide-gray-100 dark:divide-gray-800/60\"\n >\n {/* Free-Text Action Item */}\n {allowFreeText &&\n query.trim() &&\n !allOptions.some(\n (opt) => getDisplayValue(opt).toLowerCase() === query.trim().toLowerCase(),\n ) && (\n <button\n type=\"button\"\n onClick={() => handleCommitFreeText(query)}\n className=\"w-full text-left flex items-center justify-between p-3.5 rounded-2xl bg-blue-50/80 dark:bg-blue-950/30 text-blue-600 dark:text-blue-400 font-medium hover:bg-blue-100/80 cursor-pointer\"\n data-testid=\"mobile-picker-freetext-item\"\n >\n <span className=\"text-sm font-medium\">Use \"{query.trim()}\"</span>\n <ChevronDownIcon className=\"size-4 rotate-[-90deg]\" />\n </button>\n )}\n\n {/* Loading State Body */}\n {isAsyncLoading && allOptions.length === 0 ? (\n <div className=\"py-12 flex flex-col items-center justify-center gap-2 text-sm text-gray-500 dark:text-gray-400 select-none\">\n <Loader size=\"md\" />\n <span>Loading options...</span>\n </div>\n ) : shouldShowTypeToSearch ? (\n <div className=\"py-12 text-center text-sm text-gray-500 dark:text-gray-400 select-none\">\n {typeToSearchText}\n </div>\n ) : filteredGroups ? (\n filteredGroups.map((grp, gIdx) => (\n <div key={gIdx} className=\"pt-2\">\n <div className=\"text-[11px] font-bold uppercase tracking-wider text-gray-400 dark:text-gray-500 px-3 py-1.5 select-none\">\n {grp.group}\n </div>\n <div className=\"space-y-1\">\n {grp.options.map((option) => {\n const optVal = getValue(option)\n const isSelected = isOptionSelected(option)\n const optDisabled = (option as BaseOption).disabled\n const optDesc =\n typeof option === 'object'\n ? option?.description || option?.subtitle\n : null\n\n return (\n <div\n key={optVal}\n onClick={() => !optDisabled && handleToggleOption(option)}\n className={buildClassName(\n 'w-full flex items-center justify-between p-3.5 rounded-2xl transition-colors cursor-pointer select-none',\n isSelected\n ? 'bg-blue-50 dark:bg-blue-950/40 text-blue-600 dark:text-blue-400 font-semibold'\n : 'text-gray-800 dark:text-gray-100 hover:bg-gray-100 dark:hover:bg-gray-800/70',\n optDisabled && 'opacity-50 pointer-events-none',\n )}\n >\n <div className=\"flex-1 min-w-0 pr-3\">\n <div className=\"text-sm/6 truncate\">\n {renderOption\n ? renderOption(option, isSelected)\n : getDisplayValue(option)}\n </div>\n {optDesc && (\n <div className=\"text-xs text-gray-400 font-normal truncate mt-0.5\">\n {optDesc}\n </div>\n )}\n </div>\n {isSelected && (\n <CheckIcon className=\"size-5 stroke-blue-600 dark:stroke-blue-400 shrink-0\" />\n )}\n </div>\n )\n })}\n </div>\n </div>\n ))\n ) : filteredOptions.length > 0 ? (\n filteredOptions.map((option) => {\n const optVal = getValue(option)\n const isSelected = isOptionSelected(option)\n const optDisabled = (option as BaseOption).disabled\n const optDesc =\n typeof option === 'object' ? option?.description || option?.subtitle : null\n\n return (\n <div\n key={optVal}\n onClick={() => !optDisabled && handleToggleOption(option)}\n className={buildClassName(\n 'w-full flex items-center justify-between p-3.5 rounded-2xl transition-colors cursor-pointer select-none',\n isSelected\n ? 'bg-blue-50 dark:bg-blue-950/40 text-blue-600 dark:text-blue-400 font-semibold'\n : 'text-gray-800 dark:text-gray-100 hover:bg-gray-100 dark:hover:bg-gray-800/70',\n optDisabled && 'opacity-50 pointer-events-none',\n )}\n >\n <div className=\"flex-1 min-w-0 pr-3\">\n <div className=\"text-sm/6 truncate\">\n {renderOption\n ? renderOption(option, isSelected)\n : getDisplayValue(option)}\n </div>\n {optDesc && (\n <div className=\"text-xs text-gray-400 font-normal truncate mt-0.5\">\n {optDesc}\n </div>\n )}\n </div>\n {isSelected && (\n <CheckIcon className=\"size-5 stroke-blue-600 dark:stroke-blue-400 shrink-0\" />\n )}\n </div>\n )\n })\n ) : (\n !allowFreeText &&\n !(allowAdd && query.trim()) && (\n <div className=\"py-8 text-center text-sm text-gray-500 dark:text-gray-400 select-none\">\n {query\n ? noOptionsText !== 'No options available'\n ? noOptionsText\n : `No results found for \"${query}\"`\n : noOptionsText}\n </div>\n )\n )}\n\n {/* Creatable option card */}\n {!allowFreeText && allowAdd && Boolean(query.trim()) && (\n <button\n type=\"button\"\n onClick={() => handleAddAndSelect(query.trim())}\n className=\"w-full flex items-center gap-2.5 p-3.5 rounded-2xl text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-800 cursor-pointer\"\n >\n <CirclePlusIcon className=\"size-5 text-blue-600 dark:text-blue-400\" />\n <span className=\"text-sm font-medium\">\n {addNewText} \"{query.trim()}\"\n </span>\n </button>\n )}\n </div>\n\n {/* Sticky Footer for Multi-Select Confirmation */}\n {multiple && (\n <div className=\"p-4 border-t border-[var(--ui-border-muted)] bg-white dark:bg-gray-900 shrink-0\">\n <Button\n fullWidth\n theme=\"primary\"\n size=\"md\"\n onClick={handleConfirmMultiSelect}\n data-testid=\"mobile-picker-confirm-button\"\n >\n {confirmText}{' '}\n {Array.isArray(normalizedDraft) && normalizedDraft.length > 0\n ? `(${normalizedDraft.length})`\n : ''}\n </Button>\n </div>\n )}\n </DialogPanel>\n </div>\n </Dialog>\n </div>\n )\n}\n\nMobilePicker.displayName = 'MobilePicker'\n","import React, { useRef, useState, useEffect } from 'react'\nimport type { WheelPickerProps, WheelPickerColumn, WheelPickerOption } from './WheelPicker.types'\nimport { buildClassName } from '../../utils/build-classname'\n\ninterface SingleColumnProps {\n column: WheelPickerColumn\n itemHeight: number\n height: number\n disabled?: boolean\n onValueChange: (val: string | number) => void\n}\n\nfunction SingleWheelColumn({\n column,\n itemHeight,\n height,\n disabled,\n onValueChange,\n}: SingleColumnProps) {\n const containerRef = useRef<HTMLDivElement>(null)\n const [selectedValue, setSelectedValue] = useState<string | number>(\n column.value !== undefined\n ? column.value\n : column.defaultValue !== undefined\n ? column.defaultValue\n : column.options[0]?.value,\n )\n\n const isControlled = column.value !== undefined\n const currentValue = isControlled ? column.value : selectedValue\n\n const selectedIndex = Math.max(\n 0,\n column.options.findIndex((opt) => opt.value === currentValue),\n )\n\n const paddingY = (height - itemHeight) / 2\n\n // Sync scroll position when active value changes externally\n useEffect(() => {\n if (containerRef.current) {\n const targetScrollTop = selectedIndex * itemHeight\n if (Math.abs(containerRef.current.scrollTop - targetScrollTop) > 2) {\n containerRef.current.scrollTop = targetScrollTop\n }\n }\n }, [selectedIndex, itemHeight])\n\n const handleScroll = () => {\n if (!containerRef.current || disabled) return\n const scrollTop = containerRef.current.scrollTop\n const index = Math.round(scrollTop / itemHeight)\n const targetOption = column.options[index]\n\n if (targetOption && targetOption.value !== currentValue && !targetOption.disabled) {\n if (!isControlled) {\n setSelectedValue(targetOption.value)\n }\n column.onChange?.(targetOption.value)\n onValueChange(targetOption.value)\n }\n }\n\n return (\n <div\n ref={containerRef}\n onScroll={handleScroll}\n className={buildClassName(\n 'flex-1 h-full overflow-y-auto no-scrollbar snap-y snap-mandatory relative z-10 select-none text-center',\n disabled && 'pointer-events-none opacity-40',\n )}\n style={{\n paddingTop: `${paddingY}px`,\n paddingBottom: `${paddingY}px`,\n scrollSnapType: 'y mandatory',\n }}\n data-testid={`wheel-column-${column.id}`}\n >\n {column.options.map((opt: WheelPickerOption, index: number) => {\n const isSelected = opt.value === currentValue\n\n return (\n <div\n key={`${opt.value}-${index}`}\n onClick={() => {\n if (disabled || opt.disabled || !containerRef.current) return\n const targetTop = index * itemHeight\n if (typeof containerRef.current.scrollTo === 'function') {\n containerRef.current.scrollTo({\n top: targetTop,\n behavior: 'smooth',\n })\n } else {\n containerRef.current.scrollTop = targetTop\n }\n }}\n className={buildClassName(\n 'flex items-center justify-center font-semibold snap-center transition-all duration-150 cursor-pointer',\n opt.disabled && 'opacity-30 cursor-not-allowed',\n isSelected\n ? 'text-blue-600 dark:text-blue-400 text-sm font-bold scale-105'\n : 'text-gray-500 dark:text-gray-400 text-xs hover:text-gray-800 dark:hover:text-gray-200',\n )}\n style={{ height: `${itemHeight}px` }}\n data-testid={`wheel-item-${column.id}-${opt.value}`}\n >\n {opt.label}\n </div>\n )\n })}\n </div>\n )\n}\n\nexport function WheelPicker({\n columns,\n height = 200,\n itemHeight = 40,\n onChange,\n disabled = false,\n containerClass = '',\n}: WheelPickerProps) {\n const valuesRef = useRef<Record<string, string | number>>({})\n\n const handleColumnChange = (columnId: string, value: string | number) => {\n valuesRef.current[columnId] = value\n onChange?.({ ...valuesRef.current })\n }\n\n const highlightTop = (height - itemHeight) / 2\n\n return (\n <div\n className={buildClassName(\n 'w-full bg-white dark:bg-gray-900 border border-[var(--ui-border)] rounded-2xl relative overflow-hidden flex items-center shadow-xs select-none',\n containerClass,\n )}\n style={{ height: `${height}px` }}\n data-testid=\"wheel-picker\"\n >\n {/* Center Highlight Selection Window */}\n <div\n className=\"absolute inset-x-2 rounded-xl bg-gray-100/90 dark:bg-gray-800/90 border border-blue-500/20 dark:border-blue-400/20 z-0 pointer-events-none\"\n style={{\n height: `${itemHeight}px`,\n top: `${highlightTop}px`,\n }}\n data-testid=\"wheel-highlight-window\"\n />\n\n {/* Top Gradient Blur Mask */}\n <div\n className=\"absolute top-0 inset-x-0 bg-gradient-to-b from-white via-white/80 dark:from-gray-900 dark:via-gray-900/80 to-transparent pointer-events-none z-20\"\n style={{ height: `${highlightTop}px` }}\n />\n\n {/* Bottom Gradient Blur Mask */}\n <div\n className=\"absolute bottom-0 inset-x-0 bg-gradient-to-t from-white via-white/80 dark:from-gray-900 dark:via-gray-900/80 to-transparent pointer-events-none z-20\"\n style={{ height: `${highlightTop}px` }}\n />\n\n {/* Wheel Columns Container */}\n <div className=\"w-full h-full flex items-center justify-around relative z-10 px-2\">\n {columns.map((col) => (\n <SingleWheelColumn\n key={col.id}\n column={col}\n itemHeight={itemHeight}\n height={height}\n disabled={disabled}\n onValueChange={(val) => handleColumnChange(col.id, val)}\n />\n ))}\n </div>\n </div>\n )\n}\n\nWheelPicker.displayName = 'WheelPicker'\n","import React, { useState } from 'react'\nimport type { MobileHeaderProps, MobileHeaderAction } from './MobileHeader.types'\nimport { buildClassName } from '../../utils/build-classname'\n\nfunction ChevronLeftIcon() {\n return (\n <svg className=\"size-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M15 19l-7-7 7-7\" />\n </svg>\n )\n}\n\nfunction SearchIcon() {\n return (\n <svg className=\"size-4 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n )\n}\n\nfunction ClearIcon() {\n return (\n <svg className=\"size-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n )\n}\n\nexport function MobileHeader({\n title,\n subtitle,\n titleAlign = 'center',\n onBack,\n backLabel = 'Back',\n leading,\n actions,\n searchable = false,\n searchValue: externalSearchValue,\n onSearchChange,\n searchPlaceholder = 'Search...',\n sticky = true,\n transparent = false,\n bottomSlot,\n className = '',\n}: MobileHeaderProps) {\n const [isSearchActive, setIsSearchActive] = useState(false)\n const [internalSearchValue, setInternalSearchValue] = useState('')\n\n const searchValue = externalSearchValue !== undefined ? externalSearchValue : internalSearchValue\n\n const handleSearchInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value\n setInternalSearchValue(val)\n onSearchChange?.(val)\n }\n\n const handleClearSearch = () => {\n setInternalSearchValue('')\n onSearchChange?.('')\n }\n\n return (\n <header\n className={buildClassName(\n 'w-full transition-colors select-none z-30',\n sticky && 'sticky top-0',\n transparent\n ? 'bg-white/80 dark:bg-gray-900/80 backdrop-blur-md border-b border-[var(--ui-border-muted)]'\n : 'bg-white dark:bg-gray-900 border-b border-[var(--ui-border)] shadow-xs',\n 'pt-[env(safe-area-inset-top,0px)]',\n className,\n )}\n data-testid=\"mobile-header\"\n >\n {/* Main Header Row */}\n <div className=\"h-14 px-3.5 flex items-center justify-between gap-3 relative\">\n {/* Search Mode Header View */}\n {searchable && isSearchActive ? (\n <div\n className=\"flex-1 flex items-center gap-2\"\n data-testid=\"mobile-header-search-container\"\n >\n <div className=\"relative flex-1 flex items-center\">\n <span className=\"absolute left-3 pointer-events-none\">\n <SearchIcon />\n </span>\n <input\n type=\"text\"\n value={searchValue}\n onChange={handleSearchInput}\n placeholder={searchPlaceholder}\n autoFocus\n className=\"w-full pl-9 pr-8 py-1.5 text-xs bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-white rounded-full border border-transparent focus:border-blue-500 focus:outline-hidden transition-all\"\n data-testid=\"mobile-header-search-input\"\n />\n {searchValue && (\n <button\n type=\"button\"\n onClick={handleClearSearch}\n aria-label=\"Clear search\"\n className=\"absolute right-2.5 p-0.5 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 cursor-pointer\"\n >\n <ClearIcon />\n </button>\n )}\n </div>\n <button\n type=\"button\"\n onClick={() => setIsSearchActive(false)}\n className=\"text-xs font-semibold text-blue-600 dark:text-blue-400 px-2 py-1.5 rounded-lg hover:bg-blue-50 dark:hover:bg-blue-950/40 cursor-pointer\"\n >\n Cancel\n </button>\n </div>\n ) : (\n <>\n {/* Left Leading / Back Section */}\n <div className=\"flex items-center gap-1 min-w-[40px] shrink-0 z-10\">\n {onBack ? (\n <button\n type=\"button\"\n onClick={onBack}\n aria-label={backLabel}\n className=\"flex items-center gap-0.5 text-blue-600 dark:text-blue-400 hover:text-blue-700 p-1 -ml-1 rounded-xl transition-colors cursor-pointer\"\n data-testid=\"mobile-header-back-btn\"\n >\n <ChevronLeftIcon />\n <span className=\"text-xs font-semibold hidden sm:inline\">{backLabel}</span>\n </button>\n ) : (\n leading\n )}\n </div>\n\n {/* Title & Subtitle Section */}\n <div\n className={buildClassName(\n 'flex-1 min-w-0 px-2',\n titleAlign === 'center'\n ? 'absolute inset-x-12 text-center pointer-events-none flex flex-col items-center justify-center'\n : 'text-left',\n )}\n >\n {title && (\n <div\n className=\"text-sm font-bold text-gray-900 dark:text-white truncate pointer-events-auto\"\n data-testid=\"mobile-header-title\"\n >\n {title}\n </div>\n )}\n {subtitle && (\n <div\n className=\"text-[11px] text-gray-500 dark:text-gray-400 truncate pointer-events-auto\"\n data-testid=\"mobile-header-subtitle\"\n >\n {subtitle}\n </div>\n )}\n </div>\n\n {/* Right Actions Section */}\n <div className=\"flex items-center gap-1 min-w-[40px] shrink-0 justify-end z-10\">\n {searchable && (\n <button\n type=\"button\"\n onClick={() => setIsSearchActive(true)}\n aria-label=\"Search\"\n className=\"p-2 text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 rounded-xl transition-colors cursor-pointer\"\n data-testid=\"mobile-header-search-toggle\"\n >\n <SearchIcon />\n </button>\n )}\n\n {actions?.map((action: MobileHeaderAction) => {\n const badgeColor = {\n danger: 'bg-red-500 text-white',\n info: 'bg-blue-500 text-white',\n success: 'bg-emerald-500 text-white',\n }[action.badgeVariant || 'danger']\n\n return (\n <button\n key={action.id}\n type=\"button\"\n disabled={action.disabled}\n onClick={action.onClick}\n aria-label={action.label}\n className={buildClassName(\n 'p-2 text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 rounded-xl transition-colors relative cursor-pointer',\n action.disabled && 'opacity-40 cursor-not-allowed pointer-events-none',\n )}\n data-testid={`mobile-header-action-${action.id}`}\n >\n <span className=\"text-base\">{action.icon}</span>\n {action.badge !== undefined && action.badge !== null && (\n <span\n className={buildClassName(\n 'absolute top-1 right-1 min-w-[14px] h-3.5 px-0.5 rounded-full text-[9px] font-bold flex items-center justify-center shadow-xs',\n badgeColor,\n )}\n data-testid={`mobile-header-badge-${action.id}`}\n >\n {action.badge}\n </span>\n )}\n </button>\n )\n })}\n </div>\n </>\n )}\n </div>\n\n {/* Optional Bottom Sub-Header Slot (e.g. Category tabs or filter bar) */}\n {bottomSlot && (\n <div\n className=\"px-3 py-2 border-t border-[var(--ui-border-muted)]\"\n data-testid=\"mobile-header-bottom-slot\"\n >\n {bottomSlot}\n </div>\n )}\n </header>\n )\n}\n\nMobileHeader.displayName = 'MobileHeader'\n","import React from 'react'\nimport type { MobileStepperProps } from './MobileStepper.types'\nimport { buildClassName } from '../../utils/build-classname'\nimport { Button } from '../Button'\n\nfunction ChevronLeftIcon() {\n return (\n <svg className=\"size-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M15 19l-7-7 7-7\" />\n </svg>\n )\n}\n\nfunction ChevronRightIcon() {\n return (\n <svg className=\"size-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M9 5l7 7-7 7\" />\n </svg>\n )\n}\n\nexport function MobileStepper({\n steps,\n activeStep,\n variant = 'dots',\n onBack,\n onNext,\n backLabel = 'Back',\n nextLabel = 'Next',\n stepTitle,\n nextDisabled = false,\n backDisabled = false,\n nextLoading = false,\n className = '',\n}: MobileStepperProps) {\n const isFirstStep = activeStep <= 0\n const isLastStep = activeStep >= steps - 1\n\n const progressPercent = Math.min(Math.max(((activeStep + 1) / steps) * 100, 0), 100)\n\n return (\n <div\n className={buildClassName(\n 'w-full flex flex-col gap-2 p-3 bg-white dark:bg-gray-900 border border-[var(--ui-border)] rounded-2xl shadow-xs select-none',\n className,\n )}\n data-testid=\"mobile-stepper\"\n >\n {/* Optional Step Title Header */}\n {stepTitle && (\n <div className=\"flex items-center justify-between px-1\">\n <span\n className=\"text-xs font-bold text-gray-900 dark:text-white truncate\"\n data-testid=\"mobile-stepper-title\"\n >\n {stepTitle}\n </span>\n <span className=\"text-[11px] font-medium text-gray-500 dark:text-gray-400 shrink-0 ml-2\">\n {activeStep + 1} / {steps}\n </span>\n </div>\n )}\n\n {/* Main Navigation Controls & Progress Indicator Row */}\n <div className=\"flex items-center justify-between gap-3\">\n {/* Back Button */}\n <Button\n size=\"xs\"\n variant=\"plain\"\n theme=\"secondary\"\n disabled={disabledBack(isFirstStep, backDisabled)}\n onClick={onBack}\n aria-label=\"Previous step\"\n leftIcon={<ChevronLeftIcon />}\n data-testid=\"mobile-stepper-back-btn\"\n >\n {backLabel}\n </Button>\n\n {/* Center Progress Indicator */}\n <div\n className=\"flex items-center justify-center flex-1\"\n data-testid=\"mobile-stepper-indicator\"\n >\n {variant === 'dots' && (\n <div className=\"flex items-center gap-1.5\" data-testid=\"mobile-stepper-dots\">\n {Array.from({ length: steps }).map((_, index) => {\n const isActive = index === activeStep\n const isCompleted = index < activeStep\n\n return (\n <span\n key={index}\n className={buildClassName(\n 'h-2 transition-all duration-300 rounded-full',\n isActive\n ? 'w-5 bg-blue-600 dark:bg-blue-400'\n : isCompleted\n ? 'w-2 bg-blue-300 dark:bg-blue-800'\n : 'w-2 bg-gray-200 dark:bg-gray-700',\n )}\n data-testid={`mobile-stepper-dot-${index}`}\n />\n )\n })}\n </div>\n )}\n\n {variant === 'progress' && (\n <div\n className=\"w-full max-w-[140px] bg-gray-200 dark:bg-gray-700 h-2 rounded-full overflow-hidden\"\n data-testid=\"mobile-stepper-progress\"\n >\n <div\n className=\"bg-blue-600 dark:bg-blue-400 h-full transition-all duration-300 rounded-full\"\n style={{ width: `${progressPercent}%` }}\n />\n </div>\n )}\n\n {variant === 'text' && (\n <div\n className=\"text-xs font-semibold text-gray-600 dark:text-gray-300\"\n data-testid=\"mobile-stepper-text\"\n >\n Step {activeStep + 1} of {steps}\n </div>\n )}\n </div>\n\n {/* Next / Finish Button */}\n <Button\n size=\"xs\"\n variant=\"default\"\n theme=\"primary\"\n disabled={nextDisabled}\n loading={nextLoading}\n onClick={onNext}\n aria-label=\"Next step\"\n rightIcon={!isLastStep ? <ChevronRightIcon /> : undefined}\n data-testid=\"mobile-stepper-next-btn\"\n >\n {nextLabel}\n </Button>\n </div>\n </div>\n )\n}\n\nfunction disabledBack(isFirstStep: boolean, backDisabled: boolean): boolean {\n return isFirstStep || backDisabled\n}\n\nMobileStepper.displayName = 'MobileStepper'\n","import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react'\nimport { SwipeableRowProps, SwipeableAction, SwipeableActionTheme } from './SwipeableRow.types'\nimport { buildClassName } from '../../utils/build-classname'\n\nconst themeClasses: Record<SwipeableActionTheme, string> = {\n danger: 'bg-red-600 text-white hover:bg-red-700 active:bg-red-800',\n primary: 'bg-blue-600 text-white hover:bg-blue-700 active:bg-blue-800',\n success: 'bg-emerald-600 text-white hover:bg-emerald-700 active:bg-emerald-800',\n warning: 'bg-amber-500 text-white hover:bg-amber-600 active:bg-amber-700',\n info: 'bg-cyan-600 text-white hover:bg-cyan-700 active:bg-cyan-800',\n secondary: 'bg-gray-600 text-white hover:bg-gray-700 active:bg-gray-800',\n gray: 'bg-gray-500 text-white hover:bg-gray-600 active:bg-gray-700',\n}\n\nexport const SwipeableRow: React.FC<SwipeableRowProps> = ({\n children,\n leftActions = [],\n rightActions = [],\n actionWidth = 76,\n threshold = 40,\n fullSwipeToExecute = false,\n fullSwipeThreshold = 180,\n disabled = false,\n className = '',\n contentClassName = '',\n onOpen,\n onClose,\n}) => {\n const [offset, setOffset] = useState(0)\n const [isDragging, setIsDragging] = useState(false)\n const containerRef = useRef<HTMLDivElement>(null)\n\n const startXRef = useRef(0)\n const startYRef = useRef(0)\n const initialOffsetRef = useRef(0)\n const isHorizontalSwipeRef = useRef<boolean | null>(null)\n\n const maxLeftWidth = useMemo(() => leftActions.length * actionWidth, [leftActions, actionWidth])\n const maxRightWidth = useMemo(\n () => rightActions.length * actionWidth,\n [rightActions, actionWidth],\n )\n\n const handleClose = useCallback(() => {\n setOffset(0)\n onClose?.()\n }, [onClose])\n\n const handleOpenLeft = useCallback(() => {\n if (maxLeftWidth > 0) {\n setOffset(maxLeftWidth)\n onOpen?.('left')\n } else {\n handleClose()\n }\n }, [maxLeftWidth, onOpen, handleClose])\n\n const handleOpenRight = useCallback(() => {\n if (maxRightWidth > 0) {\n setOffset(-maxRightWidth)\n onOpen?.('right')\n } else {\n handleClose()\n }\n }, [maxRightWidth, onOpen, handleClose])\n\n const handleDragStart = (clientX: number, clientY: number) => {\n if (disabled) return\n setIsDragging(true)\n startXRef.current = clientX\n startYRef.current = clientY\n initialOffsetRef.current = offset\n isHorizontalSwipeRef.current = null\n }\n\n const handleDragMove = (clientX: number, clientY: number) => {\n if (!isDragging || disabled) return\n\n const deltaX = clientX - startXRef.current\n const deltaY = clientY - startYRef.current\n\n // Lock direction once initial movement surpasses 5px\n if (isHorizontalSwipeRef.current === null) {\n if (Math.abs(deltaX) > 5 || Math.abs(deltaY) > 5) {\n isHorizontalSwipeRef.current = Math.abs(deltaX) > Math.abs(deltaY)\n }\n }\n\n if (isHorizontalSwipeRef.current === false) {\n return\n }\n\n let nextOffset = initialOffsetRef.current + deltaX\n\n // Limit drag range with resistance overscroll\n if (nextOffset > 0) {\n if (!leftActions.length) {\n nextOffset = 0\n } else if (nextOffset > maxLeftWidth && !fullSwipeToExecute) {\n const overflow = nextOffset - maxLeftWidth\n nextOffset = maxLeftWidth + overflow * 0.2\n }\n } else if (nextOffset < 0) {\n if (!rightActions.length) {\n nextOffset = 0\n } else if (Math.abs(nextOffset) > maxRightWidth && !fullSwipeToExecute) {\n const overflow = Math.abs(nextOffset) - maxRightWidth\n nextOffset = -(maxRightWidth + overflow * 0.2)\n }\n }\n\n setOffset(nextOffset)\n }\n\n const handleDragEnd = () => {\n if (!isDragging) return\n setIsDragging(false)\n\n if (isHorizontalSwipeRef.current === false) {\n return\n }\n\n // Check full swipe auto-execution\n if (fullSwipeToExecute) {\n if (offset > fullSwipeThreshold && leftActions.length > 0) {\n leftActions[0].onClick()\n handleClose()\n return\n }\n if (offset < -fullSwipeThreshold && rightActions.length > 0) {\n rightActions[0].onClick()\n handleClose()\n return\n }\n }\n\n // Snap logic\n if (offset > 0) {\n if (offset > threshold) {\n handleOpenLeft()\n } else {\n handleClose()\n }\n } else if (offset < 0) {\n if (Math.abs(offset) > threshold) {\n handleOpenRight()\n } else {\n handleClose()\n }\n }\n }\n\n // Touch Handlers\n const handleTouchStart = (e: React.TouchEvent) => {\n const touch = e.touches[0]\n handleDragStart(touch.clientX, touch.clientY)\n }\n\n const handleTouchMove = (e: React.TouchEvent) => {\n const touch = e.touches[0]\n handleDragMove(touch.clientX, touch.clientY)\n }\n\n const handleTouchEnd = () => {\n handleDragEnd()\n }\n\n // Pointer/Mouse Handlers\n const handlePointerDown = (e: React.PointerEvent) => {\n if (e.pointerType === 'mouse' && e.button !== 0) return\n handleDragStart(e.clientX, e.clientY)\n }\n\n const handlePointerMove = (e: React.PointerEvent) => {\n if (!isDragging) return\n handleDragMove(e.clientX, e.clientY)\n }\n\n const handlePointerUp = () => {\n handleDragEnd()\n }\n\n // Close row on click outside if swiped open\n useEffect(() => {\n if (offset === 0) return\n\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n handleClose()\n }\n }\n\n document.addEventListener('click', handleClickOutside)\n return () => {\n document.removeEventListener('click', handleClickOutside)\n }\n }, [offset, handleClose])\n\n const renderActionButton = (action: SwipeableAction) => {\n const themeStyle = themeClasses[action.theme || 'primary']\n return (\n <button\n key={action.id}\n type=\"button\"\n style={{ width: `${actionWidth}px` }}\n onClick={(e) => {\n e.stopPropagation()\n action.onClick()\n handleClose()\n }}\n className={buildClassName(\n 'h-full flex flex-col items-center justify-center gap-1 text-xs font-semibold shrink-0 cursor-pointer transition-colors px-2 select-none',\n themeStyle,\n action.className,\n )}\n data-testid={`swipe-action-${action.id}`}\n >\n {action.icon && <span className=\"shrink-0\">{action.icon}</span>}\n {action.label && <span className=\"truncate max-w-full\">{action.label}</span>}\n </button>\n )\n }\n\n return (\n <div\n ref={containerRef}\n className={buildClassName(\n 'relative overflow-hidden rounded-xl border border-[var(--ui-border-muted)] bg-white dark:bg-gray-800 select-none touch-pan-y',\n className,\n )}\n data-testid=\"swipeable-row\"\n >\n {/* Left Actions Revealed on Right Swipe */}\n {leftActions.length > 0 && (\n <div\n className=\"absolute left-0 top-0 bottom-0 flex items-center h-full z-0\"\n style={{ width: `${maxLeftWidth}px` }}\n data-testid=\"swipe-left-actions\"\n >\n {leftActions.map(renderActionButton)}\n </div>\n )}\n\n {/* Right Actions Revealed on Left Swipe */}\n {rightActions.length > 0 && (\n <div\n className=\"absolute right-0 top-0 bottom-0 flex items-center justify-end h-full z-0\"\n style={{ width: `${maxRightWidth}px` }}\n data-testid=\"swipe-right-actions\"\n >\n {rightActions.map(renderActionButton)}\n </div>\n )}\n\n {/* Main Content Surface */}\n <div\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n style={{\n transform: `translateX(${offset}px)`,\n transition: isDragging ? 'none' : 'transform 200ms cubic-bezier(0.2, 0.8, 0.2, 1)',\n }}\n className={buildClassName(\n 'relative z-10 w-full bg-white dark:bg-gray-800 shadow-xs cursor-grab active:cursor-grabbing',\n contentClassName,\n )}\n data-testid=\"swipeable-row-content\"\n >\n {children}\n </div>\n </div>\n )\n}\n\nSwipeableRow.displayName = 'SwipeableRow'\n","import React, { useMemo, useState } from 'react'\nimport type { DataListProps, DataListSortDirection } from './DataList.types'\nimport { SwipeableRow } from '../SwipeableRow'\nimport { Checkbox } from '../Checkbox'\nimport { Pagination } from '../Pagination'\nimport { Input } from '../Input'\nimport { Drawer } from '../Drawer'\nimport { Button } from '../Button'\nimport { get } from '../../utils/get'\nimport { buildClassName } from '../../utils/build-classname'\n\nfunction SearchIcon() {\n return (\n <svg className=\"size-4 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n )\n}\n\nfunction FilterIcon() {\n return (\n <svg className=\"size-3.5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z\"\n />\n </svg>\n )\n}\n\nfunction SortIcon() {\n return (\n <svg className=\"size-3.5 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4\"\n />\n </svg>\n )\n}\n\nfunction CheckIcon() {\n return (\n <svg\n className=\"size-4 text-blue-600 dark:text-blue-400 shrink-0\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.5} d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n}\n\nconst parseNumericValue = (val: any): number => {\n if (typeof val === 'number') return val\n if (val === null || val === undefined) return NaN\n const cleaned = String(val).replace(/[^0-9.-]/g, '')\n return cleaned !== '' ? Number(cleaned) : NaN\n}\n\nexport function DataList<T extends Record<string, any> = Record<string, any>>({\n items,\n columns,\n renderItem,\n searchable = false,\n searchQuery: externalSearchQuery,\n onSearchChange,\n searchFields,\n filterFields,\n selectedFilters: externalFilters,\n onFilterChange,\n sorting: externalSorting,\n onSortChange,\n swipeableActions,\n rowKey = 'id',\n selectable = false,\n selectedKeys = [],\n onSelectionChange,\n onItemClick,\n loading = false,\n emptyMessage = 'No items found',\n pagination,\n setPagination,\n containerClass = '',\n itemClass = '',\n}: DataListProps<T>) {\n // Internal Search State\n const [internalSearchQuery, setInternalSearchQuery] = useState('')\n const searchQuery = externalSearchQuery !== undefined ? externalSearchQuery : internalSearchQuery\n\n const handleSearchInput = (query: string) => {\n onSearchChange ? onSearchChange(query) : setInternalSearchQuery(query)\n }\n\n // Internal Filter State\n const [internalFilters, setInternalFilters] = useState<\n Record<string, Array<string | number> | string | number>\n >({})\n const selectedFilters = externalFilters !== undefined ? externalFilters : internalFilters\n\n // Mobile Bottom Sheet Filter Drawer State\n const [isFilterSheetOpen, setIsFilterSheetOpen] = useState(false)\n const [draftFilters, setDraftFilters] = useState<\n Record<string, Array<string | number> | string | number>\n >({})\n\n // Mobile Bottom Sheet Sort Drawer State\n const [isSortSheetOpen, setIsSortSheetOpen] = useState(false)\n\n // Active Filter Count Calculation\n const activeFilterCount = useMemo(() => {\n let count = 0\n Object.values(selectedFilters).forEach((val) => {\n if (Array.isArray(val)) {\n count += val.length\n } else if (val !== '' && val !== null && val !== undefined && val !== 'all') {\n count += 1\n }\n })\n return count\n }, [selectedFilters])\n\n // Internal Sort State\n const [internalSort, setInternalSort] = useState<{\n field: string\n dir: DataListSortDirection\n } | null>(() => {\n if (externalSorting && Object.keys(externalSorting).length > 0) {\n const field = Object.keys(externalSorting)[0]\n return { field, dir: externalSorting[field] }\n }\n return null\n })\n\n React.useEffect(() => {\n if (externalSorting !== undefined) {\n if (Object.keys(externalSorting).length > 0) {\n const field = Object.keys(externalSorting)[0]\n setInternalSort({ field, dir: externalSorting[field] })\n } else {\n setInternalSort(null)\n }\n }\n }, [externalSorting])\n\n const activeSort = internalSort\n\n const sortableColumns = useMemo(() => columns?.filter((c) => c.sortable) || [], [columns])\n\n const sortOptions = useMemo(() => {\n const opts: Array<{ label: string; value: string }> = [{ label: 'Default Order', value: '' }]\n sortableColumns.forEach((col) => {\n const isNum = col.type === 'number'\n const isDate = col.type === 'date'\n const lowHigh = isNum\n ? `${col.label} (Low to High)`\n : isDate\n ? `${col.label} (Oldest First)`\n : `${col.label} (A to Z)`\n const highLow = isNum\n ? `${col.label} (High to Low)`\n : isDate\n ? `${col.label} (Newest First)`\n : `${col.label} (Z to A)`\n\n opts.push({ label: lowHigh, value: `${col.name}:asc` })\n opts.push({ label: highLow, value: `${col.name}:desc` })\n })\n return opts\n }, [sortableColumns])\n\n const handleSortSelect = (val: string) => {\n if (!val) {\n setInternalSort(null)\n onSortChange?.({})\n return\n }\n const [field, dir] = val.split(':')\n const sortObj = { [field]: dir as DataListSortDirection }\n setInternalSort({ field, dir: dir as DataListSortDirection })\n onSortChange?.(sortObj)\n }\n\n const activeSortLabel = useMemo(() => {\n if (!activeSort) return 'Sort'\n const currVal = `${activeSort.field}:${activeSort.dir}`\n const match = sortOptions.find((o) => o.value === currVal)\n if (!match || !match.value) return 'Sort'\n return `Sort: ${match.label}`\n }, [activeSort, sortOptions])\n\n // Processed Items (Filter + Search + Sort)\n const processedItems = useMemo(() => {\n let result = [...items]\n\n // 1. Apply Search\n if (searchQuery.trim()) {\n const q = searchQuery.toLowerCase().trim()\n const fieldsToSearch = searchFields || columns?.map((c) => c.name) || ['id', 'name', 'title']\n result = result.filter((item) =>\n fieldsToSearch.some((field) => {\n const val = get(item, field)\n return val !== null && val !== undefined && String(val).toLowerCase().includes(q)\n }),\n )\n }\n\n // 2. Apply Filters (supporting array checkboxes or single values)\n const filterKeys = Object.keys(selectedFilters)\n if (filterKeys.length > 0) {\n result = result.filter((item) =>\n filterKeys.every((key) => {\n const filterVal = selectedFilters[key]\n if (filterVal === undefined || filterVal === null || filterVal === '') return true\n const actual = String(get(item, key))\n if (Array.isArray(filterVal)) {\n if (filterVal.length === 0) return true\n return filterVal.map(String).includes(actual)\n }\n return actual === String(filterVal)\n }),\n )\n }\n\n // 3. Apply Auto Sorting\n if (activeSort) {\n const { field, dir } = activeSort\n const colDef = columns?.find((c) => c.name === field)\n const isAsc = dir === 'asc' || dir === '1'\n\n result.sort((a, b) => {\n const valA = get(a, field)\n const valB = get(b, field)\n\n const numA = parseNumericValue(valA)\n const numB = parseNumericValue(valB)\n\n if (colDef?.type === 'number' || (!isNaN(numA) && !isNaN(numB))) {\n return isAsc ? numA - numB : numB - numA\n }\n\n if (colDef?.type === 'date') {\n const dA = new Date(valA).getTime()\n const dB = new Date(valB).getTime()\n if (!isNaN(dA) && !isNaN(dB)) {\n return isAsc ? dA - dB : dB - dA\n }\n }\n\n const strA = String(valA ?? '')\n const strB = String(valB ?? '')\n return isAsc\n ? strA.localeCompare(strB, undefined, { numeric: true })\n : strB.localeCompare(strA, undefined, { numeric: true })\n })\n }\n\n return result\n }, [items, searchQuery, searchFields, columns, selectedFilters, activeSort])\n\n // Draft Filters Matching Count\n const draftMatchingCount = useMemo(() => {\n let result = [...items]\n const filterKeys = Object.keys(draftFilters)\n if (filterKeys.length > 0) {\n result = result.filter((item) =>\n filterKeys.every((key) => {\n const filterVal = draftFilters[key]\n if (filterVal === undefined || filterVal === null || filterVal === '') return true\n const actual = String(get(item, key))\n if (Array.isArray(filterVal)) {\n if (filterVal.length === 0) return true\n return filterVal.map(String).includes(actual)\n }\n return actual === String(filterVal)\n }),\n )\n }\n return result.length\n }, [items, draftFilters])\n\n const getKey = (item: T, idx: number): string | number => {\n if (typeof rowKey === 'function') return rowKey(item)\n return (item as any)[rowKey] ?? idx\n }\n\n const isSelected = (key: string | number) => selectedKeys.includes(key)\n\n const toggleSelectAll = () => {\n if (selectedKeys.length === processedItems.length) {\n onSelectionChange?.([], [])\n } else {\n const allKeys = processedItems.map(getKey)\n onSelectionChange?.(allKeys, processedItems)\n }\n }\n\n const toggleItemSelect = (key: string | number, item: T) => {\n const nextKeys = isSelected(key)\n ? selectedKeys.filter((k) => k !== key)\n : [...selectedKeys, key]\n const nextItems = processedItems.filter((it, idx) => nextKeys.includes(getKey(it, idx)))\n onSelectionChange?.(nextKeys, nextItems)\n }\n\n const getItemClassStr = (item: T, idx: number): string => {\n if (typeof itemClass === 'function') return itemClass(item, idx)\n return itemClass\n }\n\n return (\n <div className={buildClassName('w-full space-y-3', containerClass)} data-testid=\"data-list\">\n {/* Top Search, Filter, Sort Toolbar */}\n {(searchable || (filterFields && filterFields.length > 0) || sortableColumns.length > 0) && (\n <div className=\"p-3 bg-gray-50 dark:bg-gray-800/80 rounded-xl border border-[var(--ui-border)] space-y-3\">\n {searchable && (\n <Input\n value={searchQuery}\n onChange={(e) => handleSearchInput(e.target.value)}\n placeholder=\"Search items...\"\n leftGroup={<SearchIcon />}\n clearable\n onClear={() => handleSearchInput('')}\n className=\"w-full text-xs\"\n size=\"sm\"\n />\n )}\n\n {((filterFields && filterFields.length > 0) || sortableColumns.length > 0) && (\n <div className=\"flex items-center gap-2\">\n {filterFields && filterFields.length > 0 && (\n <Button\n theme=\"secondary\"\n size=\"sm\"\n onClick={() => {\n setDraftFilters(selectedFilters)\n setIsFilterSheetOpen(true)\n }}\n className=\"flex items-center gap-1.5 text-xs font-semibold flex-1 justify-center\"\n data-testid=\"data-list-filter-btn\"\n >\n <FilterIcon />\n <span>Filters</span>\n {activeFilterCount > 0 && (\n <span className=\"ml-1 size-4 rounded-full bg-blue-600 text-white text-[10px] font-bold flex items-center justify-center\">\n {activeFilterCount}\n </span>\n )}\n </Button>\n )}\n\n {sortableColumns.length > 0 && (\n <Button\n theme=\"secondary\"\n size=\"sm\"\n onClick={() => setIsSortSheetOpen(true)}\n className=\"flex items-center gap-1.5 text-xs font-semibold flex-1 justify-center\"\n data-testid=\"data-list-sort-btn\"\n >\n <SortIcon />\n <span>{activeSortLabel}</span>\n </Button>\n )}\n </div>\n )}\n </div>\n )}\n\n {/* Mobile Bottom Sheet Filter Drawer */}\n {filterFields && filterFields.length > 0 && (\n <Drawer\n isOpen={isFilterSheetOpen}\n onClose={() => setIsFilterSheetOpen(false)}\n align=\"bottom\"\n title=\"Filter Items\"\n dragHandle\n panelClass=\"max-h-[85vh] rounded-t-2xl\"\n footer={\n <div className=\"flex items-center gap-3 w-full\">\n <Button\n theme=\"secondary\"\n size=\"md\"\n onClick={() => setDraftFilters({})}\n className=\"flex-1 text-xs\"\n >\n Clear All\n </Button>\n <Button\n theme=\"primary\"\n size=\"md\"\n onClick={() => {\n onFilterChange ? onFilterChange(draftFilters) : setInternalFilters(draftFilters)\n setIsFilterSheetOpen(false)\n }}\n className=\"flex-1 text-xs font-semibold\"\n data-testid=\"data-list-apply-filters-btn\"\n >\n Apply Filters ({draftMatchingCount})\n </Button>\n </div>\n }\n footerSticky\n >\n <div className=\"space-y-6 py-2\">\n {filterFields.map((field) => {\n const selectedArray = Array.isArray(draftFilters[field.name])\n ? (draftFilters[field.name] as Array<string | number>)\n : draftFilters[field.name] !== undefined && draftFilters[field.name] !== ''\n ? [draftFilters[field.name] as string | number]\n : []\n\n return (\n <div key={field.name} className=\"space-y-2.5\">\n <h4 className=\"text-xs font-bold uppercase tracking-wider text-gray-500 dark:text-gray-400 px-1\">\n {field.label}\n </h4>\n <div className=\"space-y-1.5 bg-gray-50 dark:bg-gray-800/60 p-2.5 rounded-xl border border-[var(--ui-border-muted)]\">\n {field.options.map((opt) => {\n const checked = selectedArray.includes(opt.value)\n return (\n <label\n key={String(opt.value)}\n className=\"flex items-center justify-between p-2 rounded-lg hover:bg-white dark:hover:bg-gray-800 cursor-pointer transition-colors\"\n >\n <span className=\"text-sm font-medium text-gray-800 dark:text-gray-200\">\n {opt.label}\n </span>\n <Checkbox\n checked={checked}\n onChange={() => {\n const next = checked\n ? selectedArray.filter((v) => v !== opt.value)\n : [...selectedArray, opt.value]\n setDraftFilters((prev) => ({\n ...prev,\n [field.name]: next,\n }))\n }}\n />\n </label>\n )\n })}\n </div>\n </div>\n )\n })}\n </div>\n </Drawer>\n )}\n\n {/* Mobile Bottom Sheet Sort Drawer */}\n {sortableColumns.length > 0 && (\n <Drawer\n isOpen={isSortSheetOpen}\n onClose={() => setIsSortSheetOpen(false)}\n align=\"bottom\"\n title=\"Sort Items By\"\n dragHandle\n panelClass=\"max-h-[70vh] rounded-t-2xl\"\n >\n <div className=\"space-y-1 py-2\">\n {sortOptions.map((opt) => {\n const isSelected =\n (activeSort ? `${activeSort.field}:${activeSort.dir}` : '') === opt.value\n return (\n <button\n key={opt.value}\n type=\"button\"\n onClick={() => {\n handleSortSelect(opt.value)\n setIsSortSheetOpen(false)\n }}\n className={buildClassName(\n 'w-full flex items-center justify-between p-3.5 rounded-xl text-left transition-colors cursor-pointer',\n isSelected\n ? 'bg-blue-50 dark:bg-blue-950/40 text-blue-600 dark:text-blue-400 font-semibold'\n : 'hover:bg-gray-100 dark:hover:bg-gray-800 text-gray-700 dark:text-gray-200 font-medium',\n )}\n data-testid={`data-list-sort-opt-${opt.value || 'default'}`}\n >\n <span className=\"text-sm\">{opt.label}</span>\n {isSelected && <CheckIcon />}\n </button>\n )\n })}\n </div>\n </Drawer>\n )}\n\n {/* Select All Toolbar */}\n {selectable && processedItems.length > 0 && (\n <div className=\"p-3 bg-gray-50 dark:bg-gray-800/80 rounded-xl border border-[var(--ui-border)] flex items-center justify-between text-xs\">\n <label className=\"flex items-center gap-2 font-medium text-gray-700 dark:text-gray-300 cursor-pointer\">\n <Checkbox\n checked={processedItems.length > 0 && selectedKeys.length === processedItems.length}\n onChange={toggleSelectAll}\n />\n <span>Select All Items</span>\n </label>\n <span className=\"text-gray-400 font-semibold\">\n {selectedKeys.length} of {processedItems.length}\n </span>\n </div>\n )}\n\n {/* Items List */}\n <div className=\"space-y-3\">\n {loading ? (\n <div className=\"p-8 text-center text-sm text-gray-500 bg-white dark:bg-gray-800 rounded-xl border border-[var(--ui-border)]\">\n Loading items...\n </div>\n ) : processedItems.length === 0 ? (\n <div className=\"p-8 text-center text-sm text-gray-500 bg-white dark:bg-gray-800 rounded-xl border border-[var(--ui-border)]\">\n {emptyMessage}\n </div>\n ) : (\n processedItems.map((item, idx) => {\n const key = getKey(item, idx)\n const selected = isSelected(key)\n const actions = swipeableActions?.(item)\n const customClass = getItemClassStr(item, idx)\n\n const contentNode = renderItem ? (\n renderItem(item, idx)\n ) : (\n <div\n onClick={() => onItemClick?.(item, idx)}\n className={buildClassName(\n 'p-4 bg-white dark:bg-gray-800 rounded-xl border border-[var(--ui-border)] shadow-xs space-y-3 transition-colors',\n onItemClick && 'cursor-pointer hover:border-blue-500/50',\n selected && 'ring-2 ring-blue-500/50 bg-blue-50/20 dark:bg-blue-950/20',\n customClass,\n )}\n data-testid={`data-list-item-${key}`}\n >\n {/* Card Header Row */}\n <div className=\"flex items-center justify-between gap-3 border-b border-[var(--ui-border-muted)] pb-2.5\">\n <div className=\"flex items-center gap-2.5 min-w-0 flex-1\">\n {selectable ? (\n <Checkbox\n checked={selected}\n onChange={() => toggleItemSelect(key, item)}\n aria-label={`Select item ${key}`}\n label={\n <span className=\"font-bold text-sm text-gray-900 dark:text-white truncate block\">\n {columns && columns[0]?.render\n ? columns[0].render(item)\n : String(get(item, columns?.[0]?.name ?? 'title') ?? '')}\n </span>\n }\n />\n ) : (\n <div className=\"font-bold text-sm text-gray-900 dark:text-white truncate\">\n {columns && columns[0]?.render\n ? columns[0].render(item)\n : String(get(item, columns?.[0]?.name ?? 'title') ?? '')}\n </div>\n )}\n </div>\n {columns && columns[1] && (\n <div className=\"shrink-0 text-xs\">\n {columns[1].render\n ? columns[1].render(item)\n : String(get(item, columns[1].name) ?? '')}\n </div>\n )}\n </div>\n\n {/* Key-Value Details Grid */}\n {columns && columns.length > 2 && (\n <div className=\"grid grid-cols-2 gap-2 text-xs pt-1\">\n {columns.slice(2).map((col) => {\n const val = col.render ? col.render(item) : get(item, col.name)\n if (val === null || val === undefined || val === '') return null\n return (\n <div key={String(col.name)} className=\"min-w-0\">\n <span className=\"text-gray-400 dark:text-gray-500 font-medium block truncate\">\n {col.label}\n </span>\n <span className=\"text-gray-800 dark:text-gray-200 font-semibold block truncate mt-0.5\">\n {val}\n </span>\n </div>\n )\n })}\n </div>\n )}\n </div>\n )\n\n if (actions && (actions.leftActions?.length || actions.rightActions?.length)) {\n return (\n <SwipeableRow\n key={key}\n leftActions={actions.leftActions}\n rightActions={actions.rightActions}\n >\n {contentNode}\n </SwipeableRow>\n )\n }\n\n return <div key={key}>{contentNode}</div>\n })\n )}\n </div>\n\n {/* Pagination Footer */}\n {pagination && pagination.total > 0 && (\n <div className=\"pt-2 flex justify-center\">\n <Pagination {...pagination} onChange={(newPag) => setPagination?.(newPag)} />\n </div>\n )}\n </div>\n )\n}\n\nDataList.displayName = 'DataList'\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n Combobox,\n ComboboxButton,\n ComboboxInput,\n ComboboxOption,\n ComboboxOptions,\n} from '@headlessui/react'\n\nimport { Label } from '../Label'\nimport { Badge } from '../Badge'\nimport { Loader } from '../Loader'\nimport { TextContent } from '../TextContent'\nimport { Button } from '../Button'\nimport { MobilePicker } from '../MobilePicker'\n\nimport { isArray } from '../../utils/is-array'\nimport { buildClassName } from '../../utils/build-classname'\nimport { isEmpty } from '../../utils/is-empty'\nimport { useDebounce } from '../../hooks/use-debounce'\n\nimport CheckIcon from '../Icons/Check.svg'\nimport ChevronDownIcon from '../Icons/ChevronDown.svg'\nimport XIcon from '../Icons/X.svg'\nimport CirclePlusIcon from '../Icons/CirclePlus.svg'\nimport type { BaseOption, SelectBoxProps, SelectBoxSize } from './SelectBox.types'\nimport { buildInputClass } from '../Input'\nimport { BodyText } from '../BodyText'\n\nconst sizeClasses: Record<\n SelectBoxSize,\n { input: string; group: string; icon: string; badgeSize: 'sm' | 'md' }\n> = {\n sm: {\n input: 'px-2.5 py-1.5 text-xs leading-5 min-h-[32px]',\n group: 'w-8 text-xs',\n icon: 'size-3.5',\n badgeSize: 'sm',\n },\n md: {\n input: 'px-3.5 py-2 text-sm leading-6 min-h-[38px]',\n group: 'w-10 text-sm',\n icon: 'size-4',\n badgeSize: 'md',\n },\n lg: {\n input: 'px-4 py-2.5 text-base leading-7 min-h-[46px]',\n group: 'w-12 text-base',\n icon: 'size-5',\n badgeSize: 'md',\n },\n}\n\nexport const SelectBox = forwardRef(\n <T extends BaseOption | string = BaseOption>(\n props: SelectBoxProps<T>,\n forwardedRef: React.Ref<HTMLInputElement | HTMLDivElement | null>,\n ) => {\n const {\n labelKey = 'label',\n valueKey = 'value',\n name,\n id = name,\n options = [],\n groups,\n selected,\n size = 'md',\n label = null,\n labelWrapperClass = '',\n labelClass = '',\n labelHint = null,\n disabled = false,\n containerClass = '',\n onChange = () => {},\n placeholder,\n dropdownContainerClass = 'z-20',\n multiple = false,\n maxSelection,\n showSelectAll = false,\n immediate = true,\n showErrorMessage = true,\n error = null,\n helperText,\n leftGroup,\n renderOption,\n async = false,\n searchable = true,\n required = false,\n allowAdd = false,\n addNewText = 'Create',\n onAdd = () => {},\n allowClear = false,\n allowFreeText = false,\n modalDropdown = false,\n noOptionsText = 'No options available',\n } = props\n\n if (props.asBottomSheet || props.mobileMode === 'sheet') {\n return <MobilePicker {...(props as any)} />\n }\n\n const hasError = Boolean(error)\n const [query, setQuery] = useState('')\n const debouncedQuery = useDebounce(query, 500)\n const [optionsLoading, setOptionsLoading] = useState(false)\n\n // Normalize options from options prop or groups prop\n const allOptions = useMemo(() => {\n if (groups?.length) {\n return groups.flatMap((g) => g.options)\n }\n return options\n }, [groups, options])\n\n const shouldShowTypeToSearch = async && !query && !optionsLoading && allOptions.length === 0\n const currentSize = sizeClasses[size] || sizeClasses.md\n\n const baseInputClass = useMemo(\n () => buildInputClass('', { disabled, hasError, size }),\n [disabled, hasError, size],\n )\n\n const chevronIconClass = buildClassName(\n currentSize.icon,\n 'stroke-gray-500 group-data-[hover]:stroke-gray-800',\n 'dark:stroke-gray-300 dark:group-data-[hover]:stroke-gray-100',\n disabled && 'dark:stroke-gray-600 stroke-gray-400',\n )\n\n const inputRef = useRef<HTMLInputElement>(null)\n const containerRef = useRef<HTMLDivElement>(null)\n\n useImperativeHandle(forwardedRef, () => inputRef.current!, [inputRef])\n\n const filteredOptions = useMemo(() => {\n if (query === '' || async) return allOptions\n return allOptions.filter((opt) => {\n const lbl = typeof opt === 'string' ? opt : (opt as BaseOption)[labelKey]\n return lbl?.toLowerCase().includes(query.toLowerCase())\n })\n }, [allOptions, query, async, labelKey])\n\n const filteredGroups = useMemo(() => {\n if (!groups?.length) return null\n if (query === '' || async) return groups\n\n return groups\n .map((g) => ({\n ...g,\n options: g.options.filter((opt) => {\n const lbl = typeof opt === 'string' ? opt : (opt as BaseOption)[labelKey]\n return lbl?.toLowerCase().includes(query.toLowerCase())\n }),\n }))\n .filter((g) => g.options.length > 0)\n }, [groups, query, async, labelKey])\n\n const getDisplayValue = useCallback(\n (opt: T) => {\n return typeof opt === 'string' ? opt : opt[labelKey]\n },\n [labelKey],\n )\n\n const getValue = useCallback(\n (opt: T) => {\n return typeof opt === 'string' ? opt : opt[valueKey]\n },\n [valueKey],\n )\n\n const createFreeTextOption = useCallback(\n (text: string): T => {\n const sample = allOptions[0] || (Array.isArray(selected) ? selected[0] : selected)\n if (\n typeof sample === 'string' ||\n (!sample && typeof labelKey === 'string' && labelKey === 'label')\n ) {\n return text as unknown as T\n }\n return {\n [labelKey]: text,\n [valueKey]: text,\n } as unknown as T\n },\n [allOptions, selected, labelKey, valueKey],\n )\n\n const handleFreeTextCommit = useCallback(\n (queryText: string) => {\n const trimmed = queryText.trim()\n if (!trimmed) return\n\n const existing = allOptions.find((opt) => {\n const display = getDisplayValue(opt)\n return display?.toLowerCase() === trimmed.toLowerCase()\n })\n\n const valueToCommit = existing || createFreeTextOption(trimmed)\n\n if (multiple) {\n const current = isArray(selected) ? selected : []\n const alreadySelected = current.some(\n (item) => getDisplayValue(item)?.toLowerCase() === trimmed.toLowerCase(),\n )\n if (!alreadySelected) {\n if (maxSelection && current.length >= maxSelection) return\n onChange([...current, valueToCommit] as unknown as T[])\n }\n setQuery('')\n } else {\n onChange(valueToCommit)\n setQuery('')\n }\n },\n [\n allOptions,\n getDisplayValue,\n createFreeTextOption,\n multiple,\n selected,\n maxSelection,\n onChange,\n ],\n )\n\n const removeSelection = (idx: number) => {\n if (!isArray(selected)) return\n const next = [...selected]\n next.splice(idx, 1)\n onChange(next)\n inputRef.current?.focus()\n }\n\n const handleOnChangeInternal = useCallback(\n (value: T | T[] | null) => {\n if (value === null) {\n onChange(multiple ? ([] as T[]) : null)\n setQuery('')\n return\n }\n\n if (multiple && Array.isArray(value) && maxSelection && value.length > maxSelection) {\n return\n }\n\n onChange(value as T | T[])\n setQuery('')\n },\n [onChange, multiple, maxSelection],\n )\n\n const comboboxOnChangeWrapper = useCallback(\n (raw: unknown) => {\n if (raw === null || raw === undefined) {\n handleOnChangeInternal(null)\n return\n }\n\n if (Array.isArray(raw)) {\n const allNulls = raw.length > 0 && raw.every((v) => v === null)\n if (allNulls) {\n handleOnChangeInternal([] as unknown as T[])\n return\n }\n handleOnChangeInternal(raw as unknown as T[])\n return\n }\n\n handleOnChangeInternal(raw as unknown as T)\n },\n [handleOnChangeInternal],\n )\n\n const handleAddAndSelect = useCallback(\n async (valueToAdd: string) => {\n try {\n const result = await onAdd(valueToAdd)\n if (result) {\n handleOnChangeInternal(result as unknown as T)\n } else {\n handleOnChangeInternal(valueToAdd as unknown as T)\n }\n } catch (err) {\n console.error('onAdd handler error', err)\n }\n },\n [onAdd, handleOnChangeInternal],\n )\n\n const onSearchRef = useRef(props.onSearch)\n useEffect(() => {\n onSearchRef.current = props.onSearch\n }, [props.onSearch])\n\n const handleSearch = useCallback(async (searchString: string) => {\n try {\n setOptionsLoading(true)\n await onSearchRef.current?.(searchString)\n } catch (err) {\n console.error('Error loading options:', err)\n } finally {\n setOptionsLoading(false)\n }\n }, [])\n\n useEffect(() => {\n if (async && debouncedQuery) handleSearch(debouncedQuery)\n }, [debouncedQuery, async, handleSearch])\n\n const normalizedSelected = useMemo(() => {\n if (multiple) {\n if (Array.isArray(selected)) return selected\n if (selected !== null && selected !== undefined) return [selected as T]\n return [] as T[]\n } else {\n if (Array.isArray(selected)) return selected.length > 0 ? selected[0] : null\n return selected ?? null\n }\n }, [multiple, selected])\n\n const isAllSelected = useMemo(() => {\n if (!multiple || !Array.isArray(normalizedSelected) || !allOptions.length) return false\n return allOptions.length === normalizedSelected.length\n }, [multiple, normalizedSelected, allOptions])\n\n const handleToggleSelectAll = () => {\n if (isAllSelected) {\n onChange([] as unknown as T[])\n } else {\n onChange(allOptions as unknown as T[])\n }\n }\n\n const hasLeftGroup = leftGroup != null && leftGroup !== undefined\n\n return (\n <div\n className={buildClassName('group space-y-2', hasError && 'has-error', containerClass)}\n ref={containerRef}\n >\n {label && (\n <div className={buildClassName('flex items-center justify-between', labelWrapperClass)}>\n <Label className={labelClass} htmlFor={id} aria-required={required}>\n {label}\n </Label>\n {labelHint && <TextContent xsmall>{labelHint}</TextContent>}\n </div>\n )}\n\n <Combobox\n multiple={multiple}\n immediate={immediate}\n name={name}\n value={normalizedSelected as any}\n onChange={comboboxOnChangeWrapper as any}\n onClose={() => setQuery('')}\n disabled={disabled}\n by={(a: any, b: any) => (a && b ? getValue(a) === getValue(b) : a === b)}\n >\n {multiple ? (\n <div\n className={buildClassName(\n baseInputClass,\n 'flex flex-wrap gap-2 peer relative',\n hasLeftGroup ? (size === 'lg' ? 'ps-12' : size === 'sm' ? 'ps-8' : 'ps-10') : '',\n )}\n ref={forwardedRef as any}\n >\n {hasLeftGroup && (\n <span\n className={buildClassName(\n 'absolute left-0 top-0 h-full flex items-center justify-center text-gray-400 dark:text-gray-500',\n currentSize.group,\n )}\n >\n {leftGroup}\n </span>\n )}\n\n {isArray(normalizedSelected) &&\n normalizedSelected?.length > 0 &&\n normalizedSelected.map((option, idx) => (\n <Badge\n key={`${getValue(option)}-${idx}`}\n theme=\"secondary\"\n size={currentSize.badgeSize}\n removable={!disabled}\n onRemove={() => removeSelection(idx)}\n >\n {getDisplayValue(option)}\n </Badge>\n ))}\n\n <ComboboxInput\n className=\"outline-none flex-1 dark:placeholder-gray-400 placeholder-gray-400 bg-transparent\"\n aria-label={name}\n value={query}\n autoComplete=\"off\"\n placeholder={normalizedSelected?.length ? '' : placeholder}\n onChange={(e) => {\n const val = e.target.value\n if (allowFreeText && multiple && val.includes(',')) {\n const parts = val.split(',')\n parts.forEach((p) => {\n if (p.trim()) handleFreeTextCommit(p.trim())\n })\n setQuery('')\n } else {\n setQuery(val)\n }\n }}\n id={id}\n ref={inputRef}\n onKeyDown={(e) => {\n if (allowFreeText && (e.key === 'Enter' || e.key === ',') && query.trim()) {\n e.preventDefault()\n handleFreeTextCommit(query.replace(/,/g, ''))\n } else if (multiple && e.key === 'Backspace' && !query) {\n if (Array.isArray(normalizedSelected) && normalizedSelected.length > 0) {\n removeSelection(normalizedSelected.length - 1)\n }\n }\n }}\n onBlur={() => {\n if (allowFreeText && query.trim()) {\n handleFreeTextCommit(query.replace(/,/g, ''))\n }\n }}\n data-testid=\"combobox-input\"\n />\n\n <ComboboxButton\n className=\"group absolute inset-y-0 right-0 px-2.5 flex items-center justify-center\"\n data-testid=\"combobox-button\"\n >\n <ChevronDownIcon className={chevronIconClass} />\n </ComboboxButton>\n </div>\n ) : (\n <div className=\"relative\" ref={forwardedRef as any}>\n {hasLeftGroup && (\n <span\n className={buildClassName(\n 'absolute left-0 top-0 h-full flex items-center justify-center text-gray-400 dark:text-gray-500 z-10',\n currentSize.group,\n )}\n >\n {leftGroup}\n </span>\n )}\n\n <ComboboxInput\n aria-label={name}\n displayValue={(option: any) => (option ? getDisplayValue(option) : null)}\n autoComplete=\"off\"\n placeholder={placeholder}\n onChange={(event) => setQuery(event.target.value)}\n onKeyDown={(e) => {\n if (allowFreeText && e.key === 'Enter' && query.trim()) {\n e.preventDefault()\n handleFreeTextCommit(query)\n }\n }}\n onBlur={() => {\n if (allowFreeText && query.trim()) {\n handleFreeTextCommit(query)\n }\n }}\n onFocus={() => {\n setQuery('')\n }}\n className={buildClassName(\n baseInputClass,\n hasLeftGroup ? (size === 'lg' ? 'ps-12' : size === 'sm' ? 'ps-8' : 'ps-10') : '',\n )}\n disabled={disabled}\n id={id}\n readOnly={!searchable}\n ref={inputRef}\n data-testid=\"combobox-input\"\n />\n\n {allowClear && !isEmpty(normalizedSelected) && (\n <Button\n size=\"xs\"\n iconOnly\n aria-label=\"Clear selection\"\n theme=\"secondary\"\n variant=\"plain\"\n className=\"group absolute inset-y-0 right-8 h-6 top-2\"\n onClick={() => handleOnChangeInternal(multiple ? ([] as T[]) : null)}\n disabled={disabled}\n data-testid=\"combobox-clear-button\"\n noOutlineOnFocus\n >\n <XIcon className=\"size-4 stroke-gray-500 dark:stroke-gray-300\" />\n </Button>\n )}\n\n <ComboboxButton\n className=\"group absolute inset-y-0 right-0 px-2.5 flex items-center justify-center\"\n data-testid=\"combobox-button\"\n >\n <ChevronDownIcon className={chevronIconClass} />\n </ComboboxButton>\n </div>\n )}\n\n <ComboboxOptions\n anchor={{ to: 'bottom', gap: 5 }}\n as=\"div\"\n modal={modalDropdown}\n className={buildClassName(\n 'w-[var(--input-width)] rounded-lg border border-[var(--ui-border)] bg-white dark:bg-gray-800 p-1 shadow-lg max-h-80 overflow-y-auto z-50 [--anchor-gap:var(--spacing-1)]',\n '[--anchor-max-height:20rem]',\n 'origin-top border transition duration-200 ease-[cubic-bezier(0.4, 0.0, 0.2, 1)] data-[closed]:translate-y-[-15%] data-[closed]:opacity-0',\n dropdownContainerClass,\n )}\n transition\n data-testid=\"combobox-options\"\n >\n {/* Multi-Select \"Select All\" Action Bar */}\n {multiple && showSelectAll && allOptions.length > 0 && (\n <div className=\"pb-1 mb-1 border-b border-[var(--ui-border-muted)] px-3 pt-1 flex items-center justify-between\">\n <button\n type=\"button\"\n onClick={handleToggleSelectAll}\n className=\"text-xs font-semibold text-blue-600 dark:text-blue-400 hover:underline cursor-pointer\"\n >\n {isAllSelected ? 'Deselect All' : 'Select All'}\n </button>\n <span className=\"text-[11px] font-medium text-gray-400\">\n {Array.isArray(normalizedSelected) ? normalizedSelected.length : 0} of{' '}\n {allOptions.length}\n </span>\n </div>\n )}\n\n {optionsLoading ? (\n <BodyText\n data-testid=\"options-loading\"\n className=\"flex items-center justify-center py-2 px-3 select-none\"\n >\n <Loader size=\"sm\" />\n </BodyText>\n ) : shouldShowTypeToSearch ? (\n <BodyText className=\"flex items-center justify-between py-2 px-3 select-none\">\n Type to search...\n </BodyText>\n ) : (\n <div>\n {/* Render Free-Text Option if query does not match an option exactly */}\n {allowFreeText &&\n query.trim() &&\n !allOptions.some(\n (opt) => getDisplayValue(opt)?.toLowerCase() === query.trim().toLowerCase(),\n ) && (\n <ComboboxOption\n key={`freetext-${query.trim()}`}\n value={createFreeTextOption(query.trim()) as any}\n className=\"group flex items-center gap-2 rounded-lg py-1.5 px-3 select-none text-sm data-[focus]:bg-blue-50 dark:data-[focus]:bg-blue-950/40 text-blue-600 dark:text-blue-400 font-medium cursor-pointer w-full\"\n data-testid=\"freetext-option\"\n >\n <span>Use \"{query.trim()}\"</span>\n </ComboboxOption>\n )}\n\n {/* Render Grouped Options */}\n {filteredGroups\n ? filteredGroups.map((grp, gIdx) => (\n <div key={gIdx}>\n <div className=\"text-[11px] font-bold uppercase tracking-wider text-gray-400 dark:text-gray-500 px-3 py-1 select-none\">\n {grp.group}\n </div>\n {grp.options.map((option) => {\n const optVal = getValue(option)\n const isOptSelected = multiple\n ? isArray(normalizedSelected) &&\n normalizedSelected.some((s) => getValue(s) === optVal)\n : normalizedSelected && getValue(normalizedSelected as T) === optVal\n\n return (\n <ComboboxOption\n key={optVal}\n disabled={(option as BaseOption).disabled}\n value={option}\n className=\"group rounded-lg py-1.5 px-3 select-none data-[focus]:bg-gray-100 dark:data-[focus]:bg-white/10 data-disabled:opacity-50 cursor-pointer data-disabled:pointer-events-none\"\n >\n {renderOption ? (\n renderOption(option, Boolean(isOptSelected))\n ) : (\n <div className=\"flex items-center justify-between gap-2 text-gray-900 dark:text-white group-data-[selected]:text-blue-600\">\n <span className=\"text-sm/6\">{getDisplayValue(option)}</span>\n <CheckIcon className=\"invisible size-5 dark:stroke-gray-300 group-data-[selected]:visible\" />\n </div>\n )}\n </ComboboxOption>\n )\n })}\n </div>\n ))\n : /* Render Standard Flat Options */\n filteredOptions.map((option) => {\n const optVal = getValue(option)\n const isOptSelected = multiple\n ? isArray(normalizedSelected) &&\n normalizedSelected.some((s) => getValue(s) === optVal)\n : normalizedSelected && getValue(normalizedSelected as T) === optVal\n\n return (\n <ComboboxOption\n key={optVal}\n disabled={(option as BaseOption).disabled}\n value={option}\n className=\"group rounded-lg py-1.5 px-3 select-none data-[focus]:bg-gray-100 dark:data-[focus]:bg-white/10 data-disabled:opacity-50 cursor-pointer data-disabled:pointer-events-none\"\n >\n {renderOption ? (\n renderOption(option, Boolean(isOptSelected))\n ) : (\n <div className=\"flex items-center justify-between gap-2 text-gray-900 dark:text-white group-data-[selected]:text-blue-600\">\n <span className=\"text-sm/6\">{getDisplayValue(option)}</span>\n <CheckIcon className=\"invisible size-5 dark:stroke-gray-300 group-data-[selected]:visible\" />\n </div>\n )}\n </ComboboxOption>\n )\n })}\n\n {filteredOptions.length === 0 &&\n !filteredGroups?.length &&\n !allowFreeText &&\n !(allowAdd && query.trim()) && (\n <div\n data-testid=\"no-result-found\"\n className=\"flex items-center gap-2 py-1.5 px-3 select-none\"\n >\n <TextContent muted small>\n {noOptionsText}\n </TextContent>\n <TextContent strong small>\n {query}\n </TextContent>\n </div>\n )}\n\n {/* Creatable option (allowAdd) - suppressed when allowFreeText is true */}\n {!allowFreeText && allowAdd && Boolean(query.trim()) && (\n <ComboboxOption\n key={`add-${query.trim()}`}\n value={query}\n className=\"group rounded-lg py-1.5 px-3 cursor-pointer text-gray-700 dark:text-gray-300 data-[focus]:bg-gray-100 dark:data-[focus]:bg-gray-700\"\n onClick={() => void handleAddAndSelect(query)}\n >\n <div className=\"flex items-center gap-2\">\n <CirclePlusIcon className=\"size-4.5\" />\n <TextContent>\n {addNewText} \"{query}\"\n </TextContent>\n </div>\n </ComboboxOption>\n )}\n </div>\n )}\n </ComboboxOptions>\n </Combobox>\n\n {showErrorMessage && error && (\n <div className=\"mt-1\">\n <TextContent error small>\n {error}\n </TextContent>\n </div>\n )}\n\n {!error && helperText && (\n <div className=\"mt-1\">\n <TextContent muted small>\n {helperText}\n </TextContent>\n </div>\n )}\n </div>\n )\n },\n)\n\nSelectBox.displayName = 'SelectBox'\n","import { forwardRef, type ElementType } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { SkeletonComponent, SkeletonProps } from './Skeleton.types'\nimport type { PolymorphicRef } from '../common-type'\n\nconst VARIANT_CLASS: Record<string, string> = {\n text: 'rounded-md h-4 w-full my-1',\n circular: 'rounded-full shrink-0',\n rectangular: 'rounded-none w-full h-24',\n rounded: 'rounded-xl w-full h-24',\n}\n\nconst ANIMATION_CLASS: Record<string, string> = {\n pulse: 'animate-pulse bg-gray-200 dark:bg-gray-700',\n wave: 'bg-gradient-to-r from-gray-200 via-gray-100 to-gray-200 dark:from-gray-800 dark:via-gray-700 dark:to-gray-800 bg-[length:200%_100%] animate-[shimmer_1.5s_infinite]',\n none: 'bg-gray-200 dark:bg-gray-700',\n}\n\nexport const Skeleton = forwardRef((props: any, ref: any) => {\n const {\n as,\n variant = 'text',\n animation = 'pulse',\n width,\n height,\n borderRadius,\n className,\n style: customStyle,\n ...restProps\n } = props as SkeletonProps\n\n const Component = as || 'div'\n\n const inlineStyles: React.CSSProperties = {\n ...(width !== undefined ? { width: typeof width === 'number' ? `${width}px` : width } : {}),\n ...(height !== undefined\n ? { height: typeof height === 'number' ? `${height}px` : height }\n : {}),\n ...(borderRadius !== undefined\n ? { borderRadius: typeof borderRadius === 'number' ? `${borderRadius}px` : borderRadius }\n : {}),\n ...customStyle,\n }\n\n return (\n <Component\n ref={ref as PolymorphicRef<ElementType>}\n aria-hidden=\"true\"\n style={inlineStyles}\n className={buildClassName(\n 'block select-none pointer-events-none',\n VARIANT_CLASS[variant],\n ANIMATION_CLASS[animation],\n className,\n )}\n data-testid=\"skeleton\"\n {...restProps}\n />\n )\n}) as SkeletonComponent\n\nSkeleton.displayName = 'Skeleton'\n","import React, { forwardRef, useId } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport { Label } from '../Label'\nimport { TextContent } from '../TextContent'\nimport type { QuantityStepperProps, QuantityStepperSize } from './QuantityStepper.types'\n\nconst MinusIcon = ({ className }: { className?: string }) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n)\n\nconst PlusIcon = ({ className }: { className?: string }) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n)\n\nconst CONTAINER_SIZE_CLASS: Record<QuantityStepperSize, string> = {\n sm: 'h-8 text-xs',\n md: 'h-10 text-sm',\n lg: 'h-12 text-base',\n}\n\nconst BUTTON_SIZE_CLASS: Record<QuantityStepperSize, string> = {\n sm: 'w-7.5 h-full',\n md: 'w-9.5 h-full',\n lg: 'w-11 h-full',\n}\n\nconst ICON_SIZE_CLASS: Record<QuantityStepperSize, string> = {\n sm: 'size-3.5',\n md: 'size-4',\n lg: 'size-4.5',\n}\n\nconst INPUT_TEXT_CLASS: Record<QuantityStepperSize, string> = {\n sm: 'w-12 text-xs',\n md: 'w-16 text-sm',\n lg: 'w-20 text-base',\n}\n\nexport const QuantityStepper = forwardRef<HTMLInputElement, QuantityStepperProps>((props, ref) => {\n const {\n value,\n onChange,\n min = 0,\n max = 99999,\n step = 1,\n label,\n labelHint,\n helperText,\n error,\n showErrorMessage = true,\n size = 'md',\n prefix,\n suffix,\n disabled = false,\n className,\n onFocus,\n id: customId,\n ...restProps\n } = props\n\n const autoId = useId()\n const stepperId = customId || `stepper-${autoId}`\n const hasError = Boolean(error)\n\n const handleDecrement = () => {\n if (disabled) return\n const next = Math.max(min, Number((value - step).toFixed(4)))\n onChange(next)\n }\n\n const handleIncrement = () => {\n if (disabled) return\n const next = Math.min(max, Number((value + step).toFixed(4)))\n onChange(next)\n }\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n if (raw === '') {\n onChange(0)\n return\n }\n const parsed = parseFloat(raw)\n if (!isNaN(parsed)) {\n onChange(Math.max(min, Math.min(max, parsed)))\n }\n }\n\n const isAtMin = disabled || value <= min\n const isAtMax = disabled || value >= max\n\n return (\n <div className={buildClassName('flex flex-col gap-1 inline-flex', className)}>\n {/* Label Header Row matching Input */}\n {label && (\n <div className=\"flex items-center justify-between gap-2\">\n <Label htmlFor={stepperId} className={disabled ? 'opacity-70 cursor-not-allowed' : ''}>\n {label}\n </Label>\n {labelHint && <TextContent xsmall>{labelHint}</TextContent>}\n </div>\n )}\n\n {/* Input Container Frame matching Input outline & focus ring */}\n <div\n className={buildClassName(\n 'inline-flex items-center rounded-lg shadow-2xs transition-all duration-150',\n 'outline outline-1 -outline-offset-1',\n CONTAINER_SIZE_CLASS[size],\n hasError\n ? '!outline-red-500 !ring-1 !ring-red-500/50 dark:!outline-red-500'\n : 'outline-[var(--ui-border)]',\n disabled\n ? 'pointer-events-none bg-gray-100 dark:bg-gray-800 outline-[var(--ui-border-muted)]'\n : 'bg-white dark:bg-gray-700',\n 'focus-within:outline-[var(--ui-focus-ring)] focus-within:outline-2 focus-within:-outline-offset-2',\n )}\n data-testid=\"quantity-stepper\"\n >\n {/* Decrement Button */}\n <button\n type=\"button\"\n disabled={isAtMin}\n onClick={handleDecrement}\n tabIndex={-1}\n aria-label=\"Decrease quantity\"\n className={buildClassName(\n 'flex items-center justify-center rounded-l-lg text-gray-500 hover:text-gray-800 dark:text-gray-400 dark:hover:text-white transition-colors shrink-0',\n BUTTON_SIZE_CLASS[size],\n isAtMin\n ? 'opacity-30 hover:bg-transparent cursor-not-allowed'\n : 'cursor-pointer hover:bg-gray-100/80 dark:hover:bg-gray-600/60',\n )}\n data-testid=\"stepper-decrement\"\n >\n <MinusIcon className={ICON_SIZE_CLASS[size]} />\n </button>\n\n {prefix && (\n <span className=\"pl-1 text-gray-400 dark:text-gray-400 select-none text-xs shrink-0\">\n {prefix}\n </span>\n )}\n\n {/* Number Input */}\n <input\n ref={ref}\n id={stepperId}\n type=\"number\"\n min={min}\n max={max}\n step={step}\n value={value === 0 ? '' : value}\n placeholder=\"0\"\n disabled={disabled}\n onFocus={(e) => {\n e.target.select()\n onFocus?.(e)\n }}\n onChange={handleInputChange}\n className={buildClassName(\n 'text-center font-semibold text-gray-900 dark:text-white bg-transparent focus:outline-none [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none',\n INPUT_TEXT_CLASS[size],\n )}\n data-testid=\"stepper-input\"\n {...restProps}\n />\n\n {suffix && (\n <span className=\"pr-1 text-gray-500 dark:text-gray-400 select-none text-xs shrink-0\">\n {suffix}\n </span>\n )}\n\n {/* Increment Button */}\n <button\n type=\"button\"\n disabled={isAtMax}\n onClick={handleIncrement}\n tabIndex={-1}\n aria-label=\"Increase quantity\"\n className={buildClassName(\n 'flex items-center justify-center rounded-r-lg text-gray-500 hover:text-gray-800 dark:text-gray-400 dark:hover:text-white transition-colors shrink-0',\n BUTTON_SIZE_CLASS[size],\n isAtMax\n ? 'opacity-30 hover:bg-transparent cursor-not-allowed'\n : 'cursor-pointer hover:bg-gray-100/80 dark:hover:bg-gray-600/60',\n )}\n data-testid=\"stepper-increment\"\n >\n <PlusIcon className={ICON_SIZE_CLASS[size]} />\n </button>\n </div>\n\n {/* Footer Row matching Input error / helper text */}\n {(showErrorMessage && error) || helperText ? (\n <div className=\"flex items-center justify-between gap-2 mt-0.5\">\n {showErrorMessage && error ? (\n <TextContent xsmall className=\"text-red-500 dark:text-red-400 font-medium\">\n {error}\n </TextContent>\n ) : helperText ? (\n <TextContent xsmall muted>\n {helperText}\n </TextContent>\n ) : null}\n </div>\n ) : null}\n </div>\n )\n})\n\nQuantityStepper.displayName = 'QuantityStepper'\n","import React, { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { SegmentedControlProps } from './SegmentedControl.types'\n\nconst SIZE_CONTAINER_CLASS = {\n sm: 'p-0.5 gap-0.5 rounded-lg text-xs',\n md: 'p-1 gap-1 rounded-xl text-sm',\n lg: 'p-1.5 gap-1.5 rounded-xl text-base',\n}\n\nconst SIZE_OPTION_CLASS = {\n sm: 'px-2 py-1 text-xs font-medium rounded-md',\n md: 'px-3 py-1.5 text-sm font-semibold rounded-lg',\n lg: 'px-4 py-2 text-base font-semibold rounded-lg',\n}\n\nconst SIZE_ICON_CLASS = {\n sm: 'size-3.5',\n md: 'size-4',\n lg: 'size-5',\n}\n\nexport const SegmentedControl = forwardRef<HTMLDivElement, SegmentedControlProps>((props, ref) => {\n const {\n options,\n value,\n onChange,\n disabled = false,\n size = 'md',\n fullWidth = false,\n className,\n ...restProps\n } = props\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>, currentIndex: number) => {\n const enabledOptions = options.filter((opt) => !opt.disabled && !disabled)\n if (enabledOptions.length === 0) return\n\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault()\n const currentPos = enabledOptions.findIndex(\n (opt) => opt.value === options[currentIndex].value,\n )\n const nextPos = (currentPos + 1) % enabledOptions.length\n onChange(enabledOptions[nextPos].value)\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault()\n const currentPos = enabledOptions.findIndex(\n (opt) => opt.value === options[currentIndex].value,\n )\n const prevPos = (currentPos - 1 + enabledOptions.length) % enabledOptions.length\n onChange(enabledOptions[prevPos].value)\n } else if (e.key === 'Home') {\n e.preventDefault()\n onChange(enabledOptions[0].value)\n } else if (e.key === 'End') {\n e.preventDefault()\n onChange(enabledOptions[enabledOptions.length - 1].value)\n }\n }\n\n return (\n <div\n ref={ref}\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n className={buildClassName(\n 'inline-flex items-center border border-[var(--ui-border)] bg-gray-100/80 dark:bg-gray-800/80',\n SIZE_CONTAINER_CLASS[size],\n fullWidth ? 'w-full flex' : '',\n disabled ? 'opacity-60 cursor-not-allowed' : '',\n className,\n )}\n data-testid=\"segmented-control\"\n {...restProps}\n >\n {options.map((option, index) => {\n const isSelected = value === option.value\n const isOptionDisabled = disabled || option.disabled\n\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-disabled={isOptionDisabled}\n tabIndex={isSelected && !isOptionDisabled ? 0 : -1}\n disabled={isOptionDisabled}\n title={option.title}\n onClick={() => {\n if (!isOptionDisabled) {\n onChange(option.value)\n }\n }}\n onKeyDown={(e) => handleKeyDown(e, index)}\n className={buildClassName(\n 'inline-flex items-center justify-center gap-1.5 transition-all duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary-ring)]',\n SIZE_OPTION_CLASS[size],\n fullWidth ? 'flex-1' : '',\n isOptionDisabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer',\n isSelected\n ? 'bg-white text-[var(--ui-primary)] dark:bg-gray-700 dark:text-blue-400 shadow-xs font-semibold'\n : 'text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100',\n )}\n data-testid={`segmented-option-${option.value}`}\n >\n {option.icon && (\n <span\n className={buildClassName(\n 'shrink-0 inline-flex items-center justify-center',\n SIZE_ICON_CLASS[size],\n )}\n >\n {option.icon}\n </span>\n )}\n <span>{option.label}</span>\n </button>\n )\n })}\n </div>\n )\n})\n\nSegmentedControl.displayName = 'SegmentedControl'\n","import { forwardRef } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport type { StatusPillProps } from './StatusPill.types'\n\nconst THEME_PILL_CLASS: Record<string, { bg: string; dot: string }> = {\n success: {\n bg: 'bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 border-emerald-500/20 dark:border-emerald-500/30',\n dot: 'bg-emerald-500',\n },\n warning: {\n bg: 'bg-amber-500/10 text-amber-700 dark:text-amber-300 border-amber-500/20 dark:border-amber-500/30',\n dot: 'bg-amber-500',\n },\n danger: {\n bg: 'bg-rose-500/10 text-rose-700 dark:text-rose-300 border-rose-500/20 dark:border-rose-500/30',\n dot: 'bg-rose-500',\n },\n info: {\n bg: 'bg-blue-500/10 text-blue-700 dark:text-blue-300 border-blue-500/20 dark:border-blue-500/30',\n dot: 'bg-blue-500',\n },\n secondary: {\n bg: 'bg-gray-500/10 text-gray-600 dark:text-gray-400 border-gray-500/20 dark:border-gray-500/30',\n dot: 'bg-gray-400',\n },\n}\n\nconst SIZE_CLASS: Record<string, string> = {\n sm: 'px-2.5 py-0.5 text-xs',\n md: 'px-3 py-1 text-sm',\n}\n\nconst DOT_SIZE_CLASS: Record<string, string> = {\n sm: 'size-1.5',\n md: 'size-2',\n}\n\nexport const StatusPill = forwardRef<HTMLSpanElement, StatusPillProps>((props, ref) => {\n const {\n theme = 'secondary',\n size = 'sm',\n dot = true,\n pulse = false,\n className,\n children,\n ...restProps\n } = props\n\n const style = THEME_PILL_CLASS[theme] ?? THEME_PILL_CLASS.secondary\n\n return (\n <span\n ref={ref}\n className={buildClassName(\n 'inline-flex items-center gap-1.5 rounded-full border font-semibold whitespace-nowrap transition-colors',\n SIZE_CLASS[size],\n style.bg,\n className,\n )}\n data-testid={`status-pill-${theme}`}\n {...restProps}\n >\n {dot && (\n <span\n className={buildClassName(\n 'shrink-0 rounded-full',\n DOT_SIZE_CLASS[size],\n style.dot,\n pulse ? 'animate-pulse' : '',\n )}\n data-testid=\"status-pill-dot\"\n aria-hidden=\"true\"\n />\n )}\n <span>{children}</span>\n </span>\n )\n})\n\nStatusPill.displayName = 'StatusPill'\n","import { forwardRef, useState } from 'react'\nimport { buildClassName } from '../../utils/build-classname'\nimport { Drawer } from '../Drawer'\nimport type { StickyActionBarProps } from './StickyActionBar.types'\n\nconst ChevronUpIcon = ({ className }: { className?: string }) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden=\"true\"\n >\n <polyline points=\"18 15 12 9 6 15\" />\n </svg>\n)\n\nexport const StickyActionBar = forwardRef<HTMLDivElement, StickyActionBarProps>((props, ref) => {\n const {\n summaryContent,\n actionsContent,\n drawerContent,\n drawerTitle = 'Summary Details',\n position = 'fixed',\n containerMaxWidth = 'max-w-5xl',\n className,\n ...restProps\n } = props\n\n const [isDrawerOpen, setIsDrawerOpen] = useState(false)\n\n const positionClass =\n position === 'fixed'\n ? 'fixed bottom-0 left-0 right-0 z-30'\n : position === 'sticky'\n ? 'sticky bottom-0 z-30'\n : 'relative z-10'\n\n return (\n <>\n <div\n ref={ref}\n className={buildClassName(\n positionClass,\n 'border-t border-[var(--ui-border)] bg-white/90 p-3.5 backdrop-blur-md shadow-lg dark:bg-gray-900/90 transition-all',\n className,\n )}\n data-testid=\"sticky-action-bar\"\n {...restProps}\n >\n <div\n className={buildClassName(\n 'mx-auto flex items-center justify-between gap-3',\n containerMaxWidth,\n )}\n >\n {/* Summary Content Slot */}\n {summaryContent && (\n <div className=\"flex items-center gap-2\">\n {drawerContent ? (\n <button\n type=\"button\"\n onClick={() => setIsDrawerOpen(true)}\n className=\"flex items-center gap-2 text-left transition-opacity hover:opacity-80 cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-primary-ring)] rounded-lg p-1 -m-1\"\n aria-label=\"Expand summary details\"\n data-testid=\"summary-trigger\"\n >\n <div>{summaryContent}</div>\n <ChevronUpIcon className=\"size-4 text-[var(--ui-primary)] dark:text-blue-400 shrink-0\" />\n </button>\n ) : (\n <div>{summaryContent}</div>\n )}\n </div>\n )}\n\n {/* Actions Stack Slot */}\n {actionsContent && (\n <div className=\"flex items-center gap-2 shrink-0 ml-auto\" data-testid=\"actions-stack\">\n {actionsContent}\n </div>\n )}\n </div>\n </div>\n\n {/* Optional Expandable Details Drawer */}\n {drawerContent && (\n <Drawer\n isOpen={isDrawerOpen}\n onClose={() => setIsDrawerOpen(false)}\n align=\"bottom\"\n size=\"full\"\n title={drawerTitle}\n showBackButton\n contentClass=\"px-4 pb-6 max-h-[calc(100svh-6rem)] overflow-y-auto\"\n >\n {drawerContent}\n </Drawer>\n )}\n </>\n )\n})\n\nStickyActionBar.displayName = 'StickyActionBar'\n","import React, { Fragment } from 'react'\nimport { Tab, TabGroup, TabList, TabPanels, TabPanel } from '@headlessui/react'\nimport { buildClassName } from '../../utils/build-classname'\nimport { TabsProps } from './Tabs.types'\n\nexport const Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultIndex = 0,\n selectedIndex,\n onChange,\n variant = 'underline',\n orientation = 'horizontal',\n stretch = false,\n className = '',\n listClass = '',\n panelsClass = '',\n}) => {\n const isVertical = orientation === 'vertical'\n\n return (\n <TabGroup\n defaultIndex={defaultIndex}\n selectedIndex={selectedIndex}\n onChange={onChange}\n vertical={isVertical}\n className={buildClassName(\n isVertical && 'flex gap-4',\n stretch && !isVertical && 'w-full',\n className,\n )}\n >\n <TabList\n className={buildClassName(\n isVertical ? 'flex flex-col gap-1' : 'flex gap-2',\n stretch && !isVertical && 'w-full',\n listClass,\n )}\n >\n {tabs.map((tab, idx) => (\n <Tab key={tab.id ?? idx} disabled={tab.disabled} as={Fragment}>\n {({ selected }) => (\n <button\n disabled={tab.disabled}\n className={buildTabClass({\n selected,\n variant,\n stretch,\n isVertical,\n tabClass: tab.tabClass,\n })}\n >\n {tab.icon && <span className=\"inline-flex shrink-0\">{tab.icon}</span>}\n {tab.label}\n </button>\n )}\n </Tab>\n ))}\n </TabList>\n\n <TabPanels className={buildClassName(isVertical ? 'flex-1' : 'mt-3', panelsClass)}>\n {tabs.map((tab, idx) => (\n <TabPanel\n key={tab.id ?? idx}\n className={\n tab.panelClass !== undefined\n ? tab.panelClass\n : 'rounded-lg bg-white dark:bg-gray-800 p-4 shadow-sm'\n }\n >\n {tab.content}\n </TabPanel>\n ))}\n </TabPanels>\n </TabGroup>\n )\n}\n\nfunction buildTabClass({\n selected,\n variant,\n stretch,\n isVertical,\n tabClass,\n}: {\n selected: boolean\n variant: 'underline' | 'segmented' | 'solid'\n stretch?: boolean\n isVertical?: boolean\n tabClass?: string\n}) {\n const base = buildClassName(\n 'inline-flex items-center gap-1.5 text-sm font-medium transition focus:outline-none focus-visible:outline-none focus:ring-0 select-none',\n 'disabled:opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none',\n stretch && !isVertical && 'flex-1 justify-center',\n )\n\n let variantClass: string\n\n switch (variant) {\n case 'underline':\n variantClass = isVertical\n ? buildClassName(\n 'px-3 py-2 w-full text-left border-l-2',\n selected\n ? 'border-[var(--ui-primary)] text-gray-900 dark:text-white'\n : 'border-transparent text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white hover:border-[var(--ui-border)]',\n )\n : buildClassName(\n 'px-3 py-1.5 relative text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white',\n selected &&\n 'text-gray-900 dark:text-white after:absolute after:z-10 after:left-0 after:right-0 after:-bottom-1 after:h-0.5 after:bg-[var(--ui-primary)]',\n )\n break\n\n case 'segmented':\n variantClass = buildClassName(\n 'px-3 py-1.5 rounded-lg',\n selected\n ? 'bg-[var(--ui-primary)] text-white'\n : 'text-gray-600 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700',\n )\n break\n\n case 'solid':\n variantClass = buildClassName(\n 'px-3 py-1.5 rounded-md',\n selected\n ? 'bg-gray-900 dark:bg-gray-700 text-white'\n : 'bg-gray-200 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-300 dark:hover:bg-gray-700',\n )\n break\n }\n\n return buildClassName(base, variantClass, tabClass)\n}\n","import React, { useState, useRef } from 'react'\nimport type { SwipeableTabsProps, SwipeableTabItem } from './SwipeableTabs.types'\nimport { buildClassName } from '../../utils/build-classname'\n\nexport function SwipeableTabs({\n items,\n activeId: externalActiveId,\n defaultActiveId,\n onChange,\n swipeable = true,\n threshold = 50,\n headerVariant = 'default',\n containerClass = '',\n headerClass = '',\n contentClass = '',\n}: SwipeableTabsProps) {\n const [internalActiveId, setInternalActiveId] = useState<string>(\n defaultActiveId || items[0]?.id || '',\n )\n\n const activeId = externalActiveId !== undefined ? externalActiveId : internalActiveId\n const activeIndex = Math.max(\n 0,\n items.findIndex((item) => item.id === activeId),\n )\n\n const touchStartX = useRef<number>(0)\n const touchStartY = useRef<number>(0)\n const touchDeltaX = useRef<number>(0)\n const isSwipingHorizontal = useRef<boolean | null>(null)\n\n const handleTabChange = (item: SwipeableTabItem) => {\n if (item.disabled) return\n setInternalActiveId(item.id)\n onChange?.(item.id)\n }\n\n const handleTouchStart = (e: React.TouchEvent<HTMLDivElement>) => {\n if (!swipeable) return\n touchStartX.current = e.touches[0].clientX\n touchStartY.current = e.touches[0].clientY\n touchDeltaX.current = 0\n isSwipingHorizontal.current = null\n }\n\n const handleTouchMove = (e: React.TouchEvent<HTMLDivElement>) => {\n if (!swipeable) return\n const currentX = e.touches[0].clientX\n const currentY = e.touches[0].clientY\n const deltaX = currentX - touchStartX.current\n const deltaY = currentY - touchStartY.current\n\n if (isSwipingHorizontal.current === null) {\n if (Math.abs(deltaX) > 8 || Math.abs(deltaY) > 8) {\n isSwipingHorizontal.current = Math.abs(deltaX) > Math.abs(deltaY)\n }\n }\n\n if (isSwipingHorizontal.current) {\n touchDeltaX.current = deltaX\n }\n }\n\n const handleTouchEnd = () => {\n if (!swipeable || !isSwipingHorizontal.current) return\n\n const deltaX = touchDeltaX.current\n if (Math.abs(deltaX) >= threshold) {\n if (deltaX < 0 && activeIndex < items.length - 1) {\n // Swiped Left -> Go to Next Tab\n const nextItem = items[activeIndex + 1]\n if (nextItem && !nextItem.disabled) {\n handleTabChange(nextItem)\n }\n } else if (deltaX > 0 && activeIndex > 0) {\n // Swiped Right -> Go to Previous Tab\n const prevItem = items[activeIndex - 1]\n if (prevItem && !prevItem.disabled) {\n handleTabChange(prevItem)\n }\n }\n }\n\n touchDeltaX.current = 0\n isSwipingHorizontal.current = null\n }\n\n return (\n <div\n className={buildClassName('w-full flex flex-col', containerClass)}\n data-testid=\"swipeable-tabs\"\n >\n {/* Header Tabs Navigation Bar */}\n <div\n className={buildClassName(\n 'w-full flex items-center gap-1 border-b border-[var(--ui-border)] overflow-x-auto no-scrollbar select-none',\n headerVariant === 'segmented' &&\n 'p-1 bg-gray-100 dark:bg-gray-800/80 rounded-2xl border-none gap-0',\n headerClass,\n )}\n data-testid=\"swipeable-tabs-header\"\n >\n {items.map((item) => {\n const isActive = item.id === activeId\n\n if (headerVariant === 'segmented') {\n return (\n <button\n key={item.id}\n type=\"button\"\n disabled={item.disabled}\n onClick={() => handleTabChange(item)}\n className={buildClassName(\n 'flex-1 flex items-center justify-center gap-1.5 py-1.5 px-3 rounded-xl text-xs font-semibold transition-all duration-150 cursor-pointer',\n item.disabled && 'opacity-40 cursor-not-allowed pointer-events-none',\n isActive\n ? 'bg-white dark:bg-gray-900 text-gray-900 dark:text-white shadow-xs'\n : 'text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white',\n )}\n data-testid={`swipeable-tab-btn-${item.id}`}\n >\n {item.icon && <span className=\"text-sm\">{item.icon}</span>}\n <span>{item.label}</span>\n {item.badge !== undefined && (\n <span className=\"px-1.5 py-0.5 text-[10px] rounded-full bg-blue-100 dark:bg-blue-950 text-blue-600 dark:text-blue-400 font-bold\">\n {item.badge}\n </span>\n )}\n </button>\n )\n }\n\n if (headerVariant === 'pills') {\n return (\n <button\n key={item.id}\n type=\"button\"\n disabled={item.disabled}\n onClick={() => handleTabChange(item)}\n className={buildClassName(\n 'flex items-center justify-center gap-1.5 py-1.5 px-3.5 rounded-full text-xs font-semibold transition-all duration-150 cursor-pointer whitespace-nowrap',\n item.disabled && 'opacity-40 cursor-not-allowed pointer-events-none',\n isActive\n ? 'bg-blue-600 text-white shadow-xs'\n : 'bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700',\n )}\n data-testid={`swipeable-tab-btn-${item.id}`}\n >\n {item.icon && <span className=\"text-sm\">{item.icon}</span>}\n <span>{item.label}</span>\n {item.badge !== undefined && (\n <span className=\"px-1.5 py-0.5 text-[10px] rounded-full bg-white/20 text-current font-bold\">\n {item.badge}\n </span>\n )}\n </button>\n )\n }\n\n // Default Underline Tab Header\n return (\n <button\n key={item.id}\n type=\"button\"\n disabled={item.disabled}\n onClick={() => handleTabChange(item)}\n className={buildClassName(\n 'flex items-center justify-center gap-1.5 py-2.5 px-4 text-xs font-semibold transition-all duration-150 cursor-pointer relative whitespace-nowrap border-b-2 -mb-px',\n item.disabled && 'opacity-40 cursor-not-allowed pointer-events-none',\n isActive\n ? 'border-blue-600 dark:border-blue-400 text-blue-600 dark:text-blue-400'\n : 'border-transparent text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white',\n )}\n data-testid={`swipeable-tab-btn-${item.id}`}\n >\n {item.icon && <span className=\"text-sm\">{item.icon}</span>}\n <span>{item.label}</span>\n {item.badge !== undefined && (\n <span className=\"px-1.5 py-0.5 text-[10px] rounded-full bg-blue-100 dark:bg-blue-950 text-blue-600 dark:text-blue-400 font-bold\">\n {item.badge}\n </span>\n )}\n </button>\n )\n })}\n </div>\n\n {/* Swipeable Viewport Content Area */}\n <div\n className={buildClassName('w-full overflow-hidden relative touch-pan-y', contentClass)}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n data-testid=\"swipeable-tabs-viewport\"\n >\n <div\n className=\"flex w-full transition-transform duration-300 ease-out\"\n style={{ transform: `translateX(-${activeIndex * 100}%)` }}\n data-testid=\"swipeable-tabs-track\"\n >\n {items.map((item) => (\n <div\n key={item.id}\n className=\"w-full shrink-0 min-w-full\"\n data-testid={`swipeable-tab-panel-${item.id}`}\n >\n {item.content}\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nSwipeableTabs.displayName = 'SwipeableTabs'\n","import {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n type ChangeEvent,\n} from 'react'\nimport { Label } from '../Label'\nimport { isEmpty } from '../../utils/is-empty'\nimport { buildClassName } from '../../utils/build-classname'\nimport { TextContent } from '../TextContent'\nimport type { TextareaProps, TextareaResize, TextareaSize } from './Textarea.types'\n\nconst sizeClasses: Record<TextareaSize, { textarea: string; text: string }> = {\n sm: {\n textarea: 'px-2.5 py-1.5 text-xs leading-5 min-h-[60px]',\n text: 'text-xs',\n },\n md: {\n textarea: 'px-3.5 py-2 text-sm leading-6 min-h-[80px]',\n text: 'text-sm',\n },\n lg: {\n textarea: 'px-4 py-2.5 text-base leading-7 min-h-[100px]',\n text: 'text-base',\n },\n}\n\nconst resizeClasses: Record<TextareaResize, string> = {\n none: 'resize-none',\n vertical: 'resize-y',\n horizontal: 'resize-x',\n both: 'resize',\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>((props, ref) => {\n const {\n name,\n id = name,\n label = null,\n labelHint = null,\n className = '',\n labelClass = '',\n labelWrapperClass = '',\n containerClass = '',\n error,\n showErrorMessage = true,\n rightGroup = null,\n leftGroup = null,\n size = 'md',\n autoSize = false,\n showCount = false,\n helperText,\n resize = 'vertical',\n value,\n defaultValue,\n onChange,\n maxLength,\n ...inputProps\n } = props\n\n const innerRef = useRef<HTMLTextAreaElement>(null)\n useImperativeHandle(ref, () => innerRef.current as HTMLTextAreaElement)\n\n const [uncontrolledValue, setUncontrolledValue] = useState<string>(String(defaultValue ?? ''))\n\n const isControlled = value !== undefined\n const currentVal = isControlled ? String(value ?? '') : uncontrolledValue\n const charLength = currentVal.length\n\n // Handle Auto-Resize behavior\n useEffect(() => {\n if (autoSize && innerRef.current) {\n innerRef.current.style.height = 'auto'\n innerRef.current.style.height = `${innerRef.current.scrollHeight}px`\n }\n }, [autoSize, currentVal])\n\n const handleTextareaChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n setUncontrolledValue(e.target.value)\n }\n onChange?.(e)\n }\n\n const hasError = !isEmpty(error)\n const hasRightGroup = rightGroup != null && rightGroup !== undefined\n const hasLeftGroup = leftGroup != null && leftGroup !== undefined\n const currentSize = sizeClasses[size] || sizeClasses.md\n\n return (\n <div className={buildClassName('group', hasError && 'has-error', containerClass)}>\n {label && (\n <div\n className={buildClassName('flex items-center justify-between mb-1.5', labelWrapperClass)}\n >\n <Label className={labelClass} htmlFor={id}>\n {label}\n </Label>\n {labelHint && <TextContent xsmall>{labelHint}</TextContent>}\n </div>\n )}\n <div className=\"relative\">\n {hasLeftGroup && (\n <span className=\"absolute top-2.5 left-3 flex items-center justify-center text-gray-400 dark:text-gray-500\">\n {leftGroup}\n </span>\n )}\n <textarea\n ref={innerRef}\n autoComplete=\"off\"\n {...inputProps}\n value={value}\n defaultValue={defaultValue}\n onChange={handleTextareaChange}\n maxLength={maxLength}\n name={name}\n id={id}\n className={buildClassName(\n 'transition-all duration-150',\n 'block w-full rounded-lg bg-white',\n currentSize.textarea,\n autoSize ? 'resize-none overflow-hidden' : resizeClasses[resize],\n 'text-gray-900 outline outline-1 -outline-offset-1',\n hasError\n ? '!outline-red-500 !ring-1 !ring-red-500/50 dark:!outline-red-500'\n : 'outline-[var(--ui-border)]',\n 'focus:outline-[var(--ui-focus-ring)] focus:outline-2 focus:-outline-offset-2',\n 'dark:bg-gray-700 dark:placeholder-gray-400 placeholder:text-gray-400 dark:text-white',\n 'disabled:pointer-events-none disabled:bg-gray-100 disabled:outline-[var(--ui-border-muted)]',\n 'dark:disabled:bg-gray-800 dark:disabled:text-gray-600 dark:disabled:placeholder-gray-600 dark:disabled:outline-[var(--ui-border-muted)]',\n hasRightGroup ? 'pe-10' : '',\n hasLeftGroup ? 'ps-10' : '',\n className,\n )}\n />\n {hasRightGroup && (\n <span className=\"absolute end-3 top-2.5 flex items-center justify-center text-gray-400 dark:text-gray-500\">\n {rightGroup}\n </span>\n )}\n </div>\n\n {/* Footer Row: Error / Helper Text & Live Character Count */}\n {(showErrorMessage && error) || helperText || showCount ? (\n <div className=\"mt-1.5 flex items-center justify-between gap-2 text-xs\">\n <div className=\"min-w-0 flex-1\">\n {showErrorMessage && error ? (\n <TextContent error small>\n {error}\n </TextContent>\n ) : helperText ? (\n <TextContent muted small>\n {helperText}\n </TextContent>\n ) : null}\n </div>\n\n {showCount && (\n <span\n className={buildClassName(\n 'text-[11px] font-medium shrink-0 ml-auto',\n maxLength && charLength >= maxLength\n ? 'text-red-500 font-semibold'\n : 'text-gray-400 dark:text-gray-500',\n )}\n >\n {charLength}\n {maxLength ? ` / ${maxLength}` : ''}\n </span>\n )}\n </div>\n ) : null}\n </div>\n )\n})\n\nTextarea.displayName = 'Textarea'\n","import React, { useEffect, useState } from 'react'\nimport { Transition } from '@headlessui/react'\nimport XIcon from '../Icons/X.svg'\nimport CheckCircle from '../Icons/CircleCheck.svg'\nimport AlertCircle from '../Icons/CircleAlert.svg'\nimport Info from '../Icons/Info.svg'\nimport AlertTriangle from '../Icons/TriangleAlert.svg'\n\nimport { Button } from '../Button'\nimport { TextContent } from '../TextContent'\nimport { buildClassName } from '../../utils/build-classname'\n\nimport type { ToastProps, ToastType, ToastVariant } from './Toast.types'\n\n/**\n * Icons for each toast type\n */\nconst iconMap: Record<ToastType, React.ReactNode> = {\n success: <CheckCircle className=\"size-5 text-[var(--ui-success)]\" />,\n error: <AlertCircle className=\"size-5 text-[var(--ui-danger)]\" />,\n info: <Info className=\"size-5 text-[var(--ui-info)]\" />,\n warning: <AlertTriangle className=\"size-5 text-[var(--ui-warning)]\" />,\n}\n\nconst filledIconMap: Record<ToastType, React.ReactNode> = {\n success: <CheckCircle className=\"size-5 text-white\" />,\n error: <AlertCircle className=\"size-5 text-white\" />,\n info: <Info className=\"size-5 text-white\" />,\n warning: <AlertTriangle className=\"size-5 text-white\" />,\n}\n\nconst textColorMap: Record<ToastType, string> = {\n success: 'text-[var(--ui-success-text)]',\n error: 'text-[var(--ui-danger-text)]',\n info: 'text-[var(--ui-info-text)]',\n warning: 'text-[var(--ui-warning-text)]',\n}\n\nconst progressBarColorMap: Record<ToastType, string> = {\n success: 'bg-[var(--ui-success)]',\n error: 'bg-[var(--ui-danger)]',\n info: 'bg-[var(--ui-info)]',\n warning: 'bg-[var(--ui-warning)]',\n}\n\nconst variantStyleMap: Record<ToastVariant, Record<ToastType, string>> = {\n accent: {\n success:\n 'bg-white dark:bg-gray-900 border-l-4 border-[var(--ui-success)] text-gray-900 dark:text-gray-100 shadow-lg border-y border-r border-[var(--ui-border)]',\n error:\n 'bg-white dark:bg-gray-900 border-l-4 border-[var(--ui-danger)] text-gray-900 dark:text-gray-100 shadow-lg border-y border-r border-[var(--ui-border)]',\n info: 'bg-white dark:bg-gray-900 border-l-4 border-[var(--ui-info)] text-gray-900 dark:text-gray-100 shadow-lg border-y border-r border-[var(--ui-border)]',\n warning:\n 'bg-white dark:bg-gray-900 border-l-4 border-[var(--ui-warning)] text-gray-900 dark:text-gray-100 shadow-lg border-y border-r border-[var(--ui-border)]',\n },\n filled: {\n success: 'bg-[var(--ui-success)] text-white shadow-lg',\n error: 'bg-[var(--ui-danger)] text-white shadow-lg',\n info: 'bg-[var(--ui-info)] text-white shadow-lg',\n warning: 'bg-[var(--ui-warning)] text-white shadow-lg',\n },\n outlined: {\n success:\n 'bg-white dark:bg-gray-900 border-2 border-[var(--ui-success)] text-gray-900 dark:text-gray-100 shadow-md',\n error:\n 'bg-white dark:bg-gray-900 border-2 border-[var(--ui-danger)] text-gray-900 dark:text-gray-100 shadow-md',\n info: 'bg-white dark:bg-gray-900 border-2 border-[var(--ui-info)] text-gray-900 dark:text-gray-100 shadow-md',\n warning:\n 'bg-white dark:bg-gray-900 border-2 border-[var(--ui-warning)] text-gray-900 dark:text-gray-100 shadow-md',\n },\n glass: {\n success:\n 'backdrop-blur-md bg-white/85 dark:bg-gray-900/85 border border-emerald-500/30 text-gray-900 dark:text-gray-100 shadow-xl',\n error:\n 'backdrop-blur-md bg-white/85 dark:bg-gray-900/85 border border-rose-500/30 text-gray-900 dark:text-gray-100 shadow-xl',\n info: 'backdrop-blur-md bg-white/85 dark:bg-gray-900/85 border border-blue-500/30 text-gray-900 dark:text-gray-100 shadow-xl',\n warning:\n 'backdrop-blur-md bg-white/85 dark:bg-gray-900/85 border border-amber-500/30 text-gray-900 dark:text-gray-100 shadow-xl',\n },\n}\n\nexport const Toast: React.FC<ToastProps & { isTop?: boolean }> = ({\n id,\n title,\n message,\n type,\n variant = 'accent',\n action,\n icon,\n showProgressBar = true,\n duration = 4000,\n isPaused = false,\n onClose,\n className,\n isTop = true,\n}) => {\n const [progress, setProgress] = useState(100)\n\n useEffect(() => {\n if (!showProgressBar || !duration || isPaused) return\n\n const intervalTime = 50\n const step = (intervalTime / duration) * 100\n\n const timer = setInterval(() => {\n setProgress((prev) => {\n if (prev <= 0) {\n clearInterval(timer)\n return 0\n }\n return prev - step\n })\n }, intervalTime)\n\n return () => clearInterval(timer)\n }, [showProgressBar, duration, isPaused])\n\n const enterFrom = isTop ? 'opacity-0 -translate-y-3 scale-95' : 'opacity-0 translate-y-3 scale-95'\n const leaveTo = isTop ? 'opacity-0 -translate-y-2 scale-95' : 'opacity-0 translate-y-2 scale-95'\n\n const renderedIcon = icon ?? (variant === 'filled' ? filledIconMap[type] : iconMap[type])\n\n return (\n <Transition\n appear\n show\n enter=\"transform transition duration-300 ease-out\"\n enterFrom={enterFrom}\n enterTo=\"opacity-100 translate-y-0 scale-100\"\n leave=\"transition duration-200 ease-in\"\n leaveFrom=\"opacity-100 translate-y-0 scale-100\"\n leaveTo={leaveTo}\n >\n <div\n role=\"status\"\n id={id.toString()}\n className={buildClassName(\n 'relative overflow-hidden flex items-start gap-3 rounded-xl px-4 py-3.5 min-w-[280px] max-w-md transition-all',\n variantStyleMap[variant][type],\n className,\n )}\n >\n {/* Icon */}\n <div className=\"shrink-0 mt-0.5\">\n {variant === 'filled' ? (\n renderedIcon\n ) : (\n <TextContent className={buildClassName(textColorMap[type])}>{renderedIcon}</TextContent>\n )}\n </div>\n\n {/* Content Body */}\n <div className=\"flex-1 flex flex-col gap-0.5\">\n {title && (\n <div\n className={buildClassName(\n 'font-semibold text-sm leading-snug',\n variant === 'filled' ? 'text-white' : 'text-gray-900 dark:text-gray-100',\n )}\n >\n {title}\n </div>\n )}\n <div\n className={buildClassName(\n 'text-sm font-medium leading-relaxed',\n variant === 'filled' ? 'text-white/95' : 'text-gray-700 dark:text-gray-300',\n )}\n >\n {message}\n </div>\n\n {/* Action Button */}\n {action && (\n <div className=\"mt-1.5\">\n <button\n type=\"button\"\n onClick={action.onClick}\n className={buildClassName(\n 'text-xs font-semibold underline underline-offset-2 transition-opacity focus:outline-none',\n variant === 'filled'\n ? 'text-white hover:opacity-85'\n : 'text-[var(--ui-primary)] hover:opacity-80',\n )}\n >\n {action.label}\n </button>\n </div>\n )}\n </div>\n\n {/* Close button */}\n <Button\n onClick={onClose}\n aria-label=\"Close toast\"\n className={buildClassName(\n 'shrink-0 mt-0.5 opacity-60 hover:opacity-100 transition',\n variant === 'filled' && 'text-white hover:text-white',\n )}\n iconOnly\n size=\"xs\"\n variant=\"plain\"\n theme={variant === 'filled' ? 'primary' : 'secondary'}\n noOutlineOnFocus\n >\n <XIcon className=\"size-4\" />\n </Button>\n\n {/* Progress Bar Countdown */}\n {showProgressBar && duration > 0 && (\n <div className=\"absolute bottom-0 left-0 right-0 h-1 bg-black/10 dark:bg-white/10 overflow-hidden\">\n <div\n className={buildClassName(\n 'h-full transition-all duration-75 ease-linear',\n variant === 'filled' ? 'bg-white/70' : progressBarColorMap[type],\n )}\n style={{ width: `${Math.max(0, progress)}%` }}\n />\n </div>\n )}\n </div>\n </Transition>\n )\n}\n\nToast.displayName = 'Toast'\n","import React, {\n createContext,\n useContext,\n useEffect,\n useState,\n type ReactNode,\n useRef,\n useCallback,\n useMemo,\n} from 'react'\nimport { Toast } from './Toast'\nimport type {\n IToast,\n ToastContextType,\n ToastOptions,\n ToastPlacement,\n ToastProviderProps,\n} from './Toast.types'\nimport { buildClassName } from '../../utils/build-classname'\n\nconst ToastContext = createContext<ToastContextType | undefined>(undefined)\nlet toastCounter = 0\n\nexport const useToast = (): ToastContextType => {\n const context = useContext(ToastContext)\n if (!context) throw new Error('useToast must be used within ToastProvider')\n return context\n}\n\nconst placementClass: Record<ToastPlacement, string> = {\n 'top-right': 'top-20 right-6 items-end',\n 'top-left': 'top-20 left-6 items-start',\n 'top-center': 'top-20 left-1/2 -translate-x-1/2 items-center',\n\n 'bottom-right': 'bottom-6 right-6 items-end',\n 'bottom-left': 'bottom-6 left-6 items-start',\n 'bottom-center': 'bottom-6 left-1/2 -translate-x-1/2 items-center',\n}\n\ninterface ToastMeta {\n timerId: any\n startTime: number\n remainingTime: number\n}\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({\n children,\n placement = 'top-right',\n maxToasts = 5,\n className,\n}) => {\n const [toasts, setToasts] = useState<IToast[]>([])\n const [pausedIds, setPausedIds] = useState<Set<number>>(new Set())\n const metaRefs = useRef<Map<number, ToastMeta>>(new Map())\n\n const clearTimer = (id: number) => {\n const meta = metaRefs.current.get(id)\n if (meta?.timerId) {\n clearTimeout(meta.timerId)\n meta.timerId = null\n }\n }\n\n const closeToast = useCallback((id: number) => {\n clearTimer(id)\n metaRefs.current.delete(id)\n setPausedIds((prev) => {\n const next = new Set(prev)\n next.delete(id)\n return next\n })\n setToasts((prev) => prev.filter((t) => t.id !== id))\n }, [])\n\n const dismissAll = useCallback(() => {\n metaRefs.current.forEach((meta) => {\n if (meta.timerId) clearTimeout(meta.timerId)\n })\n metaRefs.current.clear()\n setPausedIds(new Set())\n setToasts([])\n }, [])\n\n const startAutoClose = useCallback(\n (toastId: number, delay: number) => {\n clearTimer(toastId)\n\n const timerId = setTimeout(() => {\n closeToast(toastId)\n }, delay)\n\n const meta = metaRefs.current.get(toastId)\n if (meta) {\n meta.timerId = timerId\n meta.startTime = Date.now()\n meta.remainingTime = delay\n } else {\n metaRefs.current.set(toastId, {\n timerId,\n startTime: Date.now(),\n remainingTime: delay,\n })\n }\n },\n [closeToast],\n )\n\n useEffect(() => {\n const refs = metaRefs.current\n return () =>\n refs.forEach((meta) => {\n if (meta.timerId) clearTimeout(meta.timerId)\n })\n }, [])\n\n const showToast = useCallback(\n (message: ReactNode, options?: ToastOptions): number => {\n const id = ++toastCounter\n\n const newToast: IToast = {\n id,\n title: options?.title,\n message,\n type: options?.type ?? 'info',\n variant: options?.variant ?? 'accent',\n duration: options?.duration ?? 4000,\n autoClose: options?.autoClose ?? true,\n pauseOnHover: options?.pauseOnHover ?? true,\n showProgressBar: options?.showProgressBar ?? options?.autoClose !== false,\n action: options?.action,\n icon: options?.icon,\n }\n\n setToasts((prev) => {\n const updated = [...prev, newToast]\n if (updated.length > maxToasts) updated.shift()\n return updated\n })\n\n if (newToast.autoClose) {\n startAutoClose(id, newToast.duration)\n }\n\n return id\n },\n [maxToasts, startAutoClose],\n )\n\n // Hover pauses timer and tracks exact remaining milliseconds\n const handleMouseEnter = (toast: IToast) => {\n if (!toast.pauseOnHover || !toast.autoClose) return\n\n const meta = metaRefs.current.get(toast.id)\n if (meta) {\n const elapsed = Date.now() - meta.startTime\n meta.remainingTime = Math.max(0, meta.remainingTime - elapsed)\n clearTimer(toast.id)\n setPausedIds((prev) => new Set(prev).add(toast.id))\n }\n }\n\n // Mouse leave resumes timer with exact remaining milliseconds\n const handleMouseLeave = (toast: IToast) => {\n if (!toast.pauseOnHover || !toast.autoClose) return\n\n setPausedIds((prev) => {\n const next = new Set(prev)\n next.delete(toast.id)\n return next\n })\n\n const meta = metaRefs.current.get(toast.id)\n if (meta && meta.remainingTime > 0) {\n startAutoClose(toast.id, meta.remainingTime)\n } else if (meta && meta.remainingTime <= 0) {\n closeToast(toast.id)\n }\n }\n\n const toastHelpers = useMemo(\n () => ({\n show: (message: ReactNode, options?: ToastOptions) => showToast(message, options),\n success: (message: ReactNode, options?: ToastOptions) =>\n showToast(message, { ...options, type: 'success' }),\n error: (message: ReactNode, options?: ToastOptions) =>\n showToast(message, { ...options, type: 'error' }),\n info: (message: ReactNode, options?: ToastOptions) =>\n showToast(message, { ...options, type: 'info' }),\n warning: (message: ReactNode, options?: ToastOptions) =>\n showToast(message, { ...options, type: 'warning' }),\n dismiss: (id: number) => closeToast(id),\n dismissAll: () => dismissAll(),\n }),\n [showToast, closeToast, dismissAll],\n )\n\n return (\n <ToastContext.Provider value={{ showToast, closeToast, toast: toastHelpers }}>\n {children}\n\n {/* Toast Container */}\n <div\n className={buildClassName(\n 'fixed z-[9999] flex flex-col gap-3 pointer-events-none',\n placementClass[placement],\n className,\n )}\n >\n {toasts.map((toastItem) => (\n <div\n key={toastItem.id}\n className=\"pointer-events-auto\"\n onMouseEnter={() => handleMouseEnter(toastItem)}\n onMouseLeave={() => handleMouseLeave(toastItem)}\n >\n <Toast\n {...toastItem}\n isPaused={pausedIds.has(toastItem.id)}\n isTop={placement.startsWith('top')}\n onClose={() => closeToast(toastItem.id)}\n />\n </div>\n ))}\n </div>\n </ToastContext.Provider>\n )\n}\n\nToastProvider.displayName = 'ToastProvider'\n","import React from 'react'\nimport { ListChildComponentProps } from 'react-window'\nimport { buildClassName } from '../../utils/build-classname'\nimport { get } from '../../utils/get'\nimport type { DataTableColumn, DataTableDensity } from '../DataTable'\nimport { Checkbox } from '../Checkbox'\nimport type { VirtualizedRowProps } from './VirtualizedDataTable.types'\n\nconst DENSITY_CELL_CLASS: Record<DataTableDensity, string> = {\n compact: 'px-2 py-1.5',\n default: 'px-3 py-3',\n spacious: 'px-4 py-4',\n}\n\nexport const VirtualizedRow = ({\n index,\n style,\n data,\n}: ListChildComponentProps<VirtualizedRowProps>) => {\n const {\n items,\n columns,\n gridTemplate,\n onRowClick,\n rowClass,\n density = 'default',\n striped,\n selectable,\n getKey,\n isSelected,\n toggleRow,\n isRowSelectable,\n } = data\n const item = items[index]\n const isStriped = striped && index % 2 === 1\n const key = getKey?.(item, index) ?? index\n const rowSelectable = !isRowSelectable || isRowSelectable(item)\n\n const resolvedRowClass = !rowClass\n ? ''\n : typeof rowClass === 'function'\n ? rowClass(item, index)\n : rowClass\n\n const getCellClass = (col: DataTableColumn): string => {\n if (!col.cellClass) return ''\n if (typeof col.cellClass === 'function') return col.cellClass(item)\n return col.cellClass\n }\n\n const densityCellClass = DENSITY_CELL_CLASS[density]\n\n return (\n <div\n role=\"row\"\n className={buildClassName(\n 'grid border-b border-[var(--ui-border)] bg-white dark:bg-gray-900 group',\n onRowClick && 'cursor-pointer',\n isStriped && 'bg-gray-50 dark:bg-gray-800/40',\n resolvedRowClass,\n )}\n style={{\n ...style,\n display: 'grid',\n gridTemplateColumns: gridTemplate,\n minWidth: 'fit-content',\n }}\n onClick={onRowClick ? () => onRowClick(item, index) : undefined}\n >\n {selectable && (\n <div\n role=\"cell\"\n className={buildClassName(\n 'flex items-center whitespace-nowrap border-r last:border-r-0 border-[var(--ui-border)]',\n densityCellClass,\n isStriped && 'bg-gray-50 dark:bg-gray-800/40',\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <Checkbox\n aria-label=\"Select row\"\n checked={isSelected?.(key) ?? false}\n disabled={!rowSelectable}\n onChange={() => toggleRow?.(key)}\n />\n </div>\n )}\n {columns.map((col: DataTableColumn) => {\n const content = col.render ? col.render(item) : (get(item, col.name) ?? 'Not set')\n\n return (\n <div\n key={col.name}\n role=\"cell\"\n className={buildClassName(\n 'whitespace-nowrap border-r last:border-r-0 border-[var(--ui-border)]',\n densityCellClass,\n col.align === 'center' && 'text-center',\n col.align === 'right' && 'text-right',\n col.sticky === 'left' &&\n 'sticky left-0 z-10 bg-white dark:bg-gray-900 shadow-[2px_0_4px_rgba(0,0,0,0.05)]',\n col.sticky === 'right' &&\n 'sticky right-0 z-10 bg-white dark:bg-gray-900 shadow-[-2px_0_4px_rgba(0,0,0,0.05)]',\n isStriped && 'bg-gray-50 dark:bg-gray-800/40',\n getCellClass(col),\n )}\n >\n {content}\n </div>\n )\n })}\n </div>\n )\n}\n","import React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { FixedSizeList as List } from 'react-window'\nimport { buildClassName } from '../../utils/build-classname'\nimport { TextContent } from '../TextContent'\nimport { Checkbox } from '../Checkbox'\nimport { VirtualizedRow } from './VirtualizedRow'\nimport {\n type DataTableColumn,\n type DataTableDensity,\n getSortIcon,\n useRowSelection,\n} from '../DataTable'\nimport type { VirtualizedDataTableProps } from './VirtualizedDataTable.types'\n\nconst SELECTION_COLUMN_WIDTH = '44px'\n\nconst DENSITY_CELL_CLASS: Record<DataTableDensity, string> = {\n compact: 'px-2 py-1.5',\n default: 'px-3 py-3',\n spacious: 'px-4 py-4',\n}\n\nconst columnWidth = (col: DataTableColumn): string => {\n if (!col.width) return '1fr'\n if (typeof col.width === 'number') return `${col.width}px`\n return col.width\n}\n\nexport function VirtualizedDataTable<T extends Record<string, any> = Record<string, any>>({\n items,\n columns,\n sorting = {},\n onSort,\n loading = false,\n emptyMessage = 'No data available',\n containerClass = '',\n wrapperClass = '',\n onRowClick,\n rowClass,\n density = 'default',\n striped = false,\n rowHeight = 48,\n maxHeight = 400,\n overscanCount = 3,\n rowKey = 'id',\n selectable = false,\n selectedRowKeys,\n defaultSelectedRowKeys,\n onSelectionChange,\n isRowSelectable,\n}: VirtualizedDataTableProps<T>) {\n const scrollRef = useRef<any>(null)\n const outerRef = useRef<HTMLDivElement>(null)\n const headerRef = useRef<HTMLDivElement | null>(null)\n\n const getKey = useCallback(\n (item: T, idx: number): string | number => {\n if (typeof rowKey === 'function') return rowKey(item)\n return (item as any)[rowKey] ?? idx\n },\n [rowKey],\n )\n\n const { isSelected, toggleRow, toggleAll, allSelected, someSelected } = useRowSelection({\n items,\n getKey,\n selectedRowKeys,\n defaultSelectedRowKeys,\n onSelectionChange,\n isRowSelectable,\n })\n\n const gridTemplate = useMemo(() => {\n const widths = columns.map((col) => columnWidth(col))\n return selectable ? [SELECTION_COLUMN_WIDTH, ...widths].join(' ') : widths.join(' ')\n }, [columns, selectable])\n\n const densityCellClass = DENSITY_CELL_CLASS[density]\n\n const skeletonRows = Math.max(1, Math.floor(maxHeight / rowHeight))\n\n useEffect(() => {\n const el = outerRef.current\n if (!el) return\n const handler = () => {\n if (headerRef.current) headerRef.current.scrollLeft = el.scrollLeft\n }\n el.addEventListener('scroll', handler)\n return () => el.removeEventListener('scroll', handler)\n }, [])\n\n const handleSort = useCallback(\n (column: DataTableColumn) => {\n if (column.sortable) onSort?.(column as DataTableColumn<T>)\n },\n [onSort],\n )\n\n const itemData = useMemo(\n () => ({\n items,\n columns,\n gridTemplate,\n onRowClick,\n rowClass,\n density,\n striped,\n selectable,\n getKey,\n isSelected,\n toggleRow,\n isRowSelectable,\n }),\n [\n items,\n columns,\n gridTemplate,\n onRowClick,\n rowClass,\n density,\n striped,\n selectable,\n getKey,\n isSelected,\n toggleRow,\n isRowSelectable,\n ],\n )\n\n /* -------------------------------------------------------\n * Header\n * ------------------------------------------------------- */\n const Header = (\n <div ref={headerRef} className=\"overflow-hidden w-full\">\n <div\n className=\"grid bg-gray-50 dark:bg-gray-800 border-b border-[var(--ui-border)]\"\n style={{ gridTemplateColumns: gridTemplate, minWidth: 'fit-content' }}\n >\n {selectable && (\n <div\n role=\"columnheader\"\n className={buildClassName(\n 'flex items-center border-r last:border-r-0 border-[var(--ui-border)]',\n densityCellClass,\n )}\n >\n <Checkbox\n aria-label=\"Select all rows\"\n checked={allSelected}\n ref={(el) => {\n if (el) el.indeterminate = someSelected\n }}\n onChange={toggleAll}\n />\n </div>\n )}\n {columns.map((col) => (\n <div\n key={col.name}\n role=\"columnheader\"\n className={buildClassName(\n 'font-semibold text-sm whitespace-nowrap flex items-center',\n densityCellClass,\n 'border-r last:border-r-0 border-[var(--ui-border)]',\n col.sticky === 'left' &&\n 'sticky left-0 z-20 bg-gray-50 dark:bg-gray-800 shadow-[2px_0_4px_rgba(0,0,0,0.05)]',\n col.sticky === 'right' &&\n 'sticky right-0 z-20 bg-gray-50 dark:bg-gray-800 shadow-[-2px_0_4px_rgba(0,0,0,0.05)]',\n col.headerClass,\n )}\n >\n <TextContent\n role={col.sortable ? 'button' : undefined}\n className={buildClassName(\n col.sortable && 'inline-flex items-center gap-2 cursor-pointer select-none',\n )}\n onClick={() => handleSort(col)}\n >\n {col.label}\n {col.sortable ? getSortIcon(sorting[col.name]) : null}\n </TextContent>\n </div>\n ))}\n </div>\n </div>\n )\n\n const wrapperCls = buildClassName(\n 'rounded-lg border border-[var(--ui-border)] overflow-hidden',\n wrapperClass,\n )\n\n /* -------------------------------------------------------\n * Loading state\n * ------------------------------------------------------- */\n if (loading) {\n return (\n <div className={buildClassName('w-full rounded-lg relative', containerClass)}>\n <div className={wrapperCls}>\n {Header}\n <div style={{ height: maxHeight }} className=\"flex flex-col\">\n {Array.from({ length: skeletonRows }).map((_, idx) => (\n <div\n key={idx}\n data-testid=\"skeleton-row\"\n className=\"grid animate-pulse bg-white dark:bg-gray-900 border-b border-[var(--ui-border-muted)]\"\n style={{ gridTemplateColumns: gridTemplate, height: rowHeight }}\n >\n {selectable && <div className={densityCellClass} />}\n {columns.map((col) => (\n <div key={col.name} className={densityCellClass}>\n <div className=\"h-4 w-3/4 bg-gray-300 dark:bg-gray-700 rounded\" />\n </div>\n ))}\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n }\n\n /* -------------------------------------------------------\n * Empty state\n * ------------------------------------------------------- */\n if (items.length === 0) {\n return (\n <div className={buildClassName('w-full rounded-lg relative', containerClass)}>\n <div className={wrapperCls}>\n {Header}\n <div\n className=\"flex items-center justify-center text-gray-500 dark:text-gray-300\"\n style={{ height: maxHeight }}\n >\n {emptyMessage}\n </div>\n </div>\n </div>\n )\n }\n\n /* -------------------------------------------------------\n * Virtualized body\n * ------------------------------------------------------- */\n return (\n <div className={buildClassName('w-full rounded-lg relative', containerClass)}>\n <div className={wrapperCls}>\n {Header}\n <List\n ref={scrollRef}\n outerRef={outerRef}\n height={maxHeight}\n width=\"100%\"\n itemCount={items.length}\n itemSize={rowHeight}\n itemData={itemData}\n overscanCount={overscanCount}\n >\n {VirtualizedRow}\n </List>\n </div>\n </div>\n )\n}\n","import { useEffect, useState } from 'react'\n\nexport const useIsMobile = () => {\n const [isMobile, setIsMobile] = useState(false)\n\n useEffect(() => {\n const detect = () => {\n const width = window.innerWidth\n\n const isTouch =\n (typeof navigator !== 'undefined' && navigator.maxTouchPoints > 1) ||\n (typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(pointer: coarse)').matches)\n\n setIsMobile(width < 600 && isTouch)\n }\n\n detect()\n window.addEventListener('resize', detect)\n return () => window.removeEventListener('resize', detect)\n }, [])\n\n return isMobile\n}\n","import { useEffect, useState } from 'react'\n\nexport const useIsTablet = () => {\n const [isTablet, setIsTablet] = useState(false)\n\n useEffect(() => {\n const detect = () => {\n const width = window.innerWidth\n\n const isTouch = navigator.maxTouchPoints > 1 || window.matchMedia('(pointer: coarse)').matches\n\n setIsTablet(width >= 600 && width <= 1024 && isTouch)\n }\n\n detect()\n window.addEventListener('resize', detect)\n return () => window.removeEventListener('resize', detect)\n }, [])\n\n return isTablet\n}\n","import { useIsMobile } from './use-is-mobile'\nimport { useIsTablet } from './use-is-tablet'\n\nexport const useIsTabletOrMobile = () => {\n const isMobile = useIsMobile()\n const isTablet = useIsTablet()\n\n return isMobile || isTablet\n}\n"],"names":["_path","_extends","_jsx","ChevronDownIcon","_jsxs","sizeClassMap","weightClassMap","React","ChevronLeftIcon","XIcon","_circle","BadgeCheckIcon","CircleXIcon","CircleAlertIcon","InfoIcon","TypeClassMap","SIZE_CLASS","CircleCheckIcon","TriangleAlertIcon","alignClassMap","SIZE_CONTAINER_CLASS","SIZE_ICON_CLASS","SlashIcon","ChevronRightIcon","ArrowDownNarrowWide","ArrowDownAZ","ArrowDownWideNarrow","ArrowDownZA","ArrowUpDown","DENSITY_CELL_CLASS","Fragment","_Fragment","FolderPlusIcon","sizeClasses","SearchIcon","CheckIcon","CirclePlusIcon","CheckCircle","AlertCircle","Info","AlertTriangle","List"],"mappings":"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"}