@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
@@ -26,25 +26,22 @@ import { useMemo } from "react";
26
26
  import { type ContentProps } from "../../core/content/Content";
27
27
  import { type HeadFootProps } from "../../core/headfoot/HeadFoot";
28
28
  import { usePropToggle } from "../../hooks/usePropToggle";
29
+ import { HotKey } from "../../hotkeys/HotKey";
29
30
  import {
30
31
  type AriaProps,
31
32
  type ChildrenProp,
32
33
  type CollapseProps,
33
34
  type CssProp,
34
35
  type ExpandProps,
35
- type IconProps,
36
36
  type TestProps,
37
37
  } from "../../types";
38
- import { CoreIcons } from "../../types/icons";
39
- import { Loading } from "../animations/Animations";
40
- import { Icon } from "../icon/Icon";
41
- import classes from "./Panel.module.css";
38
+ import { LoadingLine } from "../animations/Animations";
39
+ import { getIconProps, Icon, type IconProps } from "../icon/Icon";
42
40
 
43
41
  export interface PanelProps
44
42
  extends CssProp,
45
43
  AriaProps,
46
44
  TestProps,
47
- IconProps,
48
45
  ExpandProps,
49
46
  CollapseProps,
50
47
  ChildrenProp<HeadFootProps | ContentProps> {
@@ -68,6 +65,10 @@ export interface PanelProps
68
65
  * title css classname(s)
69
66
  */
70
67
  titleClassName?: string;
68
+ /**
69
+ * icon path or props
70
+ */
71
+ icon?: IconProps;
71
72
  /**
72
73
  * loading state
73
74
  */
@@ -102,6 +103,41 @@ export interface PanelProps
102
103
  onClose?: () => void;
103
104
  }
104
105
 
106
+ /**
107
+ * A component that represents a panel with a header, body, and optional actions.
108
+ * It supports expandable and collapsible functionality, loading state, and customizable styles.
109
+ * The panel can be resized and has a fixed position when expanded.
110
+ * It can be customized with different colors, icons, and behaviors.
111
+ * This component is useful for displaying content in a structured way, allowing users to interact with it through actions and toggles.
112
+ * It can be used in various applications where panels are needed, such as dashboards, settings pages, or content management systems.
113
+ *
114
+ * @param {PanelProps} props - The properties for the Panel component.
115
+ * @returns {JSX.Element} The rendered Panel component.
116
+ *
117
+ * @example
118
+ * ```jsx
119
+ * <Panel
120
+ * title="Panel Title"
121
+ * icon="icon-[mdi--info]"
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,
@@ -110,9 +146,6 @@ export const Panel = ({
110
146
  title,
111
147
  actions,
112
148
  icon,
113
- iconBg,
114
- iconColor,
115
- rtlFlip,
116
149
  panelId,
117
150
  height,
118
151
  width,
@@ -146,7 +179,7 @@ export const Panel = ({
146
179
  return (
147
180
  <div
148
181
  className={classNames(
149
- classes.panel,
182
+ "fabric-panel",
150
183
  className,
151
184
  "rounded-capped overflow-hidden outline grid",
152
185
  expanded ? "fixed inset-4 z-50" : "relative",
@@ -169,31 +202,30 @@ export const Panel = ({
169
202
  }
170
203
  {...aria}
171
204
  >
205
+ {expanded && <HotKey keyCombo="esc" handler={toggleExpand} />}
172
206
  <header
173
207
  role="none"
174
208
  className={classNames(
175
- classes.panelHeader,
209
+ "fabric-panelHeader",
176
210
  headerClassName,
177
211
  "flex flex-nowrap items-center area-head",
178
212
  )}
179
- data-testid="panel-header"
213
+ data-ref="panelHeader"
180
214
  onClick={collapsable ? toggleCollapse : undefined}
181
215
  >
182
216
  {onBack && (
183
217
  <Icon
218
+ rtlFlip
184
219
  data-ref="panelBack"
185
- className={classNames(classes.panelAction, "cursor-pointer")}
186
- icon={CoreIcons.chevronLeft}
220
+ className={classNames("fabric-panelAction", "cursor-pointer")}
221
+ icon="icon-[mdi--chevron-left]"
187
222
  onClick={onBack}
188
223
  />
189
224
  )}
190
225
  {icon && (
191
226
  <Icon
192
- icon={icon}
193
- bg={iconBg}
194
- color={iconColor}
195
- rtlFlip={rtlFlip}
196
227
  className="p-2 text-md select-none pointer-events-none"
228
+ {...getIconProps(icon)}
197
229
  />
198
230
  )}
199
231
  <div
@@ -205,7 +237,7 @@ export const Panel = ({
205
237
  >
206
238
  {title}
207
239
  </div>
208
- <div className="px-1">{actions}</div>
240
+ <div className="px-1 leading-none">{actions}</div>
209
241
  {hasTools && (
210
242
  <div
211
243
  role="none"
@@ -215,24 +247,30 @@ export const Panel = ({
215
247
  {expandable && (
216
248
  <Icon
217
249
  data-ref="panelExpand"
218
- className={classNames(classes.panelAction, "cursor-pointer")}
219
- icon={expanded ? CoreIcons.minimize : CoreIcons.maximize}
250
+ className={classNames("fabric-panelAction", "cursor-pointer")}
251
+ icon={
252
+ expanded
253
+ ? "icon-[mdi--fullscreen-exit]"
254
+ : "icon-[mdi--fullscreen]"
255
+ }
220
256
  onClick={toggleExpand}
221
257
  />
222
258
  )}
223
259
  {!expanded && collapsable && (
224
260
  <Icon
225
261
  data-ref="panelCollapse"
226
- className={classNames(classes.panelAction, "cursor-pointer")}
227
- icon={collapsed ? CoreIcons.expand : CoreIcons.collapse}
262
+ className={classNames("fabric-panelAction", "cursor-pointer")}
263
+ icon={
264
+ collapsed ? "icon-[mdi--plus-box]" : "icon-[mdi--minus-box]"
265
+ }
228
266
  onClick={toggleCollapse}
229
267
  />
230
268
  )}
231
269
  {!expanded && onClose && (
232
270
  <Icon
233
271
  data-ref="panelClose"
234
- className={classNames(classes.panelAction, "cursor-pointer")}
235
- icon={CoreIcons.close}
272
+ className={classNames("fabric-panelAction", "cursor-pointer")}
273
+ icon="icon-[mdi--close]"
236
274
  onClick={onClose}
237
275
  />
238
276
  )}
@@ -241,13 +279,13 @@ export const Panel = ({
241
279
  </header>
242
280
  {(!collapsed || expanded) && (
243
281
  <div
244
- data-testid="panel-body"
282
+ data-ref="panelBody"
245
283
  className={classNames(
246
- classes.panelBody,
284
+ "fabric-panelBody",
247
285
  "area-content grid overflow-hidden",
248
286
  )}
249
287
  >
250
- {loading && <Loading />}
288
+ {loading && <LoadingLine />}
251
289
  {children}
252
290
  </div>
253
291
  )}
@@ -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,
@@ -82,7 +113,7 @@ export const PanelStack = ({
82
113
  }, [onPanelChange, history]);
83
114
 
84
115
  const goBack = useCallback(() => {
85
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-boolean-literal-compare
116
+
86
117
  if (onBack?.(history[0], history[1] ?? "root") !== false) {
87
118
  setHistory(history.slice(1));
88
119
  }
@@ -100,7 +131,7 @@ export const PanelStack = ({
100
131
  if (panelKey === "back") {
101
132
  goBack();
102
133
  } else if (panelKey === "root") {
103
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-boolean-literal-compare
134
+
104
135
  if (onBack?.(history[0], "root") !== false) {
105
136
  setHistory([]);
106
137
  }
@@ -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>
@@ -24,12 +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";
27
+ import { type PaletteType, type ColorType } from "../../types";
28
+ import { getColor } from "../../utils";
29
29
 
30
30
  export interface ProgressProps {
31
31
  /**
32
- * progress value (0-100)
32
+ * progress value (0-1)
33
33
  */
34
34
  value: number;
35
35
  /**
@@ -39,7 +39,7 @@ export interface ProgressProps {
39
39
  /**
40
40
  * color
41
41
  */
42
- color?: ColorType;
42
+ color?: ColorType | PaletteType;
43
43
  }
44
44
 
45
45
  const SizeMap: KeyValue = {
@@ -50,14 +50,33 @@ const SizeMap: KeyValue = {
50
50
  xl: "2rem",
51
51
  };
52
52
 
53
+ /**
54
+ * A circular progress indicator that visually represents a percentage of completion.
55
+ * It displays a circular track with a stroke that fills based on the `value` prop.
56
+ * The component is customizable with size and color props.
57
+ *
58
+ * @param {ProgressProps} props - The properties for the ProgressCircle component.
59
+ * @returns {JSX.Element} - A circular progress indicator.
60
+ *
61
+ * @example
62
+ * ```jsx
63
+ * <ProgressCircle value={0.75} size="md" color="primary-500" />
64
+ * // Renders a circular progress indicator with 75% completion, medium size, and primary color.
65
+ *
66
+ * <ProgressCircle value={0.5} size="lg" color="secondary-500" />
67
+ * // Renders a circular progress indicator with 50% completion, large size, and secondary color.
68
+ * ```
69
+ *
70
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-progress--docs} for more details.
71
+ */
53
72
  export const ProgressCircle = ({
54
73
  value = 0,
55
74
  size = "sm",
56
- color = "primary",
75
+ color = "primary-500",
57
76
  }: ProgressProps) => {
58
77
  /** ***************** make sure value is between 0 and 100 *******************/
59
78
  const actualValue = useMemoDebugger(
60
- () => Math.min(Math.max(value, 0), 100),
79
+ () => Math.min(Math.max(value, 0), 1),
61
80
  [value],
62
81
  "ProgressCirle value",
63
82
  );
@@ -66,7 +85,7 @@ export const ProgressCircle = ({
66
85
  const strokeDashoffset = useMemoDebugger(
67
86
  () => {
68
87
  const circumfrence = Math.PI * 2 * 44;
69
- return circumfrence * (1 - actualValue / 100);
88
+ return circumfrence * (1 - actualValue);
70
89
  },
71
90
  [actualValue],
72
91
  "ProgressCirle dashOffset",
@@ -75,12 +94,9 @@ export const ProgressCircle = ({
75
94
  /** ***************** component *******************/
76
95
  return (
77
96
  <div
78
- className={classNames(
79
- "inline-block w-[4em] h-[4em] text-lg relative",
80
- getColorClass(color),
81
- )}
97
+ className={classNames("inline-block w-[4em] h-[4em] text-lg relative")}
82
98
  aria-hidden="true"
83
- style={{ fontSize: SizeMap[size] }}
99
+ style={{ fontSize: SizeMap[size], color: getColor(color) }}
84
100
  >
85
101
  <svg
86
102
  viewBox="0 0 100 100"
@@ -111,7 +127,7 @@ export const ProgressCircle = ({
111
127
  />
112
128
  </svg>
113
129
  <span className="flex w-full h-full items-center justify-center select-none font-bold text-[0.625em]">
114
- {Format.percent(actualValue / 100)}
130
+ {Format.percent(actualValue)}
115
131
  </span>
116
132
  </div>
117
133
  );
@@ -30,9 +30,8 @@ import {
30
30
  type BadgeType,
31
31
  type CallbackReturn,
32
32
  type ChildrenProp,
33
- type ColorType,
33
+ type ColorState,
34
34
  type CssProp,
35
- type IconProps,
36
35
  type PolymorphicProps,
37
36
  type RefProp,
38
37
  type TestProps,
@@ -40,8 +39,7 @@ import {
40
39
  } from "../../types";
41
40
  import { Badge, getBadgeProps } from "../badge/Badge";
42
41
  import { DropdownTool } from "../dropdown/DropdownTool";
43
- import { Icon } from "../icon/Icon";
44
- import classes from "./TabPanel.module.css";
42
+ import { getIconProps, Icon, type IconProps } from "../icon/Icon";
45
43
 
46
44
  export interface TabProps
47
45
  extends Partial<ChildrenProp>,
@@ -49,7 +47,6 @@ export interface TabProps
49
47
  RefProp,
50
48
  AriaProps,
51
49
  TestProps,
52
- IconProps,
53
50
  TooltipProp {
54
51
  /**
55
52
  * tab id
@@ -62,7 +59,11 @@ export interface TabProps
62
59
  /**
63
60
  * tab color
64
61
  */
65
- color?: ColorType;
62
+ color?: ColorState;
63
+ /**
64
+ * icon path or props
65
+ */
66
+ icon?: IconProps;
66
67
  /**
67
68
  * tab badge
68
69
  */
@@ -93,6 +94,35 @@ export interface TabProps
93
94
  onClick?: (id: string) => CallbackReturn;
94
95
  }
95
96
 
97
+ /**
98
+ * A component that represents a tab in a tabbed interface. It can display an icon, label, badge, and actions.
99
+ * It supports polymorphic rendering, allowing it to be rendered as different HTML elements.
100
+ * It also supports tooltips, active states, and click handling.
101
+ *
102
+ * @param {TabProps} props - The properties for the Tab component.
103
+ * @returns {JSX.Element} The rendered Tab component.
104
+ *
105
+ * @example
106
+ * ```jsx
107
+ * <Tab
108
+ * id="tab1"
109
+ * label="Tab 1"
110
+ * icon="home"
111
+ * badge="New"
112
+ * onClick={(id) => console.log(`Tab clicked: ${id}`)}
113
+ * onClose={() => console.log("Tab closed")}
114
+ * active={true}
115
+ * actions={<button>Action</button>}
116
+ * color="primary"
117
+ * tooltip="This is a tab"
118
+ * activeClassName="bg-blue-100"
119
+ * />
120
+ * // Renders a tab with label "Tab 1", home icon, blue background, white text, badge "New",
121
+ * // and an action button. The tab is active and has a tooltip.
122
+ * ```
123
+ *
124
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-tabpanel--docs} for more details.
125
+ */
96
126
  export const Tab = <Tag extends React.ElementType = "button">({
97
127
  ref,
98
128
  as,
@@ -100,16 +130,11 @@ export const Tab = <Tag extends React.ElementType = "button">({
100
130
  className,
101
131
  label,
102
132
  icon,
103
- iconBg,
104
- iconColor,
105
- rtlFlip,
106
133
  badge,
107
134
  disabled,
108
135
  onClose,
109
136
  // @ts-expect-error ignore
110
137
  active,
111
- // @ts-expect-error ignore
112
- minimal,
113
138
  onClick,
114
139
  tabFlex,
115
140
  color,
@@ -122,6 +147,8 @@ export const Tab = <Tag extends React.ElementType = "button">({
122
147
  return getBadgeProps(badge);
123
148
  }, [badge]);
124
149
 
150
+ const minimal = useMemo(() => !label, [label]);
151
+
125
152
  const tooltipProps = useMemo(() => {
126
153
  if (isString(tooltip)) return { content: tooltip };
127
154
 
@@ -136,28 +163,22 @@ export const Tab = <Tag extends React.ElementType = "button">({
136
163
  data-id={id}
137
164
  disabled={disabled}
138
165
  data-color={color}
166
+ data-inner-clickable
139
167
  className={classNames(
140
- classes.tabButton,
168
+ "fabric-tabButton",
141
169
  className,
142
170
  active && "active pointer-events-none",
143
171
  active && activeClassName,
144
172
  disabled && "text-tint-500 pointer-events-none",
145
- tabFlex ? "flex-1" : "flex-initial max-w-36 min-w-24",
146
- "flex items-center justify-center px-1 rounded overflow-hidden",
173
+ tabFlex ? "flex-1" : "flex-initial max-w-36",
174
+ minimal ? "min-w-6 rounded" : "rounded-capped",
175
+ "flex items-center justify-center overflow-hidden cursor-pointer",
147
176
  )}
148
177
  onClick={() => !active && onClick?.(id)}
149
178
  ref={ref as AnyObject}
150
179
  {...aria}
151
180
  >
152
- {icon && (
153
- <Icon
154
- icon={icon}
155
- bg={iconBg}
156
- color={iconColor}
157
- rtlFlip={rtlFlip}
158
- className="flex-content"
159
- />
160
- )}
181
+ {icon && <Icon className="flex-content p-2" {...getIconProps(icon)} />}
161
182
  {!minimal && (
162
183
  <label className="flex-initial truncate text-center px-1 py-1">
163
184
  {label}
@@ -171,7 +192,9 @@ export const Tab = <Tag extends React.ElementType = "button">({
171
192
  />
172
193
  )}
173
194
  {actions && active && (
174
- <DropdownTool className="bg-base/20 me-1 z-5">{actions}</DropdownTool>
195
+ <DropdownTool className="bg-tint-50/20 me-1 z-5">
196
+ {actions}
197
+ </DropdownTool>
175
198
  )}
176
199
  {onClose && (
177
200
  <span