@taiv/ui 1.15.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/dist/assets/assets.d.ts +12 -1
  2. package/dist/assets/assets.d.ts.map +1 -1
  3. package/dist/assets/assets.js +22 -16
  4. package/dist/assets/brand/taiv-favicon-dark.png +0 -0
  5. package/dist/assets/brand/taiv-favicon-light.png +0 -0
  6. package/dist/assets/brand/taiv-icon-black.svg +10 -0
  7. package/dist/assets/brand/taiv-icon-dark.svg +17 -0
  8. package/dist/assets/brand/taiv-icon-white.svg +17 -0
  9. package/dist/assets/brand/taiv-logo-black.svg +16 -0
  10. package/dist/assets/brand/taiv-logo-dark.svg +23 -0
  11. package/dist/assets/brand/taiv-logo-old.svg +1 -0
  12. package/dist/assets/brand/taiv-logo-purple.svg +16 -0
  13. package/dist/assets/brand/taiv-logo-white.svg +23 -0
  14. package/dist/assets/icons.d.ts +1 -1
  15. package/dist/assets/icons.d.ts.map +1 -1
  16. package/dist/assets/icons.js +57 -53
  17. package/dist/assets/index.d.ts +3 -0
  18. package/dist/assets/index.d.ts.map +1 -0
  19. package/dist/assets/index.js +2 -0
  20. package/dist/components/Data/BigCalendar/BigCalendar.d.ts +26 -0
  21. package/dist/components/Data/BigCalendar/BigCalendar.d.ts.map +1 -0
  22. package/dist/components/Data/BigCalendar/BigCalendar.js +54 -0
  23. package/dist/components/Data/BigCalendar/BigCalendar.stories.d.ts +8 -0
  24. package/dist/components/Data/BigCalendar/BigCalendar.stories.d.ts.map +1 -0
  25. package/dist/components/Data/BigCalendar/BigCalendar.stories.js +77 -0
  26. package/dist/components/Data/Calendar/Calendar.d.ts +102 -0
  27. package/dist/components/Data/Calendar/Calendar.d.ts.map +1 -0
  28. package/dist/components/Data/Calendar/Calendar.js +671 -0
  29. package/dist/components/Data/Calendar/Calendar.stories.d.ts +10 -0
  30. package/dist/components/Data/Calendar/Calendar.stories.d.ts.map +1 -0
  31. package/dist/components/Data/Calendar/Calendar.stories.js +87 -0
  32. package/dist/components/Data/MediaPill/MediaPill.d.ts +27 -0
  33. package/dist/components/Data/MediaPill/MediaPill.d.ts.map +1 -0
  34. package/dist/components/Data/MediaPill/MediaPill.js +53 -0
  35. package/dist/components/Data/MediaPill/MediaPill.stories.d.ts +10 -0
  36. package/dist/components/Data/MediaPill/MediaPill.stories.d.ts.map +1 -0
  37. package/dist/components/Data/MediaPill/MediaPill.stories.js +51 -0
  38. package/dist/components/Info/Avatar/Avatar.d.ts +9 -0
  39. package/dist/components/Info/Avatar/Avatar.d.ts.map +1 -0
  40. package/dist/components/Info/Avatar/Avatar.js +36 -0
  41. package/dist/components/Info/Avatar/Avatar.stories.d.ts +9 -0
  42. package/dist/components/Info/Avatar/Avatar.stories.d.ts.map +1 -0
  43. package/dist/components/Info/Avatar/Avatar.stories.js +78 -0
  44. package/dist/components/Info/Badge/Badge.stories.d.ts.map +1 -1
  45. package/dist/components/Info/Badge/Badge.stories.js +21 -6
  46. package/dist/components/Info/Badge/sizes.d.ts +10 -10
  47. package/dist/components/Info/Badge/sizes.js +16 -16
  48. package/dist/components/Info/Badge/variants.d.ts +4 -4
  49. package/dist/components/Info/Badge/variants.d.ts.map +1 -1
  50. package/dist/components/Info/Badge/variants.js +26 -13
  51. package/dist/components/Info/Drawer/Drawer.d.ts +24 -0
  52. package/dist/components/Info/Drawer/Drawer.d.ts.map +1 -0
  53. package/dist/components/Info/Drawer/Drawer.js +44 -0
  54. package/dist/components/Info/Drawer/Drawer.stories.d.ts +10 -0
  55. package/dist/components/Info/Drawer/Drawer.stories.d.ts.map +1 -0
  56. package/dist/components/Info/Drawer/Drawer.stories.js +47 -0
  57. package/dist/components/Info/HoverCard/HoverCard.d.ts +16 -0
  58. package/dist/components/Info/HoverCard/HoverCard.d.ts.map +1 -0
  59. package/dist/components/Info/HoverCard/HoverCard.js +26 -0
  60. package/dist/components/Info/HoverCard/HoverCard.stories.d.ts +11 -0
  61. package/dist/components/Info/HoverCard/HoverCard.stories.d.ts.map +1 -0
  62. package/dist/components/Info/HoverCard/HoverCard.stories.js +86 -0
  63. package/dist/components/Info/HoverCard/HoverCardMenuItem.d.ts +12 -0
  64. package/dist/components/Info/HoverCard/HoverCardMenuItem.d.ts.map +1 -0
  65. package/dist/components/Info/HoverCard/HoverCardMenuItem.js +22 -0
  66. package/dist/components/Info/Indicator/Indicator.d.ts +3 -0
  67. package/dist/components/Info/Indicator/Indicator.d.ts.map +1 -0
  68. package/dist/components/Info/Indicator/Indicator.js +1 -0
  69. package/dist/components/Info/Indicator/Indicator.stories.d.ts +11 -0
  70. package/dist/components/Info/Indicator/Indicator.stories.d.ts.map +1 -0
  71. package/dist/components/Info/Indicator/Indicator.stories.js +123 -0
  72. package/dist/components/Info/InfoCard/InfoCard.d.ts +2 -2
  73. package/dist/components/Info/InfoCard/InfoCard.d.ts.map +1 -1
  74. package/dist/components/Info/InfoCard/InfoCard.js +5 -5
  75. package/dist/components/Info/MobileDrawer/MobileDrawer.d.ts +30 -0
  76. package/dist/components/Info/MobileDrawer/MobileDrawer.d.ts.map +1 -0
  77. package/dist/components/Info/MobileDrawer/MobileDrawer.js +52 -0
  78. package/dist/components/Info/MobileDrawer/MobileDrawer.stories.d.ts +9 -0
  79. package/dist/components/Info/MobileDrawer/MobileDrawer.stories.d.ts.map +1 -0
  80. package/dist/components/Info/MobileDrawer/MobileDrawer.stories.js +38 -0
  81. package/dist/components/Info/Modals/FormModal/FormModal.d.ts +17 -1
  82. package/dist/components/Info/Modals/FormModal/FormModal.d.ts.map +1 -1
  83. package/dist/components/Info/Modals/FormModal/FormModal.js +30 -12
  84. package/dist/components/Info/Modals/FormModalV2/FormModalV2.d.ts +60 -0
  85. package/dist/components/Info/Modals/FormModalV2/FormModalV2.d.ts.map +1 -0
  86. package/dist/components/Info/Modals/FormModalV2/FormModalV2.js +96 -0
  87. package/dist/components/Info/Modals/Modal/Modal.d.ts.map +1 -1
  88. package/dist/components/Info/Modals/Modal/Modal.js +9 -1
  89. package/dist/components/Info/Modals/variants.d.ts +61 -41
  90. package/dist/components/Info/Modals/variants.d.ts.map +1 -1
  91. package/dist/components/Info/Modals/variants.js +58 -38
  92. package/dist/components/Info/Notifications/Notifications.stories.d.ts +1 -0
  93. package/dist/components/Info/Notifications/Notifications.stories.d.ts.map +1 -1
  94. package/dist/components/Info/Notifications/Notifications.stories.js +31 -0
  95. package/dist/components/Info/Notifications/variants.d.ts +25 -19
  96. package/dist/components/Info/Notifications/variants.d.ts.map +1 -1
  97. package/dist/components/Info/Notifications/variants.js +30 -24
  98. package/dist/components/Info/ResponsiveDrawer/ResponsiveDrawer.d.ts +37 -0
  99. package/dist/components/Info/ResponsiveDrawer/ResponsiveDrawer.d.ts.map +1 -0
  100. package/dist/components/Info/ResponsiveDrawer/ResponsiveDrawer.js +17 -0
  101. package/dist/components/Info/ResponsiveDrawer/ResponsiveDrawer.stories.d.ts +7 -0
  102. package/dist/components/Info/ResponsiveDrawer/ResponsiveDrawer.stories.d.ts.map +1 -0
  103. package/dist/components/Info/ResponsiveDrawer/ResponsiveDrawer.stories.js +26 -0
  104. package/dist/components/Info/Tooltips/InfoTooltip/InfoTooltip.d.ts +1 -1
  105. package/dist/components/Info/Tooltips/InfoTooltip/InfoTooltip.d.ts.map +1 -1
  106. package/dist/components/Info/Tooltips/InfoTooltip/InfoTooltip.js +9 -3
  107. package/dist/components/Info/Tooltips/Popover/Popover.d.ts +16 -0
  108. package/dist/components/Info/Tooltips/Popover/Popover.d.ts.map +1 -0
  109. package/dist/components/Info/Tooltips/Popover/Popover.js +32 -0
  110. package/dist/components/Info/Tooltips/Tooltip/Tooltip.d.ts +5 -1
  111. package/dist/components/Info/Tooltips/Tooltip/Tooltip.d.ts.map +1 -1
  112. package/dist/components/Info/Tooltips/Tooltip/Tooltip.js +10 -8
  113. package/dist/components/Inputs/Buttons/Button/Button.d.ts +3 -1
  114. package/dist/components/Inputs/Buttons/Button/Button.d.ts.map +1 -1
  115. package/dist/components/Inputs/Buttons/Button/Button.js +38 -5
  116. package/dist/components/Inputs/Buttons/Button/Button.stories.d.ts +1 -0
  117. package/dist/components/Inputs/Buttons/Button/Button.stories.d.ts.map +1 -1
  118. package/dist/components/Inputs/Buttons/Button/Button.stories.js +105 -79
  119. package/dist/components/Inputs/Buttons/IconButton/IconButton.d.ts +7 -2
  120. package/dist/components/Inputs/Buttons/IconButton/IconButton.d.ts.map +1 -1
  121. package/dist/components/Inputs/Buttons/IconButton/IconButton.js +35 -11
  122. package/dist/components/Inputs/Buttons/IconButton/IconButton.stories.d.ts +1 -0
  123. package/dist/components/Inputs/Buttons/IconButton/IconButton.stories.d.ts.map +1 -1
  124. package/dist/components/Inputs/Buttons/IconButton/IconButton.stories.js +100 -74
  125. package/dist/components/Inputs/Buttons/IconButton/sizes.d.ts +15 -0
  126. package/dist/components/Inputs/Buttons/IconButton/sizes.d.ts.map +1 -1
  127. package/dist/components/Inputs/Buttons/IconButton/sizes.js +3 -0
  128. package/dist/components/Inputs/Buttons/shared/variants.d.ts +399 -164
  129. package/dist/components/Inputs/Buttons/shared/variants.d.ts.map +1 -1
  130. package/dist/components/Inputs/Buttons/shared/variants.js +353 -143
  131. package/dist/components/Inputs/ColorPickerTrigger/ColorPickerTrigger.d.ts +40 -0
  132. package/dist/components/Inputs/ColorPickerTrigger/ColorPickerTrigger.d.ts.map +1 -0
  133. package/dist/components/Inputs/ColorPickerTrigger/ColorPickerTrigger.js +139 -0
  134. package/dist/components/Inputs/ColorPickerTrigger/ColorPickerTrigger.stories.d.ts +13 -0
  135. package/dist/components/Inputs/ColorPickerTrigger/ColorPickerTrigger.stories.d.ts.map +1 -0
  136. package/dist/components/Inputs/ColorPickerTrigger/ColorPickerTrigger.stories.js +75 -0
  137. package/dist/components/Inputs/ColorSwatch/ColorSwatch.d.ts +27 -0
  138. package/dist/components/Inputs/ColorSwatch/ColorSwatch.d.ts.map +1 -0
  139. package/dist/components/Inputs/ColorSwatch/ColorSwatch.js +46 -0
  140. package/dist/components/Inputs/Controls/DaysOfWeek/DaysOfWeek.d.ts +32 -0
  141. package/dist/components/Inputs/Controls/DaysOfWeek/DaysOfWeek.d.ts.map +1 -0
  142. package/dist/components/Inputs/Controls/DaysOfWeek/DaysOfWeek.js +92 -0
  143. package/dist/components/Inputs/Controls/SegmentedControl/SegmentedControl.d.ts +11 -8
  144. package/dist/components/Inputs/Controls/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  145. package/dist/components/Inputs/Controls/SegmentedControl/SegmentedControl.js +20 -12
  146. package/dist/components/Inputs/Controls/Toggle/Toggle.d.ts +25 -11
  147. package/dist/components/Inputs/Controls/Toggle/Toggle.d.ts.map +1 -1
  148. package/dist/components/Inputs/Controls/Toggle/Toggle.js +67 -20
  149. package/dist/components/Inputs/Controls/Toggle/Toggle.stories.d.ts +1 -0
  150. package/dist/components/Inputs/Controls/Toggle/Toggle.stories.d.ts.map +1 -1
  151. package/dist/components/Inputs/Controls/Toggle/Toggle.stories.js +86 -69
  152. package/dist/components/Inputs/Dates/DatePicker/DatePicker.d.ts.map +1 -1
  153. package/dist/components/Inputs/Dates/DatePicker/DatePicker.js +23 -7
  154. package/dist/components/Inputs/Dates/DateTimePicker/DateTimePicker.d.ts +12 -0
  155. package/dist/components/Inputs/Dates/DateTimePicker/DateTimePicker.d.ts.map +1 -0
  156. package/dist/components/Inputs/Dates/DateTimePicker/DateTimePicker.js +87 -0
  157. package/dist/components/Inputs/Dates/DateTimePicker/DateTimePicker.stories.d.ts +13 -0
  158. package/dist/components/Inputs/Dates/DateTimePicker/DateTimePicker.stories.d.ts.map +1 -0
  159. package/dist/components/Inputs/Dates/DateTimePicker/DateTimePicker.stories.js +239 -0
  160. package/dist/components/Inputs/Dates/TimeInput/TimeInput.d.ts +19 -0
  161. package/dist/components/Inputs/Dates/TimeInput/TimeInput.d.ts.map +1 -0
  162. package/dist/components/Inputs/Dates/TimeInput/TimeInput.js +51 -0
  163. package/dist/components/Inputs/Dropdowns/FontSelect/FontSelect.d.ts.map +1 -1
  164. package/dist/components/Inputs/Dropdowns/FontSelect/FontSelect.js +8 -1
  165. package/dist/components/Inputs/Dropdowns/MultiSelect/MultiSelect.d.ts +2 -2
  166. package/dist/components/Inputs/Dropdowns/MultiSelect/MultiSelect.d.ts.map +1 -1
  167. package/dist/components/Inputs/Dropdowns/MultiSelect/MultiSelect.js +76 -57
  168. package/dist/components/Inputs/Dropdowns/Select/Select.d.ts.map +1 -1
  169. package/dist/components/Inputs/Dropdowns/Select/Select.js +5 -3
  170. package/dist/components/Inputs/Dropzone/Dropzone.d.ts +23 -0
  171. package/dist/components/Inputs/Dropzone/Dropzone.d.ts.map +1 -0
  172. package/dist/components/Inputs/Dropzone/Dropzone.js +44 -0
  173. package/dist/components/Inputs/Dropzone/Dropzone.stories.d.ts +12 -0
  174. package/dist/components/Inputs/Dropzone/Dropzone.stories.d.ts.map +1 -0
  175. package/dist/components/Inputs/Dropzone/Dropzone.stories.js +114 -0
  176. package/dist/components/Inputs/TextInputs/NumberInput/NumberInput.d.ts.map +1 -1
  177. package/dist/components/Inputs/TextInputs/NumberInput/NumberInput.js +4 -1
  178. package/dist/components/Inputs/TextInputs/NumberInput/ResponsiveNumberInput.d.ts +46 -0
  179. package/dist/components/Inputs/TextInputs/NumberInput/ResponsiveNumberInput.d.ts.map +1 -0
  180. package/dist/components/Inputs/TextInputs/NumberInput/ResponsiveNumberInput.js +60 -0
  181. package/dist/components/Layout/Accordion/Accordion.d.ts +16 -0
  182. package/dist/components/Layout/Accordion/Accordion.d.ts.map +1 -0
  183. package/dist/components/Layout/Accordion/Accordion.js +63 -0
  184. package/dist/components/Layout/Accordion/Accordion.stories.d.ts +11 -0
  185. package/dist/components/Layout/Accordion/Accordion.stories.d.ts.map +1 -0
  186. package/dist/components/Layout/Accordion/Accordion.stories.js +148 -0
  187. package/dist/components/Layout/AutoGrid/AutoGrid.d.ts +20 -5
  188. package/dist/components/Layout/AutoGrid/AutoGrid.d.ts.map +1 -1
  189. package/dist/components/Layout/AutoGrid/AutoGrid.js +51 -3
  190. package/dist/components/Layout/AutoGrid/AutoGrid.stories.d.ts +1 -0
  191. package/dist/components/Layout/AutoGrid/AutoGrid.stories.d.ts.map +1 -1
  192. package/dist/components/Layout/AutoGrid/AutoGrid.stories.js +39 -29
  193. package/dist/components/Layout/BottomActionBar/BottomActionBar.d.ts +40 -0
  194. package/dist/components/Layout/BottomActionBar/BottomActionBar.d.ts.map +1 -0
  195. package/dist/components/Layout/BottomActionBar/BottomActionBar.js +79 -0
  196. package/dist/components/Layout/BottomActionBar/BottomActionBar.stories.d.ts +10 -0
  197. package/dist/components/Layout/BottomActionBar/BottomActionBar.stories.d.ts.map +1 -0
  198. package/dist/components/Layout/BottomActionBar/BottomActionBar.stories.js +102 -0
  199. package/dist/components/Layout/Card/Card.d.ts +1 -1
  200. package/dist/components/Layout/Card/Card.d.ts.map +1 -1
  201. package/dist/components/Layout/Container/Container.d.ts +3 -0
  202. package/dist/components/Layout/Container/Container.d.ts.map +1 -0
  203. package/dist/components/Layout/Container/Container.js +1 -0
  204. package/dist/components/Layout/Container/Container.stories.d.ts +8 -0
  205. package/dist/components/Layout/Container/Container.stories.d.ts.map +1 -0
  206. package/dist/components/Layout/Container/Container.stories.js +52 -0
  207. package/dist/components/Layout/DataState/DataState.d.ts +34 -0
  208. package/dist/components/Layout/DataState/DataState.d.ts.map +1 -0
  209. package/dist/components/Layout/DataState/DataState.js +22 -0
  210. package/dist/components/Layout/DataState/DataState.stories.d.ts +11 -0
  211. package/dist/components/Layout/DataState/DataState.stories.d.ts.map +1 -0
  212. package/dist/components/Layout/DataState/DataState.stories.js +38 -0
  213. package/dist/components/Layout/Divider/Divider.d.ts.map +1 -1
  214. package/dist/components/Layout/Divider/Divider.js +4 -2
  215. package/dist/components/Layout/Group/Group.d.ts +1 -1
  216. package/dist/components/Layout/Group/Group.d.ts.map +1 -1
  217. package/dist/components/Layout/Loader/Loader.d.ts +1 -1
  218. package/dist/components/Layout/Loader/Loader.d.ts.map +1 -1
  219. package/dist/components/Layout/Loader/Loader.js +3 -2
  220. package/dist/components/Layout/Navbar/Navbar.d.ts +15 -0
  221. package/dist/components/Layout/Navbar/Navbar.d.ts.map +1 -0
  222. package/dist/components/Layout/Navbar/Navbar.js +20 -0
  223. package/dist/components/Layout/Navbar/Navbar.stories.d.ts +9 -0
  224. package/dist/components/Layout/Navbar/Navbar.stories.d.ts.map +1 -0
  225. package/dist/components/Layout/Navbar/Navbar.stories.js +98 -0
  226. package/dist/components/Layout/Page/Page.d.ts +13 -0
  227. package/dist/components/Layout/Page/Page.d.ts.map +1 -0
  228. package/dist/components/Layout/Page/Page.js +13 -0
  229. package/dist/components/Layout/Pagination/Pagination.d.ts +23 -0
  230. package/dist/components/Layout/Pagination/Pagination.d.ts.map +1 -0
  231. package/dist/components/Layout/Pagination/Pagination.js +53 -0
  232. package/dist/components/Layout/Pagination/Pagination.stories.d.ts +10 -0
  233. package/dist/components/Layout/Pagination/Pagination.stories.d.ts.map +1 -0
  234. package/dist/components/Layout/Pagination/Pagination.stories.js +76 -0
  235. package/dist/components/Layout/ScrollArea/ScrollArea.d.ts +3 -0
  236. package/dist/components/Layout/ScrollArea/ScrollArea.d.ts.map +1 -0
  237. package/dist/components/Layout/ScrollArea/ScrollArea.js +1 -0
  238. package/dist/components/Layout/ScrollArea/ScrollArea.stories.d.ts +8 -0
  239. package/dist/components/Layout/ScrollArea/ScrollArea.stories.d.ts.map +1 -0
  240. package/dist/components/Layout/ScrollArea/ScrollArea.stories.js +62 -0
  241. package/dist/components/Layout/Tabs/Tabs.d.ts +16 -5
  242. package/dist/components/Layout/Tabs/Tabs.d.ts.map +1 -1
  243. package/dist/components/Layout/Tabs/Tabs.js +53 -18
  244. package/dist/components/Layout/Tabs/Tabs.stories.d.ts.map +1 -1
  245. package/dist/components/Layout/Tabs/Tabs.stories.js +39 -39
  246. package/dist/components/Layout/VirtualGrid/VirtualGrid.d.ts +63 -0
  247. package/dist/components/Layout/VirtualGrid/VirtualGrid.d.ts.map +1 -0
  248. package/dist/components/Layout/VirtualGrid/VirtualGrid.js +159 -0
  249. package/dist/components/Misc/Burger/Burger.d.ts +6 -0
  250. package/dist/components/Misc/Burger/Burger.d.ts.map +1 -0
  251. package/dist/components/Misc/Burger/Burger.js +7 -0
  252. package/dist/components/Misc/Burger/Burger.stories.d.ts +10 -0
  253. package/dist/components/Misc/Burger/Burger.stories.d.ts.map +1 -0
  254. package/dist/components/Misc/Burger/Burger.stories.js +86 -0
  255. package/dist/components/Misc/Carousel/Carousel.d.ts +32 -0
  256. package/dist/components/Misc/Carousel/Carousel.d.ts.map +1 -0
  257. package/dist/components/Misc/Carousel/Carousel.js +16 -0
  258. package/dist/components/Misc/DragHandle/DragHandle.d.ts +19 -0
  259. package/dist/components/Misc/DragHandle/DragHandle.d.ts.map +1 -0
  260. package/dist/components/Misc/DragHandle/DragHandle.js +39 -0
  261. package/dist/components/Misc/DragHandle/DragHandle.stories.d.ts +9 -0
  262. package/dist/components/Misc/DragHandle/DragHandle.stories.d.ts.map +1 -0
  263. package/dist/components/Misc/DragHandle/DragHandle.stories.js +54 -0
  264. package/dist/components/Misc/FAB/FAB.d.ts +54 -0
  265. package/dist/components/Misc/FAB/FAB.d.ts.map +1 -0
  266. package/dist/components/Misc/FAB/FAB.js +53 -0
  267. package/dist/components/Misc/FAB/FAB.stories.d.ts +10 -0
  268. package/dist/components/Misc/FAB/FAB.stories.d.ts.map +1 -0
  269. package/dist/components/Misc/FAB/FAB.stories.js +100 -0
  270. package/dist/components/Misc/FloatingToolbar/FloatingToolbar.d.ts +50 -0
  271. package/dist/components/Misc/FloatingToolbar/FloatingToolbar.d.ts.map +1 -0
  272. package/dist/components/Misc/FloatingToolbar/FloatingToolbar.js +40 -0
  273. package/dist/components/Misc/FloatingToolbar/FloatingToolbar.stories.d.ts +9 -0
  274. package/dist/components/Misc/FloatingToolbar/FloatingToolbar.stories.d.ts.map +1 -0
  275. package/dist/components/Misc/FloatingToolbar/FloatingToolbar.stories.js +53 -0
  276. package/dist/components/Misc/HoverAction/HoverAction.d.ts +50 -0
  277. package/dist/components/Misc/HoverAction/HoverAction.d.ts.map +1 -0
  278. package/dist/components/Misc/HoverAction/HoverAction.js +61 -0
  279. package/dist/components/Misc/HoverAction/HoverAction.stories.d.ts +12 -0
  280. package/dist/components/Misc/HoverAction/HoverAction.stories.d.ts.map +1 -0
  281. package/dist/components/Misc/HoverAction/HoverAction.stories.js +96 -0
  282. package/dist/components/Misc/IconBadge/IconBadge.d.ts.map +1 -1
  283. package/dist/components/Misc/IconBadge/IconBadge.js +8 -6
  284. package/dist/components/Misc/Image/Image.d.ts +3 -0
  285. package/dist/components/Misc/Image/Image.d.ts.map +1 -0
  286. package/dist/components/Misc/Image/Image.js +1 -0
  287. package/dist/components/Misc/Image/Image.stories.d.ts +11 -0
  288. package/dist/components/Misc/Image/Image.stories.d.ts.map +1 -0
  289. package/dist/components/Misc/Image/Image.stories.js +63 -0
  290. package/dist/components/Misc/Kbd/Kbd.d.ts +6 -0
  291. package/dist/components/Misc/Kbd/Kbd.d.ts.map +1 -0
  292. package/dist/components/Misc/Kbd/Kbd.js +16 -0
  293. package/dist/components/Misc/Kbd/Kbd.stories.d.ts +9 -0
  294. package/dist/components/Misc/Kbd/Kbd.stories.d.ts.map +1 -0
  295. package/dist/components/Misc/Kbd/Kbd.stories.js +52 -0
  296. package/dist/components/Misc/Menu/Menu.d.ts +17 -0
  297. package/dist/components/Misc/Menu/Menu.d.ts.map +1 -0
  298. package/dist/components/Misc/Menu/Menu.js +52 -0
  299. package/dist/components/Misc/OverflowFade/OverflowFade.d.ts +42 -0
  300. package/dist/components/Misc/OverflowFade/OverflowFade.d.ts.map +1 -0
  301. package/dist/components/Misc/OverflowFade/OverflowFade.js +110 -0
  302. package/dist/components/Misc/OverflowFade/OverflowFade.stories.d.ts +11 -0
  303. package/dist/components/Misc/OverflowFade/OverflowFade.stories.d.ts.map +1 -0
  304. package/dist/components/Misc/OverflowFade/OverflowFade.stories.js +112 -0
  305. package/dist/components/Misc/Picker/Picker.d.ts +62 -0
  306. package/dist/components/Misc/Picker/Picker.d.ts.map +1 -0
  307. package/dist/components/Misc/Picker/Picker.js +111 -0
  308. package/dist/components/Misc/Picker/Picker.stories.d.ts +14 -0
  309. package/dist/components/Misc/Picker/Picker.stories.d.ts.map +1 -0
  310. package/dist/components/Misc/Picker/Picker.stories.js +154 -0
  311. package/dist/components/Misc/SelectableObject/SelectableObject.d.ts +38 -0
  312. package/dist/components/Misc/SelectableObject/SelectableObject.d.ts.map +1 -0
  313. package/dist/components/Misc/SelectableObject/SelectableObject.js +70 -0
  314. package/dist/components/Misc/SelectableObject/SelectableObject.stories.d.ts +11 -0
  315. package/dist/components/Misc/SelectableObject/SelectableObject.stories.d.ts.map +1 -0
  316. package/dist/components/Misc/SelectableObject/SelectableObject.stories.js +84 -0
  317. package/dist/components/Misc/SelectionToolbar/SelectionToolbar.d.ts +26 -0
  318. package/dist/components/Misc/SelectionToolbar/SelectionToolbar.d.ts.map +1 -0
  319. package/dist/components/Misc/SelectionToolbar/SelectionToolbar.js +41 -0
  320. package/dist/components/Misc/SelectionToolbar/SelectionToolbar.stories.d.ts +10 -0
  321. package/dist/components/Misc/SelectionToolbar/SelectionToolbar.stories.d.ts.map +1 -0
  322. package/dist/components/Misc/SelectionToolbar/SelectionToolbar.stories.js +48 -0
  323. package/dist/components/Misc/Stepper/Step.stories.d.ts +118 -118
  324. package/dist/components/Misc/Stepper/variants.d.ts +1 -1
  325. package/dist/components/Misc/Timeline/Timeline.d.ts +18 -0
  326. package/dist/components/Misc/Timeline/Timeline.d.ts.map +1 -0
  327. package/dist/components/Misc/Timeline/Timeline.js +38 -0
  328. package/dist/components/Misc/Timeline/Timeline.stories.d.ts +8 -0
  329. package/dist/components/Misc/Timeline/Timeline.stories.d.ts.map +1 -0
  330. package/dist/components/Misc/Timeline/Timeline.stories.js +54 -0
  331. package/dist/components/Typography/InlineEditableText/InlineEditableText.d.ts +35 -0
  332. package/dist/components/Typography/InlineEditableText/InlineEditableText.d.ts.map +1 -0
  333. package/dist/components/Typography/InlineEditableText/InlineEditableText.js +112 -0
  334. package/dist/components/Typography/InlineEditableText/InlineEditableText.stories.d.ts +11 -0
  335. package/dist/components/Typography/InlineEditableText/InlineEditableText.stories.d.ts.map +1 -0
  336. package/dist/components/Typography/InlineEditableText/InlineEditableText.stories.js +48 -0
  337. package/dist/components/index.d.ts +148 -66
  338. package/dist/components/index.d.ts.map +1 -1
  339. package/dist/components/index.js +110 -68
  340. package/dist/constants/colors.d.ts +117 -91
  341. package/dist/constants/colors.d.ts.map +1 -1
  342. package/dist/constants/colors.js +56 -43
  343. package/dist/constants/font.d.ts +4 -4
  344. package/dist/constants/font.js +2 -2
  345. package/dist/hooks/index.d.ts +9 -1
  346. package/dist/hooks/index.d.ts.map +1 -1
  347. package/dist/hooks/index.js +7 -1
  348. package/dist/hooks/useConfirmationModal.d.ts.map +1 -1
  349. package/dist/hooks/useConfirmationModal.js +20 -1
  350. package/dist/hooks/useDisclosure.d.ts +11 -0
  351. package/dist/hooks/useDisclosure.d.ts.map +1 -0
  352. package/dist/hooks/useDisclosure.js +10 -0
  353. package/dist/hooks/useHeadroom.d.ts +18 -0
  354. package/dist/hooks/useHeadroom.d.ts.map +1 -0
  355. package/dist/hooks/useHeadroom.js +17 -0
  356. package/dist/hooks/useInfoModal.d.ts.map +1 -1
  357. package/dist/hooks/useInfoModal.js +13 -1
  358. package/dist/hooks/useMediaQuery.d.ts +1 -0
  359. package/dist/hooks/useMediaQuery.d.ts.map +1 -1
  360. package/dist/hooks/useMediaQuery.js +1 -0
  361. package/dist/hooks/useNotifications.d.ts +39 -7
  362. package/dist/hooks/useNotifications.d.ts.map +1 -1
  363. package/dist/hooks/useNotifications.js +108 -5
  364. package/dist/hooks/usePagination.d.ts +11 -0
  365. package/dist/hooks/usePagination.d.ts.map +1 -0
  366. package/dist/hooks/usePagination.js +2 -0
  367. package/dist/hooks/useScrollLock.d.ts +21 -0
  368. package/dist/hooks/useScrollLock.d.ts.map +1 -0
  369. package/dist/hooks/useScrollLock.js +20 -0
  370. package/dist/index.d.ts +5 -5
  371. package/dist/index.js +5 -5
  372. package/dist/styles/iosInputZoomFix.d.ts +31 -0
  373. package/dist/styles/iosInputZoomFix.d.ts.map +1 -0
  374. package/dist/styles/iosInputZoomFix.js +135 -0
  375. package/dist/utils/bytes.d.ts +10 -0
  376. package/dist/utils/bytes.d.ts.map +1 -0
  377. package/dist/utils/bytes.js +17 -0
  378. package/dist/utils/datetime.d.ts +18 -0
  379. package/dist/utils/datetime.d.ts.map +1 -0
  380. package/dist/utils/datetime.js +42 -0
  381. package/dist/utils/duration.d.ts +17 -0
  382. package/dist/utils/duration.d.ts.map +1 -0
  383. package/dist/utils/duration.js +30 -0
  384. package/dist/utils/index.d.ts +8 -2
  385. package/dist/utils/index.d.ts.map +1 -1
  386. package/dist/utils/index.js +7 -2
  387. package/dist/utils/sort.d.ts +44 -0
  388. package/dist/utils/sort.d.ts.map +1 -0
  389. package/dist/utils/sort.js +53 -0
  390. package/dist/utils/string.d.ts +22 -0
  391. package/dist/utils/string.d.ts.map +1 -0
  392. package/dist/utils/string.js +25 -0
  393. package/package.json +26 -2
@@ -1,39 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { IconDeviceFloppy, IconEdit, IconPlus, IconTrash, } from '@tabler/icons-react';
2
3
  import { useState } from 'react';
3
- import { Button } from './Button';
4
- import { Group } from '../../../Layout/Group/Group';
5
- import { IconPlus, IconEdit, IconTrash, IconDeviceFloppy } from '@tabler/icons-react';
6
4
  import { spacing } from '../../../../constants/spacing';
5
+ import { Group } from '../../../Layout/Group/Group';
6
+ import { Button } from './Button';
7
7
  const meta = {
8
- title: 'Components/Inputs/Buttons/Button',
9
- component: Button,
10
- parameters: {
11
- layout: 'centered',
12
- docs: {
13
- description: {
14
- component: "[View Mantine Docs](https://v6.mantine.dev/core/button/)\n\nThe Button component is a customizable wrapper around Mantine's Button component that provides consistent styling and behavior across your application. It extends Mantine v6's ButtonProps while adding custom variants and sizing options.",
15
- },
16
- },
17
- },
18
8
  argTypes: {
19
- size: {
20
- control: { type: 'select' },
21
- options: ['sm', 'md', 'lg'],
22
- description: "Controls the button's height, padding, and font size",
23
- table: {
24
- type: { summary: "'sm' | 'md' | 'lg'" },
25
- defaultValue: { summary: "'md'" },
26
- },
27
- },
28
- variant: {
29
- control: { type: 'select' },
30
- options: ['primary', 'secondary', 'cancel', 'success', 'warning', 'text', 'nav'],
31
- description: "Defines the button's visual style and color scheme",
32
- table: {
33
- type: { summary: "'primary' | 'secondary' | 'cancel' | 'success' | 'warning' | 'text' | 'nav'" },
34
- defaultValue: { summary: "'primary'" },
35
- },
36
- },
37
9
  children: {
38
10
  control: { type: 'text' },
39
11
  description: 'Button label or content',
@@ -41,112 +13,166 @@ const meta = {
41
13
  type: { summary: 'ReactNode' },
42
14
  },
43
15
  },
16
+ disabled: {
17
+ control: { type: 'boolean' },
18
+ description: 'Disabled state',
19
+ table: {
20
+ defaultValue: { summary: 'false' },
21
+ type: { summary: 'boolean' },
22
+ },
23
+ },
44
24
  fullWidth: {
45
25
  control: { type: 'boolean' },
46
26
  description: 'Makes the button span the full width of its container. Useful for modals, forms, etc. with a proper Grid layout',
47
27
  table: {
48
- type: { summary: 'boolean' },
49
28
  defaultValue: { summary: 'false' },
29
+ type: { summary: 'boolean' },
50
30
  },
51
31
  },
52
32
  leftIcon: {
53
33
  control: { type: 'select' },
54
- options: ['Plus', 'Edit', 'Trash', 'Save'],
34
+ description: 'Adds icon before button label - you can import any icon',
55
35
  mapping: {
56
- Plus: _jsx(IconPlus, { size: 16 }),
57
36
  Edit: _jsx(IconEdit, { size: 16 }),
58
- Trash: _jsx(IconTrash, { size: 16 }),
37
+ Plus: _jsx(IconPlus, { size: 16 }),
59
38
  Save: _jsx(IconDeviceFloppy, { size: 16 }),
39
+ Trash: _jsx(IconTrash, { size: 16 }),
60
40
  },
61
- description: 'Adds icon before button label - you can import any icon',
41
+ options: ['Plus', 'Edit', 'Trash', 'Save'],
62
42
  table: {
63
43
  type: { summary: 'ReactNode' },
64
44
  },
65
45
  },
46
+ loading: {
47
+ control: { type: 'boolean' },
48
+ description: 'Indicate loading state',
49
+ table: {
50
+ defaultValue: { summary: 'false' },
51
+ type: { summary: 'boolean' },
52
+ },
53
+ },
54
+ onClick: {
55
+ action: 'clicked',
56
+ description: 'Click handler function',
57
+ table: {
58
+ type: { summary: '() => void' },
59
+ },
60
+ },
66
61
  rightIcon: {
67
62
  control: { type: 'select' },
68
- options: ['Plus', 'Edit', 'Trash', 'Save'],
63
+ description: 'Adds icon after button label - you can import any icon',
69
64
  mapping: {
70
- Plus: _jsx(IconPlus, { size: 16 }),
71
65
  Edit: _jsx(IconEdit, { size: 16 }),
72
- Trash: _jsx(IconTrash, { size: 16 }),
66
+ Plus: _jsx(IconPlus, { size: 16 }),
73
67
  Save: _jsx(IconDeviceFloppy, { size: 16 }),
68
+ Trash: _jsx(IconTrash, { size: 16 }),
74
69
  },
75
- description: 'Adds icon after button label - you can import any icon',
70
+ options: ['Plus', 'Edit', 'Trash', 'Save'],
76
71
  table: {
77
72
  type: { summary: 'ReactNode' },
78
73
  },
79
74
  },
80
- styles: {
81
- control: { type: 'object' },
82
- description: 'Custom styles object',
83
- table: {
84
- type: { summary: 'MantineStylesObject' },
85
- },
86
- },
87
- disabled: {
75
+ shadow: {
88
76
  control: { type: 'boolean' },
89
- description: 'Disabled state',
77
+ description: 'Adds shadow to the button',
90
78
  table: {
91
- type: { summary: 'boolean' },
92
79
  defaultValue: { summary: 'false' },
80
+ type: { summary: 'boolean' },
93
81
  },
94
82
  },
95
- loading: {
96
- control: { type: 'boolean' },
97
- description: 'Indicate loading state',
83
+ size: {
84
+ control: { type: 'select' },
85
+ description: "Controls the button's height, padding, and font size",
86
+ options: ['sm', 'md', 'lg'],
98
87
  table: {
99
- type: { summary: 'boolean' },
100
- defaultValue: { summary: 'false' },
88
+ defaultValue: { summary: "'md'" },
89
+ type: { summary: "'sm' | 'md' | 'lg'" },
101
90
  },
102
91
  },
103
- onClick: {
104
- action: 'clicked',
105
- description: 'Click handler function',
92
+ styles: {
93
+ control: { type: 'object' },
94
+ description: 'Custom styles object',
106
95
  table: {
107
- type: { summary: '() => void' },
96
+ type: { summary: 'MantineStylesObject' },
108
97
  },
109
98
  },
110
99
  toggled: {
111
100
  control: { type: 'boolean' },
112
101
  description: 'Toggles the button state',
113
102
  table: {
114
- type: { summary: 'boolean' },
115
103
  defaultValue: { summary: 'false' },
116
- }
104
+ type: { summary: 'boolean' },
105
+ },
117
106
  },
118
- shadow: {
119
- control: { type: 'boolean' },
120
- description: 'Adds shadow to the button',
107
+ variant: {
108
+ control: { type: 'select' },
109
+ description: "Defines the button's visual style and color scheme. `ghost` is the variant for buttons placed on a deliberately-dark surface (e.g. a `SelectionToolbar` pill) — see the *On Dark Surface* story.",
110
+ options: [
111
+ 'primary',
112
+ 'secondary',
113
+ 'tertiary',
114
+ 'cancel',
115
+ 'success',
116
+ 'warning',
117
+ 'text',
118
+ 'nav',
119
+ 'ghost',
120
+ ],
121
121
  table: {
122
- type: { summary: 'boolean' },
123
- defaultValue: { summary: 'false' },
124
- }
125
- }
122
+ defaultValue: { summary: "'primary'" },
123
+ type: {
124
+ summary: "'primary' | 'secondary' | 'tertiary' | 'cancel' | 'success' | 'warning' | 'text' | 'nav' | 'ghost'",
125
+ },
126
+ },
127
+ },
126
128
  },
129
+ component: Button,
130
+ parameters: {
131
+ docs: {
132
+ description: {
133
+ component: "[View Mantine Docs](https://v6.mantine.dev/core/button/)\n\nThe Button component is a customizable wrapper around Mantine's Button component that provides consistent styling and behavior across your application. It extends Mantine v6's ButtonProps while adding custom variants and sizing options.",
134
+ },
135
+ },
136
+ layout: 'centered',
137
+ },
138
+ title: 'Components/Inputs/Buttons/Button',
127
139
  };
128
140
  export default meta;
129
141
  export const Default = {
130
142
  args: {
131
143
  children: 'Button',
132
- size: 'md',
133
- variant: 'primary',
134
144
  disabled: false,
135
- loading: false,
136
145
  fullWidth: false,
137
- shadow: false,
138
- toggled: false,
139
146
  leftIcon: undefined,
147
+ loading: false,
148
+ onClick: () => { },
140
149
  rightIcon: undefined,
150
+ shadow: false,
151
+ size: 'md',
141
152
  styles: undefined,
142
- onClick: () => { },
153
+ toggled: false,
154
+ variant: 'primary',
143
155
  },
144
156
  };
145
157
  export const Variants = {
146
- render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(Button, { variant: "primary", children: "Primary" }), _jsx(Button, { variant: "secondary", children: "Secondary" }), _jsx(Button, { variant: "cancel", children: "Cancel" }), _jsx(Button, { variant: "success", children: "Success" }), _jsx(Button, { variant: "warning", children: "Warning" }), _jsx(Button, { variant: "text", children: "Text" })] })),
158
+ render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(Button, { variant: 'primary', children: "Primary" }), _jsx(Button, { variant: 'secondary', children: "Secondary" }), _jsx(Button, { variant: 'tertiary', children: "Tertiary" }), _jsx(Button, { variant: 'cancel', children: "Cancel" }), _jsx(Button, { variant: 'success', children: "Success" }), _jsx(Button, { variant: 'warning', children: "Warning" }), _jsx(Button, { variant: 'text', children: "Text" })] })),
159
+ };
160
+ export const OnDarkSurface = {
161
+ parameters: {
162
+ docs: {
163
+ description: {
164
+ story: 'Use `variant="ghost"` for buttons on deliberately-dark surfaces (e.g. inside a dark `SelectionToolbar`). Brand-saturated variants (`success`, `cancel`, `primary`, `warning`) keep their usual styling — saturated colors read fine on either surface.',
165
+ },
166
+ },
167
+ },
168
+ render: () => (_jsx("div", { style: {
169
+ backgroundColor: '#0F172A',
170
+ borderRadius: '999px',
171
+ padding: '12px 16px',
172
+ }, children: _jsxs(Group, { gap: spacing.sm, children: [_jsx(Button, { variant: 'ghost', children: "Add to playlist" }), _jsx(Button, { leftIcon: _jsx(IconPlus, { size: 16 }), variant: 'ghost', children: "Create playlist" }), _jsx(Button, { variant: 'success', children: "Add to Shuffle" }), _jsx(Button, { leftIcon: _jsx(IconTrash, { size: 16 }), variant: 'cancel', children: "Delete" })] }) })),
147
173
  };
148
174
  export const Sizes = {
149
- render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(Button, { size: "sm", children: "Small" }), _jsx(Button, { size: "md", children: "Medium" }), _jsx(Button, { size: "lg", children: "Large" })] })),
175
+ render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(Button, { size: 'sm', children: "Small" }), _jsx(Button, { size: 'md', children: "Medium" }), _jsx(Button, { size: 'lg', children: "Large" })] })),
150
176
  };
151
177
  export const States = {
152
178
  render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(Button, { children: "Normal" }), _jsx(Button, { disabled: true, children: "Disabled" }), _jsx(Button, { loading: true, children: "Loading" })] })),
@@ -154,7 +180,7 @@ export const States = {
154
180
  export const TogglingButtons = {
155
181
  render: () => {
156
182
  const [toggled, setToggled] = useState(false);
157
- return (_jsx(Group, { gap: spacing.lg, children: _jsx(Button, { toggled: toggled, onClick: () => setToggled(!toggled), children: toggled ? 'On' : 'Off' }) }));
183
+ return (_jsx(Group, { gap: spacing.lg, children: _jsx(Button, { onClick: () => setToggled(!toggled), toggled: toggled, children: toggled ? 'On' : 'Off' }) }));
158
184
  },
159
185
  };
160
186
  export const CustomStyles = {
@@ -162,11 +188,11 @@ export const CustomStyles = {
162
188
  children: 'Custom Button',
163
189
  styles: {
164
190
  root: {
165
- borderRadius: '20px',
166
- background: 'linear-gradient(45deg, #ff6b6b, #ee5a24)',
167
191
  '&:hover': {
168
192
  background: 'linear-gradient(45deg, #ee5a24, #ff6b6b)',
169
193
  },
194
+ background: 'linear-gradient(45deg, #ff6b6b, #ee5a24)',
195
+ borderRadius: '20px',
170
196
  },
171
197
  },
172
198
  },
@@ -2,16 +2,21 @@ import { ReactElement } from 'react';
2
2
  import { ButtonProps as MantineButtonProps } from '@mantine/core';
3
3
  import { componentSizes } from './sizes';
4
4
  import { componentVariants as baseVariants } from '../shared/variants';
5
- export interface IconButtonProps extends Omit<MantineButtonProps, 'leftIcon' | 'rightIcon'> {
5
+ export interface IconButtonProps extends Omit<MantineButtonProps, 'leftIcon' | 'rightIcon' | 'radius'> {
6
6
  onClick?: () => void;
7
7
  size?: keyof typeof componentSizes;
8
8
  variant?: keyof typeof baseVariants;
9
9
  toggled?: boolean;
10
10
  shadow?: boolean;
11
11
  subtle?: boolean;
12
+ /**
13
+ * Border radius. Defaults to `'8px'` (rounded square). Pass `'50%'` for a
14
+ * perfect circle (used by `FAB`). Accepts any CSS length.
15
+ */
16
+ radius?: number | string;
12
17
  children?: ReactElement<{
13
18
  size?: number;
14
19
  }>;
15
20
  }
16
- export declare const IconButton: ({ onClick, size, variant, toggled, shadow, subtle, styles, children, ...props }: IconButtonProps) => import("react/jsx-runtime").JSX.Element;
21
+ export declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
17
22
  //# sourceMappingURL=IconButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../../../../src/components/Inputs/Buttons/IconButton/IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAA2B,WAAW,IAAI,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,iBAAiB,IAAI,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AAGvF,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,WAAW,CAAC;IACzF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,OAAO,cAAc,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,OAAO,YAAY,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5C;AAED,eAAO,MAAM,UAAU,GAAI,iFAA4H,eAAe,4CA8DrK,CAAC"}
1
+ {"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../../../../src/components/Inputs/Buttons/IconButton/IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,OAAO,CAAC;AACjD,OAAO,EAA2B,WAAW,IAAI,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAe,iBAAiB,IAAI,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AAGpG,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IACpG,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,OAAO,cAAc,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,OAAO,YAAY,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,YAAY,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5C;AAED,eAAO,MAAM,UAAU,+GAqFrB,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from 'react';
2
3
  import { Button as MantineButton } from '@mantine/core';
3
4
  import { componentSizes } from './sizes';
4
- import { componentVariants as baseVariants, subtleVariants } from '../shared/variants';
5
+ import { HOVER_MEDIA, componentVariants as baseVariants, subtleVariants } from '../shared/variants';
5
6
  import { neutral } from '../../../../constants/colors';
6
- export const IconButton = ({ onClick, size = 'md', variant = 'primary', toggled = false, shadow = false, subtle = false, styles, children, ...props }) => {
7
+ export const IconButton = forwardRef(({ onClick, size = 'md', variant = 'primary', toggled = false, shadow = false, subtle = false, radius = '8px', styles, children, ...props }, ref) => {
7
8
  const selectedVariant = baseVariants[variant];
8
9
  const selectedSize = componentSizes[size];
9
10
  const getVariantStyles = () => {
@@ -21,9 +22,11 @@ export const IconButton = ({ onClick, size = 'md', variant = 'primary', toggled
21
22
  ...subtleVariants[variant],
22
23
  border: `1px solid ${neutral[50]}`,
23
24
  background: 'white',
24
- '&:hover': {
25
- background: neutral[50],
26
- border: `1px solid ${neutral[50]}`,
25
+ [HOVER_MEDIA]: {
26
+ '&:hover': {
27
+ background: neutral[50],
28
+ border: `1px solid ${neutral[50]}`,
29
+ },
27
30
  },
28
31
  '&:active': {
29
32
  background: 'white',
@@ -37,16 +40,37 @@ export const IconButton = ({ onClick, size = 'md', variant = 'primary', toggled
37
40
  };
38
41
  const style = {
39
42
  root: {
40
- borderRadius: '8px',
43
+ // Variant colors / borders / interaction states come first.
44
+ ...getVariantStyles(),
45
+ ...getSubtleStyles(),
46
+ // IconButton's geometry contract (square button, centered icon) must
47
+ // win over variant styles. Variants like `text` set `height: 'auto'`
48
+ // and `padding: '0'` (correct for inline text Buttons, wrong for icon
49
+ // buttons), and `nav` sets `paddingLeft` + `inner.justifyContent:
50
+ // flex-start` (correct for left-aligned menu items, wrong for an
51
+ // icon-only square). Keep these overrides last so any variant works.
52
+ borderRadius: typeof radius === 'number' ? `${radius}px` : radius,
53
+ boxShadow: shadow ? '0px 4px 6px rgba(0, 0, 0, 0.1)' : 'none',
41
54
  height: `${selectedSize.borderLength}px`,
55
+ minWidth: 'unset',
42
56
  padding: selectedSize.padding,
43
57
  width: `${selectedSize.borderLength}px`,
44
- boxShadow: shadow ? '0px 4px 6px rgba(0, 0, 0, 0.1)' : 'none',
45
- ...getVariantStyles(),
46
- ...getSubtleStyles(),
58
+ '& .mantine-Button-inner': {
59
+ justifyContent: 'center',
60
+ },
61
+ // Mantine v6's Button styles only know about xs–xl; '2xl' falls back to
62
+ // default sizing, which leaves Tabler icons at their 24px default inside
63
+ // our 80px container. Explicitly size the SVG so iconSize is honored.
64
+ ...(size === '2xl' && {
65
+ '& svg': {
66
+ height: `${selectedSize.iconSize}px`,
67
+ width: `${selectedSize.iconSize}px`,
68
+ },
69
+ }),
47
70
  },
48
71
  ...styles,
49
72
  };
50
- const Button = (_jsx(MantineButton, { styles: style, size: size, onClick: onClick, loaderPosition: "center", loaderProps: { size: selectedSize.iconSize }, ...props, children: props.loading ? _jsx(_Fragment, {}) : children }));
73
+ const Button = (_jsx(MantineButton, { ref: ref, styles: style, size: size, onClick: onClick, loaderPosition: "center", loaderProps: { size: selectedSize.iconSize }, ...props, children: props.loading ? _jsx(_Fragment, {}) : children }));
51
74
  return Button;
52
- };
75
+ });
76
+ IconButton.displayName = 'IconButton';
@@ -6,6 +6,7 @@ type Story = StoryObj<typeof meta>;
6
6
  export declare const Default: Story;
7
7
  export declare const Variants: Story;
8
8
  export declare const Subtle: Story;
9
+ export declare const OnDarkSurface: Story;
9
10
  export declare const Sizes: Story;
10
11
  export declare const States: Story;
11
12
  export declare const SubtleStates: Story;
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Inputs/Buttons/IconButton/IconButton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CAsFjC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAYrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAWtB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAWpB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAQnB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KASpB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAS1B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAsE1B,CAAC"}
1
+ {"version":3,"file":"IconButton.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Inputs/Buttons/IconButton/IconButton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAsB5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,UAAU,CAsGjC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAYrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KA0BtB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KA0BpB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAiC3B,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAuBnB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAiBpB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAiB1B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAsE1B,CAAC"}
@@ -1,67 +1,32 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { IconButton } from './IconButton';
3
- import { Icon12Hours, Icon24Hours, Icon360View, IconAdjustments, IconAlertCircle, IconArrowLeft, IconArrowRight, IconArrowsMaximize, IconCaretDown, IconCheck, IconClock, IconClock2, IconHistory, IconLoader2 } from '@tabler/icons-react';
4
- import { Group } from '../../../Layout/Group/Group';
2
+ import { Icon12Hours, Icon24Hours, Icon360View, IconAdjustments, IconAlertCircle, IconArrowLeft, IconArrowRight, IconArrowsMaximize, IconCaretDown, IconCheck, IconClock, IconClock2, IconDots, IconHistory, IconLoader2, IconPlayerPlay, IconTrash, } from '@tabler/icons-react';
5
3
  import { spacing } from '../../../../constants/spacing';
4
+ import { Group } from '../../../Layout/Group/Group';
5
+ import { IconButton } from './IconButton';
6
6
  const meta = {
7
- title: 'Components/Inputs/Buttons/IconButton',
8
- component: IconButton,
9
- parameters: {
10
- layout: 'centered',
11
- docs: {
12
- description: {
13
- component: "[View Mantine Docs](https://v6.mantine.dev/core/button/)\n\nThe IconButton component is a customizable wrapper around Mantine's Button component that provides consistent styling and behavior across your application. It extends Mantine v6's ButtonProps while adding custom variants and sizing options.",
14
- },
15
- },
16
- },
17
7
  argTypes: {
18
- size: {
19
- control: { type: 'select' },
20
- options: ['sm', 'md', 'lg'],
21
- description: "Controls the button's height and padding. These values are square sizes.",
22
- table: {
23
- type: { summary: "'sm' | 'md' | 'lg'" },
24
- defaultValue: { summary: "'md'" },
25
- },
26
- },
27
- variant: {
28
- control: { type: 'select' },
29
- options: ['primary', 'secondary', 'cancel', 'success', 'warning', 'text', 'nav'],
30
- description: "Defines the button's visual style and color scheme",
31
- table: {
32
- type: { summary: "'primary' | 'secondary' | 'cancel' | 'success' | 'warning' | 'text' | 'nav'" },
33
- defaultValue: { summary: "'primary'" },
34
- },
35
- },
36
8
  children: {
37
9
  control: { type: 'object' },
38
10
  description: 'Icon to be displayed in the button',
39
11
  table: {
40
- type: { summary: 'ReactNode' },
41
12
  defaultValue: { summary: '<IconHistory />' },
42
- },
43
- },
44
- styles: {
45
- control: { type: 'object' },
46
- description: 'Custom styles object',
47
- table: {
48
- type: { summary: 'MantineStylesObject' },
13
+ type: { summary: 'ReactNode' },
49
14
  },
50
15
  },
51
16
  disabled: {
52
17
  control: { type: 'boolean' },
53
18
  description: 'Disabled state',
54
19
  table: {
55
- type: { summary: 'boolean' },
56
20
  defaultValue: { summary: 'false' },
21
+ type: { summary: 'boolean' },
57
22
  },
58
23
  },
59
24
  loading: {
60
25
  control: { type: 'boolean' },
61
26
  description: 'Indicate loading state',
62
27
  table: {
63
- type: { summary: 'boolean' },
64
28
  defaultValue: { summary: 'false' },
29
+ type: { summary: 'boolean' },
65
30
  },
66
31
  },
67
32
  onClick: {
@@ -75,70 +40,111 @@ const meta = {
75
40
  control: { type: 'boolean' },
76
41
  description: 'Adds shadow to the button',
77
42
  table: {
78
- type: { summary: 'boolean' },
79
43
  defaultValue: { summary: 'false' },
80
- }
44
+ type: { summary: 'boolean' },
45
+ },
46
+ },
47
+ size: {
48
+ control: { type: 'select' },
49
+ description: "Controls the button's height and padding. These values are square sizes.",
50
+ options: ['xs', 'sm', 'md', 'lg', 'xl', '2xl'],
51
+ table: {
52
+ defaultValue: { summary: "'md'" },
53
+ type: { summary: "'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'" },
54
+ },
55
+ },
56
+ styles: {
57
+ control: { type: 'object' },
58
+ description: 'Custom styles object',
59
+ table: {
60
+ type: { summary: 'MantineStylesObject' },
61
+ },
81
62
  },
82
63
  subtle: {
83
64
  control: { type: 'boolean' },
84
65
  description: 'Colors the icon instead of the background and reverses the color based on the variant',
85
66
  table: {
86
- type: { summary: 'boolean' },
87
67
  defaultValue: { summary: 'false' },
88
- }
89
- }
68
+ type: { summary: 'boolean' },
69
+ },
70
+ },
71
+ variant: {
72
+ control: { type: 'select' },
73
+ description: "Defines the button's visual style and color scheme. `ghost` is the variant for icon buttons placed on a deliberately-dark surface — see the *On Dark Surface* story.",
74
+ options: [
75
+ 'primary',
76
+ 'secondary',
77
+ 'tertiary',
78
+ 'cancel',
79
+ 'success',
80
+ 'warning',
81
+ 'text',
82
+ 'nav',
83
+ 'ghost',
84
+ ],
85
+ table: {
86
+ defaultValue: { summary: "'primary'" },
87
+ type: {
88
+ summary: "'primary' | 'secondary' | 'tertiary' | 'cancel' | 'success' | 'warning' | 'text' | 'nav' | 'ghost'",
89
+ },
90
+ },
91
+ },
90
92
  },
93
+ component: IconButton,
94
+ parameters: {
95
+ docs: {
96
+ description: {
97
+ component: "[View Mantine Docs](https://v6.mantine.dev/core/button/)\n\nThe IconButton component is a customizable wrapper around Mantine's Button component that provides consistent styling and behavior across your application. It extends Mantine v6's ButtonProps while adding custom variants and sizing options.",
98
+ },
99
+ },
100
+ layout: 'centered',
101
+ },
102
+ title: 'Components/Inputs/Buttons/IconButton',
91
103
  };
92
104
  export default meta;
93
105
  export const Default = {
94
106
  args: {
95
107
  children: _jsx(IconHistory, {}),
96
- size: 'md',
97
- variant: 'primary',
98
108
  disabled: false,
99
109
  loading: false,
110
+ onClick: () => { },
100
111
  shadow: false,
101
- subtle: false,
112
+ size: 'md',
102
113
  styles: {},
103
- onClick: () => { },
114
+ subtle: false,
115
+ variant: 'primary',
104
116
  },
105
117
  };
106
118
  export const Variants = {
107
- render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(IconButton, { variant: "primary", children: _jsx(Icon12Hours, {}) }), _jsx(IconButton, { variant: "secondary", children: _jsx(Icon24Hours, {}) }), _jsx(IconButton, { variant: "cancel", children: _jsx(IconClock, {}) }), _jsx(IconButton, { variant: "success", children: _jsx(IconCheck, {}) }), _jsx(IconButton, { variant: "warning", children: _jsx(IconAlertCircle, {}) }), _jsx(IconButton, { variant: "text", children: _jsx(IconClock2, {}) })] })),
119
+ render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(IconButton, { variant: 'primary', children: _jsx(Icon12Hours, {}) }), _jsx(IconButton, { variant: 'secondary', children: _jsx(Icon24Hours, {}) }), _jsx(IconButton, { variant: 'tertiary', children: _jsx(IconAdjustments, {}) }), _jsx(IconButton, { variant: 'cancel', children: _jsx(IconClock, {}) }), _jsx(IconButton, { variant: 'success', children: _jsx(IconCheck, {}) }), _jsx(IconButton, { variant: 'warning', children: _jsx(IconAlertCircle, {}) }), _jsx(IconButton, { variant: 'text', children: _jsx(IconClock2, {}) })] })),
108
120
  };
109
121
  export const Subtle = {
110
- render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(IconButton, { variant: "primary", subtle: true, children: _jsx(Icon12Hours, {}) }), _jsx(IconButton, { variant: "secondary", subtle: true, children: _jsx(Icon24Hours, {}) }), _jsx(IconButton, { variant: "cancel", subtle: true, children: _jsx(IconClock, {}) }), _jsx(IconButton, { variant: "success", subtle: true, children: _jsx(IconCheck, {}) }), _jsx(IconButton, { variant: "warning", subtle: true, children: _jsx(IconAlertCircle, {}) }), _jsx(IconButton, { variant: "text", subtle: true, children: _jsx(IconClock2, {}) })] })),
122
+ render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(IconButton, { subtle: true, variant: 'primary', children: _jsx(Icon12Hours, {}) }), _jsx(IconButton, { subtle: true, variant: 'secondary', children: _jsx(Icon24Hours, {}) }), _jsx(IconButton, { subtle: true, variant: 'tertiary', children: _jsx(IconAdjustments, {}) }), _jsx(IconButton, { subtle: true, variant: 'cancel', children: _jsx(IconClock, {}) }), _jsx(IconButton, { subtle: true, variant: 'success', children: _jsx(IconCheck, {}) }), _jsx(IconButton, { subtle: true, variant: 'warning', children: _jsx(IconAlertCircle, {}) }), _jsx(IconButton, { subtle: true, variant: 'text', children: _jsx(IconClock2, {}) })] })),
123
+ };
124
+ export const OnDarkSurface = {
125
+ parameters: {
126
+ docs: {
127
+ description: {
128
+ story: 'Use `variant="ghost"` for icon buttons on deliberately-dark surfaces. Brand-saturated variants (`success`, `cancel`, `primary`, `warning`) keep their usual styling — saturated colors read fine on either surface.',
129
+ },
130
+ },
131
+ },
132
+ render: () => (_jsx("div", { style: {
133
+ backgroundColor: '#0F172A',
134
+ borderRadius: '999px',
135
+ padding: '12px 16px',
136
+ }, children: _jsxs(Group, { gap: spacing.sm, children: [_jsx(IconButton, { variant: 'ghost', children: _jsx(IconPlayerPlay, {}) }), _jsx(IconButton, { variant: 'ghost', children: _jsx(IconDots, {}) }), _jsx(IconButton, { variant: 'success', children: _jsx(IconCheck, {}) }), _jsx(IconButton, { variant: 'cancel', children: _jsx(IconTrash, {}) })] }) })),
111
137
  };
112
138
  export const Sizes = {
113
- render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(IconButton, { size: "sm", children: _jsx(Icon360View, {}) }), _jsx(IconButton, { size: "md", children: _jsx(IconAdjustments, {}) }), _jsx(IconButton, { size: "lg", children: _jsx(IconArrowsMaximize, {}) })] })),
139
+ render: () => (_jsxs(Group, { align: 'center', gap: spacing.lg, children: [_jsx(IconButton, { size: 'xs', children: _jsx(Icon360View, {}) }), _jsx(IconButton, { size: 'sm', children: _jsx(Icon360View, {}) }), _jsx(IconButton, { size: 'md', children: _jsx(IconAdjustments, {}) }), _jsx(IconButton, { size: 'lg', children: _jsx(IconArrowsMaximize, {}) }), _jsx(IconButton, { size: 'xl', children: _jsx(IconArrowsMaximize, {}) }), _jsx(IconButton, { size: '2xl', children: _jsx(IconArrowsMaximize, {}) })] })),
114
140
  };
115
141
  export const States = {
116
142
  render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(IconButton, { children: _jsx(IconArrowLeft, {}) }), _jsx(IconButton, { disabled: true, children: _jsx(IconCaretDown, {}) }), _jsx(IconButton, { loading: true, children: _jsx(IconLoader2, {}) }), _jsx(IconButton, { shadow: true, children: _jsx(IconArrowLeft, {}) })] })),
117
143
  };
118
144
  export const SubtleStates = {
119
- render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(IconButton, { subtle: true, children: _jsx(IconArrowLeft, {}) }), _jsx(IconButton, { subtle: true, disabled: true, children: _jsx(IconCaretDown, {}) }), _jsx(IconButton, { subtle: true, loading: true, children: _jsx(IconLoader2, {}) }), _jsx(IconButton, { subtle: true, shadow: true, children: _jsx(IconArrowLeft, {}) })] })),
145
+ render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(IconButton, { subtle: true, children: _jsx(IconArrowLeft, {}) }), _jsx(IconButton, { disabled: true, subtle: true, children: _jsx(IconCaretDown, {}) }), _jsx(IconButton, { loading: true, subtle: true, children: _jsx(IconLoader2, {}) }), _jsx(IconButton, { shadow: true, subtle: true, children: _jsx(IconArrowLeft, {}) })] })),
120
146
  };
121
147
  export const CustomStyles = {
122
- render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(IconButton, { styles: {
123
- root: {
124
- borderRadius: '20px',
125
- background: 'linear-gradient(45deg, #ff6b6b, #ee5a24)',
126
- '&:hover': {
127
- background: 'linear-gradient(45deg, #ee5a24, #ff6b6b)',
128
- },
129
- },
130
- }, children: _jsx(IconArrowLeft, {}) }), _jsx(IconButton, { styles: {
131
- root: {
132
- borderRadius: '0px',
133
- background: 'black',
134
- color: 'white',
135
- border: '2px solid white',
136
- '&:hover': {
137
- background: 'white',
138
- color: 'black',
139
- },
140
- },
141
- }, children: _jsx(IconArrowRight, {}) })] })),
142
148
  parameters: {
143
149
  docs: {
144
150
  source: {
@@ -175,4 +181,24 @@ export const CustomStyles = {
175
181
  },
176
182
  },
177
183
  },
184
+ render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(IconButton, { styles: {
185
+ root: {
186
+ '&:hover': {
187
+ background: 'linear-gradient(45deg, #ee5a24, #ff6b6b)',
188
+ },
189
+ background: 'linear-gradient(45deg, #ff6b6b, #ee5a24)',
190
+ borderRadius: '20px',
191
+ },
192
+ }, children: _jsx(IconArrowLeft, {}) }), _jsx(IconButton, { styles: {
193
+ root: {
194
+ '&:hover': {
195
+ background: 'white',
196
+ color: 'black',
197
+ },
198
+ background: 'black',
199
+ border: '2px solid white',
200
+ borderRadius: '0px',
201
+ color: 'white',
202
+ },
203
+ }, children: _jsx(IconArrowRight, {}) })] })),
178
204
  };