@react-fabric/core 1.0.0-beta.6 → 1.0.0-beta.61

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 (429) hide show
  1. package/{src/components/actionLabel/ActionLabel.module.css → css/components/_actionLabel.css} +4 -4
  2. package/{src/overlays/alert/Alert.module.css → css/components/_alert.css} +3 -3
  3. package/{src/components/animations/Animations.module.css → css/components/_animations.css} +9 -9
  4. package/{src/components/avatar/Avatar.module.css → css/components/_avatar.css} +11 -11
  5. package/{src/components/badge/Badge.module.css → css/components/_badge.css} +19 -17
  6. package/{src/components/breadcrumbs/Breadcrumbs.module.css → css/components/_breadcrumbs.css} +52 -47
  7. package/{src/components/button/Button.module.css → css/components/_button.css} +86 -84
  8. package/{src/components/card/Card.module.css → css/components/_card.css} +54 -28
  9. package/{src/components/chip/Chip.module.css → css/components/_chip.css} +14 -10
  10. package/{src/components/collapsable/Collapsable.module.css → css/components/_collapsable.css} +3 -3
  11. package/css/components/_divider.css +38 -0
  12. package/{src/components/dropdown/Dropdown.module.css → css/components/_dropdown.css} +2 -2
  13. package/{src/overlays/flyout/Flyout.module.css → css/components/_flyout.css} +6 -6
  14. package/{src/components/icon/Icon.module.css → css/components/_icon.css} +12 -9
  15. package/{src/components/media/Media.module.css → css/components/_media.css} +17 -17
  16. package/{src/components/menu/Menu.module.css → css/components/_menu.css} +21 -20
  17. package/{src/overlays/message/Message.module.css → css/components/_message.css} +2 -2
  18. package/{src/components/meter/Meter.module.css → css/components/_meter.css} +10 -10
  19. package/{src/overlays/modal/Modal.module.css → css/components/_modal.css} +8 -8
  20. package/{src/components/panel/Panel.module.css → css/components/_panel.css} +17 -17
  21. package/{src/components/progress/Progress.module.css → css/components/_progress.css} +7 -10
  22. package/css/components/_stepper.css +86 -0
  23. package/{src/components/tabpanel/TabPanel.module.css → css/components/_tabPanel.css} +130 -85
  24. package/{src/overlays/toast/Toast.module.css → css/components/_toast.css} +2 -2
  25. package/css/components/_tooltip.css +29 -0
  26. package/{src/core/content/Content.module.css → css/components/index.css} +26 -18
  27. package/{src/core/aside/Aside.module.css → css/core/_aside.css} +60 -48
  28. package/{src/core/section/Section.module.css → css/core/_content.css} +5 -3
  29. package/{src/core/boundary/ErrorBoundary.module.css → css/core/_errorboundary.css} +9 -9
  30. package/{src/core/headfoot/HeadFoot.module.css → css/core/_headfoot.css} +4 -10
  31. package/{src/core/page/Page.module.css → css/core/_page.css} +10 -14
  32. package/{src/core/responsive/Responsive.module.css → css/core/_responsive.css} +10 -10
  33. package/css/core/_section.css +28 -0
  34. package/{src/core/theme/Theme.module.css → css/core/_theme.css} +3 -3
  35. package/{src/typography/Typography.module.css → css/core/_typography.css} +14 -12
  36. package/{src/core/viewport/Viewport.module.css → css/core/_viewport.css} +7 -3
  37. package/css/core/index.css +33 -0
  38. package/css/reset/_gradients.css +8 -8
  39. package/css/reset/_reset.css +56 -224
  40. package/css/reset/_text.css +14 -29
  41. package/css/reset/_theme.css +331 -52
  42. package/css/reset/index.css +4 -4
  43. package/css/styles.css +9 -6
  44. package/css/theme/_colors.css +320 -0
  45. package/css/theme/_utilities.css +541 -0
  46. package/css/theme/index.css +45 -0
  47. package/dist/cjs/components/actionLabel/ActionLabel.js +26 -8
  48. package/dist/cjs/components/animations/Animations.js +137 -45
  49. package/dist/cjs/components/avatar/Avatar.js +46 -13
  50. package/dist/cjs/components/avatar/AvatarGroup.js +22 -4
  51. package/dist/cjs/components/badge/Badge.js +36 -15
  52. package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +40 -9
  53. package/dist/cjs/components/button/Button.js +51 -29
  54. package/dist/cjs/components/button/ButtonGroup.js +30 -3
  55. package/dist/cjs/components/button/ConfirmButton.js +28 -2
  56. package/dist/cjs/components/button/ToggleButtonGroup.js +41 -15
  57. package/dist/cjs/components/callout/Callout.js +47 -7
  58. package/dist/cjs/components/card/Card.js +60 -18
  59. package/dist/cjs/components/card/CardCover.js +36 -5
  60. package/dist/cjs/components/card/FlipContent.js +56 -0
  61. package/dist/cjs/components/chip/Chip.js +40 -20
  62. package/dist/cjs/components/collapsable/Collapsable.js +32 -8
  63. package/dist/cjs/components/divider/Divider.js +30 -7
  64. package/dist/cjs/components/dropdown/Dropdown.js +48 -9
  65. package/dist/cjs/components/dropdown/DropdownTool.js +2 -3
  66. package/dist/cjs/components/empty/EmptyContent.js +37 -7
  67. package/dist/cjs/components/icon/Icon.js +76 -13
  68. package/dist/cjs/components/media/Media.js +174 -76
  69. package/dist/cjs/components/menu/ContextMenu.js +19 -0
  70. package/dist/cjs/components/menu/Menu.js +77 -23
  71. package/dist/cjs/components/menu/MenuItem.js +54 -27
  72. package/dist/cjs/components/meter/Meter.js +26 -3
  73. package/dist/cjs/components/navigator/Navigator.js +50 -18
  74. package/dist/cjs/components/panel/Panel.js +59 -28
  75. package/dist/cjs/components/panel/PanelGroup.js +25 -2
  76. package/dist/cjs/components/panel/PanelStack.js +31 -2
  77. package/dist/cjs/components/progress/ProgressBar.js +31 -9
  78. package/dist/cjs/components/progress/ProgressCircle.js +29 -7
  79. package/dist/cjs/components/tabpanel/Tab.js +39 -16
  80. package/dist/cjs/components/tabpanel/TabPanel.js +56 -16
  81. package/dist/cjs/context/Global.js +28 -1
  82. package/dist/cjs/context/NotificationCenter.js +3 -3
  83. package/dist/cjs/core/aside/Aside.js +50 -25
  84. package/dist/cjs/core/boundary/ErrorBoundary.js +25 -8
  85. package/dist/cjs/core/boundary/ErrorIcon.js +1 -2
  86. package/dist/cjs/core/content/Content.js +7 -3
  87. package/dist/cjs/core/headfoot/HeadFoot.js +48 -22
  88. package/dist/cjs/core/page/Page.js +41 -40
  89. package/dist/cjs/core/responsive/Responsive.js +59 -6
  90. package/dist/cjs/core/section/Section.js +12 -29
  91. package/dist/cjs/core/theme/ThemeProvider.js +32 -10
  92. package/dist/cjs/core/viewport/Viewport.js +18 -2
  93. package/dist/cjs/hooks/useControlledValue.js +12 -0
  94. package/dist/cjs/hooks/useDebounce.js +14 -1
  95. package/dist/cjs/hooks/useEffectDebugger.js +54 -2
  96. package/dist/cjs/hooks/useIsDark.js +8 -0
  97. package/dist/cjs/hooks/useIsRtl.js +12 -0
  98. package/dist/cjs/hooks/useNavigator.js +6 -4
  99. package/dist/cjs/hooks/useOverlayService.js +24 -0
  100. package/dist/cjs/hooks/usePropToggle.js +16 -5
  101. package/dist/cjs/hooks/useResize.js +18 -0
  102. package/dist/cjs/hooks/useResizeObserver.js +20 -1
  103. package/dist/cjs/hooks/useStepper.js +74 -0
  104. package/dist/cjs/hooks/useStorage.js +39 -0
  105. package/dist/cjs/hotkeys/HotKeyLabel.js +1 -1
  106. package/dist/cjs/hotkeys/HotKeyWrapper.js +3 -1
  107. package/dist/cjs/index.js +14 -10
  108. package/dist/cjs/overlays/alert/Alert.js +24 -17
  109. package/dist/cjs/overlays/flyout/Flyout.js +48 -65
  110. package/dist/cjs/overlays/message/Message.js +8 -3
  111. package/dist/cjs/overlays/modal/Modal.js +19 -23
  112. package/dist/cjs/overlays/toast/Toast.js +22 -13
  113. package/dist/cjs/overlays/tooltip/Tooltip.js +25 -13
  114. package/dist/cjs/typography/Abbr.js +35 -7
  115. package/dist/cjs/typography/{Link.js → Anchor.js} +23 -5
  116. package/dist/cjs/typography/Copy.js +1 -2
  117. package/dist/cjs/typography/Mark.js +25 -5
  118. package/dist/cjs/typography/Text.js +30 -5
  119. package/dist/cjs/typography/Title.js +19 -4
  120. package/dist/cjs/utils/cloneElement.js +47 -0
  121. package/dist/cjs/utils/getColor.js +1 -18
  122. package/dist/esm/components/actionLabel/ActionLabel.js +26 -8
  123. package/dist/esm/components/animations/Animations.js +135 -44
  124. package/dist/esm/components/avatar/Avatar.js +46 -13
  125. package/dist/esm/components/avatar/AvatarGroup.js +22 -4
  126. package/dist/esm/components/badge/Badge.js +38 -17
  127. package/dist/esm/components/breadcrumbs/Breadcrumbs.js +40 -9
  128. package/dist/esm/components/button/Button.js +53 -31
  129. package/dist/esm/components/button/ButtonGroup.js +31 -4
  130. package/dist/esm/components/button/ConfirmButton.js +28 -2
  131. package/dist/esm/components/button/ToggleButtonGroup.js +42 -16
  132. package/dist/esm/components/callout/Callout.js +47 -7
  133. package/dist/esm/components/card/Card.js +61 -19
  134. package/dist/esm/components/card/CardCover.js +36 -5
  135. package/dist/esm/components/card/FlipContent.js +56 -0
  136. package/dist/esm/components/chip/Chip.js +42 -22
  137. package/dist/esm/components/collapsable/Collapsable.js +32 -8
  138. package/dist/esm/components/divider/Divider.js +31 -8
  139. package/dist/esm/components/dropdown/Dropdown.js +48 -9
  140. package/dist/esm/components/dropdown/DropdownTool.js +2 -3
  141. package/dist/esm/components/empty/EmptyContent.js +37 -7
  142. package/dist/esm/components/icon/Icon.js +78 -16
  143. package/dist/esm/components/media/Media.js +175 -77
  144. package/dist/esm/components/menu/ContextMenu.js +19 -0
  145. package/dist/esm/components/menu/Menu.js +79 -25
  146. package/dist/esm/components/menu/MenuItem.js +49 -22
  147. package/dist/esm/components/meter/Meter.js +26 -3
  148. package/dist/esm/components/navigator/Navigator.js +50 -18
  149. package/dist/esm/components/panel/Panel.js +61 -30
  150. package/dist/esm/components/panel/PanelGroup.js +25 -2
  151. package/dist/esm/components/panel/PanelStack.js +31 -2
  152. package/dist/esm/components/progress/ProgressBar.js +31 -9
  153. package/dist/esm/components/progress/ProgressCircle.js +29 -7
  154. package/dist/esm/components/tabpanel/Tab.js +40 -17
  155. package/dist/esm/components/tabpanel/TabPanel.js +56 -16
  156. package/dist/esm/context/Global.js +28 -1
  157. package/dist/esm/context/NotificationCenter.js +3 -3
  158. package/dist/esm/core/aside/Aside.js +52 -27
  159. package/dist/esm/core/boundary/ErrorBoundary.js +25 -8
  160. package/dist/esm/core/boundary/ErrorIcon.js +1 -2
  161. package/dist/esm/core/content/Content.js +7 -3
  162. package/dist/esm/core/headfoot/HeadFoot.js +48 -22
  163. package/dist/esm/core/page/Page.js +43 -42
  164. package/dist/esm/core/responsive/Responsive.js +59 -6
  165. package/dist/esm/core/section/Section.js +12 -29
  166. package/dist/esm/core/theme/ThemeProvider.js +32 -10
  167. package/dist/esm/core/viewport/Viewport.js +18 -2
  168. package/dist/esm/hooks/useControlledValue.js +12 -0
  169. package/dist/esm/hooks/useDebounce.js +14 -1
  170. package/dist/esm/hooks/useEffectDebugger.js +54 -2
  171. package/dist/esm/hooks/useIsDark.js +8 -0
  172. package/dist/esm/hooks/useIsRtl.js +12 -0
  173. package/dist/esm/hooks/useNavigator.js +7 -5
  174. package/dist/esm/hooks/useOverlayService.js +24 -0
  175. package/dist/esm/hooks/usePropToggle.js +16 -5
  176. package/dist/esm/hooks/useResize.js +18 -0
  177. package/dist/esm/hooks/useResizeObserver.js +20 -1
  178. package/dist/esm/hooks/useStepper.js +74 -0
  179. package/dist/esm/hooks/useStorage.js +39 -0
  180. package/dist/esm/hotkeys/HotKeyLabel.js +1 -1
  181. package/dist/esm/hotkeys/HotKeyWrapper.js +3 -1
  182. package/dist/esm/index.js +7 -4
  183. package/dist/esm/overlays/alert/Alert.js +25 -18
  184. package/dist/esm/overlays/flyout/Flyout.js +53 -70
  185. package/dist/esm/overlays/message/Message.js +9 -4
  186. package/dist/esm/overlays/modal/Modal.js +22 -26
  187. package/dist/esm/overlays/toast/Toast.js +23 -14
  188. package/dist/esm/overlays/tooltip/Tooltip.js +25 -13
  189. package/dist/esm/typography/Abbr.js +35 -7
  190. package/dist/esm/typography/{Link.js → Anchor.js} +24 -6
  191. package/dist/esm/typography/Copy.js +1 -2
  192. package/dist/esm/typography/Mark.js +25 -5
  193. package/dist/esm/typography/Text.js +31 -6
  194. package/dist/esm/typography/Title.js +20 -5
  195. package/dist/esm/utils/cloneElement.js +47 -0
  196. package/dist/esm/utils/getColor.js +2 -16
  197. package/dist/types/components/actionLabel/ActionLabel.d.ts +21 -2
  198. package/dist/types/components/animations/Animations.d.ts +105 -7
  199. package/dist/types/components/avatar/Avatar.d.ts +34 -6
  200. package/dist/types/components/avatar/AvatarGroup.d.ts +19 -1
  201. package/dist/types/components/badge/Badge.d.ts +37 -3
  202. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +31 -2
  203. package/dist/types/components/button/Button.d.ts +39 -7
  204. package/dist/types/components/button/ButtonGroup.d.ts +28 -3
  205. package/dist/types/components/button/ConfirmButton.d.ts +23 -3
  206. package/dist/types/components/button/ToggleButtonGroup.d.ts +39 -11
  207. package/dist/types/components/callout/Callout.d.ts +29 -3
  208. package/dist/types/components/card/Card.d.ts +44 -4
  209. package/dist/types/components/card/CardCover.d.ts +25 -0
  210. package/dist/types/components/card/FlipContent.d.ts +28 -0
  211. package/dist/types/components/chip/Chip.d.ts +34 -5
  212. package/dist/types/components/collapsable/Collapsable.d.ts +28 -2
  213. package/dist/types/components/divider/Divider.d.ts +30 -7
  214. package/dist/types/components/dropdown/Dropdown.d.ts +40 -1
  215. package/dist/types/components/dropdown/DropdownTool.d.ts +25 -0
  216. package/dist/types/components/empty/EmptyContent.d.ts +32 -3
  217. package/dist/types/components/icon/Icon.d.ts +40 -8
  218. package/dist/types/components/index.d.ts +3 -2
  219. package/dist/types/components/media/Media.d.ts +54 -0
  220. package/dist/types/components/menu/ContextMenu.d.ts +19 -1
  221. package/dist/types/components/menu/Menu.d.ts +29 -0
  222. package/dist/types/components/menu/MenuItem.d.ts +22 -2
  223. package/dist/types/components/menu/types.d.ts +9 -3
  224. package/dist/types/components/meter/Meter.d.ts +24 -0
  225. package/dist/types/components/navigator/Navigator.d.ts +29 -4
  226. package/dist/types/components/panel/Panel.d.ts +43 -4
  227. package/dist/types/components/panel/PanelGroup.d.ts +24 -0
  228. package/dist/types/components/panel/PanelStack.d.ts +31 -0
  229. package/dist/types/components/progress/ProgressBar.d.ts +23 -3
  230. package/dist/types/components/progress/ProgressCircle.d.ts +22 -3
  231. package/dist/types/components/tabpanel/Tab.d.ts +38 -4
  232. package/dist/types/components/tabpanel/TabPanel.d.ts +51 -2
  233. package/dist/types/context/Global.d.ts +24 -1
  234. package/dist/types/core/aside/Aside.d.ts +45 -6
  235. package/dist/types/core/boundary/ErrorBoundary.d.ts +18 -2
  236. package/dist/types/core/content/Content.d.ts +6 -1
  237. package/dist/types/core/headfoot/HeadFoot.d.ts +41 -9
  238. package/dist/types/core/page/Page.d.ts +32 -4
  239. package/dist/types/core/responsive/Responsive.d.ts +58 -3
  240. package/dist/types/core/section/Section.d.ts +18 -3
  241. package/dist/types/core/theme/ThemeProvider.d.ts +25 -5
  242. package/dist/types/core/viewport/Viewport.d.ts +15 -1
  243. package/dist/types/hooks/useControlledValue.d.ts +13 -2
  244. package/dist/types/hooks/useDebounce.d.ts +12 -0
  245. package/dist/types/hooks/useEffectDebugger.d.ts +49 -0
  246. package/dist/types/hooks/useIsDark.d.ts +8 -0
  247. package/dist/types/hooks/useIsRtl.d.ts +12 -0
  248. package/dist/types/hooks/useNavigator.d.ts +18 -1
  249. package/dist/types/hooks/useOverlayService.d.ts +28 -9
  250. package/dist/types/hooks/usePropToggle.d.ts +16 -5
  251. package/dist/types/hooks/useResize.d.ts +19 -1
  252. package/dist/types/hooks/useResizeObserver.d.ts +20 -1
  253. package/dist/types/hooks/useStepper.d.ts +14 -0
  254. package/dist/types/hooks/useStorage.d.ts +38 -0
  255. package/dist/types/index.d.ts +4 -1
  256. package/dist/types/overlays/alert/Alert.d.ts +16 -5
  257. package/dist/types/overlays/flyout/Flyout.d.ts +9 -4
  258. package/dist/types/overlays/message/Message.d.ts +16 -5
  259. package/dist/types/overlays/modal/Modal.d.ts +13 -4
  260. package/dist/types/overlays/toast/Toast.d.ts +16 -5
  261. package/dist/types/overlays/tooltip/Tooltip.d.ts +2 -2
  262. package/dist/types/types/index.d.ts +28 -24
  263. package/dist/types/typography/Abbr.d.ts +34 -4
  264. package/dist/types/typography/Anchor.d.ts +42 -0
  265. package/dist/types/typography/Copy.d.ts +15 -0
  266. package/dist/types/typography/Mark.d.ts +22 -4
  267. package/dist/types/typography/Text.d.ts +27 -1
  268. package/dist/types/typography/Title.d.ts +16 -1
  269. package/dist/types/typography/index.d.ts +1 -1
  270. package/dist/types/utils/cloneElement.d.ts +1 -0
  271. package/dist/types/utils/getColor.d.ts +1 -4
  272. package/dist/types/utils/index.d.ts +1 -0
  273. package/package.json +17 -16
  274. package/src/components/actionLabel/ActionLabel.tsx +26 -8
  275. package/src/components/animations/Animations.tsx +139 -52
  276. package/src/components/avatar/Avatar.tsx +51 -15
  277. package/src/components/avatar/AvatarGroup.tsx +23 -5
  278. package/src/components/badge/Badge.tsx +50 -22
  279. package/src/components/breadcrumbs/Breadcrumbs.tsx +43 -10
  280. package/src/components/button/Button.tsx +75 -43
  281. package/src/components/button/ButtonGroup.tsx +33 -7
  282. package/src/components/button/ConfirmButton.tsx +31 -3
  283. package/src/components/button/ToggleButtonGroup.tsx +74 -47
  284. package/src/components/callout/Callout.tsx +58 -16
  285. package/src/components/card/Card.tsx +84 -25
  286. package/src/components/card/CardCover.tsx +36 -6
  287. package/src/components/card/FlipContent.tsx +90 -0
  288. package/src/components/chip/Chip.tsx +53 -25
  289. package/src/components/collapsable/Collapsable.tsx +35 -11
  290. package/src/components/divider/Divider.tsx +42 -16
  291. package/src/components/dropdown/Dropdown.tsx +47 -12
  292. package/src/components/dropdown/DropdownTool.tsx +28 -4
  293. package/src/components/empty/EmptyContent.tsx +49 -8
  294. package/src/components/icon/Icon.tsx +96 -18
  295. package/src/components/index.ts +5 -4
  296. package/src/components/media/Media.tsx +193 -105
  297. package/src/components/menu/ContextMenu.tsx +19 -0
  298. package/src/components/menu/Menu.tsx +88 -32
  299. package/src/components/menu/MenuItem.tsx +44 -19
  300. package/src/components/menu/types.ts +9 -8
  301. package/src/components/meter/Meter.tsx +27 -4
  302. package/src/components/navigator/Navigator.tsx +60 -12
  303. package/src/components/panel/Panel.tsx +66 -28
  304. package/src/components/panel/PanelGroup.tsx +25 -2
  305. package/src/components/panel/PanelStack.tsx +33 -2
  306. package/src/components/progress/ProgressBar.tsx +33 -14
  307. package/src/components/progress/ProgressCircle.tsx +29 -13
  308. package/src/components/tabpanel/Tab.tsx +47 -24
  309. package/src/components/tabpanel/TabPanel.tsx +79 -13
  310. package/src/context/Global.tsx +28 -1
  311. package/src/context/NotificationCenter.tsx +3 -3
  312. package/src/core/aside/Aside.tsx +59 -38
  313. package/src/core/boundary/ErrorBoundary.tsx +26 -8
  314. package/src/core/boundary/ErrorIcon.tsx +1 -2
  315. package/src/core/content/Content.tsx +7 -3
  316. package/src/core/headfoot/HeadFoot.tsx +44 -37
  317. package/src/core/page/Page.tsx +44 -22
  318. package/src/core/responsive/Responsive.tsx +66 -8
  319. package/src/core/section/Section.tsx +26 -4
  320. package/src/core/theme/ThemeProvider.tsx +35 -14
  321. package/src/core/viewport/Viewport.tsx +16 -3
  322. package/src/hooks/useControlledValue.tsx +12 -0
  323. package/src/hooks/useDebounce.ts +13 -1
  324. package/src/hooks/useEffectDebugger.ts +50 -2
  325. package/src/hooks/useIsDark.ts +8 -0
  326. package/src/hooks/useIsRtl.ts +12 -0
  327. package/src/hooks/useNavigator.tsx +28 -5
  328. package/src/hooks/useOverlayService.tsx +33 -8
  329. package/src/hooks/usePropToggle.ts +16 -5
  330. package/src/hooks/useResize.ts +19 -1
  331. package/src/hooks/useResizeObserver.ts +32 -9
  332. package/src/hooks/useStepper.tsx +68 -0
  333. package/src/hooks/useStorage.ts +38 -0
  334. package/src/hotkeys/HotKeyLabel.tsx +1 -1
  335. package/src/hotkeys/HotKeyWrapper.tsx +3 -1
  336. package/src/index.ts +5 -1
  337. package/src/overlays/alert/Alert.tsx +51 -36
  338. package/src/overlays/flyout/Flyout.tsx +74 -99
  339. package/src/overlays/message/Message.tsx +28 -9
  340. package/src/overlays/modal/Modal.tsx +39 -34
  341. package/src/overlays/toast/Toast.tsx +44 -33
  342. package/src/overlays/tooltip/Tooltip.tsx +44 -20
  343. package/src/types/global.d.ts +8 -0
  344. package/src/types/index.ts +293 -47
  345. package/src/typography/Abbr.tsx +45 -11
  346. package/src/typography/{Link.tsx → Anchor.tsx} +26 -14
  347. package/src/typography/Copy.tsx +16 -2
  348. package/src/typography/Mark.tsx +25 -10
  349. package/src/typography/Text.tsx +31 -13
  350. package/src/typography/Title.tsx +18 -7
  351. package/src/typography/index.ts +1 -1
  352. package/src/{overlays/tooltip/Tooltip.module.css → utils/cloneElement.ts} +21 -27
  353. package/src/utils/getColor.ts +1 -17
  354. package/src/utils/index.ts +1 -0
  355. package/css/flags.rect.css +0 -1607
  356. package/css/flags.wavy.css +0 -1606
  357. package/css/index.js +0 -250
  358. package/css/tailwind/colors.ts +0 -158
  359. package/dist/cjs/components/actionLabel/ActionLabel.module.css +0 -1
  360. package/dist/cjs/components/animations/Animations.module.css +0 -1
  361. package/dist/cjs/components/avatar/Avatar.module.css +0 -1
  362. package/dist/cjs/components/badge/Badge.module.css +0 -1
  363. package/dist/cjs/components/breadcrumbs/Breadcrumbs.module.css +0 -1
  364. package/dist/cjs/components/button/Button.module.css +0 -1
  365. package/dist/cjs/components/card/Card.module.css +0 -1
  366. package/dist/cjs/components/chip/Chip.module.css +0 -1
  367. package/dist/cjs/components/collapsable/Collapsable.module.css +0 -1
  368. package/dist/cjs/components/dropdown/Dropdown.module.css +0 -1
  369. package/dist/cjs/components/icon/Icon.module.css +0 -1
  370. package/dist/cjs/components/media/Media.module.css +0 -1
  371. package/dist/cjs/components/menu/Menu.module.css +0 -1
  372. package/dist/cjs/components/meter/Meter.module.css +0 -1
  373. package/dist/cjs/components/panel/Panel.module.css +0 -1
  374. package/dist/cjs/components/progress/Progress.module.css +0 -1
  375. package/dist/cjs/components/tabpanel/TabPanel.module.css +0 -1
  376. package/dist/cjs/core/aside/Aside.module.css +0 -1
  377. package/dist/cjs/core/boundary/ErrorBoundary.module.css +0 -1
  378. package/dist/cjs/core/content/Content.module.css +0 -1
  379. package/dist/cjs/core/headfoot/HeadFoot.module.css +0 -1
  380. package/dist/cjs/core/page/Page.module.css +0 -1
  381. package/dist/cjs/core/responsive/Responsive.module.css +0 -1
  382. package/dist/cjs/core/section/Section.module.css +0 -1
  383. package/dist/cjs/core/theme/Theme.module.css +0 -1
  384. package/dist/cjs/core/viewport/Viewport.module.css +0 -1
  385. package/dist/cjs/overlays/alert/Alert.module.css +0 -1
  386. package/dist/cjs/overlays/flyout/Flyout.module.css +0 -1
  387. package/dist/cjs/overlays/message/Message.module.css +0 -1
  388. package/dist/cjs/overlays/modal/Modal.module.css +0 -1
  389. package/dist/cjs/overlays/toast/Toast.module.css +0 -1
  390. package/dist/cjs/overlays/tooltip/Tooltip.module.css +0 -1
  391. package/dist/cjs/types/icons.js +0 -199
  392. package/dist/cjs/typography/Typography.module.css +0 -1
  393. package/dist/esm/components/actionLabel/ActionLabel.module.css +0 -1
  394. package/dist/esm/components/animations/Animations.module.css +0 -1
  395. package/dist/esm/components/avatar/Avatar.module.css +0 -1
  396. package/dist/esm/components/badge/Badge.module.css +0 -1
  397. package/dist/esm/components/breadcrumbs/Breadcrumbs.module.css +0 -1
  398. package/dist/esm/components/button/Button.module.css +0 -1
  399. package/dist/esm/components/card/Card.module.css +0 -1
  400. package/dist/esm/components/chip/Chip.module.css +0 -1
  401. package/dist/esm/components/collapsable/Collapsable.module.css +0 -1
  402. package/dist/esm/components/dropdown/Dropdown.module.css +0 -1
  403. package/dist/esm/components/icon/Icon.module.css +0 -1
  404. package/dist/esm/components/media/Media.module.css +0 -1
  405. package/dist/esm/components/menu/Menu.module.css +0 -1
  406. package/dist/esm/components/meter/Meter.module.css +0 -1
  407. package/dist/esm/components/panel/Panel.module.css +0 -1
  408. package/dist/esm/components/progress/Progress.module.css +0 -1
  409. package/dist/esm/components/tabpanel/TabPanel.module.css +0 -1
  410. package/dist/esm/core/aside/Aside.module.css +0 -1
  411. package/dist/esm/core/boundary/ErrorBoundary.module.css +0 -1
  412. package/dist/esm/core/content/Content.module.css +0 -1
  413. package/dist/esm/core/headfoot/HeadFoot.module.css +0 -1
  414. package/dist/esm/core/page/Page.module.css +0 -1
  415. package/dist/esm/core/responsive/Responsive.module.css +0 -1
  416. package/dist/esm/core/section/Section.module.css +0 -1
  417. package/dist/esm/core/theme/Theme.module.css +0 -1
  418. package/dist/esm/core/viewport/Viewport.module.css +0 -1
  419. package/dist/esm/overlays/alert/Alert.module.css +0 -1
  420. package/dist/esm/overlays/flyout/Flyout.module.css +0 -1
  421. package/dist/esm/overlays/message/Message.module.css +0 -1
  422. package/dist/esm/overlays/modal/Modal.module.css +0 -1
  423. package/dist/esm/overlays/toast/Toast.module.css +0 -1
  424. package/dist/esm/overlays/tooltip/Tooltip.module.css +0 -1
  425. package/dist/esm/types/icons.js +0 -201
  426. package/dist/esm/typography/Typography.module.css +0 -1
  427. package/dist/types/types/icons.d.ts +0 -196
  428. package/dist/types/typography/Link.d.ts +0 -25
  429. package/src/types/icons.ts +0 -425
@@ -6,14 +6,38 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
6
6
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
7
7
  import classNames from 'classnames';
8
8
  import { useState, useRef, useImperativeHandle, useEffect, useMemo, Children } from 'react';
9
- import { CoreIcons } from '../../types/icons.js';
10
9
  import { Icon } from '../icon/Icon.js';
11
- import classes from './Collapsable.module.css';
12
10
  import { jsxs, jsx } from 'react/jsx-runtime';
13
11
 
14
12
  var _excluded = ["ref", "disabled", "className", "bodyClassName", "headerClassName", "children", "iconAlign", "stickyHeader", "iconClosed", "iconOpen", "open", "onClose", "onOpen"];
15
13
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16
14
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
+ /**
16
+ * A component that can be expanded or collapsed to show or hide content.
17
+ * It is useful for organizing content in a way that allows users to focus on the information they are interested in.
18
+ * It supports custom icons for open and closed states, alignment options, and can be made sticky.
19
+ * This component is ideal for creating accordions, expandable panels, or sections that can be toggled by the user.
20
+ *
21
+ * @param {CollapsableProps} props - The properties for the Collapsable component.
22
+ * @returns {JSX.Element} The rendered Collapsable component.
23
+ *
24
+ * @example
25
+ * ```jsx
26
+ * <Collapsable
27
+ * iconAlign="start"
28
+ * iconOpen="icon-[mdi--chevron-down]"
29
+ * iconClosed="icon-[mdi--chevron-right]"
30
+ * open={true}
31
+ * onOpen={() => console.log("Opened")}
32
+ * onClose={() => console.log("Closed")}
33
+ * >
34
+ * <div>Header Content</div>
35
+ * <div>Body Content</div>
36
+ * </Collapsable>
37
+ * ```
38
+ *
39
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-collapsable--docs} for more details.
40
+ */
17
41
  var Collapsable = function Collapsable(_ref) {
18
42
  var ref = _ref.ref,
19
43
  disabled = _ref.disabled,
@@ -24,9 +48,9 @@ var Collapsable = function Collapsable(_ref) {
24
48
  iconAlign = _ref.iconAlign,
25
49
  stickyHeader = _ref.stickyHeader,
26
50
  _ref$iconClosed = _ref.iconClosed,
27
- iconClosed = _ref$iconClosed === void 0 ? CoreIcons.chevronRight : _ref$iconClosed,
51
+ iconClosed = _ref$iconClosed === void 0 ? "icon-[mdi--chevron-right]" : _ref$iconClosed,
28
52
  _ref$iconOpen = _ref.iconOpen,
29
- iconOpen = _ref$iconOpen === void 0 ? CoreIcons.chevronDown : _ref$iconOpen,
53
+ iconOpen = _ref$iconOpen === void 0 ? "icon-[mdi--chevron-down]" : _ref$iconOpen,
30
54
  open = _ref.open;
31
55
  _ref.onClose;
32
56
  _ref.onOpen;
@@ -58,12 +82,12 @@ var Collapsable = function Collapsable(_ref) {
58
82
  head = _useMemo2[0],
59
83
  body = _useMemo2[1];
60
84
  return /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({
61
- className: classNames(classes.collapsable, className)
85
+ className: classNames("fabric-collapsable", className)
62
86
  }, aria), {}, {
63
87
  children: [/*#__PURE__*/jsxs("div", {
64
88
  role: "none",
65
89
  ref: headRef,
66
- className: classNames(classes.collapsableHead, "flex gap-1 flex-nowrap py-2 font-medium cursor-pointer items-center select-none hover:opacity-70", headerClassName, stickyHeader && "bg-base sticky top-0 px-2 py-1 z-10", iconAlign === "end" ? "flex-row-reverse" : "flex-row"),
90
+ className: classNames("fabric-collapsableHead", "flex gap-1 flex-nowrap py-2 font-medium cursor-pointer items-center select-none hover:opacity-70", headerClassName, stickyHeader && "bg-base sticky top-0 py-1 z-10", iconAlign === "end" ? "flex-row-reverse" : "flex-row"),
67
91
  onClick: function onClick() {
68
92
  return !disabled && setOpenState(!openState);
69
93
  },
@@ -72,12 +96,12 @@ var Collapsable = function Collapsable(_ref) {
72
96
  icon: openState ? iconOpen : iconClosed,
73
97
  rtlFlip: true
74
98
  }), /*#__PURE__*/jsx("div", {
75
- className: "flex-1 px-2",
99
+ className: "flex-1",
76
100
  children: head
77
101
  })]
78
102
  }), openState && /*#__PURE__*/jsx("div", {
79
103
  ref: bodyRef,
80
- className: classNames(classes.collapsableBody, bodyClassName),
104
+ className: classNames("fabric-collapsableBody", bodyClassName),
81
105
  children: body
82
106
  })]
83
107
  }));
@@ -2,9 +2,9 @@
2
2
 
3
3
  import classNames from 'classnames';
4
4
  import { useCallback } from 'react';
5
- import { getBorderClass, getBgClass, getColorClass } from '../../utils/getColor.js';
6
- import '@react-fabric/utilities';
7
5
  import { jsx, jsxs } from 'react/jsx-runtime';
6
+ import { getColor } from '../../utils/getColor.js';
7
+ import '@react-fabric/utilities';
8
8
 
9
9
  /*
10
10
  * React Fabric
@@ -29,11 +29,32 @@ import { jsx, jsxs } from 'react/jsx-runtime';
29
29
  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
30
  */
31
31
 
32
+ /**
33
+ * A component that represents a visual divider between content.
34
+ * It can be used to separate sections of content, with optional text labels.
35
+ * It supports both horizontal and vertical orientations, customizable colors,
36
+ * styles, and alignment options.
37
+ *
38
+ * @param {DividerProps} props - The properties for the Divider component.
39
+ * @returns {JSX.Element} The rendered Divider component.
40
+ *
41
+ * @example
42
+ * ```jsx
43
+ * <Divider color="primary" align="center" style="dashed">
44
+ * Divider Text
45
+ * </Divider>
46
+ * // Renders a horizontal divider with primary color, centered text, and dashed style.
47
+ * ```
48
+ *
49
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-divider--docs} for more details.
50
+ */
32
51
  var Divider = function Divider(_ref) {
33
52
  var children = _ref.children,
34
- color = _ref.color,
53
+ _ref$color = _ref.color,
54
+ color = _ref$color === void 0 ? "tint-300" : _ref$color,
35
55
  vertical = _ref.vertical,
36
- fill = _ref.fill,
56
+ labelClassName = _ref.labelClassName,
57
+ style = _ref.style,
37
58
  _ref$align = _ref.align,
38
59
  align = _ref$align === void 0 ? "start" : _ref$align,
39
60
  className = _ref.className;
@@ -42,17 +63,19 @@ var Divider = function Divider(_ref) {
42
63
  className = _ref2.className;
43
64
  return /*#__PURE__*/jsx("hr", {
44
65
  style: {
45
- flex: flex
66
+ flex: flex,
67
+ borderColor: getColor(color),
68
+ borderStyle: style
46
69
  },
47
- className: classNames(className, vertical && "vertical", !flex && "self-stretch", vertical ? "mx-1" : "my-1", color && getBorderClass(color + "-200"))
70
+ className: classNames(className, vertical && "vertical", !flex && "self-stretch", vertical ? "fabric-divider--vertical" : "fabric-divider--horizontal")
48
71
  });
49
72
  }, [color, vertical]);
50
73
  return children ? /*#__PURE__*/jsxs("div", {
51
- className: classNames("flex flex-nowrap items-center", vertical && "flex-col", className),
74
+ className: classNames("flex flex-nowrap items-center fabric-divider", vertical && "flex-col", className),
52
75
  children: [/*#__PURE__*/jsx(Rule, {
53
76
  flex: align === "start" ? "0 0 1rem" : "1 1 1em"
54
77
  }), /*#__PURE__*/jsx("div", {
55
- className: classNames("px-2 whitespace-nowrap", vertical ? "mx-1" : "my-1", fill && getBgClass((color !== null && color !== void 0 ? color : "tint") + "-200"), !fill && getColorClass((color !== null && color !== void 0 ? color : "tint") + "-600"), "rounded-full text-[0.75em]", vertical && "origin-center -rotate-90 z-1"),
78
+ className: classNames("px-2 whitespace-nowrap", vertical ? "fabric-divider-label--vertical" : "fabric-divider-label--horizontal", labelClassName, "rounded-full text-[0.75em]", vertical && "origin-center -rotate-90 z-1"),
56
79
  children: children
57
80
  }), /*#__PURE__*/jsx(Rule, {
58
81
  flex: align === "end" ? "0 0 1rem" : "1 1 1em"
@@ -6,7 +6,6 @@ import { FloatingTree, useFloatingTree, useFloating, autoUpdate, shift, flip, of
6
6
  import { mergeRefs } from '@react-fabric/utilities';
7
7
  import classNames from 'classnames';
8
8
  import { useRef, useState, useMemo, Children, useCallback, useEffect, Fragment, cloneElement } from 'react';
9
- import classes from './Dropdown.module.css';
10
9
  import { jsx, jsxs } from 'react/jsx-runtime';
11
10
 
12
11
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -113,8 +112,10 @@ var DropdownElement = function DropdownElement(_ref) {
113
112
  var _anchor$props$onClick, _anchor$props;
114
113
  (_anchor$props$onClick = (_anchor$props = anchor.props).onClick) === null || _anchor$props$onClick === void 0 || _anchor$props$onClick.call(_anchor$props, e);
115
114
  e.stopPropagation();
115
+ e.preventDefault();
116
116
  }
117
117
  })), {}, {
118
+ "data-inner-clickable": "true",
118
119
  "data-dropdown-open": isOpen ? true : undefined,
119
120
  ref: innerRef
120
121
  })), isOpen && /*#__PURE__*/jsxs(FloatingPortal, {
@@ -123,16 +124,12 @@ var DropdownElement = function DropdownElement(_ref) {
123
124
  context: context,
124
125
  modal: true,
125
126
  children: /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({
126
- ref: function ref(el) {
127
- var _el$querySelector;
128
- refs.setFloating(el);
129
- el === null || el === void 0 || (_el$querySelector = el.querySelector("input,textarea,button")) === null || _el$querySelector === void 0 || _el$querySelector.focus();
130
- },
127
+ ref: refs.setFloating,
131
128
  style: _objectSpread({
132
129
  minWidth: minWidth,
133
130
  zIndex: "var(--z-popover)"
134
131
  }, floatingStyles),
135
- "data-testid": "dropdown-body"
132
+ "data-ref": "dropdownBody"
136
133
  }, getFloatingProps({
137
134
  onClick: function onClick(e) {
138
135
  return e.stopPropagation();
@@ -140,25 +137,67 @@ var DropdownElement = function DropdownElement(_ref) {
140
137
  })), {}, {
141
138
  children: [/*#__PURE__*/jsx("div", {
142
139
  role: "none",
143
- className: classNames(classes.dropdownBody, dropdownClassName, !plainDropdown && "shadow-lg shadow-base bg-base ring-1 ring-tint-100", "rounded-capped overflow-auto scroll-thin grid max-h-[70vh]"),
140
+ className: classNames("fabric-dropdownBody", dropdownClassName, !plainDropdown && "shadow-lg bg-base ring-1 ring-tint-100", "rounded-capped overflow-auto scroll-thin grid max-h-[70vh]"),
144
141
  onMouseUpCapture: tryClosing,
145
142
  children: panel
146
143
  }), showArrow && /*#__PURE__*/jsx(FloatingArrow, {
147
144
  ref: arrowRef,
148
145
  context: context,
149
146
  strokeWidth: 0.5,
150
- className: "fill-base stroke-muted"
147
+ className: "fill-base stroke-dimmed"
151
148
  })]
152
149
  }))
153
150
  })]
154
151
  })]
155
152
  });
156
153
  };
154
+
155
+ /**
156
+ * A component that displays a dropdown menu with an anchor and a panel.
157
+ * It supports various features such as placement, arrow display, click handling,
158
+ * and event handling for opening and closing the dropdown.
159
+ *
160
+ * @param props - Dropdown properties
161
+ * @returns JSX Element
162
+ *
163
+ * @example
164
+ * ```jsx
165
+ * <Dropdown
166
+ * placement="bottom"
167
+ * showArrow
168
+ * closeOnClick
169
+ * fitToParent
170
+ * onOpen={() => console.log("Dropdown opened")}
171
+ * onClose={() => console.log("Dropdown closed")}
172
+ * >
173
+ * <button>Open Dropdown</button>
174
+ * <div>
175
+ * <DropdownDismiss>
176
+ * <button>Dismiss</button>
177
+ * </DropdownDismiss>
178
+ * <p>Dropdown Content</p>
179
+ * </div>
180
+ * </Dropdown>
181
+ * ```
182
+ *
183
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-dropdown--docs} for more details.
184
+ * @see {@link https://floating-ui.com/docs/react} for more details on Floating UI.
185
+ */
157
186
  var Dropdown = function Dropdown(props) {
158
187
  return /*#__PURE__*/jsx(FloatingTree, {
159
188
  children: /*#__PURE__*/jsx(DropdownElement, _objectSpread({}, props))
160
189
  });
161
190
  };
191
+
192
+ /**
193
+ * A component that allows dismissing the dropdown when clicked.
194
+ * It can be used inside the dropdown panel to provide a dismiss area.
195
+ * It supports an optional `dismiss` prop to control whether the dropdown should be dismissed on click.
196
+ *
197
+ * @param children - The children elements to render inside the dismiss area.
198
+ * @param dismiss - Whether to dismiss the dropdown on click (default: true).
199
+ * @returns JSX Element
200
+ */
162
201
  var DropdownDismiss = function DropdownDismiss(_ref3) {
163
202
  var children = _ref3.children,
164
203
  _ref3$dismiss = _ref3.dismiss,
@@ -3,7 +3,6 @@
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
5
5
  import classNames from 'classnames';
6
- import { CoreIcons } from '../../types/icons.js';
7
6
  import { Icon } from '../icon/Icon.js';
8
7
  import { Dropdown } from './Dropdown.js';
9
8
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -19,8 +18,8 @@ var DropdownTool = function DropdownTool(_ref) {
19
18
  props = _objectWithoutProperties(_ref, _excluded);
20
19
  return /*#__PURE__*/jsxs(Dropdown, _objectSpread(_objectSpread({}, props), {}, {
21
20
  children: [/*#__PURE__*/jsx(Icon, {
22
- icon: icon !== null && icon !== void 0 ? icon : CoreIcons.caretDown,
23
- className: classNames(className, "outline bg-base flex-content pointer-events-auto cursor-pointer", groupHover && "hidden group-hover:inline-block data-[dropdown-open]:inline-block")
21
+ icon: icon !== null && icon !== void 0 ? icon : "icon-[mdi--menu-down]",
22
+ className: classNames("outline bg-tint-50/50 flex-content pointer-events-auto cursor-pointer", className, groupHover && "hidden group-hover/tool:inline-block data-dropdown-open:inline-block")
24
23
  }), children]
25
24
  }));
26
25
  };
@@ -5,10 +5,11 @@ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProper
5
5
  import { isString } from '@react-fabric/utilities';
6
6
  import classNames from 'classnames';
7
7
  import { isValidElement } from 'react';
8
- import { Icon } from '../icon/Icon.js';
9
8
  import { jsxs, jsx } from 'react/jsx-runtime';
9
+ import { getColor } from '../../utils/getColor.js';
10
+ import { Icon } from '../icon/Icon.js';
10
11
 
11
- var _excluded = ["children", "title", "message", "icon", "className", "size"];
12
+ var _excluded = ["children", "title", "message", "icon", "className", "size", "iconColor"];
12
13
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
14
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
15
  var SizeMap = {
@@ -48,6 +49,33 @@ var DefaultIcon = function DefaultIcon() {
48
49
  })]
49
50
  });
50
51
  };
52
+
53
+ /**
54
+ * A component that displays a message and an optional icon when there is no content to show.
55
+ * It allows customization of title, message, icon, size, and additional CSS properties.
56
+ * It can also accept children elements for additional actions or information.
57
+ * This component is useful for displaying a friendly message when data is not available,
58
+ * such as in empty states of lists, tables, or other content areas.
59
+ *
60
+ * @param {EmptyContentProps} props - The properties for the EmptyContent component.
61
+ * @returns {JSX.Element} The rendered EmptyContent component.
62
+ *
63
+ * @example
64
+ * ```jsx
65
+ * <EmptyContent
66
+ * title="No Data Available"
67
+ * message="Please check back later."
68
+ * icon="empty"
69
+ * iconColor="tint-700"
70
+ * size="md"
71
+ * >
72
+ * <Button onClick={() => console.log("Action clicked")}>Retry</Button>
73
+ * </EmptyContent>
74
+ * // Renders an empty content area with a title, message, icon, and a button for retrying the action.
75
+ * ```
76
+ *
77
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-emptycontent--docs} for more details.
78
+ */
51
79
  var EmptyContent = function EmptyContent(_ref) {
52
80
  var children = _ref.children,
53
81
  title = _ref.title,
@@ -55,6 +83,7 @@ var EmptyContent = function EmptyContent(_ref) {
55
83
  icon = _ref.icon,
56
84
  className = _ref.className,
57
85
  size = _ref.size,
86
+ iconColor = _ref.iconColor,
58
87
  test = _objectWithoutProperties(_ref, _excluded);
59
88
  return /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({
60
89
  className: classNames("p-6 flex flex-col items-center area-content", className),
@@ -65,19 +94,20 @@ var EmptyContent = function EmptyContent(_ref) {
65
94
  children: [/*#__PURE__*/jsxs("div", {
66
95
  className: "leading-none",
67
96
  style: {
68
- fontSize: "4em"
97
+ fontSize: "4em",
98
+ color: getColor(iconColor !== null && iconColor !== void 0 ? iconColor : "tint-700")
69
99
  },
70
100
  children: [isString(icon) && /*#__PURE__*/jsx(Icon, {
71
101
  icon: icon
72
102
  }), /*#__PURE__*/isValidElement(icon) && icon, !icon && /*#__PURE__*/jsx(DefaultIcon, {})]
73
- }), title && /*#__PURE__*/jsx("p", {
74
- className: "font-medium text-center text-dimmed",
103
+ }), title && /*#__PURE__*/jsx("div", {
104
+ className: "font-medium text-center opacity-85",
75
105
  style: {
76
106
  fontSize: "1.5em"
77
107
  },
78
108
  children: title
79
- }), /*#__PURE__*/jsx("p", {
80
- className: "font-medium text-center text-muted",
109
+ }), /*#__PURE__*/jsx("div", {
110
+ className: "font-medium text-center opacity-65",
81
111
  style: {
82
112
  fontSize: "0.875em"
83
113
  },
@@ -1,17 +1,30 @@
1
1
  'use client';
2
2
 
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
5
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
5
6
  import { isSvgPath, isString } from '@react-fabric/utilities';
6
7
  import classNames from 'classnames';
7
- import { useMemo } from 'react';
8
- import { getColor, getBgClass, getColorClass } from '../../utils/getColor.js';
9
- import classes from './Icon.module.css';
10
- import { jsx } from 'react/jsx-runtime';
8
+ import { isValidElement, useState, useEffect, useMemo } from 'react';
9
+ import { jsx, jsxs } from 'react/jsx-runtime';
10
+ import { getColor } from '../../utils/getColor.js';
11
11
 
12
- var _excluded = ["ref", "icon", "bg", "color", "size", "rtlFlip", "animate", "rounded", "viewBox", "className", "onClick"];
12
+ var _excluded = ["ref", "icon", "iconSrc", "bg", "color", "size", "rtlFlip", "animate", "rounded", "disabled", "viewBox", "className", "onClick"];
13
13
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
14
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
+ var getIconProps = function getIconProps(props) {
16
+ if (typeof props === "string") {
17
+ return {
18
+ icon: props
19
+ };
20
+ }
21
+ if ( /*#__PURE__*/isValidElement(props)) {
22
+ return {
23
+ icon: props
24
+ };
25
+ }
26
+ return props;
27
+ };
15
28
  var SvgTextSize = ["", ".875em", ".525em", ".35em", ".25em"];
16
29
  var SizeMap = {
17
30
  xs: "0.625rem",
@@ -22,11 +35,38 @@ var SizeMap = {
22
35
  };
23
36
 
24
37
  /**
25
- * An icon is a display component for svg icon path / image
38
+ * A versatile icon component that supports SVG paths, webfont icons, and text icons.
39
+ * It can be styled with background color, icon color, size, and animations.
40
+ * It also supports RTL flipping and rounded corners.
41
+ * The component can be used as a standalone icon or as part of other components.
42
+ * It accepts various properties to customize its appearance and behavior.
43
+ * These include `bg`, `color`, `size`, `rtlFlip`, `animate`, and `rounded`.
44
+ *
45
+ * @param {IconProps} props - The properties for the Icon component.
46
+ * @returns {JSX.Element} The rendered Icon component.
47
+ *
48
+ * @example
49
+ * ```jsx
50
+ * <Icon
51
+ * icon="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"
52
+ * bg="bg-blue-500"
53
+ * color="text-white"
54
+ * size="lg"
55
+ * rtlFlip={true}
56
+ * animate="spin"
57
+ * rounded={true}
58
+ * onClick={() => console.log("Icon clicked")}
59
+ * />
60
+ * // Renders an icon with a SVG path, blue background, white text color,
61
+ * // large size, RTL flip, spin animation, rounded corners, and a click handler.
62
+ * ```
63
+ *
64
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-icon--docs} for more details.
26
65
  */
27
66
  var Icon = function Icon(_ref) {
28
67
  var ref = _ref.ref,
29
68
  icon = _ref.icon,
69
+ iconSrc = _ref.iconSrc,
30
70
  bg = _ref.bg,
31
71
  color = _ref.color,
32
72
  _ref$size = _ref.size,
@@ -34,11 +74,20 @@ var Icon = function Icon(_ref) {
34
74
  rtlFlip = _ref.rtlFlip,
35
75
  animate = _ref.animate,
36
76
  rounded = _ref.rounded,
77
+ disabled = _ref.disabled,
37
78
  _ref$viewBox = _ref.viewBox,
38
79
  viewBox = _ref$viewBox === void 0 ? "0 0 24 24" : _ref$viewBox,
39
80
  className = _ref.className,
40
- onClick = _ref.onClick,
81
+ _onClick = _ref.onClick,
41
82
  rest = _objectWithoutProperties(_ref, _excluded);
83
+ var _useState = useState(false),
84
+ _useState2 = _slicedToArray(_useState, 2),
85
+ imageFailed = _useState2[0],
86
+ setImageFailed = _useState2[1];
87
+ useEffect(function () {
88
+ setImageFailed(false);
89
+ }, [iconSrc]);
90
+
42
91
  /** ***************** style map *******************/
43
92
  var styles = useMemo(function () {
44
93
  var s = {};
@@ -64,7 +113,7 @@ var Icon = function Icon(_ref) {
64
113
 
65
114
  /** ***************** render icon *******************/
66
115
  var iconEl = useMemo(function () {
67
- var _SvgTextSize$icon$len;
116
+ if ( /*#__PURE__*/isValidElement(icon)) return icon;
68
117
  if (!isString(icon)) {
69
118
  throw Error("Invalid icon expected string");
70
119
  }
@@ -83,7 +132,7 @@ var Icon = function Icon(_ref) {
83
132
  dominantBaseline: "middle",
84
133
  textAnchor: "middle",
85
134
  style: {
86
- fontSize: (_SvgTextSize$icon$len = SvgTextSize[icon.length]) !== null && _SvgTextSize$icon$len !== void 0 ? _SvgTextSize$icon$len : "1em"
135
+ fontSize: SvgTextSize[icon.length]
87
136
  },
88
137
  children: icon
89
138
  })
@@ -91,16 +140,29 @@ var Icon = function Icon(_ref) {
91
140
  className: "".concat(icon)
92
141
  });
93
142
  }, [icon, isSvg, viewBox]);
94
- return /*#__PURE__*/jsx("dfn", _objectSpread(_objectSpread({}, rest), {}, {
95
- ref: ref,
143
+ return /*#__PURE__*/jsxs("dfn", _objectSpread(_objectSpread({
144
+ "data-ref": "icon",
145
+ ref: ref
146
+ }, rest), {}, {
96
147
  role: "presentation",
97
- className: classNames(classes.icon, className, "select-none overflow-hidden inline-block box-content leading-none not-italic text-center", bg && getBgClass(bg), color && getColorClass(color), !rounded && "rounded", rounded && "rounded-full", animate && "animate-".concat(animate)),
98
- onClick: onClick,
148
+ className: classNames("fabric-icon", "select-none overflow-hidden box-content leading-none not-italic text-center", !rounded && "rounded", rounded && "rounded-full", animate && "animate-".concat(animate), !!_onClick && disabled && "opacity-30 pointer-events-none", className),
149
+ onClick: function onClick(e) {
150
+ _onClick && e.stopPropagation();
151
+ _onClick && e.preventDefault();
152
+ _onClick === null || _onClick === void 0 || _onClick(e);
153
+ },
99
154
  "data-flip": rtlFlip,
100
155
  style: styles,
101
- "data-clickable": !!onClick,
102
- children: iconEl
156
+ "data-clickable": !!_onClick,
157
+ "data-inner-clickable": !!_onClick,
158
+ children: [iconSrc && !imageFailed && /*#__PURE__*/jsx("img", {
159
+ src: iconSrc,
160
+ alt: "fallback icon",
161
+ onError: function onError() {
162
+ return setImageFailed(true);
163
+ }
164
+ }), (!iconSrc || imageFailed) && iconEl]
103
165
  }));
104
166
  };
105
167
 
106
- export { Icon };
168
+ export { Icon, getIconProps };