@omerdlw/base-framework 1.0.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 (383) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +117 -0
  3. package/dist/atoms/button.d.ts +11 -0
  4. package/dist/atoms/button.d.ts.map +1 -0
  5. package/dist/atoms/icon.d.ts +15 -0
  6. package/dist/atoms/icon.d.ts.map +1 -0
  7. package/dist/atoms/index.d.ts +6 -0
  8. package/dist/atoms/index.d.ts.map +1 -0
  9. package/dist/atoms/index.js +169 -0
  10. package/dist/atoms/index.js.map +1 -0
  11. package/dist/atoms/spinner.d.ts +9 -0
  12. package/dist/atoms/spinner.d.ts.map +1 -0
  13. package/dist/atoms/tooltip.d.ts +18 -0
  14. package/dist/atoms/tooltip.d.ts.map +1 -0
  15. package/dist/error/boundary.d.ts +14 -0
  16. package/dist/error/boundary.d.ts.map +1 -0
  17. package/dist/error/constants.d.ts +18 -0
  18. package/dist/error/constants.d.ts.map +1 -0
  19. package/dist/error/index.d.ts +9 -0
  20. package/dist/error/index.d.ts.map +1 -0
  21. package/dist/error/index.js +688 -0
  22. package/dist/error/index.js.map +1 -0
  23. package/dist/error/listener.d.ts +2 -0
  24. package/dist/error/listener.d.ts.map +1 -0
  25. package/dist/error/reporter.d.ts +32 -0
  26. package/dist/error/reporter.d.ts.map +1 -0
  27. package/dist/error/theme.d.ts +3 -0
  28. package/dist/error/theme.d.ts.map +1 -0
  29. package/dist/error/types.d.ts +91 -0
  30. package/dist/error/types.d.ts.map +1 -0
  31. package/dist/error/utils.d.ts +21 -0
  32. package/dist/error/utils.d.ts.map +1 -0
  33. package/dist/events.d.ts +51 -0
  34. package/dist/events.d.ts.map +1 -0
  35. package/dist/events.js +88 -0
  36. package/dist/events.js.map +1 -0
  37. package/dist/hooks/index.d.ts +17 -0
  38. package/dist/hooks/index.d.ts.map +1 -0
  39. package/dist/hooks/index.js +804 -0
  40. package/dist/hooks/index.js.map +1 -0
  41. package/dist/hooks/types.d.ts +58 -0
  42. package/dist/hooks/types.d.ts.map +1 -0
  43. package/dist/hooks/use-async-action.d.ts +3 -0
  44. package/dist/hooks/use-async-action.d.ts.map +1 -0
  45. package/dist/hooks/use-click-outside.d.ts +3 -0
  46. package/dist/hooks/use-click-outside.d.ts.map +1 -0
  47. package/dist/hooks/use-controllable-state.d.ts +3 -0
  48. package/dist/hooks/use-controllable-state.d.ts.map +1 -0
  49. package/dist/hooks/use-debounce.d.ts +2 -0
  50. package/dist/hooks/use-debounce.d.ts.map +1 -0
  51. package/dist/hooks/use-fullscreen-state.d.ts +4 -0
  52. package/dist/hooks/use-fullscreen-state.d.ts.map +1 -0
  53. package/dist/hooks/use-global-event.d.ts +7 -0
  54. package/dist/hooks/use-global-event.d.ts.map +1 -0
  55. package/dist/hooks/use-hotkey.d.ts +4 -0
  56. package/dist/hooks/use-hotkey.d.ts.map +1 -0
  57. package/dist/hooks/use-intersection-observer.d.ts +4 -0
  58. package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
  59. package/dist/hooks/use-isomorphic-layout-effect.d.ts +3 -0
  60. package/dist/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
  61. package/dist/hooks/use-media-query.d.ts +2 -0
  62. package/dist/hooks/use-media-query.d.ts.map +1 -0
  63. package/dist/hooks/use-mounted.d.ts +2 -0
  64. package/dist/hooks/use-mounted.d.ts.map +1 -0
  65. package/dist/hooks/use-required-context.d.ts +3 -0
  66. package/dist/hooks/use-required-context.d.ts.map +1 -0
  67. package/dist/hooks/use-server-action.d.ts +4 -0
  68. package/dist/hooks/use-server-action.d.ts.map +1 -0
  69. package/dist/hooks/use-storage-state.d.ts +5 -0
  70. package/dist/hooks/use-storage-state.d.ts.map +1 -0
  71. package/dist/hooks/use-store.d.ts +3 -0
  72. package/dist/hooks/use-store.d.ts.map +1 -0
  73. package/dist/index.d.ts +12 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +20415 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/kernel/adapters.d.ts +5 -0
  78. package/dist/kernel/adapters.d.ts.map +1 -0
  79. package/dist/kernel/compose.d.ts +15 -0
  80. package/dist/kernel/compose.d.ts.map +1 -0
  81. package/dist/kernel/constants.d.ts +12 -0
  82. package/dist/kernel/constants.d.ts.map +1 -0
  83. package/dist/kernel/context-registry.d.ts +3 -0
  84. package/dist/kernel/context-registry.d.ts.map +1 -0
  85. package/dist/kernel/handlers.d.ts +3 -0
  86. package/dist/kernel/handlers.d.ts.map +1 -0
  87. package/dist/kernel/hooks.d.ts +7 -0
  88. package/dist/kernel/hooks.d.ts.map +1 -0
  89. package/dist/kernel/index.d.ts +14 -0
  90. package/dist/kernel/index.d.ts.map +1 -0
  91. package/dist/kernel/index.js +2109 -0
  92. package/dist/kernel/index.js.map +1 -0
  93. package/dist/kernel/installed.d.ts +21 -0
  94. package/dist/kernel/installed.d.ts.map +1 -0
  95. package/dist/kernel/module.d.ts +32 -0
  96. package/dist/kernel/module.d.ts.map +1 -0
  97. package/dist/kernel/operations.d.ts +21 -0
  98. package/dist/kernel/operations.d.ts.map +1 -0
  99. package/dist/kernel/page-controller.d.ts +8 -0
  100. package/dist/kernel/page-controller.d.ts.map +1 -0
  101. package/dist/kernel/provider.d.ts +18 -0
  102. package/dist/kernel/provider.d.ts.map +1 -0
  103. package/dist/kernel/runtime.d.ts +30 -0
  104. package/dist/kernel/runtime.d.ts.map +1 -0
  105. package/dist/kernel/schema.d.ts +13 -0
  106. package/dist/kernel/schema.d.ts.map +1 -0
  107. package/dist/kernel/store.d.ts +4 -0
  108. package/dist/kernel/store.d.ts.map +1 -0
  109. package/dist/kernel/types.d.ts +233 -0
  110. package/dist/kernel/types.d.ts.map +1 -0
  111. package/dist/kernel/utils.d.ts +20 -0
  112. package/dist/kernel/utils.d.ts.map +1 -0
  113. package/dist/modules/ambient/constants.d.ts +23 -0
  114. package/dist/modules/ambient/constants.d.ts.map +1 -0
  115. package/dist/modules/ambient/context.d.ts +10 -0
  116. package/dist/modules/ambient/context.d.ts.map +1 -0
  117. package/dist/modules/ambient/index.d.ts +6 -0
  118. package/dist/modules/ambient/index.d.ts.map +1 -0
  119. package/dist/modules/ambient/index.js +896 -0
  120. package/dist/modules/ambient/index.js.map +1 -0
  121. package/dist/modules/ambient/module.d.ts +12 -0
  122. package/dist/modules/ambient/module.d.ts.map +1 -0
  123. package/dist/modules/ambient/types.d.ts +84 -0
  124. package/dist/modules/ambient/types.d.ts.map +1 -0
  125. package/dist/modules/ambient/utils.d.ts +18 -0
  126. package/dist/modules/ambient/utils.d.ts.map +1 -0
  127. package/dist/modules/background/constants.d.ts +12 -0
  128. package/dist/modules/background/constants.d.ts.map +1 -0
  129. package/dist/modules/background/context.d.ts +13 -0
  130. package/dist/modules/background/context.d.ts.map +1 -0
  131. package/dist/modules/background/hooks.d.ts +119 -0
  132. package/dist/modules/background/hooks.d.ts.map +1 -0
  133. package/dist/modules/background/index.d.ts +7 -0
  134. package/dist/modules/background/index.d.ts.map +1 -0
  135. package/dist/modules/background/index.js +3195 -0
  136. package/dist/modules/background/index.js.map +1 -0
  137. package/dist/modules/background/module.d.ts +14 -0
  138. package/dist/modules/background/module.d.ts.map +1 -0
  139. package/dist/modules/background/motion.d.ts +13 -0
  140. package/dist/modules/background/motion.d.ts.map +1 -0
  141. package/dist/modules/background/overlay.d.ts +49 -0
  142. package/dist/modules/background/overlay.d.ts.map +1 -0
  143. package/dist/modules/background/types.d.ts +153 -0
  144. package/dist/modules/background/types.d.ts.map +1 -0
  145. package/dist/modules/background/utils.d.ts +56 -0
  146. package/dist/modules/background/utils.d.ts.map +1 -0
  147. package/dist/modules/background/youtube/iframe.d.ts +52 -0
  148. package/dist/modules/background/youtube/iframe.d.ts.map +1 -0
  149. package/dist/modules/background/youtube/parse.d.ts +17 -0
  150. package/dist/modules/background/youtube/parse.d.ts.map +1 -0
  151. package/dist/modules/context-menu/constants.d.ts +8 -0
  152. package/dist/modules/context-menu/constants.d.ts.map +1 -0
  153. package/dist/modules/context-menu/context.d.ts +16 -0
  154. package/dist/modules/context-menu/context.d.ts.map +1 -0
  155. package/dist/modules/context-menu/hooks.d.ts +31 -0
  156. package/dist/modules/context-menu/hooks.d.ts.map +1 -0
  157. package/dist/modules/context-menu/index.d.ts +6 -0
  158. package/dist/modules/context-menu/index.d.ts.map +1 -0
  159. package/dist/modules/context-menu/index.js +2008 -0
  160. package/dist/modules/context-menu/index.js.map +1 -0
  161. package/dist/modules/context-menu/module.d.ts +12 -0
  162. package/dist/modules/context-menu/module.d.ts.map +1 -0
  163. package/dist/modules/context-menu/motion.d.ts +9 -0
  164. package/dist/modules/context-menu/motion.d.ts.map +1 -0
  165. package/dist/modules/context-menu/overlay.d.ts +15 -0
  166. package/dist/modules/context-menu/overlay.d.ts.map +1 -0
  167. package/dist/modules/context-menu/resolver.d.ts +7 -0
  168. package/dist/modules/context-menu/resolver.d.ts.map +1 -0
  169. package/dist/modules/context-menu/state.d.ts +4 -0
  170. package/dist/modules/context-menu/state.d.ts.map +1 -0
  171. package/dist/modules/context-menu/types.d.ts +171 -0
  172. package/dist/modules/context-menu/types.d.ts.map +1 -0
  173. package/dist/modules/context-menu/utils.d.ts +16 -0
  174. package/dist/modules/context-menu/utils.d.ts.map +1 -0
  175. package/dist/modules/controls/constants.d.ts +7 -0
  176. package/dist/modules/controls/constants.d.ts.map +1 -0
  177. package/dist/modules/controls/hooks.d.ts +15 -0
  178. package/dist/modules/controls/hooks.d.ts.map +1 -0
  179. package/dist/modules/controls/index.d.ts +6 -0
  180. package/dist/modules/controls/index.d.ts.map +1 -0
  181. package/dist/modules/controls/index.js +1242 -0
  182. package/dist/modules/controls/index.js.map +1 -0
  183. package/dist/modules/controls/module.d.ts +12 -0
  184. package/dist/modules/controls/module.d.ts.map +1 -0
  185. package/dist/modules/controls/overlay.d.ts +2 -0
  186. package/dist/modules/controls/overlay.d.ts.map +1 -0
  187. package/dist/modules/controls/types.d.ts +86 -0
  188. package/dist/modules/controls/types.d.ts.map +1 -0
  189. package/dist/modules/controls/utils.d.ts +9 -0
  190. package/dist/modules/controls/utils.d.ts.map +1 -0
  191. package/dist/modules/dock/cards.d.ts +1035 -0
  192. package/dist/modules/dock/cards.d.ts.map +1 -0
  193. package/dist/modules/dock/constants.d.ts +157 -0
  194. package/dist/modules/dock/constants.d.ts.map +1 -0
  195. package/dist/modules/dock/context.d.ts +26 -0
  196. package/dist/modules/dock/context.d.ts.map +1 -0
  197. package/dist/modules/dock/hooks.d.ts +957 -0
  198. package/dist/modules/dock/hooks.d.ts.map +1 -0
  199. package/dist/modules/dock/hud.d.ts +43 -0
  200. package/dist/modules/dock/hud.d.ts.map +1 -0
  201. package/dist/modules/dock/index.d.ts +27 -0
  202. package/dist/modules/dock/index.d.ts.map +1 -0
  203. package/dist/modules/dock/index.js +12111 -0
  204. package/dist/modules/dock/index.js.map +1 -0
  205. package/dist/modules/dock/module.d.ts +71 -0
  206. package/dist/modules/dock/module.d.ts.map +1 -0
  207. package/dist/modules/dock/motion.d.ts +986 -0
  208. package/dist/modules/dock/motion.d.ts.map +1 -0
  209. package/dist/modules/dock/overlay.d.ts +79 -0
  210. package/dist/modules/dock/overlay.d.ts.map +1 -0
  211. package/dist/modules/dock/provider.d.ts +3 -0
  212. package/dist/modules/dock/provider.d.ts.map +1 -0
  213. package/dist/modules/dock/routing/breadcrumbs.d.ts +43 -0
  214. package/dist/modules/dock/routing/breadcrumbs.d.ts.map +1 -0
  215. package/dist/modules/dock/routing/continuity.d.ts +19 -0
  216. package/dist/modules/dock/routing/continuity.d.ts.map +1 -0
  217. package/dist/modules/dock/routing/guards.d.ts +21 -0
  218. package/dist/modules/dock/routing/guards.d.ts.map +1 -0
  219. package/dist/modules/dock/routing/navigation.d.ts +37 -0
  220. package/dist/modules/dock/routing/navigation.d.ts.map +1 -0
  221. package/dist/modules/dock/routing/transactions.d.ts +21 -0
  222. package/dist/modules/dock/routing/transactions.d.ts.map +1 -0
  223. package/dist/modules/dock/runtime/commands.d.ts +18 -0
  224. package/dist/modules/dock/runtime/commands.d.ts.map +1 -0
  225. package/dist/modules/dock/runtime/display.d.ts +36 -0
  226. package/dist/modules/dock/runtime/display.d.ts.map +1 -0
  227. package/dist/modules/dock/runtime/dock.d.ts +123 -0
  228. package/dist/modules/dock/runtime/dock.d.ts.map +1 -0
  229. package/dist/modules/dock/state.d.ts +22 -0
  230. package/dist/modules/dock/state.d.ts.map +1 -0
  231. package/dist/modules/dock/status/events.d.ts +37 -0
  232. package/dist/modules/dock/status/events.d.ts.map +1 -0
  233. package/dist/modules/dock/status/hooks.d.ts +6 -0
  234. package/dist/modules/dock/status/hooks.d.ts.map +1 -0
  235. package/dist/modules/dock/status/model.d.ts +65 -0
  236. package/dist/modules/dock/status/model.d.ts.map +1 -0
  237. package/dist/modules/dock/surface/context.d.ts +43 -0
  238. package/dist/modules/dock/surface/context.d.ts.map +1 -0
  239. package/dist/modules/dock/surface/definition.d.ts +38 -0
  240. package/dist/modules/dock/surface/definition.d.ts.map +1 -0
  241. package/dist/modules/dock/surface/hooks.d.ts +123 -0
  242. package/dist/modules/dock/surface/hooks.d.ts.map +1 -0
  243. package/dist/modules/dock/surface/machine.d.ts +75 -0
  244. package/dist/modules/dock/surface/machine.d.ts.map +1 -0
  245. package/dist/modules/dock/surface/stack.d.ts +38 -0
  246. package/dist/modules/dock/surface/stack.d.ts.map +1 -0
  247. package/dist/modules/dock/surface/view-model.d.ts +3 -0
  248. package/dist/modules/dock/surface/view-model.d.ts.map +1 -0
  249. package/dist/modules/dock/types.d.ts +1158 -0
  250. package/dist/modules/dock/types.d.ts.map +1 -0
  251. package/dist/modules/dock/utils.d.ts +93 -0
  252. package/dist/modules/dock/utils.d.ts.map +1 -0
  253. package/dist/modules/index.d.ts +12 -0
  254. package/dist/modules/index.d.ts.map +1 -0
  255. package/dist/modules/index.js +18020 -0
  256. package/dist/modules/index.js.map +1 -0
  257. package/dist/modules/loading/constants.d.ts +5 -0
  258. package/dist/modules/loading/constants.d.ts.map +1 -0
  259. package/dist/modules/loading/context.d.ts +13 -0
  260. package/dist/modules/loading/context.d.ts.map +1 -0
  261. package/dist/modules/loading/hooks.d.ts +6 -0
  262. package/dist/modules/loading/hooks.d.ts.map +1 -0
  263. package/dist/modules/loading/index.d.ts +7 -0
  264. package/dist/modules/loading/index.d.ts.map +1 -0
  265. package/dist/modules/loading/index.js +1256 -0
  266. package/dist/modules/loading/index.js.map +1 -0
  267. package/dist/modules/loading/module.d.ts +14 -0
  268. package/dist/modules/loading/module.d.ts.map +1 -0
  269. package/dist/modules/loading/overlay.d.ts +2 -0
  270. package/dist/modules/loading/overlay.d.ts.map +1 -0
  271. package/dist/modules/loading/types.d.ts +47 -0
  272. package/dist/modules/loading/types.d.ts.map +1 -0
  273. package/dist/modules/loading/utils.d.ts +4 -0
  274. package/dist/modules/loading/utils.d.ts.map +1 -0
  275. package/dist/modules/media/constants.d.ts +7 -0
  276. package/dist/modules/media/constants.d.ts.map +1 -0
  277. package/dist/modules/media/context.d.ts +6 -0
  278. package/dist/modules/media/context.d.ts.map +1 -0
  279. package/dist/modules/media/hooks.d.ts +3 -0
  280. package/dist/modules/media/hooks.d.ts.map +1 -0
  281. package/dist/modules/media/index.d.ts +8 -0
  282. package/dist/modules/media/index.d.ts.map +1 -0
  283. package/dist/modules/media/index.js +728 -0
  284. package/dist/modules/media/index.js.map +1 -0
  285. package/dist/modules/media/module.d.ts +11 -0
  286. package/dist/modules/media/module.d.ts.map +1 -0
  287. package/dist/modules/media/overlay.d.ts +9 -0
  288. package/dist/modules/media/overlay.d.ts.map +1 -0
  289. package/dist/modules/media/types.d.ts +77 -0
  290. package/dist/modules/media/types.d.ts.map +1 -0
  291. package/dist/modules/media/utils.d.ts +17 -0
  292. package/dist/modules/media/utils.d.ts.map +1 -0
  293. package/dist/modules/modal/constants.d.ts +20 -0
  294. package/dist/modules/modal/constants.d.ts.map +1 -0
  295. package/dist/modules/modal/context.d.ts +20 -0
  296. package/dist/modules/modal/context.d.ts.map +1 -0
  297. package/dist/modules/modal/hooks.d.ts +41 -0
  298. package/dist/modules/modal/hooks.d.ts.map +1 -0
  299. package/dist/modules/modal/index.d.ts +7 -0
  300. package/dist/modules/modal/index.d.ts.map +1 -0
  301. package/dist/modules/modal/index.js +2672 -0
  302. package/dist/modules/modal/index.js.map +1 -0
  303. package/dist/modules/modal/module.d.ts +12 -0
  304. package/dist/modules/modal/module.d.ts.map +1 -0
  305. package/dist/modules/modal/motion.d.ts +16 -0
  306. package/dist/modules/modal/motion.d.ts.map +1 -0
  307. package/dist/modules/modal/overlay.d.ts +4 -0
  308. package/dist/modules/modal/overlay.d.ts.map +1 -0
  309. package/dist/modules/modal/state.d.ts +4 -0
  310. package/dist/modules/modal/state.d.ts.map +1 -0
  311. package/dist/modules/modal/types.d.ts +109 -0
  312. package/dist/modules/modal/types.d.ts.map +1 -0
  313. package/dist/modules/modal/utils.d.ts +31 -0
  314. package/dist/modules/modal/utils.d.ts.map +1 -0
  315. package/dist/modules/notification/constants.d.ts +9 -0
  316. package/dist/modules/notification/constants.d.ts.map +1 -0
  317. package/dist/modules/notification/context.d.ts +7 -0
  318. package/dist/modules/notification/context.d.ts.map +1 -0
  319. package/dist/modules/notification/hooks.d.ts +10 -0
  320. package/dist/modules/notification/hooks.d.ts.map +1 -0
  321. package/dist/modules/notification/index.d.ts +7 -0
  322. package/dist/modules/notification/index.d.ts.map +1 -0
  323. package/dist/modules/notification/index.js +905 -0
  324. package/dist/modules/notification/index.js.map +1 -0
  325. package/dist/modules/notification/module.d.ts +11 -0
  326. package/dist/modules/notification/module.d.ts.map +1 -0
  327. package/dist/modules/notification/motion.d.ts +15 -0
  328. package/dist/modules/notification/motion.d.ts.map +1 -0
  329. package/dist/modules/notification/overlay.d.ts +3 -0
  330. package/dist/modules/notification/overlay.d.ts.map +1 -0
  331. package/dist/modules/notification/types.d.ts +57 -0
  332. package/dist/modules/notification/types.d.ts.map +1 -0
  333. package/dist/modules/notification/utils.d.ts +9 -0
  334. package/dist/modules/notification/utils.d.ts.map +1 -0
  335. package/dist/modules/theme.d.ts +3 -0
  336. package/dist/modules/theme.d.ts.map +1 -0
  337. package/dist/provider.d.ts +23 -0
  338. package/dist/provider.d.ts.map +1 -0
  339. package/dist/provider.js +1973 -0
  340. package/dist/provider.js.map +1 -0
  341. package/dist/result.d.ts +50 -0
  342. package/dist/result.d.ts.map +1 -0
  343. package/dist/result.js +163 -0
  344. package/dist/result.js.map +1 -0
  345. package/dist/theme.d.ts +25 -0
  346. package/dist/theme.d.ts.map +1 -0
  347. package/dist/theme.js +44 -0
  348. package/dist/theme.js.map +1 -0
  349. package/dist/tokens/index.d.ts +3 -0
  350. package/dist/tokens/index.d.ts.map +1 -0
  351. package/dist/tokens/index.js +325 -0
  352. package/dist/tokens/index.js.map +1 -0
  353. package/dist/tokens/motion.d.ts +315 -0
  354. package/dist/tokens/motion.d.ts.map +1 -0
  355. package/dist/tokens/tokens.d.ts +34 -0
  356. package/dist/tokens/tokens.d.ts.map +1 -0
  357. package/dist/utils/cn.d.ts +3 -0
  358. package/dist/utils/cn.d.ts.map +1 -0
  359. package/dist/utils/dom.d.ts +5 -0
  360. package/dist/utils/dom.d.ts.map +1 -0
  361. package/dist/utils/index.d.ts +16 -0
  362. package/dist/utils/index.d.ts.map +1 -0
  363. package/dist/utils/index.js +485 -0
  364. package/dist/utils/index.js.map +1 -0
  365. package/dist/utils/json.d.ts +3 -0
  366. package/dist/utils/json.d.ts.map +1 -0
  367. package/dist/utils/number.d.ts +4 -0
  368. package/dist/utils/number.d.ts.map +1 -0
  369. package/dist/utils/object.d.ts +7 -0
  370. package/dist/utils/object.d.ts.map +1 -0
  371. package/dist/utils/report.d.ts +5 -0
  372. package/dist/utils/report.d.ts.map +1 -0
  373. package/dist/utils/scheduler.d.ts +34 -0
  374. package/dist/utils/scheduler.d.ts.map +1 -0
  375. package/dist/utils/store.d.ts +11 -0
  376. package/dist/utils/store.d.ts.map +1 -0
  377. package/dist/utils/string.d.ts +8 -0
  378. package/dist/utils/string.d.ts.map +1 -0
  379. package/dist/utils/timing.d.ts +8 -0
  380. package/dist/utils/timing.d.ts.map +1 -0
  381. package/dist/utils/user-message.d.ts +20 -0
  382. package/dist/utils/user-message.d.ts.map +1 -0
  383. package/package.json +113 -0
@@ -0,0 +1,1256 @@
1
+ "use client";
2
+ import { Icon as Icon$1 } from '@iconify-icon/react';
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import '@radix-ui/react-tooltip';
5
+ import { createContext, useState, useRef, useCallback, useEffect, useMemo, useSyncExternalStore, useLayoutEffect, use, useId, useContext, isValidElement, cloneElement, Children } from 'react';
6
+ import 'clsx';
7
+ import 'tailwind-merge';
8
+ import { usePathname } from 'next/navigation';
9
+
10
+ function Icon({
11
+ className = "center",
12
+ color,
13
+ icon,
14
+ onClick,
15
+ size = 20,
16
+ style,
17
+ ...props
18
+ }) {
19
+ return /* @__PURE__ */ jsx(
20
+ Icon$1,
21
+ {
22
+ className,
23
+ height: size,
24
+ icon,
25
+ onClick,
26
+ style: { color, ...style },
27
+ width: size,
28
+ ...props
29
+ }
30
+ );
31
+ }
32
+ Icon.displayName = "Icon";
33
+ function Spinner({ className = "", size = 15 }) {
34
+ return /* @__PURE__ */ jsx(
35
+ "div",
36
+ {
37
+ className,
38
+ "aria-label": "Loading",
39
+ role: "status",
40
+ children: /* @__PURE__ */ jsx(Icon, { icon: "mingcute:loading-3-fill", size })
41
+ }
42
+ );
43
+ }
44
+ Spinner.displayName = "Spinner";
45
+ var listeners = /* @__PURE__ */ new Set();
46
+ var activeFullscreenStateIds = /* @__PURE__ */ new Set();
47
+ var ACTIVE_FULLSCREEN_ROOT_SELECTOR = '[data-fullscreen-state-root="true"][data-affect-global-state="true"]';
48
+ var domObserver = null;
49
+ var lastSnapshot = false;
50
+ function getDomSnapshot() {
51
+ if (typeof document === "undefined") {
52
+ return activeFullscreenStateIds.size > 0;
53
+ }
54
+ return document.querySelector(ACTIVE_FULLSCREEN_ROOT_SELECTOR) !== null;
55
+ }
56
+ function emitChange() {
57
+ listeners.forEach((listener) => listener());
58
+ }
59
+ function emitIfSnapshotChanged() {
60
+ const nextSnapshot = getDomSnapshot();
61
+ if (nextSnapshot === lastSnapshot) {
62
+ return;
63
+ }
64
+ lastSnapshot = nextSnapshot;
65
+ emitChange();
66
+ }
67
+ function ensureDomObserver() {
68
+ if (typeof document === "undefined" || domObserver || listeners.size === 0) {
69
+ return;
70
+ }
71
+ domObserver = new MutationObserver(() => {
72
+ emitIfSnapshotChanged();
73
+ });
74
+ domObserver.observe(document.documentElement, {
75
+ attributes: true,
76
+ childList: true,
77
+ subtree: true,
78
+ attributeFilter: [
79
+ "data-fullscreen-state",
80
+ "data-fullscreen-state-root",
81
+ "data-affect-global-state"
82
+ ]
83
+ });
84
+ }
85
+ function releaseDomObserver() {
86
+ if (listeners.size > 0 || !domObserver) {
87
+ return;
88
+ }
89
+ domObserver.disconnect();
90
+ domObserver = null;
91
+ }
92
+ function subscribe(listener) {
93
+ listeners.add(listener);
94
+ ensureDomObserver();
95
+ emitIfSnapshotChanged();
96
+ return () => {
97
+ listeners.delete(listener);
98
+ releaseDomObserver();
99
+ };
100
+ }
101
+ function getSnapshot() {
102
+ return getDomSnapshot();
103
+ }
104
+ function useIsFullscreenStateActive() {
105
+ return useSyncExternalStore(subscribe, getSnapshot, () => false);
106
+ }
107
+ function getOrCreateGlobalContext(name, defaultValue) {
108
+ const sym = /* @__PURE__ */ Symbol.for(`@omerdlw/base-framework/context/${name}`);
109
+ const store = globalThis;
110
+ if (!store[sym]) {
111
+ store[sym] = createContext(defaultValue);
112
+ }
113
+ return store[sym];
114
+ }
115
+
116
+ // src/theme.tsx
117
+ function defineThemeSpec(id) {
118
+ return Object.freeze({ id });
119
+ }
120
+ var EMPTY = /* @__PURE__ */ new Map();
121
+ var ThemeContext = getOrCreateGlobalContext("ThemeContext", EMPTY);
122
+ function useTheme(spec) {
123
+ const config = useContext(ThemeContext).get(spec.id);
124
+ if (!config) {
125
+ throw new Error(
126
+ `Theme "${spec.id}" is missing. Add its theme file to src/config/ and list it in src/config/index.ts.`
127
+ );
128
+ }
129
+ return {
130
+ slots: config.slots,
131
+ styles: config.styles ?? {}
132
+ };
133
+ }
134
+ function useRequiredContext(context, hookName, providerName) {
135
+ const value = use(context);
136
+ if (value === null) {
137
+ throw new Error(`${hookName} must be used within ${providerName}`);
138
+ }
139
+ return value;
140
+ }
141
+ function useStore(store, selector = (state) => state, isEqual = Object.is) {
142
+ const cacheRef = useRef({
143
+ isEqual: null,
144
+ selected: void 0,
145
+ selector: null,
146
+ snapshot: null
147
+ });
148
+ const getSelectedSnapshot = useCallback(() => {
149
+ const snapshot = store.getSnapshot();
150
+ const cache = cacheRef.current;
151
+ if (cache.snapshot === snapshot && cache.selector === selector && cache.isEqual === isEqual) {
152
+ return cache.selected;
153
+ }
154
+ const selected = selector(snapshot);
155
+ if (cache.snapshot !== null && cache.isEqual === isEqual && isEqual(cache.selected, selected)) {
156
+ cache.snapshot = snapshot;
157
+ cache.selector = selector;
158
+ return cache.selected;
159
+ }
160
+ cacheRef.current = {
161
+ isEqual,
162
+ selected,
163
+ selector,
164
+ snapshot
165
+ };
166
+ return selected;
167
+ }, [isEqual, selector, store]);
168
+ return useSyncExternalStore(
169
+ store.subscribe,
170
+ getSelectedSnapshot,
171
+ getSelectedSnapshot
172
+ );
173
+ }
174
+
175
+ // src/utils/string.ts
176
+ function trimToNull(value) {
177
+ if (value === null || value === void 0) return null;
178
+ const trimmed = String(value).trim();
179
+ return trimmed.length > 0 ? trimmed : null;
180
+ }
181
+
182
+ // src/utils/dom.ts
183
+ var isBrowser = typeof window !== "undefined";
184
+
185
+ // src/utils/object.ts
186
+ function isObject(value) {
187
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
188
+ }
189
+ function report(scope, error, level = "error") {
190
+ if (process.env.NODE_ENV === "production" && typeof window !== "undefined") {
191
+ return;
192
+ }
193
+ console[level](`[${scope}]`, error);
194
+ }
195
+
196
+ // src/utils/store.ts
197
+ function freezeStoreSnapshot(state) {
198
+ if (process.env.NODE_ENV === "production" || !state || typeof state !== "object") {
199
+ return state;
200
+ }
201
+ const seen = /* @__PURE__ */ new WeakSet();
202
+ const freeze = (value) => {
203
+ if (seen.has(value) || Object.isFrozen(value)) return;
204
+ seen.add(value);
205
+ const prototype = Object.getPrototypeOf(value);
206
+ if (Array.isArray(value) || prototype === Object.prototype || prototype === null) {
207
+ for (const key of Reflect.ownKeys(value)) {
208
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
209
+ if (descriptor && "value" in descriptor && descriptor.value !== null) {
210
+ if (typeof descriptor.value === "object") freeze(descriptor.value);
211
+ }
212
+ }
213
+ }
214
+ Object.freeze(value);
215
+ };
216
+ freeze(state);
217
+ return state;
218
+ }
219
+ function createStore(initialState, { freezeSnapshots = true } = {}) {
220
+ const listeners2 = /* @__PURE__ */ new Set();
221
+ const prepare = freezeSnapshots ? freezeStoreSnapshot : (state) => state;
222
+ let snapshot = prepare(initialState);
223
+ const publish = (nextStateOrUpdater) => {
224
+ const nextState = typeof nextStateOrUpdater === "function" ? nextStateOrUpdater(snapshot) : nextStateOrUpdater;
225
+ if (Object.is(snapshot, nextState)) return false;
226
+ snapshot = prepare(nextState);
227
+ for (const listener of listeners2) {
228
+ try {
229
+ listener();
230
+ } catch (error) {
231
+ report("CoreStore subscriber", error, "warn");
232
+ }
233
+ }
234
+ return true;
235
+ };
236
+ const setState = (updater) => {
237
+ if (typeof updater === "function") {
238
+ return publish(updater);
239
+ }
240
+ if (snapshot && typeof snapshot === "object" && updater && typeof updater === "object") {
241
+ return publish({ ...snapshot, ...updater });
242
+ }
243
+ return publish(updater);
244
+ };
245
+ return Object.freeze({
246
+ getSnapshot() {
247
+ return snapshot;
248
+ },
249
+ publish,
250
+ setState,
251
+ subscribe(listener) {
252
+ if (typeof listener !== "function") return () => {
253
+ };
254
+ listeners2.add(listener);
255
+ return () => listeners2.delete(listener);
256
+ }
257
+ });
258
+ }
259
+
260
+ // src/hooks/use-isomorphic-layout-effect.ts
261
+ var useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;
262
+ var EventEmitter = class {
263
+ events = /* @__PURE__ */ new Map();
264
+ debounceTimers = /* @__PURE__ */ new Map();
265
+ subscribe(event, callback) {
266
+ if (typeof event !== "string" || !event || typeof callback !== "function") {
267
+ return () => {
268
+ };
269
+ }
270
+ const listeners2 = this.events.get(event) || /* @__PURE__ */ new Set();
271
+ listeners2.add(callback);
272
+ this.events.set(event, listeners2);
273
+ return () => {
274
+ listeners2.delete(callback);
275
+ if (listeners2.size === 0) this.events.delete(event);
276
+ };
277
+ }
278
+ emit(event, payload) {
279
+ const listeners2 = this.events.get(event);
280
+ if (!listeners2 || listeners2.size === 0) return;
281
+ const snapshot = Array.from(listeners2);
282
+ for (const callback of snapshot) {
283
+ try {
284
+ callback(payload);
285
+ } catch (error) {
286
+ report(`Event listener (${String(event)})`, error);
287
+ }
288
+ }
289
+ }
290
+ emitDebounced(event, payload, waitMs = 100) {
291
+ const existing = this.debounceTimers.get(event);
292
+ if (existing) clearTimeout(existing);
293
+ const timer = setTimeout(() => {
294
+ this.debounceTimers.delete(event);
295
+ this.emit(event, payload);
296
+ }, waitMs);
297
+ this.debounceTimers.set(event, timer);
298
+ }
299
+ cancelDebounced(event) {
300
+ if (event) {
301
+ const timer = this.debounceTimers.get(event);
302
+ if (timer) {
303
+ clearTimeout(timer);
304
+ this.debounceTimers.delete(event);
305
+ }
306
+ } else {
307
+ for (const timer of this.debounceTimers.values()) {
308
+ clearTimeout(timer);
309
+ }
310
+ this.debounceTimers.clear();
311
+ }
312
+ }
313
+ unsubscribeAll(event) {
314
+ this.cancelDebounced(event);
315
+ if (event) this.events.delete(event);
316
+ else this.events.clear();
317
+ }
318
+ hasListeners(event) {
319
+ return Boolean(this.events.get(event)?.size);
320
+ }
321
+ getListenerCount(event) {
322
+ return this.events.get(event)?.size || 0;
323
+ }
324
+ getAllEvents() {
325
+ return [...this.events.keys()];
326
+ }
327
+ };
328
+ var GLOBAL_EVENTS_KEY = /* @__PURE__ */ Symbol.for("__base_framework_global_events__");
329
+ var _global = globalThis;
330
+ _global[GLOBAL_EVENTS_KEY] ?? (_global[GLOBAL_EVENTS_KEY] = new EventEmitter());
331
+
332
+ // src/kernel/constants.ts
333
+ var DEFAULT_SOURCE = "dynamic";
334
+ var REGISTRY_SOURCES = Object.freeze({
335
+ STATIC: "static",
336
+ DYNAMIC: "dynamic",
337
+ USER: "user"
338
+ });
339
+ var REGISTRY_LIFECYCLES = Object.freeze({
340
+ IMMEDIATE: "immediate",
341
+ GRACEFUL: "graceful",
342
+ PERSISTENT: "persistent",
343
+ ROUTE: "route"
344
+ });
345
+ var REGISTRY_VALIDATION_MODES = Object.freeze({
346
+ WARN: "warn",
347
+ STRICT: "strict"
348
+ });
349
+ var REGISTRY_METADATA_KEYS = Object.freeze([
350
+ "cleanup",
351
+ "cleanupDelayMs",
352
+ "instanceId",
353
+ "lifecycle",
354
+ "priority",
355
+ "source",
356
+ "scope",
357
+ "validation"
358
+ ]);
359
+ Object.freeze({
360
+ [REGISTRY_SOURCES.STATIC]: 100,
361
+ [REGISTRY_SOURCES.DYNAMIC]: 200,
362
+ [REGISTRY_SOURCES.USER]: 300
363
+ });
364
+ Object.freeze({
365
+ [REGISTRY_SOURCES.STATIC]: 10,
366
+ [REGISTRY_SOURCES.DYNAMIC]: 20,
367
+ [REGISTRY_SOURCES.USER]: 30
368
+ });
369
+ var REGISTRY_LIFECYCLE_VALUES = new Set(
370
+ Object.values(REGISTRY_LIFECYCLES)
371
+ );
372
+ var REGISTRY_METADATA_KEY_SET = new Set(
373
+ REGISTRY_METADATA_KEYS
374
+ );
375
+ var REGISTRY_SCOPE_KINDS = Object.freeze({
376
+ APP: "app",
377
+ SESSION: "session",
378
+ ROUTE: "route",
379
+ INSTANCE: "instance",
380
+ WORKSPACE: "workspace"
381
+ });
382
+ REGISTRY_SCOPE_KINDS.APP;
383
+
384
+ // src/kernel/utils.ts
385
+ function parseFiniteNumber(value) {
386
+ const parsed = Number(value);
387
+ return Number.isFinite(parsed) ? parsed : null;
388
+ }
389
+ function getValidString(value, fallback = null) {
390
+ return trimToNull(value) ?? fallback;
391
+ }
392
+
393
+ // src/kernel/schema.ts
394
+ function resolveLifecycle(metadata, fallback) {
395
+ const lifecycle = metadata?.lifecycle ?? metadata?.cleanup;
396
+ return lifecycle && REGISTRY_LIFECYCLE_VALUES.has(lifecycle) ? lifecycle : fallback;
397
+ }
398
+ function validateRegistryMetadata(metadata) {
399
+ if (metadata === void 0 || metadata === null)
400
+ return { issues: [], valid: true };
401
+ if (!isObject(metadata))
402
+ return { issues: ["registry metadata must be an object"], valid: false };
403
+ const issues = [];
404
+ Object.keys(metadata).forEach((key) => {
405
+ if (!REGISTRY_METADATA_KEY_SET.has(key))
406
+ issues.push(`unknown registry metadata field: ${key}`);
407
+ });
408
+ if (metadata.source !== void 0 && !getValidString(metadata.source))
409
+ issues.push("source must be a non-empty string");
410
+ if (metadata.instanceId !== void 0 && !getValidString(metadata.instanceId))
411
+ issues.push("instanceId must be a non-empty string");
412
+ if (metadata.scope !== void 0 && !getValidString(metadata.scope))
413
+ issues.push("scope must be a non-empty string");
414
+ if (metadata.priority !== void 0 && parseFiniteNumber(metadata.priority) === null)
415
+ issues.push("priority must be a finite number");
416
+ if (metadata.cleanupDelayMs !== void 0) {
417
+ const delay = parseFiniteNumber(metadata.cleanupDelayMs);
418
+ if (delay === null || delay < 0)
419
+ issues.push("cleanupDelayMs must be a non-negative finite number");
420
+ }
421
+ const lifecycle = metadata.lifecycle ?? metadata.cleanup;
422
+ if (lifecycle !== void 0 && !REGISTRY_LIFECYCLE_VALUES.has(String(lifecycle))) {
423
+ issues.push(
424
+ `lifecycle must be one of: ${[...REGISTRY_LIFECYCLE_VALUES].join(", ")}`
425
+ );
426
+ }
427
+ if (metadata.validation !== void 0 && !Object.values(REGISTRY_VALIDATION_MODES).includes(
428
+ metadata.validation
429
+ )) {
430
+ issues.push(
431
+ `validation must be one of: ${Object.values(REGISTRY_VALIDATION_MODES).join(", ")}`
432
+ );
433
+ }
434
+ return { issues, valid: issues.length === 0 };
435
+ }
436
+ function normalizeRegistryMetadata(metadata, {
437
+ defaultCleanupDelayMs = null,
438
+ defaultLifecycle = null,
439
+ defaultSource = DEFAULT_SOURCE
440
+ } = {}) {
441
+ const registryMeta = isObject(metadata) ? metadata : {};
442
+ const normalizedDefaultDelay = parseFiniteNumber(defaultCleanupDelayMs);
443
+ const fallbackCleanupDelayMs = normalizedDefaultDelay !== null && normalizedDefaultDelay >= 0 ? normalizedDefaultDelay : null;
444
+ const fallbackLifecycle = defaultLifecycle && REGISTRY_LIFECYCLE_VALUES.has(defaultLifecycle) ? defaultLifecycle : null;
445
+ const source = getValidString(registryMeta.source) || getValidString(defaultSource, DEFAULT_SOURCE) || DEFAULT_SOURCE;
446
+ const scope = getValidString(registryMeta.scope);
447
+ const priority = parseFiniteNumber(registryMeta.priority);
448
+ const lifecycle = resolveLifecycle(registryMeta, fallbackLifecycle);
449
+ const validation = isValidationMode(registryMeta.validation) ? registryMeta.validation : null;
450
+ const cleanupDelayCandidate = parseFiniteNumber(registryMeta.cleanupDelayMs);
451
+ let cleanupDelayMs = cleanupDelayCandidate !== null && cleanupDelayCandidate >= 0 ? cleanupDelayCandidate : fallbackCleanupDelayMs;
452
+ if (lifecycle === REGISTRY_LIFECYCLES.IMMEDIATE) {
453
+ cleanupDelayMs = 0;
454
+ } else if ((lifecycle === REGISTRY_LIFECYCLES.GRACEFUL || lifecycle === REGISTRY_LIFECYCLES.ROUTE) && cleanupDelayMs === null) {
455
+ cleanupDelayMs = fallbackCleanupDelayMs;
456
+ }
457
+ return {
458
+ cleanupDelayMs,
459
+ lifecycle,
460
+ priority,
461
+ registerOptions: {
462
+ ...priority !== null && { priority },
463
+ ...validation === REGISTRY_VALIDATION_MODES.STRICT && { validation },
464
+ ...scope && { scope }
465
+ },
466
+ source,
467
+ ...scope && { scope },
468
+ ...validation && { validation }
469
+ };
470
+ }
471
+ function isValidationMode(value) {
472
+ return Object.values(REGISTRY_VALIDATION_MODES).includes(value);
473
+ }
474
+ function pickRegistryMetadata(options) {
475
+ if (!isObject(options)) return {};
476
+ return Object.fromEntries(
477
+ REGISTRY_METADATA_KEYS.filter((key) => options[key] !== void 0).map(
478
+ (key) => [key, options[key]]
479
+ )
480
+ );
481
+ }
482
+ function createNoopHandle(status = "rejected", reason = "unknown") {
483
+ const handle = Object.assign(() => false, {
484
+ active: false,
485
+ dispose: () => false,
486
+ instanceId: null,
487
+ key: "",
488
+ priority: 0,
489
+ reason,
490
+ source: "",
491
+ status,
492
+ type: "",
493
+ update: () => handle,
494
+ updatedAt: 0,
495
+ validation: "warn"
496
+ });
497
+ return handle;
498
+ }
499
+ createNoopHandle();
500
+ var RegistryContext = getOrCreateGlobalContext(
501
+ "RegistryContext",
502
+ null
503
+ );
504
+ function useRegistryActions() {
505
+ return useRequiredContext(
506
+ RegistryContext,
507
+ "useRegistryActions",
508
+ "RegistryProvider"
509
+ ).actions;
510
+ }
511
+ function useRegistrySubscription() {
512
+ return useRequiredContext(
513
+ RegistryContext,
514
+ "useRegistrySubscription",
515
+ "RegistryProvider"
516
+ ).subscription;
517
+ }
518
+ function useRegistryValue(type, key) {
519
+ const { getSnapshot: getSnapshot2, subscribe: subscribe2 } = useRegistrySubscription();
520
+ const subscribeToKey = useCallback(
521
+ (listener) => subscribe2(type, key, listener),
522
+ [key, subscribe2, type]
523
+ );
524
+ const getValue = useCallback(
525
+ () => getSnapshot2(type, key),
526
+ [getSnapshot2, key, type]
527
+ );
528
+ return useSyncExternalStore(subscribeToKey, getValue, getValue);
529
+ }
530
+ var EMPTY_MODULES = Object.freeze([]);
531
+ var ModuleHostContext = getOrCreateGlobalContext("ModuleHostContext", null);
532
+ function selectModuleSlice(coreModule, config) {
533
+ const slice = coreModule.page?.select ? coreModule.page.select(config) : config[coreModule.id];
534
+ return slice ?? null;
535
+ }
536
+ function createModulePayload(modules, config, metadata = {}) {
537
+ const payload = {};
538
+ let hasSlices = false;
539
+ for (const coreModule of modules) {
540
+ if (!coreModule.page?.entries) continue;
541
+ const slice = selectModuleSlice(coreModule, config);
542
+ if (slice === null) continue;
543
+ payload[coreModule.id] = slice;
544
+ hasSlices = true;
545
+ }
546
+ if (!hasSlices) return null;
547
+ return {
548
+ ...payload,
549
+ registry: {
550
+ ...metadata,
551
+ ...isObject(config.registry) ? config.registry : {}
552
+ }
553
+ };
554
+ }
555
+ function useInstalledModules() {
556
+ return use(ModuleHostContext)?.modules ?? EMPTY_MODULES;
557
+ }
558
+
559
+ // src/kernel/handlers.ts
560
+ function isPersistentLifecycle(lifecycle) {
561
+ return lifecycle === REGISTRY_LIFECYCLES.PERSISTENT;
562
+ }
563
+ function runRegistrationBatch(context, executor) {
564
+ return typeof context.batch === "function" ? context.batch(executor) : executor(context);
565
+ }
566
+ function createEntryCleanupKey(type, key, source, instanceId, scope) {
567
+ return JSON.stringify([
568
+ "entry",
569
+ type,
570
+ key,
571
+ scope ?? null,
572
+ source,
573
+ instanceId
574
+ ]);
575
+ }
576
+ function getCleanupScope(context) {
577
+ return context?.cleanupScope || /* @__PURE__ */ new Map();
578
+ }
579
+ function clearCleanupTimer(scope, cleanupKey) {
580
+ const lifecycle = scope.get(cleanupKey);
581
+ if (!lifecycle) return;
582
+ lifecycle.cancelled = true;
583
+ if (lifecycle.timerId !== null) clearTimeout(lifecycle.timerId);
584
+ scope.delete(cleanupKey);
585
+ }
586
+ function scheduleCleanup(scope, cleanupKey, callback, delayMs) {
587
+ clearCleanupTimer(scope, cleanupKey);
588
+ const lifecycle = {
589
+ cancelled: false,
590
+ timerId: null
591
+ };
592
+ lifecycle.timerId = setTimeout(() => {
593
+ if (lifecycle.cancelled || scope.get(cleanupKey) !== lifecycle) return;
594
+ scope.delete(cleanupKey);
595
+ callback();
596
+ }, delayMs);
597
+ scope.set(cleanupKey, lifecycle);
598
+ }
599
+ function collectModuleRegistrations(coreModule, slice, pageMetadata, context) {
600
+ const definition = coreModule.registry;
601
+ const toEntries = coreModule.page?.entries;
602
+ if (!definition || !toEntries || slice == null || slice === false) return [];
603
+ const type = coreModule.id;
604
+ const items = Array.isArray(slice) ? slice : [slice];
605
+ const registrations = [];
606
+ for (const item of items) {
607
+ if (item == null || item === false) continue;
608
+ const itemMetadata = isObject(item) && isObject(item.registry) ? item.registry : {};
609
+ const metadata = { ...pageMetadata, ...itemMetadata };
610
+ if (metadata.validation === "strict" && !validateRegistryMetadata(metadata).valid) {
611
+ continue;
612
+ }
613
+ const payload = isObject(item) ? Object.fromEntries(
614
+ Object.entries(item).filter(([key]) => key !== "registry")
615
+ ) : item;
616
+ const { cleanupDelayMs, lifecycle, registerOptions, scope, source } = normalizeRegistryMetadata(metadata, {
617
+ defaultCleanupDelayMs: definition.cleanupDelayMs ?? null,
618
+ defaultLifecycle: definition.lifecycle,
619
+ defaultSource: DEFAULT_SOURCE
620
+ });
621
+ for (const { key, value } of toEntries(payload, context) ?? []) {
622
+ const validation = definition.validate?.(value);
623
+ if (validation && !validation.valid) {
624
+ report(`Registry ${type} config is invalid`, validation.issues, "warn");
625
+ continue;
626
+ }
627
+ registrations.push({
628
+ cleanupDelayMs,
629
+ cleanupKey: createEntryCleanupKey(
630
+ type,
631
+ key,
632
+ source,
633
+ context.instanceId,
634
+ scope
635
+ ),
636
+ key,
637
+ lifecycle,
638
+ registerOptions,
639
+ scope,
640
+ source,
641
+ type,
642
+ value
643
+ });
644
+ }
645
+ }
646
+ return registrations;
647
+ }
648
+ var NO_CLEANUP = () => {
649
+ };
650
+ function applyRegistryConfig(config, context) {
651
+ const modules = context.modules ?? [];
652
+ if (!config || modules.length === 0) return NO_CLEANUP;
653
+ const pageMetadata = isObject(config.registry) ? config.registry : {};
654
+ const slices = config;
655
+ const registrations = modules.flatMap((coreModule) => {
656
+ try {
657
+ return collectModuleRegistrations(
658
+ coreModule,
659
+ slices[coreModule.id],
660
+ pageMetadata,
661
+ context
662
+ );
663
+ } catch (error) {
664
+ report(`Registry apply (${coreModule.id})`, error);
665
+ return [];
666
+ }
667
+ });
668
+ if (registrations.length === 0) return NO_CLEANUP;
669
+ const cleanupScope = getCleanupScope(context);
670
+ const owner = (registration) => ({
671
+ instanceId: context.instanceId,
672
+ scope: registration.scope,
673
+ source: registration.source
674
+ });
675
+ runRegistrationBatch(context, (queue) => {
676
+ registrations.forEach(
677
+ ({ cleanupKey, key, registerOptions, source, type, value }) => {
678
+ clearCleanupTimer(cleanupScope, cleanupKey);
679
+ queue.register(type, key, value, source, registerOptions);
680
+ }
681
+ );
682
+ });
683
+ return () => {
684
+ const immediate = [];
685
+ registrations.forEach((registration) => {
686
+ if (isPersistentLifecycle(registration.lifecycle)) return;
687
+ const { cleanupDelayMs, cleanupKey, key, type } = registration;
688
+ if (typeof cleanupDelayMs === "number" && cleanupDelayMs > 0) {
689
+ scheduleCleanup(
690
+ cleanupScope,
691
+ cleanupKey,
692
+ () => context.unregister(type, key, owner(registration)),
693
+ cleanupDelayMs
694
+ );
695
+ } else {
696
+ immediate.push(registration);
697
+ }
698
+ });
699
+ if (immediate.length === 0) return;
700
+ runRegistrationBatch(context, (queue) => {
701
+ immediate.forEach(
702
+ (registration) => queue.unregister(
703
+ registration.type,
704
+ registration.key,
705
+ owner(registration)
706
+ )
707
+ );
708
+ });
709
+ };
710
+ }
711
+
712
+ // src/kernel/hooks.ts
713
+ function withInstanceId(instanceId, sourceOrOptions, optionsArg) {
714
+ if (typeof sourceOrOptions === "string") {
715
+ return {
716
+ optionsArg: { ...isObject(optionsArg) ? optionsArg : {}, instanceId },
717
+ sourceOrOptions
718
+ };
719
+ }
720
+ if (isObject(sourceOrOptions)) {
721
+ return {
722
+ optionsArg,
723
+ sourceOrOptions: { ...sourceOrOptions, instanceId }
724
+ };
725
+ }
726
+ return {
727
+ optionsArg: void 0,
728
+ sourceOrOptions: {
729
+ ...isObject(optionsArg) ? optionsArg : {},
730
+ instanceId
731
+ }
732
+ };
733
+ }
734
+ function withInstanceIdForUnregister(instanceId, sourceOrOptions) {
735
+ if (typeof sourceOrOptions === "string") {
736
+ return { instanceId, source: sourceOrOptions };
737
+ }
738
+ if (isObject(sourceOrOptions)) {
739
+ return { ...sourceOrOptions, instanceId };
740
+ }
741
+ return { instanceId };
742
+ }
743
+ function resolveRegisterArgsWithInstance(instanceId, sourceOrOptions, optionsArg) {
744
+ const input = withInstanceId(instanceId, sourceOrOptions, optionsArg);
745
+ return [input.sourceOrOptions, input.optionsArg];
746
+ }
747
+ var MAX_STABILIZATION_DEPTH = 64;
748
+ function createStableFunctionEntry(fn) {
749
+ const entry = {
750
+ current: fn,
751
+ stable(...args) {
752
+ return entry.current?.apply(this, args);
753
+ }
754
+ };
755
+ return entry;
756
+ }
757
+ function isDirectRegistryComponentPath(path, componentSlices) {
758
+ const match = /^config\.([^.[]+)\.[^.[]+$/.exec(path);
759
+ return Boolean(match && componentSlices.has(match[1]));
760
+ }
761
+ function isReactNodeLike(value) {
762
+ return value === null || value === void 0 || typeof value === "boolean" || typeof value === "string" || typeof value === "number" || isValidElement(value);
763
+ }
764
+ function isStabilizableObject(value) {
765
+ return typeof value === "object" && value !== null && !Array.isArray(value) && !isValidElement(value);
766
+ }
767
+ function hasSameObjectKeys(previousValue, nextValue) {
768
+ if (!isStabilizableObject(previousValue) || !isStabilizableObject(nextValue)) {
769
+ return false;
770
+ }
771
+ const previousKeys = Object.keys(previousValue);
772
+ const nextKeys = Object.keys(nextValue);
773
+ if (previousKeys.length !== nextKeys.length) return false;
774
+ return nextKeys.every(
775
+ (key) => Object.prototype.hasOwnProperty.call(previousValue, key)
776
+ );
777
+ }
778
+ function stabilizeRegistryValue(value, path, scope, previousValue, seen = /* @__PURE__ */ new WeakSet(), depth = 0) {
779
+ if (depth > MAX_STABILIZATION_DEPTH) return value;
780
+ if (typeof value === "function") {
781
+ const isComponent = value.name && /^[A-Z]/.test(value.name);
782
+ if (isComponent || isDirectRegistryComponentPath(path, scope.componentSlices)) {
783
+ return value;
784
+ }
785
+ scope.usedPaths.add(path);
786
+ let entry = scope.functionEntries.get(path);
787
+ if (!entry) {
788
+ entry = createStableFunctionEntry(value);
789
+ scope.functionEntries.set(path, entry);
790
+ } else {
791
+ entry.current = value;
792
+ }
793
+ return entry.stable;
794
+ }
795
+ if (value && typeof value === "object") {
796
+ if (seen.has(value)) return value;
797
+ seen.add(value);
798
+ }
799
+ if (isValidElement(value)) {
800
+ const nextProps = stabilizeRegistryValue(
801
+ value.props,
802
+ `${path}.props`,
803
+ scope,
804
+ isValidElement(previousValue) ? previousValue.props : void 0,
805
+ seen,
806
+ depth + 1
807
+ );
808
+ if (isValidElement(previousValue) && previousValue.type === value.type && previousValue.key === value.key && previousValue.props === nextProps) {
809
+ return previousValue;
810
+ }
811
+ return cloneElement(value, nextProps);
812
+ }
813
+ if (Array.isArray(value)) {
814
+ const nextValue = value.every(isReactNodeLike) ? Children.toArray(value) : value;
815
+ const previousArray = Array.isArray(previousValue) ? previousValue : null;
816
+ let hasChanged2 = !previousArray || previousArray.length !== nextValue.length;
817
+ const stabilizedValue2 = nextValue.map((item, index) => {
818
+ const nextItem = stabilizeRegistryValue(
819
+ item,
820
+ `${path}[${index}]`,
821
+ scope,
822
+ previousArray?.[index],
823
+ seen,
824
+ depth + 1
825
+ );
826
+ if (!previousArray || nextItem !== previousArray[index]) {
827
+ hasChanged2 = true;
828
+ }
829
+ return nextItem;
830
+ });
831
+ return !hasChanged2 ? previousArray : stabilizedValue2;
832
+ }
833
+ if (typeof value !== "object" || value === null) {
834
+ return value;
835
+ }
836
+ const source = value;
837
+ const previousRecord = previousValue;
838
+ const stabilizedValue = {};
839
+ const canReusePrevious = hasSameObjectKeys(previousValue, value);
840
+ let hasChanged = !canReusePrevious;
841
+ Object.keys(source).forEach((key) => {
842
+ const nextValue = stabilizeRegistryValue(
843
+ source[key],
844
+ `${path}.${key}`,
845
+ scope,
846
+ previousRecord?.[key],
847
+ seen,
848
+ depth + 1
849
+ );
850
+ stabilizedValue[key] = nextValue;
851
+ if (!canReusePrevious || nextValue !== previousRecord?.[key]) {
852
+ hasChanged = true;
853
+ }
854
+ });
855
+ return !hasChanged ? previousValue : stabilizedValue;
856
+ }
857
+ function useAppliedRegistryConfig(payload, context, componentSlices) {
858
+ const functionEntriesRef = useRef(/* @__PURE__ */ new Map());
859
+ const appliedRef = useRef(null);
860
+ useIsomorphicLayoutEffect(() => {
861
+ const previous = appliedRef.current;
862
+ if (previous && previous.payload === payload && previous.context === context) {
863
+ return;
864
+ }
865
+ const functionEntries = functionEntriesRef.current;
866
+ const usedPaths = /* @__PURE__ */ new Set();
867
+ const config = stabilizeRegistryValue(
868
+ payload,
869
+ "config",
870
+ { componentSlices, functionEntries, usedPaths },
871
+ previous?.config
872
+ );
873
+ functionEntries.forEach((_entry, path) => {
874
+ if (!usedPaths.has(path)) functionEntries.delete(path);
875
+ });
876
+ if (previous && previous.config === config && previous.context === context) {
877
+ previous.payload = payload;
878
+ return;
879
+ }
880
+ previous?.cleanup();
881
+ appliedRef.current = {
882
+ cleanup: applyRegistryConfig(config, context),
883
+ config,
884
+ context,
885
+ payload
886
+ };
887
+ });
888
+ useIsomorphicLayoutEffect(
889
+ () => () => {
890
+ appliedRef.current?.cleanup();
891
+ appliedRef.current = null;
892
+ },
893
+ []
894
+ );
895
+ }
896
+ function createRegistryApplyContext(actions, {
897
+ cleanupScope = /* @__PURE__ */ new Map(),
898
+ instanceId,
899
+ modules = [],
900
+ pathname
901
+ }) {
902
+ const stamp = (queue) => ({
903
+ register: (type, key, item, sourceOrOptions, optionsArg) => queue.register(
904
+ type,
905
+ key,
906
+ item,
907
+ ...resolveRegisterArgsWithInstance(
908
+ instanceId,
909
+ sourceOrOptions,
910
+ optionsArg
911
+ )
912
+ ),
913
+ unregister: (type, key, sourceOrOptions) => queue.unregister(
914
+ type,
915
+ key,
916
+ withInstanceIdForUnregister(instanceId, sourceOrOptions)
917
+ )
918
+ });
919
+ return {
920
+ ...stamp(actions),
921
+ batch: (executor) => typeof executor === "function" ? actions.batch((queue) => executor(stamp(queue))) : 0,
922
+ cleanupScope,
923
+ instanceId,
924
+ modules,
925
+ pathname
926
+ };
927
+ }
928
+ function useRegistry(config, metadata) {
929
+ const { batch, register, unregister } = useRegistryActions();
930
+ const pathname = usePathname();
931
+ const modules = useInstalledModules();
932
+ const instanceId = `registry-instance-${useId()}`;
933
+ const [cleanupScope] = useState(
934
+ () => /* @__PURE__ */ new Map()
935
+ );
936
+ const context = useMemo(
937
+ () => createRegistryApplyContext(
938
+ { batch, register, unregister },
939
+ {
940
+ cleanupScope,
941
+ instanceId,
942
+ modules,
943
+ pathname
944
+ }
945
+ ),
946
+ [batch, cleanupScope, instanceId, modules, pathname, register, unregister]
947
+ );
948
+ const payload = useMemo(
949
+ () => config ? createModulePayload(modules, config, metadata) : null,
950
+ [config, metadata, modules]
951
+ );
952
+ const componentSlices = useMemo(
953
+ () => new Set(
954
+ modules.filter(
955
+ (coreModule) => coreModule.registry?.valueKind === "component"
956
+ ).map((coreModule) => coreModule.id)
957
+ ),
958
+ [modules]
959
+ );
960
+ useAppliedRegistryConfig(payload, context, componentSlices);
961
+ }
962
+ function createPageControllerStore() {
963
+ const listeners2 = /* @__PURE__ */ new Set();
964
+ let stack = [];
965
+ const notify = () => {
966
+ listeners2.forEach((listener) => {
967
+ try {
968
+ listener();
969
+ } catch (error) {
970
+ report("Page controller listener", error);
971
+ }
972
+ });
973
+ };
974
+ return {
975
+ getSnapshot() {
976
+ const top = stack[stack.length - 1];
977
+ return top?.controllerRef?.current || null;
978
+ },
979
+ notify,
980
+ register(id, controllerRef) {
981
+ stack = stack.filter((item) => item.id !== id);
982
+ stack.push({ controllerRef, id });
983
+ notify();
984
+ },
985
+ subscribe(listener) {
986
+ listeners2.add(listener);
987
+ return () => {
988
+ listeners2.delete(listener);
989
+ };
990
+ },
991
+ unregister(id) {
992
+ stack = stack.filter((item) => item.id !== id);
993
+ notify();
994
+ }
995
+ };
996
+ }
997
+ var fallbackStandaloneStore = createPageControllerStore();
998
+ getOrCreateGlobalContext(
999
+ "PageControllerContext",
1000
+ null
1001
+ );
1002
+ getOrCreateGlobalContext(
1003
+ "PageControllerStoreContext",
1004
+ fallbackStandaloneStore
1005
+ );
1006
+ function defineModule(coreModule) {
1007
+ return Object.freeze({ ...coreModule });
1008
+ }
1009
+ createStore(void 0);
1010
+
1011
+ // src/kernel/adapters.tsx
1012
+ function useModuleRegistration(id, value, options) {
1013
+ const coreModule = useInstalledModules().find(
1014
+ (candidate) => candidate.id === id
1015
+ );
1016
+ const config = coreModule && options?.enabled !== false && value != null ? { [id]: value } : null;
1017
+ useRegistry(config, pickRegistryMetadata(options));
1018
+ }
1019
+
1020
+ // src/modules/loading/constants.ts
1021
+ var DEFAULT_LOADING_STATE = Object.freeze({
1022
+ isLoading: false,
1023
+ skeleton: null,
1024
+ minDuration: 0,
1025
+ showOverlay: true,
1026
+ message: null
1027
+ });
1028
+ var LOADING_REGISTRY_KEY = "page-loading";
1029
+ var loadingTheme = defineThemeSpec("loading");
1030
+
1031
+ // src/modules/loading/utils.ts
1032
+ function normalizeLoadingOptions(options = {}) {
1033
+ const minDuration = Number(options.minDuration);
1034
+ return {
1035
+ message: typeof options.message === "string" ? options.message : null,
1036
+ minDuration: Number.isFinite(minDuration) && minDuration > 0 ? minDuration : 0,
1037
+ showOverlay: options.showOverlay !== false,
1038
+ skeleton: options.skeleton ?? null
1039
+ };
1040
+ }
1041
+ function selectPageLoading(loading) {
1042
+ if (loading === void 0 || loading === null) return null;
1043
+ if (typeof loading === "boolean") return { isLoading: loading };
1044
+ if (typeof loading === "string") return { isLoading: true, message: loading };
1045
+ return loading;
1046
+ }
1047
+ var LoadingContext = getOrCreateGlobalContext("LoadingContext", null);
1048
+ function useLoadingRegistration(config, options) {
1049
+ useModuleRegistration("loading", config, options);
1050
+ }
1051
+ function LoadingProvider({ children }) {
1052
+ const [manualState, setManualState] = useState(
1053
+ DEFAULT_LOADING_STATE
1054
+ );
1055
+ const startTimeRef = useRef(null);
1056
+ const minDurationRef = useRef(0);
1057
+ const stopTimerRef = useRef(null);
1058
+ const registryLoading = useRegistryValue(
1059
+ "loading",
1060
+ LOADING_REGISTRY_KEY
1061
+ );
1062
+ const clearStopTimer = useCallback(() => {
1063
+ if (stopTimerRef.current !== null) {
1064
+ clearTimeout(stopTimerRef.current);
1065
+ stopTimerRef.current = null;
1066
+ }
1067
+ }, []);
1068
+ const resetState = useCallback(() => {
1069
+ clearStopTimer();
1070
+ minDurationRef.current = 0;
1071
+ startTimeRef.current = null;
1072
+ setManualState(DEFAULT_LOADING_STATE);
1073
+ }, [clearStopTimer]);
1074
+ const startLoading = useCallback(
1075
+ (options = {}) => {
1076
+ clearStopTimer();
1077
+ const nextState = normalizeLoadingOptions(options);
1078
+ startTimeRef.current = Date.now();
1079
+ minDurationRef.current = nextState.minDuration;
1080
+ setManualState({
1081
+ ...nextState,
1082
+ isLoading: true
1083
+ });
1084
+ },
1085
+ [clearStopTimer]
1086
+ );
1087
+ const stopLoading = useCallback(() => {
1088
+ const startTime = startTimeRef.current;
1089
+ const activeMinDuration = minDurationRef.current;
1090
+ if (startTime === null || activeMinDuration === 0) {
1091
+ resetState();
1092
+ return;
1093
+ }
1094
+ const elapsed = Date.now() - startTime;
1095
+ const remaining = activeMinDuration - elapsed;
1096
+ if (remaining <= 0) {
1097
+ resetState();
1098
+ return;
1099
+ }
1100
+ clearStopTimer();
1101
+ stopTimerRef.current = setTimeout(resetState, remaining);
1102
+ }, [clearStopTimer, resetState]);
1103
+ const setLoading = useCallback(
1104
+ (value2) => {
1105
+ if (value2) startLoading();
1106
+ else stopLoading();
1107
+ },
1108
+ [startLoading, stopLoading]
1109
+ );
1110
+ const setSkeleton = useCallback((nextSkeleton) => {
1111
+ setManualState((currentState) => {
1112
+ const skeleton = typeof nextSkeleton === "function" ? nextSkeleton(currentState.skeleton) : nextSkeleton;
1113
+ return currentState.skeleton === skeleton ? currentState : { ...currentState, skeleton };
1114
+ });
1115
+ }, []);
1116
+ const withLoading = useCallback(
1117
+ async (task, options = {}) => {
1118
+ startLoading(
1119
+ typeof options === "string" ? { message: options } : options
1120
+ );
1121
+ try {
1122
+ return typeof task === "function" ? await task() : await task;
1123
+ } finally {
1124
+ stopLoading();
1125
+ }
1126
+ },
1127
+ [startLoading, stopLoading]
1128
+ );
1129
+ useEffect(() => clearStopTimer, [clearStopTimer]);
1130
+ const state = useMemo(() => {
1131
+ if (registryLoading?.isLoading) {
1132
+ const normalized = normalizeLoadingOptions(registryLoading);
1133
+ return {
1134
+ ...normalized,
1135
+ isLoading: true,
1136
+ isPageLoading: true
1137
+ };
1138
+ }
1139
+ return {
1140
+ ...manualState,
1141
+ isPageLoading: manualState.isLoading
1142
+ };
1143
+ }, [manualState, registryLoading]);
1144
+ const actions = useMemo(
1145
+ () => ({
1146
+ setLoading,
1147
+ setSkeleton,
1148
+ startLoading,
1149
+ stopLoading,
1150
+ withLoading
1151
+ }),
1152
+ [setLoading, setSkeleton, startLoading, stopLoading, withLoading]
1153
+ );
1154
+ const [store] = useState(
1155
+ () => createStore(state, { freezeSnapshots: false })
1156
+ );
1157
+ useIsomorphicLayoutEffect(() => {
1158
+ store.publish(state);
1159
+ }, [state, store]);
1160
+ const value = useMemo(
1161
+ () => ({ actions, store }),
1162
+ [actions, store]
1163
+ );
1164
+ return /* @__PURE__ */ jsx(LoadingContext, { value, children });
1165
+ }
1166
+ function useLoadingState() {
1167
+ const { store } = useRequiredContext(
1168
+ LoadingContext,
1169
+ "useLoadingState",
1170
+ "LoadingProvider"
1171
+ );
1172
+ return useStore(store);
1173
+ }
1174
+ function useLoadingActions() {
1175
+ return useRequiredContext(
1176
+ LoadingContext,
1177
+ "useLoadingActions",
1178
+ "LoadingProvider"
1179
+ ).actions;
1180
+ }
1181
+ function useLoading(config, options) {
1182
+ useLoadingRegistration(config, options);
1183
+ const actions = useLoadingActions();
1184
+ const state = useLoadingState();
1185
+ return useMemo(() => ({ ...state, ...actions }), [actions, state]);
1186
+ }
1187
+
1188
+ // src/modules/loading/hooks.ts
1189
+ function useLoadingOverlayModel() {
1190
+ const { isLoading, skeleton, showOverlay } = useLoadingState();
1191
+ const isFullscreenStateActive = useIsFullscreenStateActive();
1192
+ const isVisible = isLoading && showOverlay && !isFullscreenStateActive;
1193
+ const theme = useTheme(loadingTheme);
1194
+ return { skeleton, isVisible, theme };
1195
+ }
1196
+ function LoadingOverlay() {
1197
+ const { skeleton, isVisible, theme } = useLoadingOverlayModel();
1198
+ if (!isVisible) return null;
1199
+ return /* @__PURE__ */ jsx(
1200
+ "div",
1201
+ {
1202
+ className: theme.slots.overlay,
1203
+ "aria-label": "Loading",
1204
+ "aria-busy": "true",
1205
+ role: "status",
1206
+ style: theme.styles.overlay,
1207
+ children: skeleton || /* @__PURE__ */ jsx(Spinner, { size: 30 })
1208
+ }
1209
+ );
1210
+ }
1211
+ function useLoadingPage(_slice, page) {
1212
+ const actions = useLoadingActions();
1213
+ return useMemo(
1214
+ () => ({
1215
+ ...actions,
1216
+ set: (loading) => page.set({ loading })
1217
+ }),
1218
+ [actions, page]
1219
+ );
1220
+ }
1221
+ function defineLoading(definition = {}) {
1222
+ const { id = "loading", ...config } = selectPageLoading(definition) ?? {};
1223
+ return Object.freeze({
1224
+ config,
1225
+ id,
1226
+ use: function useDefinedLoading(overrides = {}, options = {}) {
1227
+ return useLoading(
1228
+ { ...config, ...selectPageLoading(overrides) },
1229
+ options
1230
+ );
1231
+ }
1232
+ });
1233
+ }
1234
+ var loadingModule = defineModule({
1235
+ id: "loading",
1236
+ context: LoadingContext,
1237
+ Provider: LoadingProvider,
1238
+ Overlay: LoadingOverlay,
1239
+ registry: {
1240
+ cleanupDelayMs: 600,
1241
+ keyPolicy: "singleton",
1242
+ lifecycle: "graceful",
1243
+ singletonKey: LOADING_REGISTRY_KEY
1244
+ },
1245
+ page: {
1246
+ select: (config) => selectPageLoading(config.loading),
1247
+ entries: (slice) => [
1248
+ { key: LOADING_REGISTRY_KEY, value: slice }
1249
+ ],
1250
+ use: useLoadingPage
1251
+ }
1252
+ });
1253
+
1254
+ export { DEFAULT_LOADING_STATE, LOADING_REGISTRY_KEY, LoadingContext, LoadingOverlay, LoadingProvider, defineLoading, loadingModule, loadingTheme, normalizeLoadingOptions, selectPageLoading, useLoading, useLoadingActions, useLoadingRegistration, useLoadingState };
1255
+ //# sourceMappingURL=index.js.map
1256
+ //# sourceMappingURL=index.js.map