@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
@@ -29,31 +29,29 @@ import {
29
29
  type ChildProp,
30
30
  type ColorType,
31
31
  type CssProp,
32
- type IconProps,
32
+ type PaletteType,
33
33
  type PolymorphicProps,
34
34
  type RefProp,
35
35
  type SizeType,
36
36
  type TestProps,
37
37
  } from "../../types";
38
- import { getColor, getColorClass } from "../../utils";
39
- import { Icon } from "../icon/Icon";
40
- import classes from "./Chip.module.css";
38
+ import { getColor } from "../../utils";
39
+ import { getIconProps, Icon, type IconProps } from "../icon/Icon";
41
40
 
42
41
  export interface ChipProps
43
42
  extends CssProp,
44
43
  AriaProps,
45
- IconProps,
46
44
  TestProps,
47
45
  ChildProp<string | ReactElement>,
48
46
  RefProp<HTMLDivElement> {
49
47
  /**
50
48
  * chip size
51
49
  */
52
- size?: SizeType;
50
+ size?: SizeType | number | string;
53
51
  /**
54
52
  * chip color (CSS color / tailwind color)
55
53
  */
56
- color?: ColorType | string;
54
+ color?: ColorType | PaletteType | string;
57
55
  /**
58
56
  * chip styling
59
57
  */
@@ -62,10 +60,18 @@ export interface ChipProps
62
60
  * full rounded edges
63
61
  */
64
62
  rounded?: boolean;
63
+ /**
64
+ * icon path or props
65
+ */
66
+ icon?: IconProps;
65
67
  /**
66
68
  * disabled state
67
69
  */
68
70
  disabled?: boolean;
71
+ /**
72
+ * prevent click default, useful when component is within a `a` link
73
+ */
74
+ preventDefault?: boolean;
69
75
  /**
70
76
  * prevent click propagation
71
77
  */
@@ -92,6 +98,26 @@ const SizeMap: KeyValue<string> = {
92
98
  xl: "2rem",
93
99
  };
94
100
 
101
+ /**
102
+ * A component that represents a small block of information, often used for tags, categories, or actions.
103
+ * It allows customization of size, color, variant, and includes optional icon and remove functionality.
104
+ * It supports various properties for styling and interaction, including click handlers and disabled state.
105
+ * It can be used in various contexts, such as filtering options, displaying tags, or representing user actions.
106
+ * It can be styled with custom CSS classes and supports features like rounded edges and click handling.
107
+ * It can also include an icon and a remove button, making it versatile for different use cases.
108
+ *
109
+ * @param {ChipProps} props - The properties for the Chip component.
110
+ * @returns {JSX.Element} The rendered Chip component.
111
+ *
112
+ * @example
113
+ * ```jsx
114
+ * <Chip color="primary" size="md" className="my-chip">
115
+ * Example Chip
116
+ * </Chip>
117
+ * ```
118
+ *
119
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-chip--docs} for more details.
120
+ */
95
121
  export const Chip = <Tag extends React.ElementType = "div">({
96
122
  ref,
97
123
  children,
@@ -100,14 +126,12 @@ export const Chip = <Tag extends React.ElementType = "div">({
100
126
  color,
101
127
  variant,
102
128
  icon,
103
- iconBg,
104
- iconColor,
105
- rtlFlip,
106
129
  disabled,
107
130
  onClick,
108
131
  onIconClick,
109
132
  onRemove,
110
133
  rounded,
134
+ preventDefault,
111
135
  stopPropagation,
112
136
  as,
113
137
  ...aria
@@ -133,10 +157,11 @@ export const Chip = <Tag extends React.ElementType = "div">({
133
157
 
134
158
  const clickHandler = useCallback(
135
159
  (e: React.MouseEvent) => {
136
- if (stopPropagation) e.stopPropagation();
160
+ preventDefault && e.preventDefault();
161
+ stopPropagation && e.stopPropagation();
137
162
  onClick?.(e);
138
163
  },
139
- [onClick, stopPropagation],
164
+ [onClick, preventDefault, stopPropagation],
140
165
  );
141
166
 
142
167
  const removeHandler = useCallback(
@@ -152,41 +177,44 @@ export const Chip = <Tag extends React.ElementType = "div">({
152
177
  <E
153
178
  ref={ref}
154
179
  role="term"
180
+ data-ref="chip"
155
181
  className={classNames(
156
- classes.chip,
182
+ "fabric-chip",
157
183
  className,
158
- color && getColorClass(color),
159
- "select-none inline-flex flex-nowrap items-center max-w-72 text-sm rounded",
184
+ "select-none inline-flex flex-nowrap items-center align-middle max-w-72 rounded",
160
185
  rounded && "rounded-full",
161
- !!onClick && classes.clickable,
162
- disabled && classes.disabled,
186
+ !!onClick && "clickable",
187
+ disabled && "disabled",
163
188
  )}
164
189
  style={styles}
165
190
  data-variant={variant}
166
191
  data-inner-clickable={!!onClick}
167
- {...{ onClick: clickHandler }}
192
+ {...{ onClick: disabled ? undefined : clickHandler }}
168
193
  {...aria}
169
194
  >
170
195
  {icon && (
171
196
  <Icon
172
- className={classNames(classes.chipIcon, "m-1")}
173
- icon={icon}
174
- bg={iconBg}
197
+ data-ref="chipIcon"
198
+ className={classNames("fabric-chipIcon", "m-1 flex-content")}
175
199
  onClick={onIconClick}
176
- color={iconColor}
177
- rtlFlip={rtlFlip}
200
+ {...getIconProps(icon)}
178
201
  />
179
202
  )}
180
203
  {children && (
181
- <label className={classNames(classes.chipLabel, "truncate")}>
204
+ <label
205
+ data-ref="chipLabel"
206
+ className={classNames("fabric-chipLabel", "truncate flex-1")}
207
+ >
182
208
  {children}
183
209
  </label>
184
210
  )}
185
211
  {onRemove && (
186
212
  <span
187
213
  role="none"
214
+ data-ref="chipRemove"
215
+ data-inner-cliackable
188
216
  className={classNames(
189
- classes.chipRemove,
217
+ "fabric-chipRemove",
190
218
  "cursor-pointer pe-1 opacity-65 hover:opacity-90",
191
219
  )}
192
220
  onClick={removeHandler}
@@ -38,13 +38,11 @@ import {
38
38
  type RefProp,
39
39
  type TestProps,
40
40
  } from "../../types";
41
- import { CoreIcons } from "../../types/icons";
42
41
  import { Icon } from "../icon/Icon";
43
- import classes from "./Collapsable.module.css";
44
42
 
45
43
  interface CollapsableRef {
46
- button: RefObject<HTMLElement>;
47
- body: RefObject<HTMLElement>;
44
+ button: RefObject<HTMLElement | null>;
45
+ body: RefObject<HTMLElement | null>;
48
46
  open: boolean;
49
47
  }
50
48
 
@@ -96,6 +94,32 @@ export interface CollapsableProps
96
94
  onClose?: () => void;
97
95
  }
98
96
 
97
+ /**
98
+ * A component that can be expanded or collapsed to show or hide content.
99
+ * It is useful for organizing content in a way that allows users to focus on the information they are interested in.
100
+ * It supports custom icons for open and closed states, alignment options, and can be made sticky.
101
+ * This component is ideal for creating accordions, expandable panels, or sections that can be toggled by the user.
102
+ *
103
+ * @param {CollapsableProps} props - The properties for the Collapsable component.
104
+ * @returns {JSX.Element} The rendered Collapsable component.
105
+ *
106
+ * @example
107
+ * ```jsx
108
+ * <Collapsable
109
+ * iconAlign="start"
110
+ * iconOpen="icon-[mdi--chevron-down]"
111
+ * iconClosed="icon-[mdi--chevron-right]"
112
+ * open={true}
113
+ * onOpen={() => console.log("Opened")}
114
+ * onClose={() => console.log("Closed")}
115
+ * >
116
+ * <div>Header Content</div>
117
+ * <div>Body Content</div>
118
+ * </Collapsable>
119
+ * ```
120
+ *
121
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-collapsable--docs} for more details.
122
+ */
99
123
  export const Collapsable = ({
100
124
  ref,
101
125
  disabled,
@@ -105,8 +129,8 @@ export const Collapsable = ({
105
129
  children,
106
130
  iconAlign,
107
131
  stickyHeader,
108
- iconClosed = CoreIcons.chevronRight,
109
- iconOpen = CoreIcons.chevronDown,
132
+ iconClosed = "icon-[mdi--chevron-right]",
133
+ iconOpen = "icon-[mdi--chevron-down]",
110
134
  open,
111
135
  onClose,
112
136
  onOpen,
@@ -135,26 +159,26 @@ export const Collapsable = ({
135
159
  return [h, b];
136
160
  }, [children]);
137
161
  return (
138
- <div className={classNames(classes.collapsable, className)} {...aria}>
162
+ <div className={classNames("fabric-collapsable", className)} {...aria}>
139
163
  <div
140
164
  role="none"
141
165
  ref={headRef}
142
166
  className={classNames(
143
- classes.collapsableHead,
167
+ "fabric-collapsableHead",
144
168
  "flex gap-1 flex-nowrap py-2 font-medium cursor-pointer items-center select-none hover:opacity-70",
145
169
  headerClassName,
146
- stickyHeader && "bg-base sticky top-0 px-2 py-1 z-10",
170
+ stickyHeader && "bg-base sticky top-0 py-1 z-10",
147
171
  iconAlign === "end" ? "flex-row-reverse" : "flex-row",
148
172
  )}
149
173
  onClick={() => !disabled && setOpenState(!openState)}
150
174
  >
151
175
  <Icon size="1.125em" icon={openState ? iconOpen : iconClosed} rtlFlip />
152
- <div className="flex-1 px-2">{head}</div>
176
+ <div className="flex-1">{head}</div>
153
177
  </div>
154
178
  {openState && (
155
179
  <div
156
180
  ref={bodyRef}
157
- className={classNames(classes.collapsableBody, bodyClassName)}
181
+ className={classNames("fabric-collapsableBody", bodyClassName)}
158
182
  >
159
183
  {body}
160
184
  </div>
@@ -24,37 +24,61 @@
24
24
  import classNames from "classnames";
25
25
  import { useCallback } from "react";
26
26
  import {
27
- type CssProp,
28
27
  type ChildProp,
29
28
  type ColorType,
29
+ type CssProp,
30
30
  type PaletteType,
31
31
  } from "../../types";
32
- import { getBgClass, getBorderClass, getColorClass } from "../../utils";
32
+ import { getColor } from "../../utils";
33
33
 
34
34
  export interface DividerProps extends CssProp, Partial<ChildProp> {
35
- /**
36
- * apply text bg
37
- */
38
- fill?: boolean;
39
35
  /**
40
36
  * vertical rule
41
37
  */
42
38
  vertical?: boolean;
39
+ /**
40
+ * divider label classname(s)
41
+ */
42
+ labelClassName?: string;
43
43
  /**
44
44
  * rule color
45
45
  */
46
- color?: ColorType | PaletteType | "tint";
46
+ color?: ColorType | PaletteType | string;
47
47
  /**
48
48
  * text alignment
49
49
  */
50
50
  align?: "start" | "end" | "center";
51
+ /**
52
+ * divider style
53
+ */
54
+ style?: "solid" | "dashed" | "dotted";
51
55
  }
52
56
 
57
+ /**
58
+ * A component that represents a visual divider between content.
59
+ * It can be used to separate sections of content, with optional text labels.
60
+ * It supports both horizontal and vertical orientations, customizable colors,
61
+ * styles, and alignment options.
62
+ *
63
+ * @param {DividerProps} props - The properties for the Divider component.
64
+ * @returns {JSX.Element} The rendered Divider component.
65
+ *
66
+ * @example
67
+ * ```jsx
68
+ * <Divider color="primary" align="center" style="dashed">
69
+ * Divider Text
70
+ * </Divider>
71
+ * // Renders a horizontal divider with primary color, centered text, and dashed style.
72
+ * ```
73
+ *
74
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-divider--docs} for more details.
75
+ */
53
76
  export const Divider = ({
54
77
  children,
55
- color,
78
+ color = "tint-300",
56
79
  vertical,
57
- fill,
80
+ labelClassName,
81
+ style,
58
82
  align = "start",
59
83
  className,
60
84
  }: DividerProps) => {
@@ -62,13 +86,14 @@ export const Divider = ({
62
86
  ({ flex, className }: KeyValue) => {
63
87
  return (
64
88
  <hr
65
- style={{ flex }}
89
+ style={{ flex, borderColor: getColor(color), borderStyle: style }}
66
90
  className={classNames(
67
91
  className,
68
92
  vertical && "vertical",
69
93
  !flex && "self-stretch",
70
- vertical ? "mx-1" : "my-1",
71
- color && getBorderClass(color + "-200"),
94
+ vertical
95
+ ? "fabric-divider--vertical"
96
+ : "fabric-divider--horizontal",
72
97
  )}
73
98
  />
74
99
  );
@@ -79,7 +104,7 @@ export const Divider = ({
79
104
  return children ? (
80
105
  <div
81
106
  className={classNames(
82
- "flex flex-nowrap items-center",
107
+ "flex flex-nowrap items-center fabric-divider",
83
108
  vertical && "flex-col",
84
109
  className,
85
110
  )}
@@ -88,9 +113,10 @@ export const Divider = ({
88
113
  <div
89
114
  className={classNames(
90
115
  "px-2 whitespace-nowrap",
91
- vertical ? "mx-1" : "my-1",
92
- fill && getBgClass((color ?? "tint") + "-200"),
93
- !fill && getColorClass((color ?? "tint") + "-600"),
116
+ vertical
117
+ ? "fabric-divider-label--vertical"
118
+ : "fabric-divider-label--horizontal",
119
+ labelClassName,
94
120
  "rounded-full text-[0.75em]",
95
121
  vertical && "origin-center -rotate-90 z-1",
96
122
  )}
@@ -54,7 +54,6 @@ import {
54
54
  useState,
55
55
  } from "react";
56
56
  import { type ChildProp, type RefProp } from "../../types";
57
- import classes from "./Dropdown.module.css";
58
57
 
59
58
  export interface DropdownProps extends RefProp {
60
59
  children: [React.ReactNode, React.ReactNode];
@@ -222,8 +221,10 @@ const DropdownElement = ({
222
221
  onClick: (e) => {
223
222
  anchor.props.onClick?.(e);
224
223
  e.stopPropagation();
224
+ e.preventDefault();
225
225
  },
226
226
  }),
227
+ "data-inner-clickable": "true",
227
228
  "data-dropdown-open": isOpen ? true : undefined,
228
229
  ref: innerRef,
229
230
  })}
@@ -237,18 +238,13 @@ const DropdownElement = ({
237
238
  <FloatingOverlay />
238
239
  <FloatingFocusManager context={context} modal>
239
240
  <div
240
- ref={(el) => {
241
- refs.setFloating(el);
242
- el
243
- ?.querySelector<HTMLElement>("input,textarea,button")
244
- ?.focus();
245
- }}
241
+ ref={refs.setFloating}
246
242
  style={{
247
243
  minWidth,
248
244
  zIndex: "var(--z-popover)",
249
245
  ...floatingStyles,
250
246
  }}
251
- data-testid="dropdown-body"
247
+ data-ref="dropdownBody"
252
248
  {...getFloatingProps({
253
249
  onClick: (e) => e.stopPropagation(),
254
250
  })}
@@ -256,10 +252,9 @@ const DropdownElement = ({
256
252
  <div
257
253
  role="none"
258
254
  className={classNames(
259
- classes.dropdownBody,
255
+ "fabric-dropdownBody",
260
256
  dropdownClassName,
261
- !plainDropdown &&
262
- "shadow-lg shadow-base bg-base ring-1 ring-tint-100",
257
+ !plainDropdown && "shadow-lg bg-base ring-1 ring-tint-100",
263
258
  "rounded-capped overflow-auto scroll-thin grid max-h-[70vh]",
264
259
  )}
265
260
  onMouseUpCapture={tryClosing}
@@ -271,7 +266,7 @@ const DropdownElement = ({
271
266
  ref={arrowRef}
272
267
  context={context}
273
268
  strokeWidth={0.5}
274
- className="fill-base stroke-muted"
269
+ className="fill-base stroke-dimmed"
275
270
  />
276
271
  )}
277
272
  </div>
@@ -282,12 +277,52 @@ const DropdownElement = ({
282
277
  );
283
278
  };
284
279
 
280
+ /**
281
+ * A component that displays a dropdown menu with an anchor and a panel.
282
+ * It supports various features such as placement, arrow display, click handling,
283
+ * and event handling for opening and closing the dropdown.
284
+ *
285
+ * @param props - Dropdown properties
286
+ * @returns JSX Element
287
+ *
288
+ * @example
289
+ * ```jsx
290
+ * <Dropdown
291
+ * placement="bottom"
292
+ * showArrow
293
+ * closeOnClick
294
+ * fitToParent
295
+ * onOpen={() => console.log("Dropdown opened")}
296
+ * onClose={() => console.log("Dropdown closed")}
297
+ * >
298
+ * <button>Open Dropdown</button>
299
+ * <div>
300
+ * <DropdownDismiss>
301
+ * <button>Dismiss</button>
302
+ * </DropdownDismiss>
303
+ * <p>Dropdown Content</p>
304
+ * </div>
305
+ * </Dropdown>
306
+ * ```
307
+ *
308
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-dropdown--docs} for more details.
309
+ * @see {@link https://floating-ui.com/docs/react} for more details on Floating UI.
310
+ */
285
311
  export const Dropdown = (props: DropdownProps) => (
286
312
  <FloatingTree>
287
313
  <DropdownElement {...props} />
288
314
  </FloatingTree>
289
315
  );
290
316
 
317
+ /**
318
+ * A component that allows dismissing the dropdown when clicked.
319
+ * It can be used inside the dropdown panel to provide a dismiss area.
320
+ * It supports an optional `dismiss` prop to control whether the dropdown should be dismissed on click.
321
+ *
322
+ * @param children - The children elements to render inside the dismiss area.
323
+ * @param dismiss - Whether to dismiss the dropdown on click (default: true).
324
+ * @returns JSX Element
325
+ */
291
326
  export const DropdownDismiss = ({
292
327
  children,
293
328
  dismiss = true,
@@ -23,10 +23,34 @@
23
23
 
24
24
  import classNames from "classnames";
25
25
  import { type ChildProp, type CssProp } from "../../types";
26
- import { CoreIcons } from "../../types/icons";
27
26
  import { Icon } from "../icon/Icon";
28
27
  import { Dropdown, type DropdownProps } from "./Dropdown";
29
28
 
29
+ /**
30
+ * A dropdown component that displays an icon and tool menu.
31
+ * It can be used to create a dropdown menu that appears when the icon is clicked or hovered over.
32
+ * This component is useful for creating toolbars or action menus in a user interface.
33
+ * It accepts children as menu items and can be styled with additional CSS classes.
34
+ *
35
+ * @param {ChildProp} children - The content to be displayed inside the dropdown.
36
+ * @param {CssProp} className - Additional CSS classes to apply to the dropdown.
37
+ * @param {string} icon - The icon to be displayed in the dropdown.
38
+ * @param {boolean} groupHover - If true, the dropdown will only be visible when the parent group is hovered.
39
+ * @param {DropdownProps} props - Additional properties for the dropdown.
40
+ * @returns {JSX.Element} The rendered DropdownTool component.
41
+ *
42
+ * @example
43
+ * ```jsx
44
+ * <DropdownTool
45
+ * icon="caret-down"
46
+ * groupHover={true}
47
+ * className="my-dropdown"
48
+ * >
49
+ * <MenuItem>Item 1</MenuItem>
50
+ * <MenuItem>Item 2</MenuItem>
51
+ * </DropdownTool>
52
+ * ```
53
+ */
30
54
  export const DropdownTool = ({
31
55
  children,
32
56
  className,
@@ -45,12 +69,12 @@ export const DropdownTool = ({
45
69
  return (
46
70
  <Dropdown {...props}>
47
71
  <Icon
48
- icon={icon ?? CoreIcons.caretDown}
72
+ icon={icon ?? "icon-[mdi--menu-down]"}
49
73
  className={classNames(
74
+ "outline bg-tint-50/50 flex-content pointer-events-auto cursor-pointer",
50
75
  className,
51
- "outline bg-base flex-content pointer-events-auto cursor-pointer",
52
76
  groupHover &&
53
- "hidden group-hover:inline-block data-[dropdown-open]:inline-block",
77
+ "hidden group-hover/tool:inline-block data-dropdown-open:inline-block",
54
78
  )}
55
79
  />
56
80
  {children}
@@ -24,7 +24,14 @@
24
24
  import { isString } from "@react-fabric/utilities";
25
25
  import classNames from "classnames";
26
26
  import { isValidElement } from "react";
27
- import { type ChildrenProp, type CssProp, type TestProps } from "../../types";
27
+ import {
28
+ type ChildrenProp,
29
+ type ColorType,
30
+ type CssProp,
31
+ type PaletteType,
32
+ type TestProps,
33
+ } from "../../types";
34
+ import { getColor } from "../../utils";
28
35
  import { Icon } from "../icon/Icon";
29
36
 
30
37
  export interface EmptyContentProps
@@ -47,6 +54,10 @@ export interface EmptyContentProps
47
54
  * empty icon
48
55
  */
49
56
  icon?: string | React.ReactElement;
57
+ /**
58
+ * icon color
59
+ */
60
+ iconColor?: ColorType | PaletteType;
50
61
  }
51
62
 
52
63
  const SizeMap: KeyValue = {
@@ -94,6 +105,32 @@ const DefaultIcon = () => (
94
105
  </svg>
95
106
  );
96
107
 
108
+ /**
109
+ * A component that displays a message and an optional icon when there is no content to show.
110
+ * It allows customization of title, message, icon, size, and additional CSS properties.
111
+ * It can also accept children elements for additional actions or information.
112
+ * This component is useful for displaying a friendly message when data is not available,
113
+ * such as in empty states of lists, tables, or other content areas.
114
+ *
115
+ * @param {EmptyContentProps} props - The properties for the EmptyContent component.
116
+ * @returns {JSX.Element} The rendered EmptyContent component.
117
+ *
118
+ * @example
119
+ * ```jsx
120
+ * <EmptyContent
121
+ * title="No Data Available"
122
+ * message="Please check back later."
123
+ * icon="empty"
124
+ * iconColor="tint-700"
125
+ * size="md"
126
+ * >
127
+ * <Button onClick={() => console.log("Action clicked")}>Retry</Button>
128
+ * </EmptyContent>
129
+ * // Renders an empty content area with a title, message, icon, and a button for retrying the action.
130
+ * ```
131
+ *
132
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-emptycontent--docs} for more details.
133
+ */
97
134
  export const EmptyContent = ({
98
135
  children,
99
136
  title,
@@ -101,6 +138,7 @@ export const EmptyContent = ({
101
138
  icon,
102
139
  className,
103
140
  size,
141
+ iconColor,
104
142
  ...test
105
143
  }: EmptyContentProps) => {
106
144
  return (
@@ -116,25 +154,28 @@ export const EmptyContent = ({
116
154
  }
117
155
  {...test}
118
156
  >
119
- <div className="leading-none" style={{ fontSize: "4em" }}>
157
+ <div
158
+ className="leading-none"
159
+ style={{ fontSize: "4em", color: getColor(iconColor ?? "tint-700") }}
160
+ >
120
161
  {isString(icon) && <Icon icon={icon} />}
121
162
  {isValidElement(icon) && icon}
122
163
  {!icon && <DefaultIcon />}
123
164
  </div>
124
165
  {title && (
125
- <p
126
- className="font-medium text-center text-dimmed"
166
+ <div
167
+ className="font-medium text-center opacity-85"
127
168
  style={{ fontSize: "1.5em" }}
128
169
  >
129
170
  {title}
130
- </p>
171
+ </div>
131
172
  )}
132
- <p
133
- className="font-medium text-center text-muted"
173
+ <div
174
+ className="font-medium text-center opacity-65"
134
175
  style={{ fontSize: "0.875em" }}
135
176
  >
136
177
  {message}
137
- </p>
178
+ </div>
138
179
  <div className="flex gap-1 pt-6">{children}</div>
139
180
  </div>
140
181
  );