@spear-ai/spectral 1.22.5 → 1.22.6

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 (504) hide show
  1. package/dist/Accordion.d.ts.map +1 -1
  2. package/dist/Accordion.js +1 -1
  3. package/dist/Accordion.js.map +1 -1
  4. package/dist/Alert/AlertBase.d.ts.map +1 -1
  5. package/dist/Alert/AlertBase.js +2 -3
  6. package/dist/Alert/AlertBase.js.map +1 -1
  7. package/dist/Alert.js.map +1 -1
  8. package/dist/AlertDialog.d.ts.map +1 -1
  9. package/dist/AlertDialog.js +8 -8
  10. package/dist/AlertDialog.js.map +1 -1
  11. package/dist/Avatar.js +4 -4
  12. package/dist/Avatar.js.map +1 -1
  13. package/dist/Badge.d.ts.map +1 -1
  14. package/dist/Badge.js.map +1 -1
  15. package/dist/Button.d.ts +2 -2
  16. package/dist/Button.d.ts.map +1 -1
  17. package/dist/Button.js +6 -9
  18. package/dist/Button.js.map +1 -1
  19. package/dist/ButtonGroup/ButtonGroupButton.d.ts.map +1 -1
  20. package/dist/ButtonGroup/ButtonGroupButton.js +1 -2
  21. package/dist/ButtonGroup/ButtonGroupButton.js.map +1 -1
  22. package/dist/ButtonGroup.d.ts.map +1 -1
  23. package/dist/ButtonGroup.js +1 -1
  24. package/dist/ButtonGroup.js.map +1 -1
  25. package/dist/ButtonIcon.js.map +1 -1
  26. package/dist/Checkbox/CheckboxBase.js +1 -1
  27. package/dist/Checkbox/CheckboxBase.js.map +1 -1
  28. package/dist/Checkbox.js +1 -1
  29. package/dist/Checkbox.js.map +1 -1
  30. package/dist/Combobox.js.map +1 -1
  31. package/dist/ControlGroup/ControlGroupSelect.js.map +1 -1
  32. package/dist/ControlGroup.d.ts.map +1 -1
  33. package/dist/ControlGroup.js +1 -1
  34. package/dist/ControlGroup.js.map +1 -1
  35. package/dist/DataCard/Card.d.ts.map +1 -1
  36. package/dist/DataCard/Card.js.map +1 -1
  37. package/dist/DateTimePicker/Calendar.js.map +1 -1
  38. package/dist/DateTimePicker/DateTimeDisplayInput.js.map +1 -1
  39. package/dist/DateTimePicker/TimePeriodSelect.js +1 -1
  40. package/dist/DateTimePicker/TimePeriodSelect.js.map +1 -1
  41. package/dist/DateTimePicker/TimePicker.js.map +1 -1
  42. package/dist/DateTimePicker.d.ts +1 -1
  43. package/dist/DateTimePicker.js.map +1 -1
  44. package/dist/Dialog.d.ts.map +1 -1
  45. package/dist/Dialog.js +3 -3
  46. package/dist/Dialog.js.map +1 -1
  47. package/dist/Drawer.d.ts.map +1 -1
  48. package/dist/Drawer.js.map +1 -1
  49. package/dist/DropdownMenu.js.map +1 -1
  50. package/dist/HoverCard.d.ts.map +1 -1
  51. package/dist/HoverCard.js.map +1 -1
  52. package/dist/Icons/AdjustmentsIcon.d.ts.map +1 -1
  53. package/dist/Icons/AdjustmentsIcon.js +11 -20
  54. package/dist/Icons/AdjustmentsIcon.js.map +1 -1
  55. package/dist/Icons/AnalyzeIcon.d.ts.map +1 -1
  56. package/dist/Icons/AnalyzeIcon.js +4 -9
  57. package/dist/Icons/AnalyzeIcon.js.map +1 -1
  58. package/dist/Icons/AnnotationsIcon.d.ts +2 -17
  59. package/dist/Icons/AnnotationsIcon.js +2 -25
  60. package/dist/Icons/ApprovedIcon.d.ts.map +1 -1
  61. package/dist/Icons/ApprovedIcon.js +4 -6
  62. package/dist/Icons/ApprovedIcon.js.map +1 -1
  63. package/dist/Icons/ArrowDownIcon.d.ts.map +1 -1
  64. package/dist/Icons/ArrowDownIcon.js +24 -11
  65. package/dist/Icons/ArrowDownIcon.js.map +1 -1
  66. package/dist/Icons/ArrowUpIcon.d.ts.map +1 -1
  67. package/dist/Icons/ArrowUpIcon.js +24 -11
  68. package/dist/Icons/ArrowUpIcon.js.map +1 -1
  69. package/dist/Icons/BoxToolIcon.d.ts.map +1 -1
  70. package/dist/Icons/BoxToolIcon.js +2 -2
  71. package/dist/Icons/BoxToolIcon.js.map +1 -1
  72. package/dist/Icons/{PanelIconOpen.d.ts → BuoyIcon.d.ts} +4 -4
  73. package/dist/Icons/BuoyIcon.d.ts.map +1 -0
  74. package/dist/Icons/BuoyIcon.js +40 -0
  75. package/dist/Icons/BuoyIcon.js.map +1 -0
  76. package/dist/Icons/CalendarIcon.d.ts.map +1 -1
  77. package/dist/Icons/CalendarIcon.js +5 -9
  78. package/dist/Icons/CalendarIcon.js.map +1 -1
  79. package/dist/Icons/CheckCircleIcon.d.ts.map +1 -1
  80. package/dist/Icons/CheckCircleIcon.js +13 -15
  81. package/dist/Icons/CheckCircleIcon.js.map +1 -1
  82. package/dist/Icons/CheckSquareIcon.d.ts.map +1 -1
  83. package/dist/Icons/CheckSquareIcon.js +25 -17
  84. package/dist/Icons/CheckSquareIcon.js.map +1 -1
  85. package/dist/Icons/CheckmarkIcon.d.ts +0 -1
  86. package/dist/Icons/CheckmarkIcon.d.ts.map +1 -1
  87. package/dist/Icons/CheckmarkIcon.js +11 -14
  88. package/dist/Icons/CheckmarkIcon.js.map +1 -1
  89. package/dist/Icons/ChevronDownIcon.d.ts.map +1 -1
  90. package/dist/Icons/ChevronDownIcon.js +10 -13
  91. package/dist/Icons/ChevronDownIcon.js.map +1 -1
  92. package/dist/Icons/ChevronUpIcon.d.ts.map +1 -1
  93. package/dist/Icons/ChevronUpIcon.js +10 -13
  94. package/dist/Icons/ChevronUpIcon.js.map +1 -1
  95. package/dist/Icons/{PanelIconClose.d.ts → CircleDotIcon.d.ts} +4 -4
  96. package/dist/Icons/CircleDotIcon.d.ts.map +1 -0
  97. package/dist/Icons/CircleDotIcon.js +31 -0
  98. package/dist/Icons/CircleDotIcon.js.map +1 -0
  99. package/dist/Icons/ClockIcon.d.ts.map +1 -1
  100. package/dist/Icons/ClockIcon.js +2 -4
  101. package/dist/Icons/ClockIcon.js.map +1 -1
  102. package/dist/Icons/CloseCircleIcon.d.ts.map +1 -1
  103. package/dist/Icons/CloseCircleIcon.js +19 -12
  104. package/dist/Icons/CloseCircleIcon.js.map +1 -1
  105. package/dist/Icons/CloseIcon.d.ts.map +1 -1
  106. package/dist/Icons/CloseIcon.js +13 -7
  107. package/dist/Icons/CloseIcon.js.map +1 -1
  108. package/dist/Icons/Crosshairs2Icon.d.ts.map +1 -1
  109. package/dist/Icons/Crosshairs2Icon.js +2 -7
  110. package/dist/Icons/Crosshairs2Icon.js.map +1 -1
  111. package/dist/Icons/CrosshairsIcon.d.ts.map +1 -1
  112. package/dist/Icons/CrosshairsIcon.js +2 -3
  113. package/dist/Icons/CrosshairsIcon.js.map +1 -1
  114. package/dist/Icons/DashboardIcon.d.ts.map +1 -1
  115. package/dist/Icons/DashboardIcon.js +2 -5
  116. package/dist/Icons/DashboardIcon.js.map +1 -1
  117. package/dist/Icons/DatabaseIcon.d.ts.map +1 -1
  118. package/dist/Icons/DatabaseIcon.js +2 -5
  119. package/dist/Icons/DatabaseIcon.js.map +1 -1
  120. package/dist/Icons/DeleteIcon.d.ts.map +1 -1
  121. package/dist/Icons/DeleteIcon.js +5 -8
  122. package/dist/Icons/DeleteIcon.js.map +1 -1
  123. package/dist/Icons/DotIcon.d.ts +18 -0
  124. package/dist/Icons/DotIcon.d.ts.map +1 -0
  125. package/dist/Icons/DotIcon.js +24 -0
  126. package/dist/Icons/DotIcon.js.map +1 -0
  127. package/dist/Icons/DurationIcon.d.ts.map +1 -1
  128. package/dist/Icons/DurationIcon.js +2 -8
  129. package/dist/Icons/DurationIcon.js.map +1 -1
  130. package/dist/Icons/EditIcon.d.ts.map +1 -1
  131. package/dist/Icons/EditIcon.js +7 -14
  132. package/dist/Icons/EditIcon.js.map +1 -1
  133. package/dist/Icons/EmailIcon.d.ts.map +1 -1
  134. package/dist/Icons/EmailIcon.js +13 -15
  135. package/dist/Icons/EmailIcon.js.map +1 -1
  136. package/dist/Icons/EraserIcon.d.ts.map +1 -1
  137. package/dist/Icons/EraserIcon.js +7 -11
  138. package/dist/Icons/EraserIcon.js.map +1 -1
  139. package/dist/Icons/ErrorIcon.d.ts.map +1 -1
  140. package/dist/Icons/ErrorIcon.js +18 -12
  141. package/dist/Icons/ErrorIcon.js.map +1 -1
  142. package/dist/Icons/EyeClosedIcon.d.ts.map +1 -1
  143. package/dist/Icons/EyeClosedIcon.js +30 -14
  144. package/dist/Icons/EyeClosedIcon.js.map +1 -1
  145. package/dist/Icons/EyeClosedIcon2.d.ts.map +1 -1
  146. package/dist/Icons/EyeClosedIcon2.js +24 -12
  147. package/dist/Icons/EyeClosedIcon2.js.map +1 -1
  148. package/dist/Icons/EyeOpenIcon.d.ts.map +1 -1
  149. package/dist/Icons/EyeOpenIcon.js +12 -10
  150. package/dist/Icons/EyeOpenIcon.js.map +1 -1
  151. package/dist/Icons/FileDownloadIcon.d.ts.map +1 -1
  152. package/dist/Icons/FileDownloadIcon.js +2 -6
  153. package/dist/Icons/FileDownloadIcon.js.map +1 -1
  154. package/dist/Icons/GeofenceIcon.d.ts +18 -0
  155. package/dist/Icons/GeofenceIcon.d.ts.map +1 -0
  156. package/dist/Icons/GeofenceIcon.js +38 -0
  157. package/dist/Icons/GeofenceIcon.js.map +1 -0
  158. package/dist/Icons/GlobeIcon.d.ts +18 -0
  159. package/dist/Icons/GlobeIcon.d.ts.map +1 -0
  160. package/dist/Icons/GlobeIcon.js +52 -0
  161. package/dist/Icons/GlobeIcon.js.map +1 -0
  162. package/dist/Icons/GoToFirstIcon.d.ts.map +1 -1
  163. package/dist/Icons/GoToFirstIcon.js +2 -4
  164. package/dist/Icons/GoToFirstIcon.js.map +1 -1
  165. package/dist/Icons/GoToLastIcon.d.ts.map +1 -1
  166. package/dist/Icons/GoToLastIcon.js +2 -4
  167. package/dist/Icons/GoToLastIcon.js.map +1 -1
  168. package/dist/Icons/GpsIcon.d.ts +18 -0
  169. package/dist/Icons/GpsIcon.d.ts.map +1 -0
  170. package/dist/Icons/GpsIcon.js +31 -0
  171. package/dist/Icons/GpsIcon.js.map +1 -0
  172. package/dist/Icons/HarmonicCursorsIcon.d.ts.map +1 -1
  173. package/dist/Icons/HarmonicCursorsIcon.js +2 -2
  174. package/dist/Icons/HarmonicCursorsIcon.js.map +1 -1
  175. package/dist/Icons/IconBase.d.ts +11 -8
  176. package/dist/Icons/IconBase.d.ts.map +1 -1
  177. package/dist/Icons/IconBase.js +3 -2
  178. package/dist/Icons/IconBase.js.map +1 -1
  179. package/dist/Icons/InfoIcon.d.ts.map +1 -1
  180. package/dist/Icons/InfoIcon.js +33 -26
  181. package/dist/Icons/InfoIcon.js.map +1 -1
  182. package/dist/Icons/IterationArrowIcon.d.ts.map +1 -1
  183. package/dist/Icons/IterationArrowIcon.js +2 -5
  184. package/dist/Icons/IterationArrowIcon.js.map +1 -1
  185. package/dist/Icons/KeyIcon.d.ts +18 -0
  186. package/dist/Icons/KeyIcon.d.ts.map +1 -0
  187. package/dist/Icons/KeyIcon.js +46 -0
  188. package/dist/Icons/KeyIcon.js.map +1 -0
  189. package/dist/Icons/KeyboardIcon.d.ts.map +1 -1
  190. package/dist/Icons/KeyboardIcon.js +4 -4
  191. package/dist/Icons/KeyboardIcon.js.map +1 -1
  192. package/dist/Icons/LabelIcon.d.ts.map +1 -1
  193. package/dist/Icons/LabelIcon.js +2 -3
  194. package/dist/Icons/LabelIcon.js.map +1 -1
  195. package/dist/Icons/LassoIcon.d.ts.map +1 -1
  196. package/dist/Icons/LassoIcon.js +5 -8
  197. package/dist/Icons/LassoIcon.js.map +1 -1
  198. package/dist/Icons/LineDashedIcon.d.ts +18 -0
  199. package/dist/Icons/LineDashedIcon.d.ts.map +1 -0
  200. package/dist/Icons/LineDashedIcon.js +50 -0
  201. package/dist/Icons/LineDashedIcon.js.map +1 -0
  202. package/dist/Icons/LineToolIcon.d.ts.map +1 -1
  203. package/dist/Icons/LineToolIcon.js +11 -14
  204. package/dist/Icons/LineToolIcon.js.map +1 -1
  205. package/dist/Icons/LinkIcon.d.ts.map +1 -1
  206. package/dist/Icons/LinkIcon.js +5 -8
  207. package/dist/Icons/LinkIcon.js.map +1 -1
  208. package/dist/Icons/LiveViewIcon.d.ts.map +1 -1
  209. package/dist/Icons/LiveViewIcon.js +2 -7
  210. package/dist/Icons/LiveViewIcon.js.map +1 -1
  211. package/dist/Icons/LoaderIcon.d.ts.map +1 -1
  212. package/dist/Icons/LoaderIcon.js +5 -7
  213. package/dist/Icons/LoaderIcon.js.map +1 -1
  214. package/dist/Icons/LocationIcon.d.ts.map +1 -1
  215. package/dist/Icons/LocationIcon.js +2 -4
  216. package/dist/Icons/LocationIcon.js.map +1 -1
  217. package/dist/Icons/LockIcon.d.ts.map +1 -1
  218. package/dist/Icons/LockIcon.js +2 -3
  219. package/dist/Icons/LockIcon.js.map +1 -1
  220. package/dist/Icons/LogoutIcon.d.ts.map +1 -1
  221. package/dist/Icons/LogoutIcon.js +3 -4
  222. package/dist/Icons/LogoutIcon.js.map +1 -1
  223. package/dist/Icons/MapIcon.d.ts +18 -0
  224. package/dist/Icons/MapIcon.d.ts.map +1 -0
  225. package/dist/Icons/MapIcon.js +40 -0
  226. package/dist/Icons/MapIcon.js.map +1 -0
  227. package/dist/Icons/MapPinIcon.d.ts +18 -0
  228. package/dist/Icons/MapPinIcon.d.ts.map +1 -0
  229. package/dist/Icons/MapPinIcon.js +31 -0
  230. package/dist/Icons/MapPinIcon.js.map +1 -0
  231. package/dist/Icons/MaximizeIcon.d.ts.map +1 -1
  232. package/dist/Icons/MaximizeIcon.js +2 -6
  233. package/dist/Icons/MaximizeIcon.js.map +1 -1
  234. package/dist/Icons/MeasureIcon.d.ts.map +1 -1
  235. package/dist/Icons/MeasureIcon.js +2 -11
  236. package/dist/Icons/MeasureIcon.js.map +1 -1
  237. package/dist/Icons/MenuDotsIcon.d.ts.map +1 -1
  238. package/dist/Icons/MenuDotsIcon.js +2 -5
  239. package/dist/Icons/MenuDotsIcon.js.map +1 -1
  240. package/dist/Icons/MenuIcon.d.ts.map +1 -1
  241. package/dist/Icons/MenuIcon.js +5 -8
  242. package/dist/Icons/MenuIcon.js.map +1 -1
  243. package/dist/Icons/MessagesIcon.d.ts.map +1 -1
  244. package/dist/Icons/MessagesIcon.js +5 -8
  245. package/dist/Icons/MessagesIcon.js.map +1 -1
  246. package/dist/Icons/MetadataIcon.d.ts.map +1 -1
  247. package/dist/Icons/MetadataIcon.js +2 -3
  248. package/dist/Icons/MetadataIcon.js.map +1 -1
  249. package/dist/Icons/MinimizeIcon.d.ts.map +1 -1
  250. package/dist/Icons/MinimizeIcon.js +2 -6
  251. package/dist/Icons/MinimizeIcon.js.map +1 -1
  252. package/dist/Icons/MinusIcon.d.ts.map +1 -1
  253. package/dist/Icons/MinusIcon.js +8 -7
  254. package/dist/Icons/MinusIcon.js.map +1 -1
  255. package/dist/Icons/OntologyIcon.d.ts.map +1 -1
  256. package/dist/Icons/OntologyIcon.js +8 -19
  257. package/dist/Icons/OntologyIcon.js.map +1 -1
  258. package/dist/Icons/PanelCloseIcon.d.ts +18 -0
  259. package/dist/Icons/PanelCloseIcon.d.ts.map +1 -0
  260. package/dist/Icons/PanelCloseIcon.js +40 -0
  261. package/dist/Icons/PanelCloseIcon.js.map +1 -0
  262. package/dist/Icons/PanelOpenIcon.d.ts +18 -0
  263. package/dist/Icons/PanelOpenIcon.d.ts.map +1 -0
  264. package/dist/Icons/PanelOpenIcon.js +40 -0
  265. package/dist/Icons/PanelOpenIcon.js.map +1 -0
  266. package/dist/Icons/PaperclipIcon.d.ts +18 -0
  267. package/dist/Icons/PaperclipIcon.d.ts.map +1 -0
  268. package/dist/Icons/PaperclipIcon.js +26 -0
  269. package/dist/Icons/PaperclipIcon.js.map +1 -0
  270. package/dist/Icons/PathIcon.d.ts +18 -0
  271. package/dist/Icons/PathIcon.d.ts.map +1 -0
  272. package/dist/Icons/PathIcon.js +86 -0
  273. package/dist/Icons/PathIcon.js.map +1 -0
  274. package/dist/Icons/PauseIcon.d.ts.map +1 -1
  275. package/dist/Icons/PauseIcon.js +4 -6
  276. package/dist/Icons/PauseIcon.js.map +1 -1
  277. package/dist/Icons/PdfIcon.d.ts.map +1 -1
  278. package/dist/Icons/PdfIcon.js +3 -8
  279. package/dist/Icons/PdfIcon.js.map +1 -1
  280. package/dist/Icons/PinIcon.d.ts +18 -0
  281. package/dist/Icons/PinIcon.d.ts.map +1 -0
  282. package/dist/Icons/PinIcon.js +40 -0
  283. package/dist/Icons/PinIcon.js.map +1 -0
  284. package/dist/Icons/PlayIcon.d.ts.map +1 -1
  285. package/dist/Icons/PlayIcon.js +3 -5
  286. package/dist/Icons/PlayIcon.js.map +1 -1
  287. package/dist/Icons/PlusIcon.d.ts.map +1 -1
  288. package/dist/Icons/PlusIcon.js +5 -6
  289. package/dist/Icons/PlusIcon.js.map +1 -1
  290. package/dist/Icons/PolygonIcon.d.ts +0 -1
  291. package/dist/Icons/PolygonIcon.d.ts.map +1 -1
  292. package/dist/Icons/PolygonIcon.js +28 -15
  293. package/dist/Icons/PolygonIcon.js.map +1 -1
  294. package/dist/Icons/PrinterIcon.d.ts.map +1 -1
  295. package/dist/Icons/PrinterIcon.js +3 -4
  296. package/dist/Icons/PrinterIcon.js.map +1 -1
  297. package/dist/Icons/ProgressArrowIcon.d.ts.map +1 -1
  298. package/dist/Icons/ProgressArrowIcon.js +20 -14
  299. package/dist/Icons/ProgressArrowIcon.js.map +1 -1
  300. package/dist/Icons/ProgressCheckIcon.d.ts.map +1 -1
  301. package/dist/Icons/ProgressCheckIcon.js +5 -11
  302. package/dist/Icons/ProgressCheckIcon.js.map +1 -1
  303. package/dist/Icons/ResetIcon.d.ts.map +1 -1
  304. package/dist/Icons/ResetIcon.js +2 -2
  305. package/dist/Icons/ResetIcon.js.map +1 -1
  306. package/dist/Icons/ReviewedIcon.d.ts.map +1 -1
  307. package/dist/Icons/ReviewedIcon.js +2 -5
  308. package/dist/Icons/ReviewedIcon.js.map +1 -1
  309. package/dist/Icons/Route2Icon.d.ts +18 -0
  310. package/dist/Icons/Route2Icon.d.ts.map +1 -0
  311. package/dist/Icons/Route2Icon.js +40 -0
  312. package/dist/Icons/Route2Icon.js.map +1 -0
  313. package/dist/Icons/Route3Icon.d.ts +18 -0
  314. package/dist/Icons/Route3Icon.d.ts.map +1 -0
  315. package/dist/Icons/Route3Icon.js +40 -0
  316. package/dist/Icons/Route3Icon.js.map +1 -0
  317. package/dist/Icons/RouteIcon.d.ts +18 -0
  318. package/dist/Icons/RouteIcon.d.ts.map +1 -0
  319. package/dist/Icons/RouteIcon.js +40 -0
  320. package/dist/Icons/RouteIcon.js.map +1 -0
  321. package/dist/Icons/SaveIcon.d.ts +18 -0
  322. package/dist/Icons/SaveIcon.d.ts.map +1 -0
  323. package/dist/Icons/SaveIcon.js +26 -0
  324. package/dist/Icons/SaveIcon.js.map +1 -0
  325. package/dist/Icons/ScissorsIcon.d.ts.map +1 -1
  326. package/dist/Icons/ScissorsIcon.js +6 -6
  327. package/dist/Icons/ScissorsIcon.js.map +1 -1
  328. package/dist/Icons/SearchIcon.d.ts.map +1 -1
  329. package/dist/Icons/SearchIcon.js +4 -6
  330. package/dist/Icons/SearchIcon.js.map +1 -1
  331. package/dist/Icons/SettingsIcon.d.ts.map +1 -1
  332. package/dist/Icons/SettingsIcon.js +3 -5
  333. package/dist/Icons/SettingsIcon.js.map +1 -1
  334. package/dist/Icons/SortAscendingIcon.d.ts.map +1 -1
  335. package/dist/Icons/SortAscendingIcon.js +7 -12
  336. package/dist/Icons/SortAscendingIcon.js.map +1 -1
  337. package/dist/Icons/SortAtoZIcon.d.ts.map +1 -1
  338. package/dist/Icons/SortAtoZIcon.js +2 -7
  339. package/dist/Icons/SortAtoZIcon.js.map +1 -1
  340. package/dist/Icons/SortDescendingIcon.d.ts.map +1 -1
  341. package/dist/Icons/SortDescendingIcon.js +6 -11
  342. package/dist/Icons/SortDescendingIcon.js.map +1 -1
  343. package/dist/Icons/SortZtoAIcon.d.ts.map +1 -1
  344. package/dist/Icons/SortZtoAIcon.js +2 -7
  345. package/dist/Icons/SortZtoAIcon.js.map +1 -1
  346. package/dist/Icons/SparklesIcon.d.ts.map +1 -1
  347. package/dist/Icons/SparklesIcon.js +2 -3
  348. package/dist/Icons/SparklesIcon.js.map +1 -1
  349. package/dist/Icons/StackIcon.d.ts.map +1 -1
  350. package/dist/Icons/StackIcon.js +3 -5
  351. package/dist/Icons/StackIcon.js.map +1 -1
  352. package/dist/Icons/StarIcon.d.ts.map +1 -1
  353. package/dist/Icons/StarIcon.js +2 -3
  354. package/dist/Icons/StarIcon.js.map +1 -1
  355. package/dist/Icons/SyncIcon.d.ts.map +1 -1
  356. package/dist/Icons/SyncIcon.js +2 -4
  357. package/dist/Icons/SyncIcon.js.map +1 -1
  358. package/dist/Icons/SyncOffIcon.d.ts.map +1 -1
  359. package/dist/Icons/SyncOffIcon.js +3 -6
  360. package/dist/Icons/SyncOffIcon.js.map +1 -1
  361. package/dist/Icons/ToolsIcon.d.ts +18 -0
  362. package/dist/Icons/ToolsIcon.d.ts.map +1 -0
  363. package/dist/Icons/ToolsIcon.js +58 -0
  364. package/dist/Icons/ToolsIcon.js.map +1 -0
  365. package/dist/Icons/TrashIcon.d.ts.map +1 -1
  366. package/dist/Icons/TrashIcon.js +2 -2
  367. package/dist/Icons/TrashIcon.js.map +1 -1
  368. package/dist/Icons/UndoIcon.d.ts.map +1 -1
  369. package/dist/Icons/UndoIcon.js +3 -4
  370. package/dist/Icons/UndoIcon.js.map +1 -1
  371. package/dist/Icons/UnlinkIcon.d.ts.map +1 -1
  372. package/dist/Icons/UnlinkIcon.js +46 -65
  373. package/dist/Icons/UnlinkIcon.js.map +1 -1
  374. package/dist/Icons/UnlockIcon.d.ts.map +1 -1
  375. package/dist/Icons/UnlockIcon.js +3 -4
  376. package/dist/Icons/UnlockIcon.js.map +1 -1
  377. package/dist/Icons/UploadIcon.d.ts.map +1 -1
  378. package/dist/Icons/UploadIcon.js +3 -6
  379. package/dist/Icons/UploadIcon.js.map +1 -1
  380. package/dist/Icons/User2Icon.d.ts.map +1 -1
  381. package/dist/Icons/User2Icon.js +13 -15
  382. package/dist/Icons/User2Icon.js.map +1 -1
  383. package/dist/Icons/UserAddIcon.d.ts +18 -0
  384. package/dist/Icons/UserAddIcon.d.ts.map +1 -0
  385. package/dist/Icons/UserAddIcon.js +46 -0
  386. package/dist/Icons/UserAddIcon.js.map +1 -0
  387. package/dist/Icons/UserDeleteIcon.d.ts +18 -0
  388. package/dist/Icons/UserDeleteIcon.d.ts.map +1 -0
  389. package/dist/Icons/UserDeleteIcon.js +46 -0
  390. package/dist/Icons/UserDeleteIcon.js.map +1 -0
  391. package/dist/Icons/UserEditIcon.d.ts +18 -0
  392. package/dist/Icons/UserEditIcon.d.ts.map +1 -0
  393. package/dist/Icons/UserEditIcon.js +40 -0
  394. package/dist/Icons/UserEditIcon.js.map +1 -0
  395. package/dist/Icons/UserIcon.d.ts.map +1 -1
  396. package/dist/Icons/UserIcon.js +3 -4
  397. package/dist/Icons/UserIcon.js.map +1 -1
  398. package/dist/Icons/UserSearchIcon.d.ts +18 -0
  399. package/dist/Icons/UserSearchIcon.d.ts.map +1 -0
  400. package/dist/Icons/UserSearchIcon.js +56 -0
  401. package/dist/Icons/UserSearchIcon.js.map +1 -0
  402. package/dist/Icons/UserSquareIcon.d.ts +18 -0
  403. package/dist/Icons/UserSquareIcon.d.ts.map +1 -0
  404. package/dist/Icons/UserSquareIcon.js +40 -0
  405. package/dist/Icons/UserSquareIcon.js.map +1 -0
  406. package/dist/Icons/UsersIcon.d.ts +18 -0
  407. package/dist/Icons/UsersIcon.d.ts.map +1 -0
  408. package/dist/Icons/UsersIcon.js +46 -0
  409. package/dist/Icons/UsersIcon.js.map +1 -0
  410. package/dist/Icons/WarningIcon.d.ts.map +1 -1
  411. package/dist/Icons/WarningIcon.js +2 -3
  412. package/dist/Icons/WarningIcon.js.map +1 -1
  413. package/dist/Icons/ZoomAllIcon.d.ts.map +1 -1
  414. package/dist/Icons/ZoomAllIcon.js +6 -38
  415. package/dist/Icons/ZoomAllIcon.js.map +1 -1
  416. package/dist/Icons/ZoomXIcon.d.ts.map +1 -1
  417. package/dist/Icons/ZoomXIcon.js +5 -8
  418. package/dist/Icons/ZoomXIcon.js.map +1 -1
  419. package/dist/Icons/ZoomYIcon.d.ts.map +1 -1
  420. package/dist/Icons/ZoomYIcon.js +5 -8
  421. package/dist/Icons/ZoomYIcon.js.map +1 -1
  422. package/dist/Icons.d.ts +28 -5
  423. package/dist/Icons.js +28 -5
  424. package/dist/IconsAnimated/PanelLeftCloseIcon.js.map +1 -1
  425. package/dist/IconsAnimated/PanelLeftOpenIcon.js.map +1 -1
  426. package/dist/Input.d.ts.map +1 -1
  427. package/dist/Input.js +2 -2
  428. package/dist/Input.js.map +1 -1
  429. package/dist/InputNumeric.d.ts.map +1 -1
  430. package/dist/InputNumeric.js.map +1 -1
  431. package/dist/InputOTP.d.ts.map +1 -1
  432. package/dist/InputOTP.js +1 -1
  433. package/dist/InputOTP.js.map +1 -1
  434. package/dist/InputSearch.d.ts.map +1 -1
  435. package/dist/InputSearch.js +7 -7
  436. package/dist/InputSearch.js.map +1 -1
  437. package/dist/Kbd.d.ts.map +1 -1
  438. package/dist/Kbd.js.map +1 -1
  439. package/dist/Label.js.map +1 -1
  440. package/dist/Meter.js +4 -4
  441. package/dist/Meter.js.map +1 -1
  442. package/dist/MultiSelect/MultiSelectBase.js.map +1 -1
  443. package/dist/MultiSelect.js.map +1 -1
  444. package/dist/Popover.d.ts.map +1 -1
  445. package/dist/Popover.js.map +1 -1
  446. package/dist/RadialMenu.d.ts.map +1 -1
  447. package/dist/RadialMenu.js.map +1 -1
  448. package/dist/RadioButton.js +1 -4
  449. package/dist/RadioButton.js.map +1 -1
  450. package/dist/RadioButtonGroup/RadioButtonGroupBase.d.ts.map +1 -1
  451. package/dist/RadioButtonGroup/RadioButtonGroupBase.js +2 -5
  452. package/dist/RadioButtonGroup/RadioButtonGroupBase.js.map +1 -1
  453. package/dist/RadioButtonGroup.d.ts.map +1 -1
  454. package/dist/RadioButtonGroup.js.map +1 -1
  455. package/dist/RadioGroup.d.ts.map +1 -1
  456. package/dist/RadioGroup.js +4 -4
  457. package/dist/RadioGroup.js.map +1 -1
  458. package/dist/Select.js +2 -2
  459. package/dist/Select.js.map +1 -1
  460. package/dist/Skeleton.js.map +1 -1
  461. package/dist/Slider.js.map +1 -1
  462. package/dist/Switch/SwitchBase.d.ts.map +1 -1
  463. package/dist/Switch/SwitchBase.js.map +1 -1
  464. package/dist/Switch.js.map +1 -1
  465. package/dist/Tabs/TabsBase.d.ts.map +1 -1
  466. package/dist/Tabs/TabsBase.js.map +1 -1
  467. package/dist/Tabs.d.ts.map +1 -1
  468. package/dist/Tabs.js.map +1 -1
  469. package/dist/Textarea.js.map +1 -1
  470. package/dist/Toast.d.ts.map +1 -1
  471. package/dist/Toast.js +2 -2
  472. package/dist/Toast.js.map +1 -1
  473. package/dist/Toggle/ToggleBase.js.map +1 -1
  474. package/dist/Toggle.d.ts.map +1 -1
  475. package/dist/Toggle.js +2 -6
  476. package/dist/Toggle.js.map +1 -1
  477. package/dist/ToggleGroup/ToggleGroupBase.d.ts.map +1 -1
  478. package/dist/ToggleGroup/ToggleGroupBase.js.map +1 -1
  479. package/dist/ToggleGroup/ToggleGroupItem.js +1 -1
  480. package/dist/ToggleGroup/ToggleGroupItem.js.map +1 -1
  481. package/dist/ToggleGroup/ToggleGroupSplitMenuItem.js +1 -1
  482. package/dist/ToggleGroup/ToggleGroupSplitMenuItem.js.map +1 -1
  483. package/dist/ToggleGroup.js +1 -9
  484. package/dist/ToggleGroup.js.map +1 -1
  485. package/dist/Tooltip.d.ts.map +1 -1
  486. package/dist/Tooltip.js +1 -4
  487. package/dist/Tooltip.js.map +1 -1
  488. package/dist/Tray.d.ts.map +1 -1
  489. package/dist/Tray.js +2 -2
  490. package/dist/Tray.js.map +1 -1
  491. package/dist/index.d.ts +28 -5
  492. package/dist/index.js +28 -5
  493. package/dist/primitives/button.js +1 -1
  494. package/dist/primitives/button.js.map +1 -1
  495. package/dist/styles/spectral.css +1 -1
  496. package/package.json +1 -1
  497. package/dist/Icons/AnnotationsIcon.d.ts.map +0 -1
  498. package/dist/Icons/AnnotationsIcon.js.map +0 -1
  499. package/dist/Icons/PanelIconClose.d.ts.map +0 -1
  500. package/dist/Icons/PanelIconClose.js +0 -35
  501. package/dist/Icons/PanelIconClose.js.map +0 -1
  502. package/dist/Icons/PanelIconOpen.d.ts.map +0 -1
  503. package/dist/Icons/PanelIconOpen.js +0 -35
  504. package/dist/Icons/PanelIconOpen.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.d.ts","names":[],"sources":["../src/components/Accordion/Accordion.tsx"],"mappings":";;;;;;KAkBY,kBAAA;AAAA,UAEF,kBAAA;EACR,UAAA,GAAa,kBAAA;EACb,QAAA,GAAW,SAAA;EACX,SAAA;EACA,aAAA;EACA,OAAA;AAAA;AAAA,UAGe,oBAAA,SAA6B,kBAAA;EAC5C,WAAA;EACA,YAAA;EACA,aAAA,IAAiB,KAAA;EACjB,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,sBAAA,SAA+B,kBAAA;EAC9C,YAAA;EACA,aAAA,IAAiB,KAAA;EACjB,IAAA;EACA,KAAA;AAAA;AAAA,KAGU,cAAA,GAAiB,oBAAA,GAAuB,sBAAA;AAAA,KAE/C,kBAAA,IAAsB,KAAA,EAAO,cAAA;EAAmB,GAAA,GAAM,GAAA,CAAI,cAAA;AAAA,MAAsB,SAAA;AAAA,KAEhF,aAAA,GAAgB,kBAAA;EACnB,OAAA,SAAgB,gBAAA;EAChB,IAAA,SAAa,aAAA;EACb,OAAA,SAAgB,gBAAA;AAAA;AAAA;EAmEhB,SAAA;EACA,GAAA;EAAA,GACG;AAAA,GACF,wBAAA,QAAgC,kBAAA,CAAmB,IAAA;EACpD,GAAA,GAAM,GAAA,CAAI,YAAA,QAAoB,kBAAA,CAAmB,IAAA;AAAA,IAClD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAQC,GAAA;EACA,SAAA;EACA,KAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,wBAAA,QAAgC,kBAAA,CAAmB,OAAA;EACpD,GAAA,GAAM,GAAA,CAAI,iBAAA;EACV,QAAA,GAAW,SAAA;EACX,KAAA,EAAO,SAAA;AAAA,IACR,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAsCC,GAAA;EACA,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,wBAAA,QAAgC,kBAAA,CAAmB,OAAA;EACpD,GAAA,GAAM,GAAA,CAAI,YAAA,QAAoB,kBAAA,CAAmB,OAAA;AAAA,IAClD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;cAeY,SAAA,EAAW,aAAA"}
1
+ {"version":3,"file":"Accordion.d.ts","names":[],"sources":["../src/components/Accordion/Accordion.tsx"],"mappings":";;;;;;KAMY,kBAAA;AAAA,UAEF,kBAAA;EACR,UAAA,GAAa,kBAAA;EACb,QAAA,GAAW,SAAA;EACX,SAAA;EACA,aAAA;EACA,OAAA;AAAA;AAAA,UAGe,oBAAA,SAA6B,kBAAA;EAC5C,WAAA;EACA,YAAA;EACA,aAAA,IAAiB,KAAA;EACjB,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,sBAAA,SAA+B,kBAAA;EAC9C,YAAA;EACA,aAAA,IAAiB,KAAA;EACjB,IAAA;EACA,KAAA;AAAA;AAAA,KAGU,cAAA,GAAiB,oBAAA,GAAuB,sBAAA;AAAA,KAE/C,kBAAA,IAAsB,KAAA,EAAO,cAAA;EAAmB,GAAA,GAAM,GAAA,CAAI,cAAA;AAAA,MAAsB,SAAA;AAAA,KAEhF,aAAA,GAAgB,kBAAA;EACnB,OAAA,SAAgB,gBAAA;EAChB,IAAA,SAAa,aAAA;EACb,OAAA,SAAgB,gBAAA;AAAA;AAAA;EAmEhB,SAAA;EACA,GAAA;EAAA,GACG;AAAA,GACF,wBAAA,QAAgC,kBAAA,CAAmB,IAAA;EACpD,GAAA,GAAM,GAAA,CAAI,YAAA,QAAoB,kBAAA,CAAmB,IAAA;AAAA,IAClD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAgBC,GAAA;EACA,SAAA;EACA,KAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,wBAAA,QAAgC,kBAAA,CAAmB,OAAA;EACpD,GAAA,GAAM,GAAA,CAAI,iBAAA;EACV,QAAA,GAAW,SAAA;EACX,KAAA,EAAO,SAAA;AAAA,IACR,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAsCC,GAAA;EACA,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,wBAAA,QAAgC,kBAAA,CAAmB,OAAA;EACpD,GAAA,GAAM,GAAA,CAAI,YAAA,QAAoB,kBAAA,CAAmB,OAAA;AAAA,IAClD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;cAkBY,SAAA,EAAW,aAAA"}
package/dist/Accordion.js CHANGED
@@ -73,7 +73,7 @@ const AccordionTrigger = ({ ref, className, title, subtitle, ...props }) => {
73
73
  ref: useMergedRef,
74
74
  ...props,
75
75
  children: [/* @__PURE__ */ jsxs("div", {
76
- className: "flex w-full flex-col gap-0.5 text-start",
76
+ className: "gap-0.5 flex w-full flex-col text-start",
77
77
  children: [/* @__PURE__ */ jsx("div", {
78
78
  className: "text-base font-medium text-text-primary",
79
79
  children: title
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.js","names":[],"sources":["../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import { ChevronDownIcon } from '@components/Icons'\nimport { useAccordionAutoScroll } from '@hooks/useAccordionAutoScroll'\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\nimport { cn } from '@utils/twUtils'\nimport {\n Children,\n cloneElement,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useRef,\n type ComponentPropsWithoutRef,\n type ComponentRef,\n type ReactNode,\n type Ref,\n} from 'react'\n\nexport type AutoScrollBehavior = 'never' | 'mobile' | 'always'\n\ninterface BaseAccordionProps {\n autoScroll?: AutoScrollBehavior\n children?: ReactNode\n className?: string\n scrollPadding?: number\n variant?: 'default' | 'contained' | 'separated'\n}\n\nexport interface AccordionSingleProps extends BaseAccordionProps {\n collapsible?: boolean\n defaultValue?: string\n onValueChange?: (value: string) => void\n type: 'single'\n value?: string\n}\n\nexport interface AccordionMultipleProps extends BaseAccordionProps {\n defaultValue?: string[]\n onValueChange?: (value: string[]) => void\n type: 'multiple'\n value?: string[]\n}\n\nexport type AccordionProps = AccordionSingleProps | AccordionMultipleProps\n\ntype AccordionComponent = (props: AccordionProps & { ref?: Ref<HTMLDivElement> }) => ReactNode\n\ntype AccordionType = AccordionComponent & {\n Content: typeof AccordionContent\n Item: typeof AccordionItem\n Trigger: typeof AccordionTrigger\n}\n\ninterface ScrollOptions {\n autoScroll: AutoScrollBehavior\n scrollPadding: number\n}\n\nconst variantStyles = {\n default: 'shadow-none',\n contained: 'rounded-md border border-level-four',\n separated: 'rounded-none gap-2',\n}\n\nconst itemStyles = {\n default: 'w-full py-4',\n contained: 'not-last:border-b border-level-four p-4',\n separated: 'border border-level-four rounded-md p-4',\n}\n\nconst AccordionContext = createContext<{ variant: BaseAccordionProps['variant'] }>({ variant: 'default' })\n\nconst AccordionRoot = ({\n className,\n ref,\n variant = 'default',\n ...props\n}: AccordionProps & {\n ref?: Ref<HTMLDivElement>\n}) => {\n const { autoScroll = 'never', scrollPadding = -20, children, ...rest } = props\n\n const accordionContext: ScrollOptions = {\n autoScroll,\n scrollPadding,\n }\n\n const rootProps = {\n ...rest,\n ref,\n }\n\n return (\n <AccordionContext.Provider value={{ variant }}>\n <AccordionPrimitive.Root\n {...rootProps}\n className={cn('accordion-wrapper flex flex-col', variantStyles[variant], className)}\n data-auto-scroll={autoScroll}\n data-scroll-options={JSON.stringify(accordionContext)}\n data-scroll-padding={scrollPadding}\n data-slot='accordion'\n data-testid='spectral-accordion'\n {...(props.type === 'single' ? { collapsible: true } : {})}\n >\n {Children.map(children, (child: ReactNode) => {\n if (isValidElement(child)) {\n return cloneElement(child, { variant } as { variant: typeof variant })\n }\n return child\n })}\n </AccordionPrimitive.Root>\n </AccordionContext.Provider>\n )\n}\nAccordionRoot.displayName = 'Accordion'\n\nexport const AccordionItem = ({\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> & {\n ref?: Ref<ComponentRef<typeof AccordionPrimitive.Item>>\n}) => {\n const { variant = 'default' } = useContext(AccordionContext)\n\n return <AccordionPrimitive.Item className={cn('w-full', itemStyles[variant], className)} data-slot='accordion-item' data-testid='spectral-accordion-item' ref={ref} {...props} />\n}\nAccordionItem.displayName = 'AccordionItem'\n\nexport const AccordionTrigger = ({\n ref,\n className,\n title,\n subtitle,\n ...props\n}: ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> & {\n ref?: Ref<HTMLButtonElement>\n subtitle?: ReactNode\n title: ReactNode\n}) => {\n const triggerRef = useRef<HTMLButtonElement>(null)\n const handleAccordionOpen = useAccordionAutoScroll(triggerRef)\n\n const useMergedRef = useCallback(\n (element: HTMLButtonElement) => {\n if (typeof ref === 'function') {\n ref(element)\n } else if (ref) {\n ref.current = element\n }\n triggerRef.current = element\n },\n [ref],\n )\n\n return (\n <AccordionPrimitive.Header className='m-0 flex'>\n <AccordionPrimitive.Trigger\n className={cn('text-sm font-normal flex flex-1 items-center justify-between text-text-primary transition-colors hover:no-underline', 'disabled:cursor-not-allowed [&[data-state=open]>svg]:rotate-180', className)}\n data-slot='accordion-trigger'\n data-testid='spectral-accordion-trigger'\n onClick={handleAccordionOpen}\n ref={useMergedRef}\n {...props}\n >\n <div className='flex w-full flex-col gap-0.5 text-start'>\n <div className='text-base font-medium text-text-primary'>{title}</div>\n {subtitle && <div className='text-sm font-normal text-text-secondary'>{subtitle}</div>}\n </div>\n <ChevronDownIcon className='shrink-0 transition-transform duration-200' />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\nAccordionTrigger.displayName = 'AccordionTrigger'\n\nexport const AccordionContent = ({\n ref,\n className,\n children,\n ...props\n}: ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> & {\n ref?: Ref<ComponentRef<typeof AccordionPrimitive.Content>>\n}) => (\n <AccordionPrimitive.Content\n className={cn('pt-4 text-sm overflow-hidden motion-safe:data-[state=closed]:animate-accordion-up motion-safe:data-[state=open]:animate-accordion-down', className)}\n data-slot='accordion-content'\n data-testid='spectral-accordion-content'\n ref={ref}\n {...props}\n >\n <div className='px-1 pb-4 pt-0' data-slot='accordion-content-inner'>\n {children}\n </div>\n </AccordionPrimitive.Content>\n)\nAccordionContent.displayName = 'AccordionContent'\n\nexport const Accordion: AccordionType = Object.assign(AccordionRoot, {\n Content: AccordionContent,\n Item: AccordionItem,\n Trigger: AccordionTrigger,\n})\n"],"mappings":";;;;;;;;;AA0DA,MAAM,gBAAgB;CACpB,SAAS;CACT,WAAW;CACX,WAAW;CACb;AAEA,MAAM,aAAa;CACjB,SAAS;CACT,WAAW;CACX,WAAW;CACb;AAEA,MAAM,mBAAmB,cAA0D,EAAE,SAAS,WAAW,CAAA;AAEzG,MAAM,iBAAiB,EACrB,WACA,KACA,UAAU,WACV,GAAG,YAGC;CACJ,MAAM,EAAE,aAAa,SAAS,gBAAgB,KAAK,UAAU,GAAG,SAAS;CAEzE,MAAM,mBAAkC;EACtC;EACA;EACF;CAEA,MAAM,YAAY;EAChB,GAAG;EACH;EACF;AAEA,QACE,oBAAC,iBAAiB,UAAlB;EAA2B,OAAO,EAAE,SAAS;YAC3C,oBAAC,mBAAmB,MAApB;GACE,GAAI;GACJ,WAAW,GAAG,mCAAmC,cAAc,UAAU,UAAU;GACnF,oBAAkB;GAClB,uBAAqB,KAAK,UAAU,iBAAiB;GACrD,uBAAqB;GACrB,aAAU;GAEV,GAAK,MAAM,SAAS,WAAW,EAAE,aAAa,MAAM,GAAG,EAAE;aAExD,SAAS,IAAI,WAAW,UAAqB;AAC5C,QAAI,eAAe,MAAM,CACvB,QAAO,aAAa,OAAO,EAAE,SAAS,CAA+B;AAEvE,WAAO;KACP;GACqB;EACA;;AAG/B,cAAc,cAAc;AAE5B,MAAa,iBAAiB,EAC5B,WACA,KACA,GAAG,YAGC;CACJ,MAAM,EAAE,UAAU,cAAc,WAAW,iBAAgB;AAE3D,QAAO,oBAAC,mBAAmB,MAApB;EAAyB,WAAW,GAAG,UAAU,WAAW,UAAU,UAAU;EAAE,aAAU;EAA4D;EAAK,GAAI;EAAQ;;AAElL,cAAc,cAAc;AAE5B,MAAa,oBAAoB,EAC/B,KACA,WACA,OACA,UACA,GAAG,YAKC;CACJ,MAAM,aAAa,OAA0B,KAAI;CACjD,MAAM,sBAAsB,uBAAuB,WAAU;CAE7D,MAAM,eAAe,aAClB,YAA+B;AAC9B,MAAI,OAAO,QAAQ,WACjB,KAAI,QAAO;WACF,IACT,KAAI,UAAU;AAEhB,aAAW,UAAU;IAEvB,CAAC,IAAI,CACP;AAEA,QACE,oBAAC,mBAAmB,QAApB;EAA2B,WAAU;YACnC,qBAAC,mBAAmB,SAApB;GACE,WAAW,GAAG,uHAAuH,mEAAmE,UAAU;GAClN,aAAU;GAEV,SAAS;GACT,KAAK;GACL,GAAI;aANN,CAQE,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,OAAD;KAAK,WAAU;eAA2C;KAAW,GACpE,YAAY,oBAAC,OAAD;KAAK,WAAU;eAA2C;KAAe,EACnF;OACL,oBAAC,iBAAD,EAAiB,WAAU,8CAA8C,EAC/C;;EACH;;AAG/B,iBAAiB,cAAc;AAE/B,MAAa,oBAAoB,EAC/B,KACA,WACA,UACA,GAAG,YAIH,oBAAC,mBAAmB,SAApB;CACE,WAAW,GAAG,0IAA0I,UAAU;CAClK,aAAU;CAEL;CACL,GAAI;WAEJ,oBAAC,OAAD;EAAK,WAAU;EAAiB,aAAU;EACvC;EACE;CACqB;AAE9B,iBAAiB,cAAc;AAE/B,MAAa,YAA2B,OAAO,OAAO,eAAe;CACnE,SAAS;CACT,MAAM;CACN,SAAS;CACV,CAAA"}
1
+ {"version":3,"file":"Accordion.js","names":[],"sources":["../src/components/Accordion/Accordion.tsx"],"sourcesContent":["import { ChevronDownIcon } from '@components/Icons'\nimport { useAccordionAutoScroll } from '@hooks/useAccordionAutoScroll'\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\nimport { cn } from '@utils/twUtils'\nimport { Children, cloneElement, createContext, isValidElement, useCallback, useContext, useRef, type ComponentPropsWithoutRef, type ComponentRef, type ReactNode, type Ref } from 'react'\n\nexport type AutoScrollBehavior = 'never' | 'mobile' | 'always'\n\ninterface BaseAccordionProps {\n autoScroll?: AutoScrollBehavior\n children?: ReactNode\n className?: string\n scrollPadding?: number\n variant?: 'default' | 'contained' | 'separated'\n}\n\nexport interface AccordionSingleProps extends BaseAccordionProps {\n collapsible?: boolean\n defaultValue?: string\n onValueChange?: (value: string) => void\n type: 'single'\n value?: string\n}\n\nexport interface AccordionMultipleProps extends BaseAccordionProps {\n defaultValue?: string[]\n onValueChange?: (value: string[]) => void\n type: 'multiple'\n value?: string[]\n}\n\nexport type AccordionProps = AccordionSingleProps | AccordionMultipleProps\n\ntype AccordionComponent = (props: AccordionProps & { ref?: Ref<HTMLDivElement> }) => ReactNode\n\ntype AccordionType = AccordionComponent & {\n Content: typeof AccordionContent\n Item: typeof AccordionItem\n Trigger: typeof AccordionTrigger\n}\n\ninterface ScrollOptions {\n autoScroll: AutoScrollBehavior\n scrollPadding: number\n}\n\nconst variantStyles = {\n default: 'shadow-none',\n contained: 'rounded-md border border-level-four',\n separated: 'rounded-none gap-2',\n}\n\nconst itemStyles = {\n default: 'w-full py-4',\n contained: 'not-last:border-b border-level-four p-4',\n separated: 'border border-level-four rounded-md p-4',\n}\n\nconst AccordionContext = createContext<{ variant: BaseAccordionProps['variant'] }>({ variant: 'default' })\n\nconst AccordionRoot = ({\n className,\n ref,\n variant = 'default',\n ...props\n}: AccordionProps & {\n ref?: Ref<HTMLDivElement>\n}) => {\n const { autoScroll = 'never', scrollPadding = -20, children, ...rest } = props\n\n const accordionContext: ScrollOptions = {\n autoScroll,\n scrollPadding,\n }\n\n const rootProps = {\n ...rest,\n ref,\n }\n\n return (\n <AccordionContext.Provider value={{ variant }}>\n <AccordionPrimitive.Root\n {...rootProps}\n className={cn('accordion-wrapper flex flex-col', variantStyles[variant], className)}\n data-auto-scroll={autoScroll}\n data-scroll-options={JSON.stringify(accordionContext)}\n data-scroll-padding={scrollPadding}\n data-slot='accordion'\n data-testid='spectral-accordion'\n {...(props.type === 'single' ? { collapsible: true } : {})}\n >\n {Children.map(children, (child: ReactNode) => {\n if (isValidElement(child)) {\n return cloneElement(child, { variant } as { variant: typeof variant })\n }\n return child\n })}\n </AccordionPrimitive.Root>\n </AccordionContext.Provider>\n )\n}\nAccordionRoot.displayName = 'Accordion'\n\nexport const AccordionItem = ({\n className,\n ref,\n ...props\n}: ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> & {\n ref?: Ref<ComponentRef<typeof AccordionPrimitive.Item>>\n}) => {\n const { variant = 'default' } = useContext(AccordionContext)\n\n return (\n <AccordionPrimitive.Item\n className={cn('w-full', itemStyles[variant], className)}\n data-slot='accordion-item'\n data-testid='spectral-accordion-item'\n ref={ref}\n {...props}\n />\n )\n}\nAccordionItem.displayName = 'AccordionItem'\n\nexport const AccordionTrigger = ({\n ref,\n className,\n title,\n subtitle,\n ...props\n}: ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> & {\n ref?: Ref<HTMLButtonElement>\n subtitle?: ReactNode\n title: ReactNode\n}) => {\n const triggerRef = useRef<HTMLButtonElement>(null)\n const handleAccordionOpen = useAccordionAutoScroll(triggerRef)\n\n const useMergedRef = useCallback(\n (element: HTMLButtonElement) => {\n if (typeof ref === 'function') {\n ref(element)\n } else if (ref) {\n ref.current = element\n }\n triggerRef.current = element\n },\n [ref],\n )\n\n return (\n <AccordionPrimitive.Header className='m-0 flex'>\n <AccordionPrimitive.Trigger\n className={cn('text-sm font-normal flex flex-1 items-center justify-between text-text-primary transition-colors hover:no-underline', 'disabled:cursor-not-allowed [&[data-state=open]>svg]:rotate-180', className)}\n data-slot='accordion-trigger'\n data-testid='spectral-accordion-trigger'\n onClick={handleAccordionOpen}\n ref={useMergedRef}\n {...props}\n >\n <div className='gap-0.5 flex w-full flex-col text-start'>\n <div className='text-base font-medium text-text-primary'>{title}</div>\n {subtitle && <div className='text-sm font-normal text-text-secondary'>{subtitle}</div>}\n </div>\n <ChevronDownIcon className='shrink-0 transition-transform duration-200' />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n )\n}\nAccordionTrigger.displayName = 'AccordionTrigger'\n\nexport const AccordionContent = ({\n ref,\n className,\n children,\n ...props\n}: ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> & {\n ref?: Ref<ComponentRef<typeof AccordionPrimitive.Content>>\n}) => (\n <AccordionPrimitive.Content\n className={cn('pt-4 text-sm overflow-hidden motion-safe:data-[state=closed]:animate-accordion-up motion-safe:data-[state=open]:animate-accordion-down', className)}\n data-slot='accordion-content'\n data-testid='spectral-accordion-content'\n ref={ref}\n {...props}\n >\n <div\n className='px-1 pb-4 pt-0'\n data-slot='accordion-content-inner'\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n)\nAccordionContent.displayName = 'AccordionContent'\n\nexport const Accordion: AccordionType = Object.assign(AccordionRoot, {\n Content: AccordionContent,\n Item: AccordionItem,\n Trigger: AccordionTrigger,\n})\n"],"mappings":";;;;;;;;;AA8CA,MAAM,gBAAgB;CACpB,SAAS;CACT,WAAW;CACX,WAAW;CACb;AAEA,MAAM,aAAa;CACjB,SAAS;CACT,WAAW;CACX,WAAW;CACb;AAEA,MAAM,mBAAmB,cAA0D,EAAE,SAAS,WAAW,CAAA;AAEzG,MAAM,iBAAiB,EACrB,WACA,KACA,UAAU,WACV,GAAG,YAGC;CACJ,MAAM,EAAE,aAAa,SAAS,gBAAgB,KAAK,UAAU,GAAG,SAAS;CAEzE,MAAM,mBAAkC;EACtC;EACA;EACF;CAEA,MAAM,YAAY;EAChB,GAAG;EACH;EACF;AAEA,QACE,oBAAC,iBAAiB,UAAlB;EAA2B,OAAO,EAAE,SAAS;YAC3C,oBAAC,mBAAmB,MAApB;GACE,GAAI;GACJ,WAAW,GAAG,mCAAmC,cAAc,UAAU,UAAU;GACnF,oBAAkB;GAClB,uBAAqB,KAAK,UAAU,iBAAiB;GACrD,uBAAqB;GACrB,aAAU;GAEV,GAAK,MAAM,SAAS,WAAW,EAAE,aAAa,MAAM,GAAG,EAAE;aAExD,SAAS,IAAI,WAAW,UAAqB;AAC5C,QAAI,eAAe,MAAM,CACvB,QAAO,aAAa,OAAO,EAAE,SAAS,CAA+B;AAEvE,WAAO;KACP;GACqB;EACA;;AAG/B,cAAc,cAAc;AAE5B,MAAa,iBAAiB,EAC5B,WACA,KACA,GAAG,YAGC;CACJ,MAAM,EAAE,UAAU,cAAc,WAAW,iBAAgB;AAE3D,QACE,oBAAC,mBAAmB,MAApB;EACE,WAAW,GAAG,UAAU,WAAW,UAAU,UAAU;EACvD,aAAU;EAEL;EACL,GAAI;EACL;;AAGL,cAAc,cAAc;AAE5B,MAAa,oBAAoB,EAC/B,KACA,WACA,OACA,UACA,GAAG,YAKC;CACJ,MAAM,aAAa,OAA0B,KAAI;CACjD,MAAM,sBAAsB,uBAAuB,WAAU;CAE7D,MAAM,eAAe,aAClB,YAA+B;AAC9B,MAAI,OAAO,QAAQ,WACjB,KAAI,QAAO;WACF,IACT,KAAI,UAAU;AAEhB,aAAW,UAAU;IAEvB,CAAC,IAAI,CACP;AAEA,QACE,oBAAC,mBAAmB,QAApB;EAA2B,WAAU;YACnC,qBAAC,mBAAmB,SAApB;GACE,WAAW,GAAG,uHAAuH,mEAAmE,UAAU;GAClN,aAAU;GAEV,SAAS;GACT,KAAK;GACL,GAAI;aANN,CAQE,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,OAAD;KAAK,WAAU;eAA2C;KAAW,GACpE,YAAY,oBAAC,OAAD;KAAK,WAAU;eAA2C;KAAe,EACnF;OACL,oBAAC,iBAAD,EAAiB,WAAU,8CAA8C,EAC/C;;EACH;;AAG/B,iBAAiB,cAAc;AAE/B,MAAa,oBAAoB,EAC/B,KACA,WACA,UACA,GAAG,YAIH,oBAAC,mBAAmB,SAApB;CACE,WAAW,GAAG,0IAA0I,UAAU;CAClK,aAAU;CAEL;CACL,GAAI;WAEJ,oBAAC,OAAD;EACE,WAAU;EACV,aAAU;EAET;EACE;CACqB;AAE9B,iBAAiB,cAAc;AAE/B,MAAa,YAA2B,OAAO,OAAO,eAAe;CACnE,SAAS;CACT,MAAM;CACN,SAAS;CACV,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"AlertBase.d.ts","names":[],"sources":["../../src/components/Alert/AlertBase.tsx"],"mappings":";;;;;;;;cAMM,aAAA,GAAa,KAAA;;IAiBlB,iCAAA,CAAA,SAAA;AAAA,KAUI,YAAA;AAAA;EAGH,GAAA;EACA,SAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA,CAAe,cAAA,IAChB,YAAA,QAAoB,aAAA;EAClB,GAAA,GAAM,GAAA,CAAI,cAAA;AAAA,IACX,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAKD,SAAA;EACA,GAAA;EAAA,GACG;AAAA,GACF,cAAA,CAAe,cAAA;EAChB,GAAA,GAAM,GAAA,CAAI,cAAA;AAAA,IACX,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAKC,SAAA;EACA,GAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA,CAAe,cAAA;EAChB,GAAA,GAAM,GAAA,CAAI,cAAA;EACV,OAAA,EAAS,YAAA;AAAA,IACV,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAKC,SAAA;EACA,GAAA;EAAA,GACG;AAAA,GACF,cAAA,CAAe,cAAA;EAChB,GAAA,GAAM,GAAA,CAAI,cAAA;EACV,OAAA,EAAS,YAAA;AAAA,IACV,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAKC,SAAA;EACA,GAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA,CAAe,aAAA;EAChB,GAAA,GAAM,GAAA,CAAI,aAAA;EACV,OAAA,EAAS,YAAA;AAAA,IACV,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;UAeS,gBAAA;EACR,QAAA,EAAU,SAAA;EACV,SAAA,GAAY,OAAA,GAAU,gBAAA;AAAA;AAAA,cAGX,WAAA;EAAW,QAAA;EAAA;AAAA,GAA6B,gBAAA,KAAgB,OAAA,CAAA,WAAA"}
1
+ {"version":3,"file":"AlertBase.d.ts","names":[],"sources":["../../src/components/Alert/AlertBase.tsx"],"mappings":";;;;;;;;cAMM,aAAA,GAAa,KAAA;;IAgBlB,iCAAA,CAAA,SAAA;AAAA,KAUI,YAAA;AAAA;EAGH,GAAA;EACA,SAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA,CAAe,cAAA,IAChB,YAAA,QAAoB,aAAA;EAClB,GAAA,GAAM,GAAA,CAAI,cAAA;AAAA,IACX,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAcD,SAAA;EACA,GAAA;EAAA,GACG;AAAA,GACF,cAAA,CAAe,cAAA;EAChB,GAAA,GAAM,GAAA,CAAI,cAAA;AAAA,IACX,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAYC,SAAA;EACA,GAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA,CAAe,cAAA;EAChB,GAAA,GAAM,GAAA,CAAI,cAAA;EACV,OAAA,EAAS,YAAA;AAAA,IACV,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAaC,SAAA;EACA,GAAA;EAAA,GACG;AAAA,GACF,cAAA,CAAe,cAAA;EAChB,GAAA,GAAM,GAAA,CAAI,cAAA;EACV,OAAA,EAAS,YAAA;AAAA,IACV,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAaC,SAAA;EACA,GAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA,CAAe,aAAA;EAChB,GAAA,GAAM,GAAA,CAAI,aAAA;EACV,OAAA,EAAS,YAAA;AAAA,IACV,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;UAeS,gBAAA;EACR,QAAA,EAAU,SAAA;EACV,SAAA,GAAY,OAAA,GAAU,gBAAA;AAAA;AAAA,cAGX,WAAA;EAAW,QAAA;EAAA;AAAA,GAA6B,gBAAA,KAAgB,OAAA,CAAA,WAAA"}
@@ -7,8 +7,7 @@ import { cva } from "class-variance-authority";
7
7
  import { createPortal } from "react-dom";
8
8
 
9
9
  //#region src/components/Alert/AlertBase.tsx
10
- const alertVariants = cva(`top-2 max-w-md rounded-md px-4 py-3 text-sm gap-y-1 translate-y-0 fixed left-1/2 z-50 flex w-full -translate-x-1/2 scale-100 transform flex-col border opacity-100 transition-opacity duration-200
11
- ease-out motion-safe:duration-200 motion-safe:animate-in motion-safe:fade-in motion-safe:slide-in-from-top-full shadow-elevation-2`, {
10
+ const alertVariants = cva(`top-2 max-w-md rounded-md px-4 py-3 text-sm gap-y-1 translate-y-0 fixed left-1/2 z-50 flex w-full -translate-x-1/2 scale-100 transform flex-col border opacity-100 shadow-elevation-2 transition-opacity duration-200 ease-out motion-safe:duration-200 motion-safe:animate-in motion-safe:fade-in motion-safe:slide-in-from-top-full`, {
12
11
  variants: { variant: {
13
12
  default: "border-alert-border bg-alert-bg",
14
13
  success: "border-alert-success-border bg-alert-success-bg",
@@ -48,7 +47,7 @@ const AlertTitle = ({ className, ref, variant, ...props }) => /* @__PURE__ */ js
48
47
  });
49
48
  AlertTitle.displayName = "AlertTitle";
50
49
  const AlertDescription = ({ className, ref, ...props }) => /* @__PURE__ */ jsx("div", {
51
- className: cn("gap-1 text-text-primary text-sm [&_p]:leading-relaxed grid justify-items-start", className),
50
+ className: cn("gap-1 text-sm [&_p]:leading-relaxed grid justify-items-start text-text-primary", className),
52
51
  "data-slot": "alert-description",
53
52
  ref,
54
53
  ...props
@@ -1 +1 @@
1
- {"version":3,"file":"AlertBase.js","names":[],"sources":["../../src/components/Alert/AlertBase.tsx"],"sourcesContent":["import { CloseIcon } from '@components/Icons'\nimport { cn } from '@utils/twUtils'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { useEffect, useState, type HTMLAttributes, type ReactNode, type Ref } from 'react'\nimport { createPortal } from 'react-dom'\n\nconst alertVariants = cva(\n `top-2 max-w-md rounded-md px-4 py-3 text-sm gap-y-1 translate-y-0 fixed left-1/2 z-50 flex w-full -translate-x-1/2 scale-100 transform flex-col border opacity-100 transition-opacity duration-200\n ease-out motion-safe:duration-200 motion-safe:animate-in motion-safe:fade-in motion-safe:slide-in-from-top-full shadow-elevation-2`,\n {\n variants: {\n variant: {\n default: 'border-alert-border bg-alert-bg',\n success: 'border-alert-success-border bg-alert-success-bg',\n warning: 'border-alert-warning-border bg-alert-warning-bg',\n danger: 'border-alert-danger-border bg-alert-danger-bg',\n info: 'border-alert-info-border bg-alert-info-bg',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\nconst titleTextColors = {\n success: 'text-alert-success-text',\n warning: 'text-alert-warning-text',\n danger: 'text-alert-danger-text',\n info: 'text-alert-info-text',\n default: 'text-alert-text',\n}\n\ntype AlertVariant = 'default' | 'success' | 'warning' | 'danger' | 'info'\n\nexport const AlertBase = ({\n ref,\n className,\n variant,\n ...props\n}: HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof alertVariants> & {\n ref?: Ref<HTMLDivElement>\n }) => <div className={cn(alertVariants({ variant }), className)} data-slot='alert' data-testid='spectral-alert' ref={ref} role='alert' {...props} />\n\nAlertBase.displayName = 'AlertBase'\n\nexport const AlertHeader = ({\n className,\n ref,\n ...props\n}: HTMLAttributes<HTMLDivElement> & {\n ref?: Ref<HTMLDivElement>\n}) => <div className={cn('gap-2 flex items-center [&>svg]:shrink-0', className)} data-slot='alert-header' ref={ref} {...props} />\n\nAlertHeader.displayName = 'AlertHeader'\n\nexport const AlertTitle = ({\n className,\n ref,\n variant,\n ...props\n}: HTMLAttributes<HTMLDivElement> & {\n ref?: Ref<HTMLDivElement>\n variant: AlertVariant\n}) => <div className={cn(titleTextColors[variant], 'font-medium text-lg tracking-tight line-clamp-1 flex-1', className)} data-slot='alert-title' data-testid='spectral-alert-title' ref={ref} {...props} />\n\nAlertTitle.displayName = 'AlertTitle'\n\nexport const AlertDescription = ({\n className,\n ref,\n ...props\n}: HTMLAttributes<HTMLDivElement> & {\n ref?: Ref<HTMLDivElement>\n variant: AlertVariant\n}) => <div className={cn('gap-1 text-text-primary text-sm [&_p]:leading-relaxed grid justify-items-start', className)} data-slot='alert-description' data-testid='spectral-alert-description' ref={ref} {...props} />\n\nAlertDescription.displayName = 'AlertDescription'\n\nexport const AlertCloseButton = ({\n className,\n ref,\n variant,\n ...props\n}: HTMLAttributes<SVGSVGElement> & {\n ref?: Ref<SVGSVGElement>\n variant: AlertVariant\n}) => (\n <CloseIcon\n aria-label='Close alert'\n className={cn(titleTextColors[variant], 'rounded shrink-0 cursor-pointer outline-transparent focus-visible:outline-1 focus-visible:outline-offset-1 focus-visible:outline-text-secondary', className)}\n data-slot='close-icon'\n data-testid='spectral-alert-close-button'\n ref={ref}\n size={18}\n tabIndex={0}\n {...props}\n />\n)\n\nAlertCloseButton.displayName = 'AlertCloseButton'\n\ninterface AlertPortalProps {\n children: ReactNode\n container?: Element | DocumentFragment\n}\n\nexport const AlertPortal = ({ children, container }: AlertPortalProps) => {\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n return () => setMounted(false)\n }, [])\n\n if (!mounted) return null\n\n return createPortal(children, container ?? document.body)\n}\n"],"mappings":";;;;;;;;;AAMA,MAAM,gBAAgB,IACpB;uIAEA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,SAAS;EACT,SAAS;EACT,QAAQ;EACR,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACH;AAEA,MAAM,kBAAkB;CACtB,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,SAAS;CACX;AAIA,MAAa,aAAa,EACxB,KACA,WACA,SACA,GAAG,YAIG,oBAAC,OAAD;CAAK,WAAW,GAAG,cAAc,EAAE,SAAS,CAAC,EAAE,UAAU;CAAE,aAAU;CAA0C;CAAK,MAAK;CAAQ,GAAI;CAAQ;AAErJ,UAAU,cAAc;AAExB,MAAa,eAAe,EAC1B,WACA,KACA,GAAG,YAGC,oBAAC,OAAD;CAAK,WAAW,GAAG,4CAA4C,UAAU;CAAE,aAAU;CAAoB;CAAK,GAAI;CAAQ;AAEhI,YAAY,cAAc;AAE1B,MAAa,cAAc,EACzB,WACA,KACA,SACA,GAAG,YAIC,oBAAC,OAAD;CAAK,WAAW,GAAG,gBAAgB,UAAU,0DAA0D,UAAU;CAAE,aAAU;CAAsD;CAAK,GAAI;CAAQ;AAE1M,WAAW,cAAc;AAEzB,MAAa,oBAAoB,EAC/B,WACA,KACA,GAAG,YAIC,oBAAC,OAAD;CAAK,WAAW,GAAG,kFAAkF,UAAU;CAAE,aAAU;CAAkE;CAAK,GAAI;CAAQ;AAEpN,iBAAiB,cAAc;AAE/B,MAAa,oBAAoB,EAC/B,WACA,KACA,SACA,GAAG,YAKH,oBAAC,WAAD;CACE,cAAW;CACX,WAAW,GAAG,gBAAgB,UAAU,mJAAmJ,UAAU;CACrM,aAAU;CAEL;CACL,MAAM;CACN,UAAU;CACV,GAAI;CACL;AAGH,iBAAiB,cAAc;AAO/B,MAAa,eAAe,EAAE,UAAU,gBAAkC;CACxE,MAAM,CAAC,SAAS,cAAc,SAAS,MAAK;AAE5C,iBAAgB;AACd,aAAW,KAAI;AACf,eAAa,WAAW,MAAK;IAC5B,EAAE,CAAA;AAEL,KAAI,CAAC,QAAS,QAAO;AAErB,QAAO,aAAa,UAAU,aAAa,SAAS,KAAI"}
1
+ {"version":3,"file":"AlertBase.js","names":[],"sources":["../../src/components/Alert/AlertBase.tsx"],"sourcesContent":["import { CloseIcon } from '@components/Icons'\nimport { cn } from '@utils/twUtils'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { useEffect, useState, type HTMLAttributes, type ReactNode, type Ref } from 'react'\nimport { createPortal } from 'react-dom'\n\nconst alertVariants = cva(\n `top-2 max-w-md rounded-md px-4 py-3 text-sm gap-y-1 translate-y-0 fixed left-1/2 z-50 flex w-full -translate-x-1/2 scale-100 transform flex-col border opacity-100 shadow-elevation-2 transition-opacity duration-200 ease-out motion-safe:duration-200 motion-safe:animate-in motion-safe:fade-in motion-safe:slide-in-from-top-full`,\n {\n variants: {\n variant: {\n default: 'border-alert-border bg-alert-bg',\n success: 'border-alert-success-border bg-alert-success-bg',\n warning: 'border-alert-warning-border bg-alert-warning-bg',\n danger: 'border-alert-danger-border bg-alert-danger-bg',\n info: 'border-alert-info-border bg-alert-info-bg',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\nconst titleTextColors = {\n success: 'text-alert-success-text',\n warning: 'text-alert-warning-text',\n danger: 'text-alert-danger-text',\n info: 'text-alert-info-text',\n default: 'text-alert-text',\n}\n\ntype AlertVariant = 'default' | 'success' | 'warning' | 'danger' | 'info'\n\nexport const AlertBase = ({\n ref,\n className,\n variant,\n ...props\n}: HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof alertVariants> & {\n ref?: Ref<HTMLDivElement>\n }) => (\n <div\n className={cn(alertVariants({ variant }), className)}\n data-slot='alert'\n data-testid='spectral-alert'\n ref={ref}\n role='alert'\n {...props}\n />\n)\n\nAlertBase.displayName = 'AlertBase'\n\nexport const AlertHeader = ({\n className,\n ref,\n ...props\n}: HTMLAttributes<HTMLDivElement> & {\n ref?: Ref<HTMLDivElement>\n}) => (\n <div\n className={cn('gap-2 flex items-center [&>svg]:shrink-0', className)}\n data-slot='alert-header'\n ref={ref}\n {...props}\n />\n)\n\nAlertHeader.displayName = 'AlertHeader'\n\nexport const AlertTitle = ({\n className,\n ref,\n variant,\n ...props\n}: HTMLAttributes<HTMLDivElement> & {\n ref?: Ref<HTMLDivElement>\n variant: AlertVariant\n}) => (\n <div\n className={cn(titleTextColors[variant], 'font-medium text-lg tracking-tight line-clamp-1 flex-1', className)}\n data-slot='alert-title'\n data-testid='spectral-alert-title'\n ref={ref}\n {...props}\n />\n)\n\nAlertTitle.displayName = 'AlertTitle'\n\nexport const AlertDescription = ({\n className,\n ref,\n ...props\n}: HTMLAttributes<HTMLDivElement> & {\n ref?: Ref<HTMLDivElement>\n variant: AlertVariant\n}) => (\n <div\n className={cn('gap-1 text-sm [&_p]:leading-relaxed grid justify-items-start text-text-primary', className)}\n data-slot='alert-description'\n data-testid='spectral-alert-description'\n ref={ref}\n {...props}\n />\n)\n\nAlertDescription.displayName = 'AlertDescription'\n\nexport const AlertCloseButton = ({\n className,\n ref,\n variant,\n ...props\n}: HTMLAttributes<SVGSVGElement> & {\n ref?: Ref<SVGSVGElement>\n variant: AlertVariant\n}) => (\n <CloseIcon\n aria-label='Close alert'\n className={cn(titleTextColors[variant], 'rounded shrink-0 cursor-pointer outline-transparent focus-visible:outline-1 focus-visible:outline-offset-1 focus-visible:outline-text-secondary', className)}\n data-slot='close-icon'\n data-testid='spectral-alert-close-button'\n ref={ref}\n size={18}\n tabIndex={0}\n {...props}\n />\n)\n\nAlertCloseButton.displayName = 'AlertCloseButton'\n\ninterface AlertPortalProps {\n children: ReactNode\n container?: Element | DocumentFragment\n}\n\nexport const AlertPortal = ({ children, container }: AlertPortalProps) => {\n const [mounted, setMounted] = useState(false)\n\n useEffect(() => {\n setMounted(true)\n return () => setMounted(false)\n }, [])\n\n if (!mounted) return null\n\n return createPortal(children, container ?? document.body)\n}\n"],"mappings":";;;;;;;;;AAMA,MAAM,gBAAgB,IACpB,yUACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,SAAS;EACT,SAAS;EACT,QAAQ;EACR,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACH;AAEA,MAAM,kBAAkB;CACtB,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,SAAS;CACX;AAIA,MAAa,aAAa,EACxB,KACA,WACA,SACA,GAAG,YAKH,oBAAC,OAAD;CACE,WAAW,GAAG,cAAc,EAAE,SAAS,CAAC,EAAE,UAAU;CACpD,aAAU;CAEL;CACL,MAAK;CACL,GAAI;CACL;AAGH,UAAU,cAAc;AAExB,MAAa,eAAe,EAC1B,WACA,KACA,GAAG,YAIH,oBAAC,OAAD;CACE,WAAW,GAAG,4CAA4C,UAAU;CACpE,aAAU;CACL;CACL,GAAI;CACL;AAGH,YAAY,cAAc;AAE1B,MAAa,cAAc,EACzB,WACA,KACA,SACA,GAAG,YAKH,oBAAC,OAAD;CACE,WAAW,GAAG,gBAAgB,UAAU,0DAA0D,UAAU;CAC5G,aAAU;CAEL;CACL,GAAI;CACL;AAGH,WAAW,cAAc;AAEzB,MAAa,oBAAoB,EAC/B,WACA,KACA,GAAG,YAKH,oBAAC,OAAD;CACE,WAAW,GAAG,kFAAkF,UAAU;CAC1G,aAAU;CAEL;CACL,GAAI;CACL;AAGH,iBAAiB,cAAc;AAE/B,MAAa,oBAAoB,EAC/B,WACA,KACA,SACA,GAAG,YAKH,oBAAC,WAAD;CACE,cAAW;CACX,WAAW,GAAG,gBAAgB,UAAU,mJAAmJ,UAAU;CACrM,aAAU;CAEL;CACL,MAAM;CACN,UAAU;CACV,GAAI;CACL;AAGH,iBAAiB,cAAc;AAO/B,MAAa,eAAe,EAAE,UAAU,gBAAkC;CACxE,MAAM,CAAC,SAAS,cAAc,SAAS,MAAK;AAE5C,iBAAgB;AACd,aAAW,KAAI;AACf,eAAa,WAAW,MAAK;IAC5B,EAAE,CAAA;AAEL,KAAI,CAAC,QAAS,QAAO;AAErB,QAAO,aAAa,UAAU,aAAa,SAAS,KAAI"}
package/dist/Alert.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.js","names":[],"sources":["../src/components/Alert/Alert.tsx"],"sourcesContent":["import { CheckSquareIcon, CloseCircleIcon, InfoIcon, WarningIcon } from '@components/Icons'\nimport { cn } from '@utils/twUtils'\nimport { type ReactNode, useCallback, useEffect, useRef } from 'react'\nimport { AlertBase, AlertCloseButton, AlertDescription, AlertHeader, AlertPortal, AlertTitle } from './AlertBase'\n\nexport interface AlertProps {\n className?: string\n description: string | ReactNode | undefined\n icon?: ReactNode\n id: string | undefined\n onClose?: () => void\n title: string | undefined\n variant?: 'default' | 'info' | 'success' | 'warning' | 'danger'\n}\n\nexport const Alert = ({ className, description, icon, id, onClose, title, variant = 'default' }: AlertProps) => {\n const wrapperRef = useRef<HTMLDivElement | null>(null)\n\n const variantIconMap = {\n info: <InfoIcon className='text-alert-info-text' size={24} />,\n success: <CheckSquareIcon className='text-alert-success-text' size={24} />,\n warning: <WarningIcon className='text-alert-warning-text' size={24} />,\n danger: <CloseCircleIcon className='text-alert-danger-text' size={24} />,\n default: null,\n } as const\n\n const displayIcon = icon ?? variantIconMap[variant]\n\n const closeAlert = useCallback(() => {\n if (wrapperRef.current) {\n wrapperRef.current.style.opacity = '0'\n setTimeout(() => {\n if (wrapperRef.current) {\n wrapperRef.current.style.display = 'none'\n }\n onClose?.()\n }, 200)\n }\n }, [onClose])\n\n useEffect(() => {\n const handleEscapeKey = (e: globalThis.KeyboardEvent) => {\n if (e.key === 'Escape' && wrapperRef.current) {\n e.preventDefault()\n closeAlert()\n }\n }\n\n document.addEventListener('keydown', handleEscapeKey)\n\n return () => {\n document.removeEventListener('keydown', handleEscapeKey)\n }\n }, [closeAlert])\n\n const handleClose = useCallback(() => {\n closeAlert()\n }, [closeAlert])\n\n const ariaLive = variant === 'warning' || variant === 'danger' ? 'assertive' : 'polite'\n\n return (\n <AlertPortal>\n <AlertBase aria-live={ariaLive} className={cn('alert-wrapper transition-opacity duration-200 ease-out', className)} data-slot='alert' data-variant={variant} id={id} ref={wrapperRef} variant={variant}>\n <AlertHeader>\n {displayIcon}\n <AlertTitle variant={variant}>{title}</AlertTitle>\n <AlertCloseButton onClick={handleClose} variant={variant} />\n </AlertHeader>\n {description && (\n <AlertDescription className={displayIcon ? 'ml-8' : undefined} variant={variant}>\n {description}\n </AlertDescription>\n )}\n </AlertBase>\n </AlertPortal>\n )\n}\n"],"mappings":";;;;;;;;;;;AAeA,MAAa,SAAS,EAAE,WAAW,aAAa,MAAM,IAAI,SAAS,OAAO,UAAU,gBAA4B;CAC9G,MAAM,aAAa,OAA8B,KAAK;CAUtD,MAAM,cAAc,QAAQ;EAP1B,MAAM,oBAAC,UAAD;GAAU,WAAU;GAAuB,MAAM;GAAM;EAC7D,SAAS,oBAAC,iBAAD;GAAiB,WAAU;GAA0B,MAAM;GAAM;EAC1E,SAAS,oBAAC,aAAD;GAAa,WAAU;GAA0B,MAAM;GAAM;EACtE,QAAQ,oBAAC,iBAAD;GAAiB,WAAU;GAAyB,MAAM;GAAM;EACxE,SAAS;EAG+B,CAAC;CAE3C,MAAM,aAAa,kBAAkB;AACnC,MAAI,WAAW,SAAS;AACtB,cAAW,QAAQ,MAAM,UAAU;AACnC,oBAAiB;AACf,QAAI,WAAW,QACb,YAAW,QAAQ,MAAM,UAAU;AAErC,eAAW;MACV,IAAI;;IAER,CAAC,QAAQ,CAAC;AAEb,iBAAgB;EACd,MAAM,mBAAmB,MAAgC;AACvD,OAAI,EAAE,QAAQ,YAAY,WAAW,SAAS;AAC5C,MAAE,gBAAgB;AAClB,gBAAY;;;AAIhB,WAAS,iBAAiB,WAAW,gBAAgB;AAErD,eAAa;AACX,YAAS,oBAAoB,WAAW,gBAAgB;;IAEzD,CAAC,WAAW,CAAC;CAEhB,MAAM,cAAc,kBAAkB;AACpC,cAAY;IACX,CAAC,WAAW,CAAC;AAIhB,QACE,oBAAC,aAAD,YACE,qBAAC,WAAD;EAAW,aAJE,YAAY,aAAa,YAAY,WAAW,cAAc;EAI3C,WAAW,GAAG,0DAA0D,UAAU;EAAE,aAAU;EAAQ,gBAAc;EAAa;EAAI,KAAK;EAAqB;YAA/L,CACE,qBAAC,aAAD;GACG;GACD,oBAAC,YAAD;IAAqB;cAAU;IAAmB;GAClD,oBAAC,kBAAD;IAAkB,SAAS;IAAsB;IAAW;GAChD,KACb,eACC,oBAAC,kBAAD;GAAkB,WAAW,cAAc,SAAS;GAAoB;aACrE;GACgB,EAEX;KACA"}
1
+ {"version":3,"file":"Alert.js","names":[],"sources":["../src/components/Alert/Alert.tsx"],"sourcesContent":["import { CheckSquareIcon, CloseCircleIcon, InfoIcon, WarningIcon } from '@components/Icons'\nimport { cn } from '@utils/twUtils'\nimport { type ReactNode, useCallback, useEffect, useRef } from 'react'\nimport { AlertBase, AlertCloseButton, AlertDescription, AlertHeader, AlertPortal, AlertTitle } from './AlertBase'\n\nexport interface AlertProps {\n className?: string\n description: string | ReactNode | undefined\n icon?: ReactNode\n id: string | undefined\n onClose?: () => void\n title: string | undefined\n variant?: 'default' | 'info' | 'success' | 'warning' | 'danger'\n}\n\nexport const Alert = ({ className, description, icon, id, onClose, title, variant = 'default' }: AlertProps) => {\n const wrapperRef = useRef<HTMLDivElement | null>(null)\n\n const variantIconMap = {\n info: (\n <InfoIcon\n className='text-alert-info-text'\n size={24}\n />\n ),\n success: (\n <CheckSquareIcon\n className='text-alert-success-text'\n size={24}\n />\n ),\n warning: (\n <WarningIcon\n className='text-alert-warning-text'\n size={24}\n />\n ),\n danger: (\n <CloseCircleIcon\n className='text-alert-danger-text'\n size={24}\n />\n ),\n default: null,\n } as const\n\n const displayIcon = icon ?? variantIconMap[variant]\n\n const closeAlert = useCallback(() => {\n if (wrapperRef.current) {\n wrapperRef.current.style.opacity = '0'\n setTimeout(() => {\n if (wrapperRef.current) {\n wrapperRef.current.style.display = 'none'\n }\n onClose?.()\n }, 200)\n }\n }, [onClose])\n\n useEffect(() => {\n const handleEscapeKey = (e: globalThis.KeyboardEvent) => {\n if (e.key === 'Escape' && wrapperRef.current) {\n e.preventDefault()\n closeAlert()\n }\n }\n\n document.addEventListener('keydown', handleEscapeKey)\n\n return () => {\n document.removeEventListener('keydown', handleEscapeKey)\n }\n }, [closeAlert])\n\n const handleClose = useCallback(() => {\n closeAlert()\n }, [closeAlert])\n\n const ariaLive = variant === 'warning' || variant === 'danger' ? 'assertive' : 'polite'\n\n return (\n <AlertPortal>\n <AlertBase\n aria-live={ariaLive}\n className={cn('alert-wrapper transition-opacity duration-200 ease-out', className)}\n data-slot='alert'\n data-variant={variant}\n id={id}\n ref={wrapperRef}\n variant={variant}\n >\n <AlertHeader>\n {displayIcon}\n <AlertTitle variant={variant}>{title}</AlertTitle>\n <AlertCloseButton\n onClick={handleClose}\n variant={variant}\n />\n </AlertHeader>\n {description && (\n <AlertDescription\n className={displayIcon ? 'ml-8' : undefined}\n variant={variant}\n >\n {description}\n </AlertDescription>\n )}\n </AlertBase>\n </AlertPortal>\n )\n}\n"],"mappings":";;;;;;;;;;;AAeA,MAAa,SAAS,EAAE,WAAW,aAAa,MAAM,IAAI,SAAS,OAAO,UAAU,gBAA4B;CAC9G,MAAM,aAAa,OAA8B,KAAK;CA8BtD,MAAM,cAAc,QAAQ;EA3B1B,MACE,oBAAC,UAAD;GACE,WAAU;GACV,MAAM;GACN;EAEJ,SACE,oBAAC,iBAAD;GACE,WAAU;GACV,MAAM;GACN;EAEJ,SACE,oBAAC,aAAD;GACE,WAAU;GACV,MAAM;GACN;EAEJ,QACE,oBAAC,iBAAD;GACE,WAAU;GACV,MAAM;GACN;EAEJ,SAAS;EAG+B,CAAC;CAE3C,MAAM,aAAa,kBAAkB;AACnC,MAAI,WAAW,SAAS;AACtB,cAAW,QAAQ,MAAM,UAAU;AACnC,oBAAiB;AACf,QAAI,WAAW,QACb,YAAW,QAAQ,MAAM,UAAU;AAErC,eAAW;MACV,IAAI;;IAER,CAAC,QAAQ,CAAC;AAEb,iBAAgB;EACd,MAAM,mBAAmB,MAAgC;AACvD,OAAI,EAAE,QAAQ,YAAY,WAAW,SAAS;AAC5C,MAAE,gBAAgB;AAClB,gBAAY;;;AAIhB,WAAS,iBAAiB,WAAW,gBAAgB;AAErD,eAAa;AACX,YAAS,oBAAoB,WAAW,gBAAgB;;IAEzD,CAAC,WAAW,CAAC;CAEhB,MAAM,cAAc,kBAAkB;AACpC,cAAY;IACX,CAAC,WAAW,CAAC;AAIhB,QACE,oBAAC,aAAD,YACE,qBAAC,WAAD;EACE,aALW,YAAY,aAAa,YAAY,WAAW,cAAc;EAMzE,WAAW,GAAG,0DAA0D,UAAU;EAClF,aAAU;EACV,gBAAc;EACV;EACJ,KAAK;EACI;YAPX,CASE,qBAAC,aAAD;GACG;GACD,oBAAC,YAAD;IAAqB;cAAU;IAAmB;GAClD,oBAAC,kBAAD;IACE,SAAS;IACA;IACT;GACU,KACb,eACC,oBAAC,kBAAD;GACE,WAAW,cAAc,SAAS;GACzB;aAER;GACgB,EAEX;KACA"}
@@ -1 +1 @@
1
- {"version":3,"file":"AlertDialog.d.ts","names":[],"sources":["../src/components/AlertDialog/AlertDialog.tsx"],"mappings":";;;;;UAMiB,gBAAA,4BAA4C,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA;EAC3F,IAAA,GAAO,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA;EACvC,YAAA,GAAe,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA;EAC/C,MAAA,GAAS,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA;EACzC,oBAAA,GAAuB,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA;EACvD,SAAA,GAAY,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA;AAAA,UAG7B,uBAAA,SAAgC,aAAA,CAAqB,OAAA,CAAQ,KAAA;AAAA,UAG7D,qBAAA,SAA8B,aAAA,CAAqB,KAAA,CAAM,KAAA;EACxE,WAAA,GAAc,aAAA,CAAqB,MAAA,CAAO,KAAA;AAAA;AAAA,KAGhC,kBAAA;AAAA,UAEF,wBAAA;EAAA,oBACY,KAAA,EAAO,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA,IAAW,YAAA;EACtE,YAAA,SAAqB,aAAA,CAAqB,YAAA;EAC1C,WAAA;AAAA;AAAA,cASW,WAAA,EAEP,wBAAA;AAAA,cAGO,uBAAA,SAAgC,aAAA,CAAqB,YAAA;AAAA,mCAIhE,KAAA,EAAO,aAAA,CAAqB,MAAA,CAAO,KAAA,GAClC,YAAA;AAAA;;;cAKU,kBAAA,GAAkB,KAAA,EACtB,uBAAA,KACN,YAAA;AAAA,cAMU,mBAAA;EAAmB,SAAA;EAAA,GAAA;AAAA,GAG7B,aAAA,CAAqB,QAAA,CAAS,KAAA,KAAQ,YAAA;AAAA,cAW5B,mBAAA;EAAmB,SAAA;EAAA,GAAA;AAAA,GAG7B,aAAA,CAAqB,QAAA,CAAS,KAAA,KAAQ,YAAA;AAAA,cAU5B,gBAAA;EAAgB,SAAA;EAAA,WAAA;EAAA,GAAA;AAAA,GAI1B,qBAAA,KAAwB,YAAA;AAAA,cAoBd,iBAAA;EAAiB,SAAA;EAAA,QAAA;EAAA,IAAA;EAAA,SAAA;EAAA,OAAA;EAAA,GAAA;AAAA,GAO3B,cAAA;EACD,IAAA,GAAO,SAAA;EACP,SAAA;EACA,OAAA,GAAU,kBAAA;AAAA,MACR,YAAA;AAAA,cAuDS,iBAAA;EAAiB,SAAA;EAAA,QAAA;EAAA,GAAA;AAAA,GAI3B,cAAA,YAAwB,YAAA;AAAA,cAYd,gBAAA;EAAgB,SAAA;EAAA,GAAA;AAAA,GAG1B,aAAA,CAAqB,KAAA,CAAM,KAAA,KAAQ,YAAA;AAAA,cAazB,sBAAA;EAAsB,SAAA;EAAA,GAAA;AAAA,GAGhC,aAAA,CAAqB,WAAA,CAAY,KAAA,KAAQ,YAAA;AAAA,cAU/B,gBAAA,GAAgB,KAAA,EACpB,aAAA,CAAqB,KAAA,CAAM,KAAA,KACjC,YAAA"}
1
+ {"version":3,"file":"AlertDialog.d.ts","names":[],"sources":["../src/components/AlertDialog/AlertDialog.tsx"],"mappings":";;;;;UAMiB,gBAAA,4BAA4C,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA;EAC3F,IAAA,GAAO,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA;EACvC,YAAA,GAAe,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA;EAC/C,MAAA,GAAS,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA;EACzC,oBAAA,GAAuB,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA;EACvD,SAAA,GAAY,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA;AAAA;AAAA,UAG7B,uBAAA,SAAgC,aAAA,CAAqB,OAAA,CAAQ,KAAA;AAAA,UAE7D,qBAAA,SAA8B,aAAA,CAAqB,KAAA,CAAM,KAAA;EACxE,WAAA,GAAc,aAAA,CAAqB,MAAA,CAAO,KAAA;AAAA;AAAA,KAGhC,kBAAA;AAAA,UAEF,wBAAA;EAAA,oBACY,KAAA,EAAO,aAAA,CAAqB,IAAA,CAAK,KAAA,CAAM,OAAA,IAAW,YAAA;EACtE,YAAA,SAAqB,aAAA,CAAqB,YAAA;EAC1C,WAAA;AAAA;AAAA,cAOW,WAAA,EAEP,wBAAA;AAAA,cAGO,uBAAA,SAAgC,aAAA,CAAqB,YAAA;AAAA,mCAEhC,KAAA,EAAO,aAAA,CAAqB,MAAA,CAAO,KAAA,GAAQ,YAAA;AAAA;;;cAKhE,kBAAA,GAAkB,KAAA,EAAW,uBAAA,KAA0B,YAAA;AAAA,cASvD,mBAAA;EAAmB,SAAA;EAAA,GAAA;AAAA,GAA6B,aAAA,CAAqB,QAAA,CAAS,KAAA,KAAQ,YAAA;AAAA,cAUtF,mBAAA;EAAmB,SAAA;EAAA,GAAA;AAAA,GAA6B,aAAA,CAAqB,QAAA,CAAS,KAAA,KAAQ,YAAA;AAAA,cAUtF,gBAAA;EAAgB,SAAA;EAAA,WAAA;EAAA,GAAA;AAAA,GAA0C,qBAAA,KAAwB,YAAA;AAAA,cAoBlF,iBAAA;EAAiB,SAAA;EAAA,QAAA;EAAA,IAAA;EAAA,SAAA;EAAA,OAAA;EAAA,GAAA;AAAA,GAO3B,cAAA;EACD,IAAA,GAAO,SAAA;EACP,SAAA;EACA,OAAA,GAAU,kBAAA;AAAA,MACR,YAAA;AAAA,cA2DS,iBAAA;EAAiB,SAAA;EAAA,QAAA;EAAA,GAAA;AAAA,GAAuC,cAAA,YAAwB,YAAA;AAAA,cAYhF,gBAAA;EAAgB,SAAA;EAAA,GAAA;AAAA,GAA6B,aAAA,CAAqB,KAAA,CAAM,KAAA,KAAQ,YAAA;AAAA,cAUhF,sBAAA;EAAsB,SAAA;EAAA,GAAA;AAAA,GAA6B,aAAA,CAAqB,WAAA,CAAY,KAAA,KAAQ,YAAA;AAAA,cAU5F,gBAAA,GAAgB,KAAA,EAAW,aAAA,CAAqB,KAAA,CAAM,KAAA,KAAQ,YAAA"}
@@ -25,14 +25,14 @@ const AlertDialogTrigger = (props) => {
25
25
  };
26
26
  const AlertDialogBackdrop = ({ className, ...props }) => {
27
27
  return /* @__PURE__ */ jsx(AlertDialog$1.Backdrop, {
28
- className: cn("inset-0 bg-black/50 backdrop-blur-sm fixed z-[60] motion-safe:data-[state=open]:animate-in motion-safe:data-[state=open]:fade-in-0 motion-safe:data-[state=closed]:animate-out", "motion-safe:data-[state=closed]:fade-out-0", className),
28
+ className: cn("inset-0 bg-black/50 backdrop-blur-sm fixed z-[60] motion-safe:data-[state=closed]:animate-out motion-safe:data-[state=open]:animate-in motion-safe:data-[state=open]:fade-in-0", "motion-safe:data-[state=closed]:fade-out-0", className),
29
29
  "data-slot": "alert-dialog-backdrop",
30
30
  ...props
31
31
  });
32
32
  };
33
33
  const AlertDialogViewport = ({ className, ...props }) => {
34
34
  return /* @__PURE__ */ jsx(AlertDialog$1.Viewport, {
35
- className: cn("fixed inset-0 z-[60] grid grid-rows-[1fr_auto_1fr] justify-items-center p-4", className),
35
+ className: cn("inset-0 p-4 fixed z-[60] grid grid-rows-[1fr_auto_1fr] justify-items-center", className),
36
36
  "data-slot": "alert-dialog-viewport",
37
37
  ...props
38
38
  });
@@ -41,7 +41,7 @@ const AlertDialogPopup = ({ className, portalProps, ...props }) => {
41
41
  return /* @__PURE__ */ jsxs(AlertDialogPortal, {
42
42
  ...portalProps,
43
43
  children: [/* @__PURE__ */ jsx(AlertDialogBackdrop, {}), /* @__PURE__ */ jsx(AlertDialogViewport, { children: /* @__PURE__ */ jsx(AlertDialog$1.Popup, {
44
- className: cn("relative row-start-2 flex max-h-full min-h-0 w-full min-w-0 max-w-lg origin-center flex-col rounded-xl border border-black/40 bg-level-zero text-text-primary", "shadow-elevation-3 transition-[scale,opacity,translate] duration-200 ease-in-out before:pointer-events-none before:absolute before:inset-0", "before:rounded-[calc(var(--radius-2xl)-1px)] data-[ending-style]:opacity-0 data-[starting-style]:opacity-0", className),
44
+ className: cn("min-h-0 min-w-0 max-w-lg rounded-xl border-black/40 relative row-start-2 flex max-h-full w-full origin-center flex-col border bg-level-zero text-text-primary", "before:inset-0 shadow-elevation-3 transition-[scale,opacity,translate] duration-200 ease-in-out before:pointer-events-none before:absolute", "before:rounded-[calc(var(--radius-2xl)-1px)] data-[ending-style]:opacity-0 data-[starting-style]:opacity-0", className),
45
45
  "data-slot": "alert-dialog-popup",
46
46
  ...props
47
47
  }) })]
@@ -72,14 +72,14 @@ const AlertDialogHeader = ({ className, children, icon, iconColor, variant = "de
72
72
  } : void 0;
73
73
  const [titleChild, ...descriptionChildren] = Children.toArray(children);
74
74
  return /* @__PURE__ */ jsxs("div", {
75
- className: cn("flex flex-col gap-2 p-6", className),
75
+ className: cn("gap-2 p-6 flex flex-col", className),
76
76
  "data-slot": "alert-dialog-header",
77
77
  ...props,
78
78
  children: [/* @__PURE__ */ jsxs("div", {
79
- className: "flex items-center gap-3",
79
+ className: "gap-3 flex items-center",
80
80
  children: [/* @__PURE__ */ jsx("div", {
81
81
  "aria-hidden": "true",
82
- className: cn("rounded-full flex items-center justify-center size-10 shrink-0 [&>svg]:size-6!", variant !== "custom" && builtInIconClasses[variant]),
82
+ className: cn("size-10 [&>svg]:size-6! flex shrink-0 items-center justify-center rounded-full", variant !== "custom" && builtInIconClasses[variant]),
83
83
  "data-slot": "alert-dialog-header-icon",
84
84
  style: customIconStyle,
85
85
  children: headerIcon
@@ -89,7 +89,7 @@ const AlertDialogHeader = ({ className, children, icon, iconColor, variant = "de
89
89
  };
90
90
  const AlertDialogFooter = ({ className, children, ...props }) => {
91
91
  return /* @__PURE__ */ jsx("div", {
92
- className: cn("flex gap-2 px-6 pb-6 pt-2 flex-row justify-end rounded-b-[calc(var(--radius-2xl)-1px)]", className),
92
+ className: cn("gap-2 px-6 pb-6 pt-2 flex flex-row justify-end rounded-b-[calc(var(--radius-2xl)-1px)]", className),
93
93
  "data-slot": "alert-dialog-footer",
94
94
  ...props,
95
95
  children
@@ -104,7 +104,7 @@ const AlertDialogTitle = ({ className, ...props }) => {
104
104
  };
105
105
  const AlertDialogDescription = ({ className, ...props }) => {
106
106
  return /* @__PURE__ */ jsx(AlertDialog$1.Description, {
107
- className: cn("text-text-secondary! text-sm mt-1", className),
107
+ className: cn("text-sm mt-1 text-text-secondary!", className),
108
108
  "data-slot": "alert-dialog-description",
109
109
  ...props
110
110
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AlertDialog.js","names":["AlertDialogPrimitive"],"sources":["../src/components/AlertDialog/AlertDialog.tsx"],"sourcesContent":["import { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog'\nimport { CheckCircleIcon } from '@components/Icons/CheckCircleIcon'\nimport { WarningIcon } from '@components/Icons/WarningIcon'\nimport { cn } from '@utils/twUtils'\nimport { Children, type ComponentProps, type CSSProperties, type ReactElement, type ReactNode } from 'react'\n\nexport interface AlertDialogProps<Payload = unknown> extends AlertDialogPrimitive.Root.Props<Payload> {\n open?: AlertDialogPrimitive.Root.Props<Payload>['open']\n onOpenChange?: AlertDialogPrimitive.Root.Props<Payload>['onOpenChange']\n handle?: AlertDialogPrimitive.Root.Props<Payload>['handle']\n onOpenChangeComplete?: AlertDialogPrimitive.Root.Props<Payload>['onOpenChangeComplete']\n triggerId?: AlertDialogPrimitive.Root.Props<Payload>['triggerId']\n}\n\nexport interface AlertDialogTriggerProps extends AlertDialogPrimitive.Trigger.Props {\n}\n\nexport interface AlertDialogPopupProps extends AlertDialogPrimitive.Popup.Props {\n portalProps?: AlertDialogPrimitive.Portal.Props\n}\n\nexport type AlertDialogVariant = 'default' | 'warning' | 'success' | 'custom'\n\ninterface AlertDialogRootComponent {\n <Payload = unknown>(props: AlertDialogPrimitive.Root.Props<Payload>): ReactElement\n createHandle: typeof AlertDialogPrimitive.createHandle\n displayName?: string\n}\n\nconst AlertDialogRoot = <Payload = unknown,>(\n props: AlertDialogPrimitive.Root.Props<Payload>,\n): ReactElement => {\n return <AlertDialogPrimitive.Root {...props} />\n}\n\nexport const AlertDialog = Object.assign(AlertDialogRoot, {\n createHandle: AlertDialogPrimitive.createHandle,\n}) as AlertDialogRootComponent\nAlertDialog.displayName = 'AlertDialog'\n\nexport const AlertDialogCreateHandle: typeof AlertDialogPrimitive.createHandle =\n AlertDialog.createHandle\n\nexport const AlertDialogPortal = (\n props: AlertDialogPrimitive.Portal.Props,\n): ReactElement => {\n return <AlertDialogPrimitive.Portal {...props} />\n}\nAlertDialogPortal.displayName = 'AlertDialogPortal'\n\nexport const AlertDialogTrigger = (\n props: AlertDialogTriggerProps,\n): ReactElement => {\n return (\n <AlertDialogPrimitive.Trigger data-slot='alert-dialog-trigger' {...props} />\n )\n}\n\nexport const AlertDialogBackdrop = ({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props): ReactElement => {\n return (\n <AlertDialogPrimitive.Backdrop\n className={cn('inset-0 bg-black/50 backdrop-blur-sm fixed z-[60] motion-safe:data-[state=open]:animate-in motion-safe:data-[state=open]:fade-in-0 motion-safe:data-[state=closed]:animate-out',\n 'motion-safe:data-[state=closed]:fade-out-0', className)}\n data-slot='alert-dialog-backdrop'\n {...props}\n />\n )\n}\n\nexport const AlertDialogViewport = ({\n className,\n ...props\n}: AlertDialogPrimitive.Viewport.Props): ReactElement => {\n return (\n <AlertDialogPrimitive.Viewport\n className={cn('fixed inset-0 z-[60] grid grid-rows-[1fr_auto_1fr] justify-items-center p-4', className)}\n data-slot='alert-dialog-viewport'\n {...props}\n />\n )\n}\n\nexport const AlertDialogPopup = ({\n className,\n portalProps,\n ...props\n}: AlertDialogPopupProps): ReactElement => {\n return (\n <AlertDialogPortal {...portalProps}>\n <AlertDialogBackdrop />\n <AlertDialogViewport>\n <AlertDialogPrimitive.Popup\n className={cn(\n 'relative row-start-2 flex max-h-full min-h-0 w-full min-w-0 max-w-lg origin-center flex-col rounded-xl border border-black/40 bg-level-zero text-text-primary',\n 'shadow-elevation-3 transition-[scale,opacity,translate] duration-200 ease-in-out before:pointer-events-none before:absolute before:inset-0',\n 'before:rounded-[calc(var(--radius-2xl)-1px)] data-[ending-style]:opacity-0 data-[starting-style]:opacity-0',\n className,\n )}\n data-slot='alert-dialog-popup'\n {...props}\n />\n </AlertDialogViewport>\n </AlertDialogPortal>\n )\n}\n\nexport const AlertDialogHeader = ({\n className,\n children,\n icon,\n iconColor,\n variant = 'default',\n ...props\n}: ComponentProps<'div'> & {\n icon?: ReactNode\n iconColor?: string\n variant?: AlertDialogVariant\n}): ReactElement => {\n const customIconColor = iconColor ?? 'var(--color-danger-400)'\n const builtInIconClasses = {\n default: 'bg-danger-400/20 text-danger-400',\n warning: 'bg-warning-400/20 text-warning-400',\n success: 'bg-success-400/20 text-success-400',\n } as const\n const builtInIconColorClass = {\n default: 'text-danger-400',\n warning: 'text-warning-400',\n success: 'text-success-400',\n } as const\n\n const headerIcon = variant === 'custom'\n ? (icon ?? <WarningIcon size={24} />)\n : variant === 'success'\n ? <CheckCircleIcon className={builtInIconColorClass[variant]} size={24} />\n : <WarningIcon className={cn(builtInIconColorClass[variant], '-translate-y-px')} size={24} />\n\n const customIconStyle: CSSProperties | undefined = variant === 'custom'\n ? {\n color: customIconColor,\n backgroundColor: `oklch(from ${customIconColor} l c h / 0.2)`,\n }\n : undefined\n const [titleChild, ...descriptionChildren] = Children.toArray(children)\n\n return (\n <div\n className={cn(\n 'flex flex-col gap-2 p-6',\n className,\n )}\n data-slot='alert-dialog-header'\n {...props}\n >\n <div className='flex items-center gap-3'>\n <div\n aria-hidden='true'\n className={cn(\n 'rounded-full flex items-center justify-center size-10 shrink-0 [&>svg]:size-6!',\n variant !== 'custom' && builtInIconClasses[variant],\n )}\n data-slot='alert-dialog-header-icon'\n style={customIconStyle}\n >\n {headerIcon}\n </div>\n {titleChild}\n </div>\n {descriptionChildren.length > 0 && descriptionChildren}\n </div>\n )\n}\n\nexport const AlertDialogFooter = ({\n className,\n children,\n ...props\n}: ComponentProps<'div'>): ReactElement => {\n return (\n <div\n className={cn('flex gap-2 px-6 pb-6 pt-2 flex-row justify-end rounded-b-[calc(var(--radius-2xl)-1px)]', className)}\n data-slot='alert-dialog-footer'\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport const AlertDialogTitle = ({\n className,\n ...props\n}: AlertDialogPrimitive.Title.Props): ReactElement => {\n return (\n <AlertDialogPrimitive.Title\n className={cn(\n 'font-heading font-medium text-xl leading-tight',\n className,\n )}\n data-slot='alert-dialog-title'\n {...props}\n />\n )\n}\n\nexport const AlertDialogDescription = ({\n className,\n ...props\n}: AlertDialogPrimitive.Description.Props): ReactElement => {\n return (\n <AlertDialogPrimitive.Description\n className={cn('text-text-secondary! text-sm mt-1', className)}\n data-slot='alert-dialog-description'\n {...props}\n />\n )\n}\n\nexport const AlertDialogClose = (\n props: AlertDialogPrimitive.Close.Props,\n): ReactElement => {\n return (\n <AlertDialogPrimitive.Close data-slot='alert-dialog-close' {...props} />\n )\n}\n"],"mappings":";;;;;;;;;AA6BA,MAAM,mBACJ,UACiB;AACjB,QAAO,oBAACA,cAAqB,MAAtB,EAA2B,GAAI,OAAS;;AAGjD,MAAa,cAAc,OAAO,OAAO,iBAAiB,EACxD,cAAcA,cAAqB,cACpC,CAAC;AACF,YAAY,cAAc;AAE1B,MAAa,0BACX,YAAY;AAEd,MAAa,qBACX,UACiB;AACjB,QAAO,oBAACA,cAAqB,QAAtB,EAA6B,GAAI,OAAS;;AAEnD,kBAAkB,cAAc;AAEhC,MAAa,sBACX,UACiB;AACjB,QACE,oBAACA,cAAqB,SAAtB;EAA8B,aAAU;EAAuB,GAAI;EAAS;;AAIhF,MAAa,uBAAuB,EAClC,WACA,GAAG,YACoD;AACvD,QACE,oBAACA,cAAqB,UAAtB;EACE,WAAW,GAAG,kLACd,8CAA8C,UAAU;EACxD,aAAU;EACV,GAAI;EACJ;;AAIN,MAAa,uBAAuB,EAClC,WACA,GAAG,YACoD;AACvD,QACE,oBAACA,cAAqB,UAAtB;EACE,WAAW,GAAG,+EAA+E,UAAU;EACvG,aAAU;EACV,GAAI;EACJ;;AAIN,MAAa,oBAAoB,EAC/B,WACA,aACA,GAAG,YACsC;AACzC,QACE,qBAAC,mBAAD;EAAmB,GAAI;YAAvB,CACE,oBAAC,qBAAD,EAAuB,GACvB,oBAAC,qBAAD,YACE,oBAACA,cAAqB,OAAtB;GACE,WAAW,GACT,iKACA,8IACA,8GACA,UACD;GACD,aAAU;GACV,GAAI;GACJ,GACkB,EACJ;;;AAIxB,MAAa,qBAAqB,EAChC,WACA,UACA,MACA,WACA,UAAU,WACV,GAAG,YAKe;CAClB,MAAM,kBAAkB,aAAa;CACrC,MAAM,qBAAqB;EACzB,SAAS;EACT,SAAS;EACT,SAAS;EACV;CACD,MAAM,wBAAwB;EAC5B,SAAS;EACT,SAAS;EACT,SAAS;EACV;CAED,MAAM,aAAa,YAAY,WAC1B,QAAQ,oBAAC,aAAD,EAAa,MAAM,IAAM,IAClC,YAAY,YACV,oBAAC,iBAAD;EAAiB,WAAW,sBAAsB;EAAU,MAAM;EAAM,IACxE,oBAAC,aAAD;EAAa,WAAW,GAAG,sBAAsB,UAAU,kBAAkB;EAAE,MAAM;EAAM;CAEjG,MAAM,kBAA6C,YAAY,WAC3D;EACA,OAAO;EACP,iBAAiB,cAAc,gBAAgB;EAChD,GACC;CACJ,MAAM,CAAC,YAAY,GAAG,uBAAuB,SAAS,QAAQ,SAAS;AAEvE,QACE,qBAAC,OAAD;EACE,WAAW,GACT,2BACA,UACD;EACD,aAAU;EACV,GAAI;YANN,CAQE,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,oBAAC,OAAD;IACE,eAAY;IACZ,WAAW,GACT,kFACA,YAAY,YAAY,mBAAmB,SAC5C;IACD,aAAU;IACV,OAAO;cAEN;IACG,GACL,WACG;MACL,oBAAoB,SAAS,KAAK,oBAC/B;;;AAIV,MAAa,qBAAqB,EAChC,WACA,UACA,GAAG,YACsC;AACzC,QACE,oBAAC,OAAD;EACE,WAAW,GAAG,0FAA0F,UAAU;EAClH,aAAU;EACV,GAAI;EAEH;EACG;;AAIV,MAAa,oBAAoB,EAC/B,WACA,GAAG,YACiD;AACpD,QACE,oBAACA,cAAqB,OAAtB;EACE,WAAW,GACT,kDACA,UACD;EACD,aAAU;EACV,GAAI;EACJ;;AAIN,MAAa,0BAA0B,EACrC,WACA,GAAG,YACuD;AAC1D,QACE,oBAACA,cAAqB,aAAtB;EACE,WAAW,GAAG,qCAAqC,UAAU;EAC7D,aAAU;EACV,GAAI;EACJ;;AAIN,MAAa,oBACX,UACiB;AACjB,QACE,oBAACA,cAAqB,OAAtB;EAA4B,aAAU;EAAqB,GAAI;EAAS"}
1
+ {"version":3,"file":"AlertDialog.js","names":["AlertDialogPrimitive"],"sources":["../src/components/AlertDialog/AlertDialog.tsx"],"sourcesContent":["import { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog'\nimport { CheckCircleIcon } from '@components/Icons/CheckCircleIcon'\nimport { WarningIcon } from '@components/Icons/WarningIcon'\nimport { cn } from '@utils/twUtils'\nimport { Children, type ComponentProps, type CSSProperties, type ReactElement, type ReactNode } from 'react'\n\nexport interface AlertDialogProps<Payload = unknown> extends AlertDialogPrimitive.Root.Props<Payload> {\n open?: AlertDialogPrimitive.Root.Props<Payload>['open']\n onOpenChange?: AlertDialogPrimitive.Root.Props<Payload>['onOpenChange']\n handle?: AlertDialogPrimitive.Root.Props<Payload>['handle']\n onOpenChangeComplete?: AlertDialogPrimitive.Root.Props<Payload>['onOpenChangeComplete']\n triggerId?: AlertDialogPrimitive.Root.Props<Payload>['triggerId']\n}\n\nexport interface AlertDialogTriggerProps extends AlertDialogPrimitive.Trigger.Props {}\n\nexport interface AlertDialogPopupProps extends AlertDialogPrimitive.Popup.Props {\n portalProps?: AlertDialogPrimitive.Portal.Props\n}\n\nexport type AlertDialogVariant = 'default' | 'warning' | 'success' | 'custom'\n\ninterface AlertDialogRootComponent {\n <Payload = unknown>(props: AlertDialogPrimitive.Root.Props<Payload>): ReactElement\n createHandle: typeof AlertDialogPrimitive.createHandle\n displayName?: string\n}\n\nconst AlertDialogRoot = <Payload = unknown>(props: AlertDialogPrimitive.Root.Props<Payload>): ReactElement => {\n return <AlertDialogPrimitive.Root {...props} />\n}\n\nexport const AlertDialog = Object.assign(AlertDialogRoot, {\n createHandle: AlertDialogPrimitive.createHandle,\n}) as AlertDialogRootComponent\nAlertDialog.displayName = 'AlertDialog'\n\nexport const AlertDialogCreateHandle: typeof AlertDialogPrimitive.createHandle = AlertDialog.createHandle\n\nexport const AlertDialogPortal = (props: AlertDialogPrimitive.Portal.Props): ReactElement => {\n return <AlertDialogPrimitive.Portal {...props} />\n}\nAlertDialogPortal.displayName = 'AlertDialogPortal'\n\nexport const AlertDialogTrigger = (props: AlertDialogTriggerProps): ReactElement => {\n return (\n <AlertDialogPrimitive.Trigger\n data-slot='alert-dialog-trigger'\n {...props}\n />\n )\n}\n\nexport const AlertDialogBackdrop = ({ className, ...props }: AlertDialogPrimitive.Backdrop.Props): ReactElement => {\n return (\n <AlertDialogPrimitive.Backdrop\n className={cn('inset-0 bg-black/50 backdrop-blur-sm fixed z-[60] motion-safe:data-[state=closed]:animate-out motion-safe:data-[state=open]:animate-in motion-safe:data-[state=open]:fade-in-0', 'motion-safe:data-[state=closed]:fade-out-0', className)}\n data-slot='alert-dialog-backdrop'\n {...props}\n />\n )\n}\n\nexport const AlertDialogViewport = ({ className, ...props }: AlertDialogPrimitive.Viewport.Props): ReactElement => {\n return (\n <AlertDialogPrimitive.Viewport\n className={cn('inset-0 p-4 fixed z-[60] grid grid-rows-[1fr_auto_1fr] justify-items-center', className)}\n data-slot='alert-dialog-viewport'\n {...props}\n />\n )\n}\n\nexport const AlertDialogPopup = ({ className, portalProps, ...props }: AlertDialogPopupProps): ReactElement => {\n return (\n <AlertDialogPortal {...portalProps}>\n <AlertDialogBackdrop />\n <AlertDialogViewport>\n <AlertDialogPrimitive.Popup\n className={cn(\n 'min-h-0 min-w-0 max-w-lg rounded-xl border-black/40 relative row-start-2 flex max-h-full w-full origin-center flex-col border bg-level-zero text-text-primary',\n 'before:inset-0 shadow-elevation-3 transition-[scale,opacity,translate] duration-200 ease-in-out before:pointer-events-none before:absolute',\n 'before:rounded-[calc(var(--radius-2xl)-1px)] data-[ending-style]:opacity-0 data-[starting-style]:opacity-0',\n className,\n )}\n data-slot='alert-dialog-popup'\n {...props}\n />\n </AlertDialogViewport>\n </AlertDialogPortal>\n )\n}\n\nexport const AlertDialogHeader = ({\n className,\n children,\n icon,\n iconColor,\n variant = 'default',\n ...props\n}: ComponentProps<'div'> & {\n icon?: ReactNode\n iconColor?: string\n variant?: AlertDialogVariant\n}): ReactElement => {\n const customIconColor = iconColor ?? 'var(--color-danger-400)'\n const builtInIconClasses = {\n default: 'bg-danger-400/20 text-danger-400',\n warning: 'bg-warning-400/20 text-warning-400',\n success: 'bg-success-400/20 text-success-400',\n } as const\n const builtInIconColorClass = {\n default: 'text-danger-400',\n warning: 'text-warning-400',\n success: 'text-success-400',\n } as const\n\n const headerIcon =\n variant === 'custom' ? (\n (icon ?? <WarningIcon size={24} />)\n ) : variant === 'success' ? (\n <CheckCircleIcon\n className={builtInIconColorClass[variant]}\n size={24}\n />\n ) : (\n <WarningIcon\n className={cn(builtInIconColorClass[variant], '-translate-y-px')}\n size={24}\n />\n )\n\n const customIconStyle: CSSProperties | undefined =\n variant === 'custom'\n ? {\n color: customIconColor,\n backgroundColor: `oklch(from ${customIconColor} l c h / 0.2)`,\n }\n : undefined\n const [titleChild, ...descriptionChildren] = Children.toArray(children)\n\n return (\n <div\n className={cn('gap-2 p-6 flex flex-col', className)}\n data-slot='alert-dialog-header'\n {...props}\n >\n <div className='gap-3 flex items-center'>\n <div\n aria-hidden='true'\n className={cn('size-10 [&>svg]:size-6! flex shrink-0 items-center justify-center rounded-full', variant !== 'custom' && builtInIconClasses[variant])}\n data-slot='alert-dialog-header-icon'\n style={customIconStyle}\n >\n {headerIcon}\n </div>\n {titleChild}\n </div>\n {descriptionChildren.length > 0 && descriptionChildren}\n </div>\n )\n}\n\nexport const AlertDialogFooter = ({ className, children, ...props }: ComponentProps<'div'>): ReactElement => {\n return (\n <div\n className={cn('gap-2 px-6 pb-6 pt-2 flex flex-row justify-end rounded-b-[calc(var(--radius-2xl)-1px)]', className)}\n data-slot='alert-dialog-footer'\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport const AlertDialogTitle = ({ className, ...props }: AlertDialogPrimitive.Title.Props): ReactElement => {\n return (\n <AlertDialogPrimitive.Title\n className={cn('font-heading font-medium text-xl leading-tight', className)}\n data-slot='alert-dialog-title'\n {...props}\n />\n )\n}\n\nexport const AlertDialogDescription = ({ className, ...props }: AlertDialogPrimitive.Description.Props): ReactElement => {\n return (\n <AlertDialogPrimitive.Description\n className={cn('text-sm mt-1 text-text-secondary!', className)}\n data-slot='alert-dialog-description'\n {...props}\n />\n )\n}\n\nexport const AlertDialogClose = (props: AlertDialogPrimitive.Close.Props): ReactElement => {\n return (\n <AlertDialogPrimitive.Close\n data-slot='alert-dialog-close'\n {...props}\n />\n )\n}\n"],"mappings":";;;;;;;;;AA4BA,MAAM,mBAAsC,UAAkE;AAC5G,QAAO,oBAACA,cAAqB,MAAtB,EAA2B,GAAI,OAAS;;AAGjD,MAAa,cAAc,OAAO,OAAO,iBAAiB,EACxD,cAAcA,cAAqB,cACpC,CAAC;AACF,YAAY,cAAc;AAE1B,MAAa,0BAAoE,YAAY;AAE7F,MAAa,qBAAqB,UAA2D;AAC3F,QAAO,oBAACA,cAAqB,QAAtB,EAA6B,GAAI,OAAS;;AAEnD,kBAAkB,cAAc;AAEhC,MAAa,sBAAsB,UAAiD;AAClF,QACE,oBAACA,cAAqB,SAAtB;EACE,aAAU;EACV,GAAI;EACJ;;AAIN,MAAa,uBAAuB,EAAE,WAAW,GAAG,YAA+D;AACjH,QACE,oBAACA,cAAqB,UAAtB;EACE,WAAW,GAAG,kLAAkL,8CAA8C,UAAU;EACxP,aAAU;EACV,GAAI;EACJ;;AAIN,MAAa,uBAAuB,EAAE,WAAW,GAAG,YAA+D;AACjH,QACE,oBAACA,cAAqB,UAAtB;EACE,WAAW,GAAG,+EAA+E,UAAU;EACvG,aAAU;EACV,GAAI;EACJ;;AAIN,MAAa,oBAAoB,EAAE,WAAW,aAAa,GAAG,YAAiD;AAC7G,QACE,qBAAC,mBAAD;EAAmB,GAAI;YAAvB,CACE,oBAAC,qBAAD,EAAuB,GACvB,oBAAC,qBAAD,YACE,oBAACA,cAAqB,OAAtB;GACE,WAAW,GACT,iKACA,8IACA,8GACA,UACD;GACD,aAAU;GACV,GAAI;GACJ,GACkB,EACJ;;;AAIxB,MAAa,qBAAqB,EAChC,WACA,UACA,MACA,WACA,UAAU,WACV,GAAG,YAKe;CAClB,MAAM,kBAAkB,aAAa;CACrC,MAAM,qBAAqB;EACzB,SAAS;EACT,SAAS;EACT,SAAS;EACV;CACD,MAAM,wBAAwB;EAC5B,SAAS;EACT,SAAS;EACT,SAAS;EACV;CAED,MAAM,aACJ,YAAY,WACT,QAAQ,oBAAC,aAAD,EAAa,MAAM,IAAM,IAChC,YAAY,YACd,oBAAC,iBAAD;EACE,WAAW,sBAAsB;EACjC,MAAM;EACN,IAEF,oBAAC,aAAD;EACE,WAAW,GAAG,sBAAsB,UAAU,kBAAkB;EAChE,MAAM;EACN;CAGN,MAAM,kBACJ,YAAY,WACR;EACE,OAAO;EACP,iBAAiB,cAAc,gBAAgB;EAChD,GACD;CACN,MAAM,CAAC,YAAY,GAAG,uBAAuB,SAAS,QAAQ,SAAS;AAEvE,QACE,qBAAC,OAAD;EACE,WAAW,GAAG,2BAA2B,UAAU;EACnD,aAAU;EACV,GAAI;YAHN,CAKE,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,oBAAC,OAAD;IACE,eAAY;IACZ,WAAW,GAAG,kFAAkF,YAAY,YAAY,mBAAmB,SAAS;IACpJ,aAAU;IACV,OAAO;cAEN;IACG,GACL,WACG;MACL,oBAAoB,SAAS,KAAK,oBAC/B;;;AAIV,MAAa,qBAAqB,EAAE,WAAW,UAAU,GAAG,YAAiD;AAC3G,QACE,oBAAC,OAAD;EACE,WAAW,GAAG,0FAA0F,UAAU;EAClH,aAAU;EACV,GAAI;EAEH;EACG;;AAIV,MAAa,oBAAoB,EAAE,WAAW,GAAG,YAA4D;AAC3G,QACE,oBAACA,cAAqB,OAAtB;EACE,WAAW,GAAG,kDAAkD,UAAU;EAC1E,aAAU;EACV,GAAI;EACJ;;AAIN,MAAa,0BAA0B,EAAE,WAAW,GAAG,YAAkE;AACvH,QACE,oBAACA,cAAqB,aAAtB;EACE,WAAW,GAAG,qCAAqC,UAAU;EAC7D,aAAU;EACV,GAAI;EACJ;;AAIN,MAAa,oBAAoB,UAA0D;AACzF,QACE,oBAACA,cAAqB,OAAtB;EACE,aAAU;EACV,GAAI;EACJ"}
package/dist/Avatar.js CHANGED
@@ -56,7 +56,7 @@ const Avatar = ({ alt, className, fallback, icon, imageSource, size = "md", user
56
56
  if (icon) {
57
57
  const iconSize = iconSizes[size];
58
58
  return /* @__PURE__ */ jsx("span", {
59
- className: "text-inherit flex size-full items-center justify-center",
59
+ className: "flex size-full items-center justify-center text-inherit",
60
60
  children: isValidElement(icon) ? (() => {
61
61
  const baseIconProps = {
62
62
  className: cn("shrink-0 text-inherit", icon.props.className),
@@ -80,18 +80,18 @@ const Avatar = ({ alt, className, fallback, icon, imageSource, size = "md", user
80
80
  width: imageDimensions[size]
81
81
  });
82
82
  if (imageSource && imageStatus === "error" && fallback) return /* @__PURE__ */ jsx("span", {
83
- className: "text-inherit flex size-full items-center justify-center",
83
+ className: "flex size-full items-center justify-center text-inherit",
84
84
  children: fallback
85
85
  });
86
86
  if (fallback) return /* @__PURE__ */ jsx("span", {
87
- className: cn("text-inherit flex size-full items-center justify-center", textSizeClasses[size]),
87
+ className: cn("flex size-full items-center justify-center text-inherit", textSizeClasses[size]),
88
88
  children: fallback
89
89
  });
90
90
  if (imageSource && imageStatus === "loading") return /* @__PURE__ */ jsx("span", { className: "motion-safe:animate-pulse flex size-full items-center justify-center" });
91
91
  return /* @__PURE__ */ jsx(UserIcon, { className: "text-inherit" });
92
92
  };
93
93
  return /* @__PURE__ */ jsx("div", {
94
- className: cn("text-text-primary relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full bg-level-two", sizeClasses[size], className),
94
+ className: cn("relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full bg-level-two text-text-primary", sizeClasses[size], className),
95
95
  "data-slot": "avatar",
96
96
  children: renderContent()
97
97
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","names":[],"sources":["../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import { UserIcon } from '@components/Icons/UserIcon'\nimport { cn } from '@utils/twUtils'\nimport { cloneElement, isValidElement, useEffect, useState, type ComponentType, type ReactElement, type ReactNode } from 'react'\n\ntype AvatarSize = 'sm' | 'md' | 'lg'\n\nexport interface AvatarProps {\n alt?: string\n className?: string\n fallback?: ReactNode | string\n icon?: ReactElement\n imageSource?: string\n size?: AvatarSize\n userFullName?: string\n}\n\nconst sizeClasses = {\n sm: 'size-8',\n md: 'size-10',\n lg: 'size-12',\n}\n\nconst imageDimensions = {\n sm: 32,\n md: 40,\n lg: 48,\n}\n\nconst textSizeClasses = {\n sm: 'text-xs',\n md: 'text-base',\n lg: 'text-xl',\n}\n\nconst iconSizes = {\n sm: 24,\n md: 32,\n lg: 40,\n}\n\nconst getInitials = (name: string): string => {\n const trimmed = name.trim()\n if (!trimmed) return '?'\n\n const words = trimmed.split(/\\s+/).filter(Boolean)\n\n if (words.length === 0) return '?'\n if (words.length === 1) return words[0].charAt(0).toUpperCase()\n\n return (words[0].charAt(0) + words[words.length - 1].charAt(0)).toUpperCase()\n}\n\nexport const Avatar = ({ alt, className, fallback, icon, imageSource, size = 'md', userFullName }: AvatarProps) => {\n const [imageStatus, setImageStatus] = useState<'loading' | 'loaded' | 'error'>('loading')\n\n useEffect(() => {\n if (!imageSource) return\n\n setImageStatus('loading')\n\n const img = new Image()\n img.src = imageSource\n\n img.onload = () => setImageStatus('loaded')\n img.onerror = () => setImageStatus('error')\n\n return () => {\n img.onload = null\n img.onerror = null\n }\n }, [imageSource])\n\n const renderContent = () => {\n if (userFullName) {\n return (\n <span\n // cannot use template literals in aria-label or oxlint validation fails: https://www.w3.org/WAI/ARIA/apg/patterns/img/#labeling\n aria-label={userFullName + ' avatar'}\n className={cn('font-bold tracking-tighter flex size-full items-center justify-center text-inherit font-stretch-condensed', textSizeClasses[size as keyof typeof textSizeClasses])}\n data-testid='spectral-avatar-initials'\n >\n {getInitials(userFullName)}\n </span>\n )\n }\n\n if (icon) {\n const iconSize = iconSizes[size as keyof typeof iconSizes]\n\n return (\n <span className='text-inherit flex size-full items-center justify-center'>\n {isValidElement(icon)\n ? (() => {\n const baseIconProps = {\n className: cn('shrink-0 text-inherit', (icon.props as { className?: string }).className),\n 'aria-hidden': 'true' as const,\n }\n\n // Check if this is an icon component that accepts size prop\n const componentType = icon.type as ComponentType<unknown> & { displayName?: string }\n const isIconComponent = componentType.displayName?.includes('Icon') ?? false\n\n if (isIconComponent) {\n const iconPropsWithSize = {\n ...baseIconProps,\n size: iconSize,\n }\n return cloneElement(icon, iconPropsWithSize)\n }\n\n return cloneElement(icon, baseIconProps)\n })()\n : icon}\n </span>\n )\n }\n\n if (imageSource && imageStatus === 'loaded') {\n return (\n <img\n alt={alt ?? 'Avatar'}\n aria-label={alt ?? 'Avatar'}\n className='inset-0 absolute size-full rounded-full object-cover'\n data-testid='spectral-avatar-image'\n height={imageDimensions[size as keyof typeof imageDimensions]}\n role='img'\n src={imageSource}\n width={imageDimensions[size as keyof typeof imageDimensions]}\n />\n )\n }\n\n if (imageSource && imageStatus === 'error' && fallback) {\n return (\n <span className='text-inherit flex size-full items-center justify-center' data-testid='spectral-avatar-img-error-fallback'>\n {fallback}\n </span>\n )\n }\n\n // Show fallback while image is loading or if no image provided\n if (fallback) {\n return (\n <span className={cn('text-inherit flex size-full items-center justify-center', textSizeClasses[size as keyof typeof textSizeClasses])} data-testid='spectral-avatar-fallback'>\n {fallback}\n </span>\n )\n }\n\n // Show empty/skeleton state while image is loading\n if (imageSource && imageStatus === 'loading') {\n return <span className='motion-safe:animate-pulse flex size-full items-center justify-center' data-testid='spectral-avatar-loading' />\n }\n\n // Last resort: (only when no imageSource and no fallback)\n return <UserIcon className='text-inherit' />\n }\n\n return (\n <div className={cn('text-text-primary relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full bg-level-two', sizeClasses[size as keyof typeof sizeClasses], className)} data-slot='avatar' data-testid='spectral-avatar'>\n {renderContent()}\n </div>\n )\n}\n"],"mappings":";;;;;;;AAgBA,MAAM,cAAc;CAClB,IAAI;CACJ,IAAI;CACJ,IAAI;CACN;AAEA,MAAM,kBAAkB;CACtB,IAAI;CACJ,IAAI;CACJ,IAAI;CACN;AAEA,MAAM,kBAAkB;CACtB,IAAI;CACJ,IAAI;CACJ,IAAI;CACN;AAEA,MAAM,YAAY;CAChB,IAAI;CACJ,IAAI;CACJ,IAAI;CACN;AAEA,MAAM,eAAe,SAAyB;CAC5C,MAAM,UAAU,KAAK,MAAK;AAC1B,KAAI,CAAC,QAAS,QAAO;CAErB,MAAM,QAAQ,QAAQ,MAAM,MAAM,CAAC,OAAO,QAAO;AAEjD,KAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,KAAI,MAAM,WAAW,EAAG,QAAO,MAAM,GAAG,OAAO,EAAE,CAAC,aAAY;AAE9D,SAAQ,MAAM,GAAG,OAAO,EAAE,GAAG,MAAM,MAAM,SAAS,GAAG,OAAO,EAAE,EAAE,aAAY;;AAG9E,MAAa,UAAU,EAAE,KAAK,WAAW,UAAU,MAAM,aAAa,OAAO,MAAM,mBAAgC;CACjH,MAAM,CAAC,aAAa,kBAAkB,SAAyC,UAAS;AAExF,iBAAgB;AACd,MAAI,CAAC,YAAa;AAElB,iBAAe,UAAS;EAExB,MAAM,MAAM,IAAI,OAAM;AACtB,MAAI,MAAM;AAEV,MAAI,eAAe,eAAe,SAAQ;AAC1C,MAAI,gBAAgB,eAAe,QAAO;AAE1C,eAAa;AACX,OAAI,SAAS;AACb,OAAI,UAAU;;IAEf,CAAC,YAAY,CAAA;CAEhB,MAAM,sBAAsB;AAC1B,MAAI,aACF,QACE,oBAAC,QAAD;GAEE,cAAY,eAAe;GAC3B,WAAW,GAAG,6GAA6G,gBAAgB,MAAsC;aAGhL,YAAY,aAAa;GACtB;AAIV,MAAI,MAAM;GACR,MAAM,WAAW,UAAU;AAE3B,UACE,oBAAC,QAAD;IAAM,WAAU;cACb,eAAe,KAAI,UACT;KACL,MAAM,gBAAgB;MACpB,WAAW,GAAG,yBAA0B,KAAK,MAAiC,UAAU;MACxF,eAAe;MACjB;AAMA,SAHsB,KAAK,KACW,aAAa,SAAS,OAAO,IAAI,MAOrE,QAAO,aAAa,MAAM;MAHxB,GAAG;MACH,MAAM;MAEmC,CAAA;AAG7C,YAAO,aAAa,MAAM,cAAa;QACtC,GACH;IACA;;AAIV,MAAI,eAAe,gBAAgB,SACjC,QACE,oBAAC,OAAD;GACE,KAAK,OAAO;GACZ,cAAY,OAAO;GACnB,WAAU;GAEV,QAAQ,gBAAgB;GACxB,MAAK;GACL,KAAK;GACL,OAAO,gBAAgB;GACxB;AAIL,MAAI,eAAe,gBAAgB,WAAW,SAC5C,QACE,oBAAC,QAAD;GAAM,WAAU;aACb;GACG;AAKV,MAAI,SACF,QACE,oBAAC,QAAD;GAAM,WAAW,GAAG,2DAA2D,gBAAgB,MAAsC;aAClI;GACG;AAKV,MAAI,eAAe,gBAAgB,UACjC,QAAO,oBAAC,QAAD,EAAM,WAAU,wEAA8G;AAIvI,SAAO,oBAAC,UAAD,EAAU,WAAU,gBAAgB;;AAG7C,QACE,oBAAC,OAAD;EAAK,WAAW,GAAG,yHAAyH,YAAY,OAAmC,UAAU;EAAE,aAAU;YAC9M,eAAe;EACb"}
1
+ {"version":3,"file":"Avatar.js","names":[],"sources":["../src/components/Avatar/Avatar.tsx"],"sourcesContent":["import { UserIcon } from '@components/Icons/UserIcon'\nimport { cn } from '@utils/twUtils'\nimport { cloneElement, isValidElement, useEffect, useState, type ComponentType, type ReactElement, type ReactNode } from 'react'\n\ntype AvatarSize = 'sm' | 'md' | 'lg'\n\nexport interface AvatarProps {\n alt?: string\n className?: string\n fallback?: ReactNode | string\n icon?: ReactElement\n imageSource?: string\n size?: AvatarSize\n userFullName?: string\n}\n\nconst sizeClasses = {\n sm: 'size-8',\n md: 'size-10',\n lg: 'size-12',\n}\n\nconst imageDimensions = {\n sm: 32,\n md: 40,\n lg: 48,\n}\n\nconst textSizeClasses = {\n sm: 'text-xs',\n md: 'text-base',\n lg: 'text-xl',\n}\n\nconst iconSizes = {\n sm: 24,\n md: 32,\n lg: 40,\n}\n\nconst getInitials = (name: string): string => {\n const trimmed = name.trim()\n if (!trimmed) return '?'\n\n const words = trimmed.split(/\\s+/).filter(Boolean)\n\n if (words.length === 0) return '?'\n if (words.length === 1) return words[0].charAt(0).toUpperCase()\n\n return (words[0].charAt(0) + words[words.length - 1].charAt(0)).toUpperCase()\n}\n\nexport const Avatar = ({ alt, className, fallback, icon, imageSource, size = 'md', userFullName }: AvatarProps) => {\n const [imageStatus, setImageStatus] = useState<'loading' | 'loaded' | 'error'>('loading')\n\n useEffect(() => {\n if (!imageSource) return\n\n setImageStatus('loading')\n\n const img = new Image()\n img.src = imageSource\n\n img.onload = () => setImageStatus('loaded')\n img.onerror = () => setImageStatus('error')\n\n return () => {\n img.onload = null\n img.onerror = null\n }\n }, [imageSource])\n\n const renderContent = () => {\n if (userFullName) {\n return (\n <span\n // cannot use template literals in aria-label or oxlint validation fails: https://www.w3.org/WAI/ARIA/apg/patterns/img/#labeling\n aria-label={userFullName + ' avatar'}\n className={cn('font-bold tracking-tighter flex size-full items-center justify-center text-inherit font-stretch-condensed', textSizeClasses[size as keyof typeof textSizeClasses])}\n data-testid='spectral-avatar-initials'\n >\n {getInitials(userFullName)}\n </span>\n )\n }\n\n if (icon) {\n const iconSize = iconSizes[size as keyof typeof iconSizes]\n\n return (\n <span className='flex size-full items-center justify-center text-inherit'>\n {isValidElement(icon)\n ? (() => {\n const baseIconProps = {\n className: cn('shrink-0 text-inherit', (icon.props as { className?: string }).className),\n 'aria-hidden': 'true' as const,\n }\n\n // Check if this is an icon component that accepts size prop\n const componentType = icon.type as ComponentType<unknown> & { displayName?: string }\n const isIconComponent = componentType.displayName?.includes('Icon') ?? false\n\n if (isIconComponent) {\n const iconPropsWithSize = {\n ...baseIconProps,\n size: iconSize,\n }\n return cloneElement(icon, iconPropsWithSize)\n }\n\n return cloneElement(icon, baseIconProps)\n })()\n : icon}\n </span>\n )\n }\n\n if (imageSource && imageStatus === 'loaded') {\n return (\n <img\n alt={alt ?? 'Avatar'}\n aria-label={alt ?? 'Avatar'}\n className='inset-0 absolute size-full rounded-full object-cover'\n data-testid='spectral-avatar-image'\n height={imageDimensions[size as keyof typeof imageDimensions]}\n role='img'\n src={imageSource}\n width={imageDimensions[size as keyof typeof imageDimensions]}\n />\n )\n }\n\n if (imageSource && imageStatus === 'error' && fallback) {\n return (\n <span\n className='flex size-full items-center justify-center text-inherit'\n data-testid='spectral-avatar-img-error-fallback'\n >\n {fallback}\n </span>\n )\n }\n\n // Show fallback while image is loading or if no image provided\n if (fallback) {\n return (\n <span\n className={cn('flex size-full items-center justify-center text-inherit', textSizeClasses[size as keyof typeof textSizeClasses])}\n data-testid='spectral-avatar-fallback'\n >\n {fallback}\n </span>\n )\n }\n\n // Show empty/skeleton state while image is loading\n if (imageSource && imageStatus === 'loading') {\n return (\n <span\n className='motion-safe:animate-pulse flex size-full items-center justify-center'\n data-testid='spectral-avatar-loading'\n />\n )\n }\n\n // Last resort: (only when no imageSource and no fallback)\n return <UserIcon className='text-inherit' />\n }\n\n return (\n <div\n className={cn('relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full bg-level-two text-text-primary', sizeClasses[size as keyof typeof sizeClasses], className)}\n data-slot='avatar'\n data-testid='spectral-avatar'\n >\n {renderContent()}\n </div>\n )\n}\n"],"mappings":";;;;;;;AAgBA,MAAM,cAAc;CAClB,IAAI;CACJ,IAAI;CACJ,IAAI;CACN;AAEA,MAAM,kBAAkB;CACtB,IAAI;CACJ,IAAI;CACJ,IAAI;CACN;AAEA,MAAM,kBAAkB;CACtB,IAAI;CACJ,IAAI;CACJ,IAAI;CACN;AAEA,MAAM,YAAY;CAChB,IAAI;CACJ,IAAI;CACJ,IAAI;CACN;AAEA,MAAM,eAAe,SAAyB;CAC5C,MAAM,UAAU,KAAK,MAAK;AAC1B,KAAI,CAAC,QAAS,QAAO;CAErB,MAAM,QAAQ,QAAQ,MAAM,MAAM,CAAC,OAAO,QAAO;AAEjD,KAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,KAAI,MAAM,WAAW,EAAG,QAAO,MAAM,GAAG,OAAO,EAAE,CAAC,aAAY;AAE9D,SAAQ,MAAM,GAAG,OAAO,EAAE,GAAG,MAAM,MAAM,SAAS,GAAG,OAAO,EAAE,EAAE,aAAY;;AAG9E,MAAa,UAAU,EAAE,KAAK,WAAW,UAAU,MAAM,aAAa,OAAO,MAAM,mBAAgC;CACjH,MAAM,CAAC,aAAa,kBAAkB,SAAyC,UAAS;AAExF,iBAAgB;AACd,MAAI,CAAC,YAAa;AAElB,iBAAe,UAAS;EAExB,MAAM,MAAM,IAAI,OAAM;AACtB,MAAI,MAAM;AAEV,MAAI,eAAe,eAAe,SAAQ;AAC1C,MAAI,gBAAgB,eAAe,QAAO;AAE1C,eAAa;AACX,OAAI,SAAS;AACb,OAAI,UAAU;;IAEf,CAAC,YAAY,CAAA;CAEhB,MAAM,sBAAsB;AAC1B,MAAI,aACF,QACE,oBAAC,QAAD;GAEE,cAAY,eAAe;GAC3B,WAAW,GAAG,6GAA6G,gBAAgB,MAAsC;aAGhL,YAAY,aAAa;GACtB;AAIV,MAAI,MAAM;GACR,MAAM,WAAW,UAAU;AAE3B,UACE,oBAAC,QAAD;IAAM,WAAU;cACb,eAAe,KAAI,UACT;KACL,MAAM,gBAAgB;MACpB,WAAW,GAAG,yBAA0B,KAAK,MAAiC,UAAU;MACxF,eAAe;MACjB;AAMA,SAHsB,KAAK,KACW,aAAa,SAAS,OAAO,IAAI,MAOrE,QAAO,aAAa,MAAM;MAHxB,GAAG;MACH,MAAM;MAEmC,CAAA;AAG7C,YAAO,aAAa,MAAM,cAAa;QACtC,GACH;IACA;;AAIV,MAAI,eAAe,gBAAgB,SACjC,QACE,oBAAC,OAAD;GACE,KAAK,OAAO;GACZ,cAAY,OAAO;GACnB,WAAU;GAEV,QAAQ,gBAAgB;GACxB,MAAK;GACL,KAAK;GACL,OAAO,gBAAgB;GACxB;AAIL,MAAI,eAAe,gBAAgB,WAAW,SAC5C,QACE,oBAAC,QAAD;GACE,WAAU;aAGT;GACG;AAKV,MAAI,SACF,QACE,oBAAC,QAAD;GACE,WAAW,GAAG,2DAA2D,gBAAgB,MAAsC;aAG9H;GACG;AAKV,MAAI,eAAe,gBAAgB,UACjC,QACE,oBAAC,QAAD,EACE,WAAU,wEAEX;AAKL,SAAO,oBAAC,UAAD,EAAU,WAAU,gBAAgB;;AAG7C,QACE,oBAAC,OAAD;EACE,WAAW,GAAG,yHAAyH,YAAY,OAAmC,UAAU;EAChM,aAAU;YAGT,eAAe;EACb"}
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.d.ts","names":[],"sources":["../src/components/Badge/Badge.tsx"],"mappings":";;;;;;;KAKY,UAAA,GAAa,cAAA,WAAyB,YAAA,QAAoB,aAAA;EAAmB,OAAA;AAAA;AAAA,cAEnF,aAAA,GAAa,KAAA;;IAelB,iCAAA,CAAA,SAAA;AAAA,cAEY,KAAA;EAAK,OAAA;EAAA,SAAA;EAAA,OAAA;EAAA,GAAA;AAAA,GAAuD,UAAA,KAAU,oBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"Badge.d.ts","names":[],"sources":["../src/components/Badge/Badge.tsx"],"mappings":";;;;;;;KAKY,UAAA,GAAa,cAAA,WAAyB,YAAA,QAAoB,aAAA;EAAmB,OAAA;AAAA;AAAA,cAEnF,aAAA,GAAa,KAAA;;IAgBlB,iCAAA,CAAA,SAAA;AAAA,cAEY,KAAA;EAAK,OAAA;EAAA,SAAA;EAAA,OAAA;EAAA,GAAA;AAAA,GAAuD,UAAA,KAAU,oBAAA,CAAA,GAAA,CAAA,OAAA"}
package/dist/Badge.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.js","names":[],"sources":["../src/components/Badge/Badge.tsx"],"sourcesContent":["import { Slot } from '@primitives/slot'\nimport { cn } from '@utils/twUtils'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { type ComponentProps } from 'react'\n\nexport type BadgeProps = ComponentProps<'span'> & VariantProps<typeof badgeVariants> & { asChild?: boolean }\n\nconst badgeVariants = cva(\n `rounded-sm px-2 py-0.5 text-xs font-medium [&>svg]:size-3 gap-1 inline-flex w-fit shrink-0 items-center justify-center overflow-hidden whitespace-nowrap transition-[background-color,color,box-shadow] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent aria-invalid:border-danger-200 aria-invalid:outline-danger-200/20 [&>svg]:pointer-events-none`,\n {\n variants: {\n variant: {\n default: 'bg-badge-primary-bg text-text-primary group-active:[background-color:var(--color-toggle-border--active)] group-aria-pressed:[background-color:var(--color-toggle-border--active)] group-data-[state=on]:[background-color:var(--color-toggle-border--active)] [a&]:hover:bg-badge-primary-bg--hover',\n secondary: '[a&]:hover:bg-badge-secondary-bg--hover bg-badge-secondary-bg text-badge-secondary-text',\n destructive: 'bg-badge-destructive-bg text-text-primary focus-visible:outline-badge-destructive-border [a&]:hover:bg-danger-400',\n outline: '[a&]:hover:text-accent-foreground border border-badge-outline-border text-text-primary [a&]:hover:bg-accent',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\nexport const Badge = ({ asChild = false, className, variant, ...props }: BadgeProps) => {\n const Comp = asChild ? Slot : 'span'\n\n return <Comp className={cn(badgeVariants({ variant }), className)} data-slot='badge' data-testid='spectral-badge' {...props} />\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,gBAAgB,IACpB,6XACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,WAAW;EACX,aAAa;EACb,SAAS;EACV,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACH;AAEA,MAAa,SAAS,EAAE,UAAU,OAAO,WAAW,SAAS,GAAG,YAAwB;AAGtF,QAAO,oBAFM,UAAU,OAAO,QAEvB;EAAM,WAAW,GAAG,cAAc,EAAE,SAAS,CAAC,EAAE,UAAU;EAAE,aAAU;EAAqC,GAAI;EAAQ"}
1
+ {"version":3,"file":"Badge.js","names":[],"sources":["../src/components/Badge/Badge.tsx"],"sourcesContent":["import { Slot } from '@primitives/slot'\nimport { cn } from '@utils/twUtils'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { type ComponentProps } from 'react'\n\nexport type BadgeProps = ComponentProps<'span'> & VariantProps<typeof badgeVariants> & { asChild?: boolean }\n\nconst badgeVariants = cva(\n `rounded-sm px-2 py-0.5 text-xs font-medium [&>svg]:size-3 gap-1 inline-flex w-fit shrink-0 items-center justify-center overflow-hidden whitespace-nowrap transition-[background-color,color,box-shadow] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent aria-invalid:border-danger-200 aria-invalid:outline-danger-200/20 [&>svg]:pointer-events-none`,\n {\n variants: {\n variant: {\n default:\n 'bg-badge-primary-bg text-text-primary group-active:[background-color:var(--color-toggle-border--active)] group-aria-pressed:[background-color:var(--color-toggle-border--active)] group-data-[state=on]:[background-color:var(--color-toggle-border--active)] [a&]:hover:bg-badge-primary-bg--hover',\n secondary: '[a&]:hover:bg-badge-secondary-bg--hover bg-badge-secondary-bg text-badge-secondary-text',\n destructive: 'bg-badge-destructive-bg text-text-primary focus-visible:outline-badge-destructive-border [a&]:hover:bg-danger-400',\n outline: '[a&]:hover:text-accent-foreground border border-badge-outline-border text-text-primary [a&]:hover:bg-accent',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\nexport const Badge = ({ asChild = false, className, variant, ...props }: BadgeProps) => {\n const Comp = asChild ? Slot : 'span'\n\n return (\n <Comp\n className={cn(badgeVariants({ variant }), className)}\n data-slot='badge'\n data-testid='spectral-badge'\n {...props}\n />\n )\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,gBAAgB,IACpB,6XACA;CACE,UAAU,EACR,SAAS;EACP,SACE;EACF,WAAW;EACX,aAAa;EACb,SAAS;EACV,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACH;AAEA,MAAa,SAAS,EAAE,UAAU,OAAO,WAAW,SAAS,GAAG,YAAwB;AAGtF,QACE,oBAHW,UAAU,OAAO,QAG5B;EACE,WAAW,GAAG,cAAc,EAAE,SAAS,CAAC,EAAE,UAAU;EACpD,aAAU;EAEV,GAAI;EACL"}
package/dist/Button.d.ts CHANGED
@@ -7,7 +7,7 @@ import * as _$class_variance_authority_types0 from "class-variance-authority/typ
7
7
 
8
8
  //#region src/components/Button/Button.d.ts
9
9
  declare const buttonVariants: (props?: ({
10
- variant?: "destructive" | "ghost" | "outline" | "primary" | "secondary" | "unstyled" | null | undefined;
10
+ variant?: "destructive" | "ghost" | "primary" | "secondary" | "unstyled" | null | undefined;
11
11
  size?: "default" | "fullWidth" | "small" | null | undefined;
12
12
  state?: "default" | "error" | "loading" | null | undefined;
13
13
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
@@ -21,7 +21,7 @@ interface ButtonProps extends AsChildProp, Omit<ButtonHTMLAttributes<HTMLButtonE
21
21
  startIcon?: ReactNode;
22
22
  state?: 'default' | 'error' | 'loading';
23
23
  type?: 'button' | 'submit' | 'reset';
24
- variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'unstyled';
24
+ variant?: 'primary' | 'secondary' | 'ghost' | 'destructive' | 'unstyled';
25
25
  }
26
26
  declare function Button({
27
27
  asChild,
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","names":[],"sources":["../src/components/Button/Button.tsx"],"mappings":";;;;;;;;cAMM,cAAA,GAAc,KAAA;;;;IA6BnB,iCAAA,CAAA,SAAA;AAAA,UAEgB,WAAA,SAAoB,WAAA,EAAa,IAAA,CAAK,oBAAA,CAAqB,iBAAA,aAA8B,YAAA,QAAoB,cAAA;EAC5H,UAAA;EACA,QAAA;EACA,OAAA,GAAU,SAAA;EACV,KAAA;EACA,OAAA,IAAW,KAAA,EAAO,UAAA,CAAW,WAAA;EAC7B,IAAA;EACA,SAAA,GAAY,SAAA;EACZ,KAAA;EACA,IAAA;EACA,OAAA;AAAA;AAAA;EAIA,OAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,OAAA;EACA,EAAA;EACA,KAAA;EACA,OAAA;EACA,GAAA;EACA,IAAA;EACA,SAAA;EACA,KAAA;EACA,IAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,WAAA;EACD,GAAA,GAAM,GAAA,CAAI,iBAAA;AAAA,IACX,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA"}
1
+ {"version":3,"file":"Button.d.ts","names":[],"sources":["../src/components/Button/Button.tsx"],"mappings":";;;;;;;;cAMM,cAAA,GAAc,KAAA;;;;IA8BnB,iCAAA,CAAA,SAAA;AAAA,UAEgB,WAAA,SAAoB,WAAA,EAAa,IAAA,CAAK,oBAAA,CAAqB,iBAAA,aAA8B,YAAA,QAAoB,cAAA;EAC5H,UAAA;EACA,QAAA;EACA,OAAA,GAAU,SAAA;EACV,KAAA;EACA,OAAA,IAAW,KAAA,EAAO,UAAA,CAAW,WAAA;EAC7B,IAAA;EACA,SAAA,GAAY,SAAA;EACZ,KAAA;EACA,IAAA;EACA,OAAA;AAAA;AAAA;EAIA,OAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,OAAA;EACA,EAAA;EACA,KAAA;EACA,OAAA;EACA,GAAA;EACA,IAAA;EACA,SAAA;EACA,KAAA;EACA,IAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,WAAA;EACD,GAAA,GAAM,GAAA,CAAI,iBAAA;AAAA,IACX,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA"}
package/dist/Button.js CHANGED
@@ -7,15 +7,14 @@ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { cva } from "class-variance-authority";
8
8
 
9
9
  //#region src/components/Button/Button.tsx
10
- const buttonVariants = cva(`gap-2 rounded-md font-semibold [&_svg]:size-4 relative flex cursor-pointer items-center justify-center border font-sans! whitespace-nowrap transition-[background-color,border-color,color,transform] duration-200 ease-out motion-reduce:transition-none disabled:active:scale-100 focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0`, {
10
+ const buttonVariants = cva(`gap-2 rounded-md font-semibold [&_svg]:size-4 relative flex cursor-pointer items-center justify-center border font-sans! whitespace-nowrap transition-[background-color,border-color,color,transform] duration-200 ease-out focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 disabled:pointer-events-none disabled:active:scale-100 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0`, {
11
11
  variants: {
12
12
  variant: {
13
- primary: `border-button-primary-border bg-button-primary-bg text-button-primary-text hover:border-button-primary-border--hover hover:bg-button-primary-bg--hover hover:text-button-primary-text--hover active:scale-[0.97] focus-visible:outline-button-primary-border disabled:border-button-primary-border--disabled disabled:bg-button-primary-bg--disabled disabled:text-button-primary-text--disabled`,
14
- secondary: `border-button-secondary-border bg-button-secondary-bg text-button-secondary-text hover:bg-button-secondary-bg--hover hover:border-button-secondary-border--hover hover:text-button-secondary-text--hover active:scale-[0.97] focus-visible:outline-button-secondary-border disabled:border-button-secondary-border--disabled disabled:text-button-secondary-text--disabled`,
15
- outline: `border-button-secondary-border bg-button-secondary-bg text-button-secondary-text hover:bg-button-secondary-bg--hover hover:border-button-secondary-border--hover hover:text-button-secondary-text--hover active:scale-[0.97] focus-visible:outline-button-secondary-border disabled:border-button-secondary-border--disabled disabled:text-button-secondary-text--disabled`,
16
- ghost: "border-none bg-button-ghost-bg text-button-ghost-text hover:bg-button-ghost-bg--hover hover:text-button-ghost-text--hover active:scale-[0.97] focus-visible:outline-button-outline-border disabled:text-button-ghost-text--disabled",
17
- unstyled: "font-inherit! font-normal gap-0 p-0! inline-flex w-auto! justify-start rounded-none! border-none! bg-transparent text-inherit shadow-none! hover:cursor-pointer hover:bg-transparent active:scale-100 focus-visible:outline-button-outline-border disabled:opacity-50",
18
- destructive: "border-button-destructive-border bg-button-destructive-bg text-button-destructive-text hover:bg-button-destructive-bg--hover active:scale-[0.97] disabled:border-button-destructive-border--disabled disabled:bg-button-destructive-bg--disabled disabled:text-button-destructive-text--disabled focus-visible:outline-button-destructive-border"
13
+ primary: `hover:border-button-primary-border--hover border-button-primary-border bg-button-primary-bg text-button-primary-text hover:bg-button-primary-bg--hover hover:text-button-primary-text--hover focus-visible:outline-button-primary-border active:scale-[0.97] disabled:border-button-primary-border--disabled disabled:bg-button-primary-bg--disabled disabled:text-button-primary-text--disabled`,
14
+ secondary: `border-button-secondary-border bg-button-secondary-bg text-button-secondary-text hover:border-button-secondary-border--hover hover:bg-button-secondary-bg--hover hover:text-button-secondary-text--hover focus-visible:outline-button-secondary-border active:scale-[0.97] disabled:border-button-secondary-border--disabled disabled:text-button-secondary-text--disabled`,
15
+ ghost: "focus-visible:outline-button-outline-border border-none bg-button-ghost-bg text-button-ghost-text hover:bg-button-ghost-bg--hover hover:text-button-ghost-text--hover active:scale-[0.97] disabled:text-button-ghost-text--disabled",
16
+ unstyled: "font-inherit! font-normal gap-0 p-0! focus-visible:outline-button-outline-border inline-flex w-auto! justify-start rounded-none! border-none! bg-transparent text-inherit shadow-none! hover:cursor-pointer hover:bg-transparent active:scale-100 disabled:opacity-50",
17
+ destructive: "border-button-destructive-border bg-button-destructive-bg text-button-destructive-text hover:bg-button-destructive-bg--hover focus-visible:outline-button-destructive-border active:scale-[0.97] disabled:border-button-destructive-border--disabled disabled:bg-button-destructive-bg--disabled disabled:text-button-destructive-text--disabled"
19
18
  },
20
19
  size: {
21
20
  small: "py-1.5 px-3 text-sm! w-fit",
@@ -39,14 +38,12 @@ const Button = ({ asChild = false, children, className, dataTestId, disabled, en
39
38
  error: {
40
39
  primary: "border-button-destructive-border bg-button-destructive-bg text-button-destructive-text hover:bg-button-destructive-bg--hover hover:text-button-destructive-text--hover focus-visible:outline-button-destructive-border",
41
40
  secondary: "bg-transparent border-button-destructive-border text-button-destructive-text hover:border-button-destructive-border--hover hover:text-button-destructive-text--hover hover:bg-button-destructive-bg--hover focus-visible:outline-button-destructive-border",
42
- outline: "bg-transparent border-button-destructive-border text-button-destructive-text hover:border-button-destructive-border--hover hover:text-button-destructive-text--hover hover:bg-button-destructive-bg--hover focus-visible:outline-button-destructive-border",
43
41
  ghost: "bg-transparent text-button-destructive-text hover:text-button-destructive-text--hover hover:bg-button-destructive-bg--hover",
44
42
  unstyled: "bg-transparent text-button-destructive-text"
45
43
  },
46
44
  loading: {
47
45
  primary: "bg-button-primary-bg--loading border-button-primary-border--loading text-button-primary-text--loading pointer-events-none",
48
46
  secondary: "bg-button-secondary-bg--loading border-button-secondary-border--loading text-button-secondary-text--loading pointer-events-none",
49
- outline: "bg-button-secondary-bg--loading border-button-secondary-border--loading text-button-secondary-text--loading pointer-events-none",
50
47
  destructive: "bg-button-destructive-bg--loading border-button-destructive-border--loading text-button-destructive-text--loading pointer-events-none",
51
48
  ghost: "bg-transparent text-button-ghost-text--loading pointer-events-none",
52
49
  unstyled: "bg-transparent opacity-50 pointer-events-none"
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","names":[],"sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import { LoaderIcon } from '@components/Icons'\nimport { Slot, type AsChildProp } from '@primitives/slot'\nimport { cn } from '@utils/twUtils'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Children, isValidElement, type ButtonHTMLAttributes, type MouseEvent, type ReactNode, type Ref } from 'react'\n\nconst buttonVariants = cva(\n `gap-2 rounded-md font-semibold [&_svg]:size-4 relative flex cursor-pointer items-center justify-center border font-sans! whitespace-nowrap transition-[background-color,border-color,color,transform] duration-200 ease-out motion-reduce:transition-none disabled:active:scale-100 focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0`,\n {\n variants: {\n variant: {\n primary: `border-button-primary-border bg-button-primary-bg text-button-primary-text hover:border-button-primary-border--hover hover:bg-button-primary-bg--hover hover:text-button-primary-text--hover active:scale-[0.97] focus-visible:outline-button-primary-border disabled:border-button-primary-border--disabled disabled:bg-button-primary-bg--disabled disabled:text-button-primary-text--disabled`,\n secondary: `border-button-secondary-border bg-button-secondary-bg text-button-secondary-text hover:bg-button-secondary-bg--hover hover:border-button-secondary-border--hover hover:text-button-secondary-text--hover active:scale-[0.97] focus-visible:outline-button-secondary-border disabled:border-button-secondary-border--disabled disabled:text-button-secondary-text--disabled`,\n outline: `border-button-secondary-border bg-button-secondary-bg text-button-secondary-text hover:bg-button-secondary-bg--hover hover:border-button-secondary-border--hover hover:text-button-secondary-text--hover active:scale-[0.97] focus-visible:outline-button-secondary-border disabled:border-button-secondary-border--disabled disabled:text-button-secondary-text--disabled`,\n ghost: 'border-none bg-button-ghost-bg text-button-ghost-text hover:bg-button-ghost-bg--hover hover:text-button-ghost-text--hover active:scale-[0.97] focus-visible:outline-button-outline-border disabled:text-button-ghost-text--disabled',\n unstyled: 'font-inherit! font-normal gap-0 p-0! inline-flex w-auto! justify-start rounded-none! border-none! bg-transparent text-inherit shadow-none! hover:cursor-pointer hover:bg-transparent active:scale-100 focus-visible:outline-button-outline-border disabled:opacity-50',\n destructive: 'border-button-destructive-border bg-button-destructive-bg text-button-destructive-text hover:bg-button-destructive-bg--hover active:scale-[0.97] disabled:border-button-destructive-border--disabled disabled:bg-button-destructive-bg--disabled disabled:text-button-destructive-text--disabled focus-visible:outline-button-destructive-border',\n },\n size: {\n small: 'py-1.5 px-3 text-sm! w-fit',\n default: 'py-2 px-4 text-sm! w-fit',\n fullWidth: 'py-2 px-4 text-sm! w-full',\n },\n state: {\n default: '',\n error: 'bg-button-danger text-text-primary transition focus-visible:outline-danger-400',\n loading: 'pointer-events-none cursor-wait',\n },\n },\n defaultVariants: {\n variant: 'primary',\n state: 'default',\n size: 'default',\n },\n },\n)\n\nexport interface ButtonProps extends AsChildProp, Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'>, VariantProps<typeof buttonVariants> {\n dataTestId?: string\n disabled?: boolean\n endIcon?: ReactNode\n label?: string\n onClick?: (event: MouseEvent<HTMLElement>) => void\n size?: 'small' | 'default' | 'fullWidth'\n startIcon?: ReactNode\n state?: 'default' | 'error' | 'loading'\n type?: 'button' | 'submit' | 'reset'\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'unstyled'\n}\n\nexport const Button = ({\n asChild = false,\n children,\n className,\n dataTestId,\n disabled,\n endIcon,\n id,\n label,\n onClick,\n ref,\n size,\n startIcon,\n state,\n type = 'button',\n variant = 'primary',\n ...props\n}: ButtonProps & {\n ref?: Ref<HTMLButtonElement>\n}) => {\n const stateStyles = {\n error: {\n primary: 'border-button-destructive-border bg-button-destructive-bg text-button-destructive-text hover:bg-button-destructive-bg--hover hover:text-button-destructive-text--hover focus-visible:outline-button-destructive-border',\n secondary: 'bg-transparent border-button-destructive-border text-button-destructive-text hover:border-button-destructive-border--hover hover:text-button-destructive-text--hover hover:bg-button-destructive-bg--hover focus-visible:outline-button-destructive-border',\n outline: 'bg-transparent border-button-destructive-border text-button-destructive-text hover:border-button-destructive-border--hover hover:text-button-destructive-text--hover hover:bg-button-destructive-bg--hover focus-visible:outline-button-destructive-border',\n ghost: 'bg-transparent text-button-destructive-text hover:text-button-destructive-text--hover hover:bg-button-destructive-bg--hover',\n unstyled: 'bg-transparent text-button-destructive-text',\n },\n loading: {\n primary: 'bg-button-primary-bg--loading border-button-primary-border--loading text-button-primary-text--loading pointer-events-none',\n secondary: 'bg-button-secondary-bg--loading border-button-secondary-border--loading text-button-secondary-text--loading pointer-events-none',\n outline: 'bg-button-secondary-bg--loading border-button-secondary-border--loading text-button-secondary-text--loading pointer-events-none',\n destructive: 'bg-button-destructive-bg--loading border-button-destructive-border--loading text-button-destructive-text--loading pointer-events-none',\n ghost: 'bg-transparent text-button-ghost-text--loading pointer-events-none',\n unstyled: 'bg-transparent opacity-50 pointer-events-none',\n },\n }\n\n const classes = cn(buttonVariants({ variant, state, size }), state === 'error' && stateStyles.error[variant as keyof typeof stateStyles.error], state === 'loading' && stateStyles.loading[variant as keyof typeof stateStyles.loading], className)\n\n const canUseAsChild = asChild && isValidElement(children) && Children.count(children) === 1\n const content = canUseAsChild ? undefined : (children ?? label)\n\n if (!canUseAsChild && !content) {\n throw new Error('Button requires either `label` or `children`')\n }\n\n const handleDisabledClickCapture = (event: MouseEvent<HTMLElement>) => {\n if (!disabled) return\n event.preventDefault()\n event.stopPropagation()\n }\n\n const Comp = canUseAsChild ? Slot : 'button'\n\n return (\n <Comp\n aria-disabled={disabled}\n className={cn(classes, canUseAsChild && 'no-underline! before:content-none after:content-none', canUseAsChild && disabled && 'pointer-events-none opacity-50')}\n data-as-child={canUseAsChild ? 'true' : undefined}\n data-state={state}\n data-testid={dataTestId ?? `spectral-button-${variant}`}\n data-variant={variant}\n disabled={canUseAsChild ? undefined : disabled}\n id={id}\n onClick={onClick}\n onClickCapture={canUseAsChild ? handleDisabledClickCapture : undefined}\n ref={ref}\n tabIndex={canUseAsChild && disabled ? -1 : undefined}\n type={canUseAsChild ? undefined : type}\n {...props}\n >\n {canUseAsChild ? (\n children\n ) : (\n <>\n {startIcon && (\n <span className={cn('flex', variant !== 'unstyled' && 'pr-1')} aria-hidden data-testid='spectral-button-start-icon'>\n {startIcon}\n </span>\n )}\n {state === 'loading' && <LoaderIcon className='ml-2 size-5!' />}\n {content}\n {endIcon && state !== 'loading' && (\n <span className={cn('flex', variant !== 'unstyled' && 'pl-2')} aria-hidden data-testid='spectral-button-end-icon'>\n {endIcon}\n </span>\n )}\n </>\n )}\n </Comp>\n )\n}\nButton.displayName = 'Button'\n"],"mappings":";;;;;;;;;AAMA,MAAM,iBAAiB,IACrB,2aACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,WAAW;GACX,SAAS;GACT,OAAO;GACP,UAAU;GACV,aAAa;GACd;EACD,MAAM;GACJ,OAAO;GACP,SAAS;GACT,WAAW;GACZ;EACD,OAAO;GACL,SAAS;GACT,OAAO;GACP,SAAS;GACV;EACF;CACD,iBAAiB;EACf,SAAS;EACT,OAAO;EACP,MAAM;EACP;CACF,CACH;AAeA,MAAa,UAAU,EACrB,UAAU,OACV,UACA,WACA,YACA,UACA,SACA,IACA,OACA,SACA,KACA,MACA,WACA,OACA,OAAO,UACP,UAAU,WACV,GAAG,YAGC;CACJ,MAAM,cAAc;EAClB,OAAO;GACL,SAAS;GACT,WAAW;GACX,SAAS;GACT,OAAO;GACP,UAAU;GACX;EACD,SAAS;GACP,SAAS;GACT,WAAW;GACX,SAAS;GACT,aAAa;GACb,OAAO;GACP,UAAU;GACX;EACH;CAEA,MAAM,UAAU,GAAG,eAAe;EAAE;EAAS;EAAO;EAAM,CAAC,EAAE,UAAU,WAAW,YAAY,MAAM,UAA4C,UAAU,aAAa,YAAY,QAAQ,UAA8C,UAAS;CAElP,MAAM,gBAAgB,WAAW,eAAe,SAAS,IAAI,SAAS,MAAM,SAAS,KAAK;CAC1F,MAAM,UAAU,gBAAgB,SAAa,YAAY;AAEzD,KAAI,CAAC,iBAAiB,CAAC,QACrB,OAAM,IAAI,MAAM,+CAA8C;CAGhE,MAAM,8BAA8B,UAAmC;AACrE,MAAI,CAAC,SAAU;AACf,QAAM,gBAAe;AACrB,QAAM,iBAAgB;;AAKxB,QACE,oBAHW,gBAAgB,OAAO,UAGlC;EACE,iBAAe;EACf,WAAW,GAAG,SAAS,iBAAiB,wDAAwD,iBAAiB,YAAY,iCAAiC;EAC9J,iBAAe,gBAAgB,SAAS;EACxC,cAAY;EAEZ,gBAAc;EACd,UAAU,gBAAgB,SAAY;EAClC;EACK;EACT,gBAAgB,gBAAgB,6BAA6B;EACxD;EACL,UAAU,iBAAiB,WAAW,KAAK;EAC3C,MAAM,gBAAgB,SAAY;EAClC,GAAI;YAEH,gBACC,WAEA;GACG,aACC,oBAAC,QAAD;IAAM,WAAW,GAAG,QAAQ,YAAY,cAAc,OAAO;IAAE;cAC5D;IACG;GAEP,UAAU,aAAa,oBAAC,YAAD,EAAY,WAAU,gBAAiB;GAC9D;GACA,WAAW,UAAU,aACpB,oBAAC,QAAD;IAAM,WAAW,GAAG,QAAQ,YAAY,cAAc,OAAO;IAAE;cAC5D;IACG;GAER;EAEA;;AAGV,OAAO,cAAc"}
1
+ {"version":3,"file":"Button.js","names":[],"sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import { LoaderIcon } from '@components/Icons'\nimport { Slot, type AsChildProp } from '@primitives/slot'\nimport { cn } from '@utils/twUtils'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Children, isValidElement, type ButtonHTMLAttributes, type MouseEvent, type ReactNode, type Ref } from 'react'\n\nconst buttonVariants = cva(\n `gap-2 rounded-md font-semibold [&_svg]:size-4 relative flex cursor-pointer items-center justify-center border font-sans! whitespace-nowrap transition-[background-color,border-color,color,transform] duration-200 ease-out focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 disabled:pointer-events-none disabled:active:scale-100 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0`,\n {\n variants: {\n variant: {\n primary: `hover:border-button-primary-border--hover border-button-primary-border bg-button-primary-bg text-button-primary-text hover:bg-button-primary-bg--hover hover:text-button-primary-text--hover focus-visible:outline-button-primary-border active:scale-[0.97] disabled:border-button-primary-border--disabled disabled:bg-button-primary-bg--disabled disabled:text-button-primary-text--disabled`,\n secondary: `border-button-secondary-border bg-button-secondary-bg text-button-secondary-text hover:border-button-secondary-border--hover hover:bg-button-secondary-bg--hover hover:text-button-secondary-text--hover focus-visible:outline-button-secondary-border active:scale-[0.97] disabled:border-button-secondary-border--disabled disabled:text-button-secondary-text--disabled`,\n ghost: 'focus-visible:outline-button-outline-border border-none bg-button-ghost-bg text-button-ghost-text hover:bg-button-ghost-bg--hover hover:text-button-ghost-text--hover active:scale-[0.97] disabled:text-button-ghost-text--disabled',\n unstyled:\n 'font-inherit! font-normal gap-0 p-0! focus-visible:outline-button-outline-border inline-flex w-auto! justify-start rounded-none! border-none! bg-transparent text-inherit shadow-none! hover:cursor-pointer hover:bg-transparent active:scale-100 disabled:opacity-50',\n destructive:\n 'border-button-destructive-border bg-button-destructive-bg text-button-destructive-text hover:bg-button-destructive-bg--hover focus-visible:outline-button-destructive-border active:scale-[0.97] disabled:border-button-destructive-border--disabled disabled:bg-button-destructive-bg--disabled disabled:text-button-destructive-text--disabled',\n },\n size: {\n small: 'py-1.5 px-3 text-sm! w-fit',\n default: 'py-2 px-4 text-sm! w-fit',\n fullWidth: 'py-2 px-4 text-sm! w-full',\n },\n state: {\n default: '',\n error: 'bg-button-danger text-text-primary transition focus-visible:outline-danger-400',\n loading: 'pointer-events-none cursor-wait',\n },\n },\n defaultVariants: {\n variant: 'primary',\n state: 'default',\n size: 'default',\n },\n },\n)\n\nexport interface ButtonProps extends AsChildProp, Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'>, VariantProps<typeof buttonVariants> {\n dataTestId?: string\n disabled?: boolean\n endIcon?: ReactNode\n label?: string\n onClick?: (event: MouseEvent<HTMLElement>) => void\n size?: 'small' | 'default' | 'fullWidth'\n startIcon?: ReactNode\n state?: 'default' | 'error' | 'loading'\n type?: 'button' | 'submit' | 'reset'\n variant?: 'primary' | 'secondary' | 'ghost' | 'destructive' | 'unstyled'\n}\n\nexport const Button = ({\n asChild = false,\n children,\n className,\n dataTestId,\n disabled,\n endIcon,\n id,\n label,\n onClick,\n ref,\n size,\n startIcon,\n state,\n type = 'button',\n variant = 'primary',\n ...props\n}: ButtonProps & {\n ref?: Ref<HTMLButtonElement>\n}) => {\n const stateStyles = {\n error: {\n primary: 'border-button-destructive-border bg-button-destructive-bg text-button-destructive-text hover:bg-button-destructive-bg--hover hover:text-button-destructive-text--hover focus-visible:outline-button-destructive-border',\n secondary: 'bg-transparent border-button-destructive-border text-button-destructive-text hover:border-button-destructive-border--hover hover:text-button-destructive-text--hover hover:bg-button-destructive-bg--hover focus-visible:outline-button-destructive-border',\n ghost: 'bg-transparent text-button-destructive-text hover:text-button-destructive-text--hover hover:bg-button-destructive-bg--hover',\n unstyled: 'bg-transparent text-button-destructive-text',\n },\n loading: {\n primary: 'bg-button-primary-bg--loading border-button-primary-border--loading text-button-primary-text--loading pointer-events-none',\n secondary: 'bg-button-secondary-bg--loading border-button-secondary-border--loading text-button-secondary-text--loading pointer-events-none',\n destructive: 'bg-button-destructive-bg--loading border-button-destructive-border--loading text-button-destructive-text--loading pointer-events-none',\n ghost: 'bg-transparent text-button-ghost-text--loading pointer-events-none',\n unstyled: 'bg-transparent opacity-50 pointer-events-none',\n },\n }\n\n const classes = cn(buttonVariants({ variant, state, size }), state === 'error' && stateStyles.error[variant as keyof typeof stateStyles.error], state === 'loading' && stateStyles.loading[variant as keyof typeof stateStyles.loading], className)\n\n const canUseAsChild = asChild && isValidElement(children) && Children.count(children) === 1\n const content = canUseAsChild ? undefined : (children ?? label)\n\n if (!canUseAsChild && !content) {\n throw new Error('Button requires either `label` or `children`')\n }\n\n const handleDisabledClickCapture = (event: MouseEvent<HTMLElement>) => {\n if (!disabled) return\n event.preventDefault()\n event.stopPropagation()\n }\n\n const Comp = canUseAsChild ? Slot : 'button'\n\n return (\n <Comp\n aria-disabled={disabled}\n className={cn(classes, canUseAsChild && 'no-underline! before:content-none after:content-none', canUseAsChild && disabled && 'pointer-events-none opacity-50')}\n data-as-child={canUseAsChild ? 'true' : undefined}\n data-state={state}\n data-testid={dataTestId ?? `spectral-button-${variant}`}\n data-variant={variant}\n disabled={canUseAsChild ? undefined : disabled}\n id={id}\n onClick={onClick}\n onClickCapture={canUseAsChild ? handleDisabledClickCapture : undefined}\n ref={ref}\n tabIndex={canUseAsChild && disabled ? -1 : undefined}\n type={canUseAsChild ? undefined : type}\n {...props}\n >\n {canUseAsChild ? (\n children\n ) : (\n <>\n {startIcon && (\n <span\n className={cn('flex', variant !== 'unstyled' && 'pr-1')}\n aria-hidden\n data-testid='spectral-button-start-icon'\n >\n {startIcon}\n </span>\n )}\n {state === 'loading' && <LoaderIcon className='ml-2 size-5!' />}\n {content}\n {endIcon && state !== 'loading' && (\n <span\n className={cn('flex', variant !== 'unstyled' && 'pl-2')}\n aria-hidden\n data-testid='spectral-button-end-icon'\n >\n {endIcon}\n </span>\n )}\n </>\n )}\n </Comp>\n )\n}\nButton.displayName = 'Button'\n"],"mappings":";;;;;;;;;AAMA,MAAM,iBAAiB,IACrB,2aACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,WAAW;GACX,OAAO;GACP,UACE;GACF,aACE;GACH;EACD,MAAM;GACJ,OAAO;GACP,SAAS;GACT,WAAW;GACZ;EACD,OAAO;GACL,SAAS;GACT,OAAO;GACP,SAAS;GACV;EACF;CACD,iBAAiB;EACf,SAAS;EACT,OAAO;EACP,MAAM;EACP;CACF,CACH;AAeA,MAAa,UAAU,EACrB,UAAU,OACV,UACA,WACA,YACA,UACA,SACA,IACA,OACA,SACA,KACA,MACA,WACA,OACA,OAAO,UACP,UAAU,WACV,GAAG,YAGC;CACJ,MAAM,cAAc;EAClB,OAAO;GACL,SAAS;GACT,WAAW;GACX,OAAO;GACP,UAAU;GACX;EACD,SAAS;GACP,SAAS;GACT,WAAW;GACX,aAAa;GACb,OAAO;GACP,UAAU;GACX;EACH;CAEA,MAAM,UAAU,GAAG,eAAe;EAAE;EAAS;EAAO;EAAM,CAAC,EAAE,UAAU,WAAW,YAAY,MAAM,UAA4C,UAAU,aAAa,YAAY,QAAQ,UAA8C,UAAS;CAElP,MAAM,gBAAgB,WAAW,eAAe,SAAS,IAAI,SAAS,MAAM,SAAS,KAAK;CAC1F,MAAM,UAAU,gBAAgB,SAAa,YAAY;AAEzD,KAAI,CAAC,iBAAiB,CAAC,QACrB,OAAM,IAAI,MAAM,+CAA8C;CAGhE,MAAM,8BAA8B,UAAmC;AACrE,MAAI,CAAC,SAAU;AACf,QAAM,gBAAe;AACrB,QAAM,iBAAgB;;AAKxB,QACE,oBAHW,gBAAgB,OAAO,UAGlC;EACE,iBAAe;EACf,WAAW,GAAG,SAAS,iBAAiB,wDAAwD,iBAAiB,YAAY,iCAAiC;EAC9J,iBAAe,gBAAgB,SAAS;EACxC,cAAY;EAEZ,gBAAc;EACd,UAAU,gBAAgB,SAAY;EAClC;EACK;EACT,gBAAgB,gBAAgB,6BAA6B;EACxD;EACL,UAAU,iBAAiB,WAAW,KAAK;EAC3C,MAAM,gBAAgB,SAAY;EAClC,GAAI;YAEH,gBACC,WAEA;GACG,aACC,oBAAC,QAAD;IACE,WAAW,GAAG,QAAQ,YAAY,cAAc,OAAO;IACvD;cAGC;IACG;GAEP,UAAU,aAAa,oBAAC,YAAD,EAAY,WAAU,gBAAiB;GAC9D;GACA,WAAW,UAAU,aACpB,oBAAC,QAAD;IACE,WAAW,GAAG,QAAQ,YAAY,cAAc,OAAO;IACvD;cAGC;IACG;GAER;EAEA;;AAGV,OAAO,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonGroupButton.d.ts","names":[],"sources":["../../src/components/ButtonGroup/ButtonGroupButton.tsx"],"mappings":";;;;;;;cAKa,cAAA,GAAc,KAAA;;;IAwB1B,iCAAA,CAAA,SAAA;AAAA;EAGC,OAAA;EACA,SAAA;EACA,IAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA,aACD,YAAA,QAAoB,cAAA;EAClB,OAAA;AAAA,IACD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA"}
1
+ {"version":3,"file":"ButtonGroupButton.d.ts","names":[],"sources":["../../src/components/ButtonGroup/ButtonGroupButton.tsx"],"mappings":";;;;;;;cAKa,cAAA,GAAc,KAAA;;;IAuB1B,iCAAA,CAAA,SAAA;AAAA;EAGC,OAAA;EACA,SAAA;EACA,IAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA,aACD,YAAA,QAAoB,cAAA;EAClB,OAAA;AAAA,IACD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA"}
@@ -6,8 +6,7 @@ import { jsx } from "react/jsx-runtime";
6
6
  import { cva } from "class-variance-authority";
7
7
 
8
8
  //#region src/components/ButtonGroup/ButtonGroupButton.tsx
9
- const buttonVariants = cva(`gap-2 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 aria-invalid:border-danger-400 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-[var(--radius,0.375rem)]
10
- bg-level-two whitespace-nowrap text-text-primary transition-colors outline-none hover:bg-level-four focus-visible:border-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent active:bg-accent active:text-text-inverted disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0`, {
9
+ const buttonVariants = cva(`gap-2 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-[var(--radius,0.375rem)] bg-level-two whitespace-nowrap text-text-primary transition-colors outline-none hover:bg-level-four focus-visible:border-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent active:bg-accent active:text-text-inverted disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-danger-400 [&_svg]:pointer-events-none [&_svg]:shrink-0`, {
11
10
  variants: {
12
11
  variant: {
13
12
  default: "",
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonGroupButton.js","names":[],"sources":["../../src/components/ButtonGroup/ButtonGroupButton.tsx"],"sourcesContent":["import { Slot } from '@primitives/slot'\nimport { cn } from '@utils/twUtils'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { type ComponentProps } from 'react'\n\nexport const buttonVariants = cva(\n `gap-2 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 aria-invalid:border-danger-400 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-[var(--radius,0.375rem)]\n bg-level-two whitespace-nowrap text-text-primary transition-colors outline-none hover:bg-level-four focus-visible:border-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent active:bg-accent active:text-text-inverted disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0`,\n {\n variants: {\n variant: {\n default: '',\n outline: 'border border-level-four',\n divided: 'border border-level-four',\n },\n size: {\n sm: 'h-8 gap-1.5 px-3 has-[>svg]:px-2.5',\n md: 'h-9 px-4 py-2 has-[>svg]:px-3',\n lg: 'h-10 px-6 has-[>svg]:px-4',\n 'icon-sm': 'size-8',\n 'icon-md': 'size-9',\n 'icon-lg': 'size-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n },\n)\n\nexport const ButtonGroupButton = ({\n asChild = false,\n className,\n size,\n variant,\n ...props\n}: ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) => {\n const Comp = asChild ? Slot : 'button'\n\n return <Comp className={cn(buttonVariants({ variant, size, className }))} data-size={size} data-slot='button-group-item' data-variant={variant} {...props} />\n}\nButtonGroupButton.displayName = 'ButtonGroupButton'\n"],"mappings":";;;;;;;;AAKA,MAAa,iBAAiB,IAC5B;iWAEA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;GACT,SAAS;GACV;EACD,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,WAAW;GACX,WAAW;GACX,WAAW;GACZ;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF;AAED,MAAa,qBAAqB,EAChC,UAAU,OACV,WACA,MACA,SACA,GAAG,YAIG;AAGN,QAAO,oBAFM,UAAU,OAAO,UAEvB;EAAM,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;GAAW,CAAC,CAAC;EAAE,aAAW;EAAM,aAAU;EAAoB,gBAAc;EAAS,GAAI;EAAS;;AAE/J,kBAAkB,cAAc"}
1
+ {"version":3,"file":"ButtonGroupButton.js","names":[],"sources":["../../src/components/ButtonGroup/ButtonGroupButton.tsx"],"sourcesContent":["import { Slot } from '@primitives/slot'\nimport { cn } from '@utils/twUtils'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { type ComponentProps } from 'react'\n\nexport const buttonVariants = cva(\n `gap-2 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-[var(--radius,0.375rem)] bg-level-two whitespace-nowrap text-text-primary transition-colors outline-none hover:bg-level-four focus-visible:border-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent active:bg-accent active:text-text-inverted disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-danger-400 [&_svg]:pointer-events-none [&_svg]:shrink-0`,\n {\n variants: {\n variant: {\n default: '',\n outline: 'border border-level-four',\n divided: 'border border-level-four',\n },\n size: {\n sm: 'h-8 gap-1.5 px-3 has-[>svg]:px-2.5',\n md: 'h-9 px-4 py-2 has-[>svg]:px-3',\n lg: 'h-10 px-6 has-[>svg]:px-4',\n 'icon-sm': 'size-8',\n 'icon-md': 'size-9',\n 'icon-lg': 'size-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n },\n)\n\nexport const ButtonGroupButton = ({\n asChild = false,\n className,\n size,\n variant,\n ...props\n}: ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) => {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n data-size={size}\n data-slot='button-group-item'\n data-variant={variant}\n {...props}\n />\n )\n}\nButtonGroupButton.displayName = 'ButtonGroupButton'\n"],"mappings":";;;;;;;;AAKA,MAAa,iBAAiB,IAC5B,+hBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;GACT,SAAS;GACV;EACD,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,WAAW;GACX,WAAW;GACX,WAAW;GACZ;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF;AAED,MAAa,qBAAqB,EAChC,UAAU,OACV,WACA,MACA,SACA,GAAG,YAIG;AAGN,QACE,oBAHW,UAAU,OAAO,UAG5B;EACE,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;GAAW,CAAC,CAAC;EAC3D,aAAW;EACX,aAAU;EACV,gBAAc;EACd,GAAI;EACJ;;AAGN,kBAAkB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonGroup.d.ts","names":[],"sources":["../src/components/ButtonGroup/ButtonGroup.tsx"],"mappings":";;;;;;;;KAYY,gBAAA,GAAmB,cAAA,QAAsB,WAAA,IAAe,YAAA,QAAoB,mBAAA;AAAA,cAE3E,mBAAA,GAAmB,KAAA;;IAa/B,iCAAA,CAAA,SAAA;AAAA;EAGC,QAAA;EACA,SAAA;EACA,WAAA;EACA,IAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA,UACD,YAAA,QAAoB,mBAAA;EAClB,IAAA;EACA,OAAA;AAAA,IACD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EAkBD,OAAA;EACA,QAAA;EACA,SAAA;EACA,IAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA;EACD,OAAA;EACA,IAAA;EACA,OAAA;AAAA,IACD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;cASY,eAAA;EAAe,OAAA;EAAA,SAAA;EAAA,GAAA;AAAA,GAIzB,cAAA;EACD,OAAA;AAAA,MACD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;EAMC,SAAA;EACA,WAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,SAAA;EACvB,WAAA;AAAA,IACD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA"}
1
+ {"version":3,"file":"ButtonGroup.d.ts","names":[],"sources":["../src/components/ButtonGroup/ButtonGroup.tsx"],"mappings":";;;;;;;;KAYY,gBAAA,GAAmB,cAAA,QAAsB,WAAA,IAAe,YAAA,QAAoB,mBAAA;AAAA,cAE3E,mBAAA,GAAmB,KAAA;;IAa/B,iCAAA,CAAA,SAAA;AAAA;EAGC,QAAA;EACA,SAAA;EACA,WAAA;EACA,IAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA,UACD,YAAA,QAAoB,mBAAA;EAClB,IAAA;EACA,OAAA;AAAA,IACD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;;EA2BD,OAAA;EACA,QAAA;EACA,SAAA;EACA,IAAA;EACA,OAAA;EAAA,GACG;AAAA,GACF,cAAA;EACD,OAAA;EACA,IAAA;EACA,OAAA;AAAA,IACD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;;;cAkBY,eAAA;EAAe,OAAA;EAAA,SAAA;EAAA,GAAA;AAAA,GAIzB,cAAA;EACD,OAAA;AAAA,MACD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA;EAaC,SAAA;EACA,WAAA;EAAA,GACG;AAAA,GACF,cAAA,QAAsB,SAAA;EACvB,WAAA;AAAA,IACD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA"}
@@ -8,7 +8,7 @@ import { jsx } from "react/jsx-runtime";
8
8
  import { cva } from "class-variance-authority";
9
9
 
10
10
  //#region src/components/ButtonGroup/ButtonGroup.tsx
11
- const buttonGroupVariants = cva(`has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md has-[>[data-slot=button-group]]:gap-2 flex w-fit items-stretch [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1 data-[variant='divided']:[&>[data-slot=button-group-item]]:border-y-0 data-[variant='divided']:[&>[data-slot=button-group-item]:first-of-type]:border-l-0 data-[variant='divided']:[&>[data-slot=button-group-item]:last-of-type]:border-r-0 data-[orientation='vertical']:data-[variant='divided']:[&>[data-slot=button-group-item]]:border-x-0 data-[orientation='vertical']:data-[variant='divided']:[&>[data-slot=button-group-item]:first-of-type]:border-t-0 data-[orientation='vertical']:data-[variant='divided']:[&>[data-slot=button-group-item]:last-of-type]:border-b-0`, {
11
+ const buttonGroupVariants = cva(`has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md has-[>[data-slot=button-group]]:gap-2 flex w-fit items-stretch [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 data-[variant='divided']:[&>[data-slot=button-group-item]]:border-y-0 data-[orientation='vertical']:data-[variant='divided']:[&>[data-slot=button-group-item]]:border-x-0 data-[variant='divided']:[&>[data-slot=button-group-item]:first-of-type]:border-l-0 data-[orientation='vertical']:data-[variant='divided']:[&>[data-slot=button-group-item]:first-of-type]:border-t-0 data-[variant='divided']:[&>[data-slot=button-group-item]:last-of-type]:border-r-0 data-[orientation='vertical']:data-[variant='divided']:[&>[data-slot=button-group-item]:last-of-type]:border-b-0 [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1`, {
12
12
  variants: { orientation: {
13
13
  horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
14
14
  vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"