@react-fabric/core 1.0.0-beta.9 → 1.0.2

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 +66 -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 +66 -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 +30 -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 +75 -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
@@ -0,0 +1,88 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
5
+ var utilities = require('@react-fabric/utilities');
6
+ require('react');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+ var getColor = require('../../utils/getColor.js');
9
+
10
+ var _excluded = ["className", "classNames", "color"];
11
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ /**
14
+ * Content placeholder that renders a grayed-out card mockup with icon, title, and line slots.
15
+ *
16
+ * Displays a pre-styled skeleton card layout (icon area + title + two rows of text lines)
17
+ * to occupy space while real content loads. Useful for list items, cards, panels, and
18
+ * virtualized lists.
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * import { Skeleton } from "@react-fabric/core";
23
+ *
24
+ * // Basic skeleton placeholder
25
+ * <Skeleton />
26
+ *
27
+ * // Custom color
28
+ * <Skeleton color="primary-100" />
29
+ *
30
+ * // Custom slot styling
31
+ * <Skeleton classNames={{ titlePlaceholder: "w-2/3" }} />
32
+ * ```
33
+ */
34
+ function Skeleton(_ref) {
35
+ var className = _ref.className,
36
+ classNames = _ref.classNames,
37
+ _ref$color = _ref.color,
38
+ color = _ref$color === void 0 ? "tint-200" : _ref$color,
39
+ rest = _objectWithoutProperties(_ref, _excluded);
40
+ var bgColor = getColor.getColor(color);
41
+ return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
42
+ className: utilities.cn("fabric-skeleton", "p-2 animate-fade flex gap-2 max-w-lg", className, classNames === null || classNames === void 0 ? void 0 : classNames.root),
43
+ "data-ref": "skeleton"
44
+ }, rest), {}, {
45
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
46
+ className: utilities.cn("rounded aspect-square h-12", classNames === null || classNames === void 0 ? void 0 : classNames.iconPlaceholder),
47
+ style: {
48
+ backgroundColor: bgColor
49
+ }
50
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
51
+ className: "flex-1 flex flex-col gap-2",
52
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
53
+ className: utilities.cn("h-3 rounded-full", classNames === null || classNames === void 0 ? void 0 : classNames.titlePlaceholder),
54
+ style: {
55
+ backgroundColor: bgColor
56
+ }
57
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
58
+ className: "flex gap-2",
59
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
60
+ className: utilities.cn("h-2 rounded-full basis-[30%]", classNames === null || classNames === void 0 ? void 0 : classNames.linePlaceholder),
61
+ style: {
62
+ backgroundColor: bgColor
63
+ }
64
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
65
+ className: utilities.cn("h-2 rounded-full basis-[60%]", classNames === null || classNames === void 0 ? void 0 : classNames.linePlaceholder),
66
+ style: {
67
+ backgroundColor: bgColor
68
+ }
69
+ })]
70
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
71
+ className: "flex gap-2",
72
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
73
+ className: utilities.cn("h-2 rounded-full basis-[30%]", classNames === null || classNames === void 0 ? void 0 : classNames.linePlaceholder),
74
+ style: {
75
+ backgroundColor: bgColor
76
+ }
77
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
78
+ className: utilities.cn("h-2 rounded-full basis-[60%]", classNames === null || classNames === void 0 ? void 0 : classNames.linePlaceholder),
79
+ style: {
80
+ backgroundColor: bgColor
81
+ }
82
+ })]
83
+ })]
84
+ })]
85
+ }));
86
+ }
87
+
88
+ exports.Skeleton = Skeleton;
@@ -5,15 +5,13 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
5
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
6
  var utilities = require('@react-fabric/utilities');
7
7
  var BoringAvatar = require('boring-avatars');
8
- var classNames = require('classnames');
9
8
  var react = require('react');
10
- var getColor = require('../../utils/getColor.js');
11
- var Avatar_module = require('./Avatar.module.css');
12
9
  var jsxRuntime = require('react/jsx-runtime');
10
+ var getColor = require('../../utils/getColor.js');
13
11
 
14
- var _excluded = ["ref", "name", "avatar", "fallbackIcon", "bg", "color", "size", "rounded", "variant", "className", "viewBox", "onClick"];
12
+ var _excluded = ["ref", "name", "avatar", "fallbackIcon", "bg", "color", "size", "rounded", "variant", "className", "viewBox", "preventDefault", "onClick"];
15
13
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
15
  var SizeMap = {
18
16
  xs: "0.875rem",
19
17
  sm: "1.125rem",
@@ -23,9 +21,24 @@ var SizeMap = {
23
21
  };
24
22
 
25
23
  /**
26
- * An avatar is a graphical representation of a user's identity.
24
+ * User avatar that renders an image with a Boring Avatar fallback.
25
+ *
26
+ * Displays a user image, falling back to a Boring Avatar (or text initials)
27
+ * when no image is provided or the image fails to load. Supports four
28
+ * Boring Avatar variants (beam, text, pixel, bauhaus) and custom SVG/icon fallbacks.
29
+ *
30
+ * @see {@link https://boringavatars.com/}
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * import { Avatar } from "@react-fabric/core";
35
+ *
36
+ * <Avatar name="Ada Lovelace" avatar="/ada.jpg" />
37
+ * <Avatar name="John Doe" variant="pixel" size="lg" />
38
+ * <Avatar name="Jane" fallbackIcon="icon-[mdi--user]" variant="text" />
39
+ * ```
27
40
  */
28
- var Avatar = function Avatar(_ref) {
41
+ function Avatar(_ref) {
29
42
  var ref = _ref.ref,
30
43
  name = _ref.name,
31
44
  avatar = _ref.avatar,
@@ -40,14 +53,15 @@ var Avatar = function Avatar(_ref) {
40
53
  className = _ref.className,
41
54
  _ref$viewBox = _ref.viewBox,
42
55
  viewBox = _ref$viewBox === void 0 ? "0 0 24 24" : _ref$viewBox,
43
- onClick = _ref.onClick,
44
- aria = _objectWithoutProperties(_ref, _excluded);
56
+ preventDefault = _ref.preventDefault,
57
+ _onClick = _ref.onClick,
58
+ props = _objectWithoutProperties(_ref, _excluded);
45
59
  var _useState = react.useState(true),
46
60
  _useState2 = _slicedToArray(_useState, 2),
47
61
  fallback = _useState2[0],
48
62
  setFallback = _useState2[1];
49
63
 
50
- /** ***************** style map *******************/
64
+ // Compute inline styles from props (memoized to prevent re-renders)
51
65
  var styles = react.useMemo(function () {
52
66
  var s = {};
53
67
  if (bg) {
@@ -65,13 +79,13 @@ var Avatar = function Avatar(_ref) {
65
79
  return s;
66
80
  }, [bg, color, size]);
67
81
 
68
- /** ***************** render icon *******************/
82
+ // Render avatar image with a fade-in placeholder behind it
69
83
  var avatarImage = react.useMemo(function () {
70
84
  setFallback(!avatar);
71
85
  return avatar && /*#__PURE__*/jsxRuntime.jsxs("div", {
72
86
  className: "contents",
73
87
  children: [/*#__PURE__*/jsxRuntime.jsx("div", {
74
- className: classNames(Avatar_module.imgPlaceholder, "absolute inset-0 bg-gray animate-pulse")
88
+ className: "fabric-imgPlaceholder absolute inset-0 bg-gray animate-fade -z-1"
75
89
  }), /*#__PURE__*/jsxRuntime.jsx("img", {
76
90
  src: avatar,
77
91
  alt: avatar,
@@ -86,10 +100,13 @@ var Avatar = function Avatar(_ref) {
86
100
  })]
87
101
  });
88
102
  }, [avatar]);
103
+
104
+ // Render fallback: custom icon, text initials, or Boring Avatar
89
105
  var fallbackAvatar = react.useMemo(function () {
90
106
  if (fallbackIcon) {
91
107
  return utilities.isSvgPath(fallbackIcon) ? /*#__PURE__*/jsxRuntime.jsx("svg", {
92
108
  viewBox: viewBox,
109
+ className: "p-[0.125em]",
93
110
  children: /*#__PURE__*/jsxRuntime.jsx("path", {
94
111
  fill: "currentColor",
95
112
  d: fallbackIcon.toString()
@@ -99,8 +116,8 @@ var Avatar = function Avatar(_ref) {
99
116
  });
100
117
  }
101
118
  if (variant === "text") {
102
- var _name$match;
103
- var _ref2 = (_name$match = name.match(/(?=(\w).* (\w).*)|(?=(\w\w).*)/)) !== null && _name$match !== void 0 ? _name$match : [],
119
+ // Extract initials: "John Doe" -> "JD", "Jane" -> "JA"
120
+ var _ref2 = name.match(/(?=(\w).* (\w).*)|(?=(\w\w).*)/),
104
121
  _ref3 = _slicedToArray(_ref2, 4),
105
122
  first = _ref3[1],
106
123
  second = _ref3[2],
@@ -121,23 +138,27 @@ var Avatar = function Avatar(_ref) {
121
138
  })
122
139
  });
123
140
  }
141
+ // Default: generate a Boring Avatar from the name
124
142
  return /*#__PURE__*/jsxRuntime.jsx(BoringAvatar, {
125
143
  square: true,
126
144
  size: 64,
127
145
  variant: variant,
128
146
  name: name
129
147
  });
130
- }, [name, variant, fallbackIcon]);
148
+ }, [fallbackIcon, variant, name, viewBox]);
131
149
  return /*#__PURE__*/jsxRuntime.jsxs("dfn", _objectSpread(_objectSpread({
132
150
  role: "presentation",
133
- className: classNames(Avatar_module.avatar, className, "select-none relative overflow-hidden inline-block box-content leading-none not-italic text-center", bg && getColor.getBgClass(bg), color && getColor.getColorClass(color), !rounded && "rounded", rounded && "rounded-full"),
134
- onClick: onClick,
151
+ className: utilities.cn("fabric-avatar", rounded ? "rounded-full" : "rounded", "select-none relative overflow-hidden inline-block box-content leading-none not-italic text-center is-clickable:cursor-pointer", className),
152
+ onClick: function onClick(e) {
153
+ if (preventDefault) e.preventDefault();
154
+ _onClick === null || _onClick === void 0 || _onClick(e);
155
+ },
135
156
  style: styles,
136
- "data-clickable": !!onClick,
157
+ "data-clickable": !!_onClick,
137
158
  ref: ref
138
- }, aria), {}, {
159
+ }, props), {}, {
139
160
  children: [!fallback && avatarImage, fallback && fallbackAvatar]
140
161
  }));
141
- };
162
+ }
142
163
 
143
164
  exports.Avatar = Avatar;
@@ -2,15 +2,14 @@
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
5
- var classNames = require('classnames');
5
+ var utilities = require('@react-fabric/utilities');
6
6
  var react = require('react');
7
7
  var useEffectDebugger = require('../../hooks/useEffectDebugger.js');
8
- var Avatar_module = require('./Avatar.module.css');
9
8
  var jsxRuntime = require('react/jsx-runtime');
10
9
 
11
- var _excluded = ["ref", "children", "className", "totalCount", "rounded", "size"];
10
+ var _excluded = ["ref", "children", "className", "max", "rounded", "size"];
12
11
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
13
  var SizeMap = {
15
14
  xs: "0.875rem",
16
15
  sm: "1.125rem",
@@ -20,17 +19,34 @@ var SizeMap = {
20
19
  };
21
20
 
22
21
  /**
23
- * Group multiple avatars together
22
+ * Horizontal group of avatars with an overflow count badge.
23
+ *
24
+ * Renders its avatar children in a flex row, truncating to `max` visible
25
+ * avatars and appending a "+N" badge for the remainder. Each avatar is
26
+ * sized according to the `size` prop.
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * import { Avatar, AvatarGroup } from "@react-fabric/core";
31
+ *
32
+ * <AvatarGroup max={3} size="md">
33
+ * <Avatar name="John Doe" avatar="/john.jpg" />
34
+ * <Avatar name="Jane Smith" avatar="/jane.jpg" />
35
+ * <Avatar name="Alice Johnson" avatar="/alice.jpg" />
36
+ * <Avatar name="Bob Brown" avatar="/bob.jpg" />
37
+ * </AvatarGroup>
38
+ * // Renders 3 avatars + a "+1" badge
39
+ * ```
24
40
  */
25
- var AvatarGroup = function AvatarGroup(_ref) {
41
+ function AvatarGroup(_ref) {
26
42
  var ref = _ref.ref,
27
43
  children = _ref.children,
28
44
  className = _ref.className,
29
- totalCount = _ref.totalCount,
45
+ max = _ref.max,
30
46
  rounded = _ref.rounded,
31
47
  size = _ref.size,
32
- aria = _objectWithoutProperties(_ref, _excluded);
33
- /** ***************** style map *******************/
48
+ props = _objectWithoutProperties(_ref, _excluded);
49
+ // Compute inline styles from size prop (memoized to prevent re-renders)
34
50
  var styles = useEffectDebugger.useMemoDebugger(function () {
35
51
  var s = {};
36
52
  if (size && !(size in SizeMap)) {
@@ -41,18 +57,23 @@ var AvatarGroup = function AvatarGroup(_ref) {
41
57
  }
42
58
  return s;
43
59
  }, [size], "Icon styles");
60
+
61
+ // Normalize children to an array, filtering out falsy values
62
+ // eslint-disable-next-line @eslint-react/no-children-to-array
44
63
  var avatars = react.useMemo(function () {
45
64
  return react.Children.toArray(children).filter(Boolean);
46
65
  }, [children]);
66
+ // Calculate how many avatars exceed the max (0 if none)
47
67
  var diff = react.useMemo(function () {
48
- return totalCount && totalCount > avatars.length && totalCount - avatars.length;
49
- }, [avatars, totalCount]);
50
- return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({}, aria), {}, {
68
+ return max && avatars.length > max && avatars.length - max;
69
+ }, [avatars, max]);
70
+ return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({}, props), {}, {
51
71
  ref: ref,
52
- className: classNames(Avatar_module.avatarGroup, className, "inline-flex flex-nowrap", !rounded && "rounded", rounded && "rounded-full"),
72
+ className: utilities.cn("fabric-avatarGroup", "inline-flex flex-nowrap", className, rounded ? "rounded-full" : "rounded"),
53
73
  style: styles,
54
- children: [avatars, !!diff && /*#__PURE__*/jsxRuntime.jsx("dfn", {
55
- className: classNames(Avatar_module.avatar, "select-none relative overflow-hidden inline-block box-content leading-none not-italic text-center", Avatar_module.extra),
74
+ children: [avatars.slice(0, max), !!diff && /*#__PURE__*/jsxRuntime.jsx("dfn", {
75
+ "data-ref": "avatarCount",
76
+ className: utilities.cn("fabric-avatar", "fabric-avatarGroup--extra", "select-none relative overflow-hidden inline-block box-content bg-muted leading-none not-italic text-center"),
56
77
  children: /*#__PURE__*/jsxRuntime.jsx("svg", {
57
78
  children: /*#__PURE__*/jsxRuntime.jsx("text", {
58
79
  x: "50%",
@@ -69,6 +90,6 @@ var AvatarGroup = function AvatarGroup(_ref) {
69
90
  })
70
91
  })]
71
92
  }));
72
- };
93
+ }
73
94
 
74
95
  exports.AvatarGroup = AvatarGroup;
@@ -3,82 +3,104 @@
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
5
5
  var utilities = require('@react-fabric/utilities');
6
- var classNames = require('classnames');
7
6
  var react = require('react');
8
- var Icon = require('../icon/Icon.js');
9
- var Badge_module = require('./Badge.module.css');
10
7
  var jsxRuntime = require('react/jsx-runtime');
8
+ var getColor = require('../../utils/getColor.js');
9
+ var Icon = require('../icon/Icon.js');
11
10
 
12
- var _excluded = ["ref", "className", "value", "max", "ping", "block", "placement", "children", "forButton", "icon", "iconBg", "iconColor", "rtlFlip"];
11
+ var _excluded = ["className", "bg", "color", "icon", "inline", "ping", "value", "children", "placement"];
13
12
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
- var getBadgeProps = function getBadgeProps(badge) {
16
- if (utilities.isObject(badge)) {
17
- return Object.assign({
18
- forButton: true,
19
- placement: ""
20
- }, badge);
21
- } else {
22
- return {
23
- value: badge,
24
- forButton: true,
25
- placement: ""
26
- };
27
- }
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
+ /**
15
+ * Tailwind class names for each badge placement position.
16
+ * Each value uses absolute positioning relative to the parent container,
17
+ * with RTL-aware horizontal flipping via Tailwind's `rtl:` variant.
18
+ */
19
+ var PLACEMENT_STYLES = {
20
+ top: "absolute z-1 top-0 inset-x-1/2 -translate-y-1/2 -translate-x-1/2 rtl:translate-x-1/2",
21
+ start: "absolute z-1 inset-s-0 top-1/2 -translate-y-1/2 -translate-x-1/2 rtl:translate-x-1/2",
22
+ end: "absolute z-1 inset-e-0 top-1/2 -translate-y-1/2 translate-x-1/2 rtl:-translate-x-1/2",
23
+ "top-start": "absolute z-1 top-0 start-0 -translate-y-1/2 -translate-x-1/2 rtl:translate-x-1/2",
24
+ "top-end": "absolute z-1 top-0 end-0 -translate-y-1/2 translate-x-1/2 rtl:-translate-x-1/2",
25
+ bottom: "absolute z-1 bottom-0 inset-x-1/2 translate-y-1/2 -translate-x-1/2 rtl:translate-x-1/2",
26
+ "bottom-start": "absolute z-1 bottom-0 start-0 translate-y-1/2 -translate-x-1/2 rtl:translate-x-1/2",
27
+ "bottom-end": "absolute z-1 bottom-0 end-0 translate-y-1/2 translate-x-1/2 rtl:-translate-x-1/2"
28
28
  };
29
- var Badge = function Badge(_ref) {
30
- var ref = _ref.ref,
31
- className = _ref.className,
32
- value = _ref.value,
33
- max = _ref.max,
29
+
30
+ /**
31
+ * A small overlay component used to display a numeric value, icon, or pulsing
32
+ * indicator positioned relative to a child element.
33
+ *
34
+ * Commonly used for notification counts, unread indicators, or status badges
35
+ * on avatars, buttons, or list items.
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * import { Badge } from "@react-fabric/core";
40
+ *
41
+ * // Numeric badge
42
+ * <Badge value="42">
43
+ * <Avatar name="John" />
44
+ * </Badge>
45
+ *
46
+ * // Icon badge
47
+ * <Badge icon="icon-[mdi--bell]" />
48
+ *
49
+ * // Pulsing indicator
50
+ * <Badge ping>
51
+ * <Icon icon="icon-[mdi--email]" />
52
+ * </Badge>
53
+ * ```
54
+ */
55
+ function Badge(_ref) {
56
+ var className = _ref.className,
57
+ _ref$bg = _ref.bg,
58
+ bg = _ref$bg === void 0 ? "tint-200" : _ref$bg,
59
+ _ref$color = _ref.color,
60
+ color = _ref$color === void 0 ? "tint-900" : _ref$color,
61
+ icon = _ref.icon,
62
+ inline = _ref.inline,
34
63
  ping = _ref.ping,
35
- block = _ref.block,
64
+ value = _ref.value,
65
+ children = _ref.children,
36
66
  _ref$placement = _ref.placement,
37
67
  placement = _ref$placement === void 0 ? "top-end" : _ref$placement,
38
- children = _ref.children,
39
- _ref$forButton = _ref.forButton,
40
- forButton = _ref$forButton === void 0 ? false : _ref$forButton,
41
- icon = _ref.icon,
42
- iconBg = _ref.iconBg,
43
- iconColor = _ref.iconColor,
44
- rtlFlip = _ref.rtlFlip,
45
- rest = _objectWithoutProperties(_ref, _excluded);
46
- var label = react.useMemo(function () {
47
- if (!utilities.isNil(value)) {
48
- if (utilities.isNumber(value) && max && value > max) {
49
- return "".concat(max, "+");
50
- }
51
- return "".concat(value);
68
+ props = _objectWithoutProperties(_ref, _excluded);
69
+ // Render the appropriate badge shape based on which mode is active
70
+ var el = react.useMemo(function () {
71
+ if (icon) {
72
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
73
+ className: utilities.cn("fabric-badgeIcon", "px-[0.325em] py-[0.25em] bg-(--bg) text-(--color) rounded-full leading-0"),
74
+ children: /*#__PURE__*/jsxRuntime.jsx(Icon.Icon, {
75
+ icon: icon
76
+ })
77
+ });
52
78
  }
53
- }, [value, max]);
54
- var innerRef = react.useMemo(function () {
55
- return utilities.mergeRefs(ref, children === null || children === void 0 ? void 0 : children.props.ref);
56
- }, [ref, children === null || children === void 0 ? void 0 : children.props.ref]);
57
-
58
- /**
59
- * wrap children in a relative div to float badge, wrapper allows for floating a badge on elements with overflow hidden
60
- */
61
- return /*#__PURE__*/jsxRuntime.jsxs("div", {
62
- className: classNames(forButton ? "contents" : "relative", block ? "block" : "inline-block"),
63
- children: [children && /*#__PURE__*/react.cloneElement(children, _objectSpread(_objectSpread({}, rest), {}, {
64
- ref: innerRef
65
- })), (!!ping || label) && /*#__PURE__*/jsxRuntime.jsxs("div", {
66
- "data-ref": "badge",
67
- "data-ping": ping,
68
- "data-placement": placement,
69
- className: classNames(Badge_module.badge, className, "inline-block p-px min-w-2 min-h-2 text-center select-none rounded-full leading-none z-5 pointer-events-none", forButton && !placement ? "relative" : "absolute"),
70
- children: [label && /*#__PURE__*/jsxRuntime.jsx("span", {
71
- className: "p-1",
72
- children: label
73
- }), icon && /*#__PURE__*/jsxRuntime.jsx(Icon.Icon, {
74
- icon: icon,
75
- bg: iconBg,
76
- color: iconColor,
77
- rtlFlip: rtlFlip
78
- })]
79
- })]
80
- });
81
- };
79
+ if (value) {
80
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
81
+ className: utilities.cn("fabric-badgeValue", "px-[0.5em] py-[0.25em] leading-none bg-(--bg) text-(--color) rounded-full"),
82
+ children: value
83
+ });
84
+ }
85
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
86
+ className: utilities.cn("fabric-badgePing", "size-2 bg-(--bg) rounded-full", ping && "animate-ping")
87
+ });
88
+ }, [icon, value, ping]);
89
+ return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({}, props), {}, {
90
+ "data-ref": "badge",
91
+ role: "presentation",
92
+ className: utilities.cn("fabric-badge", "size-fit relative", className),
93
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
94
+ className: utilities.cn("fabric-badgeContainer", "rounded-full text-[0.625em] select-none pointer-events-none bg-(--bg) size-fit", !inline && PLACEMENT_STYLES[placement])
95
+ // Set CSS custom properties so child elements can reference badge colors
96
+ ,
97
+ style: {
98
+ "--color": getColor.getColor(color),
99
+ "--bg": getColor.getColor(bg)
100
+ },
101
+ children: el
102
+ }), children]
103
+ }));
104
+ }
82
105
 
83
106
  exports.Badge = Badge;
84
- exports.getBadgeProps = getBadgeProps;