@fanvue/ui 1.13.1 → 1.14.1

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 (543) hide show
  1. package/dist/cjs/components/Alert/Alert.cjs +10 -10
  2. package/dist/cjs/components/Alert/Alert.cjs.map +1 -1
  3. package/dist/cjs/components/AudioUpload/AudioUpload.cjs +15 -8
  4. package/dist/cjs/components/AudioUpload/AudioUpload.cjs.map +1 -1
  5. package/dist/cjs/components/AudioUpload/AudioWaveform.cjs +1 -1
  6. package/dist/cjs/components/AudioUpload/AudioWaveform.cjs.map +1 -1
  7. package/dist/cjs/components/Avatar/Avatar.cjs +15 -12
  8. package/dist/cjs/components/Avatar/Avatar.cjs.map +1 -1
  9. package/dist/cjs/components/Badge/Badge.cjs +29 -25
  10. package/dist/cjs/components/Badge/Badge.cjs.map +1 -1
  11. package/dist/cjs/components/Button/Button.cjs +14 -14
  12. package/dist/cjs/components/Button/Button.cjs.map +1 -1
  13. package/dist/cjs/components/Checkbox/Checkbox.cjs +15 -15
  14. package/dist/cjs/components/Checkbox/Checkbox.cjs.map +1 -1
  15. package/dist/cjs/components/Chip/Chip.cjs +7 -6
  16. package/dist/cjs/components/Chip/Chip.cjs.map +1 -1
  17. package/dist/cjs/components/Count/Count.cjs +8 -8
  18. package/dist/cjs/components/Count/Count.cjs.map +1 -1
  19. package/dist/cjs/components/DatePicker/DatePicker.cjs +13 -13
  20. package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
  21. package/dist/cjs/components/Divider/Divider.cjs +1 -1
  22. package/dist/cjs/components/Divider/Divider.cjs.map +1 -1
  23. package/dist/cjs/components/IconButton/IconButton.cjs +9 -9
  24. package/dist/cjs/components/IconButton/IconButton.cjs.map +1 -1
  25. package/dist/cjs/components/Icons/AIIcon.cjs +40 -0
  26. package/dist/cjs/components/Icons/AIIcon.cjs.map +1 -0
  27. package/dist/cjs/components/Icons/AddIcon.cjs +45 -0
  28. package/dist/cjs/components/Icons/AddIcon.cjs.map +1 -0
  29. package/dist/cjs/components/Icons/AlertIcon.cjs +45 -0
  30. package/dist/cjs/components/Icons/AlertIcon.cjs.map +1 -0
  31. package/dist/cjs/components/Icons/ArrowDownIcon.cjs +57 -0
  32. package/dist/cjs/components/Icons/ArrowDownIcon.cjs.map +1 -0
  33. package/dist/cjs/components/Icons/ArrowLeftIcon.cjs +57 -0
  34. package/dist/cjs/components/Icons/ArrowLeftIcon.cjs.map +1 -0
  35. package/dist/cjs/components/Icons/ArrowRightIcon.cjs +29 -19
  36. package/dist/cjs/components/Icons/ArrowRightIcon.cjs.map +1 -1
  37. package/dist/cjs/components/Icons/ArrowUpIcon.cjs +57 -0
  38. package/dist/cjs/components/Icons/ArrowUpIcon.cjs.map +1 -0
  39. package/dist/cjs/components/Icons/BankIcon.cjs +46 -0
  40. package/dist/cjs/components/Icons/BankIcon.cjs.map +1 -0
  41. package/dist/cjs/components/Icons/BellIcon.cjs +42 -0
  42. package/dist/cjs/components/Icons/BellIcon.cjs.map +1 -0
  43. package/dist/cjs/components/Icons/BellOffIcon.cjs +51 -0
  44. package/dist/cjs/components/Icons/BellOffIcon.cjs.map +1 -0
  45. package/dist/cjs/components/Icons/BoltIcon.cjs +51 -0
  46. package/dist/cjs/components/Icons/BoltIcon.cjs.map +1 -0
  47. package/dist/cjs/components/Icons/BulbIcon.cjs +42 -0
  48. package/dist/cjs/components/Icons/BulbIcon.cjs.map +1 -0
  49. package/dist/cjs/components/Icons/Calendar2Icon.cjs +46 -0
  50. package/dist/cjs/components/Icons/Calendar2Icon.cjs.map +1 -0
  51. package/dist/cjs/components/Icons/CalendarIcon.cjs +46 -0
  52. package/dist/cjs/components/Icons/CalendarIcon.cjs.map +1 -0
  53. package/dist/cjs/components/Icons/CameraIcon.cjs +45 -0
  54. package/dist/cjs/components/Icons/CameraIcon.cjs.map +1 -0
  55. package/dist/cjs/components/Icons/ChartIcon.cjs +45 -0
  56. package/dist/cjs/components/Icons/ChartIcon.cjs.map +1 -0
  57. package/dist/cjs/components/Icons/ChevronDownIcon.cjs +24 -21
  58. package/dist/cjs/components/Icons/ChevronDownIcon.cjs.map +1 -1
  59. package/dist/cjs/components/Icons/ChevronLeftIcon.cjs +24 -21
  60. package/dist/cjs/components/Icons/ChevronLeftIcon.cjs.map +1 -1
  61. package/dist/cjs/components/Icons/ChevronRightIcon.cjs +24 -21
  62. package/dist/cjs/components/Icons/ChevronRightIcon.cjs.map +1 -1
  63. package/dist/cjs/components/Icons/ChevronUpIcon.cjs +52 -0
  64. package/dist/cjs/components/Icons/ChevronUpIcon.cjs.map +1 -0
  65. package/dist/cjs/components/Icons/ClockIcon.cjs +46 -0
  66. package/dist/cjs/components/Icons/ClockIcon.cjs.map +1 -0
  67. package/dist/cjs/components/Icons/CloseIcon.cjs +14 -18
  68. package/dist/cjs/components/Icons/CloseIcon.cjs.map +1 -1
  69. package/dist/cjs/components/Icons/CodeIcon.cjs +46 -0
  70. package/dist/cjs/components/Icons/CodeIcon.cjs.map +1 -0
  71. package/dist/cjs/components/Icons/CoinIcon.cjs +47 -0
  72. package/dist/cjs/components/Icons/CoinIcon.cjs.map +1 -0
  73. package/dist/cjs/components/Icons/CompassIcon.cjs +45 -0
  74. package/dist/cjs/components/Icons/CompassIcon.cjs.map +1 -0
  75. package/dist/cjs/components/Icons/CopyIcon.cjs +45 -0
  76. package/dist/cjs/components/Icons/CopyIcon.cjs.map +1 -0
  77. package/dist/cjs/components/Icons/CrownIcon.cjs +20 -12
  78. package/dist/cjs/components/Icons/CrownIcon.cjs.map +1 -1
  79. package/dist/cjs/components/Icons/DiamondIcon.cjs +45 -0
  80. package/dist/cjs/components/Icons/DiamondIcon.cjs.map +1 -0
  81. package/dist/cjs/components/Icons/DiscountIcon.cjs +45 -0
  82. package/dist/cjs/components/Icons/DiscountIcon.cjs.map +1 -0
  83. package/dist/cjs/components/Icons/DonateIcon.cjs +46 -0
  84. package/dist/cjs/components/Icons/DonateIcon.cjs.map +1 -0
  85. package/dist/cjs/components/Icons/DoubleTickIcon.cjs +52 -0
  86. package/dist/cjs/components/Icons/DoubleTickIcon.cjs.map +1 -0
  87. package/dist/cjs/components/Icons/DownloadIcon.cjs +46 -0
  88. package/dist/cjs/components/Icons/DownloadIcon.cjs.map +1 -0
  89. package/dist/cjs/components/Icons/EditIcon.cjs +45 -0
  90. package/dist/cjs/components/Icons/EditIcon.cjs.map +1 -0
  91. package/dist/cjs/components/Icons/ExpandIcon.cjs +45 -0
  92. package/dist/cjs/components/Icons/ExpandIcon.cjs.map +1 -0
  93. package/dist/cjs/components/Icons/EyeIcon.cjs +17 -35
  94. package/dist/cjs/components/Icons/EyeIcon.cjs.map +1 -1
  95. package/dist/cjs/components/Icons/EyeSlashIcon.cjs +46 -0
  96. package/dist/cjs/components/Icons/EyeSlashIcon.cjs.map +1 -0
  97. package/dist/cjs/components/Icons/FlagIcon.cjs +45 -0
  98. package/dist/cjs/components/Icons/FlagIcon.cjs.map +1 -0
  99. package/dist/cjs/components/Icons/FlameIcon.cjs +48 -0
  100. package/dist/cjs/components/Icons/FlameIcon.cjs.map +1 -0
  101. package/dist/cjs/components/Icons/FolderIcon.cjs +48 -0
  102. package/dist/cjs/components/Icons/FolderIcon.cjs.map +1 -0
  103. package/dist/cjs/components/Icons/ForwardIcon.cjs +48 -0
  104. package/dist/cjs/components/Icons/ForwardIcon.cjs.map +1 -0
  105. package/dist/cjs/components/Icons/GalleryIcon.cjs +47 -0
  106. package/dist/cjs/components/Icons/GalleryIcon.cjs.map +1 -0
  107. package/dist/cjs/components/Icons/GenderIcon.cjs +46 -0
  108. package/dist/cjs/components/Icons/GenderIcon.cjs.map +1 -0
  109. package/dist/cjs/components/Icons/GiftIcon.cjs +47 -0
  110. package/dist/cjs/components/Icons/GiftIcon.cjs.map +1 -0
  111. package/dist/cjs/components/Icons/HelpIcon.cjs +46 -0
  112. package/dist/cjs/components/Icons/HelpIcon.cjs.map +1 -0
  113. package/dist/cjs/components/Icons/HomeIcon.cjs +17 -12
  114. package/dist/cjs/components/Icons/HomeIcon.cjs.map +1 -1
  115. package/dist/cjs/components/Icons/HourglassIcon.cjs +48 -0
  116. package/dist/cjs/components/Icons/HourglassIcon.cjs.map +1 -0
  117. package/dist/cjs/components/Icons/ImageIcon.cjs +45 -0
  118. package/dist/cjs/components/Icons/ImageIcon.cjs.map +1 -0
  119. package/dist/cjs/components/Icons/InboxIcon.cjs +46 -0
  120. package/dist/cjs/components/Icons/InboxIcon.cjs.map +1 -0
  121. package/dist/cjs/components/Icons/LinkIcon.cjs +45 -0
  122. package/dist/cjs/components/Icons/LinkIcon.cjs.map +1 -0
  123. package/dist/cjs/components/Icons/LocationIcon.cjs +45 -0
  124. package/dist/cjs/components/Icons/LocationIcon.cjs.map +1 -0
  125. package/dist/cjs/components/Icons/LockerOffIcon.cjs +47 -0
  126. package/dist/cjs/components/Icons/LockerOffIcon.cjs.map +1 -0
  127. package/dist/cjs/components/Icons/LockerOnIcon.cjs +45 -0
  128. package/dist/cjs/components/Icons/LockerOnIcon.cjs.map +1 -0
  129. package/dist/cjs/components/Icons/LogoutIcon.cjs +64 -0
  130. package/dist/cjs/components/Icons/LogoutIcon.cjs.map +1 -0
  131. package/dist/cjs/components/Icons/LoveIcon.cjs +46 -0
  132. package/dist/cjs/components/Icons/LoveIcon.cjs.map +1 -0
  133. package/dist/cjs/components/Icons/MegaphoneIcon.cjs +46 -0
  134. package/dist/cjs/components/Icons/MegaphoneIcon.cjs.map +1 -0
  135. package/dist/cjs/components/Icons/MenuCloseIcon.cjs +45 -0
  136. package/dist/cjs/components/Icons/MenuCloseIcon.cjs.map +1 -0
  137. package/dist/cjs/components/Icons/MenuIcon.cjs +42 -0
  138. package/dist/cjs/components/Icons/MenuIcon.cjs.map +1 -0
  139. package/dist/cjs/components/Icons/MenuOpenIcon.cjs +45 -0
  140. package/dist/cjs/components/Icons/MenuOpenIcon.cjs.map +1 -0
  141. package/dist/cjs/components/Icons/MessageIcon.cjs +45 -0
  142. package/dist/cjs/components/Icons/MessageIcon.cjs.map +1 -0
  143. package/dist/cjs/components/Icons/MicrophoneIcon.cjs +18 -27
  144. package/dist/cjs/components/Icons/MicrophoneIcon.cjs.map +1 -1
  145. package/dist/cjs/components/Icons/MinusIcon.cjs +20 -12
  146. package/dist/cjs/components/Icons/MinusIcon.cjs.map +1 -1
  147. package/dist/cjs/components/Icons/MoonIcon.cjs +42 -0
  148. package/dist/cjs/components/Icons/MoonIcon.cjs.map +1 -0
  149. package/dist/cjs/components/Icons/MoreIcon.cjs +46 -0
  150. package/dist/cjs/components/Icons/MoreIcon.cjs.map +1 -0
  151. package/dist/cjs/components/Icons/MoreVerticalIcon.cjs +46 -0
  152. package/dist/cjs/components/Icons/MoreVerticalIcon.cjs.map +1 -0
  153. package/dist/cjs/components/Icons/PauseIcon.cjs +45 -0
  154. package/dist/cjs/components/Icons/PauseIcon.cjs.map +1 -0
  155. package/dist/cjs/components/Icons/PhoneIcon.cjs +48 -0
  156. package/dist/cjs/components/Icons/PhoneIcon.cjs.map +1 -0
  157. package/dist/cjs/components/Icons/PhoneOffIcon.cjs +51 -0
  158. package/dist/cjs/components/Icons/PhoneOffIcon.cjs.map +1 -0
  159. package/dist/cjs/components/Icons/PinIcon.cjs +45 -0
  160. package/dist/cjs/components/Icons/PinIcon.cjs.map +1 -0
  161. package/dist/cjs/components/Icons/PlayIcon.cjs +45 -0
  162. package/dist/cjs/components/Icons/PlayIcon.cjs.map +1 -0
  163. package/dist/cjs/components/Icons/PrivacyIcon.cjs +45 -0
  164. package/dist/cjs/components/Icons/PrivacyIcon.cjs.map +1 -0
  165. package/dist/cjs/components/Icons/RepeatIcon.cjs +64 -0
  166. package/dist/cjs/components/Icons/RepeatIcon.cjs.map +1 -0
  167. package/dist/cjs/components/Icons/Reply2Icon.cjs +46 -0
  168. package/dist/cjs/components/Icons/Reply2Icon.cjs.map +1 -0
  169. package/dist/cjs/components/Icons/ReplyIcon.cjs +48 -0
  170. package/dist/cjs/components/Icons/ReplyIcon.cjs.map +1 -0
  171. package/dist/cjs/components/Icons/SearchIcon.cjs +16 -31
  172. package/dist/cjs/components/Icons/SearchIcon.cjs.map +1 -1
  173. package/dist/cjs/components/Icons/SendIcon.cjs +45 -0
  174. package/dist/cjs/components/Icons/SendIcon.cjs.map +1 -0
  175. package/dist/cjs/components/Icons/SettingsIcon.cjs +46 -0
  176. package/dist/cjs/components/Icons/SettingsIcon.cjs.map +1 -0
  177. package/dist/cjs/components/Icons/ShareIcon.cjs +45 -0
  178. package/dist/cjs/components/Icons/ShareIcon.cjs.map +1 -0
  179. package/dist/cjs/components/Icons/StarIcon.cjs +48 -0
  180. package/dist/cjs/components/Icons/StarIcon.cjs.map +1 -0
  181. package/dist/cjs/components/Icons/StopIcon.cjs +17 -18
  182. package/dist/cjs/components/Icons/StopIcon.cjs.map +1 -1
  183. package/dist/cjs/components/Icons/SunIcon.cjs +42 -0
  184. package/dist/cjs/components/Icons/SunIcon.cjs.map +1 -0
  185. package/dist/cjs/components/Icons/Support2Icon.cjs +46 -0
  186. package/dist/cjs/components/Icons/Support2Icon.cjs.map +1 -0
  187. package/dist/cjs/components/Icons/SupportIcon.cjs +46 -0
  188. package/dist/cjs/components/Icons/SupportIcon.cjs.map +1 -0
  189. package/dist/cjs/components/Icons/TagIcon.cjs +45 -0
  190. package/dist/cjs/components/Icons/TagIcon.cjs.map +1 -0
  191. package/dist/cjs/components/Icons/TaskIcon.cjs +42 -0
  192. package/dist/cjs/components/Icons/TaskIcon.cjs.map +1 -0
  193. package/dist/cjs/components/Icons/ThumbDownIcon.cjs +45 -0
  194. package/dist/cjs/components/Icons/ThumbDownIcon.cjs.map +1 -0
  195. package/dist/cjs/components/Icons/ThumbUpIcon.cjs +45 -0
  196. package/dist/cjs/components/Icons/ThumbUpIcon.cjs.map +1 -0
  197. package/dist/cjs/components/Icons/TickCircleIcon.cjs +45 -0
  198. package/dist/cjs/components/Icons/TickCircleIcon.cjs.map +1 -0
  199. package/dist/cjs/components/Icons/TickCircleOffIcon.cjs +48 -0
  200. package/dist/cjs/components/Icons/TickCircleOffIcon.cjs.map +1 -0
  201. package/dist/cjs/components/Icons/TickIcon.cjs +48 -0
  202. package/dist/cjs/components/Icons/TickIcon.cjs.map +1 -0
  203. package/dist/cjs/components/Icons/TrashBinIcon.cjs +46 -0
  204. package/dist/cjs/components/Icons/TrashBinIcon.cjs.map +1 -0
  205. package/dist/cjs/components/Icons/TrophyIcon.cjs +46 -0
  206. package/dist/cjs/components/Icons/TrophyIcon.cjs.map +1 -0
  207. package/dist/cjs/components/Icons/UploadIcon.cjs +45 -0
  208. package/dist/cjs/components/Icons/UploadIcon.cjs.map +1 -0
  209. package/dist/cjs/components/Icons/UserCircleIcon.cjs +48 -0
  210. package/dist/cjs/components/Icons/UserCircleIcon.cjs.map +1 -0
  211. package/dist/cjs/components/Icons/UserIcon.cjs +67 -0
  212. package/dist/cjs/components/Icons/UserIcon.cjs.map +1 -0
  213. package/dist/cjs/components/Icons/UsersIcon.cjs +45 -0
  214. package/dist/cjs/components/Icons/UsersIcon.cjs.map +1 -0
  215. package/dist/cjs/components/Icons/VideoIcon.cjs +45 -0
  216. package/dist/cjs/components/Icons/VideoIcon.cjs.map +1 -0
  217. package/dist/cjs/components/Icons/WalletIcon.cjs +47 -0
  218. package/dist/cjs/components/Icons/WalletIcon.cjs.map +1 -0
  219. package/dist/cjs/components/Icons/WifiOffIcon.cjs +45 -0
  220. package/dist/cjs/components/Icons/WifiOffIcon.cjs.map +1 -0
  221. package/dist/cjs/components/Icons/WifiOnIcon.cjs +45 -0
  222. package/dist/cjs/components/Icons/WifiOnIcon.cjs.map +1 -0
  223. package/dist/cjs/components/Icons/WrenchIcon.cjs +48 -0
  224. package/dist/cjs/components/Icons/WrenchIcon.cjs.map +1 -0
  225. package/dist/cjs/components/Loader/Loader.cjs +1 -1
  226. package/dist/cjs/components/Loader/Loader.cjs.map +1 -1
  227. package/dist/cjs/components/Logo/Logo.cjs +13 -13
  228. package/dist/cjs/components/Logo/Logo.cjs.map +1 -1
  229. package/dist/cjs/components/Pagination/Pagination.cjs +2 -2
  230. package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
  231. package/dist/cjs/components/PasswordField/PasswordField.cjs +1 -1
  232. package/dist/cjs/components/PasswordField/PasswordField.cjs.map +1 -1
  233. package/dist/cjs/components/Pill/Pill.cjs +24 -12
  234. package/dist/cjs/components/Pill/Pill.cjs.map +1 -1
  235. package/dist/cjs/components/ProgressBar/ProgressBar.cjs +16 -13
  236. package/dist/cjs/components/ProgressBar/ProgressBar.cjs.map +1 -1
  237. package/dist/cjs/components/Radio/Radio.cjs +6 -6
  238. package/dist/cjs/components/Radio/Radio.cjs.map +1 -1
  239. package/dist/cjs/components/Select/Select.cjs +13 -13
  240. package/dist/cjs/components/Select/Select.cjs.map +1 -1
  241. package/dist/cjs/components/Slider/Slider.cjs +1 -1
  242. package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
  243. package/dist/cjs/components/Slider/SliderLayout.cjs +12 -5
  244. package/dist/cjs/components/Slider/SliderLayout.cjs.map +1 -1
  245. package/dist/cjs/components/Slider/SliderThumb.cjs +6 -6
  246. package/dist/cjs/components/Slider/SliderThumb.cjs.map +1 -1
  247. package/dist/cjs/components/Snackbar/Snackbar.cjs +8 -8
  248. package/dist/cjs/components/Snackbar/Snackbar.cjs.map +1 -1
  249. package/dist/cjs/components/Switch/Switch.cjs +2 -2
  250. package/dist/cjs/components/Switch/Switch.cjs.map +1 -1
  251. package/dist/cjs/components/SwitchField/SwitchField.cjs +13 -8
  252. package/dist/cjs/components/SwitchField/SwitchField.cjs.map +1 -1
  253. package/dist/cjs/components/SwitchToggle/SwitchToggle.cjs +4 -4
  254. package/dist/cjs/components/SwitchToggle/SwitchToggle.cjs.map +1 -1
  255. package/dist/cjs/components/Tabs/TabsList.cjs +1 -1
  256. package/dist/cjs/components/Tabs/TabsList.cjs.map +1 -1
  257. package/dist/cjs/components/Tabs/TabsTrigger.cjs +8 -8
  258. package/dist/cjs/components/Tabs/TabsTrigger.cjs.map +1 -1
  259. package/dist/cjs/components/TextArea/TextArea.cjs +10 -10
  260. package/dist/cjs/components/TextArea/TextArea.cjs.map +1 -1
  261. package/dist/cjs/components/TextField/TextField.cjs +11 -11
  262. package/dist/cjs/components/TextField/TextField.cjs.map +1 -1
  263. package/dist/cjs/components/Toast/Toast.cjs +9 -9
  264. package/dist/cjs/components/Toast/Toast.cjs.map +1 -1
  265. package/dist/cjs/components/Tooltip/Tooltip.cjs +40 -14
  266. package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
  267. package/dist/cjs/index.cjs +176 -2
  268. package/dist/cjs/index.cjs.map +1 -1
  269. package/dist/components/Alert/Alert.mjs +10 -10
  270. package/dist/components/Alert/Alert.mjs.map +1 -1
  271. package/dist/components/AudioUpload/AudioUpload.mjs +15 -8
  272. package/dist/components/AudioUpload/AudioUpload.mjs.map +1 -1
  273. package/dist/components/AudioUpload/AudioWaveform.mjs +1 -1
  274. package/dist/components/AudioUpload/AudioWaveform.mjs.map +1 -1
  275. package/dist/components/Avatar/Avatar.mjs +15 -12
  276. package/dist/components/Avatar/Avatar.mjs.map +1 -1
  277. package/dist/components/Badge/Badge.mjs +29 -25
  278. package/dist/components/Badge/Badge.mjs.map +1 -1
  279. package/dist/components/Button/Button.mjs +14 -14
  280. package/dist/components/Button/Button.mjs.map +1 -1
  281. package/dist/components/Checkbox/Checkbox.mjs +15 -15
  282. package/dist/components/Checkbox/Checkbox.mjs.map +1 -1
  283. package/dist/components/Chip/Chip.mjs +7 -6
  284. package/dist/components/Chip/Chip.mjs.map +1 -1
  285. package/dist/components/Count/Count.mjs +8 -8
  286. package/dist/components/Count/Count.mjs.map +1 -1
  287. package/dist/components/DatePicker/DatePicker.mjs +13 -13
  288. package/dist/components/DatePicker/DatePicker.mjs.map +1 -1
  289. package/dist/components/Divider/Divider.mjs +1 -1
  290. package/dist/components/Divider/Divider.mjs.map +1 -1
  291. package/dist/components/IconButton/IconButton.mjs +9 -9
  292. package/dist/components/IconButton/IconButton.mjs.map +1 -1
  293. package/dist/components/Icons/AIIcon.mjs +23 -0
  294. package/dist/components/Icons/AIIcon.mjs.map +1 -0
  295. package/dist/components/Icons/AddIcon.mjs +28 -0
  296. package/dist/components/Icons/AddIcon.mjs.map +1 -0
  297. package/dist/components/Icons/AlertIcon.mjs +28 -0
  298. package/dist/components/Icons/AlertIcon.mjs.map +1 -0
  299. package/dist/components/Icons/ArrowDownIcon.mjs +40 -0
  300. package/dist/components/Icons/ArrowDownIcon.mjs.map +1 -0
  301. package/dist/components/Icons/ArrowLeftIcon.mjs +40 -0
  302. package/dist/components/Icons/ArrowLeftIcon.mjs.map +1 -0
  303. package/dist/components/Icons/ArrowRightIcon.mjs +30 -20
  304. package/dist/components/Icons/ArrowRightIcon.mjs.map +1 -1
  305. package/dist/components/Icons/ArrowUpIcon.mjs +40 -0
  306. package/dist/components/Icons/ArrowUpIcon.mjs.map +1 -0
  307. package/dist/components/Icons/BankIcon.mjs +29 -0
  308. package/dist/components/Icons/BankIcon.mjs.map +1 -0
  309. package/dist/components/Icons/BellIcon.mjs +25 -0
  310. package/dist/components/Icons/BellIcon.mjs.map +1 -0
  311. package/dist/components/Icons/BellOffIcon.mjs +34 -0
  312. package/dist/components/Icons/BellOffIcon.mjs.map +1 -0
  313. package/dist/components/Icons/BoltIcon.mjs +34 -0
  314. package/dist/components/Icons/BoltIcon.mjs.map +1 -0
  315. package/dist/components/Icons/BulbIcon.mjs +25 -0
  316. package/dist/components/Icons/BulbIcon.mjs.map +1 -0
  317. package/dist/components/Icons/Calendar2Icon.mjs +29 -0
  318. package/dist/components/Icons/Calendar2Icon.mjs.map +1 -0
  319. package/dist/components/Icons/CalendarIcon.mjs +29 -0
  320. package/dist/components/Icons/CalendarIcon.mjs.map +1 -0
  321. package/dist/components/Icons/CameraIcon.mjs +28 -0
  322. package/dist/components/Icons/CameraIcon.mjs.map +1 -0
  323. package/dist/components/Icons/ChartIcon.mjs +28 -0
  324. package/dist/components/Icons/ChartIcon.mjs.map +1 -0
  325. package/dist/components/Icons/ChevronDownIcon.mjs +24 -21
  326. package/dist/components/Icons/ChevronDownIcon.mjs.map +1 -1
  327. package/dist/components/Icons/ChevronLeftIcon.mjs +24 -21
  328. package/dist/components/Icons/ChevronLeftIcon.mjs.map +1 -1
  329. package/dist/components/Icons/ChevronRightIcon.mjs +24 -21
  330. package/dist/components/Icons/ChevronRightIcon.mjs.map +1 -1
  331. package/dist/components/Icons/ChevronUpIcon.mjs +35 -0
  332. package/dist/components/Icons/ChevronUpIcon.mjs.map +1 -0
  333. package/dist/components/Icons/ClockIcon.mjs +29 -0
  334. package/dist/components/Icons/ClockIcon.mjs.map +1 -0
  335. package/dist/components/Icons/CloseIcon.mjs +14 -18
  336. package/dist/components/Icons/CloseIcon.mjs.map +1 -1
  337. package/dist/components/Icons/CodeIcon.mjs +29 -0
  338. package/dist/components/Icons/CodeIcon.mjs.map +1 -0
  339. package/dist/components/Icons/CoinIcon.mjs +30 -0
  340. package/dist/components/Icons/CoinIcon.mjs.map +1 -0
  341. package/dist/components/Icons/CompassIcon.mjs +28 -0
  342. package/dist/components/Icons/CompassIcon.mjs.map +1 -0
  343. package/dist/components/Icons/CopyIcon.mjs +28 -0
  344. package/dist/components/Icons/CopyIcon.mjs.map +1 -0
  345. package/dist/components/Icons/CrownIcon.mjs +20 -12
  346. package/dist/components/Icons/CrownIcon.mjs.map +1 -1
  347. package/dist/components/Icons/DiamondIcon.mjs +28 -0
  348. package/dist/components/Icons/DiamondIcon.mjs.map +1 -0
  349. package/dist/components/Icons/DiscountIcon.mjs +28 -0
  350. package/dist/components/Icons/DiscountIcon.mjs.map +1 -0
  351. package/dist/components/Icons/DonateIcon.mjs +29 -0
  352. package/dist/components/Icons/DonateIcon.mjs.map +1 -0
  353. package/dist/components/Icons/DoubleTickIcon.mjs +35 -0
  354. package/dist/components/Icons/DoubleTickIcon.mjs.map +1 -0
  355. package/dist/components/Icons/DownloadIcon.mjs +29 -0
  356. package/dist/components/Icons/DownloadIcon.mjs.map +1 -0
  357. package/dist/components/Icons/EditIcon.mjs +28 -0
  358. package/dist/components/Icons/EditIcon.mjs.map +1 -0
  359. package/dist/components/Icons/ExpandIcon.mjs +28 -0
  360. package/dist/components/Icons/ExpandIcon.mjs.map +1 -0
  361. package/dist/components/Icons/EyeIcon.mjs +18 -36
  362. package/dist/components/Icons/EyeIcon.mjs.map +1 -1
  363. package/dist/components/Icons/EyeSlashIcon.mjs +29 -0
  364. package/dist/components/Icons/EyeSlashIcon.mjs.map +1 -0
  365. package/dist/components/Icons/FlagIcon.mjs +28 -0
  366. package/dist/components/Icons/FlagIcon.mjs.map +1 -0
  367. package/dist/components/Icons/FlameIcon.mjs +31 -0
  368. package/dist/components/Icons/FlameIcon.mjs.map +1 -0
  369. package/dist/components/Icons/FolderIcon.mjs +31 -0
  370. package/dist/components/Icons/FolderIcon.mjs.map +1 -0
  371. package/dist/components/Icons/ForwardIcon.mjs +31 -0
  372. package/dist/components/Icons/ForwardIcon.mjs.map +1 -0
  373. package/dist/components/Icons/GalleryIcon.mjs +30 -0
  374. package/dist/components/Icons/GalleryIcon.mjs.map +1 -0
  375. package/dist/components/Icons/GenderIcon.mjs +29 -0
  376. package/dist/components/Icons/GenderIcon.mjs.map +1 -0
  377. package/dist/components/Icons/GiftIcon.mjs +30 -0
  378. package/dist/components/Icons/GiftIcon.mjs.map +1 -0
  379. package/dist/components/Icons/HelpIcon.mjs +29 -0
  380. package/dist/components/Icons/HelpIcon.mjs.map +1 -0
  381. package/dist/components/Icons/HomeIcon.mjs +18 -13
  382. package/dist/components/Icons/HomeIcon.mjs.map +1 -1
  383. package/dist/components/Icons/HourglassIcon.mjs +31 -0
  384. package/dist/components/Icons/HourglassIcon.mjs.map +1 -0
  385. package/dist/components/Icons/ImageIcon.mjs +28 -0
  386. package/dist/components/Icons/ImageIcon.mjs.map +1 -0
  387. package/dist/components/Icons/InboxIcon.mjs +29 -0
  388. package/dist/components/Icons/InboxIcon.mjs.map +1 -0
  389. package/dist/components/Icons/LinkIcon.mjs +28 -0
  390. package/dist/components/Icons/LinkIcon.mjs.map +1 -0
  391. package/dist/components/Icons/LocationIcon.mjs +28 -0
  392. package/dist/components/Icons/LocationIcon.mjs.map +1 -0
  393. package/dist/components/Icons/LockerOffIcon.mjs +30 -0
  394. package/dist/components/Icons/LockerOffIcon.mjs.map +1 -0
  395. package/dist/components/Icons/LockerOnIcon.mjs +28 -0
  396. package/dist/components/Icons/LockerOnIcon.mjs.map +1 -0
  397. package/dist/components/Icons/LogoutIcon.mjs +47 -0
  398. package/dist/components/Icons/LogoutIcon.mjs.map +1 -0
  399. package/dist/components/Icons/LoveIcon.mjs +29 -0
  400. package/dist/components/Icons/LoveIcon.mjs.map +1 -0
  401. package/dist/components/Icons/MegaphoneIcon.mjs +29 -0
  402. package/dist/components/Icons/MegaphoneIcon.mjs.map +1 -0
  403. package/dist/components/Icons/MenuCloseIcon.mjs +28 -0
  404. package/dist/components/Icons/MenuCloseIcon.mjs.map +1 -0
  405. package/dist/components/Icons/MenuIcon.mjs +25 -0
  406. package/dist/components/Icons/MenuIcon.mjs.map +1 -0
  407. package/dist/components/Icons/MenuOpenIcon.mjs +28 -0
  408. package/dist/components/Icons/MenuOpenIcon.mjs.map +1 -0
  409. package/dist/components/Icons/MessageIcon.mjs +28 -0
  410. package/dist/components/Icons/MessageIcon.mjs.map +1 -0
  411. package/dist/components/Icons/MicrophoneIcon.mjs +19 -28
  412. package/dist/components/Icons/MicrophoneIcon.mjs.map +1 -1
  413. package/dist/components/Icons/MinusIcon.mjs +20 -12
  414. package/dist/components/Icons/MinusIcon.mjs.map +1 -1
  415. package/dist/components/Icons/MoonIcon.mjs +25 -0
  416. package/dist/components/Icons/MoonIcon.mjs.map +1 -0
  417. package/dist/components/Icons/MoreIcon.mjs +29 -0
  418. package/dist/components/Icons/MoreIcon.mjs.map +1 -0
  419. package/dist/components/Icons/MoreVerticalIcon.mjs +29 -0
  420. package/dist/components/Icons/MoreVerticalIcon.mjs.map +1 -0
  421. package/dist/components/Icons/PauseIcon.mjs +28 -0
  422. package/dist/components/Icons/PauseIcon.mjs.map +1 -0
  423. package/dist/components/Icons/PhoneIcon.mjs +31 -0
  424. package/dist/components/Icons/PhoneIcon.mjs.map +1 -0
  425. package/dist/components/Icons/PhoneOffIcon.mjs +34 -0
  426. package/dist/components/Icons/PhoneOffIcon.mjs.map +1 -0
  427. package/dist/components/Icons/PinIcon.mjs +28 -0
  428. package/dist/components/Icons/PinIcon.mjs.map +1 -0
  429. package/dist/components/Icons/PlayIcon.mjs +28 -0
  430. package/dist/components/Icons/PlayIcon.mjs.map +1 -0
  431. package/dist/components/Icons/PrivacyIcon.mjs +28 -0
  432. package/dist/components/Icons/PrivacyIcon.mjs.map +1 -0
  433. package/dist/components/Icons/RepeatIcon.mjs +47 -0
  434. package/dist/components/Icons/RepeatIcon.mjs.map +1 -0
  435. package/dist/components/Icons/Reply2Icon.mjs +29 -0
  436. package/dist/components/Icons/Reply2Icon.mjs.map +1 -0
  437. package/dist/components/Icons/ReplyIcon.mjs +31 -0
  438. package/dist/components/Icons/ReplyIcon.mjs.map +1 -0
  439. package/dist/components/Icons/SearchIcon.mjs +17 -32
  440. package/dist/components/Icons/SearchIcon.mjs.map +1 -1
  441. package/dist/components/Icons/SendIcon.mjs +28 -0
  442. package/dist/components/Icons/SendIcon.mjs.map +1 -0
  443. package/dist/components/Icons/SettingsIcon.mjs +29 -0
  444. package/dist/components/Icons/SettingsIcon.mjs.map +1 -0
  445. package/dist/components/Icons/ShareIcon.mjs +28 -0
  446. package/dist/components/Icons/ShareIcon.mjs.map +1 -0
  447. package/dist/components/Icons/StarIcon.mjs +31 -0
  448. package/dist/components/Icons/StarIcon.mjs.map +1 -0
  449. package/dist/components/Icons/StopIcon.mjs +18 -19
  450. package/dist/components/Icons/StopIcon.mjs.map +1 -1
  451. package/dist/components/Icons/SunIcon.mjs +25 -0
  452. package/dist/components/Icons/SunIcon.mjs.map +1 -0
  453. package/dist/components/Icons/Support2Icon.mjs +29 -0
  454. package/dist/components/Icons/Support2Icon.mjs.map +1 -0
  455. package/dist/components/Icons/SupportIcon.mjs +29 -0
  456. package/dist/components/Icons/SupportIcon.mjs.map +1 -0
  457. package/dist/components/Icons/TagIcon.mjs +28 -0
  458. package/dist/components/Icons/TagIcon.mjs.map +1 -0
  459. package/dist/components/Icons/TaskIcon.mjs +25 -0
  460. package/dist/components/Icons/TaskIcon.mjs.map +1 -0
  461. package/dist/components/Icons/ThumbDownIcon.mjs +28 -0
  462. package/dist/components/Icons/ThumbDownIcon.mjs.map +1 -0
  463. package/dist/components/Icons/ThumbUpIcon.mjs +28 -0
  464. package/dist/components/Icons/ThumbUpIcon.mjs.map +1 -0
  465. package/dist/components/Icons/TickCircleIcon.mjs +28 -0
  466. package/dist/components/Icons/TickCircleIcon.mjs.map +1 -0
  467. package/dist/components/Icons/TickCircleOffIcon.mjs +31 -0
  468. package/dist/components/Icons/TickCircleOffIcon.mjs.map +1 -0
  469. package/dist/components/Icons/TickIcon.mjs +31 -0
  470. package/dist/components/Icons/TickIcon.mjs.map +1 -0
  471. package/dist/components/Icons/TrashBinIcon.mjs +29 -0
  472. package/dist/components/Icons/TrashBinIcon.mjs.map +1 -0
  473. package/dist/components/Icons/TrophyIcon.mjs +29 -0
  474. package/dist/components/Icons/TrophyIcon.mjs.map +1 -0
  475. package/dist/components/Icons/UploadIcon.mjs +28 -0
  476. package/dist/components/Icons/UploadIcon.mjs.map +1 -0
  477. package/dist/components/Icons/UserCircleIcon.mjs +31 -0
  478. package/dist/components/Icons/UserCircleIcon.mjs.map +1 -0
  479. package/dist/components/Icons/UserIcon.mjs +50 -0
  480. package/dist/components/Icons/UserIcon.mjs.map +1 -0
  481. package/dist/components/Icons/UsersIcon.mjs +28 -0
  482. package/dist/components/Icons/UsersIcon.mjs.map +1 -0
  483. package/dist/components/Icons/VideoIcon.mjs +28 -0
  484. package/dist/components/Icons/VideoIcon.mjs.map +1 -0
  485. package/dist/components/Icons/WalletIcon.mjs +30 -0
  486. package/dist/components/Icons/WalletIcon.mjs.map +1 -0
  487. package/dist/components/Icons/WifiOffIcon.mjs +28 -0
  488. package/dist/components/Icons/WifiOffIcon.mjs.map +1 -0
  489. package/dist/components/Icons/WifiOnIcon.mjs +28 -0
  490. package/dist/components/Icons/WifiOnIcon.mjs.map +1 -0
  491. package/dist/components/Icons/WrenchIcon.mjs +31 -0
  492. package/dist/components/Icons/WrenchIcon.mjs.map +1 -0
  493. package/dist/components/Loader/Loader.mjs +1 -1
  494. package/dist/components/Loader/Loader.mjs.map +1 -1
  495. package/dist/components/Logo/Logo.mjs +13 -13
  496. package/dist/components/Logo/Logo.mjs.map +1 -1
  497. package/dist/components/Pagination/Pagination.mjs +2 -2
  498. package/dist/components/Pagination/Pagination.mjs.map +1 -1
  499. package/dist/components/PasswordField/PasswordField.mjs +1 -1
  500. package/dist/components/PasswordField/PasswordField.mjs.map +1 -1
  501. package/dist/components/Pill/Pill.mjs +24 -12
  502. package/dist/components/Pill/Pill.mjs.map +1 -1
  503. package/dist/components/ProgressBar/ProgressBar.mjs +16 -13
  504. package/dist/components/ProgressBar/ProgressBar.mjs.map +1 -1
  505. package/dist/components/Radio/Radio.mjs +6 -6
  506. package/dist/components/Radio/Radio.mjs.map +1 -1
  507. package/dist/components/Select/Select.mjs +13 -13
  508. package/dist/components/Select/Select.mjs.map +1 -1
  509. package/dist/components/Slider/Slider.mjs +1 -1
  510. package/dist/components/Slider/Slider.mjs.map +1 -1
  511. package/dist/components/Slider/SliderLayout.mjs +12 -5
  512. package/dist/components/Slider/SliderLayout.mjs.map +1 -1
  513. package/dist/components/Slider/SliderThumb.mjs +6 -6
  514. package/dist/components/Slider/SliderThumb.mjs.map +1 -1
  515. package/dist/components/Snackbar/Snackbar.mjs +8 -8
  516. package/dist/components/Snackbar/Snackbar.mjs.map +1 -1
  517. package/dist/components/Switch/Switch.mjs +2 -2
  518. package/dist/components/Switch/Switch.mjs.map +1 -1
  519. package/dist/components/SwitchField/SwitchField.mjs +13 -8
  520. package/dist/components/SwitchField/SwitchField.mjs.map +1 -1
  521. package/dist/components/SwitchToggle/SwitchToggle.mjs +4 -4
  522. package/dist/components/SwitchToggle/SwitchToggle.mjs.map +1 -1
  523. package/dist/components/Tabs/TabsList.mjs +1 -1
  524. package/dist/components/Tabs/TabsList.mjs.map +1 -1
  525. package/dist/components/Tabs/TabsTrigger.mjs +8 -8
  526. package/dist/components/Tabs/TabsTrigger.mjs.map +1 -1
  527. package/dist/components/TextArea/TextArea.mjs +10 -10
  528. package/dist/components/TextArea/TextArea.mjs.map +1 -1
  529. package/dist/components/TextField/TextField.mjs +11 -11
  530. package/dist/components/TextField/TextField.mjs.map +1 -1
  531. package/dist/components/Toast/Toast.mjs +9 -9
  532. package/dist/components/Toast/Toast.mjs.map +1 -1
  533. package/dist/components/Tooltip/Tooltip.mjs +40 -14
  534. package/dist/components/Tooltip/Tooltip.mjs.map +1 -1
  535. package/dist/index.d.ts +349 -14
  536. package/dist/index.mjs +176 -2
  537. package/dist/index.mjs.map +1 -1
  538. package/dist/styles/theme.css +298 -428
  539. package/package.json +2 -2
  540. package/dist/cjs/components/Icons/FireIcon.cjs +0 -47
  541. package/dist/cjs/components/Icons/FireIcon.cjs.map +0 -1
  542. package/dist/components/Icons/FireIcon.mjs +0 -30
  543. package/dist/components/Icons/FireIcon.mjs.map +0 -1
@@ -45,9 +45,9 @@ const TRIGGER_GAP = {
45
45
  "32": "gap-2"
46
46
  };
47
47
  const TRIGGER_TYPOGRAPHY = {
48
- "48": "typography-body-1-regular",
49
- "40": "typography-body-1-regular",
50
- "32": "typography-body-2-regular"
48
+ "48": "typography-regular-body-lg",
49
+ "40": "typography-regular-body-lg",
50
+ "32": "typography-regular-body-md"
51
51
  };
52
52
  const Select = React__namespace.forwardRef(
53
53
  ({
@@ -82,7 +82,7 @@ const Select = React__namespace.forwardRef(
82
82
  "label",
83
83
  {
84
84
  htmlFor: triggerId,
85
- className: "typography-caption-semibold px-1 pt-1 pb-2 text-body-100",
85
+ className: "typography-semibold-body-sm px-1 pt-1 pb-2 text-foreground-default",
86
86
  children: label
87
87
  }
88
88
  ),
@@ -102,7 +102,7 @@ const Select = React__namespace.forwardRef(
102
102
  TRIGGER_PADDING_X[size],
103
103
  TRIGGER_GAP[size],
104
104
  TRIGGER_TYPOGRAPHY[size],
105
- error ? "border-error-500" : "border-transparent",
105
+ error ? "border-error-default" : "border-transparent",
106
106
  !disabled && !error && "hover:border-neutral-400 data-[state=open]:border-neutral-400",
107
107
  disabled && "cursor-not-allowed opacity-50"
108
108
  ),
@@ -111,12 +111,12 @@ const Select = React__namespace.forwardRef(
111
111
  leftIcon && /* @__PURE__ */ jsxRuntime.jsx(
112
112
  "span",
113
113
  {
114
- className: "flex size-5 shrink-0 items-center justify-center text-body-200",
114
+ className: "flex size-5 shrink-0 items-center justify-center text-foreground-secondary",
115
115
  "data-testid": "left-icon",
116
116
  children: leftIcon
117
117
  }
118
118
  ),
119
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate text-left text-body-100 [&>[data-placeholder]]:text-body-200 [&>[data-placeholder]]:opacity-40", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Value, { placeholder }) })
119
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate text-left text-foreground-default [&>[data-placeholder]]:text-foreground-secondary [&>[data-placeholder]]:opacity-40", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Value, { placeholder }) })
120
120
  ] }),
121
121
  /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon.ChevronDownIcon, {}) })
122
122
  ]
@@ -129,8 +129,8 @@ const Select = React__namespace.forwardRef(
129
129
  {
130
130
  id: helperTextId,
131
131
  className: cn.cn(
132
- "typography-caption-regular px-2 pt-1 pb-0.5",
133
- error ? "text-error-500" : "text-body-200"
132
+ "typography-regular-body-sm px-2 pt-1 pb-0.5",
133
+ error ? "text-error-default" : "text-foreground-secondary"
134
134
  ),
135
135
  children: bottomText
136
136
  }
@@ -149,7 +149,7 @@ const SelectContent = React__namespace.forwardRef(({ className, children, positi
149
149
  sideOffset,
150
150
  style: { zIndex: "var(--fanvue-ui-portal-z-index, 50)", ...style },
151
151
  className: cn.cn(
152
- "relative min-w-(--radix-select-trigger-width) overflow-hidden rounded-xl border border-neutral-200 bg-background-inverse-solid text-body-100 shadow-[0_4px_16px_rgba(0,0,0,0.10)]",
152
+ "relative min-w-(--radix-select-trigger-width) overflow-hidden rounded-xl border border-neutral-200 bg-surface-page text-foreground-default shadow-[0_4px_16px_rgba(0,0,0,0.10)]",
153
153
  "data-[state=closed]:animate-out data-[state=open]:animate-in",
154
154
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
155
155
  "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
@@ -166,14 +166,14 @@ const SelectItem = React__namespace.forwardRef(({ className, children, ...props
166
166
  {
167
167
  ref,
168
168
  className: cn.cn(
169
- "typography-body-1-regular relative flex w-full cursor-pointer select-none items-center gap-2 rounded-lg py-2 pr-2 pl-3 text-body-100 outline-none",
169
+ "typography-regular-body-lg relative flex w-full cursor-pointer select-none items-center gap-2 rounded-lg py-2 pr-2 pl-3 text-foreground-default outline-none",
170
170
  "focus:bg-neutral-100 data-disabled:pointer-events-none data-disabled:opacity-50",
171
171
  className
172
172
  ),
173
173
  ...props,
174
174
  children: [
175
175
  /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children }),
176
- /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { className: "ml-auto flex size-4 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(CheckIcon.CheckIcon, { className: "size-4 text-body-100" }) })
176
+ /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { className: "ml-auto flex size-4 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(CheckIcon.CheckIcon, { className: "size-4 text-foreground-default" }) })
177
177
  ]
178
178
  }
179
179
  ));
@@ -184,7 +184,7 @@ const SelectLabel = React__namespace.forwardRef(({ className, ...props }, ref) =
184
184
  SelectPrimitive__namespace.Label,
185
185
  {
186
186
  ref,
187
- className: cn.cn("typography-caption-semibold px-3 py-1.5 text-body-200", className),
187
+ className: cn.cn("typography-semibold-body-sm px-3 py-1.5 text-foreground-secondary", className),
188
188
  ...props
189
189
  }
190
190
  ));
@@ -1 +1 @@
1
- {"version":3,"file":"Select.cjs","sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { CheckIcon } from \"../Icons/CheckIcon\";\nimport { ChevronDownIcon } from \"../Icons/ChevronDownIcon\";\n\n/** Select field height in pixels. */\nexport type SelectSize = \"48\" | \"40\" | \"32\";\n\ntype SelectContextValue = {\n size: SelectSize;\n error: boolean;\n disabled?: boolean;\n};\n\nconst SelectContext = React.createContext<SelectContextValue>({\n size: \"48\",\n error: false,\n});\n\nconst TRIGGER_HEIGHT: Record<SelectSize, string> = {\n \"48\": \"h-12\",\n \"40\": \"h-10\",\n \"32\": \"h-8\",\n};\n\nconst TRIGGER_PADDING_X: Record<SelectSize, string> = {\n \"48\": \"px-4\",\n \"40\": \"px-4\",\n \"32\": \"px-3\",\n};\n\nconst TRIGGER_GAP: Record<SelectSize, string> = {\n \"48\": \"gap-3\",\n \"40\": \"gap-3\",\n \"32\": \"gap-2\",\n};\n\nconst TRIGGER_TYPOGRAPHY: Record<SelectSize, string> = {\n \"48\": \"typography-body-1-regular\",\n \"40\": \"typography-body-1-regular\",\n \"32\": \"typography-body-2-regular\",\n};\n\nexport interface SelectProps extends Omit<SelectPrimitive.SelectProps, \"dir\"> {\n /** Label text displayed above the trigger. Also used as the accessible name. */\n label?: string;\n /** Accessible name applied directly to the trigger button when no visible `label` is provided. */\n \"aria-label\"?: string;\n /** ID of an external element that labels the trigger button. */\n \"aria-labelledby\"?: string;\n /** Helper text displayed below the trigger. Replaced by `errorMessage` when `error` is `true`. */\n helperText?: string;\n /** Height of the select field in pixels. @default \"48\" */\n size?: SelectSize;\n /** Whether the field is in an error state. @default false */\n error?: boolean;\n /** Error message displayed below the trigger. Shown instead of `helperText` when `error` is `true`. */\n errorMessage?: string;\n /** Placeholder shown when no value is selected. */\n placeholder?: string;\n /** Icon element displayed at the left side of the trigger. */\n leftIcon?: React.ReactNode;\n /** Whether the field stretches to fill its container width. @default false */\n fullWidth?: boolean;\n /** Wraps the `className` of the outermost container div. */\n className?: string;\n /** HTML `id` applied to the trigger button. Auto-generated if omitted. */\n id?: string;\n}\n\n/**\n * A select field with optional label, helper/error text, and an icon slot,\n * built on Radix UI Select for full accessibility and keyboard navigation.\n *\n * Pair with {@link SelectContent} and {@link SelectItem} to provide options.\n *\n * @example\n * ```tsx\n * <Select label=\"Country\" placeholder=\"Select a country\">\n * <SelectContent>\n * <SelectItem value=\"us\">United States</SelectItem>\n * <SelectItem value=\"uk\">United Kingdom</SelectItem>\n * </SelectContent>\n * </Select>\n * ```\n */\nexport const Select = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Trigger>,\n SelectProps\n>(\n (\n {\n label,\n helperText,\n size = \"48\",\n error = false,\n errorMessage,\n placeholder,\n leftIcon,\n fullWidth = false,\n className,\n id,\n disabled,\n children,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const triggerId = id ?? generatedId;\n const helperTextId = `${triggerId}-helper`;\n const bottomText = error && errorMessage ? errorMessage : helperText;\n\n return (\n <SelectContext.Provider value={{ size, error, disabled }}>\n <div\n className={cn(\"flex flex-col\", fullWidth && \"w-full\", className)}\n data-disabled={disabled ? \"\" : undefined}\n data-error={error ? \"\" : undefined}\n >\n {label && (\n <label\n htmlFor={triggerId}\n className=\"typography-caption-semibold px-1 pt-1 pb-2 text-body-100\"\n >\n {label}\n </label>\n )}\n\n <SelectPrimitive.Root disabled={disabled} {...props}>\n <SelectPrimitive.Trigger\n ref={ref}\n id={triggerId}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-describedby={bottomText ? helperTextId : undefined}\n aria-invalid={error || undefined}\n className={cn(\n \"flex w-full cursor-pointer items-center justify-between rounded-xl border bg-neutral-100 outline-none motion-safe:transition-colors\",\n TRIGGER_HEIGHT[size],\n TRIGGER_PADDING_X[size],\n TRIGGER_GAP[size],\n TRIGGER_TYPOGRAPHY[size],\n error ? \"border-error-500\" : \"border-transparent\",\n !disabled &&\n !error &&\n \"hover:border-neutral-400 data-[state=open]:border-neutral-400\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n <div className=\"flex min-w-0 items-center gap-2\">\n {leftIcon && (\n <span\n className=\"flex size-5 shrink-0 items-center justify-center text-body-200\"\n data-testid=\"left-icon\"\n >\n {leftIcon}\n </span>\n )}\n <span className=\"min-w-0 flex-1 truncate text-left text-body-100 [&>[data-placeholder]]:text-body-200 [&>[data-placeholder]]:opacity-40\">\n <SelectPrimitive.Value placeholder={placeholder} />\n </span>\n </div>\n\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n\n {children}\n </SelectPrimitive.Root>\n\n {bottomText && (\n <p\n id={helperTextId}\n className={cn(\n \"typography-caption-regular px-2 pt-1 pb-0.5\",\n error ? \"text-error-500\" : \"text-body-200\",\n )}\n >\n {bottomText}\n </p>\n )}\n </div>\n </SelectContext.Provider>\n );\n },\n);\n\nSelect.displayName = \"Select\";\n\nexport interface SelectContentProps\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> {}\n\n/**\n * The dropdown panel rendered inside a portal. Place {@link SelectItem} elements\n * (and optionally {@link SelectGroup} / {@link SelectLabel}) as children.\n */\nexport const SelectContent = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Content>,\n SelectContentProps\n>(({ className, children, position = \"popper\", sideOffset = 4, style, ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n position={position}\n sideOffset={sideOffset}\n style={{ zIndex: \"var(--fanvue-ui-portal-z-index, 50)\", ...style }}\n className={cn(\n \"relative min-w-(--radix-select-trigger-width) overflow-hidden rounded-xl border border-neutral-200 bg-background-inverse-solid text-body-100 shadow-[0_4px_16px_rgba(0,0,0,0.10)]\",\n \"data-[state=closed]:animate-out data-[state=open]:animate-in\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.Viewport className=\"max-h-[var(--radix-select-content-available-height)] overflow-y-auto p-1\">\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\n\nSelectContent.displayName = \"SelectContent\";\n\nexport interface SelectItemProps\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {}\n\n/**\n * An individual option inside {@link SelectContent}.\n */\nexport const SelectItem = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Item>,\n SelectItemProps\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"typography-body-1-regular relative flex w-full cursor-pointer select-none items-center gap-2 rounded-lg py-2 pr-2 pl-3 text-body-100 outline-none\",\n \"focus:bg-neutral-100 data-disabled:pointer-events-none data-disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className=\"ml-auto flex size-4 shrink-0 items-center justify-center\">\n <CheckIcon className=\"size-4 text-body-100\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n));\n\nSelectItem.displayName = \"SelectItem\";\n\n/** Props for {@link SelectGroup}. */\nexport type SelectGroupProps = React.ComponentPropsWithoutRef<typeof SelectPrimitive.Group>;\n\n/**\n * Groups related {@link SelectItem} elements under a {@link SelectLabel}.\n */\nexport const SelectGroup = SelectPrimitive.Group;\nSelectGroup.displayName = \"SelectGroup\";\n\nexport interface SelectLabelProps\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label> {}\n\n/**\n * A non-interactive label shown above a {@link SelectGroup}.\n */\nexport const SelectLabel = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Label>,\n SelectLabelProps\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"typography-caption-semibold px-3 py-1.5 text-body-200\", className)}\n {...props}\n />\n));\n\nSelectLabel.displayName = \"SelectLabel\";\n\nexport interface SelectSeparatorProps\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator> {}\n\n/** A horizontal rule that visually separates groups in {@link SelectContent}. */\nexport const SelectSeparator = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Separator>,\n SelectSeparatorProps\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-neutral-200\", className)}\n {...props}\n />\n));\n\nSelectSeparator.displayName = \"SelectSeparator\";\n"],"names":["React","jsx","jsxs","cn","SelectPrimitive","ChevronDownIcon","CheckIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAM,gBAAgBA,iBAAM,cAAkC;AAAA,EAC5D,MAAM;AAAA,EACN,OAAO;AACT,CAAC;AAED,MAAM,iBAA6C;AAAA,EACjD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;AAEA,MAAM,oBAAgD;AAAA,EACpD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;AAEA,MAAM,cAA0C;AAAA,EAC9C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;AAEA,MAAM,qBAAiD;AAAA,EACrD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;AA6CO,MAAM,SAASA,iBAAM;AAAA,EAI1B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,cAAcA,iBAAM,MAAA;AAC1B,UAAM,YAAY,MAAM;AACxB,UAAM,eAAe,GAAG,SAAS;AACjC,UAAM,aAAa,SAAS,eAAe,eAAe;AAE1D,WACEC,+BAAC,cAAc,UAAd,EAAuB,OAAO,EAAE,MAAM,OAAO,YAC5C,UAAAC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,GAAAA,GAAG,iBAAiB,aAAa,UAAU,SAAS;AAAA,QAC/D,iBAAe,WAAW,KAAK;AAAA,QAC/B,cAAY,QAAQ,KAAK;AAAA,QAExB,UAAA;AAAA,UAAA,SACCF,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,WAAU;AAAA,cAET,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,0CAIJG,2BAAgB,MAAhB,EAAqB,UAAqB,GAAG,OAC5C,UAAA;AAAA,YAAAF,2BAAAA;AAAAA,cAACE,2BAAgB;AAAA,cAAhB;AAAA,gBACC;AAAA,gBACA,IAAI;AAAA,gBACJ,cAAY;AAAA,gBACZ,mBAAiB;AAAA,gBACjB,oBAAkB,aAAa,eAAe;AAAA,gBAC9C,gBAAc,SAAS;AAAA,gBACvB,WAAWD,GAAAA;AAAAA,kBACT;AAAA,kBACA,eAAe,IAAI;AAAA,kBACnB,kBAAkB,IAAI;AAAA,kBACtB,YAAY,IAAI;AAAA,kBAChB,mBAAmB,IAAI;AAAA,kBACvB,QAAQ,qBAAqB;AAAA,kBAC7B,CAAC,YACC,CAAC,SACD;AAAA,kBACF,YAAY;AAAA,gBAAA;AAAA,gBAGd,UAAA;AAAA,kBAAAD,2BAAAA,KAAC,OAAA,EAAI,WAAU,mCACZ,UAAA;AAAA,oBAAA,YACCD,2BAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAU;AAAA,wBACV,eAAY;AAAA,wBAEX,UAAA;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAGLA,2BAAAA,IAAC,UAAK,WAAU,0HACd,yCAACG,2BAAgB,OAAhB,EAAsB,YAAA,CAA0B,EAAA,CACnD;AAAA,kBAAA,GACF;AAAA,kBAEAH,+BAACG,2BAAgB,MAAhB,EAAqB,SAAO,MAC3B,UAAAH,2BAAAA,IAACI,mCAAgB,EAAA,CACnB;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAGD;AAAA,UAAA,GACH;AAAA,UAEC,cACCJ,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,IAAI;AAAA,cACJ,WAAWE,GAAAA;AAAAA,gBACT;AAAA,gBACA,QAAQ,mBAAmB;AAAA,cAAA;AAAA,cAG5B,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA,GAGN;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;AASd,MAAM,gBAAgBH,iBAAM,WAGjC,CAAC,EAAE,WAAW,UAAU,WAAW,UAAU,aAAa,GAAG,OAAO,GAAG,MAAA,GAAS,QAChFC,2BAAAA,IAACG,2BAAgB,QAAhB,EACC,UAAAH,2BAAAA;AAAAA,EAACG,2BAAgB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,EAAE,QAAQ,uCAAuC,GAAG,MAAA;AAAA,IAC3D,WAAWD,GAAAA;AAAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IAEJ,yCAACC,2BAAgB,UAAhB,EAAyB,WAAU,4EACjC,SAAA,CACH;AAAA,EAAA;AACF,GACF,CACD;AAED,cAAc,cAAc;AAQrB,MAAM,aAAaJ,iBAAM,WAG9B,CAAC,EAAE,WAAW,UAAU,GAAG,SAAS,QACpCE,2BAAAA;AAAAA,EAACE,2BAAgB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAWD,GAAAA;AAAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAED,GAAG;AAAA,IAEJ,UAAA;AAAA,MAAAF,2BAAAA,IAACG,2BAAgB,UAAhB,EAA0B,SAAA,CAAS;AAAA,MACpCH,2BAAAA,IAACG,2BAAgB,eAAhB,EAA8B,WAAU,4DACvC,UAAAH,2BAAAA,IAACK,UAAAA,WAAA,EAAU,WAAU,uBAAA,CAAuB,EAAA,CAC9C;AAAA,IAAA;AAAA,EAAA;AACF,CACD;AAED,WAAW,cAAc;AAQlB,MAAM,cAAcF,2BAAgB;AAC3C,YAAY,cAAc;AAQnB,MAAM,cAAcJ,iBAAM,WAG/B,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACG,2BAAgB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAWD,GAAAA,GAAG,yDAAyD,SAAS;AAAA,IAC/E,GAAG;AAAA,EAAA;AACN,CACD;AAED,YAAY,cAAc;AAMnB,MAAM,kBAAkBH,iBAAM,WAGnC,CAAC,EAAE,WAAW,GAAG,MAAA,GAAS,QAC1BC,2BAAAA;AAAAA,EAACG,2BAAgB;AAAA,EAAhB;AAAA,IACC;AAAA,IACA,WAAWD,GAAAA,GAAG,kCAAkC,SAAS;AAAA,IACxD,GAAG;AAAA,EAAA;AACN,CACD;AAED,gBAAgB,cAAc;;;;;;;"}
1
+ {"version":3,"file":"Select.cjs","sources":["../../../../src/components/Select/Select.tsx"],"sourcesContent":["import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport * as React from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport { CheckIcon } from \"../Icons/CheckIcon\";\nimport { ChevronDownIcon } from \"../Icons/ChevronDownIcon\";\n\n/** Select field height in pixels. */\nexport type SelectSize = \"48\" | \"40\" | \"32\";\n\ntype SelectContextValue = {\n size: SelectSize;\n error: boolean;\n disabled?: boolean;\n};\n\nconst SelectContext = React.createContext<SelectContextValue>({\n size: \"48\",\n error: false,\n});\n\nconst TRIGGER_HEIGHT: Record<SelectSize, string> = {\n \"48\": \"h-12\",\n \"40\": \"h-10\",\n \"32\": \"h-8\",\n};\n\nconst TRIGGER_PADDING_X: Record<SelectSize, string> = {\n \"48\": \"px-4\",\n \"40\": \"px-4\",\n \"32\": \"px-3\",\n};\n\nconst TRIGGER_GAP: Record<SelectSize, string> = {\n \"48\": \"gap-3\",\n \"40\": \"gap-3\",\n \"32\": \"gap-2\",\n};\n\nconst TRIGGER_TYPOGRAPHY: Record<SelectSize, string> = {\n \"48\": \"typography-regular-body-lg\",\n \"40\": \"typography-regular-body-lg\",\n \"32\": \"typography-regular-body-md\",\n};\n\nexport interface SelectProps extends Omit<SelectPrimitive.SelectProps, \"dir\"> {\n /** Label text displayed above the trigger. Also used as the accessible name. */\n label?: string;\n /** Accessible name applied directly to the trigger button when no visible `label` is provided. */\n \"aria-label\"?: string;\n /** ID of an external element that labels the trigger button. */\n \"aria-labelledby\"?: string;\n /** Helper text displayed below the trigger. Replaced by `errorMessage` when `error` is `true`. */\n helperText?: string;\n /** Height of the select field in pixels. @default \"48\" */\n size?: SelectSize;\n /** Whether the field is in an error state. @default false */\n error?: boolean;\n /** Error message displayed below the trigger. Shown instead of `helperText` when `error` is `true`. */\n errorMessage?: string;\n /** Placeholder shown when no value is selected. */\n placeholder?: string;\n /** Icon element displayed at the left side of the trigger. */\n leftIcon?: React.ReactNode;\n /** Whether the field stretches to fill its container width. @default false */\n fullWidth?: boolean;\n /** Wraps the `className` of the outermost container div. */\n className?: string;\n /** HTML `id` applied to the trigger button. Auto-generated if omitted. */\n id?: string;\n}\n\n/**\n * A select field with optional label, helper/error text, and an icon slot,\n * built on Radix UI Select for full accessibility and keyboard navigation.\n *\n * Pair with {@link SelectContent} and {@link SelectItem} to provide options.\n *\n * @example\n * ```tsx\n * <Select label=\"Country\" placeholder=\"Select a country\">\n * <SelectContent>\n * <SelectItem value=\"us\">United States</SelectItem>\n * <SelectItem value=\"uk\">United Kingdom</SelectItem>\n * </SelectContent>\n * </Select>\n * ```\n */\nexport const Select = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Trigger>,\n SelectProps\n>(\n (\n {\n label,\n helperText,\n size = \"48\",\n error = false,\n errorMessage,\n placeholder,\n leftIcon,\n fullWidth = false,\n className,\n id,\n disabled,\n children,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const triggerId = id ?? generatedId;\n const helperTextId = `${triggerId}-helper`;\n const bottomText = error && errorMessage ? errorMessage : helperText;\n\n return (\n <SelectContext.Provider value={{ size, error, disabled }}>\n <div\n className={cn(\"flex flex-col\", fullWidth && \"w-full\", className)}\n data-disabled={disabled ? \"\" : undefined}\n data-error={error ? \"\" : undefined}\n >\n {label && (\n <label\n htmlFor={triggerId}\n className=\"typography-semibold-body-sm px-1 pt-1 pb-2 text-foreground-default\"\n >\n {label}\n </label>\n )}\n\n <SelectPrimitive.Root disabled={disabled} {...props}>\n <SelectPrimitive.Trigger\n ref={ref}\n id={triggerId}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-describedby={bottomText ? helperTextId : undefined}\n aria-invalid={error || undefined}\n className={cn(\n \"flex w-full cursor-pointer items-center justify-between rounded-xl border bg-neutral-100 outline-none motion-safe:transition-colors\",\n TRIGGER_HEIGHT[size],\n TRIGGER_PADDING_X[size],\n TRIGGER_GAP[size],\n TRIGGER_TYPOGRAPHY[size],\n error ? \"border-error-default\" : \"border-transparent\",\n !disabled &&\n !error &&\n \"hover:border-neutral-400 data-[state=open]:border-neutral-400\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n <div className=\"flex min-w-0 items-center gap-2\">\n {leftIcon && (\n <span\n className=\"flex size-5 shrink-0 items-center justify-center text-foreground-secondary\"\n data-testid=\"left-icon\"\n >\n {leftIcon}\n </span>\n )}\n <span className=\"min-w-0 flex-1 truncate text-left text-foreground-default [&>[data-placeholder]]:text-foreground-secondary [&>[data-placeholder]]:opacity-40\">\n <SelectPrimitive.Value placeholder={placeholder} />\n </span>\n </div>\n\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n\n {children}\n </SelectPrimitive.Root>\n\n {bottomText && (\n <p\n id={helperTextId}\n className={cn(\n \"typography-regular-body-sm px-2 pt-1 pb-0.5\",\n error ? \"text-error-default\" : \"text-foreground-secondary\",\n )}\n >\n {bottomText}\n </p>\n )}\n </div>\n </SelectContext.Provider>\n );\n },\n);\n\nSelect.displayName = \"Select\";\n\nexport interface SelectContentProps\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> {}\n\n/**\n * The dropdown panel rendered inside a portal. Place {@link SelectItem} elements\n * (and optionally {@link SelectGroup} / {@link SelectLabel}) as children.\n */\nexport const SelectContent = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Content>,\n SelectContentProps\n>(({ className, children, position = \"popper\", sideOffset = 4, style, ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n position={position}\n sideOffset={sideOffset}\n style={{ zIndex: \"var(--fanvue-ui-portal-z-index, 50)\", ...style }}\n className={cn(\n \"relative min-w-(--radix-select-trigger-width) overflow-hidden rounded-xl border border-neutral-200 bg-surface-page text-foreground-default shadow-[0_4px_16px_rgba(0,0,0,0.10)]\",\n \"data-[state=closed]:animate-out data-[state=open]:animate-in\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.Viewport className=\"max-h-[var(--radix-select-content-available-height)] overflow-y-auto p-1\">\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\n\nSelectContent.displayName = \"SelectContent\";\n\nexport interface SelectItemProps\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {}\n\n/**\n * An individual option inside {@link SelectContent}.\n */\nexport const SelectItem = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Item>,\n SelectItemProps\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"typography-regular-body-lg relative flex w-full cursor-pointer select-none items-center gap-2 rounded-lg py-2 pr-2 pl-3 text-foreground-default outline-none\",\n \"focus:bg-neutral-100 data-disabled:pointer-events-none data-disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className=\"ml-auto flex size-4 shrink-0 items-center justify-center\">\n <CheckIcon className=\"size-4 text-foreground-default\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n));\n\nSelectItem.displayName = \"SelectItem\";\n\n/** Props for {@link SelectGroup}. */\nexport type SelectGroupProps = React.ComponentPropsWithoutRef<typeof SelectPrimitive.Group>;\n\n/**\n * Groups related {@link SelectItem} elements under a {@link SelectLabel}.\n */\nexport const SelectGroup = SelectPrimitive.Group;\nSelectGroup.displayName = \"SelectGroup\";\n\nexport interface SelectLabelProps\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label> {}\n\n/**\n * A non-interactive label shown above a {@link SelectGroup}.\n */\nexport const SelectLabel = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Label>,\n SelectLabelProps\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"typography-semibold-body-sm px-3 py-1.5 text-foreground-secondary\", className)}\n {...props}\n />\n));\n\nSelectLabel.displayName = \"SelectLabel\";\n\nexport interface SelectSeparatorProps\n extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator> {}\n\n/** A horizontal rule that visually separates groups in {@link SelectContent}. */\nexport const SelectSeparator = React.forwardRef<\n React.ComponentRef<typeof SelectPrimitive.Separator>,\n SelectSeparatorProps\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-neutral-200\", className)}\n {...props}\n />\n));\n\nSelectSeparator.displayName = \"SelectSeparator\";\n"],"names":["React","jsx","jsxs","cn","SelectPrimitive","ChevronDownIcon","CheckIcon"],"mappings":"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"}
@@ -61,7 +61,7 @@ const Slider = React__namespace.forwardRef(
61
61
  ),
62
62
  ...props,
63
63
  children: [
64
- /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Track, { className: "relative h-3 w-full overflow-hidden rounded-full border border-neutral-100 bg-neutral-100", children: /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Range, { className: "absolute h-full rounded-full bg-brand-green-500" }) }),
64
+ /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Track, { className: "relative h-3 w-full overflow-hidden rounded-full border border-neutral-100 bg-neutral-100", children: /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Range, { className: "absolute h-full rounded-full bg-brand-accent-default" }) }),
65
65
  Array.from({ length: thumbCount }, (_, i) => /* @__PURE__ */ jsxRuntime.jsx(
66
66
  SliderThumb.SliderThumb,
67
67
  {
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.cjs","sources":["../../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { SliderLayout } from \"./SliderLayout\";\nimport { SliderThumb } from \"./SliderThumb\";\n\n/** Position of the slider label relative to the track. */\nexport type SliderLabelPosition = \"top\" | \"left\";\n\nexport interface SliderProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>,\n \"asChild\" | \"children\"\n > {\n /** Label text displayed alongside the slider. */\n label?: string;\n /** Position of the label relative to the slider track. @default \"top\" */\n labelPosition?: SliderLabelPosition;\n /** Text shown at the minimum end of the track. */\n minLabel?: string;\n /** Text shown at the maximum end of the track. */\n maxLabel?: string;\n /** Whether to show a tooltip with the current value above the thumb. @default false */\n showTooltip?: boolean;\n /** Custom formatter for the tooltip value (e.g. to add units or format numbers). */\n formatTooltip?: (value: number) => string;\n}\n\n/**\n * A range input for selecting one or more numeric values along a track.\n * Supports single and multi-thumb modes, optional labels, and a value tooltip.\n *\n * Built on Radix UI `Slider`.\n *\n * @example\n * ```tsx\n * <Slider\n * label=\"Volume\"\n * min={0}\n * max={100}\n * defaultValue={[50]}\n * showTooltip\n * />\n * ```\n */\nexport const Slider = React.forwardRef<\n React.ComponentRef<typeof SliderPrimitive.Root>,\n SliderProps\n>(\n (\n {\n className,\n label,\n labelPosition = \"top\",\n minLabel,\n maxLabel,\n showTooltip = false,\n formatTooltip,\n disabled,\n value,\n defaultValue,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...props\n },\n ref,\n ) => {\n const labelId = React.useId();\n const thumbCount = value?.length ?? defaultValue?.length ?? 1;\n const resolvedLabelledBy = ariaLabelledBy ?? (label ? labelId : undefined);\n const resolvedAriaLabel = !resolvedLabelledBy ? ariaLabel : undefined;\n\n const sliderTrack = (\n <SliderPrimitive.Root\n ref={ref}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n aria-label={resolvedAriaLabel}\n aria-labelledby={resolvedLabelledBy}\n className={cn(\n \"group/slider relative flex w-full touch-none select-none items-center\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-3 w-full overflow-hidden rounded-full border border-neutral-100 bg-neutral-100\">\n <SliderPrimitive.Range className=\"absolute h-full rounded-full bg-brand-green-500\" />\n </SliderPrimitive.Track>\n\n {Array.from({ length: thumbCount }, (_, i) => (\n <SliderThumb\n // biome-ignore lint/suspicious/noArrayIndexKey: thumbs are fixed-count and never reorder\n key={i}\n showTooltip={showTooltip}\n formatTooltip={formatTooltip}\n index={i}\n aria-label={resolvedAriaLabel}\n aria-labelledby={resolvedLabelledBy}\n />\n ))}\n </SliderPrimitive.Root>\n );\n\n const hasLayout = Boolean(label || minLabel || maxLabel);\n\n if (!hasLayout) return sliderTrack;\n\n return (\n <SliderLayout\n label={label}\n labelId={labelId}\n labelPosition={labelPosition}\n minLabel={minLabel}\n maxLabel={maxLabel}\n >\n {sliderTrack}\n </SliderLayout>\n );\n },\n);\n\nSlider.displayName = \"Slider\";\n"],"names":["React","jsxs","SliderPrimitive","cn","jsx","SliderThumb","SliderLayout"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CO,MAAM,SAASA,iBAAM;AAAA,EAI1B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,UAAUA,iBAAM,MAAA;AACtB,UAAM,aAAa,OAAO,UAAU,cAAc,UAAU;AAC5D,UAAM,qBAAqB,mBAAmB,QAAQ,UAAU;AAChE,UAAM,oBAAoB,CAAC,qBAAqB,YAAY;AAE5D,UAAM,cACJC,2BAAAA;AAAAA,MAACC,2BAAgB;AAAA,MAAhB;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAY;AAAA,QACZ,mBAAiB;AAAA,QACjB,WAAWC,GAAAA;AAAAA,UACT;AAAA,UACA,YAAY;AAAA,UACZ;AAAA,QAAA;AAAA,QAED,GAAG;AAAA,QAEJ,UAAA;AAAA,UAAAC,2BAAAA,IAACF,2BAAgB,OAAhB,EAAsB,WAAU,6FAC/B,UAAAE,+BAACF,2BAAgB,OAAhB,EAAsB,WAAU,kDAAA,CAAkD,EAAA,CACrF;AAAA,UAEC,MAAM,KAAK,EAAE,QAAQ,cAAc,CAAC,GAAG,MACtCE,2BAAAA;AAAAA,YAACC,YAAAA;AAAAA,YAAA;AAAA,cAGC;AAAA,cACA;AAAA,cACA,OAAO;AAAA,cACP,cAAY;AAAA,cACZ,mBAAiB;AAAA,YAAA;AAAA,YALZ;AAAA,UAAA,CAOR;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAIL,UAAM,YAAY,QAAQ,SAAS,YAAY,QAAQ;AAEvD,QAAI,CAAC,UAAW,QAAO;AAEvB,WACED,2BAAAA;AAAAA,MAACE,aAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAEC,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,OAAO,cAAc;;"}
1
+ {"version":3,"file":"Slider.cjs","sources":["../../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { SliderLayout } from \"./SliderLayout\";\nimport { SliderThumb } from \"./SliderThumb\";\n\n/** Position of the slider label relative to the track. */\nexport type SliderLabelPosition = \"top\" | \"left\";\n\nexport interface SliderProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>,\n \"asChild\" | \"children\"\n > {\n /** Label text displayed alongside the slider. */\n label?: string;\n /** Position of the label relative to the slider track. @default \"top\" */\n labelPosition?: SliderLabelPosition;\n /** Text shown at the minimum end of the track. */\n minLabel?: string;\n /** Text shown at the maximum end of the track. */\n maxLabel?: string;\n /** Whether to show a tooltip with the current value above the thumb. @default false */\n showTooltip?: boolean;\n /** Custom formatter for the tooltip value (e.g. to add units or format numbers). */\n formatTooltip?: (value: number) => string;\n}\n\n/**\n * A range input for selecting one or more numeric values along a track.\n * Supports single and multi-thumb modes, optional labels, and a value tooltip.\n *\n * Built on Radix UI `Slider`.\n *\n * @example\n * ```tsx\n * <Slider\n * label=\"Volume\"\n * min={0}\n * max={100}\n * defaultValue={[50]}\n * showTooltip\n * />\n * ```\n */\nexport const Slider = React.forwardRef<\n React.ComponentRef<typeof SliderPrimitive.Root>,\n SliderProps\n>(\n (\n {\n className,\n label,\n labelPosition = \"top\",\n minLabel,\n maxLabel,\n showTooltip = false,\n formatTooltip,\n disabled,\n value,\n defaultValue,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...props\n },\n ref,\n ) => {\n const labelId = React.useId();\n const thumbCount = value?.length ?? defaultValue?.length ?? 1;\n const resolvedLabelledBy = ariaLabelledBy ?? (label ? labelId : undefined);\n const resolvedAriaLabel = !resolvedLabelledBy ? ariaLabel : undefined;\n\n const sliderTrack = (\n <SliderPrimitive.Root\n ref={ref}\n disabled={disabled}\n value={value}\n defaultValue={defaultValue}\n aria-label={resolvedAriaLabel}\n aria-labelledby={resolvedLabelledBy}\n className={cn(\n \"group/slider relative flex w-full touch-none select-none items-center\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-3 w-full overflow-hidden rounded-full border border-neutral-100 bg-neutral-100\">\n <SliderPrimitive.Range className=\"absolute h-full rounded-full bg-brand-accent-default\" />\n </SliderPrimitive.Track>\n\n {Array.from({ length: thumbCount }, (_, i) => (\n <SliderThumb\n // biome-ignore lint/suspicious/noArrayIndexKey: thumbs are fixed-count and never reorder\n key={i}\n showTooltip={showTooltip}\n formatTooltip={formatTooltip}\n index={i}\n aria-label={resolvedAriaLabel}\n aria-labelledby={resolvedLabelledBy}\n />\n ))}\n </SliderPrimitive.Root>\n );\n\n const hasLayout = Boolean(label || minLabel || maxLabel);\n\n if (!hasLayout) return sliderTrack;\n\n return (\n <SliderLayout\n label={label}\n labelId={labelId}\n labelPosition={labelPosition}\n minLabel={minLabel}\n maxLabel={maxLabel}\n >\n {sliderTrack}\n </SliderLayout>\n );\n },\n);\n\nSlider.displayName = \"Slider\";\n"],"names":["React","jsxs","SliderPrimitive","cn","jsx","SliderThumb","SliderLayout"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CO,MAAM,SAASA,iBAAM;AAAA,EAI1B,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,UAAUA,iBAAM,MAAA;AACtB,UAAM,aAAa,OAAO,UAAU,cAAc,UAAU;AAC5D,UAAM,qBAAqB,mBAAmB,QAAQ,UAAU;AAChE,UAAM,oBAAoB,CAAC,qBAAqB,YAAY;AAE5D,UAAM,cACJC,2BAAAA;AAAAA,MAACC,2BAAgB;AAAA,MAAhB;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAY;AAAA,QACZ,mBAAiB;AAAA,QACjB,WAAWC,GAAAA;AAAAA,UACT;AAAA,UACA,YAAY;AAAA,UACZ;AAAA,QAAA;AAAA,QAED,GAAG;AAAA,QAEJ,UAAA;AAAA,UAAAC,2BAAAA,IAACF,2BAAgB,OAAhB,EAAsB,WAAU,6FAC/B,UAAAE,+BAACF,2BAAgB,OAAhB,EAAsB,WAAU,uDAAA,CAAuD,EAAA,CAC1F;AAAA,UAEC,MAAM,KAAK,EAAE,QAAQ,cAAc,CAAC,GAAG,MACtCE,2BAAAA;AAAAA,YAACC,YAAAA;AAAAA,YAAA;AAAA,cAGC;AAAA,cACA;AAAA,cACA,OAAO;AAAA,cACP,cAAY;AAAA,cACZ,mBAAiB;AAAA,YAAA;AAAA,YALZ;AAAA,UAAA,CAOR;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAIL,UAAM,YAAY,QAAQ,SAAS,YAAY,QAAQ;AAEvD,QAAI,CAAC,UAAW,QAAO;AAEvB,WACED,2BAAAA;AAAAA,MAACE,aAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAEC,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEA,OAAO,cAAc;;"}
@@ -12,15 +12,22 @@ function SliderLayout({
12
12
  }) {
13
13
  if (labelPosition === "left") {
14
14
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
15
- label && /* @__PURE__ */ jsxRuntime.jsx("span", { id: labelId, className: "typography-body-1-semibold shrink-0 text-body-100", children: label }),
16
- minLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typography-body-2-regular shrink-0 text-body-200", children: minLabel }),
15
+ label && /* @__PURE__ */ jsxRuntime.jsx(
16
+ "span",
17
+ {
18
+ id: labelId,
19
+ className: "typography-semibold-body-lg shrink-0 text-foreground-default",
20
+ children: label
21
+ }
22
+ ),
23
+ minLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typography-regular-body-md shrink-0 text-foreground-secondary", children: minLabel }),
17
24
  children,
18
- maxLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typography-body-2-regular shrink-0 text-body-200", children: maxLabel })
25
+ maxLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typography-regular-body-md shrink-0 text-foreground-secondary", children: maxLabel })
19
26
  ] });
20
27
  }
21
28
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col gap-3", children: [
22
- label && /* @__PURE__ */ jsxRuntime.jsx("span", { id: labelId, className: "typography-body-1-semibold text-body-100", children: label }),
23
- (minLabel || maxLabel) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-start justify-between text-body-200 text-sm leading-[18px]", children: [
29
+ label && /* @__PURE__ */ jsxRuntime.jsx("span", { id: labelId, className: "typography-semibold-body-lg text-foreground-default", children: label }),
30
+ (minLabel || maxLabel) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-start justify-between text-foreground-secondary text-sm leading-[18px]", children: [
24
31
  minLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { children: minLabel }),
25
32
  maxLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto", children: maxLabel })
26
33
  ] }),
@@ -1 +1 @@
1
- {"version":3,"file":"SliderLayout.cjs","sources":["../../../../src/components/Slider/SliderLayout.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport type { SliderLabelPosition } from \"./Slider\";\n\ninterface SliderLayoutProps {\n label?: string;\n labelId: string;\n labelPosition: SliderLabelPosition;\n minLabel?: string;\n maxLabel?: string;\n children: React.ReactNode;\n}\n\nexport function SliderLayout({\n label,\n labelId,\n labelPosition,\n minLabel,\n maxLabel,\n children,\n}: SliderLayoutProps) {\n if (labelPosition === \"left\") {\n return (\n <div className=\"flex items-center gap-3\">\n {label && (\n <span id={labelId} className=\"typography-body-1-semibold shrink-0 text-body-100\">\n {label}\n </span>\n )}\n {minLabel && (\n <span className=\"typography-body-2-regular shrink-0 text-body-200\">{minLabel}</span>\n )}\n {children}\n {maxLabel && (\n <span className=\"typography-body-2-regular shrink-0 text-body-200\">{maxLabel}</span>\n )}\n </div>\n );\n }\n\n return (\n <div className=\"flex w-full flex-col gap-3\">\n {label && (\n <span id={labelId} className=\"typography-body-1-semibold text-body-100\">\n {label}\n </span>\n )}\n {(minLabel || maxLabel) && (\n <div className=\"flex w-full items-start justify-between text-body-200 text-sm leading-[18px]\">\n {minLabel && <span>{minLabel}</span>}\n {maxLabel && <span className=\"ml-auto\">{maxLabel}</span>}\n </div>\n )}\n {children}\n </div>\n );\n}\n"],"names":["jsxs","jsx"],"mappings":";;;;AAYO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,MAAI,kBAAkB,QAAQ;AAC5B,WACEA,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,MAAA,wCACE,QAAA,EAAK,IAAI,SAAS,WAAU,qDAC1B,UAAA,OACH;AAAA,MAED,YACCC,2BAAAA,IAAC,QAAA,EAAK,WAAU,oDAAoD,UAAA,UAAS;AAAA,MAE9E;AAAA,MACA,YACCA,2BAAAA,IAAC,QAAA,EAAK,WAAU,oDAAoD,UAAA,SAAA,CAAS;AAAA,IAAA,GAEjF;AAAA,EAEJ;AAEA,SACED,2BAAAA,KAAC,OAAA,EAAI,WAAU,8BACZ,UAAA;AAAA,IAAA,wCACE,QAAA,EAAK,IAAI,SAAS,WAAU,4CAC1B,UAAA,OACH;AAAA,KAEA,YAAY,aACZA,2BAAAA,KAAC,OAAA,EAAI,WAAU,gFACZ,UAAA;AAAA,MAAA,YAAYC,2BAAAA,IAAC,UAAM,UAAA,SAAA,CAAS;AAAA,MAC5B,YAAYA,2BAAAA,IAAC,QAAA,EAAK,WAAU,WAAW,UAAA,SAAA,CAAS;AAAA,IAAA,GACnD;AAAA,IAED;AAAA,EAAA,GACH;AAEJ;;"}
1
+ {"version":3,"file":"SliderLayout.cjs","sources":["../../../../src/components/Slider/SliderLayout.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport type { SliderLabelPosition } from \"./Slider\";\n\ninterface SliderLayoutProps {\n label?: string;\n labelId: string;\n labelPosition: SliderLabelPosition;\n minLabel?: string;\n maxLabel?: string;\n children: React.ReactNode;\n}\n\nexport function SliderLayout({\n label,\n labelId,\n labelPosition,\n minLabel,\n maxLabel,\n children,\n}: SliderLayoutProps) {\n if (labelPosition === \"left\") {\n return (\n <div className=\"flex items-center gap-3\">\n {label && (\n <span\n id={labelId}\n className=\"typography-semibold-body-lg shrink-0 text-foreground-default\"\n >\n {label}\n </span>\n )}\n {minLabel && (\n <span className=\"typography-regular-body-md shrink-0 text-foreground-secondary\">\n {minLabel}\n </span>\n )}\n {children}\n {maxLabel && (\n <span className=\"typography-regular-body-md shrink-0 text-foreground-secondary\">\n {maxLabel}\n </span>\n )}\n </div>\n );\n }\n\n return (\n <div className=\"flex w-full flex-col gap-3\">\n {label && (\n <span id={labelId} className=\"typography-semibold-body-lg text-foreground-default\">\n {label}\n </span>\n )}\n {(minLabel || maxLabel) && (\n <div className=\"flex w-full items-start justify-between text-foreground-secondary text-sm leading-[18px]\">\n {minLabel && <span>{minLabel}</span>}\n {maxLabel && <span className=\"ml-auto\">{maxLabel}</span>}\n </div>\n )}\n {children}\n </div>\n );\n}\n"],"names":["jsxs","jsx"],"mappings":";;;;AAYO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,MAAI,kBAAkB,QAAQ;AAC5B,WACEA,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,MAAA,SACCC,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,IAAI;AAAA,UACJ,WAAU;AAAA,UAET,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGJ,YACCA,2BAAAA,IAAC,QAAA,EAAK,WAAU,iEACb,UAAA,UACH;AAAA,MAED;AAAA,MACA,YACCA,2BAAAA,IAAC,QAAA,EAAK,WAAU,iEACb,UAAA,SAAA,CACH;AAAA,IAAA,GAEJ;AAAA,EAEJ;AAEA,SACED,2BAAAA,KAAC,OAAA,EAAI,WAAU,8BACZ,UAAA;AAAA,IAAA,wCACE,QAAA,EAAK,IAAI,SAAS,WAAU,uDAC1B,UAAA,OACH;AAAA,KAEA,YAAY,aACZA,2BAAAA,KAAC,OAAA,EAAI,WAAU,4FACZ,UAAA;AAAA,MAAA,YAAYC,2BAAAA,IAAC,UAAM,UAAA,SAAA,CAAS;AAAA,MAC5B,YAAYA,2BAAAA,IAAC,QAAA,EAAK,WAAU,WAAW,UAAA,SAAA,CAAS;AAAA,IAAA,GACnD;AAAA,IAED;AAAA,EAAA,GACH;AAEJ;;"}
@@ -56,21 +56,21 @@ function SliderThumb({
56
56
  }
57
57
  },
58
58
  className: cn.cn(
59
- "flex size-6 items-center justify-center rounded-full border border-neutral-100 bg-background-inverse-solid shadow-sm",
59
+ "flex size-6 items-center justify-center rounded-full border border-neutral-100 bg-surface-page shadow-sm",
60
60
  "transition-shadow duration-150",
61
- "hover:ring-2 hover:ring-brand-green-500",
62
- "not-data-disabled:active:ring-2 not-data-disabled:active:ring-brand-green-500",
63
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-purple-500 focus-visible:ring-offset-2 focus-visible:ring-offset-background-inverse-solid",
61
+ "hover:ring-2 hover:ring-brand-accent-default",
62
+ "not-data-disabled:active:ring-2 not-data-disabled:active:ring-brand-accent-default",
63
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-surface-page",
64
64
  "data-disabled:cursor-not-allowed"
65
65
  ),
66
66
  children: [
67
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block size-3 rounded-full bg-brand-green-500 shadow-[inset_0px_1px_2px_0px_rgba(0,0,0,0.1)]" }),
67
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block size-3 rounded-full bg-brand-accent-default shadow-[inset_0px_1px_2px_0px_rgba(0,0,0,0.1)]" }),
68
68
  showTooltip && /* @__PURE__ */ jsxRuntime.jsx(
69
69
  "span",
70
70
  {
71
71
  role: "tooltip",
72
72
  "data-slider-tooltip": true,
73
- className: "typography-caption-semibold pointer-events-none absolute bottom-full mb-2 rounded-3xl bg-background-solid px-2 py-1 text-background-inverse-solid shadow-sm"
73
+ className: "typography-semibold-body-sm pointer-events-none absolute bottom-full mb-2 rounded-3xl bg-surface-pageinverse px-2 py-1 text-foreground-inverse shadow-sm"
74
74
  }
75
75
  )
76
76
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"SliderThumb.cjs","sources":["../../../../src/components/Slider/SliderThumb.tsx"],"sourcesContent":["import * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\ninterface SliderThumbProps {\n showTooltip: boolean;\n formatTooltip?: (value: number) => string;\n index: number;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n}\n\nexport function SliderThumb({\n showTooltip,\n formatTooltip,\n index,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n}: SliderThumbProps) {\n const thumbRef = React.useCallback(\n (el: HTMLSpanElement | null) => {\n if (!el || !showTooltip) return;\n syncTooltipText(el, formatTooltip);\n },\n [showTooltip, formatTooltip],\n );\n\n return (\n <SliderPrimitive.Thumb\n ref={thumbRef}\n data-index={index}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n onPointerDown={(e) => {\n if (showTooltip) syncTooltipText(e.currentTarget, formatTooltip);\n }}\n onPointerMove={(e) => {\n if (showTooltip) syncTooltipText(e.currentTarget, formatTooltip);\n }}\n onKeyDown={(e) => {\n if (showTooltip) {\n requestAnimationFrame(() => syncTooltipText(e.currentTarget, formatTooltip));\n }\n }}\n className={cn(\n \"flex size-6 items-center justify-center rounded-full border border-neutral-100 bg-background-inverse-solid shadow-sm\",\n \"transition-shadow duration-150\",\n \"hover:ring-2 hover:ring-brand-green-500\",\n \"not-data-disabled:active:ring-2 not-data-disabled:active:ring-brand-green-500\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-purple-500 focus-visible:ring-offset-2 focus-visible:ring-offset-background-inverse-solid\",\n \"data-disabled:cursor-not-allowed\",\n )}\n >\n <span className=\"block size-3 rounded-full bg-brand-green-500 shadow-[inset_0px_1px_2px_0px_rgba(0,0,0,0.1)]\" />\n\n {showTooltip && (\n <span\n role=\"tooltip\"\n data-slider-tooltip\n className=\"typography-caption-semibold pointer-events-none absolute bottom-full mb-2 rounded-3xl bg-background-solid px-2 py-1 text-background-inverse-solid shadow-sm\"\n />\n )}\n </SliderPrimitive.Thumb>\n );\n}\n\nfunction syncTooltipText(thumb: HTMLElement, formatTooltip?: (value: number) => string) {\n const raw = thumb.getAttribute(\"aria-valuenow\");\n const tooltip = thumb.querySelector<HTMLSpanElement>(\"[data-slider-tooltip]\");\n if (raw == null || !tooltip) return;\n const num = Number(raw);\n tooltip.textContent = formatTooltip ? formatTooltip(num) : String(num);\n}\n"],"names":["React","jsxs","SliderPrimitive","cn","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAYO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,mBAAmB;AACrB,GAAqB;AACnB,QAAM,WAAWA,iBAAM;AAAA,IACrB,CAAC,OAA+B;AAC9B,UAAI,CAAC,MAAM,CAAC,YAAa;AACzB,sBAAgB,IAAI,aAAa;AAAA,IACnC;AAAA,IACA,CAAC,aAAa,aAAa;AAAA,EAAA;AAG7B,SACEC,2BAAAA;AAAAA,IAACC,2BAAgB;AAAA,IAAhB;AAAA,MACC,KAAK;AAAA,MACL,cAAY;AAAA,MACZ,cAAY;AAAA,MACZ,mBAAiB;AAAA,MACjB,eAAe,CAAC,MAAM;AACpB,YAAI,YAAa,iBAAgB,EAAE,eAAe,aAAa;AAAA,MACjE;AAAA,MACA,eAAe,CAAC,MAAM;AACpB,YAAI,YAAa,iBAAgB,EAAE,eAAe,aAAa;AAAA,MACjE;AAAA,MACA,WAAW,CAAC,MAAM;AAChB,YAAI,aAAa;AACf,gCAAsB,MAAM,gBAAgB,EAAE,eAAe,aAAa,CAAC;AAAA,QAC7E;AAAA,MACF;AAAA,MACA,WAAWC,GAAAA;AAAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAAC,2BAAAA,IAAC,QAAA,EAAK,WAAU,8FAAA,CAA8F;AAAA,QAE7G,eACCA,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,uBAAmB;AAAA,YACnB,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,IAAA;AAAA,EAAA;AAIR;AAEA,SAAS,gBAAgB,OAAoB,eAA2C;AACtF,QAAM,MAAM,MAAM,aAAa,eAAe;AAC9C,QAAM,UAAU,MAAM,cAA+B,uBAAuB;AAC5E,MAAI,OAAO,QAAQ,CAAC,QAAS;AAC7B,QAAM,MAAM,OAAO,GAAG;AACtB,UAAQ,cAAc,gBAAgB,cAAc,GAAG,IAAI,OAAO,GAAG;AACvE;;"}
1
+ {"version":3,"file":"SliderThumb.cjs","sources":["../../../../src/components/Slider/SliderThumb.tsx"],"sourcesContent":["import * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\ninterface SliderThumbProps {\n showTooltip: boolean;\n formatTooltip?: (value: number) => string;\n index: number;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n}\n\nexport function SliderThumb({\n showTooltip,\n formatTooltip,\n index,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n}: SliderThumbProps) {\n const thumbRef = React.useCallback(\n (el: HTMLSpanElement | null) => {\n if (!el || !showTooltip) return;\n syncTooltipText(el, formatTooltip);\n },\n [showTooltip, formatTooltip],\n );\n\n return (\n <SliderPrimitive.Thumb\n ref={thumbRef}\n data-index={index}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n onPointerDown={(e) => {\n if (showTooltip) syncTooltipText(e.currentTarget, formatTooltip);\n }}\n onPointerMove={(e) => {\n if (showTooltip) syncTooltipText(e.currentTarget, formatTooltip);\n }}\n onKeyDown={(e) => {\n if (showTooltip) {\n requestAnimationFrame(() => syncTooltipText(e.currentTarget, formatTooltip));\n }\n }}\n className={cn(\n \"flex size-6 items-center justify-center rounded-full border border-neutral-100 bg-surface-page shadow-sm\",\n \"transition-shadow duration-150\",\n \"hover:ring-2 hover:ring-brand-accent-default\",\n \"not-data-disabled:active:ring-2 not-data-disabled:active:ring-brand-accent-default\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-surface-page\",\n \"data-disabled:cursor-not-allowed\",\n )}\n >\n <span className=\"block size-3 rounded-full bg-brand-accent-default shadow-[inset_0px_1px_2px_0px_rgba(0,0,0,0.1)]\" />\n\n {showTooltip && (\n <span\n role=\"tooltip\"\n data-slider-tooltip\n className=\"typography-semibold-body-sm pointer-events-none absolute bottom-full mb-2 rounded-3xl bg-surface-pageinverse px-2 py-1 text-foreground-inverse shadow-sm\"\n />\n )}\n </SliderPrimitive.Thumb>\n );\n}\n\nfunction syncTooltipText(thumb: HTMLElement, formatTooltip?: (value: number) => string) {\n const raw = thumb.getAttribute(\"aria-valuenow\");\n const tooltip = thumb.querySelector<HTMLSpanElement>(\"[data-slider-tooltip]\");\n if (raw == null || !tooltip) return;\n const num = Number(raw);\n tooltip.textContent = formatTooltip ? formatTooltip(num) : String(num);\n}\n"],"names":["React","jsxs","SliderPrimitive","cn","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAYO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,mBAAmB;AACrB,GAAqB;AACnB,QAAM,WAAWA,iBAAM;AAAA,IACrB,CAAC,OAA+B;AAC9B,UAAI,CAAC,MAAM,CAAC,YAAa;AACzB,sBAAgB,IAAI,aAAa;AAAA,IACnC;AAAA,IACA,CAAC,aAAa,aAAa;AAAA,EAAA;AAG7B,SACEC,2BAAAA;AAAAA,IAACC,2BAAgB;AAAA,IAAhB;AAAA,MACC,KAAK;AAAA,MACL,cAAY;AAAA,MACZ,cAAY;AAAA,MACZ,mBAAiB;AAAA,MACjB,eAAe,CAAC,MAAM;AACpB,YAAI,YAAa,iBAAgB,EAAE,eAAe,aAAa;AAAA,MACjE;AAAA,MACA,eAAe,CAAC,MAAM;AACpB,YAAI,YAAa,iBAAgB,EAAE,eAAe,aAAa;AAAA,MACjE;AAAA,MACA,WAAW,CAAC,MAAM;AAChB,YAAI,aAAa;AACf,gCAAsB,MAAM,gBAAgB,EAAE,eAAe,aAAa,CAAC;AAAA,QAC7E;AAAA,MACF;AAAA,MACA,WAAWC,GAAAA;AAAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAAC,2BAAAA,IAAC,QAAA,EAAK,WAAU,mGAAA,CAAmG;AAAA,QAElH,eACCA,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,uBAAmB;AAAA,YACnB,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,MACZ;AAAA,IAAA;AAAA,EAAA;AAIR;AAEA,SAAS,gBAAgB,OAAoB,eAA2C;AACtF,QAAM,MAAM,MAAM,aAAa,eAAe;AAC9C,QAAM,UAAU,MAAM,cAA+B,uBAAuB;AAC5E,MAAI,OAAO,QAAQ,CAAC,QAAS;AAC7B,QAAM,MAAM,OAAO,GAAG;AACtB,UAAQ,cAAc,gBAAgB,cAAc,GAAG,IAAI,OAAO,GAAG;AACvE;;"}
@@ -65,8 +65,8 @@ function VipEarnContent({
65
65
  icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex shrink-0", "aria-hidden": "true", children: icon }),
66
66
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-4", children: [
67
67
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
68
- title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "typography-body-1-semibold text-body-100 leading-6", children: title }),
69
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "typography-body-2-regular text-body-200", children: description })
68
+ title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "typography-semibold-body-lg text-foreground-default leading-6", children: title }),
69
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "typography-regular-body-md text-foreground-secondary", children: description })
70
70
  ] }),
71
71
  showActions && primary && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "self-start", children: primary })
72
72
  ] })
@@ -90,9 +90,9 @@ function WelcomeContent({
90
90
  variant: "secondary"
91
91
  });
92
92
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
93
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-2 px-8 text-center text-body-100", children: [
94
- title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "typography-heading-4 text-body-100", children: title }),
95
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "typography-body-2-regular text-body-200", children: description })
93
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-2 px-8 text-center text-foreground-default", children: [
94
+ title && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "typography-bold-heading-xs text-foreground-default", children: title }),
95
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "typography-regular-body-md text-foreground-secondary", children: description })
96
96
  ] }),
97
97
  showActions && (primary || secondary) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col gap-4 px-8 sm:flex-row sm:*:flex-1", children: [
98
98
  secondary,
@@ -119,7 +119,7 @@ function DefaultContent({
119
119
  size: "40"
120
120
  });
121
121
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
122
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "typography-body-1-medium flex min-w-0 flex-1 items-center self-stretch text-body-100", children }),
122
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "typography-regular-body-lg flex min-w-0 flex-1 items-center self-stretch text-foreground-default", children }),
123
123
  showActions && (primary || secondary) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-start gap-2", children: [
124
124
  primary,
125
125
  secondary
@@ -156,10 +156,10 @@ const Snackbar = React__namespace.forwardRef(
156
156
  "data-testid": "snackbar",
157
157
  className: cn.cn(
158
158
  "flex gap-4 rounded-2xl",
159
- (variant === "default" || variant === "vipEarn") && "border border-neutral-50 bg-background-200 p-4 backdrop-blur-md",
159
+ (variant === "default" || variant === "vipEarn") && "border border-neutral-50 bg-surface-container p-4 backdrop-blur-md",
160
160
  variant === "default" && "flex-wrap items-start",
161
161
  variant === "vipEarn" && "items-start",
162
- variant === "welcome" && "relative flex-col items-center bg-background-inverse-solid py-6",
162
+ variant === "welcome" && "relative flex-col items-center bg-surface-page py-6",
163
163
  className
164
164
  ),
165
165
  ...props,
@@ -1 +1 @@
1
- {"version":3,"file":"Snackbar.cjs","sources":["../../../../src/components/Snackbar/Snackbar.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Button } from \"../Button/Button\";\nimport { IconButton } from \"../IconButton/IconButton\";\nimport { CrossIcon } from \"../Icons/CrossIcon\";\n\n/** Layout variant of the snackbar. */\nexport type SnackbarVariant = \"default\" | \"vipEarn\" | \"welcome\";\n\nexport interface SnackbarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Layout variant of the snackbar. @default \"default\" */\n variant?: SnackbarVariant;\n /** Icon element displayed at the leading edge (used by the `vipEarn` variant). */\n icon?: React.ReactNode;\n /** Title content. */\n title?: React.ReactNode;\n /** Descriptive body text. */\n description?: React.ReactNode;\n /** Whether to show primary/secondary action buttons. @default true */\n showActions?: boolean;\n /** Primary CTA label — renders a default {@link Button}. */\n primaryLabel?: string;\n /** Click handler for the primary CTA (used together with `primaryLabel`). */\n primaryOnClick?: () => void;\n /** Custom element rendered as the primary CTA. Overrides `primaryLabel` / `primaryOnClick`. */\n primarySlot?: React.ReactNode;\n /** Secondary CTA label — renders a default {@link Button}. */\n secondaryLabel?: string;\n /** Click handler for the secondary CTA (used together with `secondaryLabel`). */\n secondaryOnClick?: () => void;\n /** Custom element rendered as the secondary CTA. Overrides `secondaryLabel` / `secondaryOnClick`. */\n secondarySlot?: React.ReactNode;\n /** Whether to show the close button. @default false */\n closable?: boolean;\n /** Callback fired when the close button is clicked. */\n onClose?: () => void;\n /** Accessible label for the close button. @default \"Close snackbar\" */\n closeLabel?: string;\n}\n\nfunction CloseButton({\n onClose,\n className,\n closeLabel = \"Close snackbar\",\n}: {\n onClose?: () => void;\n className?: string;\n closeLabel?: string;\n}) {\n return (\n <IconButton\n variant=\"tertiary\"\n size=\"24\"\n onClick={onClose}\n icon={<CrossIcon />}\n className={cn(\"shrink-0\", className)}\n aria-label={closeLabel}\n />\n );\n}\n\n/**\n * Resolves a CTA slot. If a custom slot is provided it takes precedence,\n * otherwise a default Button is rendered from label + onClick.\n */\nfunction resolveCtaSlot(\n slot: React.ReactNode | undefined,\n label: string | undefined,\n onClick: (() => void) | undefined,\n buttonProps: React.ComponentProps<typeof Button>,\n): React.ReactNode | null {\n if (slot) return slot;\n if (label) {\n return (\n <Button onClick={onClick} {...buttonProps}>\n {label}\n </Button>\n );\n }\n return null;\n}\n\nfunction VipEarnContent({\n icon,\n title,\n description,\n showActions,\n primarySlot,\n primaryLabel,\n primaryOnClick,\n}: Pick<\n SnackbarProps,\n | \"icon\"\n | \"title\"\n | \"description\"\n | \"showActions\"\n | \"primarySlot\"\n | \"primaryLabel\"\n | \"primaryOnClick\"\n>) {\n const primary = resolveCtaSlot(primarySlot, primaryLabel, primaryOnClick, {\n variant: \"text\",\n size: \"24\",\n });\n\n return (\n <>\n {icon && (\n <span className=\"flex shrink-0\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <div className=\"flex min-w-0 flex-1 flex-col gap-4\">\n <div className=\"flex flex-col\">\n {title && <p className=\"typography-body-1-semibold text-body-100 leading-6\">{title}</p>}\n {description && <p className=\"typography-body-2-regular text-body-200\">{description}</p>}\n </div>\n {showActions && primary && <div className=\"self-start\">{primary}</div>}\n </div>\n </>\n );\n}\n\nfunction WelcomeContent({\n title,\n description,\n showActions,\n primarySlot,\n primaryLabel,\n primaryOnClick,\n secondarySlot,\n secondaryLabel,\n secondaryOnClick,\n}: Pick<\n SnackbarProps,\n | \"title\"\n | \"description\"\n | \"showActions\"\n | \"primarySlot\"\n | \"primaryLabel\"\n | \"primaryOnClick\"\n | \"secondarySlot\"\n | \"secondaryLabel\"\n | \"secondaryOnClick\"\n>) {\n const primary = resolveCtaSlot(primarySlot, primaryLabel, primaryOnClick, {\n variant: \"primary\",\n });\n const secondary = resolveCtaSlot(secondarySlot, secondaryLabel, secondaryOnClick, {\n variant: \"secondary\",\n });\n\n return (\n <>\n <div className=\"flex flex-col items-center gap-2 px-8 text-center text-body-100\">\n {title && <p className=\"typography-heading-4 text-body-100\">{title}</p>}\n {description && <p className=\"typography-body-2-regular text-body-200\">{description}</p>}\n </div>\n {showActions && (primary || secondary) && (\n <div className=\"flex w-full flex-col gap-4 px-8 sm:flex-row sm:*:flex-1\">\n {secondary}\n {primary}\n </div>\n )}\n </>\n );\n}\n\nfunction DefaultContent({\n children,\n showActions,\n primarySlot,\n primaryLabel,\n primaryOnClick,\n secondarySlot,\n secondaryLabel,\n secondaryOnClick,\n}: Pick<\n SnackbarProps,\n | \"children\"\n | \"showActions\"\n | \"primarySlot\"\n | \"primaryLabel\"\n | \"primaryOnClick\"\n | \"secondarySlot\"\n | \"secondaryLabel\"\n | \"secondaryOnClick\"\n>) {\n const primary = resolveCtaSlot(primarySlot, primaryLabel, primaryOnClick, {\n variant: \"primary\",\n size: \"40\",\n });\n const secondary = resolveCtaSlot(secondarySlot, secondaryLabel, secondaryOnClick, {\n variant: \"tertiary\",\n size: \"40\",\n });\n\n return (\n <>\n <div className=\"typography-body-1-medium flex min-w-0 flex-1 items-center self-stretch text-body-100\">\n {children}\n </div>\n {showActions && (primary || secondary) && (\n <div className=\"flex shrink-0 items-start gap-2\">\n {primary}\n {secondary}\n </div>\n )}\n </>\n );\n}\n\n/**\n * A prominent inline message with optional title, description, action buttons,\n * and close control. Supports three layout variants: `default`, `vipEarn`, and\n * `welcome`.\n *\n * @example\n * ```tsx\n * <Snackbar\n * variant=\"default\"\n * primaryLabel=\"Undo\"\n * primaryOnClick={undo}\n * closable\n * onClose={dismiss}\n * >\n * Item deleted\n * </Snackbar>\n * ```\n */\nexport const Snackbar = React.forwardRef<HTMLDivElement, SnackbarProps>(\n (\n {\n className,\n variant = \"default\",\n icon,\n title,\n description,\n showActions = true,\n primaryLabel,\n primaryOnClick,\n primarySlot,\n secondaryLabel,\n secondaryOnClick,\n secondarySlot,\n closable = false,\n onClose,\n closeLabel,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n /* biome-ignore lint/a11y/useSemanticElements: output cannot contain div children; browsers would break the wrapper. */\n <div\n ref={ref}\n role=\"status\"\n data-testid=\"snackbar\"\n className={cn(\n \"flex gap-4 rounded-2xl\",\n (variant === \"default\" || variant === \"vipEarn\") &&\n \"border border-neutral-50 bg-background-200 p-4 backdrop-blur-md\",\n variant === \"default\" && \"flex-wrap items-start\",\n variant === \"vipEarn\" && \"items-start\",\n variant === \"welcome\" &&\n \"relative flex-col items-center bg-background-inverse-solid py-6\",\n className,\n )}\n {...props}\n >\n {variant === \"vipEarn\" && (\n <VipEarnContent\n icon={icon}\n title={title}\n description={description}\n showActions={showActions}\n primarySlot={primarySlot}\n primaryLabel={primaryLabel}\n primaryOnClick={primaryOnClick}\n />\n )}\n {variant === \"welcome\" && (\n <WelcomeContent\n title={title}\n description={description}\n showActions={showActions}\n primarySlot={primarySlot}\n primaryLabel={primaryLabel}\n primaryOnClick={primaryOnClick}\n secondarySlot={secondarySlot}\n secondaryLabel={secondaryLabel}\n secondaryOnClick={secondaryOnClick}\n />\n )}\n {variant === \"default\" && (\n <DefaultContent\n showActions={showActions}\n primarySlot={primarySlot}\n primaryLabel={primaryLabel}\n primaryOnClick={primaryOnClick}\n secondarySlot={secondarySlot}\n secondaryLabel={secondaryLabel}\n secondaryOnClick={secondaryOnClick}\n >\n {children}\n </DefaultContent>\n )}\n {closable && (\n <CloseButton\n onClose={onClose}\n closeLabel={closeLabel}\n className={variant === \"welcome\" ? \"absolute top-2 right-2\" : undefined}\n />\n )}\n </div>\n );\n },\n);\n\nSnackbar.displayName = \"Snackbar\";\n"],"names":["jsx","IconButton","CrossIcon","cn","Button","jsxs","Fragment","React"],"mappings":"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"}
1
+ {"version":3,"file":"Snackbar.cjs","sources":["../../../../src/components/Snackbar/Snackbar.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Button } from \"../Button/Button\";\nimport { IconButton } from \"../IconButton/IconButton\";\nimport { CrossIcon } from \"../Icons/CrossIcon\";\n\n/** Layout variant of the snackbar. */\nexport type SnackbarVariant = \"default\" | \"vipEarn\" | \"welcome\";\n\nexport interface SnackbarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Layout variant of the snackbar. @default \"default\" */\n variant?: SnackbarVariant;\n /** Icon element displayed at the leading edge (used by the `vipEarn` variant). */\n icon?: React.ReactNode;\n /** Title content. */\n title?: React.ReactNode;\n /** Descriptive body text. */\n description?: React.ReactNode;\n /** Whether to show primary/secondary action buttons. @default true */\n showActions?: boolean;\n /** Primary CTA label — renders a default {@link Button}. */\n primaryLabel?: string;\n /** Click handler for the primary CTA (used together with `primaryLabel`). */\n primaryOnClick?: () => void;\n /** Custom element rendered as the primary CTA. Overrides `primaryLabel` / `primaryOnClick`. */\n primarySlot?: React.ReactNode;\n /** Secondary CTA label — renders a default {@link Button}. */\n secondaryLabel?: string;\n /** Click handler for the secondary CTA (used together with `secondaryLabel`). */\n secondaryOnClick?: () => void;\n /** Custom element rendered as the secondary CTA. Overrides `secondaryLabel` / `secondaryOnClick`. */\n secondarySlot?: React.ReactNode;\n /** Whether to show the close button. @default false */\n closable?: boolean;\n /** Callback fired when the close button is clicked. */\n onClose?: () => void;\n /** Accessible label for the close button. @default \"Close snackbar\" */\n closeLabel?: string;\n}\n\nfunction CloseButton({\n onClose,\n className,\n closeLabel = \"Close snackbar\",\n}: {\n onClose?: () => void;\n className?: string;\n closeLabel?: string;\n}) {\n return (\n <IconButton\n variant=\"tertiary\"\n size=\"24\"\n onClick={onClose}\n icon={<CrossIcon />}\n className={cn(\"shrink-0\", className)}\n aria-label={closeLabel}\n />\n );\n}\n\n/**\n * Resolves a CTA slot. If a custom slot is provided it takes precedence,\n * otherwise a default Button is rendered from label + onClick.\n */\nfunction resolveCtaSlot(\n slot: React.ReactNode | undefined,\n label: string | undefined,\n onClick: (() => void) | undefined,\n buttonProps: React.ComponentProps<typeof Button>,\n): React.ReactNode | null {\n if (slot) return slot;\n if (label) {\n return (\n <Button onClick={onClick} {...buttonProps}>\n {label}\n </Button>\n );\n }\n return null;\n}\n\nfunction VipEarnContent({\n icon,\n title,\n description,\n showActions,\n primarySlot,\n primaryLabel,\n primaryOnClick,\n}: Pick<\n SnackbarProps,\n | \"icon\"\n | \"title\"\n | \"description\"\n | \"showActions\"\n | \"primarySlot\"\n | \"primaryLabel\"\n | \"primaryOnClick\"\n>) {\n const primary = resolveCtaSlot(primarySlot, primaryLabel, primaryOnClick, {\n variant: \"text\",\n size: \"24\",\n });\n\n return (\n <>\n {icon && (\n <span className=\"flex shrink-0\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <div className=\"flex min-w-0 flex-1 flex-col gap-4\">\n <div className=\"flex flex-col\">\n {title && (\n <p className=\"typography-semibold-body-lg text-foreground-default leading-6\">{title}</p>\n )}\n {description && (\n <p className=\"typography-regular-body-md text-foreground-secondary\">{description}</p>\n )}\n </div>\n {showActions && primary && <div className=\"self-start\">{primary}</div>}\n </div>\n </>\n );\n}\n\nfunction WelcomeContent({\n title,\n description,\n showActions,\n primarySlot,\n primaryLabel,\n primaryOnClick,\n secondarySlot,\n secondaryLabel,\n secondaryOnClick,\n}: Pick<\n SnackbarProps,\n | \"title\"\n | \"description\"\n | \"showActions\"\n | \"primarySlot\"\n | \"primaryLabel\"\n | \"primaryOnClick\"\n | \"secondarySlot\"\n | \"secondaryLabel\"\n | \"secondaryOnClick\"\n>) {\n const primary = resolveCtaSlot(primarySlot, primaryLabel, primaryOnClick, {\n variant: \"primary\",\n });\n const secondary = resolveCtaSlot(secondarySlot, secondaryLabel, secondaryOnClick, {\n variant: \"secondary\",\n });\n\n return (\n <>\n <div className=\"flex flex-col items-center gap-2 px-8 text-center text-foreground-default\">\n {title && <p className=\"typography-bold-heading-xs text-foreground-default\">{title}</p>}\n {description && (\n <p className=\"typography-regular-body-md text-foreground-secondary\">{description}</p>\n )}\n </div>\n {showActions && (primary || secondary) && (\n <div className=\"flex w-full flex-col gap-4 px-8 sm:flex-row sm:*:flex-1\">\n {secondary}\n {primary}\n </div>\n )}\n </>\n );\n}\n\nfunction DefaultContent({\n children,\n showActions,\n primarySlot,\n primaryLabel,\n primaryOnClick,\n secondarySlot,\n secondaryLabel,\n secondaryOnClick,\n}: Pick<\n SnackbarProps,\n | \"children\"\n | \"showActions\"\n | \"primarySlot\"\n | \"primaryLabel\"\n | \"primaryOnClick\"\n | \"secondarySlot\"\n | \"secondaryLabel\"\n | \"secondaryOnClick\"\n>) {\n const primary = resolveCtaSlot(primarySlot, primaryLabel, primaryOnClick, {\n variant: \"primary\",\n size: \"40\",\n });\n const secondary = resolveCtaSlot(secondarySlot, secondaryLabel, secondaryOnClick, {\n variant: \"tertiary\",\n size: \"40\",\n });\n\n return (\n <>\n <div className=\"typography-regular-body-lg flex min-w-0 flex-1 items-center self-stretch text-foreground-default\">\n {children}\n </div>\n {showActions && (primary || secondary) && (\n <div className=\"flex shrink-0 items-start gap-2\">\n {primary}\n {secondary}\n </div>\n )}\n </>\n );\n}\n\n/**\n * A prominent inline message with optional title, description, action buttons,\n * and close control. Supports three layout variants: `default`, `vipEarn`, and\n * `welcome`.\n *\n * @example\n * ```tsx\n * <Snackbar\n * variant=\"default\"\n * primaryLabel=\"Undo\"\n * primaryOnClick={undo}\n * closable\n * onClose={dismiss}\n * >\n * Item deleted\n * </Snackbar>\n * ```\n */\nexport const Snackbar = React.forwardRef<HTMLDivElement, SnackbarProps>(\n (\n {\n className,\n variant = \"default\",\n icon,\n title,\n description,\n showActions = true,\n primaryLabel,\n primaryOnClick,\n primarySlot,\n secondaryLabel,\n secondaryOnClick,\n secondarySlot,\n closable = false,\n onClose,\n closeLabel,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n /* biome-ignore lint/a11y/useSemanticElements: output cannot contain div children; browsers would break the wrapper. */\n <div\n ref={ref}\n role=\"status\"\n data-testid=\"snackbar\"\n className={cn(\n \"flex gap-4 rounded-2xl\",\n (variant === \"default\" || variant === \"vipEarn\") &&\n \"border border-neutral-50 bg-surface-container p-4 backdrop-blur-md\",\n variant === \"default\" && \"flex-wrap items-start\",\n variant === \"vipEarn\" && \"items-start\",\n variant === \"welcome\" && \"relative flex-col items-center bg-surface-page py-6\",\n className,\n )}\n {...props}\n >\n {variant === \"vipEarn\" && (\n <VipEarnContent\n icon={icon}\n title={title}\n description={description}\n showActions={showActions}\n primarySlot={primarySlot}\n primaryLabel={primaryLabel}\n primaryOnClick={primaryOnClick}\n />\n )}\n {variant === \"welcome\" && (\n <WelcomeContent\n title={title}\n description={description}\n showActions={showActions}\n primarySlot={primarySlot}\n primaryLabel={primaryLabel}\n primaryOnClick={primaryOnClick}\n secondarySlot={secondarySlot}\n secondaryLabel={secondaryLabel}\n secondaryOnClick={secondaryOnClick}\n />\n )}\n {variant === \"default\" && (\n <DefaultContent\n showActions={showActions}\n primarySlot={primarySlot}\n primaryLabel={primaryLabel}\n primaryOnClick={primaryOnClick}\n secondarySlot={secondarySlot}\n secondaryLabel={secondaryLabel}\n secondaryOnClick={secondaryOnClick}\n >\n {children}\n </DefaultContent>\n )}\n {closable && (\n <CloseButton\n onClose={onClose}\n closeLabel={closeLabel}\n className={variant === \"welcome\" ? \"absolute top-2 right-2\" : undefined}\n />\n )}\n </div>\n );\n },\n);\n\nSnackbar.displayName = \"Snackbar\";\n"],"names":["jsx","IconButton","CrossIcon","cn","Button","jsxs","Fragment","React"],"mappings":"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"}
@@ -32,7 +32,7 @@ const Switch = React__namespace.forwardRef(({ className, size = "default", ...pr
32
32
  className: cn.cn(
33
33
  "inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors duration-150",
34
34
  "focus-visible:shadow-focus-ring focus-visible:outline-none",
35
- "data-[state=checked]:border-neutral-200 data-[state=checked]:bg-brand-green-500",
35
+ "data-[state=checked]:border-neutral-200 data-[state=checked]:bg-brand-accent-default",
36
36
  "data-[state=unchecked]:bg-neutral-400",
37
37
  "not-disabled:active:opacity-80",
38
38
  "disabled:cursor-not-allowed disabled:opacity-50",
@@ -45,7 +45,7 @@ const Switch = React__namespace.forwardRef(({ className, size = "default", ...pr
45
45
  SwitchPrimitive__namespace.Thumb,
46
46
  {
47
47
  className: cn.cn(
48
- "pointer-events-none rounded-full bg-body-white-solid-constant shadow-sm transition-transform duration-150 dark:bg-body-black-solid-constant",
48
+ "pointer-events-none rounded-full bg-surface-page shadow-sm transition-transform duration-150",
49
49
  thumbSizeClass
50
50
  )
51
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.cjs","sources":["../../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n/** Size variant of the switch toggle. */\nexport type SwitchSize = \"default\" | \"small\";\n\nexport interface SwitchProps\n extends Omit<React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>, \"asChild\"> {\n /** Size variant of the switch. @default \"default\" */\n size?: SwitchSize;\n}\n\n/**\n * A toggle switch for boolean on/off states. Built on Radix UI `Switch`.\n *\n * For a labelled switch with helper text, see {@link SwitchField}.\n *\n * @example\n * ```tsx\n * <Switch checked={on} onCheckedChange={setOn} />\n * ```\n */\nexport const Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, size = \"default\", ...props }, ref) => {\n const thumbSizeClass =\n size === \"default\"\n ? \"size-4.5 translate-x-0.75 data-[state=checked]:translate-x-4.75\"\n : \"size-4 translate-x-0.5 data-[state=checked]:translate-x-4.25\";\n\n return (\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(\n \"inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors duration-150\",\n \"focus-visible:shadow-focus-ring focus-visible:outline-none\",\n \"data-[state=checked]:border-neutral-200 data-[state=checked]:bg-brand-green-500\",\n \"data-[state=unchecked]:bg-neutral-400\",\n \"not-disabled:active:opacity-80\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n size === \"default\" && \"h-6 w-10.5\",\n size === \"small\" && \"h-5 w-9\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none rounded-full bg-body-white-solid-constant shadow-sm transition-transform duration-150 dark:bg-body-black-solid-constant\",\n thumbSizeClass,\n )}\n />\n </SwitchPrimitive.Root>\n );\n});\n\nSwitch.displayName = \"Switch\";\n"],"names":["React","jsx","SwitchPrimitive","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAM,SAASA,iBAAM,WAG1B,CAAC,EAAE,WAAW,OAAO,WAAW,GAAG,MAAA,GAAS,QAAQ;AACpD,QAAM,iBACJ,SAAS,YACL,oEACA;AAEN,SACEC,2BAAAA;AAAAA,IAACC,2BAAgB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAWC,GAAAA;AAAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,aAAa;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MAEJ,UAAAF,2BAAAA;AAAAA,QAACC,2BAAgB;AAAA,QAAhB;AAAA,UACC,WAAWC,GAAAA;AAAAA,YACT;AAAA,YACA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,CAAC;AAED,OAAO,cAAc;;"}
1
+ {"version":3,"file":"Switch.cjs","sources":["../../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n/** Size variant of the switch toggle. */\nexport type SwitchSize = \"default\" | \"small\";\n\nexport interface SwitchProps\n extends Omit<React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>, \"asChild\"> {\n /** Size variant of the switch. @default \"default\" */\n size?: SwitchSize;\n}\n\n/**\n * A toggle switch for boolean on/off states. Built on Radix UI `Switch`.\n *\n * For a labelled switch with helper text, see {@link SwitchField}.\n *\n * @example\n * ```tsx\n * <Switch checked={on} onCheckedChange={setOn} />\n * ```\n */\nexport const Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(({ className, size = \"default\", ...props }, ref) => {\n const thumbSizeClass =\n size === \"default\"\n ? \"size-4.5 translate-x-0.75 data-[state=checked]:translate-x-4.75\"\n : \"size-4 translate-x-0.5 data-[state=checked]:translate-x-4.25\";\n\n return (\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(\n \"inline-flex shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors duration-150\",\n \"focus-visible:shadow-focus-ring focus-visible:outline-none\",\n \"data-[state=checked]:border-neutral-200 data-[state=checked]:bg-brand-accent-default\",\n \"data-[state=unchecked]:bg-neutral-400\",\n \"not-disabled:active:opacity-80\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n size === \"default\" && \"h-6 w-10.5\",\n size === \"small\" && \"h-5 w-9\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n \"pointer-events-none rounded-full bg-surface-page shadow-sm transition-transform duration-150\",\n thumbSizeClass,\n )}\n />\n </SwitchPrimitive.Root>\n );\n});\n\nSwitch.displayName = \"Switch\";\n"],"names":["React","jsx","SwitchPrimitive","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAM,SAASA,iBAAM,WAG1B,CAAC,EAAE,WAAW,OAAO,WAAW,GAAG,MAAA,GAAS,QAAQ;AACpD,QAAM,iBACJ,SAAS,YACL,oEACA;AAEN,SACEC,2BAAAA;AAAAA,IAACC,2BAAgB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA,WAAWC,GAAAA;AAAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,aAAa;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MAEJ,UAAAF,2BAAAA;AAAAA,QAACC,2BAAgB;AAAA,QAAhB;AAAA,UACC,WAAWC,GAAAA;AAAAA,YACT;AAAA,YACA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,CAAC;AAED,OAAO,cAAc;;"}
@@ -65,15 +65,21 @@ const SwitchField = React__namespace.forwardRef(
65
65
  {
66
66
  htmlFor: id,
67
67
  className: cn.cn(
68
- "cursor-pointer select-none text-body-100",
69
- disabled && "cursor-not-allowed text-disabled-100",
70
- size === "default" ? "typography-body-1-semibold" : "typography-body-2-semibold"
68
+ "cursor-pointer select-none text-foreground-default",
69
+ disabled && "cursor-not-allowed text-neutral-250",
70
+ size === "default" ? "typography-semibold-body-lg" : "typography-semibold-body-md"
71
71
  ),
72
72
  children: label
73
73
  }
74
74
  ),
75
75
  infoText && /* @__PURE__ */ jsxRuntime.jsx(Tooltip.TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(Tooltip.Tooltip, { children: [
76
- /* @__PURE__ */ jsxRuntime.jsx(Tooltip.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", "aria-label": infoLabel, className: "flex shrink-0 pt-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(InfoCircleIcon.InfoCircleIcon, { "aria-hidden": "true", className: "size-5 text-body-200" }) }) }),
76
+ /* @__PURE__ */ jsxRuntime.jsx(Tooltip.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", "aria-label": infoLabel, className: "flex shrink-0 pt-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
77
+ InfoCircleIcon.InfoCircleIcon,
78
+ {
79
+ "aria-hidden": "true",
80
+ className: "size-5 text-foreground-secondary"
81
+ }
82
+ ) }) }),
77
83
  /* @__PURE__ */ jsxRuntime.jsx(Tooltip.TooltipContent, { side: "bottom", children: infoText })
78
84
  ] }) })
79
85
  ] }),
@@ -82,10 +88,9 @@ const SwitchField = React__namespace.forwardRef(
82
88
  {
83
89
  id: helperTextId,
84
90
  className: cn.cn(
85
- "text-body-200",
86
- // !TODO https://linear.app/fanvue/issue/ENG-7301/swap-out-typography-tailwind-utility-classes
87
- disabled && "text-disabled-100",
88
- size === "default" ? "typography-body-2-regular" : "typography-caption-regular"
91
+ "text-foreground-secondary",
92
+ disabled && "text-neutral-250",
93
+ size === "default" ? "typography-regular-body-md" : "typography-regular-body-sm"
89
94
  ),
90
95
  children: helperText
91
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SwitchField.cjs","sources":["../../../../src/components/SwitchField/SwitchField.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { InfoCircleIcon } from \"../Icons/InfoCircleIcon\";\nimport { Switch, type SwitchSize } from \"../Switch/Switch\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../Tooltip/Tooltip\";\n\n/** Side on which the switch toggle is positioned relative to the label. */\nexport type SwitchFieldOrientation = \"right\" | \"left\";\n\nexport interface SwitchFieldProps\n extends Omit<React.ComponentPropsWithoutRef<typeof Switch>, \"size\" | \"className\"> {\n /** Side on which the switch is placed relative to the label. @default \"right\" */\n orientation?: SwitchFieldOrientation;\n /** Size variant of the switch and accompanying text. @default \"default\" */\n size?: SwitchSize;\n /** Label text displayed next to the switch. */\n label?: string;\n /** Descriptive text displayed below the label. */\n helperText?: string;\n /** Tooltip text shown when hovering the info icon next to the label. */\n infoText?: string;\n /** Accessible label for the info tooltip trigger button. Override for i18n.\n * @default \"More information\"\n */\n infoLabel?: string;\n /** Additional CSS class name for the outer wrapper. */\n className?: string;\n}\n\n/**\n * A labelled switch field with optional helper text and info tooltip. Composes\n * the {@link Switch} component with a `<label>` and description.\n *\n * @example\n * ```tsx\n * <SwitchField\n * label=\"Notifications\"\n * helperText=\"Receive push notifications\"\n * checked={enabled}\n * onCheckedChange={setEnabled}\n * />\n * ```\n */\nexport const SwitchField = React.forwardRef<React.ComponentRef<typeof Switch>, SwitchFieldProps>(\n (\n {\n className,\n orientation = \"right\",\n size = \"default\",\n label,\n helperText,\n infoText,\n infoLabel = \"More information\",\n disabled,\n id: propId,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const id = propId ?? generatedId;\n const helperTextId = helperText ? `${id}-helper` : undefined;\n\n const switchElement = (\n <Switch\n ref={ref}\n id={id}\n size={size}\n disabled={disabled}\n aria-describedby={helperTextId}\n {...props}\n />\n );\n\n const labelContent = (label || helperText) && (\n <div\n className={cn(\n \"flex min-w-0 flex-1 flex-col items-start\",\n size === \"default\" ? \"gap-1\" : \"gap-0.5\",\n )}\n >\n {label && (\n <div className=\"flex items-center gap-1\">\n <label\n htmlFor={id}\n className={cn(\n \"cursor-pointer select-none text-body-100\",\n disabled && \"cursor-not-allowed text-disabled-100\",\n size === \"default\" ? \"typography-body-1-semibold\" : \"typography-body-2-semibold\",\n )}\n >\n {label}\n </label>\n {infoText && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <button type=\"button\" aria-label={infoLabel} className=\"flex shrink-0 pt-0.5\">\n <InfoCircleIcon aria-hidden=\"true\" className=\"size-5 text-body-200\" />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{infoText}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n )}\n {helperText && (\n <span\n id={helperTextId}\n className={cn(\n \"text-body-200\", // !TODO https://linear.app/fanvue/issue/ENG-7301/swap-out-typography-tailwind-utility-classes\n disabled && \"text-disabled-100\",\n size === \"default\" ? \"typography-body-2-regular\" : \"typography-caption-regular\",\n )}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n\n return (\n <div className={cn(\"flex items-start gap-2\", disabled && \"cursor-not-allowed\", className)}>\n {orientation === \"left\" && switchElement}\n {labelContent}\n {orientation === \"right\" && switchElement}\n </div>\n );\n },\n);\n\nSwitchField.displayName = \"SwitchField\";\n"],"names":["React","jsx","Switch","jsxs","cn","TooltipProvider","Tooltip","TooltipTrigger","InfoCircleIcon","TooltipContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA2CO,MAAM,cAAcA,iBAAM;AAAA,EAC/B,CACE;AAAA,IACE;AAAA,IACA,cAAc;AAAA,IACd,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,IAAI;AAAA,IACJ,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,cAAcA,iBAAM,MAAA;AAC1B,UAAM,KAAK,UAAU;AACrB,UAAM,eAAe,aAAa,GAAG,EAAE,YAAY;AAEnD,UAAM,gBACJC,2BAAAA;AAAAA,MAACC,OAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,oBAAkB;AAAA,QACjB,GAAG;AAAA,MAAA;AAAA,IAAA;AAIR,UAAM,gBAAgB,SAAS,eAC7BC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,GAAAA;AAAAA,UACT;AAAA,UACA,SAAS,YAAY,UAAU;AAAA,QAAA;AAAA,QAGhC,UAAA;AAAA,UAAA,SACCD,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,YAAAF,2BAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAAS;AAAA,gBACT,WAAWG,GAAAA;AAAAA,kBACT;AAAA,kBACA,YAAY;AAAA,kBACZ,SAAS,YAAY,+BAA+B;AAAA,gBAAA;AAAA,gBAGrD,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAEF,YACCH,2BAAAA,IAACI,yBAAA,EACC,UAAAF,gCAACG,QAAAA,SAAA,EACC,UAAA;AAAA,cAAAL,2BAAAA,IAACM,QAAAA,kBAAe,SAAO,MACrB,yCAAC,UAAA,EAAO,MAAK,UAAS,cAAY,WAAW,WAAU,wBACrD,yCAACC,eAAAA,gBAAA,EAAe,eAAY,QAAO,WAAU,wBAAuB,GACtE,EAAA,CACF;AAAA,cACAP,2BAAAA,IAACQ,QAAAA,gBAAA,EAAe,MAAK,UAAU,UAAA,SAAA,CAAS;AAAA,YAAA,EAAA,CAC1C,EAAA,CACF;AAAA,UAAA,GAEJ;AAAA,UAED,cACCR,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,IAAI;AAAA,cACJ,WAAWG,GAAAA;AAAAA,gBACT;AAAA;AAAA,gBACA,YAAY;AAAA,gBACZ,SAAS,YAAY,8BAA8B;AAAA,cAAA;AAAA,cAGpD,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAKN,WACED,gCAAC,SAAI,WAAWC,GAAAA,GAAG,0BAA0B,YAAY,sBAAsB,SAAS,GACrF,UAAA;AAAA,MAAA,gBAAgB,UAAU;AAAA,MAC1B;AAAA,MACA,gBAAgB,WAAW;AAAA,IAAA,GAC9B;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;;"}
1
+ {"version":3,"file":"SwitchField.cjs","sources":["../../../../src/components/SwitchField/SwitchField.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { InfoCircleIcon } from \"../Icons/InfoCircleIcon\";\nimport { Switch, type SwitchSize } from \"../Switch/Switch\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../Tooltip/Tooltip\";\n\n/** Side on which the switch toggle is positioned relative to the label. */\nexport type SwitchFieldOrientation = \"right\" | \"left\";\n\nexport interface SwitchFieldProps\n extends Omit<React.ComponentPropsWithoutRef<typeof Switch>, \"size\" | \"className\"> {\n /** Side on which the switch is placed relative to the label. @default \"right\" */\n orientation?: SwitchFieldOrientation;\n /** Size variant of the switch and accompanying text. @default \"default\" */\n size?: SwitchSize;\n /** Label text displayed next to the switch. */\n label?: string;\n /** Descriptive text displayed below the label. */\n helperText?: string;\n /** Tooltip text shown when hovering the info icon next to the label. */\n infoText?: string;\n /** Accessible label for the info tooltip trigger button. Override for i18n.\n * @default \"More information\"\n */\n infoLabel?: string;\n /** Additional CSS class name for the outer wrapper. */\n className?: string;\n}\n\n/**\n * A labelled switch field with optional helper text and info tooltip. Composes\n * the {@link Switch} component with a `<label>` and description.\n *\n * @example\n * ```tsx\n * <SwitchField\n * label=\"Notifications\"\n * helperText=\"Receive push notifications\"\n * checked={enabled}\n * onCheckedChange={setEnabled}\n * />\n * ```\n */\nexport const SwitchField = React.forwardRef<React.ComponentRef<typeof Switch>, SwitchFieldProps>(\n (\n {\n className,\n orientation = \"right\",\n size = \"default\",\n label,\n helperText,\n infoText,\n infoLabel = \"More information\",\n disabled,\n id: propId,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const id = propId ?? generatedId;\n const helperTextId = helperText ? `${id}-helper` : undefined;\n\n const switchElement = (\n <Switch\n ref={ref}\n id={id}\n size={size}\n disabled={disabled}\n aria-describedby={helperTextId}\n {...props}\n />\n );\n\n const labelContent = (label || helperText) && (\n <div\n className={cn(\n \"flex min-w-0 flex-1 flex-col items-start\",\n size === \"default\" ? \"gap-1\" : \"gap-0.5\",\n )}\n >\n {label && (\n <div className=\"flex items-center gap-1\">\n <label\n htmlFor={id}\n className={cn(\n \"cursor-pointer select-none text-foreground-default\",\n disabled && \"cursor-not-allowed text-neutral-250\",\n size === \"default\" ? \"typography-semibold-body-lg\" : \"typography-semibold-body-md\",\n )}\n >\n {label}\n </label>\n {infoText && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <button type=\"button\" aria-label={infoLabel} className=\"flex shrink-0 pt-0.5\">\n <InfoCircleIcon\n aria-hidden=\"true\"\n className=\"size-5 text-foreground-secondary\"\n />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{infoText}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n )}\n {helperText && (\n <span\n id={helperTextId}\n className={cn(\n \"text-foreground-secondary\",\n disabled && \"text-neutral-250\",\n size === \"default\" ? \"typography-regular-body-md\" : \"typography-regular-body-sm\",\n )}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n\n return (\n <div className={cn(\"flex items-start gap-2\", disabled && \"cursor-not-allowed\", className)}>\n {orientation === \"left\" && switchElement}\n {labelContent}\n {orientation === \"right\" && switchElement}\n </div>\n );\n },\n);\n\nSwitchField.displayName = \"SwitchField\";\n"],"names":["React","jsx","Switch","jsxs","cn","TooltipProvider","Tooltip","TooltipTrigger","InfoCircleIcon","TooltipContent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA2CO,MAAM,cAAcA,iBAAM;AAAA,EAC/B,CACE;AAAA,IACE;AAAA,IACA,cAAc;AAAA,IACd,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,IAAI;AAAA,IACJ,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,cAAcA,iBAAM,MAAA;AAC1B,UAAM,KAAK,UAAU;AACrB,UAAM,eAAe,aAAa,GAAG,EAAE,YAAY;AAEnD,UAAM,gBACJC,2BAAAA;AAAAA,MAACC,OAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,oBAAkB;AAAA,QACjB,GAAG;AAAA,MAAA;AAAA,IAAA;AAIR,UAAM,gBAAgB,SAAS,eAC7BC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWC,GAAAA;AAAAA,UACT;AAAA,UACA,SAAS,YAAY,UAAU;AAAA,QAAA;AAAA,QAGhC,UAAA;AAAA,UAAA,SACCD,2BAAAA,KAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,YAAAF,2BAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAAS;AAAA,gBACT,WAAWG,GAAAA;AAAAA,kBACT;AAAA,kBACA,YAAY;AAAA,kBACZ,SAAS,YAAY,gCAAgC;AAAA,gBAAA;AAAA,gBAGtD,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAEF,YACCH,2BAAAA,IAACI,yBAAA,EACC,UAAAF,gCAACG,QAAAA,SAAA,EACC,UAAA;AAAA,cAAAL,2BAAAA,IAACM,QAAAA,gBAAA,EAAe,SAAO,MACrB,UAAAN,2BAAAA,IAAC,UAAA,EAAO,MAAK,UAAS,cAAY,WAAW,WAAU,wBACrD,UAAAA,2BAAAA;AAAAA,gBAACO,eAAAA;AAAAA,gBAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,WAAU;AAAA,gBAAA;AAAA,cAAA,GAEd,EAAA,CACF;AAAA,cACAP,2BAAAA,IAACQ,QAAAA,gBAAA,EAAe,MAAK,UAAU,UAAA,SAAA,CAAS;AAAA,YAAA,EAAA,CAC1C,EAAA,CACF;AAAA,UAAA,GAEJ;AAAA,UAED,cACCR,2BAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,IAAI;AAAA,cACJ,WAAWG,GAAAA;AAAAA,gBACT;AAAA,gBACA,YAAY;AAAA,gBACZ,SAAS,YAAY,+BAA+B;AAAA,cAAA;AAAA,cAGrD,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAKN,WACED,gCAAC,SAAI,WAAWC,GAAAA,GAAG,0BAA0B,YAAY,sBAAsB,SAAS,GACrF,UAAA;AAAA,MAAA,gBAAgB,UAAU;AAAA,MAC1B;AAAA,MACA,gBAAgB,WAAW;AAAA,IAAA,GAC9B;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;;"}
@@ -48,7 +48,7 @@ const SwitchToggle = React__namespace.forwardRef(
48
48
  const anySelected = options.some((o) => o.value === currentValue);
49
49
  const isSecondSelected = currentValue === options[1].value;
50
50
  const buttonRefs = React__namespace.useRef([]);
51
- const sizeClass = size === "24" ? "px-2 py-1 typography-caption-semibold" : size === "32" ? "px-3 py-1.75 typography-body-2-semibold" : "h-10 px-4 py-2.25 typography-button-small";
51
+ const sizeClass = size === "24" ? "px-2 py-1 typography-semibold-body-sm" : size === "32" ? "px-3 py-1.75 typography-semibold-body-md" : "h-10 px-4 py-2.25 typography-semibold-body-lg";
52
52
  const handleSelect = (optionValue) => {
53
53
  if (disabled || optionValue === currentValue) return;
54
54
  if (!isControlled) {
@@ -81,7 +81,7 @@ const SwitchToggle = React__namespace.forwardRef(
81
81
  {
82
82
  "aria-hidden": "true",
83
83
  className: cn.cn(
84
- "absolute inset-y-1 left-1 w-[calc(50%-4px)] rounded-full border border-brand-green-500 bg-brand-green-50",
84
+ "absolute inset-y-1 left-1 w-[calc(50%-4px)] rounded-full border border-brand-accent-default bg-brand-accent-muted",
85
85
  "motion-safe:transition-transform motion-safe:duration-200 motion-safe:ease-in-out",
86
86
  isSecondSelected && "translate-x-full"
87
87
  )
@@ -105,9 +105,9 @@ const SwitchToggle = React__namespace.forwardRef(
105
105
  onClick: () => handleSelect(option.value),
106
106
  onKeyDown: (e) => handleKeyDown(e, index),
107
107
  className: cn.cn(
108
- "relative z-10 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full border border-transparent text-body-100",
108
+ "relative z-10 inline-flex shrink-0 cursor-pointer items-center justify-center rounded-full border border-transparent text-foreground-default",
109
109
  "focus-visible:shadow-focus-ring focus-visible:outline-none",
110
- "active:rounded-full active:bg-brand-green-50",
110
+ "active:rounded-full active:bg-brand-accent-muted",
111
111
  disabled && "pointer-events-none",
112
112
  sizeClass
113
113
  ),