@react-fabric/core 1.0.0-beta.0

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 (453) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -0
  3. package/css/flags.rect.css +1607 -0
  4. package/css/flags.wavy.css +1606 -0
  5. package/css/index.js +250 -0
  6. package/css/reset/_gradients.css +51 -0
  7. package/css/reset/_reset.css +407 -0
  8. package/css/reset/_text.css +179 -0
  9. package/css/reset/_theme.css +110 -0
  10. package/css/reset/index.css +27 -0
  11. package/css/styles.css +31 -0
  12. package/css/tailwind/colors.ts +158 -0
  13. package/dist/cjs/components/actionLabel/ActionLabel.js +56 -0
  14. package/dist/cjs/components/actionLabel/ActionLabel.module.css +1 -0
  15. package/dist/cjs/components/animations/Animations.js +135 -0
  16. package/dist/cjs/components/animations/Animations.module.css +1 -0
  17. package/dist/cjs/components/avatar/Avatar.js +144 -0
  18. package/dist/cjs/components/avatar/Avatar.module.css +1 -0
  19. package/dist/cjs/components/avatar/AvatarGroup.js +74 -0
  20. package/dist/cjs/components/badge/Badge.js +82 -0
  21. package/dist/cjs/components/badge/Badge.module.css +1 -0
  22. package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +71 -0
  23. package/dist/cjs/components/breadcrumbs/Breadcrumbs.module.css +1 -0
  24. package/dist/cjs/components/button/Button.js +170 -0
  25. package/dist/cjs/components/button/Button.module.css +1 -0
  26. package/dist/cjs/components/button/ButtonGroup.js +41 -0
  27. package/dist/cjs/components/button/ConfirmButton.js +166 -0
  28. package/dist/cjs/components/button/ToggleButtonGroup.js +68 -0
  29. package/dist/cjs/components/callout/Callout.js +54 -0
  30. package/dist/cjs/components/card/Card.js +62 -0
  31. package/dist/cjs/components/card/Card.module.css +1 -0
  32. package/dist/cjs/components/card/CardCover.js +48 -0
  33. package/dist/cjs/components/chip/Chip.js +94 -0
  34. package/dist/cjs/components/chip/Chip.module.css +1 -0
  35. package/dist/cjs/components/collapsable/Collapsable.js +84 -0
  36. package/dist/cjs/components/collapsable/Collapsable.module.css +1 -0
  37. package/dist/cjs/components/divider/Divider.js +65 -0
  38. package/dist/cjs/components/dropdown/Dropdown.js +180 -0
  39. package/dist/cjs/components/dropdown/Dropdown.module.css +1 -0
  40. package/dist/cjs/components/dropdown/DropdownTool.js +26 -0
  41. package/dist/cjs/components/empty/EmptyContent.js +92 -0
  42. package/dist/cjs/components/icon/Icon.js +106 -0
  43. package/dist/cjs/components/icon/Icon.module.css +1 -0
  44. package/dist/cjs/components/media/Media.js +149 -0
  45. package/dist/cjs/components/media/Media.module.css +1 -0
  46. package/dist/cjs/components/menu/ContextMenu.js +84 -0
  47. package/dist/cjs/components/menu/Menu.js +204 -0
  48. package/dist/cjs/components/menu/Menu.module.css +1 -0
  49. package/dist/cjs/components/menu/MenuItem.js +119 -0
  50. package/dist/cjs/components/meter/Meter.js +41 -0
  51. package/dist/cjs/components/meter/Meter.module.css +1 -0
  52. package/dist/cjs/components/navigator/Navigator.js +54 -0
  53. package/dist/cjs/components/panel/Panel.js +125 -0
  54. package/dist/cjs/components/panel/Panel.module.css +1 -0
  55. package/dist/cjs/components/panel/PanelGroup.js +50 -0
  56. package/dist/cjs/components/panel/PanelStack.js +85 -0
  57. package/dist/cjs/components/progress/Progress.module.css +1 -0
  58. package/dist/cjs/components/progress/ProgressBar.js +62 -0
  59. package/dist/cjs/components/progress/ProgressCircle.js +96 -0
  60. package/dist/cjs/components/tabpanel/Tab.js +78 -0
  61. package/dist/cjs/components/tabpanel/TabPanel.js +77 -0
  62. package/dist/cjs/components/tabpanel/TabPanel.module.css +1 -0
  63. package/dist/cjs/context/Global.js +169 -0
  64. package/dist/cjs/context/NotificationCenter.js +254 -0
  65. package/dist/cjs/core/aside/Aside.js +152 -0
  66. package/dist/cjs/core/aside/Aside.module.css +1 -0
  67. package/dist/cjs/core/boundary/ErrorBoundary.js +140 -0
  68. package/dist/cjs/core/boundary/ErrorBoundary.module.css +1 -0
  69. package/dist/cjs/core/boundary/ErrorIcon.js +51 -0
  70. package/dist/cjs/core/content/Content.js +70 -0
  71. package/dist/cjs/core/content/Content.module.css +1 -0
  72. package/dist/cjs/core/headfoot/HeadFoot.js +62 -0
  73. package/dist/cjs/core/headfoot/HeadFoot.module.css +1 -0
  74. package/dist/cjs/core/page/Page.js +65 -0
  75. package/dist/cjs/core/page/Page.module.css +1 -0
  76. package/dist/cjs/core/responsive/Responsive.js +64 -0
  77. package/dist/cjs/core/responsive/Responsive.module.css +1 -0
  78. package/dist/cjs/core/section/Section.js +44 -0
  79. package/dist/cjs/core/section/Section.module.css +1 -0
  80. package/dist/cjs/core/theme/Theme.module.css +1 -0
  81. package/dist/cjs/core/theme/ThemeProvider.js +74 -0
  82. package/dist/cjs/core/viewport/Viewport.js +39 -0
  83. package/dist/cjs/core/viewport/Viewport.module.css +1 -0
  84. package/dist/cjs/hooks/useClientService.js +30 -0
  85. package/dist/cjs/hooks/useControlledValue.js +22 -0
  86. package/dist/cjs/hooks/useDebounce.js +56 -0
  87. package/dist/cjs/hooks/useEffectDebugger.js +113 -0
  88. package/dist/cjs/hooks/useIsDark.js +33 -0
  89. package/dist/cjs/hooks/useIsRtl.js +27 -0
  90. package/dist/cjs/hooks/useNavigator.js +36 -0
  91. package/dist/cjs/hooks/useOverlayService.js +55 -0
  92. package/dist/cjs/hooks/usePropToggle.js +40 -0
  93. package/dist/cjs/hooks/useResize.js +75 -0
  94. package/dist/cjs/hooks/useResizeObserver.js +38 -0
  95. package/dist/cjs/hooks/useStorage.js +44 -0
  96. package/dist/cjs/hotkeys/HotKey.js +47 -0
  97. package/dist/cjs/hotkeys/HotKeyLabel.js +52 -0
  98. package/dist/cjs/hotkeys/HotKeyWrapper.js +98 -0
  99. package/dist/cjs/hotkeys/commons.js +56 -0
  100. package/dist/cjs/i18n/ar.json.js +31 -0
  101. package/dist/cjs/i18n/en.json.js +46 -0
  102. package/dist/cjs/i18n/index.js +55 -0
  103. package/dist/cjs/index.js +162 -0
  104. package/dist/cjs/overlays/alert/Alert.js +163 -0
  105. package/dist/cjs/overlays/alert/Alert.module.css +1 -0
  106. package/dist/cjs/overlays/flyout/Flyout.js +152 -0
  107. package/dist/cjs/overlays/flyout/Flyout.module.css +1 -0
  108. package/dist/cjs/overlays/message/Message.js +84 -0
  109. package/dist/cjs/overlays/message/Message.module.css +1 -0
  110. package/dist/cjs/overlays/modal/Modal.js +132 -0
  111. package/dist/cjs/overlays/modal/Modal.module.css +1 -0
  112. package/dist/cjs/overlays/toast/Toast.js +166 -0
  113. package/dist/cjs/overlays/toast/Toast.module.css +1 -0
  114. package/dist/cjs/overlays/tooltip/Tooltip.js +133 -0
  115. package/dist/cjs/overlays/tooltip/Tooltip.module.css +1 -0
  116. package/dist/cjs/types/icons.js +197 -0
  117. package/dist/cjs/typography/Abbr.js +108 -0
  118. package/dist/cjs/typography/Copy.js +59 -0
  119. package/dist/cjs/typography/Link.js +55 -0
  120. package/dist/cjs/typography/Mark.js +86 -0
  121. package/dist/cjs/typography/Text.js +121 -0
  122. package/dist/cjs/typography/Title.js +58 -0
  123. package/dist/cjs/typography/Typography.module.css +1 -0
  124. package/dist/cjs/typography/types.js +42 -0
  125. package/dist/cjs/utils/calculateDimensions.js +51 -0
  126. package/dist/cjs/utils/getColor.js +52 -0
  127. package/dist/cjs/utils/nodeCheck.js +35 -0
  128. package/dist/esm/components/actionLabel/ActionLabel.js +56 -0
  129. package/dist/esm/components/actionLabel/ActionLabel.module.css +1 -0
  130. package/dist/esm/components/animations/Animations.js +131 -0
  131. package/dist/esm/components/animations/Animations.module.css +1 -0
  132. package/dist/esm/components/avatar/Avatar.js +144 -0
  133. package/dist/esm/components/avatar/Avatar.module.css +1 -0
  134. package/dist/esm/components/avatar/AvatarGroup.js +74 -0
  135. package/dist/esm/components/badge/Badge.js +81 -0
  136. package/dist/esm/components/badge/Badge.module.css +1 -0
  137. package/dist/esm/components/breadcrumbs/Breadcrumbs.js +71 -0
  138. package/dist/esm/components/breadcrumbs/Breadcrumbs.module.css +1 -0
  139. package/dist/esm/components/button/Button.js +170 -0
  140. package/dist/esm/components/button/Button.module.css +1 -0
  141. package/dist/esm/components/button/ButtonGroup.js +41 -0
  142. package/dist/esm/components/button/ConfirmButton.js +166 -0
  143. package/dist/esm/components/button/ToggleButtonGroup.js +68 -0
  144. package/dist/esm/components/callout/Callout.js +54 -0
  145. package/dist/esm/components/card/Card.js +62 -0
  146. package/dist/esm/components/card/Card.module.css +1 -0
  147. package/dist/esm/components/card/CardCover.js +48 -0
  148. package/dist/esm/components/chip/Chip.js +94 -0
  149. package/dist/esm/components/chip/Chip.module.css +1 -0
  150. package/dist/esm/components/collapsable/Collapsable.js +84 -0
  151. package/dist/esm/components/collapsable/Collapsable.module.css +1 -0
  152. package/dist/esm/components/divider/Divider.js +65 -0
  153. package/dist/esm/components/dropdown/Dropdown.js +179 -0
  154. package/dist/esm/components/dropdown/Dropdown.module.css +1 -0
  155. package/dist/esm/components/dropdown/DropdownTool.js +26 -0
  156. package/dist/esm/components/empty/EmptyContent.js +92 -0
  157. package/dist/esm/components/icon/Icon.js +106 -0
  158. package/dist/esm/components/icon/Icon.module.css +1 -0
  159. package/dist/esm/components/media/Media.js +148 -0
  160. package/dist/esm/components/media/Media.module.css +1 -0
  161. package/dist/esm/components/menu/ContextMenu.js +84 -0
  162. package/dist/esm/components/menu/Menu.js +204 -0
  163. package/dist/esm/components/menu/Menu.module.css +1 -0
  164. package/dist/esm/components/menu/MenuItem.js +119 -0
  165. package/dist/esm/components/meter/Meter.js +41 -0
  166. package/dist/esm/components/meter/Meter.module.css +1 -0
  167. package/dist/esm/components/navigator/Navigator.js +54 -0
  168. package/dist/esm/components/panel/Panel.js +125 -0
  169. package/dist/esm/components/panel/Panel.module.css +1 -0
  170. package/dist/esm/components/panel/PanelGroup.js +50 -0
  171. package/dist/esm/components/panel/PanelStack.js +85 -0
  172. package/dist/esm/components/progress/Progress.module.css +1 -0
  173. package/dist/esm/components/progress/ProgressBar.js +62 -0
  174. package/dist/esm/components/progress/ProgressCircle.js +96 -0
  175. package/dist/esm/components/tabpanel/Tab.js +78 -0
  176. package/dist/esm/components/tabpanel/TabPanel.js +77 -0
  177. package/dist/esm/components/tabpanel/TabPanel.module.css +1 -0
  178. package/dist/esm/context/Global.js +165 -0
  179. package/dist/esm/context/NotificationCenter.js +254 -0
  180. package/dist/esm/core/aside/Aside.js +152 -0
  181. package/dist/esm/core/aside/Aside.module.css +1 -0
  182. package/dist/esm/core/boundary/ErrorBoundary.js +140 -0
  183. package/dist/esm/core/boundary/ErrorBoundary.module.css +1 -0
  184. package/dist/esm/core/boundary/ErrorIcon.js +51 -0
  185. package/dist/esm/core/content/Content.js +70 -0
  186. package/dist/esm/core/content/Content.module.css +1 -0
  187. package/dist/esm/core/headfoot/HeadFoot.js +61 -0
  188. package/dist/esm/core/headfoot/HeadFoot.module.css +1 -0
  189. package/dist/esm/core/page/Page.js +65 -0
  190. package/dist/esm/core/page/Page.module.css +1 -0
  191. package/dist/esm/core/responsive/Responsive.js +62 -0
  192. package/dist/esm/core/responsive/Responsive.module.css +1 -0
  193. package/dist/esm/core/section/Section.js +44 -0
  194. package/dist/esm/core/section/Section.module.css +1 -0
  195. package/dist/esm/core/theme/Theme.module.css +1 -0
  196. package/dist/esm/core/theme/ThemeProvider.js +74 -0
  197. package/dist/esm/core/viewport/Viewport.js +39 -0
  198. package/dist/esm/core/viewport/Viewport.module.css +1 -0
  199. package/dist/esm/hooks/useClientService.js +30 -0
  200. package/dist/esm/hooks/useControlledValue.js +22 -0
  201. package/dist/esm/hooks/useDebounce.js +56 -0
  202. package/dist/esm/hooks/useEffectDebugger.js +111 -0
  203. package/dist/esm/hooks/useIsDark.js +33 -0
  204. package/dist/esm/hooks/useIsRtl.js +27 -0
  205. package/dist/esm/hooks/useNavigator.js +36 -0
  206. package/dist/esm/hooks/useOverlayService.js +55 -0
  207. package/dist/esm/hooks/usePropToggle.js +40 -0
  208. package/dist/esm/hooks/useResize.js +75 -0
  209. package/dist/esm/hooks/useResizeObserver.js +38 -0
  210. package/dist/esm/hooks/useStorage.js +43 -0
  211. package/dist/esm/hotkeys/HotKey.js +47 -0
  212. package/dist/esm/hotkeys/HotKeyLabel.js +52 -0
  213. package/dist/esm/hotkeys/HotKeyWrapper.js +96 -0
  214. package/dist/esm/hotkeys/commons.js +56 -0
  215. package/dist/esm/i18n/ar.json.js +27 -0
  216. package/dist/esm/i18n/en.json.js +41 -0
  217. package/dist/esm/i18n/index.js +55 -0
  218. package/dist/esm/index.js +75 -0
  219. package/dist/esm/overlays/alert/Alert.js +163 -0
  220. package/dist/esm/overlays/alert/Alert.module.css +1 -0
  221. package/dist/esm/overlays/flyout/Flyout.js +152 -0
  222. package/dist/esm/overlays/flyout/Flyout.module.css +1 -0
  223. package/dist/esm/overlays/message/Message.js +84 -0
  224. package/dist/esm/overlays/message/Message.module.css +1 -0
  225. package/dist/esm/overlays/modal/Modal.js +132 -0
  226. package/dist/esm/overlays/modal/Modal.module.css +1 -0
  227. package/dist/esm/overlays/toast/Toast.js +166 -0
  228. package/dist/esm/overlays/toast/Toast.module.css +1 -0
  229. package/dist/esm/overlays/tooltip/Tooltip.js +132 -0
  230. package/dist/esm/overlays/tooltip/Tooltip.module.css +1 -0
  231. package/dist/esm/types/icons.js +199 -0
  232. package/dist/esm/typography/Abbr.js +108 -0
  233. package/dist/esm/typography/Copy.js +59 -0
  234. package/dist/esm/typography/Link.js +55 -0
  235. package/dist/esm/typography/Mark.js +86 -0
  236. package/dist/esm/typography/Text.js +121 -0
  237. package/dist/esm/typography/Title.js +58 -0
  238. package/dist/esm/typography/Typography.module.css +1 -0
  239. package/dist/esm/typography/types.js +41 -0
  240. package/dist/esm/utils/calculateDimensions.js +50 -0
  241. package/dist/esm/utils/getColor.js +49 -0
  242. package/dist/esm/utils/nodeCheck.js +35 -0
  243. package/dist/types/components/actionLabel/ActionLabel.d.ts +21 -0
  244. package/dist/types/components/animations/Animations.d.ts +23 -0
  245. package/dist/types/components/avatar/Avatar.d.ts +48 -0
  246. package/dist/types/components/avatar/AvatarGroup.d.ts +24 -0
  247. package/dist/types/components/badge/Badge.d.ts +25 -0
  248. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +17 -0
  249. package/dist/types/components/button/Button.d.ts +94 -0
  250. package/dist/types/components/button/ButtonGroup.d.ts +34 -0
  251. package/dist/types/components/button/ConfirmButton.d.ts +27 -0
  252. package/dist/types/components/button/ToggleButtonGroup.d.ts +56 -0
  253. package/dist/types/components/callout/Callout.d.ts +28 -0
  254. package/dist/types/components/card/Card.d.ts +39 -0
  255. package/dist/types/components/card/CardCover.d.ts +16 -0
  256. package/dist/types/components/chip/Chip.d.ts +41 -0
  257. package/dist/types/components/collapsable/Collapsable.d.ts +43 -0
  258. package/dist/types/components/divider/Divider.d.ts +20 -0
  259. package/dist/types/components/dropdown/Dropdown.d.ts +50 -0
  260. package/dist/types/components/dropdown/DropdownTool.d.ts +8 -0
  261. package/dist/types/components/empty/EmptyContent.d.ts +21 -0
  262. package/dist/types/components/icon/Icon.d.ts +44 -0
  263. package/dist/types/components/index.d.ts +33 -0
  264. package/dist/types/components/media/Media.d.ts +37 -0
  265. package/dist/types/components/menu/ContextMenu.d.ts +7 -0
  266. package/dist/types/components/menu/Menu.d.ts +2 -0
  267. package/dist/types/components/menu/MenuItem.d.ts +4 -0
  268. package/dist/types/components/menu/types.d.ts +59 -0
  269. package/dist/types/components/meter/Meter.d.ts +12 -0
  270. package/dist/types/components/navigator/Navigator.d.ts +12 -0
  271. package/dist/types/components/panel/Panel.d.ts +59 -0
  272. package/dist/types/components/panel/PanelGroup.d.ts +12 -0
  273. package/dist/types/components/panel/PanelStack.d.ts +16 -0
  274. package/dist/types/components/progress/ProgressBar.d.ts +24 -0
  275. package/dist/types/components/progress/ProgressCircle.d.ts +16 -0
  276. package/dist/types/components/tabpanel/Tab.d.ts +41 -0
  277. package/dist/types/components/tabpanel/TabPanel.d.ts +41 -0
  278. package/dist/types/context/Global.d.ts +81 -0
  279. package/dist/types/context/NotificationCenter.d.ts +11 -0
  280. package/dist/types/core/aside/Aside.d.ts +52 -0
  281. package/dist/types/core/boundary/ErrorBoundary.d.ts +26 -0
  282. package/dist/types/core/boundary/ErrorIcon.d.ts +1 -0
  283. package/dist/types/core/content/Content.d.ts +15 -0
  284. package/dist/types/core/headfoot/HeadFoot.d.ts +24 -0
  285. package/dist/types/core/index.d.ts +9 -0
  286. package/dist/types/core/page/Page.d.ts +23 -0
  287. package/dist/types/core/responsive/Responsive.d.ts +53 -0
  288. package/dist/types/core/section/Section.d.ts +7 -0
  289. package/dist/types/core/theme/ThemeProvider.d.ts +37 -0
  290. package/dist/types/core/viewport/Viewport.d.ts +5 -0
  291. package/dist/types/hooks/useClientService.d.ts +1 -0
  292. package/dist/types/hooks/useControlledValue.d.ts +5 -0
  293. package/dist/types/hooks/useDebounce.d.ts +4 -0
  294. package/dist/types/hooks/useEffectDebugger.d.ts +4 -0
  295. package/dist/types/hooks/useIsDark.d.ts +1 -0
  296. package/dist/types/hooks/useIsRtl.d.ts +1 -0
  297. package/dist/types/hooks/useNavigator.d.ts +7 -0
  298. package/dist/types/hooks/useOverlayService.d.ts +10 -0
  299. package/dist/types/hooks/usePropToggle.d.ts +9 -0
  300. package/dist/types/hooks/useResize.d.ts +27 -0
  301. package/dist/types/hooks/useResizeObserver.d.ts +3 -0
  302. package/dist/types/hooks/useStorage.d.ts +2 -0
  303. package/dist/types/hotkeys/HotKey.d.ts +2 -0
  304. package/dist/types/hotkeys/HotKeyLabel.d.ts +2 -0
  305. package/dist/types/hotkeys/HotKeyWrapper.d.ts +11 -0
  306. package/dist/types/hotkeys/commons.d.ts +28 -0
  307. package/dist/types/i18n/index.d.ts +6 -0
  308. package/dist/types/index.d.ts +19 -0
  309. package/dist/types/overlays/alert/Alert.d.ts +33 -0
  310. package/dist/types/overlays/flyout/Flyout.d.ts +57 -0
  311. package/dist/types/overlays/index.d.ts +6 -0
  312. package/dist/types/overlays/message/Message.d.ts +21 -0
  313. package/dist/types/overlays/modal/Modal.d.ts +53 -0
  314. package/dist/types/overlays/toast/Toast.d.ts +33 -0
  315. package/dist/types/overlays/tooltip/Tooltip.d.ts +18 -0
  316. package/dist/types/types/icons.d.ts +194 -0
  317. package/dist/types/types/index.d.ts +140 -0
  318. package/dist/types/typography/Abbr.d.ts +22 -0
  319. package/dist/types/typography/Copy.d.ts +9 -0
  320. package/dist/types/typography/Link.d.ts +24 -0
  321. package/dist/types/typography/Mark.d.ts +18 -0
  322. package/dist/types/typography/Text.d.ts +35 -0
  323. package/dist/types/typography/Title.d.ts +29 -0
  324. package/dist/types/typography/index.d.ts +6 -0
  325. package/dist/types/typography/types.d.ts +2 -0
  326. package/dist/types/utils/calculateDimensions.d.ts +6 -0
  327. package/dist/types/utils/getColor.d.ts +4 -0
  328. package/dist/types/utils/index.d.ts +3 -0
  329. package/dist/types/utils/nodeCheck.d.ts +2 -0
  330. package/package.json +60 -0
  331. package/src/components/actionLabel/ActionLabel.module.css +38 -0
  332. package/src/components/actionLabel/ActionLabel.tsx +97 -0
  333. package/src/components/animations/Animations.module.css +253 -0
  334. package/src/components/animations/Animations.tsx +190 -0
  335. package/src/components/avatar/Avatar.module.css +90 -0
  336. package/src/components/avatar/Avatar.tsx +218 -0
  337. package/src/components/avatar/AvatarGroup.tsx +140 -0
  338. package/src/components/badge/Badge.module.css +165 -0
  339. package/src/components/badge/Badge.tsx +148 -0
  340. package/src/components/breadcrumbs/Breadcrumbs.module.css +189 -0
  341. package/src/components/breadcrumbs/Breadcrumbs.tsx +109 -0
  342. package/src/components/button/Button.module.css +375 -0
  343. package/src/components/button/Button.tsx +323 -0
  344. package/src/components/button/ButtonGroup.tsx +112 -0
  345. package/src/components/button/ConfirmButton.tsx +221 -0
  346. package/src/components/button/ToggleButtonGroup.tsx +161 -0
  347. package/src/components/callout/Callout.tsx +104 -0
  348. package/src/components/card/Card.module.css +152 -0
  349. package/src/components/card/Card.tsx +154 -0
  350. package/src/components/card/CardCover.tsx +87 -0
  351. package/src/components/chip/Chip.module.css +118 -0
  352. package/src/components/chip/Chip.tsx +201 -0
  353. package/src/components/collapsable/Collapsable.module.css +30 -0
  354. package/src/components/collapsable/Collapsable.tsx +153 -0
  355. package/src/components/divider/Divider.tsx +105 -0
  356. package/src/components/dropdown/Dropdown.module.css +39 -0
  357. package/src/components/dropdown/Dropdown.tsx +307 -0
  358. package/src/components/dropdown/DropdownTool.tsx +56 -0
  359. package/src/components/empty/EmptyContent.tsx +141 -0
  360. package/src/components/icon/Icon.module.css +71 -0
  361. package/src/components/icon/Icon.tsx +188 -0
  362. package/src/components/index.ts +61 -0
  363. package/src/components/media/Media.module.css +112 -0
  364. package/src/components/media/Media.tsx +224 -0
  365. package/src/components/menu/ContextMenu.tsx +116 -0
  366. package/src/components/menu/Menu.module.css +109 -0
  367. package/src/components/menu/Menu.tsx +278 -0
  368. package/src/components/menu/MenuItem.tsx +162 -0
  369. package/src/components/menu/types.ts +100 -0
  370. package/src/components/meter/Meter.module.css +116 -0
  371. package/src/components/meter/Meter.tsx +80 -0
  372. package/src/components/navigator/Navigator.tsx +77 -0
  373. package/src/components/panel/Panel.module.css +86 -0
  374. package/src/components/panel/Panel.tsx +254 -0
  375. package/src/components/panel/PanelGroup.tsx +99 -0
  376. package/src/components/panel/PanelStack.tsx +133 -0
  377. package/src/components/progress/Progress.module.css +70 -0
  378. package/src/components/progress/ProgressBar.tsx +122 -0
  379. package/src/components/progress/ProgressCircle.tsx +118 -0
  380. package/src/components/tabpanel/Tab.tsx +175 -0
  381. package/src/components/tabpanel/TabPanel.module.css +200 -0
  382. package/src/components/tabpanel/TabPanel.tsx +155 -0
  383. package/src/context/Global.tsx +241 -0
  384. package/src/context/NotificationCenter.tsx +223 -0
  385. package/src/core/aside/Aside.module.css +231 -0
  386. package/src/core/aside/Aside.tsx +262 -0
  387. package/src/core/boundary/ErrorBoundary.module.css +65 -0
  388. package/src/core/boundary/ErrorBoundary.tsx +146 -0
  389. package/src/core/boundary/ErrorIcon.tsx +50 -0
  390. package/src/core/content/Content.module.css +40 -0
  391. package/src/core/content/Content.tsx +91 -0
  392. package/src/core/headfoot/HeadFoot.module.css +38 -0
  393. package/src/core/headfoot/HeadFoot.tsx +114 -0
  394. package/src/core/index.ts +32 -0
  395. package/src/core/page/Page.module.css +46 -0
  396. package/src/core/page/Page.tsx +100 -0
  397. package/src/core/responsive/Responsive.module.css +85 -0
  398. package/src/core/responsive/Responsive.tsx +172 -0
  399. package/src/core/section/Section.module.css +28 -0
  400. package/src/core/section/Section.tsx +48 -0
  401. package/src/core/theme/Theme.module.css +30 -0
  402. package/src/core/theme/ThemeProvider.tsx +112 -0
  403. package/src/core/viewport/Viewport.module.css +32 -0
  404. package/src/core/viewport/Viewport.tsx +43 -0
  405. package/src/hooks/useClientService.tsx +29 -0
  406. package/src/hooks/useControlledValue.tsx +43 -0
  407. package/src/hooks/useDebounce.ts +52 -0
  408. package/src/hooks/useEffectDebugger.ts +154 -0
  409. package/src/hooks/useIsDark.ts +50 -0
  410. package/src/hooks/useIsRtl.ts +46 -0
  411. package/src/hooks/useNavigator.tsx +54 -0
  412. package/src/hooks/useOverlayService.tsx +51 -0
  413. package/src/hooks/usePropToggle.ts +61 -0
  414. package/src/hooks/useResize.ts +90 -0
  415. package/src/hooks/useResizeObserver.ts +55 -0
  416. package/src/hooks/useStorage.ts +76 -0
  417. package/src/hotkeys/HotKey.tsx +39 -0
  418. package/src/hotkeys/HotKeyLabel.tsx +61 -0
  419. package/src/hotkeys/HotKeyWrapper.tsx +137 -0
  420. package/src/hotkeys/commons.ts +74 -0
  421. package/src/i18n/ar.json +21 -0
  422. package/src/i18n/en.json +34 -0
  423. package/src/i18n/index.ts +50 -0
  424. package/src/index.ts +51 -0
  425. package/src/overlays/alert/Alert.module.css +44 -0
  426. package/src/overlays/alert/Alert.tsx +229 -0
  427. package/src/overlays/flyout/Flyout.module.css +52 -0
  428. package/src/overlays/flyout/Flyout.tsx +283 -0
  429. package/src/overlays/index.ts +29 -0
  430. package/src/overlays/message/Message.module.css +37 -0
  431. package/src/overlays/message/Message.tsx +107 -0
  432. package/src/overlays/modal/Modal.module.css +53 -0
  433. package/src/overlays/modal/Modal.tsx +244 -0
  434. package/src/overlays/toast/Toast.module.css +37 -0
  435. package/src/overlays/toast/Toast.tsx +216 -0
  436. package/src/overlays/tooltip/Tooltip.module.css +53 -0
  437. package/src/overlays/tooltip/Tooltip.tsx +200 -0
  438. package/src/types/global.d.ts +83 -0
  439. package/src/types/icons.ts +420 -0
  440. package/src/types/index.ts +238 -0
  441. package/src/typography/Abbr.tsx +152 -0
  442. package/src/typography/Copy.tsx +61 -0
  443. package/src/typography/Link.tsx +110 -0
  444. package/src/typography/Mark.tsx +122 -0
  445. package/src/typography/Text.tsx +194 -0
  446. package/src/typography/Title.tsx +126 -0
  447. package/src/typography/Typography.module.css +68 -0
  448. package/src/typography/index.ts +29 -0
  449. package/src/typography/types.ts +38 -0
  450. package/src/utils/calculateDimensions.ts +72 -0
  451. package/src/utils/getColor.ts +49 -0
  452. package/src/utils/index.ts +28 -0
  453. package/src/utils/nodeCheck.ts +34 -0
@@ -0,0 +1,254 @@
1
+ 'use client';
2
+
3
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
4
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
6
+ import _regeneratorRuntime from '@babel/runtime/regenerator';
7
+ import { uuid, isString, isObject } from '@react-fabric/utilities';
8
+ import { useRef, useState, useEffect, Fragment } from 'react';
9
+ import { createPortal } from 'react-dom';
10
+ import { Alert } from '../overlays/alert/Alert.js';
11
+ import { Message } from '../overlays/message/Message.js';
12
+ import { Toast } from '../overlays/toast/Toast.js';
13
+ import { jsx, jsxs } from 'react/jsx-runtime';
14
+
15
+ 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; }
17
+ /** ***************** refactor props *******************/
18
+ var makeProps = function makeProps(obj) {
19
+ if (isString(obj)) {
20
+ return {
21
+ message: obj
22
+ };
23
+ } else if (isObject(obj)) {
24
+ return _objectSpread({}, obj);
25
+ }
26
+ return {
27
+ message: ""
28
+ };
29
+ };
30
+ var NotificationManager = function NotificationManager(_ref) {
31
+ var onLoad = _ref.onLoad;
32
+ var refItems = useRef({
33
+ toasts: {},
34
+ messages: {},
35
+ alerts: {}
36
+ });
37
+ var _useState = useState({}),
38
+ _useState2 = _slicedToArray(_useState, 2),
39
+ messages = _useState2[0],
40
+ setMessages = _useState2[1];
41
+ var _useState3 = useState({}),
42
+ _useState4 = _slicedToArray(_useState3, 2),
43
+ toasts = _useState4[0],
44
+ setToasts = _useState4[1];
45
+ var _useState5 = useState({}),
46
+ _useState6 = _slicedToArray(_useState5, 2),
47
+ alerts = _useState6[0],
48
+ setAlerts = _useState6[1];
49
+ var updateMessages = useRef(function () {
50
+ setMessages(_objectSpread({}, refItems.current.messages));
51
+ });
52
+ var updateToasts = useRef(function () {
53
+ setToasts(_objectSpread({}, refItems.current.toasts));
54
+ });
55
+ var updateAlerts = useRef(function () {
56
+ setAlerts(_objectSpread({}, refItems.current.alerts));
57
+ });
58
+ var handleCloseAll = useRef(function () {
59
+ Object.values(refItems.current.messages).forEach(function (msg) {
60
+ var _msg$;
61
+ return (_msg$ = msg[1]) === null || _msg$ === void 0 ? void 0 : _msg$.call(msg, false);
62
+ });
63
+ Object.values(refItems.current.toasts).forEach(function (msg) {
64
+ var _msg$2;
65
+ return (_msg$2 = msg[1]) === null || _msg$2 === void 0 ? void 0 : _msg$2.call(msg, false);
66
+ });
67
+ Object.values(refItems.current.alerts).forEach(function (msg) {
68
+ var _msg$3;
69
+ return (_msg$3 = msg[1]) === null || _msg$3 === void 0 ? void 0 : _msg$3.call(msg, false);
70
+ });
71
+ refItems.current.messages = {};
72
+ refItems.current.toasts = {};
73
+ refItems.current.alerts = {};
74
+ updateMessages.current();
75
+ updateToasts.current();
76
+ updateAlerts.current();
77
+ });
78
+ var openNotification = useRef( /*#__PURE__*/function () {
79
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(map, update, Notif, props) {
80
+ var timeout,
81
+ timerRef,
82
+ obj,
83
+ _args = arguments;
84
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
85
+ while (1) switch (_context.prev = _context.next) {
86
+ case 0:
87
+ timeout = _args.length > 4 && _args[4] !== undefined ? _args[4] : 5000;
88
+ timerRef = null;
89
+ obj = makeProps(props);
90
+ _context.next = 5;
91
+ return new Promise(function (resolve) {
92
+ var key = uuid();
93
+ var handleClose = function handleClose() {
94
+ var b = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
95
+ clearTimeout(timerRef);
96
+ setTimeout(function () {
97
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
98
+ delete map[key];
99
+ update();
100
+ resolve(b);
101
+ }, 250);
102
+ };
103
+ map[key] = [/*#__PURE__*/jsx("div", {
104
+ children: /*#__PURE__*/jsx(Notif, _objectSpread(_objectSpread({}, obj), {}, {
105
+ onClose: handleClose,
106
+ onCloseAll: handleCloseAll.current
107
+ }))
108
+ }, key), handleClose];
109
+ update();
110
+ if (obj.type !== "confirm" && timeout > 0) {
111
+ timerRef = setTimeout(handleClose, timeout);
112
+ }
113
+ });
114
+ case 5:
115
+ return _context.abrupt("return", _context.sent);
116
+ case 6:
117
+ case "end":
118
+ return _context.stop();
119
+ }
120
+ }, _callee);
121
+ }));
122
+ return function (_x, _x2, _x3, _x4) {
123
+ return _ref2.apply(this, arguments);
124
+ };
125
+ }());
126
+ var showMessage = useRef( /*#__PURE__*/function () {
127
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(props) {
128
+ var timeout,
129
+ _args2 = arguments;
130
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
131
+ while (1) switch (_context2.prev = _context2.next) {
132
+ case 0:
133
+ timeout = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : 5000;
134
+ _context2.next = 3;
135
+ return openNotification.current(refItems.current.messages, updateMessages.current, Message, props, timeout);
136
+ case 3:
137
+ return _context2.abrupt("return", _context2.sent);
138
+ case 4:
139
+ case "end":
140
+ return _context2.stop();
141
+ }
142
+ }, _callee2);
143
+ }));
144
+ return function (_x5) {
145
+ return _ref3.apply(this, arguments);
146
+ };
147
+ }());
148
+ var showToast = useRef( /*#__PURE__*/function () {
149
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(props) {
150
+ var timeout,
151
+ _args3 = arguments;
152
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
153
+ while (1) switch (_context3.prev = _context3.next) {
154
+ case 0:
155
+ timeout = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : 5000;
156
+ _context3.next = 3;
157
+ return openNotification.current(refItems.current.toasts, updateToasts.current, Toast, props, timeout);
158
+ case 3:
159
+ return _context3.abrupt("return", _context3.sent);
160
+ case 4:
161
+ case "end":
162
+ return _context3.stop();
163
+ }
164
+ }, _callee3);
165
+ }));
166
+ return function (_x6) {
167
+ return _ref4.apply(this, arguments);
168
+ };
169
+ }());
170
+ var showAlert = useRef( /*#__PURE__*/function () {
171
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(props) {
172
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
173
+ while (1) switch (_context4.prev = _context4.next) {
174
+ case 0:
175
+ _context4.next = 2;
176
+ return openNotification.current(refItems.current.alerts, updateAlerts.current, Alert, props, 0);
177
+ case 2:
178
+ return _context4.abrupt("return", _context4.sent);
179
+ case 3:
180
+ case "end":
181
+ return _context4.stop();
182
+ }
183
+ }, _callee4);
184
+ }));
185
+ return function (_x7) {
186
+ return _ref5.apply(this, arguments);
187
+ };
188
+ }());
189
+ var showError = useRef( /*#__PURE__*/function () {
190
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(props) {
191
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
192
+ while (1) switch (_context5.prev = _context5.next) {
193
+ case 0:
194
+ _context5.next = 3;
195
+ return openNotification.current(refItems.current.toasts, Toast, _objectSpread(_objectSpread({}, makeProps(props)), {}, {
196
+ color: "danger"
197
+ }), 0);
198
+ case 3:
199
+ return _context5.abrupt("return", _context5.sent);
200
+ case 4:
201
+ case "end":
202
+ return _context5.stop();
203
+ }
204
+ }, _callee5);
205
+ }));
206
+ return function (_x8) {
207
+ return _ref6.apply(this, arguments);
208
+ };
209
+ }());
210
+ useEffect(function () {
211
+ onLoad({
212
+ showMessage: showMessage.current,
213
+ showToast: showToast.current,
214
+ showAlert: showAlert.current,
215
+ showError: showError.current,
216
+ closeAll: handleCloseAll.current
217
+ });
218
+ }, []);
219
+ return /*#__PURE__*/jsxs(Fragment, {
220
+ children: [/*#__PURE__*/createPortal( /*#__PURE__*/jsx("div", {
221
+ style: {
222
+ zIndex: "var(--z-overlay)"
223
+ },
224
+ className: "ruf-container__overlays pointer-events-none fixed inset-0 p-4 bg-transparent",
225
+ children: Object.values(alerts).map(function (_ref7) {
226
+ var _ref8 = _slicedToArray(_ref7, 1),
227
+ el = _ref8[0];
228
+ return el;
229
+ })
230
+ }), document.body), /*#__PURE__*/createPortal( /*#__PURE__*/jsx("div", {
231
+ style: {
232
+ zIndex: "var(--z-notifications)"
233
+ },
234
+ className: "ruf-container__notifs flex flex-nowrap pointer-events-none fixed inset-0 p-2 bg-transparent flex-col-reverse items-center justify-end",
235
+ children: Object.values(messages).map(function (_ref9) {
236
+ var _ref10 = _slicedToArray(_ref9, 1),
237
+ el = _ref10[0];
238
+ return el;
239
+ })
240
+ }), document.body), /*#__PURE__*/createPortal( /*#__PURE__*/jsx("div", {
241
+ style: {
242
+ zIndex: "var(--z-notifications)"
243
+ },
244
+ className: "ruf-container__toasts flex flex-nowrap pointer-events-none fixed inset-0 p-4 bg-transparent flex-col items-end justify-end overflow-auto scroll-hide",
245
+ children: Object.values(toasts).map(function (_ref11) {
246
+ var _ref12 = _slicedToArray(_ref11, 1),
247
+ el = _ref12[0];
248
+ return el;
249
+ })
250
+ }), document.body)]
251
+ });
252
+ };
253
+
254
+ export { NotificationManager };
@@ -0,0 +1,152 @@
1
+ 'use client';
2
+
3
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
+ import classNames from 'classnames';
6
+ import { useRef, useState, useEffect, useCallback, useMemo } from 'react';
7
+ import { Loading } from '../../components/animations/Animations.js';
8
+ import { Icon } from '../../components/icon/Icon.js';
9
+ import { useLayoutEffectDebugger } from '../../hooks/useEffectDebugger.js';
10
+ import { usePropToggle } from '../../hooks/usePropToggle.js';
11
+ import { useResize } from '../../hooks/useResize.js';
12
+ import { CoreIcons } from '../../types/icons.js';
13
+ import { ErrorBoundary } from '../boundary/ErrorBoundary.js';
14
+ import classes from './Aside.module.css';
15
+ import { jsxs, jsx } from 'react/jsx-runtime';
16
+
17
+ 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; }
18
+ 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; }
19
+ /**
20
+ * Side panel
21
+ */
22
+ var Aside = function Aside(_ref) {
23
+ var children = _ref.children,
24
+ title = _ref.title,
25
+ icon = _ref.icon,
26
+ iconBg = _ref.iconBg,
27
+ iconColor = _ref.iconColor,
28
+ rtlFlip = _ref.rtlFlip,
29
+ headerClassName = _ref.headerClassName,
30
+ resizeable = _ref.resizeable,
31
+ flyout = _ref.flyout,
32
+ onFlyout = _ref.onFlyout,
33
+ collapsed = _ref.collapsed,
34
+ collapsable = _ref.collapsable,
35
+ onCollapse = _ref.onCollapse,
36
+ actions = _ref.actions,
37
+ loading = _ref.loading,
38
+ _ref$align = _ref.align,
39
+ align = _ref$align === void 0 ? "start" : _ref$align,
40
+ _ref$width = _ref.width,
41
+ wd = _ref$width === void 0 ? "20rem" : _ref$width,
42
+ _ref$minWidth = _ref.minWidth,
43
+ minWidth = _ref$minWidth === void 0 ? "2rem" : _ref$minWidth,
44
+ _ref$maxWidth = _ref.maxWidth,
45
+ maxWidth = _ref$maxWidth === void 0 ? "30vw" : _ref$maxWidth,
46
+ testId = _ref["data-testid"],
47
+ testValue = _ref["data-test-value"];
48
+ var elementRef = useRef(null);
49
+ var _useState = useState(wd),
50
+ _useState2 = _slicedToArray(_useState, 2),
51
+ width = _useState2[0],
52
+ setWidth = _useState2[1];
53
+ var _useState3 = useState(false),
54
+ _useState4 = _slicedToArray(_useState3, 2),
55
+ peek = _useState4[0],
56
+ setPeek = _useState4[1];
57
+ var _usePropToggle = usePropToggle(collapsed, onCollapse),
58
+ _usePropToggle2 = _slicedToArray(_usePropToggle, 2),
59
+ isCollapsed = _usePropToggle2[0],
60
+ toggleCollapse = _usePropToggle2[1];
61
+ useEffect(function () {
62
+ setWidth(wd);
63
+ }, [wd]);
64
+ var handleResize = useRef(function (_ref2) {
65
+ var x = _ref2.x;
66
+ if (elementRef.current != null) {
67
+ setWidth(elementRef.current.offsetWidth + x);
68
+ }
69
+ });
70
+ var resizeHandleProps = useResize(handleResize.current, {
71
+ isReverse: align === "end"
72
+ });
73
+ var tryPeek = useCallback(function () {
74
+ if (isCollapsed) {
75
+ if (flyout) {
76
+ setPeek(!peek);
77
+ !peek && (onFlyout === null || onFlyout === void 0 ? void 0 : onFlyout());
78
+ } else {
79
+ void toggleCollapse();
80
+ }
81
+ }
82
+ }, [peek, flyout, isCollapsed, onFlyout, toggleCollapse]);
83
+ useLayoutEffectDebugger(function () {
84
+ if (peek) {
85
+ var handler = function handler(e) {
86
+ if (e.target.closest("[data-ref=\"asideBody\"]") == null && e.target.closest("[data-ref=\"asidePlaceholder\"]") == null) {
87
+ setPeek(false);
88
+ }
89
+ };
90
+ document.addEventListener("mouseup", handler);
91
+ return function () {
92
+ return document.removeEventListener("mouseup", handler);
93
+ };
94
+ }
95
+ }, [peek], "Aside peek");
96
+ var widthStyles = useMemo(function () {
97
+ return {
98
+ width: width,
99
+ minWidth: minWidth,
100
+ maxWidth: maxWidth
101
+ };
102
+ }, [width, minWidth, maxWidth]);
103
+ return /*#__PURE__*/jsxs("aside", {
104
+ className: classNames(classes.aside, "overflow-hidden grid"),
105
+ "data-align": align,
106
+ "data-flyout": peek,
107
+ "data-collapsed": isCollapsed,
108
+ style: isCollapsed ? undefined : widthStyles,
109
+ "data-testid": testId,
110
+ "data-test-value": testValue,
111
+ children: [/*#__PURE__*/jsxs("header", {
112
+ className: classNames(classes.asideHeader, headerClassName, "grid area-head items-center"),
113
+ children: [title && /*#__PURE__*/jsx("div", {
114
+ className: classNames(classes.asideTitle, "truncate py-0.5 px-1 select-none pointer-events-none"),
115
+ children: title
116
+ }), collapsable && /*#__PURE__*/jsx(Icon, {
117
+ "aria-label": isCollapsed ? "expand" : "collapse",
118
+ className: classNames(classes.asideCollapse, "p-2 select-none"),
119
+ icon: CoreIcons.chevronLeft,
120
+ rtlFlip: true,
121
+ onClick: toggleCollapse,
122
+ "data-ref": "asideToggle"
123
+ }), icon && /*#__PURE__*/jsx(Icon, {
124
+ icon: icon,
125
+ bg: iconBg,
126
+ color: iconColor,
127
+ rtlFlip: rtlFlip,
128
+ className: classNames(classes.asideIcon, "p-1 text-lg select-none pointer-events-none")
129
+ }), actions && /*#__PURE__*/jsx("div", {
130
+ className: classes.asideActions,
131
+ children: actions
132
+ })]
133
+ }), loading && /*#__PURE__*/jsx(Loading, {}), isCollapsed && /*#__PURE__*/jsx("div", {
134
+ role: "none",
135
+ onClick: tryPeek,
136
+ "data-ref": "asidePlaceholder",
137
+ className: classes.asidePlaceholder
138
+ }), /*#__PURE__*/jsx("section", {
139
+ ref: elementRef,
140
+ "data-ref": "asideBody",
141
+ className: classNames(classes.asideBody, "overflow-hidden grid"),
142
+ style: isCollapsed ? widthStyles : undefined,
143
+ children: /*#__PURE__*/jsx(ErrorBoundary, {
144
+ children: children
145
+ })
146
+ }), resizeable && /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({}, resizeHandleProps), {}, {
147
+ className: classNames(classes.asideResizer, "before:absolute before:inset-0 before:w-1 before:top-1/2 before:-translate-y-1/2 before:transition-all")
148
+ }))]
149
+ });
150
+ };
151
+
152
+ export { Aside };
@@ -0,0 +1 @@
1
+ @layer comp{.aside{--aside-bg:color-mix(in lab,var(--fabric-bg) 95%,var(--tint));--aside-border:color-mix(in lab,var(--fabric-bg) 75%,var(--tint));background-color:var(--aside-bg);&[data-align=start]{border-inline-end:1px solid var(--aside-border);grid-area:side-s;grid-template:"head resizer" auto "loader resizer" auto "content resizer" 1fr/1fr auto;& .asideHeader{grid-template-areas:"icon title actions collapse";grid-template-columns:auto 1fr auto auto}}&[data-align=end]{border-inline-start:1px solid var(--aside-border);grid-area:side-e;grid-template:"resizer head" auto "resizer loader" auto "resizer content" 1fr/auto 1fr;& .asideHeader{grid-template-areas:"collapse icon title actions";grid-template-columns:auto auto 1fr auto}& .asideCollapse{transform:scaleX(-1)}}& .asideBody{grid-area:content;grid-template:"head" auto "content" 1fr "foot" auto/1fr;&>[data-ref=content]{background-color:transparent}}& .asideHeader{color:theme(colors.primary.600);font-weight:500;&:not(:empty){border-bottom:1px solid var(--aside-border)}}& .asideTitle{grid-area:title}& .asideIcon{grid-area:icon}.asideActions{grid-area:actions}& .asideCollapse{grid-area:collapse;&:hover{background-color:color-mix(in lab,var(--fabric-text) 10%,#0000)}}& .asidePlaceholder{background-color:var(--aside-bg);grid-area:content;z-index:4}& .asideResizer{cursor:col-resize;grid-area:resizer;position:relative;width:.25rem;&:before{border:1px solid theme(colors.tint.700);border-width:0 1.5px;height:32px}&:active:before,&:hover:before{background-color:theme(colors.primary.600);border-color:theme(backgroundColor.base);border-width:0 1.25px;height:100%}}}}@layer util{.asideBody,.asideHeader{height:unset;margin:unset;width:unset}.asideBody{&>[data-ref=content]{background-color:transparent}}.aside[data-collapsed=true]{overflow:visible;position:relative;width:2rem;& .asideBody{background-color:var(--aside-bg);inset:0;position:absolute;transition:transform .15s cubic-bezier(.4,0,.2,1);z-index:-1}& .asideHeader{position:absolute;width:2rem;z-index:5}& .asideTitle{font-size:1rem;grid-area:unset;position:absolute;top:1rem}.asideIcon{margin-inline:2px}& .asideCollapse+.asideIcon,& .asideResizer{display:none}}[dir=ltr] .aside[data-align=start][data-collapsed=true],[dir=rtl] .aside[data-align=end][data-collapsed=true]{& .asideBody{grid-area:unset;right:unset;transform:translateX(-100%)}& .asideTitle{right:calc(2rem + 2px);transform:rotate(-90deg) translateY(2rem);transform-origin:100% 100%}& .asideCollapse{transform:scaleX(-1)}&[data-flyout=true] .asideBody{box-shadow:0 0 1rem 0 var(--fabric-shadow);transform:translateX(2rem);z-index:3}}[dir=ltr] .aside[data-align=end][data-collapsed=true],[dir=rtl] .aside[data-align=start][data-collapsed=true]{& .asideBody{grid-area:unset;left:unset;transform:translateX(100%)}& .asideTitle{left:calc(2rem + 2px);transform:rotate(90deg) translateY(2rem);transform-origin:0 100%}& .asideCollapse{transform:scaleX(1)}&[data-flyout=true] .asideBody{box-shadow:0 0 1rem 0 var(--fabric-shadow);transform:translateX(-2rem);z-index:3}}}
@@ -0,0 +1,140 @@
1
+ 'use client';
2
+
3
+ import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
4
+ import _createClass from '@babel/runtime/helpers/createClass';
5
+ import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
6
+ import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
7
+ import _inherits from '@babel/runtime/helpers/inherits';
8
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
9
+ import { useLogger } from '@react-fabric/utilities';
10
+ import classNames from 'classnames';
11
+ import { Component } from 'react';
12
+ import { useTranslation } from 'react-i18next';
13
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
14
+ import { useMemoDebugger } from '../../hooks/useEffectDebugger.js';
15
+ import { usePropToggle } from '../../hooks/usePropToggle.js';
16
+ import classes from './ErrorBoundary.module.css';
17
+ import { ErrorIcon } from './ErrorIcon.js';
18
+ import { useGlobals } from '../../context/Global.js';
19
+
20
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
21
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
22
+ var DefaultError = function DefaultError(_ref) {
23
+ var error = _ref.error;
24
+ var _useTranslation = useTranslation("core"),
25
+ t = _useTranslation.t;
26
+ return /*#__PURE__*/jsxs(Fragment, {
27
+ children: [/*#__PURE__*/jsx("h6", {
28
+ children: t("error.title")
29
+ }), /*#__PURE__*/jsx("p", {
30
+ className: "line-clamp-4",
31
+ children: error
32
+ })]
33
+ });
34
+ };
35
+ var ErrorMessage = function ErrorMessage(_ref2) {
36
+ var error = _ref2.error,
37
+ errorElement = _ref2.errorElement;
38
+ var _useGlobals = useGlobals(),
39
+ globalError = _useGlobals.errorElement;
40
+ var EE = useMemoDebugger(function () {
41
+ var _ref3;
42
+ return (_ref3 = errorElement !== null && errorElement !== void 0 ? errorElement : globalError) !== null && _ref3 !== void 0 ? _ref3 : DefaultError;
43
+ }, [], "ErrorBoundary element");
44
+ return /*#__PURE__*/jsxs(Fragment, {
45
+ children: [/*#__PURE__*/jsx(ErrorIcon, {}), /*#__PURE__*/jsx("div", {
46
+ className: classNames(classes.boundaryMessage, "p-2"),
47
+ children: /*#__PURE__*/jsx(EE, {
48
+ error: error
49
+ })
50
+ })]
51
+ });
52
+ };
53
+ var ErrorStack = function ErrorStack(_ref4) {
54
+ var error = _ref4.error,
55
+ stack = _ref4.stack;
56
+ var _usePropToggle = usePropToggle(false),
57
+ _usePropToggle2 = _slicedToArray(_usePropToggle, 2),
58
+ show = _usePropToggle2[0],
59
+ toggleShow = _usePropToggle2[1];
60
+ useLogger().error(error, {}, stack);
61
+ return /*#__PURE__*/jsxs("div", {
62
+ className: classNames(classes.boundaryDetail, "overflow-hidden grid"),
63
+ children: [/*#__PURE__*/jsx("div", {
64
+ className: classNames(classes.boundaryLink, "px-2 py-1 text-xs text-end"),
65
+ children: /*#__PURE__*/jsx("span", {
66
+ role: "link",
67
+ tabIndex: 0,
68
+ className: "link",
69
+ onClick: toggleShow,
70
+ children: show ? "Hide Detail" : "Show Detail"
71
+ })
72
+ }), show && /*#__PURE__*/jsx("div", {
73
+ className: classNames(classes.boundaryStack, "overflow-auto p-2 text-xs border-t"),
74
+ children: /*#__PURE__*/jsx("pre", {
75
+ className: "whitespace-pre-wrap",
76
+ children: stack
77
+ })
78
+ })]
79
+ });
80
+ };
81
+
82
+ /**
83
+ * An error boundary wrapper higher-order component designed to provide consistent error display across the application will trap runtime errors
84
+ */
85
+ var ErrorBoundary = /*#__PURE__*/function (_Component) {
86
+ function ErrorBoundary(props) {
87
+ var _this;
88
+ _classCallCheck(this, ErrorBoundary);
89
+ _this = _callSuper(this, ErrorBoundary, [props]);
90
+ _this.state = {
91
+ hasError: false
92
+ };
93
+ return _this;
94
+ }
95
+ _inherits(ErrorBoundary, _Component);
96
+ return _createClass(ErrorBoundary, [{
97
+ key: "componentDidCatch",
98
+ value: function componentDidCatch(error) {
99
+ this.setState({
100
+ hasError: true,
101
+ error: error.message,
102
+ stack: error.stack
103
+ });
104
+ }
105
+ }, {
106
+ key: "render",
107
+ value: function render() {
108
+ var env = process.env.NODE_ENV;
109
+ if (this.state.hasError) {
110
+ var E = this.props.errorElement;
111
+ // You can render any custom fallback UI
112
+ return /*#__PURE__*/jsx("div", {
113
+ className: classNames(classes.errorBoundary, "grid grid-rows-1 overflow-hidden p-0.5 rounded-capped"),
114
+ children: /*#__PURE__*/jsxs("div", {
115
+ className: classNames(classes.boundaryContent, "overflow-hidden grid rounded-capped"),
116
+ children: [/*#__PURE__*/jsx(ErrorMessage, {
117
+ error: this.state.error,
118
+ errorElement: E
119
+ }), env === "development" && /*#__PURE__*/jsx(ErrorStack, {
120
+ error: this.state.error,
121
+ stack: this.state.stack
122
+ })]
123
+ })
124
+ });
125
+ }
126
+ return this.props.children;
127
+ }
128
+ }], [{
129
+ key: "getDerivedStateFromError",
130
+ value: function getDerivedStateFromError(error) {
131
+ return {
132
+ hasError: true,
133
+ error: error.message,
134
+ stack: error.stack
135
+ };
136
+ }
137
+ }]);
138
+ }(Component);
139
+
140
+ export { ErrorBoundary };
@@ -0,0 +1 @@
1
+ @layer comp{.errorBoundary{align-self:flex-start;background-color:theme(colors.danger.500);background-image:repeating-linear-gradient(135deg,hsla(0,0%,100%,.5) 0 4px,hsla(0,0%,100%,.2) 4px 8px);grid-area:inherit;margin:1rem;max-height:calc(100% - 2rem);& .boundaryContent{background-color:var(--fabric-bg);grid-template:"icon message" auto "detail detail" auto/auto 1fr}& .boundaryIcon{grid-area:icon}& .boundaryMessage{grid-area:message}& .boundaryDetail{grid-area:detail;grid-template-rows:auto 1fr}}}
@@ -0,0 +1,51 @@
1
+ 'use client';
2
+
3
+ import classNames from 'classnames';
4
+ import classes from './ErrorBoundary.module.css';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ /*
8
+ * React Fabric
9
+ * @version: 1.0.0
10
+ *
11
+ *
12
+ * The MIT License (MIT)
13
+ * Copyright (c) 2024 Adarsh Pastakia
14
+ *
15
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
16
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
17
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
18
+ * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
19
+ * subject to the following conditions:
20
+ *
21
+ * The above copyright notice and this permission notice shall be included in all copies or substantial
22
+ * portions of the Software.
23
+ *
24
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
25
+ * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
27
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
+ */
29
+
30
+ var ErrorIcon = function ErrorIcon() {
31
+ return /*#__PURE__*/jsxs("svg", {
32
+ xmlns: "http://www.w3.org/2000/svg",
33
+ viewBox: "0 0 64 64",
34
+ className: classNames(classes.boundaryIcon, "size-6 m-2"),
35
+ children: [/*#__PURE__*/jsx("path", {
36
+ fill: "#808080",
37
+ d: "M64 32c0 17.673-14.327 32-32 32s-32-14.327-32-32 14.327-32 32-32 32 14.327 32 32z"
38
+ }), /*#__PURE__*/jsx("path", {
39
+ fill: "#fff",
40
+ d: "M63.5 32c0 17.397-14.103 31.5-31.5 31.5s-31.5-14.103-31.5-31.5 14.103-31.5 31.5-31.5 31.5 14.103 31.5 31.5z"
41
+ }), /*#__PURE__*/jsx("path", {
42
+ fill: "#f44336",
43
+ d: "M60 32c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-15.464 12.536-28 28-28s28 12.536 28 28z"
44
+ }), /*#__PURE__*/jsx("path", {
45
+ fill: "#fff",
46
+ d: "M50.667 35.733h-37.333c-1.031 0-1.867-0.835-1.867-1.867v-3.733c0-1.031 0.835-1.867 1.867-1.867h37.333c1.031 0 1.867 0.835 1.867 1.867v3.733c0 1.031-0.835 1.867-1.867 1.867z"
47
+ })]
48
+ });
49
+ };
50
+
51
+ export { ErrorIcon };
@@ -0,0 +1,70 @@
1
+ 'use client';
2
+
3
+ import classNames from 'classnames';
4
+ import { useImperativeHandle } from 'react';
5
+ import { useDebounce } from '../../hooks/useDebounce.js';
6
+ import { useResizeObserver } from '../../hooks/useResizeObserver.js';
7
+ import { ErrorBoundary } from '../boundary/ErrorBoundary.js';
8
+ import classes from './Content.module.css';
9
+ import { jsx } from 'react/jsx-runtime';
10
+
11
+ /*
12
+ * React Fabric
13
+ * @version: 1.0.0
14
+ *
15
+ *
16
+ * The MIT License (MIT)
17
+ * Copyright (c) 2024 Adarsh Pastakia
18
+ *
19
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
20
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
21
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
22
+ * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
23
+ * subject to the following conditions:
24
+ *
25
+ * The above copyright notice and this permission notice shall be included in all copies or substantial
26
+ * portions of the Software.
27
+ *
28
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
29
+ * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
30
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
31
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32
+ */
33
+
34
+ /**
35
+ * Scrollable content element
36
+ */
37
+ var Content = function Content(_ref) {
38
+ var ref = _ref.ref,
39
+ children = _ref.children,
40
+ className = _ref.className,
41
+ onScroll = _ref.onScroll,
42
+ onResize = _ref.onResize,
43
+ testId = _ref["data-testid"],
44
+ testValue = _ref["data-test-value"];
45
+ var resizeHandle = useResizeObserver(onResize);
46
+ var scrollHandler = useDebounce(function (e) {
47
+ onScroll === null || onScroll === void 0 || onScroll({
48
+ // @ts-expect-error ignore
49
+ left: e.target.scrollLeft,
50
+ // @ts-expect-error ignore
51
+ top: e.target.scrollTop
52
+ });
53
+ }, [onScroll]);
54
+ useImperativeHandle(ref, function () {
55
+ return resizeHandle.current;
56
+ }, []);
57
+ return /*#__PURE__*/jsx("section", {
58
+ "data-ref": "content",
59
+ "data-testid": testId,
60
+ "data-test-value": testValue,
61
+ ref: resizeHandle,
62
+ onScroll: scrollHandler,
63
+ className: classNames(classes.content, "area-content", className),
64
+ children: /*#__PURE__*/jsx(ErrorBoundary, {
65
+ children: children
66
+ })
67
+ });
68
+ };
69
+
70
+ export { Content };
@@ -0,0 +1 @@
1
+ @layer comp{.content{--fabric-content:color-mix(in lab,var(--fabric-bg) 97%,var(--tint));background-color:var(--fabric-content);overflow:auto;padding:1rem}}@layer util{.content{height:unset;margin:unset;width:unset}}