@react-fabric/core 1.0.0-beta.8 → 1.0.1

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 (592) 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/css/components/_animations.css +52 -0
  4. package/css/components/_avatar.css +89 -0
  5. package/css/components/_button.css +218 -0
  6. package/css/components/_buttonGroup.css +62 -0
  7. package/css/components/_callout.css +32 -0
  8. package/css/components/_card.css +167 -0
  9. package/css/components/_chip.css +125 -0
  10. package/css/components/_collapsable.css +32 -0
  11. package/{src/overlays/message/Message.module.css → css/components/_divider.css} +11 -10
  12. package/{src/components/dropdown/Dropdown.module.css → css/components/_dropdown.css} +3 -2
  13. package/{src/overlays/flyout/Flyout.module.css → css/components/_flyout.css} +15 -9
  14. package/css/components/_media.css +102 -0
  15. package/{src/components/menu/Menu.module.css → css/components/_menu.css} +21 -20
  16. package/{src/components/meter/Meter.module.css → css/components/_meter.css} +15 -20
  17. package/{src/overlays/modal/Modal.module.css → css/components/_modal.css} +9 -9
  18. package/{src/components/panel/Panel.module.css → css/components/_panel.css} +19 -19
  19. package/{src/components/progress/Progress.module.css → css/components/_progress.css} +7 -10
  20. package/css/components/_sonner.css +431 -0
  21. package/{src/components/tabpanel/TabPanel.module.css → css/components/_tabPanel.css} +125 -85
  22. package/css/components/_titlebar.css +48 -0
  23. package/css/components/index.css +47 -0
  24. package/css/core/_aside.css +176 -0
  25. package/css/core/_content.css +31 -0
  26. package/css/core/_errorboundary.css +55 -0
  27. package/css/core/_responsive.css +45 -0
  28. package/css/core/_typography.css +69 -0
  29. package/css/core/_viewport.css +33 -0
  30. package/{src/hooks/useClientService.tsx → css/core/index.css} +7 -7
  31. package/css/reset/_gradients.css +36 -33
  32. package/css/reset/_reset.css +206 -300
  33. package/css/reset/_text.css +31 -61
  34. package/css/reset/_theme.css +467 -81
  35. package/css/reset/index.css +23 -21
  36. package/css/styles.css +30 -23
  37. package/css/theme/_colors.css +445 -0
  38. package/css/theme/_utilities.css +528 -0
  39. package/css/theme/_variants.css +128 -0
  40. package/css/theme/index.css +55 -0
  41. package/dist/cjs/components/actionLabel/ActionLabel.js +25 -12
  42. package/dist/cjs/{overlays → components}/alert/Alert.js +76 -53
  43. package/dist/cjs/components/animations/Indicator.js +72 -0
  44. package/dist/cjs/components/animations/Loader.js +77 -0
  45. package/dist/cjs/components/animations/LoadingBars.js +37 -0
  46. package/dist/cjs/components/animations/LoadingLine.js +59 -0
  47. package/dist/cjs/components/animations/LoadingSpinner.js +37 -0
  48. package/dist/cjs/components/animations/Skeleton.js +88 -0
  49. package/dist/cjs/components/avatar/Avatar.js +41 -20
  50. package/dist/cjs/components/avatar/AvatarGroup.js +37 -16
  51. package/dist/cjs/components/badge/Badge.js +90 -68
  52. package/dist/cjs/components/button/Button.js +198 -136
  53. package/dist/cjs/components/button/ButtonGroup.js +86 -21
  54. package/dist/cjs/components/button/ConfirmButton.js +55 -41
  55. package/dist/cjs/components/button/ToggleButtonGroup.js +84 -32
  56. package/dist/cjs/components/callout/Callout.js +56 -25
  57. package/dist/cjs/components/card/Card.js +90 -42
  58. package/dist/cjs/components/card/CardCover.js +38 -27
  59. package/dist/cjs/components/card/FlipContent.js +47 -0
  60. package/dist/cjs/components/chip/Chip.js +80 -37
  61. package/dist/cjs/components/collapsable/Collapsable.js +62 -31
  62. package/dist/cjs/components/divider/Divider.js +58 -24
  63. package/dist/cjs/components/dropdown/Dropdown.js +92 -45
  64. package/dist/cjs/components/dropdown/DropdownTool.js +6 -7
  65. package/dist/cjs/components/effect/GlassEffect.js +259 -0
  66. package/dist/cjs/components/effect/MatteEffect.js +127 -0
  67. package/dist/cjs/components/effect/StyleEffect.js +43 -0
  68. package/dist/cjs/components/empty/EmptyContent.js +37 -49
  69. package/dist/cjs/components/flyout/Flyout.js +170 -0
  70. package/dist/cjs/components/hotkey/HotKey.js +42 -0
  71. package/dist/cjs/components/icon/Icon.js +81 -80
  72. package/dist/cjs/components/media/Media.js +154 -77
  73. package/dist/cjs/components/menu/ContextMenu.js +45 -20
  74. package/dist/cjs/components/menu/Menu.js +98 -38
  75. package/dist/cjs/components/menu/MenuItem.js +102 -74
  76. package/dist/cjs/components/meter/Meter.js +35 -12
  77. package/dist/cjs/components/modal/Modal.js +152 -0
  78. package/dist/cjs/components/navigator/Navigator.js +81 -36
  79. package/dist/cjs/components/panel/Panel.js +115 -60
  80. package/dist/cjs/components/panel/PanelGroup.js +42 -16
  81. package/dist/cjs/components/panel/PanelStack.js +47 -16
  82. package/dist/cjs/components/pillbox/Pillbox.js +118 -0
  83. package/dist/cjs/components/progress/ProgressBar.js +30 -14
  84. package/dist/cjs/components/progress/ProgressCircle.js +27 -11
  85. package/dist/cjs/components/tabpanel/Tab.js +53 -37
  86. package/dist/cjs/components/tabpanel/TabPanel.js +74 -28
  87. package/dist/cjs/components/titlebar/Titlebar.js +52 -0
  88. package/dist/cjs/components/tooltip/Tooltip.js +180 -0
  89. package/dist/cjs/context/Global.js +159 -80
  90. package/dist/cjs/context/ModalManager.js +60 -0
  91. package/dist/cjs/context/context.js +43 -0
  92. package/dist/cjs/core/areaToggle/AreaToggle.js +41 -0
  93. package/dist/cjs/core/aside/Aside.js +178 -83
  94. package/dist/cjs/core/boundary/ErrorBoundary.js +37 -34
  95. package/dist/cjs/core/boundary/ErrorIcon.js +32 -19
  96. package/dist/cjs/core/content/Content.js +26 -37
  97. package/dist/cjs/core/headfoot/HeadFoot.js +133 -35
  98. package/dist/cjs/core/layout/Layout.js +28 -0
  99. package/dist/cjs/core/responsive/Responsive.js +62 -26
  100. package/dist/cjs/core/theme/ThemeProvider.js +35 -41
  101. package/dist/cjs/core/viewport/Viewport.js +26 -22
  102. package/dist/cjs/hooks/useClientService.js +39 -18
  103. package/dist/cjs/hooks/useContextMenu.js +103 -0
  104. package/dist/cjs/hooks/useControlledValue.js +13 -7
  105. package/dist/cjs/hooks/useDebounce.js +37 -21
  106. package/dist/cjs/hooks/useEffectDebugger.js +79 -60
  107. package/dist/cjs/hooks/useIsDark.js +34 -26
  108. package/dist/cjs/hooks/useIsRtl.js +13 -3
  109. package/dist/cjs/hooks/useNavigator.js +12 -9
  110. package/dist/cjs/hooks/useNotificationService.js +199 -0
  111. package/dist/cjs/hooks/useOverlayService.js +82 -41
  112. package/dist/cjs/hooks/usePropState.js +41 -0
  113. package/dist/cjs/hooks/usePropToggle.js +32 -26
  114. package/dist/cjs/hooks/useResize.js +47 -38
  115. package/dist/cjs/hooks/useResizeObserver.js +26 -7
  116. package/dist/cjs/hooks/useStorage.js +29 -16
  117. package/dist/cjs/i18n/index.js +25 -23
  118. package/dist/cjs/index.js +142 -94
  119. package/dist/cjs/typography/Abbr.js +43 -20
  120. package/dist/cjs/typography/Anchor.js +39 -0
  121. package/dist/cjs/typography/Copy.js +28 -28
  122. package/dist/cjs/typography/Kbd.js +43 -0
  123. package/dist/cjs/typography/Mark.js +34 -17
  124. package/dist/cjs/typography/Text.js +36 -54
  125. package/dist/cjs/typography/Title.js +17 -40
  126. package/dist/cjs/utils/calculateDimensions.js +38 -23
  127. package/dist/cjs/utils/cloneElement.js +64 -0
  128. package/dist/cjs/{core/section/Section.js → utils/getBadgeProps.js} +25 -21
  129. package/dist/cjs/utils/getColor.js +42 -36
  130. package/dist/cjs/utils/getIconProps.js +63 -0
  131. package/dist/cjs/utils/getTooltipProps.js +66 -0
  132. package/dist/cjs/utils/nodeCheck.js +4 -4
  133. package/dist/esm/components/actionLabel/ActionLabel.js +25 -12
  134. package/dist/esm/{overlays → components}/alert/Alert.js +73 -50
  135. package/dist/esm/components/animations/Indicator.js +72 -0
  136. package/dist/esm/components/animations/Loader.js +77 -0
  137. package/dist/esm/components/animations/LoadingBars.js +37 -0
  138. package/dist/esm/components/animations/LoadingLine.js +59 -0
  139. package/dist/esm/components/animations/LoadingSpinner.js +37 -0
  140. package/dist/esm/components/animations/Skeleton.js +88 -0
  141. package/dist/esm/components/avatar/Avatar.js +42 -21
  142. package/dist/esm/components/avatar/AvatarGroup.js +37 -16
  143. package/dist/esm/components/badge/Badge.js +93 -70
  144. package/dist/esm/components/button/Button.js +199 -137
  145. package/dist/esm/components/button/ButtonGroup.js +87 -22
  146. package/dist/esm/components/button/ConfirmButton.js +58 -44
  147. package/dist/esm/components/button/ToggleButtonGroup.js +86 -34
  148. package/dist/esm/components/callout/Callout.js +56 -25
  149. package/dist/esm/components/card/Card.js +92 -44
  150. package/dist/esm/components/card/CardCover.js +38 -27
  151. package/dist/esm/components/card/FlipContent.js +47 -0
  152. package/dist/esm/components/chip/Chip.js +81 -38
  153. package/dist/esm/components/collapsable/Collapsable.js +63 -32
  154. package/dist/esm/components/divider/Divider.js +59 -25
  155. package/dist/esm/components/dropdown/Dropdown.js +95 -48
  156. package/dist/esm/components/dropdown/DropdownTool.js +6 -7
  157. package/dist/esm/components/effect/GlassEffect.js +259 -0
  158. package/dist/esm/components/effect/MatteEffect.js +127 -0
  159. package/dist/esm/components/effect/StyleEffect.js +43 -0
  160. package/dist/esm/components/empty/EmptyContent.js +38 -50
  161. package/dist/esm/components/flyout/Flyout.js +170 -0
  162. package/dist/esm/components/hotkey/HotKey.js +42 -0
  163. package/dist/esm/components/icon/Icon.js +83 -82
  164. package/dist/esm/components/media/Media.js +156 -79
  165. package/dist/esm/components/menu/ContextMenu.js +46 -21
  166. package/dist/esm/components/menu/Menu.js +101 -41
  167. package/dist/esm/components/menu/MenuItem.js +98 -70
  168. package/dist/esm/components/meter/Meter.js +36 -13
  169. package/dist/esm/components/modal/Modal.js +152 -0
  170. package/dist/esm/components/navigator/Navigator.js +81 -36
  171. package/dist/esm/components/panel/Panel.js +117 -62
  172. package/dist/esm/components/panel/PanelGroup.js +43 -17
  173. package/dist/esm/components/panel/PanelStack.js +48 -17
  174. package/dist/esm/components/pillbox/Pillbox.js +118 -0
  175. package/dist/esm/components/progress/ProgressBar.js +31 -15
  176. package/dist/esm/components/progress/ProgressCircle.js +28 -12
  177. package/dist/esm/components/tabpanel/Tab.js +54 -38
  178. package/dist/esm/components/tabpanel/TabPanel.js +75 -29
  179. package/dist/esm/components/titlebar/Titlebar.js +52 -0
  180. package/dist/esm/components/tooltip/Tooltip.js +180 -0
  181. package/dist/esm/context/Global.js +161 -78
  182. package/dist/esm/context/ModalManager.js +60 -0
  183. package/dist/esm/context/context.js +40 -0
  184. package/dist/esm/core/areaToggle/AreaToggle.js +41 -0
  185. package/dist/esm/core/aside/Aside.js +179 -84
  186. package/dist/esm/core/boundary/ErrorBoundary.js +38 -35
  187. package/dist/esm/core/boundary/ErrorIcon.js +32 -19
  188. package/dist/esm/core/content/Content.js +26 -37
  189. package/dist/esm/core/headfoot/HeadFoot.js +134 -36
  190. package/dist/esm/core/layout/Layout.js +28 -0
  191. package/dist/esm/core/responsive/Responsive.js +62 -26
  192. package/dist/esm/core/theme/ThemeProvider.js +36 -42
  193. package/dist/esm/core/viewport/Viewport.js +26 -22
  194. package/dist/esm/hooks/useClientService.js +39 -18
  195. package/dist/esm/hooks/useContextMenu.js +103 -0
  196. package/dist/esm/hooks/useControlledValue.js +14 -8
  197. package/dist/esm/hooks/useDebounce.js +37 -21
  198. package/dist/esm/hooks/useEffectDebugger.js +81 -62
  199. package/dist/esm/hooks/useIsDark.js +34 -26
  200. package/dist/esm/hooks/useIsRtl.js +13 -3
  201. package/dist/esm/hooks/useNavigator.js +13 -10
  202. package/dist/esm/hooks/useNotificationService.js +199 -0
  203. package/dist/esm/hooks/useOverlayService.js +83 -42
  204. package/dist/esm/hooks/usePropState.js +40 -0
  205. package/dist/esm/hooks/usePropToggle.js +33 -27
  206. package/dist/esm/hooks/useResize.js +48 -39
  207. package/dist/esm/hooks/useResizeObserver.js +27 -8
  208. package/dist/esm/hooks/useStorage.js +30 -17
  209. package/dist/esm/i18n/index.js +23 -21
  210. package/dist/esm/index.js +87 -44
  211. package/dist/esm/typography/Abbr.js +45 -22
  212. package/dist/esm/typography/Anchor.js +39 -0
  213. package/dist/esm/typography/Copy.js +28 -28
  214. package/dist/esm/typography/Kbd.js +43 -0
  215. package/dist/esm/typography/Mark.js +35 -18
  216. package/dist/esm/typography/Text.js +39 -57
  217. package/dist/esm/typography/Title.js +17 -40
  218. package/dist/esm/utils/calculateDimensions.js +38 -23
  219. package/dist/esm/utils/cloneElement.js +64 -0
  220. package/dist/esm/{core/section/Section.js → utils/getBadgeProps.js} +25 -21
  221. package/dist/esm/utils/getColor.js +43 -34
  222. package/dist/esm/utils/getIconProps.js +63 -0
  223. package/dist/esm/utils/getTooltipProps.js +66 -0
  224. package/dist/esm/utils/nodeCheck.js +4 -4
  225. package/dist/types/components/actionLabel/ActionLabel.d.ts +20 -7
  226. package/dist/types/components/alert/Alert.d.ts +74 -0
  227. package/dist/types/components/animations/Indicator.d.ts +57 -0
  228. package/dist/types/components/animations/Loader.d.ts +65 -0
  229. package/dist/types/components/animations/LoadingBars.d.ts +61 -0
  230. package/dist/types/components/animations/LoadingLine.d.ts +43 -0
  231. package/dist/types/components/animations/LoadingSpinner.d.ts +61 -0
  232. package/dist/types/components/animations/Skeleton.d.ts +61 -0
  233. package/dist/types/components/avatar/Avatar.d.ts +70 -19
  234. package/dist/types/components/avatar/AvatarGroup.d.ts +51 -14
  235. package/dist/types/components/badge/Badge.d.ts +64 -14
  236. package/dist/types/components/button/Button.d.ts +72 -55
  237. package/dist/types/components/button/ButtonGroup.d.ts +86 -24
  238. package/dist/types/components/button/ConfirmButton.d.ts +21 -7
  239. package/dist/types/components/button/ToggleButtonGroup.d.ts +88 -44
  240. package/dist/types/components/callout/Callout.d.ts +58 -7
  241. package/dist/types/components/card/Card.d.ts +66 -25
  242. package/dist/types/components/card/CardCover.d.ts +52 -7
  243. package/dist/types/components/card/FlipContent.d.ts +50 -0
  244. package/dist/types/components/chip/Chip.d.ts +72 -20
  245. package/dist/types/components/collapsable/Collapsable.d.ts +55 -15
  246. package/dist/types/components/divider/Divider.d.ts +25 -8
  247. package/dist/types/components/dropdown/Dropdown.d.ts +42 -9
  248. package/dist/types/components/dropdown/DropdownTool.d.ts +22 -4
  249. package/dist/types/components/effect/GlassEffect.d.ts +5 -0
  250. package/dist/types/components/effect/MatteEffect.d.ts +40 -0
  251. package/dist/types/components/effect/StyleEffect.d.ts +27 -0
  252. package/dist/types/components/empty/EmptyContent.d.ts +53 -9
  253. package/dist/types/components/flyout/Flyout.d.ts +60 -0
  254. package/dist/types/components/hotkey/HotKey.d.ts +41 -0
  255. package/dist/types/components/icon/Icon.d.ts +74 -24
  256. package/dist/types/components/media/Media.d.ts +72 -4
  257. package/dist/types/components/menu/ContextMenu.d.ts +22 -5
  258. package/dist/types/components/menu/Menu.d.ts +26 -2
  259. package/dist/types/components/menu/MenuItem.d.ts +19 -4
  260. package/dist/types/components/menu/types.d.ts +23 -14
  261. package/dist/types/components/meter/Meter.d.ts +23 -3
  262. package/dist/types/components/modal/Modal.d.ts +52 -0
  263. package/dist/types/components/navigator/Navigator.d.ts +30 -4
  264. package/dist/types/components/panel/Panel.d.ts +43 -23
  265. package/dist/types/components/panel/PanelGroup.d.ts +22 -3
  266. package/dist/types/components/panel/PanelStack.d.ts +28 -2
  267. package/dist/types/components/pillbox/Pillbox.d.ts +95 -0
  268. package/dist/types/components/progress/ProgressBar.d.ts +19 -4
  269. package/dist/types/components/progress/ProgressCircle.d.ts +18 -4
  270. package/dist/types/components/tabpanel/Tab.d.ts +42 -10
  271. package/dist/types/components/tabpanel/TabPanel.d.ts +47 -7
  272. package/dist/types/components/titlebar/Titlebar.d.ts +54 -0
  273. package/dist/types/components/tooltip/Tooltip.d.ts +76 -0
  274. package/dist/types/context/Global.d.ts +39 -69
  275. package/dist/types/context/ModalManager.d.ts +30 -0
  276. package/dist/types/context/context.d.ts +107 -0
  277. package/dist/types/core/areaToggle/AreaToggle.d.ts +33 -0
  278. package/dist/types/core/aside/Aside.d.ts +75 -20
  279. package/dist/types/core/boundary/ErrorBoundary.d.ts +43 -4
  280. package/dist/types/core/boundary/ErrorIcon.d.ts +38 -1
  281. package/dist/types/core/content/Content.d.ts +38 -6
  282. package/dist/types/core/headfoot/HeadFoot.d.ts +48 -14
  283. package/dist/types/core/layout/Layout.d.ts +38 -0
  284. package/dist/types/core/responsive/Responsive.d.ts +45 -15
  285. package/dist/types/core/theme/ThemeProvider.d.ts +35 -11
  286. package/dist/types/core/viewport/Viewport.d.ts +27 -3
  287. package/dist/types/hooks/useClientService.d.ts +43 -1
  288. package/dist/types/hooks/useContextMenu.d.ts +10 -0
  289. package/dist/types/hooks/useControlledValue.d.ts +28 -4
  290. package/dist/types/hooks/useDebounce.d.ts +38 -2
  291. package/dist/types/hooks/useEffectDebugger.d.ts +73 -4
  292. package/dist/types/hooks/useIsDark.d.ts +6 -0
  293. package/dist/types/hooks/useIsRtl.d.ts +35 -1
  294. package/dist/types/hooks/useNavigator.d.ts +37 -2
  295. package/dist/types/hooks/useNotificationService.d.ts +60 -0
  296. package/dist/types/hooks/useOverlayService.d.ts +28 -8
  297. package/dist/types/hooks/usePropState.d.ts +26 -0
  298. package/dist/types/hooks/usePropToggle.d.ts +41 -7
  299. package/dist/types/hooks/useResize.d.ts +46 -4
  300. package/dist/types/hooks/useResizeObserver.d.ts +45 -3
  301. package/dist/types/hooks/useStorage.d.ts +32 -2
  302. package/dist/types/i18n/index.d.ts +27 -3
  303. package/dist/types/index.d.ts +106 -18
  304. package/dist/types/types/colors.d.ts +29 -0
  305. package/dist/types/types/index.d.ts +216 -76
  306. package/dist/types/typography/Abbr.d.ts +51 -6
  307. package/dist/types/typography/Anchor.d.ts +41 -0
  308. package/dist/types/typography/Copy.d.ts +36 -2
  309. package/dist/types/typography/Kbd.d.ts +40 -0
  310. package/dist/types/typography/Mark.d.ts +44 -7
  311. package/dist/types/typography/Text.d.ts +40 -24
  312. package/dist/types/typography/Title.d.ts +37 -26
  313. package/dist/types/typography/types.d.ts +32 -0
  314. package/dist/types/utils/calculateDimensions.d.ts +50 -6
  315. package/dist/types/utils/cloneElement.d.ts +41 -0
  316. package/dist/types/utils/getBadgeProps.d.ts +16 -0
  317. package/dist/types/utils/getColor.d.ts +43 -4
  318. package/dist/types/utils/getIconProps.d.ts +45 -0
  319. package/dist/types/utils/getTooltipProps.d.ts +47 -0
  320. package/dist/types/utils/index.d.ts +28 -0
  321. package/dist/types/utils/nodeCheck.d.ts +1 -2
  322. package/package.json +29 -21
  323. package/src/components/actionLabel/ActionLabel.tsx +28 -39
  324. package/src/components/alert/Alert.tsx +261 -0
  325. package/src/components/animations/Indicator.tsx +76 -0
  326. package/src/components/animations/Loader.tsx +89 -0
  327. package/src/components/animations/LoadingBars.tsx +70 -0
  328. package/src/components/animations/LoadingLine.tsx +51 -0
  329. package/src/components/animations/LoadingSpinner.tsx +70 -0
  330. package/src/components/animations/Skeleton.tsx +100 -0
  331. package/src/components/avatar/Avatar.tsx +89 -70
  332. package/src/components/avatar/AvatarGroup.tsx +65 -74
  333. package/src/components/badge/Badge.tsx +141 -108
  334. package/src/components/button/Button.tsx +223 -238
  335. package/src/components/button/ButtonGroup.tsx +117 -77
  336. package/src/components/button/ConfirmButton.tsx +60 -90
  337. package/src/components/button/ToggleButtonGroup.tsx +134 -120
  338. package/src/components/callout/Callout.tsx +81 -59
  339. package/src/components/card/Card.tsx +131 -113
  340. package/src/components/card/CardCover.tsx +61 -61
  341. package/src/components/card/FlipContent.tsx +78 -0
  342. package/src/components/chip/Chip.tsx +139 -99
  343. package/src/components/collapsable/Collapsable.tsx +79 -77
  344. package/src/components/divider/Divider.tsx +74 -53
  345. package/src/components/dropdown/Dropdown.tsx +109 -106
  346. package/src/components/dropdown/DropdownTool.tsx +29 -12
  347. package/src/components/effect/GlassEffect.tsx +221 -0
  348. package/src/components/effect/MatteEffect.tsx +99 -0
  349. package/src/components/effect/StyleEffect.tsx +36 -0
  350. package/src/components/empty/EmptyContent.tsx +60 -99
  351. package/src/components/flyout/Flyout.tsx +257 -0
  352. package/src/components/hotkey/HotKey.tsx +57 -0
  353. package/src/components/icon/Icon.tsx +131 -130
  354. package/src/components/media/Media.tsx +184 -154
  355. package/src/components/menu/ContextMenu.tsx +56 -39
  356. package/src/components/menu/Menu.tsx +121 -84
  357. package/src/components/menu/MenuItem.tsx +87 -69
  358. package/src/components/menu/types.ts +23 -28
  359. package/src/components/meter/Meter.tsx +34 -17
  360. package/src/components/modal/Modal.tsx +226 -0
  361. package/src/components/navigator/Navigator.tsx +93 -38
  362. package/src/components/panel/Panel.tsx +123 -131
  363. package/src/components/panel/PanelGroup.tsx +49 -43
  364. package/src/components/panel/PanelStack.tsx +63 -62
  365. package/src/components/pillbox/Pillbox.tsx +208 -0
  366. package/src/components/progress/ProgressBar.tsx +33 -33
  367. package/src/components/progress/ProgressCircle.tsx +29 -37
  368. package/src/components/tabpanel/Tab.tsx +84 -73
  369. package/src/components/tabpanel/TabPanel.tsx +102 -51
  370. package/src/components/titlebar/Titlebar.tsx +115 -0
  371. package/src/components/tooltip/Tooltip.tsx +255 -0
  372. package/src/context/Global.tsx +148 -148
  373. package/src/context/ModalManager.tsx +68 -0
  374. package/src/context/context.ts +111 -0
  375. package/src/core/areaToggle/AreaToggle.tsx +45 -0
  376. package/src/core/aside/Aside.tsx +200 -155
  377. package/src/core/boundary/ErrorBoundary.tsx +50 -68
  378. package/src/core/boundary/ErrorIcon.tsx +34 -32
  379. package/src/core/content/Content.tsx +41 -50
  380. package/src/core/headfoot/HeadFoot.tsx +162 -81
  381. package/src/core/layout/Layout.tsx +54 -0
  382. package/src/core/responsive/Responsive.tsx +91 -98
  383. package/src/core/theme/ThemeProvider.tsx +45 -56
  384. package/src/core/viewport/Viewport.tsx +25 -27
  385. package/src/hooks/useClientService.ts +47 -0
  386. package/src/hooks/useContextMenu.tsx +131 -0
  387. package/src/hooks/useControlledValue.ts +47 -0
  388. package/src/hooks/useDebounce.ts +41 -24
  389. package/src/hooks/useEffectDebugger.ts +105 -94
  390. package/src/hooks/useIsDark.ts +10 -24
  391. package/src/hooks/useIsRtl.ts +32 -20
  392. package/src/hooks/useNavigator.tsx +41 -26
  393. package/src/hooks/useNotificationService.tsx +239 -0
  394. package/src/hooks/useOverlayService.tsx +67 -20
  395. package/src/hooks/usePropState.ts +52 -0
  396. package/src/hooks/usePropToggle.ts +54 -47
  397. package/src/hooks/useResize.ts +69 -45
  398. package/src/hooks/useResizeObserver.ts +59 -34
  399. package/src/hooks/useStorage.ts +40 -48
  400. package/src/i18n/index.ts +24 -25
  401. package/src/index.ts +115 -44
  402. package/src/types/colors.ts +49 -0
  403. package/src/types/global.d.ts +40 -17
  404. package/src/types/index.ts +243 -155
  405. package/src/typography/Abbr.tsx +62 -59
  406. package/src/typography/Anchor.tsx +63 -0
  407. package/src/typography/Copy.tsx +39 -29
  408. package/src/typography/Kbd.tsx +50 -0
  409. package/src/typography/Mark.tsx +56 -51
  410. package/src/typography/Text.tsx +57 -128
  411. package/src/typography/Title.tsx +36 -108
  412. package/src/typography/types.ts +27 -17
  413. package/src/utils/calculateDimensions.ts +50 -40
  414. package/src/utils/cloneElement.ts +61 -0
  415. package/src/{core/content/Content.module.css → utils/getBadgeProps.ts} +20 -15
  416. package/src/utils/getColor.ts +42 -36
  417. package/src/utils/getIconProps.ts +58 -0
  418. package/src/utils/getTooltipProps.ts +59 -0
  419. package/src/utils/index.ts +23 -17
  420. package/src/utils/nodeCheck.ts +4 -8
  421. package/css/flags.rect.css +0 -1607
  422. package/css/flags.wavy.css +0 -1606
  423. package/css/index.js +0 -250
  424. package/css/tailwind/colors.ts +0 -158
  425. package/dist/cjs/components/actionLabel/ActionLabel.module.css +0 -1
  426. package/dist/cjs/components/animations/Animations.js +0 -142
  427. package/dist/cjs/components/animations/Animations.module.css +0 -1
  428. package/dist/cjs/components/avatar/Avatar.module.css +0 -1
  429. package/dist/cjs/components/badge/Badge.module.css +0 -1
  430. package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +0 -71
  431. package/dist/cjs/components/breadcrumbs/Breadcrumbs.module.css +0 -1
  432. package/dist/cjs/components/button/Button.module.css +0 -1
  433. package/dist/cjs/components/card/Card.module.css +0 -1
  434. package/dist/cjs/components/chip/Chip.module.css +0 -1
  435. package/dist/cjs/components/collapsable/Collapsable.module.css +0 -1
  436. package/dist/cjs/components/dropdown/Dropdown.module.css +0 -1
  437. package/dist/cjs/components/icon/Icon.module.css +0 -1
  438. package/dist/cjs/components/media/Media.module.css +0 -1
  439. package/dist/cjs/components/menu/Menu.module.css +0 -1
  440. package/dist/cjs/components/meter/Meter.module.css +0 -1
  441. package/dist/cjs/components/panel/Panel.module.css +0 -1
  442. package/dist/cjs/components/progress/Progress.module.css +0 -1
  443. package/dist/cjs/components/tabpanel/TabPanel.module.css +0 -1
  444. package/dist/cjs/context/NotificationCenter.js +0 -254
  445. package/dist/cjs/core/aside/Aside.module.css +0 -1
  446. package/dist/cjs/core/boundary/ErrorBoundary.module.css +0 -1
  447. package/dist/cjs/core/content/Content.module.css +0 -1
  448. package/dist/cjs/core/headfoot/HeadFoot.module.css +0 -1
  449. package/dist/cjs/core/page/Page.js +0 -66
  450. package/dist/cjs/core/page/Page.module.css +0 -1
  451. package/dist/cjs/core/responsive/Responsive.module.css +0 -1
  452. package/dist/cjs/core/section/Section.module.css +0 -1
  453. package/dist/cjs/core/theme/Theme.module.css +0 -1
  454. package/dist/cjs/core/viewport/Viewport.module.css +0 -1
  455. package/dist/cjs/hotkeys/HotKey.js +0 -47
  456. package/dist/cjs/hotkeys/HotKeyLabel.js +0 -52
  457. package/dist/cjs/hotkeys/HotKeyWrapper.js +0 -98
  458. package/dist/cjs/hotkeys/commons.js +0 -56
  459. package/dist/cjs/overlays/alert/Alert.module.css +0 -1
  460. package/dist/cjs/overlays/flyout/Flyout.js +0 -152
  461. package/dist/cjs/overlays/flyout/Flyout.module.css +0 -1
  462. package/dist/cjs/overlays/message/Message.js +0 -84
  463. package/dist/cjs/overlays/message/Message.module.css +0 -1
  464. package/dist/cjs/overlays/modal/Modal.js +0 -132
  465. package/dist/cjs/overlays/modal/Modal.module.css +0 -1
  466. package/dist/cjs/overlays/toast/Toast.js +0 -166
  467. package/dist/cjs/overlays/toast/Toast.module.css +0 -1
  468. package/dist/cjs/overlays/tooltip/Tooltip.js +0 -133
  469. package/dist/cjs/overlays/tooltip/Tooltip.module.css +0 -1
  470. package/dist/cjs/types/icons.js +0 -200
  471. package/dist/cjs/typography/Link.js +0 -55
  472. package/dist/cjs/typography/Typography.module.css +0 -1
  473. package/dist/cjs/typography/types.js +0 -42
  474. package/dist/esm/components/actionLabel/ActionLabel.module.css +0 -1
  475. package/dist/esm/components/animations/Animations.js +0 -138
  476. package/dist/esm/components/animations/Animations.module.css +0 -1
  477. package/dist/esm/components/avatar/Avatar.module.css +0 -1
  478. package/dist/esm/components/badge/Badge.module.css +0 -1
  479. package/dist/esm/components/breadcrumbs/Breadcrumbs.js +0 -71
  480. package/dist/esm/components/breadcrumbs/Breadcrumbs.module.css +0 -1
  481. package/dist/esm/components/button/Button.module.css +0 -1
  482. package/dist/esm/components/card/Card.module.css +0 -1
  483. package/dist/esm/components/chip/Chip.module.css +0 -1
  484. package/dist/esm/components/collapsable/Collapsable.module.css +0 -1
  485. package/dist/esm/components/dropdown/Dropdown.module.css +0 -1
  486. package/dist/esm/components/icon/Icon.module.css +0 -1
  487. package/dist/esm/components/media/Media.module.css +0 -1
  488. package/dist/esm/components/menu/Menu.module.css +0 -1
  489. package/dist/esm/components/meter/Meter.module.css +0 -1
  490. package/dist/esm/components/panel/Panel.module.css +0 -1
  491. package/dist/esm/components/progress/Progress.module.css +0 -1
  492. package/dist/esm/components/tabpanel/TabPanel.module.css +0 -1
  493. package/dist/esm/context/NotificationCenter.js +0 -254
  494. package/dist/esm/core/aside/Aside.module.css +0 -1
  495. package/dist/esm/core/boundary/ErrorBoundary.module.css +0 -1
  496. package/dist/esm/core/content/Content.module.css +0 -1
  497. package/dist/esm/core/headfoot/HeadFoot.module.css +0 -1
  498. package/dist/esm/core/page/Page.js +0 -66
  499. package/dist/esm/core/page/Page.module.css +0 -1
  500. package/dist/esm/core/responsive/Responsive.module.css +0 -1
  501. package/dist/esm/core/section/Section.module.css +0 -1
  502. package/dist/esm/core/theme/Theme.module.css +0 -1
  503. package/dist/esm/core/viewport/Viewport.module.css +0 -1
  504. package/dist/esm/hotkeys/HotKey.js +0 -47
  505. package/dist/esm/hotkeys/HotKeyLabel.js +0 -52
  506. package/dist/esm/hotkeys/HotKeyWrapper.js +0 -96
  507. package/dist/esm/hotkeys/commons.js +0 -56
  508. package/dist/esm/overlays/alert/Alert.module.css +0 -1
  509. package/dist/esm/overlays/flyout/Flyout.js +0 -152
  510. package/dist/esm/overlays/flyout/Flyout.module.css +0 -1
  511. package/dist/esm/overlays/message/Message.js +0 -84
  512. package/dist/esm/overlays/message/Message.module.css +0 -1
  513. package/dist/esm/overlays/modal/Modal.js +0 -132
  514. package/dist/esm/overlays/modal/Modal.module.css +0 -1
  515. package/dist/esm/overlays/toast/Toast.js +0 -166
  516. package/dist/esm/overlays/toast/Toast.module.css +0 -1
  517. package/dist/esm/overlays/tooltip/Tooltip.js +0 -132
  518. package/dist/esm/overlays/tooltip/Tooltip.module.css +0 -1
  519. package/dist/esm/types/icons.js +0 -202
  520. package/dist/esm/typography/Link.js +0 -55
  521. package/dist/esm/typography/Typography.module.css +0 -1
  522. package/dist/esm/typography/types.js +0 -41
  523. package/dist/types/components/animations/Animations.d.ts +0 -23
  524. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +0 -17
  525. package/dist/types/components/index.d.ts +0 -33
  526. package/dist/types/context/NotificationCenter.d.ts +0 -11
  527. package/dist/types/core/index.d.ts +0 -9
  528. package/dist/types/core/page/Page.d.ts +0 -23
  529. package/dist/types/core/section/Section.d.ts +0 -7
  530. package/dist/types/hotkeys/HotKey.d.ts +0 -2
  531. package/dist/types/hotkeys/HotKeyLabel.d.ts +0 -2
  532. package/dist/types/hotkeys/HotKeyWrapper.d.ts +0 -11
  533. package/dist/types/hotkeys/commons.d.ts +0 -28
  534. package/dist/types/overlays/alert/Alert.d.ts +0 -41
  535. package/dist/types/overlays/flyout/Flyout.d.ts +0 -57
  536. package/dist/types/overlays/index.d.ts +0 -6
  537. package/dist/types/overlays/message/Message.d.ts +0 -21
  538. package/dist/types/overlays/modal/Modal.d.ts +0 -53
  539. package/dist/types/overlays/toast/Toast.d.ts +0 -33
  540. package/dist/types/overlays/tooltip/Tooltip.d.ts +0 -18
  541. package/dist/types/types/icons.d.ts +0 -197
  542. package/dist/types/typography/Link.d.ts +0 -25
  543. package/dist/types/typography/index.d.ts +0 -6
  544. package/src/components/animations/Animations.module.css +0 -253
  545. package/src/components/animations/Animations.tsx +0 -196
  546. package/src/components/avatar/Avatar.module.css +0 -90
  547. package/src/components/badge/Badge.module.css +0 -165
  548. package/src/components/breadcrumbs/Breadcrumbs.module.css +0 -189
  549. package/src/components/breadcrumbs/Breadcrumbs.tsx +0 -109
  550. package/src/components/button/Button.module.css +0 -375
  551. package/src/components/card/Card.module.css +0 -152
  552. package/src/components/chip/Chip.module.css +0 -118
  553. package/src/components/collapsable/Collapsable.module.css +0 -30
  554. package/src/components/icon/Icon.module.css +0 -71
  555. package/src/components/index.ts +0 -62
  556. package/src/components/media/Media.module.css +0 -112
  557. package/src/context/NotificationCenter.tsx +0 -223
  558. package/src/core/aside/Aside.module.css +0 -231
  559. package/src/core/boundary/ErrorBoundary.module.css +0 -65
  560. package/src/core/headfoot/HeadFoot.module.css +0 -38
  561. package/src/core/index.ts +0 -32
  562. package/src/core/page/Page.module.css +0 -46
  563. package/src/core/page/Page.tsx +0 -101
  564. package/src/core/responsive/Responsive.module.css +0 -85
  565. package/src/core/section/Section.module.css +0 -28
  566. package/src/core/section/Section.tsx +0 -54
  567. package/src/core/theme/Theme.module.css +0 -30
  568. package/src/core/viewport/Viewport.module.css +0 -32
  569. package/src/hooks/useControlledValue.tsx +0 -43
  570. package/src/hotkeys/HotKey.tsx +0 -39
  571. package/src/hotkeys/HotKeyLabel.tsx +0 -61
  572. package/src/hotkeys/HotKeyWrapper.tsx +0 -137
  573. package/src/hotkeys/commons.ts +0 -74
  574. package/src/overlays/alert/Alert.tsx +0 -252
  575. package/src/overlays/flyout/Flyout.tsx +0 -283
  576. package/src/overlays/index.ts +0 -29
  577. package/src/overlays/message/Message.tsx +0 -107
  578. package/src/overlays/modal/Modal.tsx +0 -244
  579. package/src/overlays/toast/Toast.module.css +0 -37
  580. package/src/overlays/toast/Toast.tsx +0 -216
  581. package/src/overlays/tooltip/Tooltip.module.css +0 -53
  582. package/src/overlays/tooltip/Tooltip.tsx +0 -200
  583. package/src/types/icons.ts +0 -426
  584. package/src/typography/Link.tsx +0 -113
  585. package/src/typography/Typography.module.css +0 -68
  586. package/src/typography/index.ts +0 -29
  587. /package/dist/cjs/i18n/{ar.json.js → ar/core.json.js} +0 -0
  588. /package/dist/cjs/i18n/{en.json.js → en/core.json.js} +0 -0
  589. /package/dist/esm/i18n/{ar.json.js → ar/core.json.js} +0 -0
  590. /package/dist/esm/i18n/{en.json.js → en/core.json.js} +0 -0
  591. /package/src/i18n/{ar.json → ar/core.json} +0 -0
  592. /package/src/i18n/{en.json → en/core.json} +0 -0
@@ -1,48 +1,99 @@
1
- /// <reference types="react" />
2
- import { type AriaProps, type ColorType, type CssProp, type RefProp, type SizeType, type TestProps } from "../../types";
3
- export interface AvatarProps extends CssProp, AriaProps, TestProps, RefProp {
1
+ /**
2
+ * React Fabric
3
+ * @version 1.0.0
4
+ * @license MIT
5
+ * @copyright 2024 Adarsh Pastakia
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ * of this software and associated documentation files (the "Software"), to deal
9
+ * in the Software without restriction, including without limitation the rights
10
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ * copies of the Software, and to permit persons to whom the Software is
12
+ * furnished to do so, subject to the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be included in all
15
+ * copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ * SOFTWARE.
24
+ */
25
+ import type { CssProp, CustomColors, HtmlEvents, RefProp, SizeType, TestProps } from "../../types";
26
+ export interface AvatarProps extends CssProp, TestProps, RefProp, HtmlEvents {
4
27
  /**
5
- * avatar name for generated fallback
28
+ * Display name used for generating the fallback avatar (required).
29
+ * When no `avatar` image is provided, this name is used to generate
30
+ * a Boring Avatar pattern or extract text initials as a placeholder.
6
31
  */
7
32
  name: string;
8
33
  /**
9
- * svg path
34
+ * SVG path string or CSS class name for a custom fallback icon.
35
+ * Used when no `avatar` image is provided and the variant is not `"text"`.
10
36
  */
11
37
  fallbackIcon?: string;
12
38
  /**
13
- * avatar image url
39
+ * URL of the avatar image to display.
40
+ * Falls back to a Boring Avatar, text initials, or custom icon when
41
+ * the image fails to load or is not provided.
14
42
  */
15
43
  avatar?: string;
16
44
  /**
17
- * avatar variant
45
+ * Fallback avatar style applied when no `avatar` image is provided.
46
+ * Defaults to `"beam"`. Options: `"text"` (text initials), `"beam"`,
47
+ * `"pixel"`, `"bauhaus"` (Boring Avatar variants).
18
48
  */
19
49
  variant?: "text" | "beam" | "pixel" | "bauhaus";
20
50
  /**
21
- * background color (CSS color / tailwind color)
51
+ * Background color applied to the avatar container.
52
+ * Accepts Tailwind palette tokens or any CSS color.
22
53
  */
23
- bg?: ColorType | string;
54
+ bg?: CustomColors;
24
55
  /**
25
- * icon color (CSS color / tailwind color)
56
+ * Text/icon color applied to the avatar.
57
+ * Accepts Tailwind palette tokens or any CSS color.
26
58
  */
27
- color?: ColorType | string;
59
+ color?: CustomColors;
28
60
  /**
29
- * icon size
61
+ * Avatar size. Accepts predefined tokens `"xs"`–`"xl"` or a custom CSS size value.
30
62
  */
31
- size?: SizeType | number | string;
63
+ size?: SizeType | number | (string & {});
32
64
  /**
33
- * viewbox for svg path (default 24)
65
+ * SVG viewBox attribute for `fallbackIcon` when it is an SVG path.
66
+ * Defaults to `"0 0 24 24"`.
34
67
  */
35
68
  viewBox?: string;
36
69
  /**
37
- * rounded icon
70
+ * When true, applies a fully rounded (circular) shape to the avatar.
71
+ * Otherwise, a standard rounded rectangle is used.
38
72
  */
39
73
  rounded?: boolean;
40
74
  /**
41
- * click handler
75
+ * When true, prevents the default click action on the avatar.
76
+ * Useful when the avatar is nested inside an `<a>` element to avoid
77
+ * navigating away from the page.
42
78
  */
43
- onClick?: React.MouseEventHandler;
79
+ preventDefault?: boolean;
44
80
  }
45
81
  /**
46
- * An avatar is a graphical representation of a user's identity.
82
+ * User avatar that renders an image with a Boring Avatar fallback.
83
+ *
84
+ * Displays a user image, falling back to a Boring Avatar (or text initials)
85
+ * when no image is provided or the image fails to load. Supports four
86
+ * Boring Avatar variants (beam, text, pixel, bauhaus) and custom SVG/icon fallbacks.
87
+ *
88
+ * @see {@link https://boringavatars.com/}
89
+ *
90
+ * @example
91
+ * ```tsx
92
+ * import { Avatar } from "@react-fabric/core";
93
+ *
94
+ * <Avatar name="Ada Lovelace" avatar="/ada.jpg" />
95
+ * <Avatar name="John Doe" variant="pixel" size="lg" />
96
+ * <Avatar name="Jane" fallbackIcon="icon-[mdi--user]" variant="text" />
97
+ * ```
47
98
  */
48
- export declare const Avatar: ({ ref, name, avatar, fallbackIcon, bg, color, size, rounded, variant, className, viewBox, onClick, ...aria }: AvatarProps) => import("react/jsx-runtime").JSX.Element;
99
+ export declare function Avatar({ ref, name, avatar, fallbackIcon, bg, color, size, rounded, variant, className, viewBox, preventDefault, onClick, ...props }: AvatarProps): import("react").JSX.Element;
@@ -1,24 +1,61 @@
1
- import { type ReactElement } from "react";
2
- import { type AriaProps, type CssProp, type RefProp, type SizeType } from "../../types";
3
- import { type AvatarProps } from "./Avatar";
4
- type AvatarChild = ReactElement<Omit<AvatarProps, "size" | "rounded">> | false | undefined;
5
- export interface AvatarGroupProps extends CssProp, RefProp, AriaProps {
6
- children: AvatarChild | AvatarChild[];
1
+ /**
2
+ * React Fabric
3
+ * @version 1.0.0
4
+ * @license MIT
5
+ * @copyright 2024 Adarsh Pastakia
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ * of this software and associated documentation files (the "Software"), to deal
9
+ * in the Software without restriction, including without limitation the rights
10
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ * copies of the Software, and to permit persons to whom the Software is
12
+ * furnished to do so, subject to the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be included in all
15
+ * copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ * SOFTWARE.
24
+ */
25
+ import type { ChildrenProp, CssProp, RefProp, SizeType } from "../../types";
26
+ import type { AvatarProps } from "./Avatar";
27
+ export interface AvatarGroupProps extends CssProp, RefProp<HTMLDivElement>, ChildrenProp<Omit<AvatarProps, "size" | "rounded">> {
7
28
  /**
8
- * rounded icon
29
+ * Whether to apply a fully rounded shape to all avatars and the group container.
9
30
  */
10
31
  rounded?: boolean;
11
32
  /**
12
- * icon size
33
+ * Avatar size. Accepts `"xs"`–`"xl"` tokens or a custom CSS size value.
13
34
  */
14
- size?: SizeType | number | string;
35
+ size?: SizeType | number | (string & {});
15
36
  /**
16
- * max count
37
+ * Maximum number of avatars to display before showing a "+N" overflow badge.
17
38
  */
18
- totalCount?: number;
39
+ max?: number;
19
40
  }
20
41
  /**
21
- * Group multiple avatars together
42
+ * Horizontal group of avatars with an overflow count badge.
43
+ *
44
+ * Renders its avatar children in a flex row, truncating to `max` visible
45
+ * avatars and appending a "+N" badge for the remainder. Each avatar is
46
+ * sized according to the `size` prop.
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * import { Avatar, AvatarGroup } from "@react-fabric/core";
51
+ *
52
+ * <AvatarGroup max={3} size="md">
53
+ * <Avatar name="John Doe" avatar="/john.jpg" />
54
+ * <Avatar name="Jane Smith" avatar="/jane.jpg" />
55
+ * <Avatar name="Alice Johnson" avatar="/alice.jpg" />
56
+ * <Avatar name="Bob Brown" avatar="/bob.jpg" />
57
+ * </AvatarGroup>
58
+ * // Renders 3 avatars + a "+1" badge
59
+ * ```
22
60
  */
23
- export declare const AvatarGroup: ({ ref, children, className, totalCount, rounded, size, ...aria }: AvatarGroupProps) => import("react/jsx-runtime").JSX.Element;
24
- export {};
61
+ export declare function AvatarGroup({ ref, children, className, max, rounded, size, ...props }: AvatarGroupProps): import("react").JSX.Element;
@@ -1,25 +1,75 @@
1
- import { type BadgeType, type ChildProp, type CssProp, type IconProps, type RefProp } from "../../types";
2
- export interface BadgeProps extends CssProp, RefProp, IconProps, Partial<ChildProp> {
1
+ import type { ChildProp, CssProp, TestProps } from "../../types";
2
+ import type { CustomColors } from "../../types/colors";
3
+ export interface BadgeType {
3
4
  /**
4
- * make wrapper a block element
5
+ * Numeric or text value displayed inside the badge (e.g., a count like "42").
6
+ * Mutually exclusive with `icon` and `ping`.
5
7
  */
6
- block?: boolean;
8
+ value?: string | number;
7
9
  /**
8
- * badge value
10
+ * Icon path or props rendered inside the badge instead of a value.
11
+ * Mutually exclusive with `value` and `ping`.
9
12
  */
10
- value?: number | string;
13
+ icon?: string;
11
14
  /**
12
- * max value for number display
15
+ * When true, renders a pulsing dot indicator (used for "unread" or "live" states).
16
+ * Mutually exclusive with `value` and `icon`.
13
17
  */
14
- max?: number;
18
+ ping?: boolean;
15
19
  /**
16
- * ping animation
20
+ * When true, the badge is positioned inline with its content rather than absolutely positioned.
17
21
  */
18
- ping?: boolean;
22
+ inline?: boolean;
23
+ /**
24
+ * Placement of the badge relative to its child when `inline` is false.
25
+ * Defaults to `"top-end"`.
26
+ */
27
+ placement?: "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "end" | "start";
19
28
  /**
20
- * badge placement
29
+ * Background color applied to the badge. Accepts Tailwind palette tokens or any CSS color.
21
30
  */
22
- placement?: "top-start" | "top-end" | "bottom-start" | "bottom-end" | "top" | "bottom" | "start" | "end";
31
+ bg?: CustomColors;
32
+ /**
33
+ * Text/icon color applied to the badge. Accepts Tailwind palette tokens or any CSS color.
34
+ */
35
+ color?: CustomColors;
23
36
  }
24
- export declare const getBadgeProps: (badge?: string | number | BadgeType) => AnyObject;
25
- export declare const Badge: ({ ref, className, value, max, ping, block, placement, children, forButton, icon, iconBg, iconColor, rtlFlip, ...rest }: BadgeProps) => import("react/jsx-runtime").JSX.Element;
37
+ export type BadgeProps = BadgeType & CssProp & TestProps & Partial<ChildProp> & ({
38
+ value: string | number;
39
+ icon?: never;
40
+ ping?: never;
41
+ } | {
42
+ icon: string;
43
+ value?: never;
44
+ ping?: never;
45
+ } | {
46
+ ping?: boolean;
47
+ value?: never;
48
+ icon?: never;
49
+ });
50
+ /**
51
+ * A small overlay component used to display a numeric value, icon, or pulsing
52
+ * indicator positioned relative to a child element.
53
+ *
54
+ * Commonly used for notification counts, unread indicators, or status badges
55
+ * on avatars, buttons, or list items.
56
+ *
57
+ * @example
58
+ * ```tsx
59
+ * import { Badge } from "@react-fabric/core";
60
+ *
61
+ * // Numeric badge
62
+ * <Badge value="42">
63
+ * <Avatar name="John" />
64
+ * </Badge>
65
+ *
66
+ * // Icon badge
67
+ * <Badge icon="icon-[mdi--bell]" />
68
+ *
69
+ * // Pulsing indicator
70
+ * <Badge ping>
71
+ * <Icon icon="icon-[mdi--email]" />
72
+ * </Badge>
73
+ * ```
74
+ */
75
+ export declare function Badge({ className, bg, color, icon, inline, ping, value, children, placement, ...props }: BadgeProps): import("react").JSX.Element;
@@ -1,95 +1,112 @@
1
- import { type MouseEventHandler, type WheelEventHandler } from "react";
2
- import { type AriaProps, type BadgeType, type CallbackReturn, type ColorType, type CssProp, type IconProps, type PolymorphicProps, type RefProp, type SizeType, type TestProps } from "../../types";
3
- export interface BaseProps extends CssProp, AriaProps, IconProps, RefProp, TestProps {
1
+ import type { Hotkey } from "@tanstack/react-hotkeys";
2
+ import type { ChildProp, CssPropWithMap, CSSSizeType, HtmlEvents, PolymorphicProps, RefProp, SizeType, TestProps } from "../../types";
3
+ import type { IconProps } from "../icon/Icon";
4
+ export interface SharedButtonProps extends HtmlEvents {
4
5
  /**
5
- * primary icon alignment
6
+ * Visual style variant of the button. Defaults to `"default"`.
6
7
  */
7
- iconAlign?: "start" | "end";
8
+ variant?: "default" | "soft" | "outlined" | "dashed" | "solid" | "link";
8
9
  /**
9
- * alternate icon align end (caret, arrow)
10
+ * Color scheme for the button. Defaults to `"default"`.
10
11
  */
11
- altIcon?: string;
12
+ color?: "default" | "muted" | "primary" | "secondary" | "info" | "danger" | "success" | "warning";
12
13
  /**
13
- * button size
14
+ * When true, applies fully rounded (pill) corners to the button.
14
15
  */
15
- size?: SizeType;
16
+ rounded?: boolean;
16
17
  /**
17
- * button color
18
+ * Button size. Accepts `"xs"`, `"sm"`, `"md"`, `"lg"`, or `"xl"`.
18
19
  */
19
- color?: ColorType;
20
+ size?: SizeType;
21
+ }
22
+ interface BaseButtonProps extends CssPropWithMap<{
23
+ root: string;
24
+ button: string;
25
+ label: string;
26
+ icon: string;
27
+ }>, RefProp<HTMLButtonElement>, TestProps, SharedButtonProps {
28
+ "aria-label"?: string;
20
29
  /**
21
- * button type
30
+ * Keyboard shortcut combo that triggers the button's `onClick` handler.
22
31
  */
23
- type?: "button" | "reset" | "submit";
32
+ hotKey?: Hotkey | Hotkey[];
24
33
  /**
25
- * button styling
34
+ * When true, hides the visual hotkey label displayed inside the button.
26
35
  */
27
- variant?: "outline" | "solid" | "link";
36
+ hideHotKeyLabel?: boolean;
28
37
  /**
29
- * active state with click disabled
38
+ * Icon path or props rendered inside the button.
30
39
  */
31
- active?: boolean;
40
+ icon?: IconProps;
32
41
  /**
33
- * loading state with animation and click disabled
42
+ * Alternative icon rendered for dropdown carets or state indicators.
34
43
  */
35
- loading?: boolean;
44
+ altIcon?: IconProps;
36
45
  /**
37
- * full rounded edges
46
+ * When true, marks the button as in an active/selected state.
38
47
  */
39
- rounded?: boolean;
48
+ active?: boolean;
40
49
  /**
41
- * spin icon on hover
50
+ * When true, shows a loading spinner and disables clicks to prevent duplicate submissions.
42
51
  */
43
- spinOnHover?: boolean;
52
+ loading?: boolean;
44
53
  /**
45
- * disabled state
54
+ * When true, disables the button and prevents user interaction.
46
55
  */
47
56
  disabled?: boolean;
48
57
  /**
49
- * stretch to full width
58
+ * When true, allows the button to be clicked even when `active` is true.
50
59
  */
51
- fullWidth?: boolean;
60
+ activeClickable?: boolean;
61
+ type?: "button" | "submit" | "reset";
52
62
  /**
53
- * action completed message works best with `onClick` Promise return.
54
- * To hide completed message onClick/Promise return should be false
63
+ * Explicit width of the button (CSS size value).
55
64
  */
56
- actionMessage?: string;
65
+ width?: CSSSizeType;
57
66
  /**
58
- * manually force show action message
67
+ * When true, manually shows the action-completed checkmark overlay.
59
68
  */
60
69
  showActionDone?: boolean;
61
70
  /**
62
- * show action message `onClick` or manually by setting `showActionDone` true
71
+ * Controls when the action-completed checkmark appears: `"click"` shows it after onClick,
72
+ * `"manual"` requires setting `showActionDone` to true.
63
73
  */
64
74
  showActionDoneEvent?: "click" | "manual";
65
- /**
66
- * click handler, return Promise to autoset loading state
67
- */
68
- onClick?: (e?: React.MouseEvent) => CallbackReturn;
69
- /**
70
- * badges
71
- */
72
- badge?: string | number | BadgeType;
73
- /**
74
- * keyboard shortcut
75
- */
76
- hotKey?: string;
77
- stopPropagation?: boolean;
78
- onMouseOut?: MouseEventHandler;
79
- onMouseOver?: MouseEventHandler;
80
- onMouseMove?: MouseEventHandler;
81
- onMouseEnter?: MouseEventHandler;
82
- onMouseLeave?: MouseEventHandler;
83
- onWheel?: WheelEventHandler;
84
75
  }
85
- export type ButtonProps = {
86
- children: string | React.ReactElement;
87
- "aria-label"?: string;
76
+ type ButtonTypeProps = {
77
+ children: ChildProp["children"];
88
78
  } | {
89
79
  children?: never;
90
80
  "aria-label": string;
91
81
  };
82
+ export type ButtonProps<Tag extends React.ElementType = "button"> = BaseButtonProps & ButtonTypeProps & PolymorphicProps<Tag>;
92
83
  /**
93
- * Clickable action button
84
+ * A versatile button component that supports multiple variants, colors, sizes, and states.
85
+ * It can display icons, handle loading/action states, show keyboard shortcuts, and be
86
+ * polymorphic to render as different HTML elements or custom components.
87
+ *
88
+ * @example
89
+ * ```tsx
90
+ * // Basic button
91
+ * <Button variant="solid" color="primary" onClick={handleClick}>
92
+ * Click me
93
+ * </Button>
94
+ *
95
+ * // Icon button with loading state
96
+ * <Button icon="icon-[mdi--floppy]" loading={saving}>
97
+ * Save
98
+ * </Button>
99
+ *
100
+ * // Polymorphic: renders as a link
101
+ * <Button as="a" href="/dashboard" variant="soft">
102
+ * Dashboard
103
+ * </Button>
104
+ *
105
+ * // Button with keyboard shortcut
106
+ * <Button hotKey="Ctrl+S" variant="dashed">
107
+ * Save (Ctrl+S)
108
+ * </Button>
109
+ * ```
94
110
  */
95
- export declare const Button: <Tag extends import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> = "button">({ as, ref, children, className, active, color, icon, iconBg, iconColor, iconAlign, altIcon, rtlFlip, rounded, size, disabled, loading, variant, badge, fullWidth, spinOnHover, onClick, actionMessage, stopPropagation, type, hotKey, showActionDone, showActionDoneEvent, tabIndex, "data-ref": dataRef, ...aria }: BaseProps & ButtonProps & PolymorphicProps<Tag>) => import("react/jsx-runtime").JSX.Element;
111
+ export declare function Button<Tag extends React.ElementType = "button">({ active, altIcon, as, children, className, classNames, color, disabled, icon, loading, onBlur, onClick, onFocus, onMouseDown, onMouseEnter, onMouseLeave, onMouseMove, onMouseOver, onMouseUp, activeClickable, showActionDone, showActionDoneEvent, type, ref, rounded, size, variant, width, hotKey, hideHotKeyLabel, ...props }: ButtonProps<Tag>): import("react").JSX.Element;
112
+ export {};
@@ -1,34 +1,96 @@
1
- /// <reference types="react" />
2
- import { type AriaProps, type ChildrenProp, type ColorType, type CssProp, type RefProp, type SizeType, type TestProps } from "../../types";
3
- import { type Button } from "./Button";
4
- export interface ButtonGroupProps extends CssProp, AriaProps, TestProps, RefProp<HTMLDivElement>, ChildrenProp<React.ReactElement<typeof Button>> {
1
+ /**
2
+ * React Fabric
3
+ * @version 1.0.0
4
+ * @license MIT
5
+ * @copyright 2024 Adarsh Pastakia
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ * of this software and associated documentation files (the "Software"), to deal
9
+ * in the Software without restriction, including without limitation the rights
10
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ * copies of the Software, and to permit persons to whom the Software is
12
+ * furnished to do so, subject to the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be included in all
15
+ * copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ * SOFTWARE.
24
+ */
25
+ import type { ChildrenProp, CssProp, RefProp, TestProps } from "../../types";
26
+ import type { ButtonProps, SharedButtonProps } from "./Button";
27
+ interface BaseProps extends CssProp, TestProps, SharedButtonProps {
5
28
  /**
6
- * vertical orientation
29
+ * When true, arranges buttons vertically (top-to-bottom) instead of horizontally.
7
30
  */
8
31
  vertical?: boolean;
9
32
  /**
10
- * button styling
11
- */
12
- variant?: "outline" | "solid" | "link";
13
- /**
14
- * button size
15
- */
16
- size?: SizeType;
17
- /**
18
- * button color
19
- */
20
- color?: ColorType;
21
- /**
22
- * full rounded edges
23
- */
24
- rounded?: boolean;
25
- /**
26
- * disabled state
33
+ * When true, disables all child buttons and prevents user interaction.
27
34
  */
28
35
  disabled?: boolean;
29
36
  /**
30
- * stretch to full width
37
+ * When true, stretches the group to full available width (uses `flex` instead of `inline-flex`).
31
38
  */
32
39
  fullWidth?: boolean;
33
40
  }
34
- export declare const ButtonGroup: ({ vertical, className, children, variant, rounded, disabled, fullWidth, color, size, ...aria }: ButtonGroupProps) => import("react/jsx-runtime").JSX.Element;
41
+ export type ButtonGroupProps<T> = BaseProps & RefProp<HTMLDivElement> & ChildrenProp<ButtonProps & {
42
+ value: T;
43
+ }> & {
44
+ onClick?: (value: T | null, e?: React.MouseEvent) => void;
45
+ };
46
+ /**
47
+ * A container component that renders a group of related buttons with shared styling and behavior.
48
+ *
49
+ * ButtonGroup propagates common button properties (variant, color, size, rounded, disabled)
50
+ * to all direct child `<Button>` elements, ensuring visual consistency across the group.
51
+ * It also coordinates click handling by intercepting each child's `onClick` and invoking
52
+ * the group-level `onClick` callback with the clicked button's `value` prop — making it
53
+ * ideal for toggle groups, radio-style selections, and multi-select toolbars.
54
+ *
55
+ * @template T - The type of the `value` prop expected by child buttons (defaults to `string`).
56
+ *
57
+ * @example
58
+ * ```tsx
59
+ * // Single-select toggle group
60
+ * const [mode, setMode] = useState<"day" | "week" | "month">("day");
61
+ *
62
+ * <ButtonGroup
63
+ * value={mode}
64
+ * onClick={(v) => setMode(v ?? "day")}
65
+ * variant="outlined"
66
+ * color="primary"
67
+ * size="sm"
68
+ * >
69
+ * <Button value="day">Day</Button>
70
+ * <Button value="week">Week</Button>
71
+ * <Button value="month">Month</Button>
72
+ * </ButtonGroup>
73
+ *
74
+ * @example
75
+ * ```tsx
76
+ * // Multi-select with vertical layout
77
+ * const [tags, setTags] = useState<string[]>([]);
78
+ *
79
+ * <ButtonGroup
80
+ * vertical
81
+ * variant="soft"
82
+ * color="info"
83
+ * onClick={(tag) =>
84
+ * setTags((prev) =>
85
+ * prev.includes(tag!) ? prev.filter((t) => t !== tag) : [...prev, tag!]
86
+ * )
87
+ * }
88
+ * >
89
+ * <Button value="react">React</Button>
90
+ * <Button value="typescript">TypeScript</Button>
91
+ * <Button value="tailwind">Tailwind</Button>
92
+ * </ButtonGroup>
93
+ * ```
94
+ */
95
+ export declare function ButtonGroup<T extends AnyObject = string>({ ref, vertical, className, children, variant, rounded, disabled, fullWidth, color, size, onClick, ...props }: ButtonGroupProps<T>): import("react").JSX.Element;
96
+ export {};
@@ -1,8 +1,7 @@
1
- /// <reference types="react" />
2
1
  import { type Placement } from "@floating-ui/react";
3
- import { type CallbackReturn, type PolymorphicProps, type RefProp } from "../../types";
4
- import { type BaseProps, type ButtonProps } from "./Button";
5
- interface ExtendedProps extends Omit<BaseProps, "onClick">, RefProp {
2
+ import { type CallbackReturn } from "../../types";
3
+ import { type ButtonProps } from "./Button";
4
+ interface ExtendedProps {
6
5
  /**
7
6
  * confirm message
8
7
  */
@@ -24,9 +23,24 @@ interface ExtendedProps extends Omit<BaseProps, "onClick">, RefProp {
24
23
  */
25
24
  onClick?: (e: boolean) => CallbackReturn;
26
25
  }
27
- export type ConfirmButtonProps = ExtendedProps & ButtonProps;
28
26
  /**
29
- * Button with confirmation dropdown
27
+ * A button that shows a confirmation dialog when clicked, allowing the user to confirm or cancel an action.
28
+ * It supports custom messages, labels, and loading states.
29
+ * This component is useful for actions that require user confirmation, such as deleting items or submitting forms.
30
+ * It uses the Floating UI library to manage the positioning of the confirmation dialog, ensuring it appears correctly relative to the button.
31
+ * It also supports custom placement of the dialog, and can display an action message when the action is completed.
32
+ *
33
+ * @example
34
+ * ```jsx
35
+ * <ConfirmButton
36
+ * message="Are you sure you want to delete this item?"
37
+ * onClick={(confirmed) => {
38
+ * if (confirmed) {
39
+ * // Perform action
40
+ * }
41
+ * }}
42
+ * />
43
+ * ```
30
44
  */
31
- export declare const ConfirmButton: <Tag extends import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> = "button">({ ref, message, color, okLabel, cancelLabel, onClick, loading, placement, actionMessage, showActionDone, showActionDoneEvent, ...props }: ConfirmButtonProps & PolymorphicProps<Tag>) => import("react/jsx-runtime").JSX.Element;
45
+ export declare const ConfirmButton: <Tag extends React.ElementType = "button">(props: ExtendedProps & ButtonProps<Tag>) => import("react").JSX.Element;
32
46
  export {};