@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
@@ -22,17 +22,38 @@
22
22
  */
23
23
 
24
24
  import { useFloatingTree } from "@floating-ui/react";
25
- import { iconToken } from "@react-fabric/utilities";
25
+ import { iconToken, mergeRefs } from "@react-fabric/utilities";
26
26
  import classNames from "classnames";
27
- import { Fragment, useCallback, useMemo } from "react";
27
+ import { Fragment, useCallback, useEffect, useMemo, useRef } from "react";
28
+ import { HotKey } from "../../hotkeys/HotKey";
28
29
  import { HotKeyLabel } from "../../hotkeys/HotKeyLabel";
29
30
  import { Tooltip } from "../../overlays";
30
31
  import { type PolymorphicProps } from "../../types";
31
32
  import { Badge, getBadgeProps } from "../badge/Badge";
32
33
  import { Icon } from "../icon/Icon";
33
- import classes from "./Menu.module.css";
34
34
  import { type MenuItemProps } from "./types";
35
35
 
36
+ /**
37
+ * A menu item component that can be used in a dropdown or menu.
38
+ * It supports various features such as icons, badges, hotkeys, and more.
39
+ * It can be customized with different colors, icons, and behaviors.
40
+ *
41
+ * @param {MenuItemProps} props
42
+ * @returns A JSX element representing the menu item.
43
+ *
44
+ * @example
45
+ * ```jsx
46
+ * <MenuItem
47
+ * label="Settings"
48
+ * icon="settings"
49
+ * onClick={() => console.log("Settings clicked")}
50
+ * hotKey="Ctrl+S"
51
+ * badge={{ count: 3, color: "red" }}
52
+ * />
53
+ * ```
54
+ *
55
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-menu--docs} for documentation.
56
+ */
36
57
  export const MenuItem = <Tag extends React.ElementType = "button">({
37
58
  as,
38
59
  label,
@@ -50,6 +71,7 @@ export const MenuItem = <Tag extends React.ElementType = "button">({
50
71
  onClick,
51
72
  badge,
52
73
  hotKey,
74
+ tabIndex = -1,
53
75
  // @ts-expect-error ignore
54
76
  minimal,
55
77
  // @ts-expect-error ignore
@@ -58,11 +80,16 @@ export const MenuItem = <Tag extends React.ElementType = "button">({
58
80
  ref,
59
81
  ...aria
60
82
  }: MenuItemProps & PolymorphicProps<Tag>) => {
83
+ const elRef = useRef<HTMLElement>(null);
61
84
  const tree = useFloatingTree();
62
85
  const badgeProps = useMemo(() => {
63
86
  return getBadgeProps(badge);
64
87
  }, [badge]);
65
88
 
89
+ useEffect(() => {
90
+ tabIndex === 0 && elRef.current?.focus();
91
+ }, [tabIndex]);
92
+
66
93
  const iconEl = useMemo(() => {
67
94
  let path = icon;
68
95
  if (minimal && !path) {
@@ -70,7 +97,7 @@ export const MenuItem = <Tag extends React.ElementType = "button">({
70
97
  }
71
98
  return (
72
99
  <Icon
73
- className={classNames(classes.menuIcon, minimal && classes.minimal)}
100
+ className={classNames("fabric-menuIcon", minimal && "minimal")}
74
101
  icon={path ?? ""}
75
102
  bg={iconBg}
76
103
  color={iconColor}
@@ -135,26 +162,30 @@ export const MenuItem = <Tag extends React.ElementType = "button">({
135
162
  return (
136
163
  <Wrapper {...aria}>
137
164
  <E
138
- ref={ref}
165
+ ref={mergeRefs(ref, elRef)}
139
166
  data-dropdown-dismiss
140
167
  data-color={color}
141
168
  className={classNames(
142
- classes.menuItem,
169
+ "fabric-menuItem cursor-pointer",
143
170
  className,
144
- active && classes.active,
145
- minimal && classes.minimal,
146
- disabled && classes.disabled,
171
+ active && "active",
172
+ minimal && "minimal",
173
+ disabled && "disabled",
147
174
  "rounded-capped relative max-w-[50vw] my-0.5",
148
175
  )}
149
176
  data-active={active}
150
177
  data-open={childOpen}
151
178
  disabled={disabled}
152
179
  data-id={id}
180
+ tabIndex={tabIndex}
153
181
  onClick={(e) => {
154
182
  onClick?.(e) !== false && tree?.events.emit("click");
155
183
  }}
156
184
  {...(minimal ? {} : aria)}
157
185
  >
186
+ {hotKey && (
187
+ <HotKey keyCombo={hotKey} handler={() => elRef.current?.click?.()} />
188
+ )}
158
189
  {menuLabel}
159
190
  </E>
160
191
  </Wrapper>
@@ -27,7 +27,7 @@ import {
27
27
  type BadgeType,
28
28
  type CallbackReturn,
29
29
  type ChildrenProp,
30
- type ColorType,
30
+ type ColorState,
31
31
  type CssProp,
32
32
  type IconProps,
33
33
  type TestProps,
@@ -53,7 +53,7 @@ export interface MenuItemProps
53
53
  /**
54
54
  * menu color
55
55
  */
56
- color?: ColorType;
56
+ color?: ColorState;
57
57
  /**
58
58
  * item active
59
59
  */
@@ -90,6 +90,7 @@ export interface MenuRootProps extends CssProp {
90
90
  export interface MenuInnerProps extends MenuItemProps {
91
91
  label: string;
92
92
  minimal?: never;
93
+ trigger?: "hover" | "click";
93
94
  /**
94
95
  * floating menu className
95
96
  */
@@ -25,7 +25,6 @@ import { Format } from "@react-fabric/utilities";
25
25
  import classNames from "classnames";
26
26
  import { useMemoDebugger } from "../../hooks/useEffectDebugger";
27
27
  import { type AriaProps, type CssProp, type TestProps } from "../../types";
28
- import classes from "./Meter.module.css";
29
28
 
30
29
  export interface MeterProps extends CssProp, AriaProps, TestProps {
31
30
  /**
@@ -38,6 +37,30 @@ export interface MeterProps extends CssProp, AriaProps, TestProps {
38
37
  hideLabel?: boolean;
39
38
  }
40
39
 
40
+ /**
41
+ * A component that displays a visual representation of a value as a series of dots.
42
+ * It is useful for showing progress or completion status in a compact form.
43
+ * The meter consists of 6 dots, each representing approximately 16.67% of the total value.
44
+ * The active dots are filled based on the value provided, and the remaining dots are empty.
45
+ * The component can also display a label showing the percentage value.
46
+ *
47
+ * @param {MeterProps} props - The properties for the Meter component.
48
+ * @returns {JSX.Element} The rendered Meter component.
49
+ *
50
+ * @example
51
+ * ```jsx
52
+ * <Meter value={75} />
53
+ * // Renders a meter with 4 active dots and a label showing "75%"
54
+ *
55
+ * <Meter value={50} hideLabel />
56
+ * // Renders a meter with 3 active dots and no label
57
+ *
58
+ * <Meter value={100} className="custom-meter" />
59
+ * // Renders a meter with all 6 active dots and a custom class name
60
+ * ```
61
+ *
62
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-meter--docs} for more details.
63
+ */
41
64
  export const Meter = ({ value, hideLabel, className, ...aria }: MeterProps) => {
42
65
  /** ***************** calculate active meter dots *******************/
43
66
  const activeCount = useMemoDebugger(
@@ -51,7 +74,7 @@ export const Meter = ({ value, hideLabel, className, ...aria }: MeterProps) => {
51
74
  return (
52
75
  <div
53
76
  className={classNames(
54
- classes.meter,
77
+ "fabric-meter",
55
78
  className,
56
79
  "flex flex-nowrap items-center gap-[2px]",
57
80
  )}
@@ -61,7 +84,7 @@ export const Meter = ({ value, hideLabel, className, ...aria }: MeterProps) => {
61
84
  <div
62
85
  key={step}
63
86
  className={classNames(
64
- classes.meterBar,
87
+ "fabric-meterBar",
65
88
  "first-of-type:rounded-s last-of-type:rounded-e bg-tint-100 relative outline -outline-offset-1 outline-muted overflow-hidden after:absolute after:inset-0",
66
89
  )}
67
90
  data-active={activeCount >= step}
@@ -22,55 +22,106 @@
22
22
  */
23
23
 
24
24
  import classNames from "classnames";
25
+ import { useCallback } from "react";
25
26
  import { HotKey } from "../../hotkeys/HotKey";
26
27
  import {
27
28
  type AriaProps,
29
+ type ChildProp,
28
30
  type ColorType,
29
31
  type CssProp,
32
+ type PaletteType,
30
33
  type TestProps,
31
34
  } from "../../types";
32
35
  import { CoreIcons } from "../../types/icons";
33
36
  import { Icon } from "../icon/Icon";
37
+ import { isEmpty } from "@react-fabric/utilities";
34
38
 
35
- export interface NavigatorProps extends CssProp, AriaProps, TestProps {
39
+ export interface NavigatorProps
40
+ extends CssProp,
41
+ AriaProps,
42
+ TestProps,
43
+ Partial<ChildProp> {
44
+ length?: number;
45
+ current?: number;
46
+ disableKeyHandlers?: boolean;
36
47
  /**
37
48
  * navigator button color
38
49
  */
39
- color?: ColorType | string;
50
+ color?: ColorType | PaletteType | string;
40
51
  /**
41
52
  * navigation handler
42
53
  */
43
54
  onNavigate: (dir: -1 | 1) => void;
44
55
  }
45
56
 
57
+ /**
58
+ * A component that provides navigation controls for traversing through items.
59
+ * It includes previous and next buttons, and supports keyboard navigation.
60
+ *
61
+ * @param {NavigatorProps} props - The properties for the Navigator component.
62
+ * @returns {JSX.Element} The rendered Navigator component.
63
+ *
64
+ * @example
65
+ * ```jsx
66
+ * <Navigator
67
+ * className="my-navigator"
68
+ * onNavigate={(dir) => console.log(`Navigate ${dir === -1 ? 'previous' : 'next'}`)}
69
+ * color="blue"
70
+ * length={10}
71
+ * current={0}
72
+ * >
73
+ * <span>Current Item: 1</span>
74
+ * </Navigator>
75
+ * ```
76
+ *
77
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-navigator--docs} for more details.
78
+ */
46
79
  export const Navigator = ({
47
80
  className,
48
81
  onNavigate,
49
82
  color,
83
+ children,
84
+ length,
85
+ current,
86
+ disableKeyHandlers,
50
87
  ...aria
51
88
  }: NavigatorProps) => {
89
+ const navPrev = useCallback(
90
+ () => (isEmpty(current) || current !== 0) && onNavigate(-1),
91
+ [onNavigate, current],
92
+ );
93
+ const navNext = useCallback(
94
+ () => (isEmpty(current) || current + 1 < (length ?? 0)) && onNavigate(+1),
95
+ [onNavigate, current, length],
96
+ );
52
97
  return (
53
98
  <div
54
- className={classNames(className, "inline-block leading-none")}
99
+ data-ref="navigator"
100
+ className={classNames(className, "inline-flex items-center leading-none")}
55
101
  {...aria}
56
102
  >
57
- <HotKey keyCombo="left" handler={() => onNavigate(-1)} />
58
- <HotKey keyCombo="right" handler={() => onNavigate(1)} />
103
+ {!disableKeyHandlers && <HotKey keyCombo="left" handler={navPrev} />}
104
+ {!disableKeyHandlers && <HotKey keyCombo="right" handler={navNext} />}
59
105
  <Icon
60
106
  rtlFlip
61
107
  color={color}
62
108
  className="text-[1em] p-1"
63
109
  aria-label="previous"
110
+ data-ref="previous"
64
111
  icon={CoreIcons.chevronLeft}
65
- onClick={(e) => [e.stopPropagation(), onNavigate(-1)]}
112
+ disabled={!isEmpty(current) && current === 0}
113
+ onClick={(e) => [e.stopPropagation(), navPrev()]}
66
114
  />
115
+ {children}
67
116
  <Icon
68
117
  rtlFlip
69
118
  className="text-[1em] p-1"
70
119
  color={color}
71
120
  aria-label="next"
121
+ data-ref="next"
72
122
  icon={CoreIcons.chevronRight}
73
- onClick={(e) => [e.stopPropagation(), onNavigate(1)]}
123
+ disabled={!isEmpty(current) && current + 1 === length}
124
+ onClick={(e) => [e.stopPropagation(), navNext()]}
74
125
  />
75
126
  </div>
76
127
  );
@@ -38,7 +38,6 @@ import {
38
38
  import { CoreIcons } from "../../types/icons";
39
39
  import { Loading } from "../animations/Animations";
40
40
  import { Icon } from "../icon/Icon";
41
- import classes from "./Panel.module.css";
42
41
 
43
42
  export interface PanelProps
44
43
  extends CssProp,
@@ -102,6 +101,43 @@ export interface PanelProps
102
101
  onClose?: () => void;
103
102
  }
104
103
 
104
+ /**
105
+ * A component that represents a panel with a header, body, and optional actions.
106
+ * It supports expandable and collapsible functionality, loading state, and customizable styles.
107
+ * The panel can be resized and has a fixed position when expanded.
108
+ * It can be customized with different colors, icons, and behaviors.
109
+ * This component is useful for displaying content in a structured way, allowing users to interact with it through actions and toggles.
110
+ * It can be used in various applications where panels are needed, such as dashboards, settings pages, or content management systems.
111
+ *
112
+ * @param {PanelProps} props - The properties for the Panel component.
113
+ * @returns {JSX.Element} The rendered Panel component.
114
+ *
115
+ * @example
116
+ * ```jsx
117
+ * <Panel
118
+ * title="Panel Title"
119
+ * icon={CoreIcons.info}
120
+ * iconBg="bg-blue-500"
121
+ * iconColor="text-white"
122
+ * actions={<button>Action</button>}
123
+ * expandable
124
+ * collapsable
125
+ * onExpand={() => console.log("Expanded")}
126
+ * onCollapse={() => console.log("Collapsed")}
127
+ * onClose={() => console.log("Closed")}
128
+ * height="400px"
129
+ * width="300px"
130
+ * minHeight="200px"
131
+ * minWidth="200px"
132
+ * maxHeight="600px"
133
+ * maxWidth="600px"
134
+ * >
135
+ * <p>This is the content of the panel.</p>
136
+ * </Panel>
137
+ * ```
138
+ *
139
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-panel--docs} for more details.
140
+ */
105
141
  export const Panel = ({
106
142
  children,
107
143
  className,
@@ -146,7 +182,7 @@ export const Panel = ({
146
182
  return (
147
183
  <div
148
184
  className={classNames(
149
- classes.panel,
185
+ "fabric-panel",
150
186
  className,
151
187
  "rounded-capped overflow-hidden outline grid",
152
188
  expanded ? "fixed inset-4 z-50" : "relative",
@@ -172,16 +208,17 @@ export const Panel = ({
172
208
  <header
173
209
  role="none"
174
210
  className={classNames(
175
- classes.panelHeader,
211
+ "fabric-panelHeader",
176
212
  headerClassName,
177
213
  "flex flex-nowrap items-center area-head",
178
214
  )}
215
+ data-ref="panelHeader"
179
216
  onClick={collapsable ? toggleCollapse : undefined}
180
217
  >
181
218
  {onBack && (
182
219
  <Icon
183
220
  data-ref="panelBack"
184
- className={classNames(classes.panelAction, "cursor-pointer")}
221
+ className={classNames("fabric-panelAction", "cursor-pointer")}
185
222
  icon={CoreIcons.chevronLeft}
186
223
  onClick={onBack}
187
224
  />
@@ -204,7 +241,7 @@ export const Panel = ({
204
241
  >
205
242
  {title}
206
243
  </div>
207
- <div className="px-1">{actions}</div>
244
+ <div className="px-1 leading-none">{actions}</div>
208
245
  {hasTools && (
209
246
  <div
210
247
  role="none"
@@ -214,7 +251,7 @@ export const Panel = ({
214
251
  {expandable && (
215
252
  <Icon
216
253
  data-ref="panelExpand"
217
- className={classNames(classes.panelAction, "cursor-pointer")}
254
+ className={classNames("fabric-panelAction", "cursor-pointer")}
218
255
  icon={expanded ? CoreIcons.minimize : CoreIcons.maximize}
219
256
  onClick={toggleExpand}
220
257
  />
@@ -222,7 +259,7 @@ export const Panel = ({
222
259
  {!expanded && collapsable && (
223
260
  <Icon
224
261
  data-ref="panelCollapse"
225
- className={classNames(classes.panelAction, "cursor-pointer")}
262
+ className={classNames("fabric-panelAction", "cursor-pointer")}
226
263
  icon={collapsed ? CoreIcons.expand : CoreIcons.collapse}
227
264
  onClick={toggleCollapse}
228
265
  />
@@ -230,7 +267,7 @@ export const Panel = ({
230
267
  {!expanded && onClose && (
231
268
  <Icon
232
269
  data-ref="panelClose"
233
- className={classNames(classes.panelAction, "cursor-pointer")}
270
+ className={classNames("fabric-panelAction", "cursor-pointer")}
234
271
  icon={CoreIcons.close}
235
272
  onClick={onClose}
236
273
  />
@@ -240,8 +277,9 @@ export const Panel = ({
240
277
  </header>
241
278
  {(!collapsed || expanded) && (
242
279
  <div
280
+ data-ref="panelBody"
243
281
  className={classNames(
244
- classes.panelBody,
282
+ "fabric-panelBody",
245
283
  "area-content grid overflow-hidden",
246
284
  )}
247
285
  >
@@ -28,7 +28,6 @@ import {
28
28
  useMemoDebugger,
29
29
  } from "../../hooks/useEffectDebugger";
30
30
  import { type ChildrenProp } from "../../types";
31
- import classes from "./Panel.module.css";
32
31
 
33
32
  export interface PanelGroupProps extends ChildrenProp {
34
33
  /**
@@ -41,6 +40,30 @@ export interface PanelGroupProps extends ChildrenProp {
41
40
  onActiveChange?: (panelId: string) => void;
42
41
  }
43
42
 
43
+ /**
44
+ * A component that groups multiple panels together, allowing for one panel to be expanded at a time.
45
+ * This component allows you to manage a group of panels where only one can be expanded at a time.
46
+ * It accepts an `activePanel` prop to control which panel is currently expanded,
47
+ * and an `onActiveChange` callback that is triggered when the active panel changes.
48
+ * It uses the `Panel` component to render each individual panel within the group.
49
+ *
50
+ * @param {PanelGroupProps} props - The properties for the PanelGroup component.
51
+ * @returns {JSX.Element} The rendered PanelGroup component.
52
+ *
53
+ * @example
54
+ * ```jsx
55
+ * <PanelGroup
56
+ * activePanel="panel1"
57
+ * onActiveChange={(panelId) => console.log(`Active panel changed to: ${panelId}`)}
58
+ * >
59
+ * <Panel panelId="panel1" title="Panel 1">Content for Panel 1</Panel>
60
+ * <Panel panelId="panel2" title="Panel 2">Content for Panel 2</Panel>
61
+ * <Panel panelId="panel3" title="Panel 3">Content for Panel 3</Panel>
62
+ * </PanelGroup>
63
+ * ```
64
+ *
65
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-panel--docs} for more details.
66
+ */
44
67
  export const PanelGroup = ({
45
68
  children,
46
69
  activePanel,
@@ -81,7 +104,7 @@ export const PanelGroup = ({
81
104
  <div
82
105
  data-ref="panelGroup"
83
106
  className={classNames(
84
- classes.panelGroup,
107
+ "fabric-panelGroup",
85
108
  "flex flex-col overflow-auto area-content p-px",
86
109
  )}
87
110
  >
@@ -49,6 +49,37 @@ export interface PanelStackProps extends CssProp, ChildrenProp {
49
49
  onBack?: (panelId: string, nextPanelId: string) => boolean | undefined;
50
50
  }
51
51
 
52
+ /**
53
+ * A component that manages a stack of panels, allowing navigation between them.
54
+ * This component allows you to manage a stack of panels where you can navigate between them.
55
+ * It accepts an `active` prop to control which panel is currently active,
56
+ * an `onPanelChange` callback that is triggered when the active panel changes,
57
+ * and an `onBack` callback to handle navigation to the previous panel in the history.
58
+ * It uses the `Panel` component to render each individual panel within the stack.
59
+ * The component maintains a history of panels to allow back navigation,
60
+ * and it updates the active panel based on user interactions.
61
+ *
62
+ * @param {PanelStackProps} props - The properties for the PanelStack component.
63
+ * @returns {JSX.Element} The rendered PanelStack component.
64
+ *
65
+ * @example
66
+ * ```jsx
67
+ * <PanelStack
68
+ * active="panel1"
69
+ * onPanelChange={(panelId) => console.log(`Active panel changed to: ${panelId}`)}
70
+ * onBack={(currentPanel, nextPanel) => {
71
+ * console.log(`Navigating back from ${currentPanel} to ${nextPanel}`);
72
+ * return true; // return false to prevent navigation
73
+ * }}
74
+ * >
75
+ * <Panel panelId="panel1" title="Panel 1">Content for Panel 1</Panel>
76
+ * <Panel panelId="panel2" title="Panel 2">Content for Panel 2</Panel>
77
+ * <Panel panelId="panel3" title="Panel 3">Content for Panel 3</Panel>
78
+ * </PanelStack>
79
+ * ```
80
+ *
81
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-panelstack--docs} for more details.
82
+ */
52
83
  export const PanelStack = ({
53
84
  active,
54
85
  children,
@@ -24,13 +24,12 @@
24
24
  import { Format } from "@react-fabric/utilities";
25
25
  import classNames from "classnames";
26
26
  import { useMemoDebugger } from "../../hooks/useEffectDebugger";
27
- import { type ColorType } from "../../types";
28
- import { getColorClass } from "../../utils";
29
- import classes from "./Progress.module.css";
27
+ import { type PaletteType, type ColorType } from "../../types";
28
+ import { getColor } from "../../utils";
30
29
 
31
30
  export interface ProgressProps {
32
31
  /**
33
- * progress value (0-100)
32
+ * progress value (0-1)
34
33
  */
35
34
  value: number;
36
35
  /**
@@ -40,7 +39,7 @@ export interface ProgressProps {
40
39
  /**
41
40
  * color
42
41
  */
43
- color?: ColorType;
42
+ color?: ColorType | PaletteType;
44
43
  /**
45
44
  * animate
46
45
  */
@@ -61,23 +60,43 @@ const SizeMap: KeyValue = {
61
60
  xl: "2rem",
62
61
  };
63
62
 
63
+ /**
64
+ * A component that displays a progress bar indicating the completion percentage of a task or operation.
65
+ * The progress bar is styled with a background color and a track that fills based on the value provided.
66
+ * It can also display a label showing the percentage value.
67
+ * The label can be customized or hidden based on the props provided.
68
+ *
69
+ * @param {ProgressProps} props - The properties for the ProgressBar component.
70
+ * @returns {JSX.Element} The rendered ProgressBar component.
71
+ *
72
+ * @example
73
+ * ```jsx
74
+ * <ProgressBar value={0.75} size="md" color="primary-500" label="Loading" animate />
75
+ * // Renders a progress bar with 75% completion, medium size, primary color, and a label "Loading"
76
+ *
77
+ * <ProgressBar value={0.5} size="lg" color="success-500" />
78
+ * // Renders a progress bar with 50% completion, large size, and success color without a label
79
+ * ```
80
+ *
81
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-progress--docs} for more details.
82
+ */
64
83
  export const ProgressBar = ({
65
84
  value = 0,
66
85
  size,
67
- color = "primary",
86
+ color = "primary-500",
68
87
  label = "",
69
88
  animate,
70
89
  }: ProgressProps) => {
71
90
  /** ***************** make sure value is between 0 and 100 *******************/
72
91
  const actualValue = useMemoDebugger(
73
- () => Math.min(Math.max(value, 0), 100),
92
+ () => Math.min(Math.max(value, 0), 1),
74
93
  [value],
75
94
  "ProgressBar value",
76
95
  );
77
96
 
78
97
  const progressVar = useMemoDebugger<KeyValue>(
79
98
  () => ({
80
- "--progress": actualValue,
99
+ "--progress": actualValue * 100,
81
100
  }),
82
101
  [actualValue],
83
102
  "ProgressBar cssVar",
@@ -87,12 +106,12 @@ export const ProgressBar = ({
87
106
  return (
88
107
  <div
89
108
  className={classNames(
90
- classes.progressbar,
91
- getColorClass(color),
109
+ "fabric-progressbar",
92
110
  "block bg-dimmed relative rounded font-bold overflow-hidden whitespace-nowrap",
93
111
  )}
94
112
  style={{
95
113
  ...progressVar,
114
+ color: getColor(color),
96
115
  minHeight: SizeMap[size ?? ""],
97
116
  fontSize: SizeMap[size ?? ""],
98
117
  }}
@@ -101,20 +120,20 @@ export const ProgressBar = ({
101
120
  >
102
121
  {!["xxs", "xs", "sm"].includes(size ?? "") && (
103
122
  <div className="absolute inset-0 text-center z-0 align-top">
104
- {label} {Format.percent(actualValue / 100)}
123
+ {label} {Format.percent(actualValue)}
105
124
  </div>
106
125
  )}
107
126
  <div
108
127
  className={classNames(
109
- classes.progressTrack,
110
- animate && classes.progressAnimate,
128
+ "fabric-progressTrack",
129
+ animate && "fabric-progressAnimate",
111
130
  "h-full overflow-clip bg-current relative z-0",
112
131
  )}
113
132
  />
114
133
  {!["xxs", "xs", "sm"].includes(size ?? "") && (
115
134
  <div
116
135
  className={classNames("h-full absolute inset-0 overflow-hidden z-1")}
117
- data-label={`${label} ${Format.percent(actualValue / 100)}`}
136
+ data-label={`${label} ${Format.percent(actualValue)}`}
118
137
  />
119
138
  )}
120
139
  </div>