@react-fabric/core 1.0.0-beta.5 → 1.0.0-beta.52

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 (419) 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} +49 -44
  7. package/{src/components/button/Button.module.css → css/components/_button.css} +69 -79
  8. package/{src/components/card/Card.module.css → css/components/_card.css} +50 -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} +8 -5
  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} +19 -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/{src/components/tabpanel/TabPanel.module.css → css/components/_tabPanel.css} +73 -84
  23. package/{src/overlays/toast/Toast.module.css → css/components/_toast.css} +2 -2
  24. package/css/components/_tooltip.css +29 -0
  25. package/{src/core/content/Content.module.css → css/components/index.css} +25 -18
  26. package/{src/core/aside/Aside.module.css → css/core/_aside.css} +56 -42
  27. package/{src/core/section/Section.module.css → css/core/_content.css} +5 -3
  28. package/{src/core/boundary/ErrorBoundary.module.css → css/core/_errorboundary.css} +9 -9
  29. package/{src/core/headfoot/HeadFoot.module.css → css/core/_headfoot.css} +4 -10
  30. package/{src/core/page/Page.module.css → css/core/_page.css} +10 -14
  31. package/{src/core/responsive/Responsive.module.css → css/core/_responsive.css} +10 -10
  32. package/css/core/_section.css +28 -0
  33. package/{src/core/theme/Theme.module.css → css/core/_theme.css} +3 -3
  34. package/{src/typography/Typography.module.css → css/core/_typography.css} +14 -12
  35. package/{src/core/viewport/Viewport.module.css → css/core/_viewport.css} +7 -3
  36. package/css/core/index.css +33 -0
  37. package/css/reset/_gradients.css +8 -8
  38. package/css/reset/_reset.css +42 -224
  39. package/css/reset/_text.css +14 -29
  40. package/css/reset/_theme.css +331 -52
  41. package/css/reset/index.css +4 -4
  42. package/css/styles.css +7 -6
  43. package/css/theme/_colors.css +320 -0
  44. package/css/theme/_utilities.css +530 -0
  45. package/css/theme/index.css +45 -0
  46. package/dist/cjs/components/actionLabel/ActionLabel.js +26 -8
  47. package/dist/cjs/components/animations/Animations.js +118 -24
  48. package/dist/cjs/components/avatar/Avatar.js +43 -16
  49. package/dist/cjs/components/avatar/AvatarGroup.js +22 -4
  50. package/dist/cjs/components/badge/Badge.js +35 -6
  51. package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +39 -8
  52. package/dist/cjs/components/button/Button.js +42 -15
  53. package/dist/cjs/components/button/ButtonGroup.js +30 -3
  54. package/dist/cjs/components/button/ConfirmButton.js +32 -4
  55. package/dist/cjs/components/button/ToggleButtonGroup.js +41 -15
  56. package/dist/cjs/components/callout/Callout.js +44 -4
  57. package/dist/cjs/components/card/Card.js +48 -10
  58. package/dist/cjs/components/card/CardCover.js +36 -5
  59. package/dist/cjs/components/card/FlipContent.js +56 -0
  60. package/dist/cjs/components/chip/Chip.js +32 -7
  61. package/dist/cjs/components/collapsable/Collapsable.js +32 -6
  62. package/dist/cjs/components/divider/Divider.js +30 -7
  63. package/dist/cjs/components/dropdown/Dropdown.js +48 -9
  64. package/dist/cjs/components/dropdown/DropdownTool.js +4 -3
  65. package/dist/cjs/components/empty/EmptyContent.js +35 -5
  66. package/dist/cjs/components/icon/Icon.js +44 -16
  67. package/dist/cjs/components/media/Media.js +172 -75
  68. package/dist/cjs/components/menu/ContextMenu.js +49 -10
  69. package/dist/cjs/components/menu/Menu.js +74 -21
  70. package/dist/cjs/components/menu/MenuItem.js +51 -16
  71. package/dist/cjs/components/meter/Meter.js +26 -3
  72. package/dist/cjs/components/navigator/Navigator.js +48 -13
  73. package/dist/cjs/components/panel/Panel.js +47 -9
  74. package/dist/cjs/components/panel/PanelGroup.js +25 -2
  75. package/dist/cjs/components/panel/PanelStack.js +31 -0
  76. package/dist/cjs/components/progress/ProgressBar.js +31 -9
  77. package/dist/cjs/components/progress/ProgressCircle.js +29 -7
  78. package/dist/cjs/components/tabpanel/Tab.js +89 -38
  79. package/dist/cjs/components/tabpanel/TabPanel.js +53 -16
  80. package/dist/cjs/context/Global.js +28 -1
  81. package/dist/cjs/context/NotificationCenter.js +3 -3
  82. package/dist/cjs/core/aside/Aside.js +49 -11
  83. package/dist/cjs/core/boundary/ErrorBoundary.js +23 -8
  84. package/dist/cjs/core/boundary/ErrorIcon.js +1 -2
  85. package/dist/cjs/core/content/Content.js +15 -8
  86. package/dist/cjs/core/headfoot/HeadFoot.js +44 -20
  87. package/dist/cjs/core/page/Page.js +40 -29
  88. package/dist/cjs/core/responsive/Responsive.js +59 -6
  89. package/dist/cjs/core/section/Section.js +1 -2
  90. package/dist/cjs/core/theme/ThemeProvider.js +32 -10
  91. package/dist/cjs/core/viewport/Viewport.js +18 -2
  92. package/dist/cjs/hooks/useControlledValue.js +12 -0
  93. package/dist/cjs/hooks/useDebounce.js +14 -1
  94. package/dist/cjs/hooks/useEffectDebugger.js +54 -2
  95. package/dist/cjs/hooks/useIsDark.js +8 -0
  96. package/dist/cjs/hooks/useIsRtl.js +12 -0
  97. package/dist/cjs/hooks/useNavigator.js +6 -4
  98. package/dist/cjs/hooks/useOverlayService.js +24 -0
  99. package/dist/cjs/hooks/usePropToggle.js +16 -5
  100. package/dist/cjs/hooks/useResize.js +18 -0
  101. package/dist/cjs/hooks/useResizeObserver.js +20 -1
  102. package/dist/cjs/hooks/useStorage.js +39 -0
  103. package/dist/cjs/hotkeys/HotKeyLabel.js +1 -1
  104. package/dist/cjs/hotkeys/HotKeyWrapper.js +3 -1
  105. package/dist/cjs/index.js +8 -2
  106. package/dist/cjs/overlays/alert/Alert.js +20 -14
  107. package/dist/cjs/overlays/flyout/Flyout.js +49 -60
  108. package/dist/cjs/overlays/message/Message.js +6 -3
  109. package/dist/cjs/overlays/modal/Modal.js +16 -12
  110. package/dist/cjs/overlays/toast/Toast.js +17 -9
  111. package/dist/cjs/overlays/tooltip/Tooltip.js +24 -11
  112. package/dist/cjs/types/icons.js +10 -1
  113. package/dist/cjs/typography/Abbr.js +32 -6
  114. package/dist/cjs/typography/{Link.js → Anchor.js} +23 -5
  115. package/dist/cjs/typography/Mark.js +22 -4
  116. package/dist/cjs/typography/Text.js +30 -5
  117. package/dist/cjs/typography/Title.js +19 -4
  118. package/dist/cjs/utils/cloneElement.js +47 -0
  119. package/dist/cjs/utils/getColor.js +1 -18
  120. package/dist/esm/components/actionLabel/ActionLabel.js +26 -8
  121. package/dist/esm/components/animations/Animations.js +119 -25
  122. package/dist/esm/components/avatar/Avatar.js +44 -17
  123. package/dist/esm/components/avatar/AvatarGroup.js +22 -4
  124. package/dist/esm/components/badge/Badge.js +36 -7
  125. package/dist/esm/components/breadcrumbs/Breadcrumbs.js +39 -8
  126. package/dist/esm/components/button/Button.js +42 -15
  127. package/dist/esm/components/button/ButtonGroup.js +31 -4
  128. package/dist/esm/components/button/ConfirmButton.js +32 -4
  129. package/dist/esm/components/button/ToggleButtonGroup.js +42 -16
  130. package/dist/esm/components/callout/Callout.js +44 -4
  131. package/dist/esm/components/card/Card.js +49 -11
  132. package/dist/esm/components/card/CardCover.js +36 -5
  133. package/dist/esm/components/card/FlipContent.js +56 -0
  134. package/dist/esm/components/chip/Chip.js +33 -8
  135. package/dist/esm/components/collapsable/Collapsable.js +32 -6
  136. package/dist/esm/components/divider/Divider.js +31 -8
  137. package/dist/esm/components/dropdown/Dropdown.js +48 -9
  138. package/dist/esm/components/dropdown/DropdownTool.js +4 -3
  139. package/dist/esm/components/empty/EmptyContent.js +35 -5
  140. package/dist/esm/components/icon/Icon.js +44 -16
  141. package/dist/esm/components/media/Media.js +173 -76
  142. package/dist/esm/components/menu/ContextMenu.js +51 -12
  143. package/dist/esm/components/menu/Menu.js +76 -23
  144. package/dist/esm/components/menu/MenuItem.js +45 -10
  145. package/dist/esm/components/meter/Meter.js +26 -3
  146. package/dist/esm/components/navigator/Navigator.js +48 -13
  147. package/dist/esm/components/panel/Panel.js +47 -9
  148. package/dist/esm/components/panel/PanelGroup.js +25 -2
  149. package/dist/esm/components/panel/PanelStack.js +31 -0
  150. package/dist/esm/components/progress/ProgressBar.js +31 -9
  151. package/dist/esm/components/progress/ProgressCircle.js +29 -7
  152. package/dist/esm/components/tabpanel/Tab.js +90 -39
  153. package/dist/esm/components/tabpanel/TabPanel.js +53 -16
  154. package/dist/esm/context/Global.js +28 -1
  155. package/dist/esm/context/NotificationCenter.js +3 -3
  156. package/dist/esm/core/aside/Aside.js +49 -11
  157. package/dist/esm/core/boundary/ErrorBoundary.js +23 -8
  158. package/dist/esm/core/boundary/ErrorIcon.js +1 -2
  159. package/dist/esm/core/content/Content.js +15 -8
  160. package/dist/esm/core/headfoot/HeadFoot.js +44 -20
  161. package/dist/esm/core/page/Page.js +40 -29
  162. package/dist/esm/core/responsive/Responsive.js +59 -6
  163. package/dist/esm/core/section/Section.js +1 -2
  164. package/dist/esm/core/theme/ThemeProvider.js +32 -10
  165. package/dist/esm/core/viewport/Viewport.js +18 -2
  166. package/dist/esm/hooks/useControlledValue.js +12 -0
  167. package/dist/esm/hooks/useDebounce.js +14 -1
  168. package/dist/esm/hooks/useEffectDebugger.js +54 -2
  169. package/dist/esm/hooks/useIsDark.js +8 -0
  170. package/dist/esm/hooks/useIsRtl.js +12 -0
  171. package/dist/esm/hooks/useNavigator.js +7 -5
  172. package/dist/esm/hooks/useOverlayService.js +24 -0
  173. package/dist/esm/hooks/usePropToggle.js +16 -5
  174. package/dist/esm/hooks/useResize.js +18 -0
  175. package/dist/esm/hooks/useResizeObserver.js +20 -1
  176. package/dist/esm/hooks/useStorage.js +39 -0
  177. package/dist/esm/hotkeys/HotKeyLabel.js +1 -1
  178. package/dist/esm/hotkeys/HotKeyWrapper.js +3 -1
  179. package/dist/esm/index.js +4 -1
  180. package/dist/esm/overlays/alert/Alert.js +21 -15
  181. package/dist/esm/overlays/flyout/Flyout.js +52 -63
  182. package/dist/esm/overlays/message/Message.js +7 -4
  183. package/dist/esm/overlays/modal/Modal.js +17 -13
  184. package/dist/esm/overlays/toast/Toast.js +18 -10
  185. package/dist/esm/overlays/tooltip/Tooltip.js +24 -11
  186. package/dist/esm/types/icons.js +10 -1
  187. package/dist/esm/typography/Abbr.js +32 -6
  188. package/dist/esm/typography/{Link.js → Anchor.js} +24 -6
  189. package/dist/esm/typography/Mark.js +22 -4
  190. package/dist/esm/typography/Text.js +31 -6
  191. package/dist/esm/typography/Title.js +20 -5
  192. package/dist/esm/utils/cloneElement.js +47 -0
  193. package/dist/esm/utils/getColor.js +2 -16
  194. package/dist/types/components/actionLabel/ActionLabel.d.ts +23 -4
  195. package/dist/types/components/animations/Animations.d.ts +84 -5
  196. package/dist/types/components/avatar/Avatar.d.ts +29 -5
  197. package/dist/types/components/avatar/AvatarGroup.d.ts +19 -1
  198. package/dist/types/components/badge/Badge.d.ts +30 -1
  199. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +31 -2
  200. package/dist/types/components/button/Button.d.ts +29 -6
  201. package/dist/types/components/button/ButtonGroup.d.ts +28 -3
  202. package/dist/types/components/button/ConfirmButton.d.ts +28 -3
  203. package/dist/types/components/button/ToggleButtonGroup.d.ts +39 -11
  204. package/dist/types/components/callout/Callout.d.ts +29 -3
  205. package/dist/types/components/card/Card.d.ts +42 -4
  206. package/dist/types/components/card/CardCover.d.ts +25 -0
  207. package/dist/types/components/card/FlipContent.d.ts +28 -0
  208. package/dist/types/components/chip/Chip.d.ts +24 -4
  209. package/dist/types/components/collapsable/Collapsable.d.ts +33 -3
  210. package/dist/types/components/divider/Divider.d.ts +30 -7
  211. package/dist/types/components/dropdown/Dropdown.d.ts +40 -1
  212. package/dist/types/components/dropdown/DropdownTool.d.ts +27 -1
  213. package/dist/types/components/empty/EmptyContent.d.ts +32 -3
  214. package/dist/types/components/icon/Icon.d.ts +32 -6
  215. package/dist/types/components/index.d.ts +2 -1
  216. package/dist/types/components/media/Media.d.ts +56 -2
  217. package/dist/types/components/menu/ContextMenu.d.ts +21 -2
  218. package/dist/types/components/menu/Menu.d.ts +29 -0
  219. package/dist/types/components/menu/MenuItem.d.ts +22 -2
  220. package/dist/types/components/menu/types.d.ts +3 -2
  221. package/dist/types/components/meter/Meter.d.ts +24 -0
  222. package/dist/types/components/navigator/Navigator.d.ts +29 -4
  223. package/dist/types/components/panel/Panel.d.ts +37 -1
  224. package/dist/types/components/panel/PanelGroup.d.ts +24 -0
  225. package/dist/types/components/panel/PanelStack.d.ts +31 -0
  226. package/dist/types/components/progress/ProgressBar.d.ts +23 -3
  227. package/dist/types/components/progress/ProgressCircle.d.ts +22 -3
  228. package/dist/types/components/tabpanel/Tab.d.ts +36 -5
  229. package/dist/types/components/tabpanel/TabPanel.d.ts +43 -1
  230. package/dist/types/context/Global.d.ts +24 -1
  231. package/dist/types/core/aside/Aside.d.ts +38 -1
  232. package/dist/types/core/boundary/ErrorBoundary.d.ts +18 -2
  233. package/dist/types/core/content/Content.d.ts +9 -3
  234. package/dist/types/core/headfoot/HeadFoot.d.ts +41 -9
  235. package/dist/types/core/page/Page.d.ts +29 -4
  236. package/dist/types/core/responsive/Responsive.d.ts +58 -3
  237. package/dist/types/core/section/Section.d.ts +16 -1
  238. package/dist/types/core/theme/ThemeProvider.d.ts +25 -5
  239. package/dist/types/core/viewport/Viewport.d.ts +15 -1
  240. package/dist/types/hooks/useControlledValue.d.ts +13 -2
  241. package/dist/types/hooks/useDebounce.d.ts +12 -0
  242. package/dist/types/hooks/useEffectDebugger.d.ts +49 -0
  243. package/dist/types/hooks/useIsDark.d.ts +8 -0
  244. package/dist/types/hooks/useIsRtl.d.ts +12 -0
  245. package/dist/types/hooks/useNavigator.d.ts +18 -1
  246. package/dist/types/hooks/useOverlayService.d.ts +28 -9
  247. package/dist/types/hooks/usePropToggle.d.ts +16 -5
  248. package/dist/types/hooks/useResize.d.ts +19 -1
  249. package/dist/types/hooks/useResizeObserver.d.ts +20 -1
  250. package/dist/types/hooks/useStorage.d.ts +38 -0
  251. package/dist/types/index.d.ts +3 -0
  252. package/dist/types/overlays/alert/Alert.d.ts +2 -3
  253. package/dist/types/overlays/flyout/Flyout.d.ts +3 -2
  254. package/dist/types/overlays/message/Message.d.ts +2 -3
  255. package/dist/types/overlays/modal/Modal.d.ts +12 -3
  256. package/dist/types/overlays/toast/Toast.d.ts +2 -3
  257. package/dist/types/overlays/tooltip/Tooltip.d.ts +2 -2
  258. package/dist/types/types/icons.d.ts +10 -1
  259. package/dist/types/types/index.d.ts +26 -6
  260. package/dist/types/typography/Abbr.d.ts +34 -4
  261. package/dist/types/typography/Anchor.d.ts +42 -0
  262. package/dist/types/typography/Copy.d.ts +15 -0
  263. package/dist/types/typography/Mark.d.ts +22 -4
  264. package/dist/types/typography/Text.d.ts +27 -1
  265. package/dist/types/typography/Title.d.ts +16 -1
  266. package/dist/types/typography/index.d.ts +1 -1
  267. package/dist/types/utils/cloneElement.d.ts +2 -0
  268. package/dist/types/utils/getColor.d.ts +1 -4
  269. package/dist/types/utils/index.d.ts +1 -0
  270. package/package.json +11 -13
  271. package/src/components/actionLabel/ActionLabel.tsx +38 -11
  272. package/src/components/animations/Animations.tsx +118 -33
  273. package/src/components/avatar/Avatar.tsx +106 -91
  274. package/src/components/avatar/AvatarGroup.tsx +23 -5
  275. package/src/components/badge/Badge.tsx +41 -9
  276. package/src/components/breadcrumbs/Breadcrumbs.tsx +42 -9
  277. package/src/components/button/Button.tsx +50 -23
  278. package/src/components/button/ButtonGroup.tsx +33 -7
  279. package/src/components/button/ConfirmButton.tsx +41 -7
  280. package/src/components/button/ToggleButtonGroup.tsx +74 -47
  281. package/src/components/callout/Callout.tsx +55 -12
  282. package/src/components/card/Card.tsx +64 -15
  283. package/src/components/card/CardCover.tsx +36 -6
  284. package/src/components/card/FlipContent.tsx +90 -0
  285. package/src/components/chip/Chip.tsx +39 -13
  286. package/src/components/collapsable/Collapsable.tsx +38 -7
  287. package/src/components/divider/Divider.tsx +42 -16
  288. package/src/components/dropdown/Dropdown.tsx +46 -11
  289. package/src/components/dropdown/DropdownTool.tsx +30 -3
  290. package/src/components/empty/EmptyContent.tsx +47 -6
  291. package/src/components/icon/Icon.tsx +85 -68
  292. package/src/components/index.ts +2 -1
  293. package/src/components/media/Media.tsx +195 -106
  294. package/src/components/menu/ContextMenu.tsx +55 -11
  295. package/src/components/menu/Menu.tsx +85 -30
  296. package/src/components/menu/MenuItem.tsx +40 -9
  297. package/src/components/menu/types.ts +3 -2
  298. package/src/components/meter/Meter.tsx +26 -3
  299. package/src/components/navigator/Navigator.tsx +58 -7
  300. package/src/components/panel/Panel.tsx +47 -9
  301. package/src/components/panel/PanelGroup.tsx +25 -2
  302. package/src/components/panel/PanelStack.tsx +31 -0
  303. package/src/components/progress/ProgressBar.tsx +33 -14
  304. package/src/components/progress/ProgressCircle.tsx +29 -13
  305. package/src/components/tabpanel/Tab.tsx +112 -64
  306. package/src/components/tabpanel/TabPanel.tsx +67 -12
  307. package/src/context/Global.tsx +28 -1
  308. package/src/context/NotificationCenter.tsx +3 -3
  309. package/src/core/aside/Aside.tsx +50 -12
  310. package/src/core/boundary/ErrorBoundary.tsx +25 -8
  311. package/src/core/boundary/ErrorIcon.tsx +1 -2
  312. package/src/core/content/Content.tsx +23 -13
  313. package/src/core/headfoot/HeadFoot.tsx +42 -35
  314. package/src/core/page/Page.tsx +44 -6
  315. package/src/core/responsive/Responsive.tsx +66 -8
  316. package/src/core/section/Section.tsx +17 -3
  317. package/src/core/theme/ThemeProvider.tsx +35 -14
  318. package/src/core/viewport/Viewport.tsx +16 -3
  319. package/src/hooks/useControlledValue.tsx +12 -0
  320. package/src/hooks/useDebounce.ts +13 -1
  321. package/src/hooks/useEffectDebugger.ts +50 -2
  322. package/src/hooks/useIsDark.ts +8 -0
  323. package/src/hooks/useIsRtl.ts +12 -0
  324. package/src/hooks/useNavigator.tsx +28 -5
  325. package/src/hooks/useOverlayService.tsx +36 -6
  326. package/src/hooks/usePropToggle.ts +16 -5
  327. package/src/hooks/useResize.ts +19 -1
  328. package/src/hooks/useResizeObserver.ts +32 -9
  329. package/src/hooks/useStorage.ts +38 -0
  330. package/src/hotkeys/HotKeyLabel.tsx +1 -1
  331. package/src/hotkeys/HotKeyWrapper.tsx +3 -1
  332. package/src/index.ts +4 -0
  333. package/src/overlays/alert/Alert.tsx +28 -32
  334. package/src/overlays/flyout/Flyout.tsx +71 -84
  335. package/src/overlays/message/Message.tsx +10 -7
  336. package/src/overlays/modal/Modal.tsx +37 -15
  337. package/src/overlays/toast/Toast.tsx +18 -27
  338. package/src/overlays/tooltip/Tooltip.tsx +43 -18
  339. package/src/types/icons.ts +18 -3
  340. package/src/types/index.ts +268 -27
  341. package/src/typography/Abbr.tsx +44 -11
  342. package/src/typography/{Link.tsx → Anchor.tsx} +26 -14
  343. package/src/typography/Copy.tsx +15 -0
  344. package/src/typography/Mark.tsx +24 -10
  345. package/src/typography/Text.tsx +31 -13
  346. package/src/typography/Title.tsx +18 -7
  347. package/src/typography/index.ts +1 -1
  348. package/src/{overlays/tooltip/Tooltip.module.css → utils/cloneElement.ts} +21 -27
  349. package/src/utils/getColor.ts +1 -17
  350. package/src/utils/index.ts +1 -0
  351. package/css/index.js +0 -250
  352. package/css/tailwind/colors.ts +0 -158
  353. package/dist/cjs/components/actionLabel/ActionLabel.module.css +0 -1
  354. package/dist/cjs/components/animations/Animations.module.css +0 -1
  355. package/dist/cjs/components/avatar/Avatar.module.css +0 -1
  356. package/dist/cjs/components/badge/Badge.module.css +0 -1
  357. package/dist/cjs/components/breadcrumbs/Breadcrumbs.module.css +0 -1
  358. package/dist/cjs/components/button/Button.module.css +0 -1
  359. package/dist/cjs/components/card/Card.module.css +0 -1
  360. package/dist/cjs/components/chip/Chip.module.css +0 -1
  361. package/dist/cjs/components/collapsable/Collapsable.module.css +0 -1
  362. package/dist/cjs/components/dropdown/Dropdown.module.css +0 -1
  363. package/dist/cjs/components/icon/Icon.module.css +0 -1
  364. package/dist/cjs/components/media/Media.module.css +0 -1
  365. package/dist/cjs/components/menu/Menu.module.css +0 -1
  366. package/dist/cjs/components/meter/Meter.module.css +0 -1
  367. package/dist/cjs/components/panel/Panel.module.css +0 -1
  368. package/dist/cjs/components/progress/Progress.module.css +0 -1
  369. package/dist/cjs/components/tabpanel/TabPanel.module.css +0 -1
  370. package/dist/cjs/core/aside/Aside.module.css +0 -1
  371. package/dist/cjs/core/boundary/ErrorBoundary.module.css +0 -1
  372. package/dist/cjs/core/content/Content.module.css +0 -1
  373. package/dist/cjs/core/headfoot/HeadFoot.module.css +0 -1
  374. package/dist/cjs/core/page/Page.module.css +0 -1
  375. package/dist/cjs/core/responsive/Responsive.module.css +0 -1
  376. package/dist/cjs/core/section/Section.module.css +0 -1
  377. package/dist/cjs/core/theme/Theme.module.css +0 -1
  378. package/dist/cjs/core/viewport/Viewport.module.css +0 -1
  379. package/dist/cjs/overlays/alert/Alert.module.css +0 -1
  380. package/dist/cjs/overlays/flyout/Flyout.module.css +0 -1
  381. package/dist/cjs/overlays/message/Message.module.css +0 -1
  382. package/dist/cjs/overlays/modal/Modal.module.css +0 -1
  383. package/dist/cjs/overlays/toast/Toast.module.css +0 -1
  384. package/dist/cjs/overlays/tooltip/Tooltip.module.css +0 -1
  385. package/dist/cjs/typography/Typography.module.css +0 -1
  386. package/dist/esm/components/actionLabel/ActionLabel.module.css +0 -1
  387. package/dist/esm/components/animations/Animations.module.css +0 -1
  388. package/dist/esm/components/avatar/Avatar.module.css +0 -1
  389. package/dist/esm/components/badge/Badge.module.css +0 -1
  390. package/dist/esm/components/breadcrumbs/Breadcrumbs.module.css +0 -1
  391. package/dist/esm/components/button/Button.module.css +0 -1
  392. package/dist/esm/components/card/Card.module.css +0 -1
  393. package/dist/esm/components/chip/Chip.module.css +0 -1
  394. package/dist/esm/components/collapsable/Collapsable.module.css +0 -1
  395. package/dist/esm/components/dropdown/Dropdown.module.css +0 -1
  396. package/dist/esm/components/icon/Icon.module.css +0 -1
  397. package/dist/esm/components/media/Media.module.css +0 -1
  398. package/dist/esm/components/menu/Menu.module.css +0 -1
  399. package/dist/esm/components/meter/Meter.module.css +0 -1
  400. package/dist/esm/components/panel/Panel.module.css +0 -1
  401. package/dist/esm/components/progress/Progress.module.css +0 -1
  402. package/dist/esm/components/tabpanel/TabPanel.module.css +0 -1
  403. package/dist/esm/core/aside/Aside.module.css +0 -1
  404. package/dist/esm/core/boundary/ErrorBoundary.module.css +0 -1
  405. package/dist/esm/core/content/Content.module.css +0 -1
  406. package/dist/esm/core/headfoot/HeadFoot.module.css +0 -1
  407. package/dist/esm/core/page/Page.module.css +0 -1
  408. package/dist/esm/core/responsive/Responsive.module.css +0 -1
  409. package/dist/esm/core/section/Section.module.css +0 -1
  410. package/dist/esm/core/theme/Theme.module.css +0 -1
  411. package/dist/esm/core/viewport/Viewport.module.css +0 -1
  412. package/dist/esm/overlays/alert/Alert.module.css +0 -1
  413. package/dist/esm/overlays/flyout/Flyout.module.css +0 -1
  414. package/dist/esm/overlays/message/Message.module.css +0 -1
  415. package/dist/esm/overlays/modal/Modal.module.css +0 -1
  416. package/dist/esm/overlays/toast/Toast.module.css +0 -1
  417. package/dist/esm/overlays/tooltip/Tooltip.module.css +0 -1
  418. package/dist/esm/typography/Typography.module.css +0 -1
  419. package/dist/types/typography/Link.d.ts +0 -25
@@ -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];
@@ -224,6 +223,7 @@ const DropdownElement = ({
224
223
  e.stopPropagation();
225
224
  },
226
225
  }),
226
+ "data-inner-clickable": "true",
227
227
  "data-dropdown-open": isOpen ? true : undefined,
228
228
  ref: innerRef,
229
229
  })}
@@ -237,17 +237,13 @@ const DropdownElement = ({
237
237
  <FloatingOverlay />
238
238
  <FloatingFocusManager context={context} modal>
239
239
  <div
240
- ref={(el) => {
241
- refs.setFloating(el);
242
- el
243
- ?.querySelector<HTMLElement>("input,textarea,button")
244
- ?.focus();
245
- }}
240
+ ref={refs.setFloating}
246
241
  style={{
247
242
  minWidth,
248
243
  zIndex: "var(--z-popover)",
249
244
  ...floatingStyles,
250
245
  }}
246
+ data-ref="dropdownBody"
251
247
  {...getFloatingProps({
252
248
  onClick: (e) => e.stopPropagation(),
253
249
  })}
@@ -255,10 +251,9 @@ const DropdownElement = ({
255
251
  <div
256
252
  role="none"
257
253
  className={classNames(
258
- classes.dropdownBody,
254
+ "fabric-dropdownBody",
259
255
  dropdownClassName,
260
- !plainDropdown &&
261
- "shadow-lg shadow-base bg-base ring-1 ring-tint-100",
256
+ !plainDropdown && "shadow-lg bg-base ring-1 ring-tint-100",
262
257
  "rounded-capped overflow-auto scroll-thin grid max-h-[70vh]",
263
258
  )}
264
259
  onMouseUpCapture={tryClosing}
@@ -270,7 +265,7 @@ const DropdownElement = ({
270
265
  ref={arrowRef}
271
266
  context={context}
272
267
  strokeWidth={0.5}
273
- className="fill-base stroke-muted"
268
+ className="fill-base stroke-dimmed"
274
269
  />
275
270
  )}
276
271
  </div>
@@ -281,12 +276,52 @@ const DropdownElement = ({
281
276
  );
282
277
  };
283
278
 
279
+ /**
280
+ * A component that displays a dropdown menu with an anchor and a panel.
281
+ * It supports various features such as placement, arrow display, click handling,
282
+ * and event handling for opening and closing the dropdown.
283
+ *
284
+ * @param props - Dropdown properties
285
+ * @returns JSX Element
286
+ *
287
+ * @example
288
+ * ```jsx
289
+ * <Dropdown
290
+ * placement="bottom"
291
+ * showArrow
292
+ * closeOnClick
293
+ * fitToParent
294
+ * onOpen={() => console.log("Dropdown opened")}
295
+ * onClose={() => console.log("Dropdown closed")}
296
+ * >
297
+ * <button>Open Dropdown</button>
298
+ * <div>
299
+ * <DropdownDismiss>
300
+ * <button>Dismiss</button>
301
+ * </DropdownDismiss>
302
+ * <p>Dropdown Content</p>
303
+ * </div>
304
+ * </Dropdown>
305
+ * ```
306
+ *
307
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-dropdown--docs} for more details.
308
+ * @see {@link https://floating-ui.com/docs/react} for more details on Floating UI.
309
+ */
284
310
  export const Dropdown = (props: DropdownProps) => (
285
311
  <FloatingTree>
286
312
  <DropdownElement {...props} />
287
313
  </FloatingTree>
288
314
  );
289
315
 
316
+ /**
317
+ * A component that allows dismissing the dropdown when clicked.
318
+ * It can be used inside the dropdown panel to provide a dismiss area.
319
+ * It supports an optional `dismiss` prop to control whether the dropdown should be dismissed on click.
320
+ *
321
+ * @param children - The children elements to render inside the dismiss area.
322
+ * @param dismiss - Whether to dismiss the dropdown on click (default: true).
323
+ * @returns JSX Element
324
+ */
290
325
  export const DropdownDismiss = ({
291
326
  children,
292
327
  dismiss = true,
@@ -27,14 +27,41 @@ import { CoreIcons } from "../../types/icons";
27
27
  import { Icon } from "../icon/Icon";
28
28
  import { Dropdown, type DropdownProps } from "./Dropdown";
29
29
 
30
+ /**
31
+ * A dropdown component that displays an icon and tool menu.
32
+ * It can be used to create a dropdown menu that appears when the icon is clicked or hovered over.
33
+ * This component is useful for creating toolbars or action menus in a user interface.
34
+ * It accepts children as menu items and can be styled with additional CSS classes.
35
+ *
36
+ * @param {ChildProp} children - The content to be displayed inside the dropdown.
37
+ * @param {CssProp} className - Additional CSS classes to apply to the dropdown.
38
+ * @param {string} icon - The icon to be displayed in the dropdown.
39
+ * @param {boolean} groupHover - If true, the dropdown will only be visible when the parent group is hovered.
40
+ * @param {DropdownProps} props - Additional properties for the dropdown.
41
+ * @returns {JSX.Element} The rendered DropdownTool component.
42
+ *
43
+ * @example
44
+ * ```jsx
45
+ * <DropdownTool
46
+ * icon="caret-down"
47
+ * groupHover={true}
48
+ * className="my-dropdown"
49
+ * >
50
+ * <MenuItem>Item 1</MenuItem>
51
+ * <MenuItem>Item 2</MenuItem>
52
+ * </DropdownTool>
53
+ * ```
54
+ */
30
55
  export const DropdownTool = ({
31
56
  children,
32
57
  className,
33
58
  groupHover,
59
+ icon,
34
60
  ...props
35
61
  }: ChildProp &
36
62
  CssProp &
37
63
  Omit<DropdownProps, "children"> & {
64
+ icon?: string;
38
65
  /**
39
66
  * hide until group hovered
40
67
  */
@@ -43,12 +70,12 @@ export const DropdownTool = ({
43
70
  return (
44
71
  <Dropdown {...props}>
45
72
  <Icon
46
- icon={CoreIcons.caretDown}
73
+ icon={icon ?? CoreIcons.caretDown}
47
74
  className={classNames(
75
+ "outline bg-tint-50/50 flex-content pointer-events-auto cursor-pointer",
48
76
  className,
49
- "outline bg-base flex-content pointer-events-auto cursor-pointer",
50
77
  groupHover &&
51
- "hidden group-hover:inline-block data-[dropdown-open]:inline-block",
78
+ "hidden group-hover/tool:inline-block data-[dropdown-open]:inline-block",
52
79
  )}
53
80
  />
54
81
  {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
166
+ <div
126
167
  className="font-medium text-center text-dimmed"
127
168
  style={{ fontSize: "1.5em" }}
128
169
  >
129
170
  {title}
130
- </p>
171
+ </div>
131
172
  )}
132
- <p
173
+ <div
133
174
  className="font-medium text-center text-muted"
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
  );
@@ -23,8 +23,9 @@
23
23
 
24
24
  import { isString, isSvgPath } from "@react-fabric/utilities";
25
25
  import classNames from "classnames";
26
- import { useMemoDebugger } from "../../hooks/useEffectDebugger";
26
+ import { useMemo } from "react";
27
27
  import {
28
+ type PaletteType,
28
29
  type AriaProps,
29
30
  type ColorType,
30
31
  type CssProp,
@@ -32,8 +33,7 @@ import {
32
33
  type SizeType,
33
34
  type TestProps,
34
35
  } from "../../types";
35
- import { getBgClass, getColor, getColorClass } from "../../utils";
36
- import classes from "./Icon.module.css";
36
+ import { getColor } from "../../utils";
37
37
 
38
38
  export interface IconProps extends CssProp, AriaProps, RefProp, TestProps {
39
39
  /**
@@ -43,11 +43,11 @@ export interface IconProps extends CssProp, AriaProps, RefProp, TestProps {
43
43
  /**
44
44
  * background color (CSS color / tailwind color)
45
45
  */
46
- bg?: ColorType | string;
46
+ bg?: ColorType | PaletteType | string;
47
47
  /**
48
48
  * icon color (CSS color / tailwind color)
49
49
  */
50
- color?: ColorType | string;
50
+ color?: ColorType | PaletteType | string;
51
51
  /**
52
52
  * flip icon in rtl
53
53
  */
@@ -68,6 +68,7 @@ export interface IconProps extends CssProp, AriaProps, RefProp, TestProps {
68
68
  * apply animation
69
69
  */
70
70
  animate?: "spin" | "pulse" | "bounce";
71
+ disabled?: boolean;
71
72
  /**
72
73
  * click handler
73
74
  */
@@ -84,7 +85,33 @@ const SizeMap: KeyValue<string> = {
84
85
  };
85
86
 
86
87
  /**
87
- * An icon is a display component for svg icon path / image
88
+ * A versatile icon component that supports SVG paths, webfont icons, and text icons.
89
+ * It can be styled with background color, icon color, size, and animations.
90
+ * It also supports RTL flipping and rounded corners.
91
+ * The component can be used as a standalone icon or as part of other components.
92
+ * It accepts various properties to customize its appearance and behavior.
93
+ * These include `bg`, `color`, `size`, `rtlFlip`, `animate`, and `rounded`.
94
+ *
95
+ * @param {IconProps} props - The properties for the Icon component.
96
+ * @returns {JSX.Element} The rendered Icon component.
97
+ *
98
+ * @example
99
+ * ```jsx
100
+ * <Icon
101
+ * icon="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"
102
+ * bg="bg-blue-500"
103
+ * color="text-white"
104
+ * size="lg"
105
+ * rtlFlip={true}
106
+ * animate="spin"
107
+ * rounded={true}
108
+ * onClick={() => console.log("Icon clicked")}
109
+ * />
110
+ * // Renders an icon with a SVG path, blue background, white text color,
111
+ * // large size, RTL flip, spin animation, rounded corners, and a click handler.
112
+ * ```
113
+ *
114
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-icon--docs} for more details.
88
115
  */
89
116
  export const Icon = ({
90
117
  ref,
@@ -95,92 +122,82 @@ export const Icon = ({
95
122
  rtlFlip,
96
123
  animate,
97
124
  rounded,
125
+ disabled,
98
126
  viewBox = "0 0 24 24",
99
127
  className,
100
128
  onClick,
101
129
  ...rest
102
130
  }: IconProps) => {
103
131
  /** ***************** style map *******************/
104
- const styles = useMemoDebugger(
105
- () => {
106
- const s: KeyValue = {};
107
- if (bg) {
108
- s.backgroundColor = getColor(bg);
109
- }
110
- if (color) {
111
- s.color = getColor(color);
112
- }
113
- if (size && !(size in SizeMap)) {
114
- s.fontSize = size;
115
- }
116
- if (size && size in SizeMap) {
117
- s.fontSize = SizeMap[size];
118
- }
119
- return s;
120
- },
121
- [bg, color, size],
122
- "Icon styles",
123
- );
132
+ const styles = useMemo(() => {
133
+ const s: KeyValue = {};
134
+ if (bg) {
135
+ s.backgroundColor = getColor(bg);
136
+ }
137
+ if (color) {
138
+ s.color = getColor(color);
139
+ }
140
+ if (size && !(size in SizeMap)) {
141
+ s.fontSize = size;
142
+ }
143
+ if (size && size in SizeMap) {
144
+ s.fontSize = SizeMap[size];
145
+ }
146
+ return s;
147
+ }, [bg, color, size]);
124
148
 
125
149
  /** ***************** check if icon is svg path *******************/
126
- const isSvg = useMemoDebugger(
127
- () => {
128
- return isSvgPath(icon);
129
- },
130
- [icon],
131
- "Icon isSvg",
132
- );
150
+ const isSvg = useMemo(() => {
151
+ return isSvgPath(icon);
152
+ }, [icon]);
133
153
 
134
154
  /** ***************** render icon *******************/
135
- const iconEl = useMemoDebugger(
136
- () => {
137
- if (!isString(icon)) {
138
- throw Error("Invalid icon expected string");
139
- }
140
- return isSvg ? (
141
- <svg viewBox={viewBox}>
142
- <path fill="currentColor" d={icon.toString()} />
143
- </svg>
144
- ) : icon?.toString().length <= 4 ? (
145
- <svg role="img">
146
- <text
147
- x="50%"
148
- y="50%"
149
- dy=".1em"
150
- dominantBaseline="middle"
151
- textAnchor="middle"
152
- style={{ fontSize: SvgTextSize[icon.length] ?? "1em" }}
153
- >
154
- {icon}
155
- </text>
156
- </svg>
157
- ) : (
158
- <i className={`${icon}`} />
159
- );
160
- },
161
- [icon, isSvg, viewBox],
162
- "Icon el",
163
- );
155
+ const iconEl = useMemo(() => {
156
+ if (!isString(icon)) {
157
+ throw Error("Invalid icon expected string");
158
+ }
159
+ return isSvg ? (
160
+ <svg viewBox={viewBox}>
161
+ <path fill="currentColor" d={icon.toString()} />
162
+ </svg>
163
+ ) : icon?.toString().length <= 4 ? (
164
+ <svg role="img">
165
+ <text
166
+ x="50%"
167
+ y="50%"
168
+ dy=".1em"
169
+ dominantBaseline="middle"
170
+ textAnchor="middle"
171
+ style={{ fontSize: SvgTextSize[icon.length] }}
172
+ >
173
+ {icon}
174
+ </text>
175
+ </svg>
176
+ ) : (
177
+ <i className={`${icon}`} />
178
+ );
179
+ }, [icon, isSvg, viewBox]);
164
180
 
165
181
  return (
166
182
  <dfn
167
- {...rest}
183
+ data-ref="icon"
168
184
  ref={ref}
185
+ {...rest}
169
186
  role="presentation"
170
187
  className={classNames(
171
- classes.icon,
172
- className,
173
- "select-none overflow-hidden inline-block box-content leading-none not-italic text-center",
174
- bg && getBgClass(bg),
175
- color && getColorClass(color),
188
+ "fabric-icon",
189
+ "select-none overflow-hidden box-content leading-none not-italic text-center",
176
190
  !rounded && "rounded",
177
191
  rounded && "rounded-full",
178
192
  animate && `animate-${animate}`,
193
+ !!onClick && disabled && "opacity-30 pointer-events-none",
194
+ className,
179
195
  )}
180
196
  onClick={onClick}
181
197
  data-flip={rtlFlip}
182
198
  style={styles}
183
199
  data-clickable={!!onClick}
200
+ data-inner-clickable={!!onClick}
184
201
  >
185
202
  {iconEl}
186
203
  </dfn>
@@ -26,8 +26,8 @@ export {
26
26
  AnimationBars,
27
27
  AnimationIndicator,
28
28
  AnimationSpinner,
29
- Skeleton,
30
29
  Loading,
30
+ Skeleton,
31
31
  } from "./animations/Animations";
32
32
  export { Avatar } from "./avatar/Avatar";
33
33
  export { AvatarGroup } from "./avatar/AvatarGroup";
@@ -40,6 +40,7 @@ export { ToggleButtonGroup } from "./button/ToggleButtonGroup";
40
40
  export { Callout } from "./callout/Callout";
41
41
  export { Card } from "./card/Card";
42
42
  export { CardCover } from "./card/CardCover";
43
+ export { FlipContent, type FlipContentRef } from "./card/FlipContent";
43
44
  export { Chip } from "./chip/Chip";
44
45
  export { Collapsable } from "./collapsable/Collapsable";
45
46
  export { Divider } from "./divider/Divider";