@taiv/ui 1.15.0 → 2.1.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 (483) 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 +92 -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/Cards/StatsCard/StatsCard.d.ts +1 -1
  33. package/dist/components/Data/Cards/StatsCard/StatsCard.d.ts.map +1 -1
  34. package/dist/components/Data/CheckboxTable/CheckboxTable.d.ts +1 -1
  35. package/dist/components/Data/CheckboxTable/CheckboxTable.d.ts.map +1 -1
  36. package/dist/components/Data/MediaPill/MediaPill.d.ts +27 -0
  37. package/dist/components/Data/MediaPill/MediaPill.d.ts.map +1 -0
  38. package/dist/components/Data/MediaPill/MediaPill.js +53 -0
  39. package/dist/components/Data/MediaPill/MediaPill.stories.d.ts +10 -0
  40. package/dist/components/Data/MediaPill/MediaPill.stories.d.ts.map +1 -0
  41. package/dist/components/Data/MediaPill/MediaPill.stories.js +51 -0
  42. package/dist/components/Data/Progress/Progress.d.ts +1 -1
  43. package/dist/components/Data/Progress/Progress.d.ts.map +1 -1
  44. package/dist/components/Data/RemovableItemList/RemovableItemList.d.ts +1 -1
  45. package/dist/components/Data/RemovableItemList/RemovableItemList.d.ts.map +1 -1
  46. package/dist/components/Data/StatsBadge/StatsBadge.d.ts +2 -1
  47. package/dist/components/Data/StatsBadge/StatsBadge.d.ts.map +1 -1
  48. package/dist/components/Info/Avatar/Avatar.d.ts +9 -0
  49. package/dist/components/Info/Avatar/Avatar.d.ts.map +1 -0
  50. package/dist/components/Info/Avatar/Avatar.js +36 -0
  51. package/dist/components/Info/Avatar/Avatar.stories.d.ts +9 -0
  52. package/dist/components/Info/Avatar/Avatar.stories.d.ts.map +1 -0
  53. package/dist/components/Info/Avatar/Avatar.stories.js +78 -0
  54. package/dist/components/Info/Badge/Badge.d.ts +1 -1
  55. package/dist/components/Info/Badge/Badge.d.ts.map +1 -1
  56. package/dist/components/Info/Badge/Badge.stories.d.ts.map +1 -1
  57. package/dist/components/Info/Badge/Badge.stories.js +21 -6
  58. package/dist/components/Info/Badge/sizes.d.ts +10 -10
  59. package/dist/components/Info/Badge/sizes.js +16 -16
  60. package/dist/components/Info/Badge/variants.d.ts +4 -4
  61. package/dist/components/Info/Badge/variants.d.ts.map +1 -1
  62. package/dist/components/Info/Badge/variants.js +26 -13
  63. package/dist/components/Info/Drawer/Drawer.d.ts +24 -0
  64. package/dist/components/Info/Drawer/Drawer.d.ts.map +1 -0
  65. package/dist/components/Info/Drawer/Drawer.js +44 -0
  66. package/dist/components/Info/Drawer/Drawer.stories.d.ts +10 -0
  67. package/dist/components/Info/Drawer/Drawer.stories.d.ts.map +1 -0
  68. package/dist/components/Info/Drawer/Drawer.stories.js +47 -0
  69. package/dist/components/Info/HoverCard/HoverCard.d.ts +16 -0
  70. package/dist/components/Info/HoverCard/HoverCard.d.ts.map +1 -0
  71. package/dist/components/Info/HoverCard/HoverCard.js +26 -0
  72. package/dist/components/Info/HoverCard/HoverCard.stories.d.ts +11 -0
  73. package/dist/components/Info/HoverCard/HoverCard.stories.d.ts.map +1 -0
  74. package/dist/components/Info/HoverCard/HoverCard.stories.js +86 -0
  75. package/dist/components/Info/HoverCard/HoverCardMenuItem.d.ts +12 -0
  76. package/dist/components/Info/HoverCard/HoverCardMenuItem.d.ts.map +1 -0
  77. package/dist/components/Info/HoverCard/HoverCardMenuItem.js +22 -0
  78. package/dist/components/Info/Indicator/Indicator.d.ts +3 -0
  79. package/dist/components/Info/Indicator/Indicator.d.ts.map +1 -0
  80. package/dist/components/Info/Indicator/Indicator.js +1 -0
  81. package/dist/components/Info/Indicator/Indicator.stories.d.ts +11 -0
  82. package/dist/components/Info/Indicator/Indicator.stories.d.ts.map +1 -0
  83. package/dist/components/Info/Indicator/Indicator.stories.js +123 -0
  84. package/dist/components/Info/InfoCard/InfoCard.d.ts +3 -3
  85. package/dist/components/Info/InfoCard/InfoCard.d.ts.map +1 -1
  86. package/dist/components/Info/InfoCard/InfoCard.js +5 -5
  87. package/dist/components/Info/MobileDrawer/MobileDrawer.d.ts +30 -0
  88. package/dist/components/Info/MobileDrawer/MobileDrawer.d.ts.map +1 -0
  89. package/dist/components/Info/MobileDrawer/MobileDrawer.js +52 -0
  90. package/dist/components/Info/MobileDrawer/MobileDrawer.stories.d.ts +9 -0
  91. package/dist/components/Info/MobileDrawer/MobileDrawer.stories.d.ts.map +1 -0
  92. package/dist/components/Info/MobileDrawer/MobileDrawer.stories.js +38 -0
  93. package/dist/components/Info/Modals/FormModal/FormModal.d.ts +17 -1
  94. package/dist/components/Info/Modals/FormModal/FormModal.d.ts.map +1 -1
  95. package/dist/components/Info/Modals/FormModal/FormModal.js +30 -12
  96. package/dist/components/Info/Modals/FormModalV2/FormModalV2.d.ts +60 -0
  97. package/dist/components/Info/Modals/FormModalV2/FormModalV2.d.ts.map +1 -0
  98. package/dist/components/Info/Modals/FormModalV2/FormModalV2.js +96 -0
  99. package/dist/components/Info/Modals/Modal/Modal.d.ts +1 -1
  100. package/dist/components/Info/Modals/Modal/Modal.d.ts.map +1 -1
  101. package/dist/components/Info/Modals/Modal/Modal.js +9 -1
  102. package/dist/components/Info/Modals/ModalProvider/ModalProvider.d.ts +1 -1
  103. package/dist/components/Info/Modals/ModalProvider/ModalProvider.d.ts.map +1 -1
  104. package/dist/components/Info/Modals/StepperModal/StepperModal.d.ts +1 -1
  105. package/dist/components/Info/Modals/StepperModal/StepperModal.d.ts.map +1 -1
  106. package/dist/components/Info/Modals/variants.d.ts +61 -41
  107. package/dist/components/Info/Modals/variants.d.ts.map +1 -1
  108. package/dist/components/Info/Modals/variants.js +58 -38
  109. package/dist/components/Info/Notifications/NotificationProvider/NotificationProvider.d.ts +2 -1
  110. package/dist/components/Info/Notifications/NotificationProvider/NotificationProvider.d.ts.map +1 -1
  111. package/dist/components/Info/Notifications/Notifications.stories.d.ts +1 -0
  112. package/dist/components/Info/Notifications/Notifications.stories.d.ts.map +1 -1
  113. package/dist/components/Info/Notifications/Notifications.stories.js +31 -0
  114. package/dist/components/Info/Notifications/variants.d.ts +30 -23
  115. package/dist/components/Info/Notifications/variants.d.ts.map +1 -1
  116. package/dist/components/Info/Notifications/variants.js +30 -24
  117. package/dist/components/Info/ResponsiveDrawer/ResponsiveDrawer.d.ts +37 -0
  118. package/dist/components/Info/ResponsiveDrawer/ResponsiveDrawer.d.ts.map +1 -0
  119. package/dist/components/Info/ResponsiveDrawer/ResponsiveDrawer.js +17 -0
  120. package/dist/components/Info/ResponsiveDrawer/ResponsiveDrawer.stories.d.ts +7 -0
  121. package/dist/components/Info/ResponsiveDrawer/ResponsiveDrawer.stories.d.ts.map +1 -0
  122. package/dist/components/Info/ResponsiveDrawer/ResponsiveDrawer.stories.js +26 -0
  123. package/dist/components/Info/Tooltips/FormulaTooltip/FormulaTooltip.d.ts +2 -1
  124. package/dist/components/Info/Tooltips/FormulaTooltip/FormulaTooltip.d.ts.map +1 -1
  125. package/dist/components/Info/Tooltips/InfoTooltip/InfoTooltip.d.ts +2 -2
  126. package/dist/components/Info/Tooltips/InfoTooltip/InfoTooltip.d.ts.map +1 -1
  127. package/dist/components/Info/Tooltips/InfoTooltip/InfoTooltip.js +9 -3
  128. package/dist/components/Info/Tooltips/Popover/Popover.d.ts +16 -0
  129. package/dist/components/Info/Tooltips/Popover/Popover.d.ts.map +1 -0
  130. package/dist/components/Info/Tooltips/Popover/Popover.js +32 -0
  131. package/dist/components/Info/Tooltips/Tooltip/Tooltip.d.ts +5 -1
  132. package/dist/components/Info/Tooltips/Tooltip/Tooltip.d.ts.map +1 -1
  133. package/dist/components/Info/Tooltips/Tooltip/Tooltip.js +10 -8
  134. package/dist/components/Inputs/Buttons/Button/Button.d.ts +3 -1
  135. package/dist/components/Inputs/Buttons/Button/Button.d.ts.map +1 -1
  136. package/dist/components/Inputs/Buttons/Button/Button.js +38 -5
  137. package/dist/components/Inputs/Buttons/Button/Button.stories.d.ts +1 -0
  138. package/dist/components/Inputs/Buttons/Button/Button.stories.d.ts.map +1 -1
  139. package/dist/components/Inputs/Buttons/Button/Button.stories.js +105 -79
  140. package/dist/components/Inputs/Buttons/IconButton/IconButton.d.ts +7 -2
  141. package/dist/components/Inputs/Buttons/IconButton/IconButton.d.ts.map +1 -1
  142. package/dist/components/Inputs/Buttons/IconButton/IconButton.js +35 -11
  143. package/dist/components/Inputs/Buttons/IconButton/IconButton.stories.d.ts +1 -0
  144. package/dist/components/Inputs/Buttons/IconButton/IconButton.stories.d.ts.map +1 -1
  145. package/dist/components/Inputs/Buttons/IconButton/IconButton.stories.js +100 -74
  146. package/dist/components/Inputs/Buttons/IconButton/sizes.d.ts +15 -0
  147. package/dist/components/Inputs/Buttons/IconButton/sizes.d.ts.map +1 -1
  148. package/dist/components/Inputs/Buttons/IconButton/sizes.js +3 -0
  149. package/dist/components/Inputs/Buttons/SSOButton/SSOButton.d.ts +2 -2
  150. package/dist/components/Inputs/Buttons/SSOButton/SSOButton.d.ts.map +1 -1
  151. package/dist/components/Inputs/Buttons/UnstyledButton/UnstyledButton.d.ts +1 -1
  152. package/dist/components/Inputs/Buttons/UnstyledButton/UnstyledButton.d.ts.map +1 -1
  153. package/dist/components/Inputs/Buttons/shared/variants.d.ts +399 -164
  154. package/dist/components/Inputs/Buttons/shared/variants.d.ts.map +1 -1
  155. package/dist/components/Inputs/Buttons/shared/variants.js +353 -143
  156. package/dist/components/Inputs/ColorPickerTrigger/ColorPickerTrigger.d.ts +41 -0
  157. package/dist/components/Inputs/ColorPickerTrigger/ColorPickerTrigger.d.ts.map +1 -0
  158. package/dist/components/Inputs/ColorPickerTrigger/ColorPickerTrigger.js +139 -0
  159. package/dist/components/Inputs/ColorPickerTrigger/ColorPickerTrigger.stories.d.ts +13 -0
  160. package/dist/components/Inputs/ColorPickerTrigger/ColorPickerTrigger.stories.d.ts.map +1 -0
  161. package/dist/components/Inputs/ColorPickerTrigger/ColorPickerTrigger.stories.js +75 -0
  162. package/dist/components/Inputs/ColorSwatch/ColorSwatch.d.ts +27 -0
  163. package/dist/components/Inputs/ColorSwatch/ColorSwatch.d.ts.map +1 -0
  164. package/dist/components/Inputs/ColorSwatch/ColorSwatch.js +46 -0
  165. package/dist/components/Inputs/Controls/Checkbox/Checkbox.d.ts +2 -1
  166. package/dist/components/Inputs/Controls/Checkbox/Checkbox.d.ts.map +1 -1
  167. package/dist/components/Inputs/Controls/DaysOfWeek/DaysOfWeek.d.ts +32 -0
  168. package/dist/components/Inputs/Controls/DaysOfWeek/DaysOfWeek.d.ts.map +1 -0
  169. package/dist/components/Inputs/Controls/DaysOfWeek/DaysOfWeek.js +92 -0
  170. package/dist/components/Inputs/Controls/Radio/Radio.d.ts +2 -1
  171. package/dist/components/Inputs/Controls/Radio/Radio.d.ts.map +1 -1
  172. package/dist/components/Inputs/Controls/RadioList/RadioList.d.ts +1 -1
  173. package/dist/components/Inputs/Controls/RadioList/RadioList.d.ts.map +1 -1
  174. package/dist/components/Inputs/Controls/SegmentedControl/SegmentedControl.d.ts +13 -9
  175. package/dist/components/Inputs/Controls/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  176. package/dist/components/Inputs/Controls/SegmentedControl/SegmentedControl.js +20 -12
  177. package/dist/components/Inputs/Controls/Toggle/Toggle.d.ts +25 -11
  178. package/dist/components/Inputs/Controls/Toggle/Toggle.d.ts.map +1 -1
  179. package/dist/components/Inputs/Controls/Toggle/Toggle.js +67 -20
  180. package/dist/components/Inputs/Controls/Toggle/Toggle.stories.d.ts +1 -0
  181. package/dist/components/Inputs/Controls/Toggle/Toggle.stories.d.ts.map +1 -1
  182. package/dist/components/Inputs/Controls/Toggle/Toggle.stories.js +86 -69
  183. package/dist/components/Inputs/Dates/DatePicker/DatePicker.d.ts +2 -1
  184. package/dist/components/Inputs/Dates/DatePicker/DatePicker.d.ts.map +1 -1
  185. package/dist/components/Inputs/Dates/DatePicker/DatePicker.js +23 -7
  186. package/dist/components/Inputs/Dates/DateTimePicker/DateTimePicker.d.ts +13 -0
  187. package/dist/components/Inputs/Dates/DateTimePicker/DateTimePicker.d.ts.map +1 -0
  188. package/dist/components/Inputs/Dates/DateTimePicker/DateTimePicker.js +87 -0
  189. package/dist/components/Inputs/Dates/DateTimePicker/DateTimePicker.stories.d.ts +13 -0
  190. package/dist/components/Inputs/Dates/DateTimePicker/DateTimePicker.stories.d.ts.map +1 -0
  191. package/dist/components/Inputs/Dates/DateTimePicker/DateTimePicker.stories.js +239 -0
  192. package/dist/components/Inputs/Dates/TimeInput/TimeInput.d.ts +20 -0
  193. package/dist/components/Inputs/Dates/TimeInput/TimeInput.d.ts.map +1 -0
  194. package/dist/components/Inputs/Dates/TimeInput/TimeInput.js +51 -0
  195. package/dist/components/Inputs/Dropdowns/CascadingSelect/CascadingSelect.d.ts +1 -1
  196. package/dist/components/Inputs/Dropdowns/CascadingSelect/CascadingSelect.d.ts.map +1 -1
  197. package/dist/components/Inputs/Dropdowns/FontSelect/FontSelect.d.ts +2 -1
  198. package/dist/components/Inputs/Dropdowns/FontSelect/FontSelect.d.ts.map +1 -1
  199. package/dist/components/Inputs/Dropdowns/FontSelect/FontSelect.js +8 -1
  200. package/dist/components/Inputs/Dropdowns/MultiSelect/MultiSelect.d.ts +4 -3
  201. package/dist/components/Inputs/Dropdowns/MultiSelect/MultiSelect.d.ts.map +1 -1
  202. package/dist/components/Inputs/Dropdowns/MultiSelect/MultiSelect.js +76 -57
  203. package/dist/components/Inputs/Dropdowns/Select/Select.d.ts +2 -1
  204. package/dist/components/Inputs/Dropdowns/Select/Select.d.ts.map +1 -1
  205. package/dist/components/Inputs/Dropdowns/Select/Select.js +5 -3
  206. package/dist/components/Inputs/Dropzone/Dropzone.d.ts +24 -0
  207. package/dist/components/Inputs/Dropzone/Dropzone.d.ts.map +1 -0
  208. package/dist/components/Inputs/Dropzone/Dropzone.js +44 -0
  209. package/dist/components/Inputs/Dropzone/Dropzone.stories.d.ts +12 -0
  210. package/dist/components/Inputs/Dropzone/Dropzone.stories.d.ts.map +1 -0
  211. package/dist/components/Inputs/Dropzone/Dropzone.stories.js +114 -0
  212. package/dist/components/Inputs/Sliders/Slider/Slider.d.ts +1 -1
  213. package/dist/components/Inputs/Sliders/Slider/Slider.d.ts.map +1 -1
  214. package/dist/components/Inputs/Sliders/VolumeSlider/VolumeSlider.d.ts +2 -1
  215. package/dist/components/Inputs/Sliders/VolumeSlider/VolumeSlider.d.ts.map +1 -1
  216. package/dist/components/Inputs/TextInputs/AutoComplete/AutoComplete.d.ts +2 -1
  217. package/dist/components/Inputs/TextInputs/AutoComplete/AutoComplete.d.ts.map +1 -1
  218. package/dist/components/Inputs/TextInputs/NumberInput/NumberInput.d.ts +2 -1
  219. package/dist/components/Inputs/TextInputs/NumberInput/NumberInput.d.ts.map +1 -1
  220. package/dist/components/Inputs/TextInputs/NumberInput/NumberInput.js +4 -1
  221. package/dist/components/Inputs/TextInputs/NumberInput/ResponsiveNumberInput.d.ts +46 -0
  222. package/dist/components/Inputs/TextInputs/NumberInput/ResponsiveNumberInput.d.ts.map +1 -0
  223. package/dist/components/Inputs/TextInputs/NumberInput/ResponsiveNumberInput.js +60 -0
  224. package/dist/components/Inputs/TextInputs/PasswordInput/PasswordInput.d.ts +2 -1
  225. package/dist/components/Inputs/TextInputs/PasswordInput/PasswordInput.d.ts.map +1 -1
  226. package/dist/components/Inputs/TextInputs/SearchBar/SearchBar.d.ts +2 -1
  227. package/dist/components/Inputs/TextInputs/SearchBar/SearchBar.d.ts.map +1 -1
  228. package/dist/components/Inputs/TextInputs/TextArea/TextArea.d.ts +2 -1
  229. package/dist/components/Inputs/TextInputs/TextArea/TextArea.d.ts.map +1 -1
  230. package/dist/components/Inputs/TextInputs/TextInput/TextInput.d.ts +2 -1
  231. package/dist/components/Inputs/TextInputs/TextInput/TextInput.d.ts.map +1 -1
  232. package/dist/components/Layout/Accordion/Accordion.d.ts +16 -0
  233. package/dist/components/Layout/Accordion/Accordion.d.ts.map +1 -0
  234. package/dist/components/Layout/Accordion/Accordion.js +63 -0
  235. package/dist/components/Layout/Accordion/Accordion.stories.d.ts +11 -0
  236. package/dist/components/Layout/Accordion/Accordion.stories.d.ts.map +1 -0
  237. package/dist/components/Layout/Accordion/Accordion.stories.js +148 -0
  238. package/dist/components/Layout/AutoGrid/AutoGrid.d.ts +20 -5
  239. package/dist/components/Layout/AutoGrid/AutoGrid.d.ts.map +1 -1
  240. package/dist/components/Layout/AutoGrid/AutoGrid.js +51 -3
  241. package/dist/components/Layout/AutoGrid/AutoGrid.stories.d.ts +1 -0
  242. package/dist/components/Layout/AutoGrid/AutoGrid.stories.d.ts.map +1 -1
  243. package/dist/components/Layout/AutoGrid/AutoGrid.stories.js +39 -29
  244. package/dist/components/Layout/BottomActionBar/BottomActionBar.d.ts +40 -0
  245. package/dist/components/Layout/BottomActionBar/BottomActionBar.d.ts.map +1 -0
  246. package/dist/components/Layout/BottomActionBar/BottomActionBar.js +79 -0
  247. package/dist/components/Layout/BottomActionBar/BottomActionBar.stories.d.ts +10 -0
  248. package/dist/components/Layout/BottomActionBar/BottomActionBar.stories.d.ts.map +1 -0
  249. package/dist/components/Layout/BottomActionBar/BottomActionBar.stories.js +102 -0
  250. package/dist/components/Layout/Box/Box.d.ts +2 -1
  251. package/dist/components/Layout/Box/Box.d.ts.map +1 -1
  252. package/dist/components/Layout/Card/Card.d.ts +2 -2
  253. package/dist/components/Layout/Card/Card.d.ts.map +1 -1
  254. package/dist/components/Layout/Center/Center.d.ts +2 -1
  255. package/dist/components/Layout/Center/Center.d.ts.map +1 -1
  256. package/dist/components/Layout/Container/Container.d.ts +3 -0
  257. package/dist/components/Layout/Container/Container.d.ts.map +1 -0
  258. package/dist/components/Layout/Container/Container.js +1 -0
  259. package/dist/components/Layout/Container/Container.stories.d.ts +8 -0
  260. package/dist/components/Layout/Container/Container.stories.d.ts.map +1 -0
  261. package/dist/components/Layout/Container/Container.stories.js +52 -0
  262. package/dist/components/Layout/DataState/DataState.d.ts +34 -0
  263. package/dist/components/Layout/DataState/DataState.d.ts.map +1 -0
  264. package/dist/components/Layout/DataState/DataState.js +22 -0
  265. package/dist/components/Layout/DataState/DataState.stories.d.ts +11 -0
  266. package/dist/components/Layout/DataState/DataState.stories.d.ts.map +1 -0
  267. package/dist/components/Layout/DataState/DataState.stories.js +38 -0
  268. package/dist/components/Layout/Divider/Divider.d.ts +2 -1
  269. package/dist/components/Layout/Divider/Divider.d.ts.map +1 -1
  270. package/dist/components/Layout/Divider/Divider.js +4 -2
  271. package/dist/components/Layout/Frame/Frame.d.ts +2 -1
  272. package/dist/components/Layout/Frame/Frame.d.ts.map +1 -1
  273. package/dist/components/Layout/Grid/Grid.d.ts +1 -1
  274. package/dist/components/Layout/Group/Group.d.ts +3 -2
  275. package/dist/components/Layout/Group/Group.d.ts.map +1 -1
  276. package/dist/components/Layout/Loader/Loader.d.ts +2 -1
  277. package/dist/components/Layout/Loader/Loader.d.ts.map +1 -1
  278. package/dist/components/Layout/Loader/Loader.js +3 -2
  279. package/dist/components/Layout/Navbar/Navbar.d.ts +15 -0
  280. package/dist/components/Layout/Navbar/Navbar.d.ts.map +1 -0
  281. package/dist/components/Layout/Navbar/Navbar.js +20 -0
  282. package/dist/components/Layout/Navbar/Navbar.stories.d.ts +9 -0
  283. package/dist/components/Layout/Navbar/Navbar.stories.d.ts.map +1 -0
  284. package/dist/components/Layout/Navbar/Navbar.stories.js +98 -0
  285. package/dist/components/Layout/Page/Page.d.ts +13 -0
  286. package/dist/components/Layout/Page/Page.d.ts.map +1 -0
  287. package/dist/components/Layout/Page/Page.js +13 -0
  288. package/dist/components/Layout/Pagination/Pagination.d.ts +24 -0
  289. package/dist/components/Layout/Pagination/Pagination.d.ts.map +1 -0
  290. package/dist/components/Layout/Pagination/Pagination.js +53 -0
  291. package/dist/components/Layout/Pagination/Pagination.stories.d.ts +10 -0
  292. package/dist/components/Layout/Pagination/Pagination.stories.d.ts.map +1 -0
  293. package/dist/components/Layout/Pagination/Pagination.stories.js +76 -0
  294. package/dist/components/Layout/ScrollArea/ScrollArea.d.ts +3 -0
  295. package/dist/components/Layout/ScrollArea/ScrollArea.d.ts.map +1 -0
  296. package/dist/components/Layout/ScrollArea/ScrollArea.js +1 -0
  297. package/dist/components/Layout/ScrollArea/ScrollArea.stories.d.ts +8 -0
  298. package/dist/components/Layout/ScrollArea/ScrollArea.stories.d.ts.map +1 -0
  299. package/dist/components/Layout/ScrollArea/ScrollArea.stories.js +62 -0
  300. package/dist/components/Layout/SectionCard/SectionCard.d.ts +1 -1
  301. package/dist/components/Layout/SectionCard/SectionCard.d.ts.map +1 -1
  302. package/dist/components/Layout/Stack/Stack.d.ts +2 -1
  303. package/dist/components/Layout/Stack/Stack.d.ts.map +1 -1
  304. package/dist/components/Layout/Table/Table.d.ts +1 -1
  305. package/dist/components/Layout/Table/Table.d.ts.map +1 -1
  306. package/dist/components/Layout/Tabs/Tabs.d.ts +16 -5
  307. package/dist/components/Layout/Tabs/Tabs.d.ts.map +1 -1
  308. package/dist/components/Layout/Tabs/Tabs.js +53 -18
  309. package/dist/components/Layout/Tabs/Tabs.stories.d.ts.map +1 -1
  310. package/dist/components/Layout/Tabs/Tabs.stories.js +39 -39
  311. package/dist/components/Layout/VirtualGrid/VirtualGrid.d.ts +63 -0
  312. package/dist/components/Layout/VirtualGrid/VirtualGrid.d.ts.map +1 -0
  313. package/dist/components/Layout/VirtualGrid/VirtualGrid.js +159 -0
  314. package/dist/components/Misc/Burger/Burger.d.ts +6 -0
  315. package/dist/components/Misc/Burger/Burger.d.ts.map +1 -0
  316. package/dist/components/Misc/Burger/Burger.js +7 -0
  317. package/dist/components/Misc/Burger/Burger.stories.d.ts +10 -0
  318. package/dist/components/Misc/Burger/Burger.stories.d.ts.map +1 -0
  319. package/dist/components/Misc/Burger/Burger.stories.js +86 -0
  320. package/dist/components/Misc/Carousel/Carousel.d.ts +32 -0
  321. package/dist/components/Misc/Carousel/Carousel.d.ts.map +1 -0
  322. package/dist/components/Misc/Carousel/Carousel.js +16 -0
  323. package/dist/components/Misc/DragHandle/DragHandle.d.ts +19 -0
  324. package/dist/components/Misc/DragHandle/DragHandle.d.ts.map +1 -0
  325. package/dist/components/Misc/DragHandle/DragHandle.js +39 -0
  326. package/dist/components/Misc/DragHandle/DragHandle.stories.d.ts +9 -0
  327. package/dist/components/Misc/DragHandle/DragHandle.stories.d.ts.map +1 -0
  328. package/dist/components/Misc/DragHandle/DragHandle.stories.js +54 -0
  329. package/dist/components/Misc/FAB/FAB.d.ts +54 -0
  330. package/dist/components/Misc/FAB/FAB.d.ts.map +1 -0
  331. package/dist/components/Misc/FAB/FAB.js +53 -0
  332. package/dist/components/Misc/FAB/FAB.stories.d.ts +10 -0
  333. package/dist/components/Misc/FAB/FAB.stories.d.ts.map +1 -0
  334. package/dist/components/Misc/FAB/FAB.stories.js +100 -0
  335. package/dist/components/Misc/FloatingToolbar/FloatingToolbar.d.ts +50 -0
  336. package/dist/components/Misc/FloatingToolbar/FloatingToolbar.d.ts.map +1 -0
  337. package/dist/components/Misc/FloatingToolbar/FloatingToolbar.js +40 -0
  338. package/dist/components/Misc/FloatingToolbar/FloatingToolbar.stories.d.ts +9 -0
  339. package/dist/components/Misc/FloatingToolbar/FloatingToolbar.stories.d.ts.map +1 -0
  340. package/dist/components/Misc/FloatingToolbar/FloatingToolbar.stories.js +53 -0
  341. package/dist/components/Misc/HoverAction/HoverAction.d.ts +50 -0
  342. package/dist/components/Misc/HoverAction/HoverAction.d.ts.map +1 -0
  343. package/dist/components/Misc/HoverAction/HoverAction.js +61 -0
  344. package/dist/components/Misc/HoverAction/HoverAction.stories.d.ts +12 -0
  345. package/dist/components/Misc/HoverAction/HoverAction.stories.d.ts.map +1 -0
  346. package/dist/components/Misc/HoverAction/HoverAction.stories.js +96 -0
  347. package/dist/components/Misc/IconBadge/IconBadge.d.ts +1 -1
  348. package/dist/components/Misc/IconBadge/IconBadge.d.ts.map +1 -1
  349. package/dist/components/Misc/IconBadge/IconBadge.js +8 -6
  350. package/dist/components/Misc/Image/Image.d.ts +3 -0
  351. package/dist/components/Misc/Image/Image.d.ts.map +1 -0
  352. package/dist/components/Misc/Image/Image.js +1 -0
  353. package/dist/components/Misc/Image/Image.stories.d.ts +11 -0
  354. package/dist/components/Misc/Image/Image.stories.d.ts.map +1 -0
  355. package/dist/components/Misc/Image/Image.stories.js +63 -0
  356. package/dist/components/Misc/Kbd/Kbd.d.ts +7 -0
  357. package/dist/components/Misc/Kbd/Kbd.d.ts.map +1 -0
  358. package/dist/components/Misc/Kbd/Kbd.js +16 -0
  359. package/dist/components/Misc/Kbd/Kbd.stories.d.ts +9 -0
  360. package/dist/components/Misc/Kbd/Kbd.stories.d.ts.map +1 -0
  361. package/dist/components/Misc/Kbd/Kbd.stories.js +52 -0
  362. package/dist/components/Misc/LoadingOverlay/LoadingOverlay.d.ts +2 -1
  363. package/dist/components/Misc/LoadingOverlay/LoadingOverlay.d.ts.map +1 -1
  364. package/dist/components/Misc/Menu/Menu.d.ts +17 -0
  365. package/dist/components/Misc/Menu/Menu.d.ts.map +1 -0
  366. package/dist/components/Misc/Menu/Menu.js +52 -0
  367. package/dist/components/Misc/OverflowFade/OverflowFade.d.ts +42 -0
  368. package/dist/components/Misc/OverflowFade/OverflowFade.d.ts.map +1 -0
  369. package/dist/components/Misc/OverflowFade/OverflowFade.js +110 -0
  370. package/dist/components/Misc/OverflowFade/OverflowFade.stories.d.ts +11 -0
  371. package/dist/components/Misc/OverflowFade/OverflowFade.stories.d.ts.map +1 -0
  372. package/dist/components/Misc/OverflowFade/OverflowFade.stories.js +112 -0
  373. package/dist/components/Misc/Picker/Picker.d.ts +62 -0
  374. package/dist/components/Misc/Picker/Picker.d.ts.map +1 -0
  375. package/dist/components/Misc/Picker/Picker.js +111 -0
  376. package/dist/components/Misc/Picker/Picker.stories.d.ts +14 -0
  377. package/dist/components/Misc/Picker/Picker.stories.d.ts.map +1 -0
  378. package/dist/components/Misc/Picker/Picker.stories.js +154 -0
  379. package/dist/components/Misc/SelectableObject/SelectableObject.d.ts +38 -0
  380. package/dist/components/Misc/SelectableObject/SelectableObject.d.ts.map +1 -0
  381. package/dist/components/Misc/SelectableObject/SelectableObject.js +70 -0
  382. package/dist/components/Misc/SelectableObject/SelectableObject.stories.d.ts +11 -0
  383. package/dist/components/Misc/SelectableObject/SelectableObject.stories.d.ts.map +1 -0
  384. package/dist/components/Misc/SelectableObject/SelectableObject.stories.js +84 -0
  385. package/dist/components/Misc/SelectionToolbar/SelectionToolbar.d.ts +26 -0
  386. package/dist/components/Misc/SelectionToolbar/SelectionToolbar.d.ts.map +1 -0
  387. package/dist/components/Misc/SelectionToolbar/SelectionToolbar.js +41 -0
  388. package/dist/components/Misc/SelectionToolbar/SelectionToolbar.stories.d.ts +10 -0
  389. package/dist/components/Misc/SelectionToolbar/SelectionToolbar.stories.d.ts.map +1 -0
  390. package/dist/components/Misc/SelectionToolbar/SelectionToolbar.stories.js +48 -0
  391. package/dist/components/Misc/Skeleton/Skeleton.d.ts +1 -1
  392. package/dist/components/Misc/Skeleton/Skeleton.d.ts.map +1 -1
  393. package/dist/components/Misc/Stepper/Step.d.ts +1 -1
  394. package/dist/components/Misc/Stepper/Step.d.ts.map +1 -1
  395. package/dist/components/Misc/Stepper/Step.stories.d.ts +120 -120
  396. package/dist/components/Misc/Stepper/Stepper.d.ts +1 -1
  397. package/dist/components/Misc/Stepper/Stepper.d.ts.map +1 -1
  398. package/dist/components/Misc/Stepper/variants.d.ts +1 -1
  399. package/dist/components/Misc/Timeline/Timeline.d.ts +18 -0
  400. package/dist/components/Misc/Timeline/Timeline.d.ts.map +1 -0
  401. package/dist/components/Misc/Timeline/Timeline.js +38 -0
  402. package/dist/components/Misc/Timeline/Timeline.stories.d.ts +8 -0
  403. package/dist/components/Misc/Timeline/Timeline.stories.d.ts.map +1 -0
  404. package/dist/components/Misc/Timeline/Timeline.stories.js +54 -0
  405. package/dist/components/Misc/Transition/Transition.d.ts +2 -1
  406. package/dist/components/Misc/Transition/Transition.d.ts.map +1 -1
  407. package/dist/components/Typography/CollapsibleText/CollapsibleText.d.ts +1 -1
  408. package/dist/components/Typography/CollapsibleText/CollapsibleText.d.ts.map +1 -1
  409. package/dist/components/Typography/CollapsibleTitle/CollapsibleTitle.d.ts +1 -1
  410. package/dist/components/Typography/CollapsibleTitle/CollapsibleTitle.d.ts.map +1 -1
  411. package/dist/components/Typography/Formula/Formula.d.ts +2 -1
  412. package/dist/components/Typography/Formula/Formula.d.ts.map +1 -1
  413. package/dist/components/Typography/Fraction/Fraction.d.ts +1 -1
  414. package/dist/components/Typography/Fraction/Fraction.d.ts.map +1 -1
  415. package/dist/components/Typography/InlineEditableText/InlineEditableText.d.ts +35 -0
  416. package/dist/components/Typography/InlineEditableText/InlineEditableText.d.ts.map +1 -0
  417. package/dist/components/Typography/InlineEditableText/InlineEditableText.js +112 -0
  418. package/dist/components/Typography/InlineEditableText/InlineEditableText.stories.d.ts +11 -0
  419. package/dist/components/Typography/InlineEditableText/InlineEditableText.stories.d.ts.map +1 -0
  420. package/dist/components/Typography/InlineEditableText/InlineEditableText.stories.js +48 -0
  421. package/dist/components/Typography/Text/Text.d.ts +1 -1
  422. package/dist/components/Typography/Text/Text.d.ts.map +1 -1
  423. package/dist/components/Typography/Title/Title.d.ts +1 -1
  424. package/dist/components/Typography/Title/Title.d.ts.map +1 -1
  425. package/dist/components/index.d.ts +148 -66
  426. package/dist/components/index.d.ts.map +1 -1
  427. package/dist/components/index.js +110 -68
  428. package/dist/constants/colors.d.ts +117 -91
  429. package/dist/constants/colors.d.ts.map +1 -1
  430. package/dist/constants/colors.js +56 -43
  431. package/dist/constants/font.d.ts +4 -4
  432. package/dist/constants/font.js +2 -2
  433. package/dist/docs/AIGeneratedBanner.d.ts +1 -1
  434. package/dist/docs/AIGeneratedBanner.d.ts.map +1 -1
  435. package/dist/hooks/index.d.ts +9 -1
  436. package/dist/hooks/index.d.ts.map +1 -1
  437. package/dist/hooks/index.js +7 -1
  438. package/dist/hooks/useConfirmationModal.d.ts.map +1 -1
  439. package/dist/hooks/useConfirmationModal.js +20 -1
  440. package/dist/hooks/useDisclosure.d.ts +11 -0
  441. package/dist/hooks/useDisclosure.d.ts.map +1 -0
  442. package/dist/hooks/useDisclosure.js +10 -0
  443. package/dist/hooks/useHeadroom.d.ts +18 -0
  444. package/dist/hooks/useHeadroom.d.ts.map +1 -0
  445. package/dist/hooks/useHeadroom.js +17 -0
  446. package/dist/hooks/useInfoModal.d.ts.map +1 -1
  447. package/dist/hooks/useInfoModal.js +13 -1
  448. package/dist/hooks/useMediaQuery.d.ts +1 -0
  449. package/dist/hooks/useMediaQuery.d.ts.map +1 -1
  450. package/dist/hooks/useMediaQuery.js +1 -0
  451. package/dist/hooks/useNotifications.d.ts +39 -7
  452. package/dist/hooks/useNotifications.d.ts.map +1 -1
  453. package/dist/hooks/useNotifications.js +108 -5
  454. package/dist/hooks/usePagination.d.ts +11 -0
  455. package/dist/hooks/usePagination.d.ts.map +1 -0
  456. package/dist/hooks/usePagination.js +2 -0
  457. package/dist/hooks/useScrollLock.d.ts +21 -0
  458. package/dist/hooks/useScrollLock.d.ts.map +1 -0
  459. package/dist/hooks/useScrollLock.js +20 -0
  460. package/dist/index.d.ts +5 -5
  461. package/dist/index.js +5 -5
  462. package/dist/styles/iosInputZoomFix.d.ts +31 -0
  463. package/dist/styles/iosInputZoomFix.d.ts.map +1 -0
  464. package/dist/styles/iosInputZoomFix.js +135 -0
  465. package/dist/utils/bytes.d.ts +10 -0
  466. package/dist/utils/bytes.d.ts.map +1 -0
  467. package/dist/utils/bytes.js +17 -0
  468. package/dist/utils/datetime.d.ts +18 -0
  469. package/dist/utils/datetime.d.ts.map +1 -0
  470. package/dist/utils/datetime.js +42 -0
  471. package/dist/utils/duration.d.ts +17 -0
  472. package/dist/utils/duration.d.ts.map +1 -0
  473. package/dist/utils/duration.js +30 -0
  474. package/dist/utils/index.d.ts +8 -2
  475. package/dist/utils/index.d.ts.map +1 -1
  476. package/dist/utils/index.js +7 -2
  477. package/dist/utils/sort.d.ts +44 -0
  478. package/dist/utils/sort.d.ts.map +1 -0
  479. package/dist/utils/sort.js +53 -0
  480. package/dist/utils/string.d.ts +22 -0
  481. package/dist/utils/string.d.ts.map +1 -0
  482. package/dist/utils/string.js +25 -0
  483. package/package.json +28 -4
@@ -0,0 +1,100 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { IconCheck, IconPencil, IconPlus, IconTrash } from '@tabler/icons-react';
3
+ import { neutral } from '../../../constants/colors';
4
+ import { spacing } from '../../../constants/spacing';
5
+ import { Stack } from '../../Layout/Stack/Stack';
6
+ import { Text } from '../../Typography/Text/Text';
7
+ import { Title } from '../../Typography/Title/Title';
8
+ import { FAB } from './FAB';
9
+ const meta = {
10
+ argTypes: {
11
+ ariaLabel: {
12
+ control: { type: 'text' },
13
+ description: 'Accessible label — required since the FAB has no visible text',
14
+ },
15
+ hidden: {
16
+ control: { type: 'boolean' },
17
+ description: 'Force-hide the FAB regardless of viewport',
18
+ table: { defaultValue: { summary: 'false' } },
19
+ },
20
+ mobileOnly: {
21
+ control: { type: 'boolean' },
22
+ description: 'Only render on tablet/mobile viewports (≤ 768px)',
23
+ table: { defaultValue: { summary: 'true' } },
24
+ },
25
+ offset: {
26
+ control: { type: 'text' },
27
+ description: 'Distance from the anchored edges',
28
+ table: { defaultValue: { summary: 'spacing.lg (16px)' } },
29
+ },
30
+ onClick: { action: 'clicked' },
31
+ position: {
32
+ control: { type: 'select' },
33
+ options: ['bottom-right', 'bottom-left', 'top-right', 'top-left'],
34
+ table: { defaultValue: { summary: "'bottom-right'" } },
35
+ },
36
+ size: {
37
+ control: { type: 'select' },
38
+ options: ['sm', 'md', 'lg', 'xl', '2xl'],
39
+ table: { defaultValue: { summary: "'2xl'" } },
40
+ },
41
+ variant: {
42
+ control: { type: 'select' },
43
+ options: ['primary', 'secondary', 'tertiary', 'cancel', 'success', 'warning'],
44
+ table: { defaultValue: { summary: "'primary'" } },
45
+ },
46
+ zIndex: {
47
+ control: { type: 'number' },
48
+ table: { defaultValue: { summary: '10' } },
49
+ },
50
+ },
51
+ component: FAB,
52
+ parameters: {
53
+ docs: {
54
+ description: {
55
+ component: "Floating Action Button. A `position: fixed` IconButton anchored to a viewport corner, used for the page's primary action when screen real estate is tight. Defaults to mobile-only (≤ 768px) — on desktop, prefer an inline `<Button>` for the same action.",
56
+ },
57
+ },
58
+ layout: 'fullscreen',
59
+ },
60
+ title: 'Components/Misc/FAB',
61
+ };
62
+ export default meta;
63
+ const StageBackdrop = ({ children }) => (_jsxs(Stack, { gap: spacing.md, style: {
64
+ background: neutral[25],
65
+ height: '100vh',
66
+ padding: spacing.xl,
67
+ position: 'relative',
68
+ }, children: [_jsx(Title, { variant: 'sectionHeader', children: "Page content" }), _jsxs(Text, { variant: 'subtle', children: ["The FAB anchors to the viewport \u2014 scroll, resize, or move other content; it stays put. Defaults to mobile-only; toggle ", _jsx("code", { children: "mobileOnly" }), " in controls to preview it on desktop."] }), children] }));
69
+ export const Default = {
70
+ args: {
71
+ ariaLabel: 'Add item',
72
+ icon: _jsx(IconPlus, {}),
73
+ mobileOnly: false,
74
+ onClick: () => { },
75
+ },
76
+ render: (args) => (_jsx(StageBackdrop, { children: _jsx(FAB, { ...args }) })),
77
+ };
78
+ export const Positions = {
79
+ parameters: {
80
+ docs: {
81
+ description: {
82
+ story: 'Each of the four corner anchors. `mobileOnly` disabled for the demo.',
83
+ },
84
+ },
85
+ },
86
+ render: () => (_jsxs(StageBackdrop, { children: [_jsx(FAB, { ariaLabel: 'Top-left', icon: _jsx(IconPencil, {}), mobileOnly: false, onClick: () => { }, position: 'top-left', variant: 'secondary' }), _jsx(FAB, { ariaLabel: 'Top-right', icon: _jsx(IconCheck, {}), mobileOnly: false, onClick: () => { }, position: 'top-right', variant: 'success' }), _jsx(FAB, { ariaLabel: 'Bottom-left', icon: _jsx(IconTrash, {}), mobileOnly: false, onClick: () => { }, position: 'bottom-left', variant: 'cancel' }), _jsx(FAB, { ariaLabel: 'Bottom-right', icon: _jsx(IconPlus, {}), mobileOnly: false, onClick: () => { }, position: 'bottom-right' })] })),
87
+ };
88
+ export const Variants = {
89
+ parameters: {
90
+ docs: {
91
+ description: {
92
+ story: "All IconButton variants are supported. `tertiary` (white bg, primary outline) is the recommended FAB style — softer than `primary` while still reading as a brand-colored CTA.",
93
+ },
94
+ },
95
+ },
96
+ render: () => (_jsxs(StageBackdrop, { children: [_jsx(FAB, { ariaLabel: 'Primary', icon: _jsx(IconPlus, {}), mobileOnly: false, onClick: () => { }, position: 'bottom-right' }), _jsx(FAB, { ariaLabel: 'Tertiary', icon: _jsx(IconPlus, {}), mobileOnly: false, onClick: () => { }, position: 'bottom-left', variant: 'tertiary' })] })),
97
+ };
98
+ export const Sizes = {
99
+ render: () => (_jsxs(StageBackdrop, { children: [_jsx(FAB, { ariaLabel: '2XL (default, recommended for mobile FABs)', icon: _jsx(IconPlus, {}), mobileOnly: false, onClick: () => { }, position: 'bottom-right' }), _jsx(FAB, { ariaLabel: 'XL', icon: _jsx(IconPlus, {}), mobileOnly: false, onClick: () => { }, position: 'bottom-left', size: 'xl' }), _jsx(FAB, { ariaLabel: 'Large', icon: _jsx(IconPlus, {}), mobileOnly: false, onClick: () => { }, position: 'top-left', size: 'lg' }), _jsx(FAB, { ariaLabel: 'Medium', icon: _jsx(IconPlus, {}), mobileOnly: false, onClick: () => { }, position: 'top-right', size: 'md' })] })),
100
+ };
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ export interface FloatingToolbarProps {
3
+ children: React.ReactNode;
4
+ /**
5
+ * How `children` are separated. Default `spacing.xs`.
6
+ */
7
+ gap?: string | number;
8
+ /**
9
+ * When children overflow horizontally, scroll instead of wrapping. Default `true`.
10
+ */
11
+ scrollOverflow?: boolean;
12
+ /**
13
+ * Override the pill's inner padding. Accepts a CSS `padding` value.
14
+ * Default `'4px 8px'`.
15
+ */
16
+ padding?: string | number;
17
+ /**
18
+ * Additional inline styles forwarded to the pill container. Consumers use
19
+ * this to position the toolbar over a canvas — the component itself is
20
+ * position-agnostic (see `SelectableObject` + consumer selection state
21
+ * for the anchor/flipping behavior).
22
+ */
23
+ style?: React.CSSProperties;
24
+ className?: string;
25
+ /**
26
+ * Accessible label for the toolbar. Default `'Formatting options'`.
27
+ */
28
+ ariaLabel?: string;
29
+ }
30
+ /**
31
+ * Chrome for a Canva-style floating action toolbar. Renders a white pill with
32
+ * shadow + border + horizontal overflow scrolling and a flex-row gap between
33
+ * children. **Positioning is the consumer's responsibility** — wrap this in
34
+ * your own portal / absolute-positioned shell, or use it inline.
35
+ *
36
+ * The *composition* inside (font select, size stepper, B/I/U, color pickers,
37
+ * delete) stays in the consuming app since it depends on the canvas object's
38
+ * shape. This component only ships the shell.
39
+ *
40
+ * @example
41
+ * <div style={{ position: 'absolute', top: y, left: x, transform: 'translate(-50%, -100%)' }}>
42
+ * <FloatingToolbar>
43
+ * <Select ... />
44
+ * <Divider orientation="vertical" />
45
+ * <IconButton>...</IconButton>
46
+ * </FloatingToolbar>
47
+ * </div>
48
+ */
49
+ export declare const FloatingToolbar: ({ children, gap, scrollOverflow, padding, style, className, ariaLabel, }: FloatingToolbarProps) => React.JSX.Element;
50
+ //# sourceMappingURL=FloatingToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingToolbar.d.ts","sourceRoot":"","sources":["../../../../src/components/Misc/FloatingToolbar/FloatingToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe,GAAI,0EAQ7B,oBAAoB,sBA6BtB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { neutral, white } from '../../../constants/colors';
4
+ import { spacing } from '../../../constants/spacing';
5
+ /**
6
+ * Chrome for a Canva-style floating action toolbar. Renders a white pill with
7
+ * shadow + border + horizontal overflow scrolling and a flex-row gap between
8
+ * children. **Positioning is the consumer's responsibility** — wrap this in
9
+ * your own portal / absolute-positioned shell, or use it inline.
10
+ *
11
+ * The *composition* inside (font select, size stepper, B/I/U, color pickers,
12
+ * delete) stays in the consuming app since it depends on the canvas object's
13
+ * shape. This component only ships the shell.
14
+ *
15
+ * @example
16
+ * <div style={{ position: 'absolute', top: y, left: x, transform: 'translate(-50%, -100%)' }}>
17
+ * <FloatingToolbar>
18
+ * <Select ... />
19
+ * <Divider orientation="vertical" />
20
+ * <IconButton>...</IconButton>
21
+ * </FloatingToolbar>
22
+ * </div>
23
+ */
24
+ export const FloatingToolbar = ({ children, gap = spacing.xs, scrollOverflow = true, padding = `${spacing.xxs} ${spacing.sm}`, style, className, ariaLabel = 'Formatting options', }) => {
25
+ return (_jsx("div", { "aria-label": ariaLabel, className: className, role: 'toolbar', style: {
26
+ alignItems: 'center',
27
+ backgroundColor: white,
28
+ border: `1px solid ${neutral[50]}`,
29
+ borderRadius: '999px',
30
+ boxShadow: '0 8px 24px rgba(0, 0, 0, 0.12)',
31
+ display: 'inline-flex',
32
+ gap,
33
+ maxWidth: '100%',
34
+ overflowX: scrollOverflow ? 'auto' : 'visible',
35
+ overflowY: 'visible',
36
+ padding,
37
+ whiteSpace: 'nowrap',
38
+ ...style,
39
+ }, children: React.Children.map(children, (child, i) => (_jsx("div", { style: { flexShrink: 0, display: 'inline-flex', alignItems: 'center' }, children: child }, i))) }));
40
+ };
@@ -0,0 +1,9 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { FloatingToolbar } from './FloatingToolbar';
3
+ declare const meta: Meta<typeof FloatingToolbar>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const TextToolbar: Story;
7
+ export declare const OverflowScroll: Story;
8
+ export declare const OverCanvas: Story;
9
+ //# sourceMappingURL=FloatingToolbar.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingToolbar.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/Misc/FloatingToolbar/FloatingToolbar.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAc5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,eAAe,CAYtC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,WAAW,EAAE,KA8CzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAY5B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAmCxB,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { IconBold, IconItalic, IconTrash, IconUnderline, } from '@tabler/icons-react';
3
+ import { useState } from 'react';
4
+ import { neutral } from '../../../constants/colors';
5
+ import { spacing } from '../../../constants/spacing';
6
+ import { IconButton } from '../../Inputs/Buttons/IconButton/IconButton';
7
+ import { ColorPickerTrigger } from '../../Inputs/ColorPickerTrigger/ColorPickerTrigger';
8
+ import { Select } from '../../Inputs/Dropdowns/Select/Select';
9
+ import { Divider } from '../../Layout/Divider/Divider';
10
+ import { FloatingToolbar } from './FloatingToolbar';
11
+ const meta = {
12
+ component: FloatingToolbar,
13
+ parameters: {
14
+ docs: {
15
+ description: {
16
+ component: "White pill used as the chrome for Canva-style floating action toolbars. Positioning is the consumer's responsibility — wrap this in a portal / absolute-positioned shell, or use it inline.",
17
+ },
18
+ },
19
+ layout: 'centered',
20
+ },
21
+ title: 'Components/Misc/FloatingToolbar',
22
+ };
23
+ export default meta;
24
+ export const TextToolbar = {
25
+ render: () => {
26
+ const [font, setFont] = useState('poppins');
27
+ const [color, setColor] = useState('#1E293B');
28
+ const [fill, setFill] = useState('transparent');
29
+ return (_jsxs(FloatingToolbar, { children: [_jsx(Select, { data: [
30
+ { label: 'Poppins', value: 'poppins' },
31
+ { label: 'Inter', value: 'inter' },
32
+ { label: 'Georgia', value: 'georgia' },
33
+ ], onChange: setFont, size: 'sm', style: { width: 140 }, value: font }), _jsx(Divider, { orientation: 'vertical' }), _jsx(IconButton, { "aria-label": 'Bold', variant: 'text', children: _jsx(IconBold, { size: 16 }) }), _jsx(IconButton, { "aria-label": 'Italic', variant: 'text', children: _jsx(IconItalic, { size: 16 }) }), _jsx(IconButton, { "aria-label": 'Underline', variant: 'text', children: _jsx(IconUnderline, { size: 16 }) }), _jsx(Divider, { orientation: 'vertical' }), _jsx(ColorPickerTrigger, { onChange: setColor, value: color, variant: 'fontColor' }), _jsx(ColorPickerTrigger, { onChange: setFill, value: fill, variant: 'fillColor' }), _jsx(Divider, { orientation: 'vertical' }), _jsx(IconButton, { "aria-label": 'Delete', variant: 'text', children: _jsx(IconTrash, { size: 16 }) })] }));
34
+ },
35
+ };
36
+ export const OverflowScroll = {
37
+ render: () => (_jsx("div", { style: { maxWidth: 320 }, children: _jsx(FloatingToolbar, { children: Array.from({ length: 12 }, (_, i) => `tool-${i + 1}`).map((key, i) => (_jsx(IconButton, { "aria-label": `Tool ${i + 1}`, variant: 'text', children: _jsx(IconBold, { size: 16 }) }, key))) }) })),
38
+ };
39
+ export const OverCanvas = {
40
+ render: () => (_jsx("div", { style: {
41
+ background: neutral[25],
42
+ border: `1px solid ${neutral[50]}`,
43
+ borderRadius: 8,
44
+ height: 320,
45
+ position: 'relative',
46
+ width: 480,
47
+ }, children: _jsx("div", { style: {
48
+ left: '50%',
49
+ position: 'absolute',
50
+ top: spacing.md,
51
+ transform: 'translateX(-50%)',
52
+ }, children: _jsxs(FloatingToolbar, { children: [_jsx(IconButton, { "aria-label": 'Bold', variant: 'text', children: _jsx(IconBold, { size: 16 }) }), _jsx(IconButton, { "aria-label": 'Italic', variant: 'text', children: _jsx(IconItalic, { size: 16 }) }), _jsx(Divider, { orientation: 'vertical' }), _jsx(IconButton, { "aria-label": 'Delete', variant: 'text', children: _jsx(IconTrash, { size: 16 }) })] }) }) })),
53
+ };
@@ -0,0 +1,50 @@
1
+ import { ReactNode } from 'react';
2
+ declare const componentVariants: {
3
+ readonly close: {
4
+ readonly Icon: import("react").ForwardRefExoticComponent<import("@tabler/icons-react").IconProps & import("react").RefAttributes<SVGSVGElement>>;
5
+ readonly color: "#6D6D6D";
6
+ readonly hoverColor: "#C10007";
7
+ };
8
+ readonly trash: {
9
+ readonly Icon: import("react").ForwardRefExoticComponent<import("@tabler/icons-react").IconProps & import("react").RefAttributes<SVGSVGElement>>;
10
+ readonly color: "#6D6D6D";
11
+ readonly hoverColor: "#C10007";
12
+ };
13
+ readonly edit: {
14
+ readonly Icon: import("react").ForwardRefExoticComponent<import("@tabler/icons-react").IconProps & import("react").RefAttributes<SVGSVGElement>>;
15
+ readonly color: "#6D6D6D";
16
+ readonly hoverColor: "#6F3FEE";
17
+ };
18
+ };
19
+ declare const componentSizes: {
20
+ readonly sm: {
21
+ readonly borderLength: 24;
22
+ readonly iconSize: 14;
23
+ };
24
+ readonly md: {
25
+ readonly borderLength: 32;
26
+ readonly iconSize: 18;
27
+ };
28
+ readonly lg: {
29
+ readonly borderLength: 44;
30
+ readonly iconSize: 24;
31
+ };
32
+ readonly xl: {
33
+ readonly borderLength: 56;
34
+ readonly iconSize: 30;
35
+ };
36
+ };
37
+ export interface HoverActionProps {
38
+ variant: keyof typeof componentVariants;
39
+ onClick: () => void;
40
+ children: ReactNode;
41
+ showBackground?: boolean;
42
+ offset?: number;
43
+ visible?: boolean;
44
+ iconSize?: number;
45
+ size?: keyof typeof componentSizes;
46
+ fullWidth?: boolean;
47
+ }
48
+ declare const HoverAction: ({ variant, onClick, children, showBackground, offset, visible, iconSize, size, fullWidth, }: HoverActionProps) => import("react").JSX.Element;
49
+ export { HoverAction };
50
+ //# sourceMappingURL=HoverAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HoverAction.d.ts","sourceRoot":"","sources":["../../../../src/components/Misc/HoverAction/HoverAction.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAc,MAAM,OAAO,CAAC;AAM9C,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAgBb,CAAC;AAEX,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;CAKV,CAAC;AAEX,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,OAAO,iBAAiB,CAAC;IACxC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,OAAO,cAAc,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,WAAW,GAAI,6FAUlB,gBAAgB,gCA4ClB,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ActionIcon, Box } from '@mantine/core';
3
+ import { useHover } from '@mantine/hooks';
4
+ import { IconX, IconTrash, IconPencil } from '@tabler/icons-react';
5
+ import { neutral, error, primary, white } from '../../../constants/colors';
6
+ const componentVariants = {
7
+ close: {
8
+ Icon: IconX,
9
+ color: neutral[200],
10
+ hoverColor: error[200],
11
+ },
12
+ trash: {
13
+ Icon: IconTrash,
14
+ color: neutral[200],
15
+ hoverColor: error[200],
16
+ },
17
+ edit: {
18
+ Icon: IconPencil,
19
+ color: neutral[200],
20
+ hoverColor: primary[200],
21
+ },
22
+ };
23
+ const componentSizes = {
24
+ sm: { borderLength: 24, iconSize: 14 },
25
+ md: { borderLength: 32, iconSize: 18 },
26
+ lg: { borderLength: 44, iconSize: 24 },
27
+ xl: { borderLength: 56, iconSize: 30 },
28
+ };
29
+ const HoverAction = ({ variant, onClick, children, showBackground = false, offset = 10, visible, iconSize, size = 'md', fullWidth = false, }) => {
30
+ const { ref, hovered } = useHover();
31
+ const { Icon, color, hoverColor } = componentVariants[variant];
32
+ const selectedSize = componentSizes[size];
33
+ const resolvedIconSize = iconSize !== null && iconSize !== void 0 ? iconSize : selectedSize.iconSize;
34
+ const isVisible = visible !== undefined ? visible : hovered;
35
+ const handleClick = (e) => {
36
+ e.preventDefault();
37
+ e.stopPropagation();
38
+ onClick();
39
+ };
40
+ return (_jsxs(Box, { ref: ref, sx: { position: 'relative', width: fullWidth ? '100%' : 'fit-content' }, children: [children, _jsx(ActionIcon, { onClick: handleClick, radius: 'xl', sx: {
41
+ position: 'absolute',
42
+ top: -offset,
43
+ right: -offset,
44
+ height: `${selectedSize.borderLength}px`,
45
+ width: `${selectedSize.borderLength}px`,
46
+ minHeight: `${selectedSize.borderLength}px`,
47
+ minWidth: `${selectedSize.borderLength}px`,
48
+ opacity: isVisible ? 1 : 0,
49
+ pointerEvents: isVisible ? 'auto' : 'none',
50
+ transition: 'opacity 0.15s ease-in-out, color 0.1s ease-in-out',
51
+ backgroundColor: showBackground ? white : 'transparent',
52
+ boxShadow: showBackground ? '0 2px 6px rgba(0, 0, 0, 0.12)' : 'none',
53
+ color,
54
+ '&:hover': {
55
+ backgroundColor: white,
56
+ color: hoverColor,
57
+ boxShadow: '0 2px 6px rgba(0, 0, 0, 0.12)',
58
+ },
59
+ }, children: _jsx(Icon, { size: resolvedIconSize }) })] }));
60
+ };
61
+ export { HoverAction };
@@ -0,0 +1,12 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { HoverAction } from './HoverAction';
3
+ declare const meta: Meta<typeof HoverAction>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof HoverAction>;
6
+ export declare const Default: Story;
7
+ export declare const Variants: Story;
8
+ export declare const HiddenUntilHover: Story;
9
+ export declare const AlwaysVisible: Story;
10
+ export declare const WrappingACard: Story;
11
+ export declare const CustomOffset: Story;
12
+ //# sourceMappingURL=HoverAction.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HoverAction.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/Misc/HoverAction/HoverAction.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA8B5C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAiClC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAE1C,eAAO,MAAM,OAAO,EAAE,KAWrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KActB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAc9B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAa3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAqB3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAc1B,CAAC"}
@@ -0,0 +1,96 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { HoverAction } from './HoverAction';
3
+ import { Card } from '../../Layout/Card/Card';
4
+ import { Group } from '../../Layout/Group/Group';
5
+ import { Stack } from '../../Layout/Stack/Stack';
6
+ import { Text } from '../../Typography/Text/Text';
7
+ import { Title } from '../../Typography/Title/Title';
8
+ import { spacing } from '../../../constants/spacing';
9
+ import { neutral } from '../../../constants/colors';
10
+ const SlidePreview = ({ label = 'Calamari' }) => (_jsxs(Stack, { gap: spacing.xs, children: [_jsx("div", { style: {
11
+ width: 160,
12
+ height: 110,
13
+ borderRadius: 8,
14
+ background: `linear-gradient(135deg, ${neutral[50]}, ${neutral[100]})`,
15
+ display: 'flex',
16
+ alignItems: 'center',
17
+ justifyContent: 'center',
18
+ }, children: _jsx(Text, { variant: 'label', style: { color: neutral[300] }, children: label }) }), _jsx(Text, { variant: 'label', children: label })] }));
19
+ const meta = {
20
+ title: 'Components/Misc/HoverAction',
21
+ component: HoverAction,
22
+ parameters: {
23
+ layout: 'centered',
24
+ docs: {
25
+ description: {
26
+ component: 'Wraps any content with a floating icon button pinned to the top-right corner. The button fades in when the wrapped content is hovered. Variants: close, trash, edit. Click handler is called with propagation stopped, so wrapping interactive cards is safe.',
27
+ },
28
+ },
29
+ },
30
+ argTypes: {
31
+ variant: {
32
+ control: { type: 'select' },
33
+ options: ['close', 'trash', 'edit'],
34
+ table: { defaultValue: { summary: "'close'" } },
35
+ },
36
+ showBackground: {
37
+ control: { type: 'boolean' },
38
+ description: 'Always show white circle background (vs transparent until hover)',
39
+ table: { defaultValue: { summary: 'false' } },
40
+ },
41
+ offset: {
42
+ control: { type: 'number' },
43
+ description: 'Pixels the button pokes out of the top-right corner',
44
+ table: { defaultValue: { summary: '10' } },
45
+ },
46
+ visible: {
47
+ control: { type: 'boolean' },
48
+ description: 'Manual override for visibility. When unset, button shows on hover.',
49
+ },
50
+ },
51
+ };
52
+ export default meta;
53
+ export const Default = {
54
+ args: {
55
+ variant: 'close',
56
+ showBackground: true,
57
+ offset: 10,
58
+ },
59
+ render: (args) => (_jsx(HoverAction, { ...args, onClick: () => console.log('clicked'), children: _jsx(SlidePreview, {}) })),
60
+ };
61
+ export const Variants = {
62
+ render: () => (_jsxs(Group, { gap: spacing.xl, children: [_jsx(HoverAction, { variant: 'close', showBackground: true, onClick: () => console.log('close'), children: _jsx(SlidePreview, { label: 'Close' }) }), _jsx(HoverAction, { variant: 'trash', showBackground: true, onClick: () => console.log('trash'), children: _jsx(SlidePreview, { label: 'Trash' }) }), _jsx(HoverAction, { variant: 'edit', showBackground: true, onClick: () => console.log('edit'), children: _jsx(SlidePreview, { label: 'Edit' }) })] })),
63
+ };
64
+ export const HiddenUntilHover = {
65
+ parameters: {
66
+ docs: {
67
+ description: {
68
+ story: 'With `showBackground={false}` (default), the button is fully hidden until the wrapper is hovered. Matches the Taiv app slide-preview pattern.',
69
+ },
70
+ },
71
+ },
72
+ render: () => (_jsx(HoverAction, { variant: 'close', onClick: () => console.log('close'), children: _jsx(SlidePreview, { label: 'Hover me' }) })),
73
+ };
74
+ export const AlwaysVisible = {
75
+ parameters: {
76
+ docs: {
77
+ description: {
78
+ story: 'Pass `visible` explicitly to bypass the internal hover state.',
79
+ },
80
+ },
81
+ },
82
+ render: () => (_jsx(HoverAction, { variant: 'trash', showBackground: true, visible: true, onClick: () => console.log('delete'), children: _jsx(SlidePreview, { label: 'Always shown' }) })),
83
+ };
84
+ export const WrappingACard = {
85
+ parameters: {
86
+ docs: {
87
+ description: {
88
+ story: 'Wrapping an interactive Card. Clicking the close button stops propagation — the card onClick does not fire.',
89
+ },
90
+ },
91
+ },
92
+ render: () => (_jsx(HoverAction, { variant: 'close', showBackground: true, onClick: () => alert('Removed!'), children: _jsx("div", { onClick: () => alert('Card clicked'), style: { cursor: 'pointer', width: 240 }, children: _jsx(Card, { children: _jsxs(Stack, { gap: spacing.xs, children: [_jsx(Title, { variant: 'cardHeader', children: "Calamari" }), _jsx(Text, { variant: 'subtle', children: "Crispy. Hot. Delicious." })] }) }) }) })),
93
+ };
94
+ export const CustomOffset = {
95
+ render: () => (_jsxs(Group, { gap: spacing.xl, children: [_jsx(HoverAction, { variant: 'close', showBackground: true, offset: 0, onClick: () => { }, children: _jsx(SlidePreview, { label: 'offset=0' }) }), _jsx(HoverAction, { variant: 'close', showBackground: true, offset: 10, onClick: () => { }, children: _jsx(SlidePreview, { label: 'offset=10' }) }), _jsx(HoverAction, { variant: 'close', showBackground: true, offset: 20, onClick: () => { }, children: _jsx(SlidePreview, { label: 'offset=20' }) })] })),
96
+ };
@@ -4,5 +4,5 @@ export interface IconBadgeProps {
4
4
  icon: React.ReactNode;
5
5
  color: keyof typeof primitives;
6
6
  }
7
- export declare const IconBadge: ({ icon, color }: IconBadgeProps) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const IconBadge: ({ icon, color }: IconBadgeProps) => React.JSX.Element;
8
8
  //# sourceMappingURL=IconBadge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconBadge.d.ts","sourceRoot":"","sources":["../../../../src/components/Misc/IconBadge/IconBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,EAAE,MAAM,OAAO,UAAU,CAAC;CAChC;AAED,eAAO,MAAM,SAAS,GAAI,iBAAiB,cAAc,4CAgCxD,CAAC"}
1
+ {"version":3,"file":"IconBadge.d.ts","sourceRoot":"","sources":["../../../../src/components/Misc/IconBadge/IconBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,EAAE,MAAM,OAAO,UAAU,CAAC;CAChC;AAED,eAAO,MAAM,SAAS,GAAI,iBAAiB,cAAc,sBAoCxD,CAAC"}
@@ -4,25 +4,27 @@ import { primitives } from '../../../constants/colors';
4
4
  export const IconBadge = ({ icon, color }) => {
5
5
  const getIconColors = () => {
6
6
  return {
7
- background: primitives[color][50],
7
+ background: primitives[color][25],
8
8
  icon: primitives[color][200],
9
9
  };
10
10
  };
11
11
  const getIconSize = () => {
12
- if (React.isValidElement(icon) && icon.props && typeof icon.props.size === 'number') {
12
+ if (React.isValidElement(icon) &&
13
+ icon.props &&
14
+ typeof icon.props.size === 'number') {
13
15
  const iconSize = icon.props.size;
14
16
  const badgeSize = iconSize + 12;
15
17
  return `${badgeSize}px`;
16
18
  }
17
19
  };
18
20
  return (_jsx("div", { style: {
19
- width: getIconSize(),
20
- height: getIconSize(),
21
- borderRadius: '50%',
21
+ alignItems: 'center',
22
22
  backgroundColor: getIconColors().background,
23
+ borderRadius: '50%',
23
24
  color: getIconColors().icon,
24
25
  display: 'flex',
25
- alignItems: 'center',
26
+ height: getIconSize(),
26
27
  justifyContent: 'center',
28
+ width: getIconSize(),
27
29
  }, children: icon }));
28
30
  };
@@ -0,0 +1,3 @@
1
+ export { Image } from '@mantine/core';
2
+ export type { ImageProps } from '@mantine/core';
3
+ //# sourceMappingURL=Image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../../src/components/Misc/Image/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1 @@
1
+ export { Image } from '@mantine/core';
@@ -0,0 +1,11 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { Image } from './Image';
3
+ declare const meta: Meta<typeof Image>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Image>;
6
+ export declare const Default: Story;
7
+ export declare const Fits: Story;
8
+ export declare const Radii: Story;
9
+ export declare const WithPlaceholder: Story;
10
+ export declare const WithCaption: Story;
11
+ //# sourceMappingURL=Image.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Image.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/Misc/Image/Image.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAQhC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,CA0B5B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AAEpC,eAAO,MAAM,OAAO,EAAE,KASrB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAWlB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAWnB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KA6B7B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAYzB,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Image } from './Image';
3
+ import { Group } from '../../Layout/Group/Group';
4
+ import { Stack } from '../../Layout/Stack/Stack';
5
+ import { Text } from '../../Typography/Text/Text';
6
+ import { spacing } from '../../../constants/spacing';
7
+ const SAMPLE_SRC = 'https://images.unsplash.com/photo-1511216335778-7cb8f49fa7a3?w=600';
8
+ const meta = {
9
+ title: 'Components/Misc/Image',
10
+ component: Image,
11
+ parameters: {
12
+ layout: 'centered',
13
+ docs: {
14
+ description: {
15
+ component: 'Re-export of Mantine Image. Handles object-fit, placeholders, captions, and loading/error states. Use this instead of raw <img> so placeholder and caption behavior stays consistent.',
16
+ },
17
+ },
18
+ },
19
+ argTypes: {
20
+ fit: {
21
+ control: { type: 'select' },
22
+ options: ['cover', 'contain', 'fill', 'none', 'scale-down'],
23
+ table: { defaultValue: { summary: "'cover'" } },
24
+ },
25
+ radius: {
26
+ control: { type: 'select' },
27
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
28
+ },
29
+ withPlaceholder: {
30
+ control: { type: 'boolean' },
31
+ },
32
+ },
33
+ };
34
+ export default meta;
35
+ export const Default = {
36
+ args: {
37
+ src: SAMPLE_SRC,
38
+ alt: 'Sample',
39
+ width: 320,
40
+ height: 200,
41
+ fit: 'cover',
42
+ radius: 'md',
43
+ },
44
+ };
45
+ export const Fits = {
46
+ render: () => (_jsx(Group, { gap: spacing.lg, align: 'flex-start', children: ['cover', 'contain', 'fill'].map((fit) => (_jsxs(Stack, { gap: spacing.xs, align: 'center', children: [_jsx(Image, { src: SAMPLE_SRC, alt: fit, width: 180, height: 120, fit: fit, radius: 'md' }), _jsx(Text, { variant: 'label', children: fit })] }, fit))) })),
47
+ };
48
+ export const Radii = {
49
+ render: () => (_jsx(Group, { gap: spacing.lg, children: ['xs', 'md', 'xl'].map((radius) => (_jsxs(Stack, { gap: spacing.xs, align: 'center', children: [_jsx(Image, { src: SAMPLE_SRC, alt: radius, width: 140, height: 140, fit: 'cover', radius: radius }), _jsxs(Text, { variant: 'label', children: ["radius=", radius] })] }, radius))) })),
50
+ };
51
+ export const WithPlaceholder = {
52
+ parameters: {
53
+ docs: {
54
+ description: {
55
+ story: 'When the src fails or is missing, `withPlaceholder` renders a fallback.',
56
+ },
57
+ },
58
+ },
59
+ render: () => (_jsxs(Group, { gap: spacing.lg, children: [_jsx(Image, { src: 'https://invalid.example.com/does-not-exist.jpg', alt: 'broken', width: 200, height: 140, radius: 'md', withPlaceholder: true }), _jsx(Image, { src: null, alt: 'none', width: 200, height: 140, radius: 'md', withPlaceholder: true, placeholder: _jsx(Text, { variant: 'label', children: "No image" }) })] })),
60
+ };
61
+ export const WithCaption = {
62
+ render: () => (_jsx(Image, { src: SAMPLE_SRC, alt: 'Ocean sunset', width: 320, height: 200, fit: 'cover', radius: 'md', caption: 'Pacific ocean, golden hour' })),
63
+ };