@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.
- package/LICENSE +21 -0
- package/README.md +117 -0
- package/dist/atoms/button.d.ts +11 -0
- package/dist/atoms/button.d.ts.map +1 -0
- package/dist/atoms/icon.d.ts +15 -0
- package/dist/atoms/icon.d.ts.map +1 -0
- package/dist/atoms/index.d.ts +6 -0
- package/dist/atoms/index.d.ts.map +1 -0
- package/dist/atoms/index.js +169 -0
- package/dist/atoms/index.js.map +1 -0
- package/dist/atoms/spinner.d.ts +9 -0
- package/dist/atoms/spinner.d.ts.map +1 -0
- package/dist/atoms/tooltip.d.ts +18 -0
- package/dist/atoms/tooltip.d.ts.map +1 -0
- package/dist/error/boundary.d.ts +14 -0
- package/dist/error/boundary.d.ts.map +1 -0
- package/dist/error/constants.d.ts +18 -0
- package/dist/error/constants.d.ts.map +1 -0
- package/dist/error/index.d.ts +9 -0
- package/dist/error/index.d.ts.map +1 -0
- package/dist/error/index.js +688 -0
- package/dist/error/index.js.map +1 -0
- package/dist/error/listener.d.ts +2 -0
- package/dist/error/listener.d.ts.map +1 -0
- package/dist/error/reporter.d.ts +32 -0
- package/dist/error/reporter.d.ts.map +1 -0
- package/dist/error/theme.d.ts +3 -0
- package/dist/error/theme.d.ts.map +1 -0
- package/dist/error/types.d.ts +91 -0
- package/dist/error/types.d.ts.map +1 -0
- package/dist/error/utils.d.ts +21 -0
- package/dist/error/utils.d.ts.map +1 -0
- package/dist/events.d.ts +51 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +88 -0
- package/dist/events.js.map +1 -0
- package/dist/hooks/index.d.ts +17 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +804 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/types.d.ts +58 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/use-async-action.d.ts +3 -0
- package/dist/hooks/use-async-action.d.ts.map +1 -0
- package/dist/hooks/use-click-outside.d.ts +3 -0
- package/dist/hooks/use-click-outside.d.ts.map +1 -0
- package/dist/hooks/use-controllable-state.d.ts +3 -0
- package/dist/hooks/use-controllable-state.d.ts.map +1 -0
- package/dist/hooks/use-debounce.d.ts +2 -0
- package/dist/hooks/use-debounce.d.ts.map +1 -0
- package/dist/hooks/use-fullscreen-state.d.ts +4 -0
- package/dist/hooks/use-fullscreen-state.d.ts.map +1 -0
- package/dist/hooks/use-global-event.d.ts +7 -0
- package/dist/hooks/use-global-event.d.ts.map +1 -0
- package/dist/hooks/use-hotkey.d.ts +4 -0
- package/dist/hooks/use-hotkey.d.ts.map +1 -0
- package/dist/hooks/use-intersection-observer.d.ts +4 -0
- package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
- package/dist/hooks/use-isomorphic-layout-effect.d.ts +3 -0
- package/dist/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
- package/dist/hooks/use-media-query.d.ts +2 -0
- package/dist/hooks/use-media-query.d.ts.map +1 -0
- package/dist/hooks/use-mounted.d.ts +2 -0
- package/dist/hooks/use-mounted.d.ts.map +1 -0
- package/dist/hooks/use-required-context.d.ts +3 -0
- package/dist/hooks/use-required-context.d.ts.map +1 -0
- package/dist/hooks/use-server-action.d.ts +4 -0
- package/dist/hooks/use-server-action.d.ts.map +1 -0
- package/dist/hooks/use-storage-state.d.ts +5 -0
- package/dist/hooks/use-storage-state.d.ts.map +1 -0
- package/dist/hooks/use-store.d.ts +3 -0
- package/dist/hooks/use-store.d.ts.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20415 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel/adapters.d.ts +5 -0
- package/dist/kernel/adapters.d.ts.map +1 -0
- package/dist/kernel/compose.d.ts +15 -0
- package/dist/kernel/compose.d.ts.map +1 -0
- package/dist/kernel/constants.d.ts +12 -0
- package/dist/kernel/constants.d.ts.map +1 -0
- package/dist/kernel/context-registry.d.ts +3 -0
- package/dist/kernel/context-registry.d.ts.map +1 -0
- package/dist/kernel/handlers.d.ts +3 -0
- package/dist/kernel/handlers.d.ts.map +1 -0
- package/dist/kernel/hooks.d.ts +7 -0
- package/dist/kernel/hooks.d.ts.map +1 -0
- package/dist/kernel/index.d.ts +14 -0
- package/dist/kernel/index.d.ts.map +1 -0
- package/dist/kernel/index.js +2109 -0
- package/dist/kernel/index.js.map +1 -0
- package/dist/kernel/installed.d.ts +21 -0
- package/dist/kernel/installed.d.ts.map +1 -0
- package/dist/kernel/module.d.ts +32 -0
- package/dist/kernel/module.d.ts.map +1 -0
- package/dist/kernel/operations.d.ts +21 -0
- package/dist/kernel/operations.d.ts.map +1 -0
- package/dist/kernel/page-controller.d.ts +8 -0
- package/dist/kernel/page-controller.d.ts.map +1 -0
- package/dist/kernel/provider.d.ts +18 -0
- package/dist/kernel/provider.d.ts.map +1 -0
- package/dist/kernel/runtime.d.ts +30 -0
- package/dist/kernel/runtime.d.ts.map +1 -0
- package/dist/kernel/schema.d.ts +13 -0
- package/dist/kernel/schema.d.ts.map +1 -0
- package/dist/kernel/store.d.ts +4 -0
- package/dist/kernel/store.d.ts.map +1 -0
- package/dist/kernel/types.d.ts +233 -0
- package/dist/kernel/types.d.ts.map +1 -0
- package/dist/kernel/utils.d.ts +20 -0
- package/dist/kernel/utils.d.ts.map +1 -0
- package/dist/modules/ambient/constants.d.ts +23 -0
- package/dist/modules/ambient/constants.d.ts.map +1 -0
- package/dist/modules/ambient/context.d.ts +10 -0
- package/dist/modules/ambient/context.d.ts.map +1 -0
- package/dist/modules/ambient/index.d.ts +6 -0
- package/dist/modules/ambient/index.d.ts.map +1 -0
- package/dist/modules/ambient/index.js +896 -0
- package/dist/modules/ambient/index.js.map +1 -0
- package/dist/modules/ambient/module.d.ts +12 -0
- package/dist/modules/ambient/module.d.ts.map +1 -0
- package/dist/modules/ambient/types.d.ts +84 -0
- package/dist/modules/ambient/types.d.ts.map +1 -0
- package/dist/modules/ambient/utils.d.ts +18 -0
- package/dist/modules/ambient/utils.d.ts.map +1 -0
- package/dist/modules/background/constants.d.ts +12 -0
- package/dist/modules/background/constants.d.ts.map +1 -0
- package/dist/modules/background/context.d.ts +13 -0
- package/dist/modules/background/context.d.ts.map +1 -0
- package/dist/modules/background/hooks.d.ts +119 -0
- package/dist/modules/background/hooks.d.ts.map +1 -0
- package/dist/modules/background/index.d.ts +7 -0
- package/dist/modules/background/index.d.ts.map +1 -0
- package/dist/modules/background/index.js +3195 -0
- package/dist/modules/background/index.js.map +1 -0
- package/dist/modules/background/module.d.ts +14 -0
- package/dist/modules/background/module.d.ts.map +1 -0
- package/dist/modules/background/motion.d.ts +13 -0
- package/dist/modules/background/motion.d.ts.map +1 -0
- package/dist/modules/background/overlay.d.ts +49 -0
- package/dist/modules/background/overlay.d.ts.map +1 -0
- package/dist/modules/background/types.d.ts +153 -0
- package/dist/modules/background/types.d.ts.map +1 -0
- package/dist/modules/background/utils.d.ts +56 -0
- package/dist/modules/background/utils.d.ts.map +1 -0
- package/dist/modules/background/youtube/iframe.d.ts +52 -0
- package/dist/modules/background/youtube/iframe.d.ts.map +1 -0
- package/dist/modules/background/youtube/parse.d.ts +17 -0
- package/dist/modules/background/youtube/parse.d.ts.map +1 -0
- package/dist/modules/context-menu/constants.d.ts +8 -0
- package/dist/modules/context-menu/constants.d.ts.map +1 -0
- package/dist/modules/context-menu/context.d.ts +16 -0
- package/dist/modules/context-menu/context.d.ts.map +1 -0
- package/dist/modules/context-menu/hooks.d.ts +31 -0
- package/dist/modules/context-menu/hooks.d.ts.map +1 -0
- package/dist/modules/context-menu/index.d.ts +6 -0
- package/dist/modules/context-menu/index.d.ts.map +1 -0
- package/dist/modules/context-menu/index.js +2008 -0
- package/dist/modules/context-menu/index.js.map +1 -0
- package/dist/modules/context-menu/module.d.ts +12 -0
- package/dist/modules/context-menu/module.d.ts.map +1 -0
- package/dist/modules/context-menu/motion.d.ts +9 -0
- package/dist/modules/context-menu/motion.d.ts.map +1 -0
- package/dist/modules/context-menu/overlay.d.ts +15 -0
- package/dist/modules/context-menu/overlay.d.ts.map +1 -0
- package/dist/modules/context-menu/resolver.d.ts +7 -0
- package/dist/modules/context-menu/resolver.d.ts.map +1 -0
- package/dist/modules/context-menu/state.d.ts +4 -0
- package/dist/modules/context-menu/state.d.ts.map +1 -0
- package/dist/modules/context-menu/types.d.ts +171 -0
- package/dist/modules/context-menu/types.d.ts.map +1 -0
- package/dist/modules/context-menu/utils.d.ts +16 -0
- package/dist/modules/context-menu/utils.d.ts.map +1 -0
- package/dist/modules/controls/constants.d.ts +7 -0
- package/dist/modules/controls/constants.d.ts.map +1 -0
- package/dist/modules/controls/hooks.d.ts +15 -0
- package/dist/modules/controls/hooks.d.ts.map +1 -0
- package/dist/modules/controls/index.d.ts +6 -0
- package/dist/modules/controls/index.d.ts.map +1 -0
- package/dist/modules/controls/index.js +1242 -0
- package/dist/modules/controls/index.js.map +1 -0
- package/dist/modules/controls/module.d.ts +12 -0
- package/dist/modules/controls/module.d.ts.map +1 -0
- package/dist/modules/controls/overlay.d.ts +2 -0
- package/dist/modules/controls/overlay.d.ts.map +1 -0
- package/dist/modules/controls/types.d.ts +86 -0
- package/dist/modules/controls/types.d.ts.map +1 -0
- package/dist/modules/controls/utils.d.ts +9 -0
- package/dist/modules/controls/utils.d.ts.map +1 -0
- package/dist/modules/dock/cards.d.ts +1035 -0
- package/dist/modules/dock/cards.d.ts.map +1 -0
- package/dist/modules/dock/constants.d.ts +157 -0
- package/dist/modules/dock/constants.d.ts.map +1 -0
- package/dist/modules/dock/context.d.ts +26 -0
- package/dist/modules/dock/context.d.ts.map +1 -0
- package/dist/modules/dock/hooks.d.ts +957 -0
- package/dist/modules/dock/hooks.d.ts.map +1 -0
- package/dist/modules/dock/hud.d.ts +43 -0
- package/dist/modules/dock/hud.d.ts.map +1 -0
- package/dist/modules/dock/index.d.ts +27 -0
- package/dist/modules/dock/index.d.ts.map +1 -0
- package/dist/modules/dock/index.js +12111 -0
- package/dist/modules/dock/index.js.map +1 -0
- package/dist/modules/dock/module.d.ts +71 -0
- package/dist/modules/dock/module.d.ts.map +1 -0
- package/dist/modules/dock/motion.d.ts +986 -0
- package/dist/modules/dock/motion.d.ts.map +1 -0
- package/dist/modules/dock/overlay.d.ts +79 -0
- package/dist/modules/dock/overlay.d.ts.map +1 -0
- package/dist/modules/dock/provider.d.ts +3 -0
- package/dist/modules/dock/provider.d.ts.map +1 -0
- package/dist/modules/dock/routing/breadcrumbs.d.ts +43 -0
- package/dist/modules/dock/routing/breadcrumbs.d.ts.map +1 -0
- package/dist/modules/dock/routing/continuity.d.ts +19 -0
- package/dist/modules/dock/routing/continuity.d.ts.map +1 -0
- package/dist/modules/dock/routing/guards.d.ts +21 -0
- package/dist/modules/dock/routing/guards.d.ts.map +1 -0
- package/dist/modules/dock/routing/navigation.d.ts +37 -0
- package/dist/modules/dock/routing/navigation.d.ts.map +1 -0
- package/dist/modules/dock/routing/transactions.d.ts +21 -0
- package/dist/modules/dock/routing/transactions.d.ts.map +1 -0
- package/dist/modules/dock/runtime/commands.d.ts +18 -0
- package/dist/modules/dock/runtime/commands.d.ts.map +1 -0
- package/dist/modules/dock/runtime/display.d.ts +36 -0
- package/dist/modules/dock/runtime/display.d.ts.map +1 -0
- package/dist/modules/dock/runtime/dock.d.ts +123 -0
- package/dist/modules/dock/runtime/dock.d.ts.map +1 -0
- package/dist/modules/dock/state.d.ts +22 -0
- package/dist/modules/dock/state.d.ts.map +1 -0
- package/dist/modules/dock/status/events.d.ts +37 -0
- package/dist/modules/dock/status/events.d.ts.map +1 -0
- package/dist/modules/dock/status/hooks.d.ts +6 -0
- package/dist/modules/dock/status/hooks.d.ts.map +1 -0
- package/dist/modules/dock/status/model.d.ts +65 -0
- package/dist/modules/dock/status/model.d.ts.map +1 -0
- package/dist/modules/dock/surface/context.d.ts +43 -0
- package/dist/modules/dock/surface/context.d.ts.map +1 -0
- package/dist/modules/dock/surface/definition.d.ts +38 -0
- package/dist/modules/dock/surface/definition.d.ts.map +1 -0
- package/dist/modules/dock/surface/hooks.d.ts +123 -0
- package/dist/modules/dock/surface/hooks.d.ts.map +1 -0
- package/dist/modules/dock/surface/machine.d.ts +75 -0
- package/dist/modules/dock/surface/machine.d.ts.map +1 -0
- package/dist/modules/dock/surface/stack.d.ts +38 -0
- package/dist/modules/dock/surface/stack.d.ts.map +1 -0
- package/dist/modules/dock/surface/view-model.d.ts +3 -0
- package/dist/modules/dock/surface/view-model.d.ts.map +1 -0
- package/dist/modules/dock/types.d.ts +1158 -0
- package/dist/modules/dock/types.d.ts.map +1 -0
- package/dist/modules/dock/utils.d.ts +93 -0
- package/dist/modules/dock/utils.d.ts.map +1 -0
- package/dist/modules/index.d.ts +12 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/index.js +18020 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/modules/loading/constants.d.ts +5 -0
- package/dist/modules/loading/constants.d.ts.map +1 -0
- package/dist/modules/loading/context.d.ts +13 -0
- package/dist/modules/loading/context.d.ts.map +1 -0
- package/dist/modules/loading/hooks.d.ts +6 -0
- package/dist/modules/loading/hooks.d.ts.map +1 -0
- package/dist/modules/loading/index.d.ts +7 -0
- package/dist/modules/loading/index.d.ts.map +1 -0
- package/dist/modules/loading/index.js +1256 -0
- package/dist/modules/loading/index.js.map +1 -0
- package/dist/modules/loading/module.d.ts +14 -0
- package/dist/modules/loading/module.d.ts.map +1 -0
- package/dist/modules/loading/overlay.d.ts +2 -0
- package/dist/modules/loading/overlay.d.ts.map +1 -0
- package/dist/modules/loading/types.d.ts +47 -0
- package/dist/modules/loading/types.d.ts.map +1 -0
- package/dist/modules/loading/utils.d.ts +4 -0
- package/dist/modules/loading/utils.d.ts.map +1 -0
- package/dist/modules/media/constants.d.ts +7 -0
- package/dist/modules/media/constants.d.ts.map +1 -0
- package/dist/modules/media/context.d.ts +6 -0
- package/dist/modules/media/context.d.ts.map +1 -0
- package/dist/modules/media/hooks.d.ts +3 -0
- package/dist/modules/media/hooks.d.ts.map +1 -0
- package/dist/modules/media/index.d.ts +8 -0
- package/dist/modules/media/index.d.ts.map +1 -0
- package/dist/modules/media/index.js +728 -0
- package/dist/modules/media/index.js.map +1 -0
- package/dist/modules/media/module.d.ts +11 -0
- package/dist/modules/media/module.d.ts.map +1 -0
- package/dist/modules/media/overlay.d.ts +9 -0
- package/dist/modules/media/overlay.d.ts.map +1 -0
- package/dist/modules/media/types.d.ts +77 -0
- package/dist/modules/media/types.d.ts.map +1 -0
- package/dist/modules/media/utils.d.ts +17 -0
- package/dist/modules/media/utils.d.ts.map +1 -0
- package/dist/modules/modal/constants.d.ts +20 -0
- package/dist/modules/modal/constants.d.ts.map +1 -0
- package/dist/modules/modal/context.d.ts +20 -0
- package/dist/modules/modal/context.d.ts.map +1 -0
- package/dist/modules/modal/hooks.d.ts +41 -0
- package/dist/modules/modal/hooks.d.ts.map +1 -0
- package/dist/modules/modal/index.d.ts +7 -0
- package/dist/modules/modal/index.d.ts.map +1 -0
- package/dist/modules/modal/index.js +2672 -0
- package/dist/modules/modal/index.js.map +1 -0
- package/dist/modules/modal/module.d.ts +12 -0
- package/dist/modules/modal/module.d.ts.map +1 -0
- package/dist/modules/modal/motion.d.ts +16 -0
- package/dist/modules/modal/motion.d.ts.map +1 -0
- package/dist/modules/modal/overlay.d.ts +4 -0
- package/dist/modules/modal/overlay.d.ts.map +1 -0
- package/dist/modules/modal/state.d.ts +4 -0
- package/dist/modules/modal/state.d.ts.map +1 -0
- package/dist/modules/modal/types.d.ts +109 -0
- package/dist/modules/modal/types.d.ts.map +1 -0
- package/dist/modules/modal/utils.d.ts +31 -0
- package/dist/modules/modal/utils.d.ts.map +1 -0
- package/dist/modules/notification/constants.d.ts +9 -0
- package/dist/modules/notification/constants.d.ts.map +1 -0
- package/dist/modules/notification/context.d.ts +7 -0
- package/dist/modules/notification/context.d.ts.map +1 -0
- package/dist/modules/notification/hooks.d.ts +10 -0
- package/dist/modules/notification/hooks.d.ts.map +1 -0
- package/dist/modules/notification/index.d.ts +7 -0
- package/dist/modules/notification/index.d.ts.map +1 -0
- package/dist/modules/notification/index.js +905 -0
- package/dist/modules/notification/index.js.map +1 -0
- package/dist/modules/notification/module.d.ts +11 -0
- package/dist/modules/notification/module.d.ts.map +1 -0
- package/dist/modules/notification/motion.d.ts +15 -0
- package/dist/modules/notification/motion.d.ts.map +1 -0
- package/dist/modules/notification/overlay.d.ts +3 -0
- package/dist/modules/notification/overlay.d.ts.map +1 -0
- package/dist/modules/notification/types.d.ts +57 -0
- package/dist/modules/notification/types.d.ts.map +1 -0
- package/dist/modules/notification/utils.d.ts +9 -0
- package/dist/modules/notification/utils.d.ts.map +1 -0
- package/dist/modules/theme.d.ts +3 -0
- package/dist/modules/theme.d.ts.map +1 -0
- package/dist/provider.d.ts +23 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +1973 -0
- package/dist/provider.js.map +1 -0
- package/dist/result.d.ts +50 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +163 -0
- package/dist/result.js.map +1 -0
- package/dist/theme.d.ts +25 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +44 -0
- package/dist/theme.js.map +1 -0
- package/dist/tokens/index.d.ts +3 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/index.js +325 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/motion.d.ts +315 -0
- package/dist/tokens/motion.d.ts.map +1 -0
- package/dist/tokens/tokens.d.ts +34 -0
- package/dist/tokens/tokens.d.ts.map +1 -0
- package/dist/utils/cn.d.ts +3 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/dom.d.ts +5 -0
- package/dist/utils/dom.d.ts.map +1 -0
- package/dist/utils/index.d.ts +16 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +485 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json.d.ts +3 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/number.d.ts +4 -0
- package/dist/utils/number.d.ts.map +1 -0
- package/dist/utils/object.d.ts +7 -0
- package/dist/utils/object.d.ts.map +1 -0
- package/dist/utils/report.d.ts +5 -0
- package/dist/utils/report.d.ts.map +1 -0
- package/dist/utils/scheduler.d.ts +34 -0
- package/dist/utils/scheduler.d.ts.map +1 -0
- package/dist/utils/store.d.ts +11 -0
- package/dist/utils/store.d.ts.map +1 -0
- package/dist/utils/string.d.ts +8 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/timing.d.ts +8 -0
- package/dist/utils/timing.d.ts.map +1 -0
- package/dist/utils/user-message.d.ts +20 -0
- package/dist/utils/user-message.d.ts.map +1 -0
- package/package.json +113 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/use-required-context.ts","../../src/hooks/use-store.ts","../../src/hooks/use-click-outside.ts","../../src/utils/dom.ts","../../src/utils/report.ts","../../src/utils/user-message.ts","../../src/hooks/use-isomorphic-layout-effect.ts","../../src/hooks/use-debounce.ts","../../src/hooks/use-mounted.ts","../../src/hooks/use-media-query.ts","../../src/hooks/use-controllable-state.ts","../../src/hooks/use-hotkey.ts","../../src/events.ts","../../src/hooks/use-global-event.ts","../../src/result.ts","../../src/hooks/use-async-action.ts","../../src/hooks/use-server-action.ts","../../src/hooks/use-storage-state.ts","../../src/hooks/use-intersection-observer.ts","../../src/hooks/use-fullscreen-state.ts"],"names":["useCallback","useEffect","useSyncExternalStore","subscribe","getSnapshot","useState","useRef","listeners","err"],"mappings":"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","file":"index.js","sourcesContent":["\"use client\";\n\nimport { use, type Context } from \"react\";\n\nexport function useRequiredContext<T>(\n context: Context<T | null>,\n hookName: string,\n providerName: string,\n): T {\n const value = use(context);\n if (value === null) {\n throw new Error(`${hookName} must be used within ${providerName}`);\n }\n return value;\n}\n","\"use client\";\n\nimport { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { type ExternalStore } from \"../utils\";\n\nexport function useStore<TState, TSlice = TState>(\n store: ExternalStore<TState>,\n selector: (state: TState) => TSlice = (state: TState) =>\n state as unknown as TSlice,\n isEqual: (a: TSlice, b: TSlice) => boolean = Object.is,\n): TSlice {\n const cacheRef = useRef<{\n isEqual: ((a: TSlice, b: TSlice) => boolean) | null;\n selected: TSlice | undefined;\n selector: ((state: TState) => TSlice) | null;\n snapshot: TState | null;\n }>({\n isEqual: null,\n selected: undefined,\n selector: null,\n snapshot: null,\n });\n\n const getSelectedSnapshot = useCallback(() => {\n const snapshot = store.getSnapshot();\n const cache = cacheRef.current;\n if (\n cache.snapshot === snapshot &&\n cache.selector === selector &&\n cache.isEqual === isEqual\n ) {\n return cache.selected as TSlice;\n }\n\n const selected = selector(snapshot);\n if (\n cache.snapshot !== null &&\n cache.isEqual === isEqual &&\n isEqual(cache.selected as TSlice, selected)\n ) {\n cache.snapshot = snapshot;\n cache.selector = selector;\n return cache.selected as TSlice;\n }\n\n cacheRef.current = {\n isEqual,\n selected,\n selector,\n snapshot,\n };\n return selected;\n }, [isEqual, selector, store]);\n\n return useSyncExternalStore(\n store.subscribe,\n getSelectedSnapshot,\n getSelectedSnapshot,\n );\n}\n","\"use client\";\n\nimport { useCallback, useEffect, type RefObject } from \"react\";\n\nexport function useClickOutside<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T | null> | null | undefined,\n callback?: (event: PointerEvent) => void,\n): void {\n const handlePointer = useCallback(\n (event: PointerEvent) => {\n if (ref?.current && !ref.current.contains(event.target as Node)) {\n callback?.(event);\n }\n },\n [callback, ref],\n );\n\n useEffect(() => {\n document.addEventListener(\"pointerdown\", handlePointer);\n return () => document.removeEventListener(\"pointerdown\", handlePointer);\n }, [handlePointer]);\n}\n","import { stripTrailingSlash } from \"./string\";\n\nexport const isBrowser: boolean = typeof window !== \"undefined\";\n\nlet globalScrollLockCount = 0;\n\nlet globalScrollLockStyles: {\n bodyOverflow: string;\n bodyOverscrollBehavior: string;\n htmlOverflow: string;\n htmlOverscrollBehavior: string;\n} | null = null;\n\nexport function acquireGlobalScrollLock(): () => void {\n if (typeof document === \"undefined\") return () => {};\n\n if (globalScrollLockCount === 0) {\n globalScrollLockStyles = {\n bodyOverflow: document.body.style.overflow,\n bodyOverscrollBehavior: document.body.style.overscrollBehavior,\n htmlOverflow: document.documentElement.style.overflow,\n htmlOverscrollBehavior: document.documentElement.style.overscrollBehavior,\n };\n }\n\n globalScrollLockCount += 1;\n document.body.style.overflow = \"hidden\";\n document.body.style.overscrollBehavior = \"none\";\n document.documentElement.style.overflow = \"hidden\";\n document.documentElement.style.overscrollBehavior = \"none\";\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n globalScrollLockCount = Math.max(0, globalScrollLockCount - 1);\n if (globalScrollLockCount > 0 || !globalScrollLockStyles) return;\n\n document.body.style.overflow = globalScrollLockStyles.bodyOverflow;\n document.body.style.overscrollBehavior =\n globalScrollLockStyles.bodyOverscrollBehavior;\n document.documentElement.style.overflow =\n globalScrollLockStyles.htmlOverflow;\n document.documentElement.style.overscrollBehavior =\n globalScrollLockStyles.htmlOverscrollBehavior;\n globalScrollLockStyles = null;\n };\n}\n\nexport function getSiteUrl(): string {\n return stripTrailingSlash(\n process.env.NEXT_PUBLIC_SITE_URL || \"http://localhost:3000\",\n );\n}\n\nexport function getCurrentPath(): string {\n if (!isBrowser) return \"/\";\n return `${window.location.pathname}${window.location.search}`;\n}\n","export type ReportLevel = \"error\" | \"warn\";\n\nexport type ReportSink = (\n scope: string,\n error: unknown,\n level: ReportLevel,\n) => void;\n\nlet sink: ReportSink | null = null;\n\nexport function report(\n scope: string,\n error: unknown,\n level: ReportLevel = \"error\",\n): void {\n if (sink) {\n try {\n sink(scope, error, level);\n return;\n } catch {}\n }\n\n if (process.env.NODE_ENV === \"production\" && typeof window !== \"undefined\") {\n return;\n }\n console[level](`[${scope}]`, error);\n}\n\nexport function setReportSink(next: ReportSink): () => void {\n sink = next;\n return () => {\n if (sink === next) sink = null;\n };\n}\n","export const USER_MESSAGES = Object.freeze({\n generic: \"Something went wrong. Please try again\",\n network: \"You appear to be offline. Check your connection and try again\",\n timeout: \"That took too long. Please try again\",\n unauthorized: \"Your session has expired. Please sign in again\",\n forbidden: \"You don't have permission to do that\",\n notFound: \"We couldn't find what you were looking for\",\n rateLimited: \"Too many attempts. Please wait a moment and try again\",\n server: \"We're having trouble on our end. Please try again in a moment\",\n} as const);\n\nexport class UserError extends Error {\n readonly status?: number;\n\n constructor(message: string, status?: number) {\n super(message);\n this.name = \"UserError\";\n this.status = status;\n }\n}\n\nexport interface UserMessageOptions {\n fallback?: string;\n codes?: Readonly<Record<string, string>>;\n}\n\nconst NETWORK_FAILURE = /failed to fetch|network|load failed|fetch failed/i;\n\nfunction readField<T>(\n source: unknown,\n field: string,\n type: \"string\" | \"number\",\n): T | undefined {\n const value = (source as Record<string, unknown> | null)?.[field];\n return typeof value === type ? (value as T) : undefined;\n}\n\nfunction readPayloadMessage(error: unknown): string | undefined {\n const payload = (error as { payload?: unknown } | null)?.payload;\n const message = readField<string>(payload, \"error\", \"string\")?.trim();\n return message || undefined;\n}\n\nexport function toUserMessage(\n error: unknown,\n { codes, fallback = USER_MESSAGES.generic }: UserMessageOptions = {},\n): string {\n if (typeof error === \"string\") return error.trim() || fallback;\n if (!error || typeof error !== \"object\") return fallback;\n\n if (error instanceof UserError) {\n if (error.status === 401) return USER_MESSAGES.unauthorized;\n return error.message || fallback;\n }\n if ((error as { name?: string }).name === \"AbortError\") return fallback;\n\n const code = readField<string>(error, \"code\", \"string\");\n if (code && codes?.[code]) return codes[code];\n\n const status = readField<number>(error, \"status\", \"number\");\n\n if (status === 401) return USER_MESSAGES.unauthorized;\n if (status === 429) return USER_MESSAGES.rateLimited;\n if (status === 408 || status === 504) return USER_MESSAGES.timeout;\n if (status !== undefined && status >= 500) return USER_MESSAGES.server;\n\n if (status !== undefined && status >= 400) {\n const authored = readPayloadMessage(error);\n if (authored) return authored;\n if (status === 403) return USER_MESSAGES.forbidden;\n if (status === 404) return USER_MESSAGES.notFound;\n return fallback;\n }\n\n const isOffline =\n typeof navigator !== \"undefined\" && navigator.onLine === false;\n if (\n isOffline ||\n (NETWORK_FAILURE.test((error as Error).message ?? \"\") &&\n (error instanceof TypeError || /fetch/i.test((error as Error).name)))\n ) {\n return USER_MESSAGES.network;\n }\n\n return fallback;\n}\n","\"use client\";\n\nimport { useEffect, useLayoutEffect } from \"react\";\nimport { isBrowser } from \"../utils\";\n\nexport const useIsomorphicLayoutEffect = isBrowser\n ? useLayoutEffect\n : useEffect;\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport function useDebounce<T>(value: T, delay: number = 300): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay);\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debouncedValue;\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nconst emptySubscribe = () => () => {};\n\nexport function useMounted(): boolean {\n return useSyncExternalStore(\n emptySubscribe,\n () => true,\n () => false,\n );\n}\n","\"use client\";\n\nimport { useCallback, useSyncExternalStore } from \"react\";\nimport { isBrowser } from \"../utils\";\n\nexport function useMediaQuery(\n query: string,\n serverFallback: boolean = false,\n): boolean {\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n if (!isBrowser || !query || typeof window.matchMedia !== \"function\") {\n return () => {};\n }\n const mediaQueryList = window.matchMedia(query);\n mediaQueryList.addEventListener(\"change\", onStoreChange);\n return () => mediaQueryList.removeEventListener(\"change\", onStoreChange);\n },\n [query],\n );\n\n const getSnapshot = useCallback(() => {\n if (!isBrowser || !query || typeof window.matchMedia !== \"function\") {\n return serverFallback;\n }\n return window.matchMedia(query).matches;\n }, [query, serverFallback]);\n\n const getServerSnapshot = useCallback(() => serverFallback, [serverFallback]);\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","\"use client\";\n\nimport { useCallback, useRef, useState } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect\";\nimport { UseControllableStateOptions } from \"./types\";\n\nexport function useControllableState<T>({\n defaultValue,\n onChange,\n value,\n}: UseControllableStateOptions<T>): [T, (next: T | ((prev: T) => T)) => void] {\n const [uncontrolledValue, setUncontrolledValue] = useState<T>(defaultValue);\n const isControlled = value !== undefined;\n const currentValue = isControlled ? (value as T) : uncontrolledValue;\n const valueRef = useRef<T>(currentValue);\n const onChangeRef = useRef(onChange);\n\n useIsomorphicLayoutEffect(() => {\n valueRef.current = currentValue;\n onChangeRef.current = onChange;\n });\n\n const setValue = useCallback(\n (next: T | ((prev: T) => T)) => {\n const resolvedNext =\n typeof next === \"function\"\n ? (next as (prev: T) => T)(valueRef.current)\n : next;\n if (!Object.is(valueRef.current, resolvedNext)) {\n if (!isControlled) {\n setUncontrolledValue(resolvedNext);\n }\n onChangeRef.current?.(resolvedNext);\n }\n },\n [isControlled],\n );\n\n return [currentValue, setValue];\n}\n","\"use client\";\n\nimport { useEffect, useRef } from \"react\";\nimport { isBrowser } from \"../utils\";\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect\";\nimport { UseHotkeyOptions } from \"./types\";\n\nfunction isEditableElement(target: EventTarget | null): boolean {\n if (!target || typeof (target as HTMLElement).tagName !== \"string\") {\n return false;\n }\n const element = target as HTMLElement;\n const tagName = element.tagName.toLowerCase();\n if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\") {\n return true;\n }\n return Boolean(element.isContentEditable);\n}\n\nfunction matchesKeyCombo(event: KeyboardEvent, combo: string): boolean {\n const parts = combo\n .toLowerCase()\n .split(\"+\")\n .map((p) => p.trim())\n .filter(Boolean);\n if (parts.length === 0) return false;\n\n const keyPart = parts[parts.length - 1];\n const modifiers = new Set(parts.slice(0, -1));\n\n const wantsMod =\n modifiers.has(\"mod\") || modifiers.has(\"cmd\") || modifiers.has(\"meta\");\n const wantsCtrl = modifiers.has(\"ctrl\") || modifiers.has(\"control\");\n const wantsAlt = modifiers.has(\"alt\") || modifiers.has(\"option\");\n const wantsShift = modifiers.has(\"shift\");\n\n const isModPressed = event.metaKey || event.ctrlKey;\n if (wantsMod && !isModPressed) return false;\n if (!wantsMod && !wantsCtrl && (event.metaKey || event.ctrlKey)) return false;\n if (wantsCtrl && !event.ctrlKey) return false;\n if (wantsAlt !== event.altKey) return false;\n if (wantsShift !== event.shiftKey) return false;\n\n const pressedKey = event.key.toLowerCase();\n if (keyPart === \"esc\" || keyPart === \"escape\") {\n return pressedKey === \"escape\" || pressedKey === \"esc\";\n }\n if (keyPart === \"space\") {\n return pressedKey === \" \" || pressedKey === \"spacebar\";\n }\n return pressedKey === keyPart;\n}\n\nexport function useHotkey(\n combo: string | string[] | null | undefined,\n callback: (event: KeyboardEvent) => void,\n options?: UseHotkeyOptions,\n): void {\n const callbackRef = useRef(callback);\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n\n const enabled = options?.enabled ?? true;\n const enableOnFormTags = options?.enableOnFormTags ?? false;\n const preventDefault = options?.preventDefault ?? true;\n const stopPropagation = options?.stopPropagation ?? false;\n\n useEffect(() => {\n if (!isBrowser || !enabled || !combo) return;\n const combos = (Array.isArray(combo) ? combo : [combo]).filter(Boolean);\n if (combos.length === 0) return;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!enableOnFormTags && isEditableElement(event.target)) return;\n const matched = combos.some((c) => matchesKeyCombo(event, c));\n if (!matched) return;\n if (preventDefault) event.preventDefault();\n if (stopPropagation) event.stopPropagation();\n callbackRef.current?.(event);\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [combo, enabled, enableOnFormTags, preventDefault, stopPropagation]);\n}\n\nexport function useEscapeKey(\n callback: (event: KeyboardEvent) => void,\n enabled: boolean = true,\n): void {\n useHotkey(\"escape\", callback, {\n enabled,\n enableOnFormTags: true,\n preventDefault: false,\n });\n}\n","import { report } from \"./utils/report\";\nexport type EventListener<T = unknown> = (payload: T) => void;\n\nexport const EVENT_TYPES = Object.freeze({\n API_UNAUTHORIZED: \"API_UNAUTHORIZED\",\n STATE_CHANGE: \"STATE_CHANGE\",\n API_ERROR: \"API_ERROR\",\n APP_ERROR: \"APP_ERROR\",\n} as const);\n\nexport interface FrameworkEventMap {\n [EVENT_TYPES.API_UNAUTHORIZED]: {\n error?: unknown;\n status?: number;\n [key: string]: unknown;\n };\n [EVENT_TYPES.API_ERROR]: {\n error: unknown;\n isCritical?: boolean;\n message?: string;\n retry?: () => void;\n status?: number;\n [key: string]: unknown;\n };\n [EVENT_TYPES.APP_ERROR]: {\n error?: unknown;\n message?: string;\n resetError?: () => void;\n source?: string;\n [key: string]: unknown;\n };\n [EVENT_TYPES.STATE_CHANGE]: {\n message?: string;\n status?: \"success\" | \"warning\" | \"info\" | \"error\" | string;\n [key: string]: unknown;\n };\n}\n\nexport class EventEmitter<TEvents extends object = FrameworkEventMap> {\n private events: Map<string, Set<EventListener<never>>> = new Map();\n private debounceTimers: Map<string, ReturnType<typeof setTimeout>> =\n new Map();\n\n subscribe<K extends keyof TEvents>(\n event: K,\n callback: EventListener<TEvents[K]>,\n ): () => void;\n subscribe<T = unknown>(event: string, callback: EventListener<T>): () => void;\n subscribe(event: string, callback: EventListener<never>): () => void {\n if (typeof event !== \"string\" || !event || typeof callback !== \"function\") {\n return () => {};\n }\n const listeners = this.events.get(event) || new Set<EventListener<never>>();\n listeners.add(callback);\n this.events.set(event, listeners);\n\n return () => {\n listeners.delete(callback);\n if (listeners.size === 0) this.events.delete(event);\n };\n }\n\n emit<K extends keyof TEvents>(\n event: K,\n ...args: TEvents[K] extends void | undefined\n ? [payload?: TEvents[K]]\n : [payload: TEvents[K]]\n ): void;\n emit<T = unknown>(event: string, payload?: T): void;\n emit(event: string, payload?: unknown): void {\n const listeners = this.events.get(event);\n if (!listeners || listeners.size === 0) return;\n const snapshot = Array.from(listeners);\n for (const callback of snapshot) {\n try {\n (callback as EventListener<unknown>)(payload);\n } catch (error) {\n report(`Event listener (${String(event)})`, error);\n }\n }\n }\n\n emitDebounced<K extends keyof TEvents>(\n event: K,\n payload: TEvents[K],\n waitMs?: number,\n ): void;\n emitDebounced<T = unknown>(event: string, payload?: T, waitMs?: number): void;\n emitDebounced(event: string, payload?: unknown, waitMs: number = 100): void {\n const existing = this.debounceTimers.get(event);\n if (existing) clearTimeout(existing);\n\n const timer = setTimeout(() => {\n this.debounceTimers.delete(event);\n this.emit(event, payload);\n }, waitMs);\n\n this.debounceTimers.set(event, timer);\n }\n\n cancelDebounced(event?: string): void {\n if (event) {\n const timer = this.debounceTimers.get(event);\n if (timer) {\n clearTimeout(timer);\n this.debounceTimers.delete(event);\n }\n } else {\n for (const timer of this.debounceTimers.values()) {\n clearTimeout(timer);\n }\n this.debounceTimers.clear();\n }\n }\n\n unsubscribeAll(event?: string): void {\n this.cancelDebounced(event);\n if (event) this.events.delete(event);\n else this.events.clear();\n }\n\n hasListeners(event: string): boolean {\n return Boolean(this.events.get(event)?.size);\n }\n\n getListenerCount(event: string): number {\n return this.events.get(event)?.size || 0;\n }\n\n getAllEvents(): string[] {\n return [...this.events.keys()];\n }\n}\n\nconst GLOBAL_EVENTS_KEY = Symbol.for(\"__base_framework_global_events__\");\ntype GlobalWithEvents = typeof globalThis & {\n [GLOBAL_EVENTS_KEY]?: EventEmitter<FrameworkEventMap>;\n};\n\nconst _global = globalThis as GlobalWithEvents;\nexport const globalEvents: EventEmitter<FrameworkEventMap> =\n _global[GLOBAL_EVENTS_KEY] ??\n (_global[GLOBAL_EVENTS_KEY] = new EventEmitter<FrameworkEventMap>());\n","\"use client\";\n\nimport { useCallback, useEffect, useRef, useSyncExternalStore } from \"react\";\nimport { globalEvents, type FrameworkEventMap } from \"@/events\";\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect\";\nimport { UseGlobalEventOptions } from \"./types\";\n\nexport function useGlobalEvent<K extends keyof FrameworkEventMap>(\n event: K | K[] | null | undefined,\n callback: (payload: FrameworkEventMap[K]) => void,\n options?: UseGlobalEventOptions,\n): void;\n\nexport function useGlobalEvent<T = unknown>(\n event: string | string[] | null | undefined,\n callback: (payload: T) => void,\n options?: UseGlobalEventOptions,\n): void;\n\nexport function useGlobalEvent(\n event: string | string[] | null | undefined,\n callback: (payload: never) => void,\n options?: UseGlobalEventOptions,\n): void {\n const callbackRef = useRef(callback);\n const debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const lastThrottleTimeRef = useRef<number>(0);\n const throttleTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n\n const debounceMs = options?.debounceMs;\n const throttleMs = options?.throttleMs;\n\n useEffect(() => {\n if (!event) return;\n const events = Array.isArray(event) ? event.filter(Boolean) : [event];\n if (events.length === 0) return;\n\n const handler = (payload: never) => {\n if (debounceMs != null && debounceMs > 0) {\n if (debounceTimerRef.current !== null) {\n clearTimeout(debounceTimerRef.current);\n }\n debounceTimerRef.current = setTimeout(() => {\n debounceTimerRef.current = null;\n callbackRef.current?.(payload);\n }, debounceMs);\n return;\n }\n\n if (throttleMs != null && throttleMs > 0) {\n const now = Date.now();\n const remaining = throttleMs - (now - lastThrottleTimeRef.current);\n if (remaining <= 0) {\n if (throttleTimerRef.current !== null) {\n clearTimeout(throttleTimerRef.current);\n throttleTimerRef.current = null;\n }\n lastThrottleTimeRef.current = now;\n callbackRef.current?.(payload);\n } else if (throttleTimerRef.current === null) {\n throttleTimerRef.current = setTimeout(() => {\n lastThrottleTimeRef.current = Date.now();\n throttleTimerRef.current = null;\n callbackRef.current?.(payload);\n }, remaining);\n }\n return;\n }\n\n callbackRef.current?.(payload);\n };\n\n const unsubs = events.map((ev) => globalEvents.subscribe(ev, handler));\n\n return () => {\n unsubs.forEach((unsub) => unsub());\n if (debounceTimerRef.current !== null) {\n clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = null;\n }\n if (throttleTimerRef.current !== null) {\n clearTimeout(throttleTimerRef.current);\n throttleTimerRef.current = null;\n }\n };\n }, [event, debounceMs, throttleMs]);\n}\n\nexport function useEventState<T, K extends keyof FrameworkEventMap>(\n event: K | null | undefined,\n initialValue: T,\n reducer: (prevState: T, payload: FrameworkEventMap[K]) => T,\n): T;\n\nexport function useEventState<T, P = unknown>(\n event: string | null | undefined,\n initialValue: T,\n reducer: (prevState: T, payload: P) => T,\n): T;\n\nexport function useEventState<T, P = unknown>(\n event: string | null | undefined,\n initialValue: T,\n reducer: (prevState: T, payload: P) => T,\n): T {\n const storeRef = useRef<{\n value: T;\n listeners: Set<() => void>;\n reducer: (prevState: T, payload: P) => T;\n } | null>(null);\n\n if (storeRef.current == null) {\n storeRef.current = {\n value: initialValue,\n listeners: new Set(),\n reducer,\n };\n }\n\n useIsomorphicLayoutEffect(() => {\n if (storeRef.current != null) {\n storeRef.current.reducer = reducer;\n }\n });\n\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n if (!event || !storeRef.current) return () => {};\n storeRef.current.listeners.add(onStoreChange);\n\n const unsub = globalEvents.subscribe<P>(event, (payload) => {\n if (!storeRef.current) return;\n const next = storeRef.current.reducer(storeRef.current.value, payload);\n if (!Object.is(storeRef.current.value, next)) {\n storeRef.current.value = next;\n storeRef.current.listeners.forEach((listener) => listener());\n }\n });\n\n return () => {\n storeRef.current?.listeners.delete(onStoreChange);\n unsub();\n };\n },\n [event],\n );\n\n const getSnapshot = useCallback(() => {\n return storeRef.current?.value ?? initialValue;\n }, [initialValue]);\n\n const getServerSnapshot = useCallback(() => {\n return initialValue;\n }, [initialValue]);\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","import { UserError, toUserMessage } from \"./utils/user-message\";\nimport { report } from \"./utils/report\";\n\nexport interface SuccessResult<T> {\n readonly code?: string;\n readonly data: T;\n readonly error?: never;\n readonly success: true;\n}\n\nexport interface ErrorResult<E = string> {\n readonly code?: string;\n readonly data?: never;\n readonly error: E;\n readonly success: false;\n}\n\nexport type Result<T, E = string> = SuccessResult<T> | ErrorResult<E>;\n\nexport function ok<T>(data: T, code?: string): SuccessResult<T> {\n return { data, success: true, ...(code ? { code } : {}) };\n}\n\nexport function err<E = string>(error: E, code?: string): ErrorResult<E> {\n return { error, success: false, ...(code ? { code } : {}) };\n}\n\nexport function isResult(value: unknown): value is Result<unknown, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"success\" in value &&\n typeof (value as { success: unknown }).success === \"boolean\" &&\n ((\"data\" in value && (value as { success: boolean }).success === true) ||\n (\"error\" in value && (value as { success: boolean }).success === false))\n );\n}\n\nexport function isOk<T, E = string>(\n result: Result<T, E>,\n): result is SuccessResult<T> {\n return result.success === true;\n}\n\nexport function isErr<T, E = string>(\n result: Result<T, E>,\n): result is ErrorResult<E> {\n return result.success === false;\n}\n\nexport function unwrap<T, E = string>(result: Result<T, E>): T {\n if (result.success) {\n return result.data;\n }\n if (result.error instanceof Error) {\n throw result.error;\n }\n throw new Error(\n typeof result.error === \"string\" ? result.error : String(result.error),\n );\n}\n\nexport function unwrapOr<T, E = string>(result: Result<T, E>, fallback: T): T {\n return result.success ? result.data : fallback;\n}\n\nexport function map<T, U, E = string>(\n result: Result<T, E>,\n fn: (data: T) => U,\n): Result<U, E> {\n return result.success ? ok(fn(result.data), result.code) : result;\n}\n\nexport function mapErr<T, E, F>(\n result: Result<T, E>,\n fn: (error: E) => F,\n): Result<T, F> {\n return result.success ? result : err(fn(result.error), result.code);\n}\n\nexport function match<T, E, R>(\n result: Result<T, E>,\n branches: { ok: (data: T) => R; err: (error: E) => R },\n): R {\n return result.success ? branches.ok(result.data) : branches.err(result.error);\n}\n\nfunction mapCaught<E>(error: unknown, mapError?: (error: unknown) => E): E {\n if (!(error instanceof UserError)) report(\"Result\", error);\n return mapError ? mapError(error) : (toUserMessage(error) as unknown as E);\n}\n\nexport async function tryCatch<T, E = string>(\n promiseOrFn: Promise<T> | (() => Promise<T>),\n mapError?: (error: unknown) => E,\n): Promise<Result<T, E>> {\n try {\n const data =\n typeof promiseOrFn === \"function\"\n ? await promiseOrFn()\n : await promiseOrFn;\n return ok(data);\n } catch (error) {\n return err(mapCaught(error, mapError));\n }\n}\n\ninterface SafeActionSchema<TParsed> {\n safeParse: (input: unknown) =>\n | { data: TParsed; success: true }\n | {\n error?: {\n issues?: Array<{ message?: string }>;\n message?: string;\n };\n success: false;\n };\n}\n\nexport interface SafeActionOptions<TArgs extends unknown[], E = string> {\n errorCode?: string;\n mapError?: (error: unknown) => E;\n schema?: SafeActionSchema<TArgs[0]>;\n validate?: (\n ...args: TArgs\n ) => Result<unknown, E> | string | boolean | null | undefined;\n}\n\nexport function createSafeAction<TArgs extends unknown[], TOutput, E = string>(\n handler: (\n ...args: TArgs\n ) => Promise<Result<TOutput, E> | TOutput> | Result<TOutput, E> | TOutput,\n options: SafeActionOptions<TArgs, E> = {},\n): (...args: TArgs) => Promise<Result<TOutput, E>> {\n const { errorCode, mapError, schema, validate } = options;\n\n return async (...args: TArgs): Promise<Result<TOutput, E>> => {\n try {\n let effectiveArgs = args;\n\n if (schema) {\n const parsed = schema.safeParse(args[0]);\n if (!parsed.success) {\n const issueMessage =\n parsed.error?.issues?.[0]?.message ||\n parsed.error?.message ||\n \"Invalid input\";\n return err(\n mapError ? mapError(issueMessage) : (issueMessage as unknown as E),\n errorCode ?? \"VALIDATION_ERROR\",\n );\n }\n effectiveArgs = [parsed.data, ...args.slice(1)] as TArgs;\n }\n\n if (validate) {\n const validationResult = validate(...effectiveArgs);\n if (isResult(validationResult)) {\n if (isErr(validationResult)) {\n return validationResult as ErrorResult<E>;\n }\n } else if (validationResult === false) {\n return err(\n mapError\n ? mapError(\"Validation failed\")\n : (\"Validation failed\" as unknown as E),\n errorCode ?? \"VALIDATION_ERROR\",\n );\n } else if (\n typeof validationResult === \"string\" &&\n validationResult.length > 0\n ) {\n return err(\n mapError\n ? mapError(validationResult)\n : (validationResult as unknown as E),\n errorCode ?? \"VALIDATION_ERROR\",\n );\n }\n }\n\n const output = await handler(...effectiveArgs);\n if (isResult(output)) {\n return output as Result<TOutput, E>;\n }\n return ok(output as TOutput);\n } catch (error) {\n return err(mapCaught(error, mapError), errorCode);\n }\n };\n}\n","\"use client\";\n\nimport { useCallback, useState } from \"react\";\nimport { EVENT_TYPES, globalEvents } from \"@/events\";\nimport { isErr, isResult } from \"@/result\";\nimport { toUserMessage } from \"@/utils\";\nimport { UseAsyncActionOptions, UseAsyncActionResult } from \"./types\";\n\nexport function useAsyncAction<\n TArgs extends unknown[] = unknown[],\n TResult = unknown,\n>(\n actionFn: (...args: TArgs) => Promise<TResult>,\n options: UseAsyncActionOptions<TResult> = {},\n): UseAsyncActionResult<TArgs, TResult> {\n const {\n errorMessage = null,\n onError = null,\n onSuccess = null,\n successMessage = null,\n toast = null,\n } = options;\n\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState<unknown>(null);\n\n const execute = useCallback(\n async (...args: TArgs): Promise<TResult> => {\n setIsPending(true);\n setError(null);\n try {\n const result = await actionFn(...args);\n\n if (isResult(result) && isErr(result)) {\n setError(result.error);\n const resolvedMessage = errorMessage || toUserMessage(result.error);\n if (typeof toast === \"function\") {\n toast(resolvedMessage);\n }\n globalEvents.emit(EVENT_TYPES.APP_ERROR, {\n error: result.error,\n message: resolvedMessage,\n notify: toast === true,\n });\n await onError?.(result.error);\n return result;\n }\n\n if (successMessage) {\n if (typeof toast === \"function\") {\n toast(successMessage);\n }\n globalEvents.emit(EVENT_TYPES.STATE_CHANGE, {\n message: successMessage,\n notify: toast === true,\n status: \"success\",\n });\n }\n await onSuccess?.(result);\n return result;\n } catch (err) {\n setError(err);\n const resolvedMessage = errorMessage || toUserMessage(err);\n if (typeof toast === \"function\") {\n toast(resolvedMessage);\n }\n globalEvents.emit(EVENT_TYPES.APP_ERROR, {\n error: err,\n message: resolvedMessage,\n notify: toast === true,\n });\n await onError?.(err);\n throw err;\n } finally {\n setIsPending(false);\n }\n },\n [actionFn, errorMessage, onError, onSuccess, successMessage, toast],\n );\n\n return { error, execute, isPending };\n}\n","\"use client\";\n\nimport { useCallback, useState, useTransition } from \"react\";\nimport { EVENT_TYPES, globalEvents } from \"@/events\";\nimport { err as resultErr, isErr, type Result } from \"@/result\";\nimport { toUserMessage } from \"@/utils\";\nimport { UseServerActionOptions, UseServerActionResult } from \"./types\";\n\nexport function useServerAction<\n TArgs extends unknown[] = unknown[],\n T = unknown,\n E = string,\n>(\n actionFn: (...args: TArgs) => Promise<Result<T, E>>,\n options: UseServerActionOptions<T, E> = {},\n): UseServerActionResult<TArgs, T, E> {\n const {\n errorMessage = null,\n onError = null,\n onSuccess = null,\n successMessage = null,\n toast = null,\n } = options;\n\n const [isPending, startTransition] = useTransition();\n const [data, setData] = useState<T | null>(null);\n const [error, setError] = useState<E | null>(null);\n\n const reset = useCallback(() => {\n setData(null);\n setError(null);\n }, []);\n\n const execute = useCallback(\n (...args: TArgs): Promise<Result<T, E>> => {\n return new Promise((resolve) => {\n startTransition(async () => {\n setError(null);\n try {\n const result = await actionFn(...args);\n if (isErr(result)) {\n setError(result.error);\n const resolvedMessage =\n errorMessage || toUserMessage(result.error);\n if (typeof toast === \"function\") {\n toast(resolvedMessage);\n }\n globalEvents.emit(EVENT_TYPES.APP_ERROR, {\n error: result.error,\n message: resolvedMessage,\n notify: toast === true,\n });\n await onError?.(result.error);\n resolve(result);\n return;\n }\n\n setData(result.data);\n if (successMessage) {\n if (typeof toast === \"function\") {\n toast(successMessage);\n }\n globalEvents.emit(EVENT_TYPES.STATE_CHANGE, {\n message: successMessage,\n notify: toast === true,\n status: \"success\",\n });\n }\n await onSuccess?.(result.data);\n resolve(result);\n } catch (err) {\n const mappedError = toUserMessage(err) as unknown as E;\n setError(mappedError);\n const resolvedMessage = errorMessage || (mappedError as string);\n if (typeof toast === \"function\") {\n toast(resolvedMessage);\n }\n globalEvents.emit(EVENT_TYPES.APP_ERROR, {\n error: err,\n message: resolvedMessage,\n notify: toast === true,\n });\n await onError?.(mappedError);\n resolve(resultErr(mappedError));\n }\n });\n });\n },\n [actionFn, errorMessage, onError, onSuccess, successMessage, toast],\n );\n\n return { data, error, execute, isPending, reset };\n}\n","\"use client\";\n\nimport { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { isBrowser } from \"../utils\";\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect\";\nimport { UseStorageStateOptions } from \"./types\";\n\nfunction getStorageInstance(type: \"local\" | \"session\"): Storage | null {\n if (!isBrowser) return null;\n try {\n return type === \"session\" ? window.sessionStorage : window.localStorage;\n } catch {\n return null;\n }\n}\n\nconst STORAGE_SYNC_EVENT = \"base-framework:storage-sync\";\n\nexport function useStorageState<T>(\n key: string,\n initialValue: T,\n options: UseStorageStateOptions<T> = {},\n): [T, (next: T | ((prev: T) => T)) => void, () => void] {\n const storageType = options.storage ?? \"local\";\n const serialize = options.serialize ?? JSON.stringify;\n const deserialize = options.deserialize ?? JSON.parse;\n\n const cacheRef = useRef<{ parsed: T; raw: string | null }>({\n parsed: initialValue,\n raw: null,\n });\n\n const getSnapshot = useCallback((): T => {\n const storage = getStorageInstance(storageType);\n if (!storage) return initialValue;\n try {\n const raw = storage.getItem(key);\n if (raw === null) {\n cacheRef.current = { parsed: initialValue, raw: null };\n return initialValue;\n }\n if (cacheRef.current.raw === raw) {\n return cacheRef.current.parsed;\n }\n const parsed = deserialize(raw);\n cacheRef.current = { parsed, raw };\n return parsed;\n } catch {\n return initialValue;\n }\n }, [deserialize, initialValue, key, storageType]);\n\n const getServerSnapshot = useCallback((): T => initialValue, [initialValue]);\n\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n if (!isBrowser) return () => {};\n\n const handleStorage = (event: StorageEvent) => {\n if (\n event.key === key &&\n event.storageArea === getStorageInstance(storageType)\n ) {\n onStoreChange();\n }\n };\n\n const handleCustomSync = (event: Event) => {\n const detail = (\n event as CustomEvent<{ key: string; storageType: string }>\n ).detail;\n if (detail?.key === key && detail?.storageType === storageType) {\n onStoreChange();\n }\n };\n\n window.addEventListener(\"storage\", handleStorage);\n window.addEventListener(STORAGE_SYNC_EVENT, handleCustomSync);\n return () => {\n window.removeEventListener(\"storage\", handleStorage);\n window.removeEventListener(STORAGE_SYNC_EVENT, handleCustomSync);\n };\n },\n [key, storageType],\n );\n\n const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const stateRef = useRef<T>(state);\n\n useIsomorphicLayoutEffect(() => {\n stateRef.current = state;\n });\n\n const setValue = useCallback(\n (next: T | ((prev: T) => T)) => {\n const resolvedNext =\n typeof next === \"function\"\n ? (next as (prev: T) => T)(stateRef.current)\n : next;\n stateRef.current = resolvedNext;\n\n const storage = getStorageInstance(storageType);\n if (!storage) return;\n try {\n const raw = serialize(resolvedNext);\n cacheRef.current = { parsed: resolvedNext, raw };\n storage.setItem(key, raw);\n window.dispatchEvent(\n new CustomEvent(STORAGE_SYNC_EVENT, {\n detail: { key, storageType },\n }),\n );\n } catch {}\n },\n [key, serialize, storageType],\n );\n\n const removeValue = useCallback(() => {\n stateRef.current = initialValue;\n cacheRef.current = { parsed: initialValue, raw: null };\n\n const storage = getStorageInstance(storageType);\n if (!storage) return;\n try {\n storage.removeItem(key);\n window.dispatchEvent(\n new CustomEvent(STORAGE_SYNC_EVENT, {\n detail: { key, storageType },\n }),\n );\n } catch {}\n }, [initialValue, key, storageType]);\n\n return [state, setValue, removeValue];\n}\n\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T,\n options?: Omit<UseStorageStateOptions<T>, \"storage\">,\n): [T, (next: T | ((prev: T) => T)) => void, () => void] {\n return useStorageState(key, initialValue, { ...options, storage: \"local\" });\n}\n\nexport function useSessionStorage<T>(\n key: string,\n initialValue: T,\n options?: Omit<UseStorageStateOptions<T>, \"storage\">,\n): [T, (next: T | ((prev: T) => T)) => void, () => void] {\n return useStorageState(key, initialValue, { ...options, storage: \"session\" });\n}\n","\"use client\";\n\nimport { useEffect, useRef, useState, type RefObject } from \"react\";\nimport { isBrowser } from \"../utils\";\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect\";\nimport {\n UseIntersectionObserverOptions,\n UseIntersectionObserverResult,\n} from \"./types\";\n\nexport function useIntersectionObserver<T extends Element = Element>(\n targetRef: RefObject<T | null> | null | undefined,\n options: UseIntersectionObserverOptions = {},\n): UseIntersectionObserverResult {\n const {\n enabled = true,\n freezeOnceVisible = false,\n onChange,\n root = null,\n rootMargin = \"0px\",\n threshold = 0,\n } = options;\n\n const [entry, setEntry] = useState<IntersectionObserverEntry | null>(null);\n const onChangeRef = useRef(onChange);\n\n useIsomorphicLayoutEffect(() => {\n onChangeRef.current = onChange;\n });\n\n const frozen = Boolean(entry?.isIntersecting && freezeOnceVisible);\n\n useEffect(() => {\n if (\n !isBrowser ||\n !enabled ||\n frozen ||\n typeof IntersectionObserver === \"undefined\"\n ) {\n return;\n }\n\n const node = targetRef?.current;\n if (!node) return;\n\n const observer = new IntersectionObserver(\n ([nextEntry]) => {\n if (!nextEntry) return;\n setEntry(nextEntry);\n onChangeRef.current?.(nextEntry);\n },\n { root, rootMargin, threshold },\n );\n\n observer.observe(node);\n return () => observer.disconnect();\n }, [enabled, frozen, root, rootMargin, targetRef, threshold]);\n\n return {\n entry,\n isIntersecting: Boolean(entry?.isIntersecting),\n };\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\nconst listeners = new Set<() => void>();\nconst activeFullscreenStateIds = new Set<string>();\n\nconst ACTIVE_FULLSCREEN_ROOT_SELECTOR =\n '[data-fullscreen-state-root=\"true\"][data-affect-global-state=\"true\"]';\n\nlet domObserver: MutationObserver | null = null;\nlet lastSnapshot = false;\n\nfunction getDomSnapshot(): boolean {\n if (typeof document === \"undefined\") {\n return activeFullscreenStateIds.size > 0;\n }\n\n return document.querySelector(ACTIVE_FULLSCREEN_ROOT_SELECTOR) !== null;\n}\n\nfunction emitChange(): void {\n listeners.forEach((listener) => listener());\n}\n\nfunction emitIfSnapshotChanged(): void {\n const nextSnapshot = getDomSnapshot();\n\n if (nextSnapshot === lastSnapshot) {\n return;\n }\n\n lastSnapshot = nextSnapshot;\n emitChange();\n}\n\nfunction ensureDomObserver(): void {\n if (typeof document === \"undefined\" || domObserver || listeners.size === 0) {\n return;\n }\n\n domObserver = new MutationObserver(() => {\n emitIfSnapshotChanged();\n });\n\n domObserver.observe(document.documentElement, {\n attributes: true,\n childList: true,\n subtree: true,\n attributeFilter: [\n \"data-fullscreen-state\",\n \"data-fullscreen-state-root\",\n \"data-affect-global-state\",\n ],\n });\n}\n\nfunction releaseDomObserver(): void {\n if (listeners.size > 0 || !domObserver) {\n return;\n }\n\n domObserver.disconnect();\n domObserver = null;\n}\n\nfunction subscribe(listener: () => void): () => void {\n listeners.add(listener);\n ensureDomObserver();\n emitIfSnapshotChanged();\n\n return () => {\n listeners.delete(listener);\n releaseDomObserver();\n };\n}\n\nfunction getSnapshot(): boolean {\n return getDomSnapshot();\n}\n\nexport function registerFullscreenState(id: string): void {\n activeFullscreenStateIds.add(id);\n emitIfSnapshotChanged();\n}\n\nexport function unregisterFullscreenState(id: string): void {\n activeFullscreenStateIds.delete(id);\n emitIfSnapshotChanged();\n}\n\nexport function useIsFullscreenStateActive(): boolean {\n return useSyncExternalStore(subscribe, getSnapshot, () => false);\n}\n"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Result } from "../result";
|
|
2
|
+
export type ActionToastOption = boolean | ((msg: string) => void) | null;
|
|
3
|
+
export interface UseAsyncActionOptions<TResult = unknown> {
|
|
4
|
+
errorMessage?: string | null;
|
|
5
|
+
onError?: ((err: unknown) => void | Promise<void>) | null;
|
|
6
|
+
onSuccess?: ((result: TResult) => void | Promise<void>) | null;
|
|
7
|
+
successMessage?: string | null;
|
|
8
|
+
toast?: ActionToastOption;
|
|
9
|
+
}
|
|
10
|
+
export interface UseAsyncActionResult<TArgs extends unknown[], TResult> {
|
|
11
|
+
error: unknown;
|
|
12
|
+
execute: (...args: TArgs) => Promise<TResult>;
|
|
13
|
+
isPending: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface UseControllableStateOptions<T> {
|
|
16
|
+
defaultValue: T;
|
|
17
|
+
onChange?: (nextValue: T) => void;
|
|
18
|
+
value?: T;
|
|
19
|
+
}
|
|
20
|
+
export interface UseGlobalEventOptions {
|
|
21
|
+
debounceMs?: number;
|
|
22
|
+
throttleMs?: number;
|
|
23
|
+
}
|
|
24
|
+
export interface UseHotkeyOptions {
|
|
25
|
+
enabled?: boolean;
|
|
26
|
+
enableOnFormTags?: boolean;
|
|
27
|
+
preventDefault?: boolean;
|
|
28
|
+
stopPropagation?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface UseIntersectionObserverOptions extends IntersectionObserverInit {
|
|
31
|
+
enabled?: boolean;
|
|
32
|
+
freezeOnceVisible?: boolean;
|
|
33
|
+
onChange?: (entry: IntersectionObserverEntry) => void;
|
|
34
|
+
}
|
|
35
|
+
export interface UseIntersectionObserverResult {
|
|
36
|
+
entry: IntersectionObserverEntry | null;
|
|
37
|
+
isIntersecting: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface UseServerActionOptions<T, E = string> {
|
|
40
|
+
errorMessage?: string | null;
|
|
41
|
+
onError?: ((err: E) => void | Promise<void>) | null;
|
|
42
|
+
onSuccess?: ((data: T) => void | Promise<void>) | null;
|
|
43
|
+
successMessage?: string | null;
|
|
44
|
+
toast?: ActionToastOption;
|
|
45
|
+
}
|
|
46
|
+
export interface UseServerActionResult<TArgs extends unknown[], T, E = string> {
|
|
47
|
+
data: T | null;
|
|
48
|
+
error: E | null;
|
|
49
|
+
execute: (...args: TArgs) => Promise<Result<T, E>>;
|
|
50
|
+
isPending: boolean;
|
|
51
|
+
reset: () => void;
|
|
52
|
+
}
|
|
53
|
+
export interface UseStorageStateOptions<T> {
|
|
54
|
+
deserialize?: (raw: string) => T;
|
|
55
|
+
serialize?: (value: T) => string;
|
|
56
|
+
storage?: "local" | "session";
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { UseAsyncActionOptions, UseAsyncActionResult } from "./types";
|
|
2
|
+
export declare function useAsyncAction<TArgs extends unknown[] = unknown[], TResult = unknown>(actionFn: (...args: TArgs) => Promise<TResult>, options?: UseAsyncActionOptions<TResult>): UseAsyncActionResult<TArgs, TResult>;
|
|
3
|
+
//# sourceMappingURL=use-async-action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-async-action.d.ts","sourceRoot":"","sources":["../../src/hooks/use-async-action.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEtE,wBAAgB,cAAc,CAC5B,KAAK,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EACnC,OAAO,GAAG,OAAO,EAEjB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,EAC9C,OAAO,GAAE,qBAAqB,CAAC,OAAO,CAAM,GAC3C,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAmEtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-click-outside.d.ts","sourceRoot":"","sources":["../../src/hooks/use-click-outside.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE/D,wBAAgB,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EACjE,GAAG,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,EAC3C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GACvC,IAAI,CAcN"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-controllable-state.d.ts","sourceRoot":"","sources":["../../src/hooks/use-controllable-state.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAEtD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EACtC,YAAY,EACZ,QAAQ,EACR,KAAK,GACN,EAAE,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CA6B5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-debounce.d.ts","sourceRoot":"","sources":["../../src/hooks/use-debounce.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAE,MAAY,GAAG,CAAC,CAS/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-fullscreen-state.d.ts","sourceRoot":"","sources":["../../src/hooks/use-fullscreen-state.ts"],"names":[],"mappings":"AAiFA,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAGxD;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG1D;AAED,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type FrameworkEventMap } from "@/events";
|
|
2
|
+
import { UseGlobalEventOptions } from "./types";
|
|
3
|
+
export declare function useGlobalEvent<K extends keyof FrameworkEventMap>(event: K | K[] | null | undefined, callback: (payload: FrameworkEventMap[K]) => void, options?: UseGlobalEventOptions): void;
|
|
4
|
+
export declare function useGlobalEvent<T = unknown>(event: string | string[] | null | undefined, callback: (payload: T) => void, options?: UseGlobalEventOptions): void;
|
|
5
|
+
export declare function useEventState<T, K extends keyof FrameworkEventMap>(event: K | null | undefined, initialValue: T, reducer: (prevState: T, payload: FrameworkEventMap[K]) => T): T;
|
|
6
|
+
export declare function useEventState<T, P = unknown>(event: string | null | undefined, initialValue: T, reducer: (prevState: T, payload: P) => T): T;
|
|
7
|
+
//# sourceMappingURL=use-global-event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-global-event.d.ts","sourceRoot":"","sources":["../../src/hooks/use-global-event.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEhD,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAC9D,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,EACjC,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EACjD,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAAC;AAER,wBAAgB,cAAc,CAAC,CAAC,GAAG,OAAO,EACxC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAC3C,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,EAC9B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAAC;AA2ER,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,iBAAiB,EAChE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAC3B,YAAY,EAAE,CAAC,EACf,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,GAC1D,CAAC,CAAC;AAEL,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,EAC1C,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,YAAY,EAAE,CAAC,EACf,OAAO,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,GACvC,CAAC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { UseHotkeyOptions } from "./types";
|
|
2
|
+
export declare function useHotkey(combo: string | string[] | null | undefined, callback: (event: KeyboardEvent) => void, options?: UseHotkeyOptions): void;
|
|
3
|
+
export declare function useEscapeKey(callback: (event: KeyboardEvent) => void, enabled?: boolean): void;
|
|
4
|
+
//# sourceMappingURL=use-hotkey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-hotkey.d.ts","sourceRoot":"","sources":["../../src/hooks/use-hotkey.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAgD3C,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAC3C,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EACxC,OAAO,CAAC,EAAE,gBAAgB,GACzB,IAAI,CA4BN;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EACxC,OAAO,GAAE,OAAc,GACtB,IAAI,CAMN"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
import { UseIntersectionObserverOptions, UseIntersectionObserverResult } from "./types";
|
|
3
|
+
export declare function useIntersectionObserver<T extends Element = Element>(targetRef: RefObject<T | null> | null | undefined, options?: UseIntersectionObserverOptions): UseIntersectionObserverResult;
|
|
4
|
+
//# sourceMappingURL=use-intersection-observer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-intersection-observer.d.ts","sourceRoot":"","sources":["../../src/hooks/use-intersection-observer.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,SAAS,CAAC;AAEjB,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EACjE,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,EACjD,OAAO,GAAE,8BAAmC,GAC3C,6BAA6B,CAiD/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-isomorphic-layout-effect.d.ts","sourceRoot":"","sources":["../../src/hooks/use-isomorphic-layout-effect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAmB,MAAM,OAAO,CAAC;AAGnD,eAAO,MAAM,yBAAyB,kBAEzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-media-query.d.ts","sourceRoot":"","sources":["../../src/hooks/use-media-query.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,cAAc,GAAE,OAAe,GAC9B,OAAO,CAuBT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-mounted.d.ts","sourceRoot":"","sources":["../../src/hooks/use-mounted.ts"],"names":[],"mappings":"AAMA,wBAAgB,UAAU,IAAI,OAAO,CAMpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-required-context.d.ts","sourceRoot":"","sources":["../../src/hooks/use-required-context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAO,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AAE1C,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,EAC1B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,CAAC,CAMH"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type Result } from "@/result";
|
|
2
|
+
import { UseServerActionOptions, UseServerActionResult } from "./types";
|
|
3
|
+
export declare function useServerAction<TArgs extends unknown[] = unknown[], T = unknown, E = string>(actionFn: (...args: TArgs) => Promise<Result<T, E>>, options?: UseServerActionOptions<T, E>): UseServerActionResult<TArgs, T, E>;
|
|
4
|
+
//# sourceMappingURL=use-server-action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-server-action.d.ts","sourceRoot":"","sources":["../../src/hooks/use-server-action.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2B,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAExE,wBAAgB,eAAe,CAC7B,KAAK,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EACnC,CAAC,GAAG,OAAO,EACX,CAAC,GAAG,MAAM,EAEV,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACnD,OAAO,GAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAM,GACzC,qBAAqB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CA6EpC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { UseStorageStateOptions } from "./types";
|
|
2
|
+
export declare function useStorageState<T>(key: string, initialValue: T, options?: UseStorageStateOptions<T>): [T, (next: T | ((prev: T) => T)) => void, () => void];
|
|
3
|
+
export declare function useLocalStorage<T>(key: string, initialValue: T, options?: Omit<UseStorageStateOptions<T>, "storage">): [T, (next: T | ((prev: T) => T)) => void, () => void];
|
|
4
|
+
export declare function useSessionStorage<T>(key: string, initialValue: T, options?: Omit<UseStorageStateOptions<T>, "storage">): [T, (next: T | ((prev: T) => T)) => void, () => void];
|
|
5
|
+
//# sourceMappingURL=use-storage-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-storage-state.d.ts","sourceRoot":"","sources":["../../src/hooks/use-storage-state.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAajD,wBAAgB,eAAe,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,EACf,OAAO,GAAE,sBAAsB,CAAC,CAAC,CAAM,GACtC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,MAAM,IAAI,CAAC,CAgHvD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GACnD,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,MAAM,IAAI,CAAC,CAEvD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GACnD,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,MAAM,IAAI,CAAC,CAEvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-store.d.ts","sourceRoot":"","sources":["../../src/hooks/use-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAC9C,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,EAC5B,QAAQ,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MACD,EAC5B,OAAO,GAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAmB,GACrD,MAAM,CAiDR"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from "./kernel";
|
|
2
|
+
export * from "./result";
|
|
3
|
+
export * from "./events";
|
|
4
|
+
export * from "./theme";
|
|
5
|
+
export * from "./tokens";
|
|
6
|
+
export * from "./utils";
|
|
7
|
+
export * from "./hooks";
|
|
8
|
+
export * from "./error";
|
|
9
|
+
export * from "./provider";
|
|
10
|
+
export * from "./atoms";
|
|
11
|
+
export * from "./modules";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
|