@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
@@ -2,16 +2,67 @@
2
2
 
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
5
- import classNames from 'classnames';
6
- import { Children, cloneElement } from 'react';
7
- import classes from './Button.module.css';
5
+ import { cn } from '@react-fabric/utilities';
6
+ import { isValidElement, cloneElement } from 'react';
7
+ import { cloneChildren } from '../../utils/cloneElement.js';
8
8
  import { jsx } from 'react/jsx-runtime';
9
9
 
10
- var _excluded = ["vertical", "className", "children", "variant", "rounded", "disabled", "fullWidth", "color", "size"];
10
+ var _excluded = ["ref", "vertical", "className", "children", "variant", "rounded", "disabled", "fullWidth", "color", "size", "onClick"];
11
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), !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; }
13
- var ButtonGroup = function ButtonGroup(_ref) {
14
- var vertical = _ref.vertical,
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
+ * A container component that renders a group of related buttons with shared styling and behavior.
15
+ *
16
+ * ButtonGroup propagates common button properties (variant, color, size, rounded, disabled)
17
+ * to all direct child `<Button>` elements, ensuring visual consistency across the group.
18
+ * It also coordinates click handling by intercepting each child's `onClick` and invoking
19
+ * the group-level `onClick` callback with the clicked button's `value` prop — making it
20
+ * ideal for toggle groups, radio-style selections, and multi-select toolbars.
21
+ *
22
+ * @template T - The type of the `value` prop expected by child buttons (defaults to `string`).
23
+ *
24
+ * @example
25
+ * ```tsx
26
+ * // Single-select toggle group
27
+ * const [mode, setMode] = useState<"day" | "week" | "month">("day");
28
+ *
29
+ * <ButtonGroup
30
+ * value={mode}
31
+ * onClick={(v) => setMode(v ?? "day")}
32
+ * variant="outlined"
33
+ * color="primary"
34
+ * size="sm"
35
+ * >
36
+ * <Button value="day">Day</Button>
37
+ * <Button value="week">Week</Button>
38
+ * <Button value="month">Month</Button>
39
+ * </ButtonGroup>
40
+ *
41
+ * @example
42
+ * ```tsx
43
+ * // Multi-select with vertical layout
44
+ * const [tags, setTags] = useState<string[]>([]);
45
+ *
46
+ * <ButtonGroup
47
+ * vertical
48
+ * variant="soft"
49
+ * color="info"
50
+ * onClick={(tag) =>
51
+ * setTags((prev) =>
52
+ * prev.includes(tag!) ? prev.filter((t) => t !== tag) : [...prev, tag!]
53
+ * )
54
+ * }
55
+ * >
56
+ * <Button value="react">React</Button>
57
+ * <Button value="typescript">TypeScript</Button>
58
+ * <Button value="tailwind">Tailwind</Button>
59
+ * </ButtonGroup>
60
+ * ```
61
+ */
62
+ function ButtonGroup(_ref) {
63
+ var _cloneChildren;
64
+ var ref = _ref.ref,
65
+ vertical = _ref.vertical,
15
66
  className = _ref.className,
16
67
  children = _ref.children,
17
68
  variant = _ref.variant,
@@ -20,22 +71,36 @@ var ButtonGroup = function ButtonGroup(_ref) {
20
71
  fullWidth = _ref.fullWidth,
21
72
  color = _ref.color,
22
73
  size = _ref.size,
23
- aria = _objectWithoutProperties(_ref, _excluded);
24
- return /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({
25
- "data-ref": "buttonGroup",
26
- className: classNames(classes.buttonGroup, className, fullWidth ? "flex" : "inline-flex", "flex-nowrap align-middle rounded", vertical && classes.vertical, vertical && "flex-col items-stretch")
27
- }, aria), {}, {
28
- children: Children.map(children, function (child) {
29
- return /*#__PURE__*/cloneElement(child, _objectSpread({
30
- color: color,
31
- size: size,
32
- variant: variant,
33
- disabled: disabled,
34
- rounded: rounded,
35
- fullWidth: fullWidth
36
- }, child.props));
74
+ onClick = _ref.onClick,
75
+ props = _objectWithoutProperties(_ref, _excluded);
76
+ // Create a click handler that invokes both the group-level onClick and the child's own onClick
77
+ var clickHandler = function clickHandler(childValue, cb) {
78
+ return function (e) {
79
+ onClick === null || onClick === void 0 || onClick(childValue, e);
80
+ cb === null || cb === void 0 || cb(e);
81
+ };
82
+ };
83
+ return /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({}, props), {}, {
84
+ ref: ref,
85
+ className: cn("fabric-buttonGroup", className, "flex-nowrap align-middle is-vertical:flex-col", fullWidth ? "flex" : "inline-flex"),
86
+ "data-vertical": vertical,
87
+ children: (_cloneChildren = cloneChildren(children)) === null || _cloneChildren === void 0 ? void 0 : _cloneChildren.map(function (child) {
88
+ if (/*#__PURE__*/isValidElement(child)) {
89
+ // Cast to expected shape and clone with propagated group-level props
90
+ var childEl = child;
91
+ return /*#__PURE__*/cloneElement(childEl, _objectSpread(_objectSpread({
92
+ color: color,
93
+ size: size,
94
+ variant: variant,
95
+ disabled: disabled,
96
+ rounded: rounded
97
+ }, childEl.props), {}, {
98
+ onClick: clickHandler(childEl.props.value, childEl.props.onClick)
99
+ }));
100
+ }
101
+ return child;
37
102
  })
38
103
  }));
39
- };
104
+ }
40
105
 
41
106
  export { ButtonGroup };
@@ -4,35 +4,48 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
5
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
6
6
  import { useFloating, autoUpdate, shift, flip, offset, arrow, useClick, useDismiss, useInteractions, FloatingPortal, FloatingFocusManager, FloatingArrow } from '@floating-ui/react';
7
- import { mergeRefs } from '@react-fabric/utilities';
8
- import classNames from 'classnames';
9
- import { useRef, useState, useCallback, useEffect, useMemo, Fragment } from 'react';
7
+ import { mergeRefs, cn } from '@react-fabric/utilities';
8
+ import { useRef, useState, useEffect, useMemo, Fragment } from 'react';
10
9
  import { useTranslation } from 'react-i18next';
11
10
  import { Button } from './Button.js';
12
- import { jsx, jsxs } from 'react/jsx-runtime';
11
+ import { jsxs, jsx } from 'react/jsx-runtime';
13
12
 
14
- var _excluded = ["ref", "message", "color", "okLabel", "cancelLabel", "onClick", "loading", "placement", "actionMessage", "showActionDone", "showActionDoneEvent"],
15
- _excluded2 = ["ref"];
13
+ var _excluded = ["as", "ref", "message", "color", "okLabel", "cancelLabel", "showActionDoneEvent", "onClick", "loading", "placement"];
16
14
  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; }
17
- 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
+ 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; }
18
16
  /**
19
- * Button with confirmation dropdown
17
+ * A button that shows a confirmation dialog when clicked, allowing the user to confirm or cancel an action.
18
+ * It supports custom messages, labels, and loading states.
19
+ * This component is useful for actions that require user confirmation, such as deleting items or submitting forms.
20
+ * It uses the Floating UI library to manage the positioning of the confirmation dialog, ensuring it appears correctly relative to the button.
21
+ * It also supports custom placement of the dialog, and can display an action message when the action is completed.
22
+ *
23
+ * @example
24
+ * ```jsx
25
+ * <ConfirmButton
26
+ * message="Are you sure you want to delete this item?"
27
+ * onClick={(confirmed) => {
28
+ * if (confirmed) {
29
+ * // Perform action
30
+ * }
31
+ * }}
32
+ * />
33
+ * ```
20
34
  */
21
- var ConfirmButton = function ConfirmButton(_ref) {
22
- var ref = _ref.ref,
23
- message = _ref.message,
24
- color = _ref.color,
25
- okLabel = _ref.okLabel,
26
- cancelLabel = _ref.cancelLabel,
27
- onClick = _ref.onClick,
28
- loading = _ref.loading,
29
- _ref$placement = _ref.placement,
30
- placement = _ref$placement === void 0 ? "bottom" : _ref$placement,
31
- actionMessage = _ref.actionMessage,
32
- showActionDone = _ref.showActionDone,
33
- _ref$showActionDoneEv = _ref.showActionDoneEvent,
34
- showActionDoneEvent = _ref$showActionDoneEv === void 0 ? "click" : _ref$showActionDoneEv,
35
- props = _objectWithoutProperties(_ref, _excluded);
35
+ var ConfirmButton = function ConfirmButton(props) {
36
+ var _refs$domReference$cu, _refs$domReference$cu2;
37
+ var as = props.as,
38
+ ref = props.ref,
39
+ message = props.message,
40
+ color = props.color,
41
+ okLabel = props.okLabel,
42
+ cancelLabel = props.cancelLabel,
43
+ showActionDoneEvent = props.showActionDoneEvent,
44
+ onClick = props.onClick,
45
+ loading = props.loading,
46
+ _props$placement = props.placement,
47
+ placement = _props$placement === void 0 ? "bottom" : _props$placement,
48
+ buttonProps = _objectWithoutProperties(props, _excluded);
36
49
  var _useTranslation = useTranslation("core"),
37
50
  t = _useTranslation.t;
38
51
  var arrowRef = useRef(null);
@@ -48,18 +61,18 @@ var ConfirmButton = function ConfirmButton(_ref) {
48
61
  _useState6 = _slicedToArray(_useState5, 2),
49
62
  actionDone = _useState6[0],
50
63
  setActionDone = _useState6[1];
51
- var clickHandler = useCallback(function (e) {
64
+ var clickHandler = function clickHandler(e) {
52
65
  setBusy(e);
53
66
  var ret = onClick === null || onClick === void 0 ? void 0 : onClick(e);
54
- if (e) {
67
+ if (ret) {
55
68
  void Promise.resolve(ret).then(function (b) {
56
69
  setBusy(false);
57
- if (b !== false && actionMessage && showActionDoneEvent === "click") {
70
+ if (b !== false && showActionDoneEvent === "click") {
58
71
  setActionDone(true);
59
72
  }
60
73
  });
61
74
  }
62
- }, [onClick, actionMessage, showActionDoneEvent]);
75
+ };
63
76
  useEffect(function () {
64
77
  if (actionDone) {
65
78
  var timer = setTimeout(function () {
@@ -97,46 +110,46 @@ var ConfirmButton = function ConfirmButton(_ref) {
97
110
  var _useInteractions = useInteractions([dismiss, click]),
98
111
  getReferenceProps = _useInteractions.getReferenceProps,
99
112
  getFloatingProps = _useInteractions.getFloatingProps;
100
- var ButtonWrapper = useCallback(function (_ref2) {
101
- var ref = _ref2.ref,
102
- props = _objectWithoutProperties(_ref2, _excluded2);
103
- return /*#__PURE__*/jsx(Button, _objectSpread({
104
- ref: ref
105
- }, props));
106
- }, []);
107
113
  var innerRef = useMemo(function () {
108
- return mergeRefs(ref, refs.setReference);
109
- }, [ref, refs.setReference]);
114
+ return mergeRefs(ref, refs.reference);
115
+ }, [ref, refs.reference]);
110
116
  return /*#__PURE__*/jsxs(Fragment, {
111
- children: [/*#__PURE__*/jsx(ButtonWrapper, _objectSpread(_objectSpread(_objectSpread({}, props), {}, {
117
+ children: [/*#__PURE__*/jsx(Button, _objectSpread(_objectSpread(_objectSpread({
118
+ as: as
119
+ }, buttonProps), {}, {
112
120
  color: color,
113
121
  loading: busy || loading,
114
- showActionDone: actionDone || showActionDone,
122
+ showActionDone: actionDone,
115
123
  showActionDoneEvent: "manual",
116
- actionMessage: actionMessage,
117
124
  ref: innerRef
118
125
  }, getReferenceProps()), {}, {
119
126
  "data-dropdown-open": isOpen
120
127
  })), isOpen && /*#__PURE__*/jsx(FloatingPortal, {
128
+ root: (_refs$domReference$cu = (_refs$domReference$cu2 = refs.domReference.current) === null || _refs$domReference$cu2 === void 0 ? void 0 : _refs$domReference$cu2.closest(".theme-base")) !== null && _refs$domReference$cu !== void 0 ? _refs$domReference$cu : undefined,
121
129
  children: /*#__PURE__*/jsx(FloatingFocusManager, {
122
- modal: true,
123
130
  context: context,
124
131
  children: /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({
125
132
  "data-color": color,
126
- className: classNames("select-none not-italic rounded-capped shadow-lg outline outline-muted bg-base"),
127
- ref: refs.setFloating,
128
- style: floatingStyles
133
+ className: cn("select-none not-italic rounded-capped shadow-lg outline outline-muted bg-default"),
134
+ ref: function ref(el) {
135
+ return refs.setFloating(el);
136
+ },
137
+ style: _objectSpread({
138
+ zIndex: "var(--z-popover)"
139
+ }, floatingStyles)
129
140
  }, getFloatingProps()), {}, {
130
141
  children: [/*#__PURE__*/jsxs("div", {
131
142
  className: "font-medium ",
132
143
  children: [/*#__PURE__*/jsx("p", {
133
144
  className: "py-2 px-4",
145
+ "data-ref": "confirmMessage",
134
146
  children: message
135
147
  }), /*#__PURE__*/jsxs("div", {
136
148
  className: "flex justify-end py-2 px-4 gap-2",
137
149
  children: [/*#__PURE__*/jsx(Button, {
138
150
  size: "sm",
139
151
  variant: "link",
152
+ "data-ref": "confirmCancel",
140
153
  color: color,
141
154
  onClick: function onClick() {
142
155
  return [clickHandler(false), setIsOpen(false)];
@@ -147,6 +160,7 @@ var ConfirmButton = function ConfirmButton(_ref) {
147
160
  variant: "solid",
148
161
  color: color,
149
162
  autoFocus: true,
163
+ "data-ref": "confirmOk",
150
164
  onClick: function onClick() {
151
165
  return [clickHandler(true), setIsOpen(false)];
152
166
  },
@@ -157,7 +171,7 @@ var ConfirmButton = function ConfirmButton(_ref) {
157
171
  ref: arrowRef,
158
172
  context: context,
159
173
  strokeWidth: 0.5,
160
- className: "fill-base stroke-muted"
174
+ className: "fill-default stroke-muted"
161
175
  })]
162
176
  }))
163
177
  })
@@ -3,17 +3,58 @@
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
5
5
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
6
- import { isArray, EMPTY_ARRAY } from '@react-fabric/utilities';
7
- import classNames from 'classnames';
8
- import { useMemo, useCallback, Children, cloneElement } from 'react';
6
+ import { isArray, cn, EMPTY_ARRAY } from '@react-fabric/utilities';
7
+ import { isValidElement, cloneElement } from 'react';
9
8
  import { useControlledValue } from '../../hooks/useControlledValue.js';
10
- import classes from './Button.module.css';
9
+ import { cloneChildren } from '../../utils/cloneElement.js';
11
10
  import { jsx } from 'react/jsx-runtime';
12
11
 
13
12
  var _excluded = ["vertical", "className", "children", "variant", "rounded", "disabled", "fullWidth", "color", "size", "value", "onChange"];
14
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; }
15
- 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; }
16
- var ToggleButtonGroup = function ToggleButtonGroup(_ref) {
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; }
15
+ /**
16
+ * A composite component that renders a group of toggle buttons with shared styling
17
+ * and selection behavior.
18
+ *
19
+ * Automatically switches between single-select (radio-like) and multi-select
20
+ * (checkbox-like) modes based on the `value` prop: a scalar value enables radio
21
+ * mode (one active button), while an array enables checkbox mode (multiple active).
22
+ *
23
+ * All child buttons receive consistent `color`, `size`, `variant`, `disabled`,
24
+ * and `rounded` props, while each button's own `value` and `onClick` are preserved
25
+ * and extended with the group's selection logic.
26
+ *
27
+ * @example
28
+ * ```jsx
29
+ * // Single-select (radio-like)
30
+ * <ToggleButtonGroup
31
+ * value={selected}
32
+ * onChange={(v) => setSelected(v)}
33
+ * variant="outlined"
34
+ * color="primary"
35
+ * size="md"
36
+ * >
37
+ * <Button value="a">A</Button>
38
+ * <Button value="b">B</Button>
39
+ * </ToggleButtonGroup>
40
+ *
41
+ * // Multi-select (checkbox-like)
42
+ * <ToggleButtonGroup
43
+ * value={selected}
44
+ * onChange={(v) => setSelected(v)}
45
+ * variant="outlined"
46
+ * color="primary"
47
+ * rounded
48
+ * fullWidth
49
+ * >
50
+ * <Button value="a">A</Button>
51
+ * <Button value="b">B</Button>
52
+ * <Button value="c">C</Button>
53
+ * </ToggleButtonGroup>
54
+ * ```
55
+ */
56
+ function ToggleButtonGroup(_ref) {
57
+ var _cloneChildren;
17
58
  var vertical = _ref.vertical,
18
59
  className = _ref.className,
19
60
  children = _ref.children,
@@ -25,44 +66,55 @@ var ToggleButtonGroup = function ToggleButtonGroup(_ref) {
25
66
  size = _ref.size,
26
67
  value = _ref.value,
27
68
  onChange = _ref.onChange,
28
- aria = _objectWithoutProperties(_ref, _excluded);
29
- var isMultiple = useMemo(function () {
30
- return isArray(value);
31
- }, [value]);
32
- var _useControlledValue = useControlledValue(value, isArray(value) ? EMPTY_ARRAY : ""),
69
+ props = _objectWithoutProperties(_ref, _excluded);
70
+ // Determine selection mode: array value = multi-select, scalar = single-select
71
+ var isMultiple = isArray(value);
72
+ // Controlled value with empty array / null as defaults for multi / single mode
73
+ var _useControlledValue = useControlledValue(value, isMultiple ? EMPTY_ARRAY : undefined),
33
74
  currentValue = _useControlledValue.currentValue,
34
75
  updateValue = _useControlledValue.updateValue;
35
- var clickHandler = useCallback(function (cb) {
76
+
77
+ // Toggle handler: toggles the child's value in/out of the selected set
78
+ var clickHandler = function clickHandler(childValue, cb) {
36
79
  return function (e) {
37
- var newValue = "".concat(e.currentTarget.dataset.value);
80
+ var newValue;
38
81
  if (isArray(currentValue)) {
39
- if (currentValue.includes(newValue)) newValue = currentValue.filter(function (v) {
40
- return v !== newValue;
41
- });else newValue = [].concat(_toConsumableArray(currentValue), [newValue]);
82
+ // Multi-select: remove if already selected, otherwise add
83
+ if (currentValue.includes(childValue)) newValue = currentValue.filter(function (v) {
84
+ return v !== childValue;
85
+ });else newValue = [].concat(_toConsumableArray(currentValue), [childValue]);
86
+ } else {
87
+ // Single-select: toggle to this value (replaces previous)
88
+ newValue = childValue;
42
89
  }
43
90
  updateValue(newValue);
91
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
44
92
  onChange === null || onChange === void 0 || onChange(newValue);
45
93
  cb === null || cb === void 0 || cb(e);
46
94
  };
47
- }, [currentValue, onChange]);
48
- return /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({
49
- className: classNames(classes.buttonGroup, className, fullWidth ? "flex" : "inline-flex", "flex-nowrap align-middle", vertical && classes.vertical, vertical && "flex-col")
50
- }, aria), {}, {
51
- children: Children.map(children, function (child) {
52
- return /*#__PURE__*/cloneElement(child, _objectSpread(_objectSpread({
53
- color: color,
54
- size: size,
55
- variant: variant,
56
- disabled: disabled,
57
- rounded: rounded,
58
- fullWidth: fullWidth
59
- }, child.props), {}, {
60
- onClick: clickHandler(child.props.onClick),
61
- "data-value": child.props.value,
62
- "data-checked": isMultiple ? currentValue.includes(child.props.value) : currentValue === child.props.value
63
- }));
95
+ };
96
+ return /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({}, props), {}, {
97
+ className: cn("fabric-buttonGroup", "flex-nowrap align-middle is-vertical:flex-col", className, fullWidth ? "flex" : "inline-flex"),
98
+ "data-vertical": vertical,
99
+ children: (_cloneChildren = cloneChildren(children)) === null || _cloneChildren === void 0 ? void 0 : _cloneChildren.map(function (child) {
100
+ if (/*#__PURE__*/isValidElement(child)) {
101
+ var childEl = child;
102
+ return /*#__PURE__*/cloneElement(childEl, _objectSpread(_objectSpread({
103
+ color: color,
104
+ size: size,
105
+ variant: variant,
106
+ disabled: disabled,
107
+ rounded: rounded
108
+ }, childEl.props), {}, {
109
+ activeClickable: isMultiple,
110
+ onClick: clickHandler(childEl.props.value, childEl.props.onClick),
111
+ // Check if this button is currently active based on selection mode
112
+ active: isArray(currentValue) ? currentValue === null || currentValue === void 0 ? void 0 : currentValue.includes(childEl.props.value) : currentValue === childEl.props.value
113
+ }));
114
+ }
115
+ return child;
64
116
  })
65
117
  }));
66
- };
118
+ }
67
119
 
68
120
  export { ToggleButtonGroup };
@@ -2,54 +2,85 @@
2
2
 
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
5
- import classNames from 'classnames';
6
- import { CoreIcons } from '../../types/icons.js';
7
- import { getBgClass, getColorClass, getBorderClass } from '../../utils/getColor.js';
8
- import '@react-fabric/utilities';
9
- import { Icon } from '../icon/Icon.js';
5
+ import { cn } from '@react-fabric/utilities';
6
+ import 'react';
10
7
  import { jsxs, jsx } from 'react/jsx-runtime';
8
+ import { getIconProps } from '../../utils/getIconProps.js';
9
+ import { Icon } from '../icon/Icon.js';
11
10
 
12
- var _excluded = ["children", "color", "legend", "title", "icon", "border", "onClose", "className"];
11
+ var _excluded = ["children", "color", "classNames", "legend", "title", "icon", "border", "onClose", "className"];
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 Callout = function Callout(_ref) {
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
+ * A component that displays a callout box with an optional title, icon, and legend.
16
+ * It can be used to highlight important information, warnings, or notices.
17
+ * The callout can be styled with different colors and border styles, and it supports a close action.
18
+ * This component is useful for drawing attention to specific content within a page or application,
19
+ * such as alerts, notifications, or important messages.
20
+ *
21
+ * @example
22
+ * ```jsx
23
+ * <Callout
24
+ * color="primary"
25
+ * legend="Important Notice"
26
+ * title="Attention Required"
27
+ * icon="info"
28
+ * onClose={() => console.log("Callout closed")}
29
+ * >
30
+ * This is an important message that requires your attention.
31
+ * </Callout>
32
+ * // Renders a callout box with a primary color, an icon, a title, and a close button.
33
+ * ```
34
+ */
35
+ function Callout(_ref) {
16
36
  var children = _ref.children,
17
37
  _ref$color = _ref.color,
18
- color = _ref$color === void 0 ? "tint" : _ref$color,
38
+ color = _ref$color === void 0 ? "default" : _ref$color,
39
+ classNames = _ref.classNames,
19
40
  legend = _ref.legend,
20
41
  title = _ref.title,
21
42
  icon = _ref.icon,
22
- border = _ref.border,
43
+ _ref$border = _ref.border,
44
+ border = _ref$border === void 0 ? "solid" : _ref$border,
23
45
  onClose = _ref.onClose,
24
46
  className = _ref.className,
25
- aria = _objectWithoutProperties(_ref, _excluded);
47
+ props = _objectWithoutProperties(_ref, _excluded);
26
48
  return /*#__PURE__*/jsxs("fieldset", _objectSpread(_objectSpread({
27
- className: classNames(className, "block rounded-capped border max-w-full relative overflow-hidden mb-4", getBgClass(color + "-50"), getColorClass(color + "-700"), getBorderClass(color + "-300"), border === "dashed" && "border-dashed", border === "dotted" && "border-dotted")
28
- }, aria), {}, {
49
+ className: cn("fabric-callout block rounded-capped max-w-full relative overflow-hidden", className, border === "dashed" && "border-dashed", border === "dotted" && "border-dotted", border != "solid" ? "border-[1.5px]" : "border"),
50
+ style: {
51
+ "--color": "var(--color-".concat(color, ")")
52
+ }
53
+ }, props), {}, {
29
54
  children: [legend && /*#__PURE__*/jsx("legend", {
30
- className: "px-2 mx-4 font-medium",
55
+ className: cn("fabric-calloutLegend px-2 mx-4 font-medium", classNames === null || classNames === void 0 ? void 0 : classNames.legend),
56
+ "data-ref": "calloutLegend",
31
57
  children: legend
32
58
  }), /*#__PURE__*/jsxs("div", {
33
- className: classNames("break-words whitespace-break-spaces p-2"),
59
+ className: cn("fabric-calloutContent break-words whitespace-break-spaces p-2"),
34
60
  children: [/*#__PURE__*/jsxs("div", {
35
61
  className: "flex flex-nowrap items-center text-xl pe-4 gap-2 mb-4 empty:mb-0",
36
- children: [icon && /*#__PURE__*/jsx(Icon, {
37
- icon: icon
38
- }), title && /*#__PURE__*/jsx("p", {
62
+ children: [icon && /*#__PURE__*/jsx(Icon, _objectSpread(_objectSpread({}, getIconProps(icon)), {}, {
63
+ "data-ref": "calloutIcon"
64
+ })), title && /*#__PURE__*/jsx("p", {
39
65
  className: "flex-1",
66
+ "data-ref": "calloutTitle",
40
67
  children: title
41
68
  })]
42
69
  }), /*#__PURE__*/jsx("div", {
43
- className: "pe-4",
70
+ className: "fabric-calloutMessage pe-4",
44
71
  children: children
45
72
  })]
46
- }), onClose && /*#__PURE__*/jsx(Icon, {
47
- size: "md",
48
- className: classNames("absolute end-2", legend ? "top-0" : "top-2"),
49
- icon: CoreIcons.close,
50
- onClick: onClose
73
+ }), onClose && /*#__PURE__*/jsx("div", {
74
+ role: "none",
75
+ className: cn("absolute inset-e-2 text-tint-500 hover:text-tint-700 cursor-pointer", legend ? "top-0" : "top-2"),
76
+ "data-ref": "calloutClose",
77
+ onClick: onClose,
78
+ children: /*#__PURE__*/jsx(Icon, {
79
+ size: "md",
80
+ icon: "icon-[mdi--close]"
81
+ })
51
82
  })]
52
83
  }));
53
- };
84
+ }
54
85
 
55
86
  export { Callout };