@alepha/react 0.14.1 → 0.14.3

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 (86) hide show
  1. package/dist/auth/index.browser.js +1488 -4
  2. package/dist/auth/index.browser.js.map +1 -1
  3. package/dist/auth/index.d.ts +2 -2
  4. package/dist/auth/index.js +1827 -4
  5. package/dist/auth/index.js.map +1 -1
  6. package/dist/core/index.d.ts +58 -937
  7. package/dist/core/index.d.ts.map +1 -1
  8. package/dist/core/index.js +139 -2014
  9. package/dist/core/index.js.map +1 -1
  10. package/dist/form/index.d.ts.map +1 -1
  11. package/dist/form/index.js +6 -1
  12. package/dist/form/index.js.map +1 -1
  13. package/dist/head/index.browser.js +3 -1
  14. package/dist/head/index.browser.js.map +1 -1
  15. package/dist/head/index.d.ts +552 -8
  16. package/dist/head/index.d.ts.map +1 -1
  17. package/dist/head/index.js +17 -2
  18. package/dist/head/index.js.map +1 -1
  19. package/dist/{core → router}/index.browser.js +126 -516
  20. package/dist/router/index.browser.js.map +1 -0
  21. package/dist/router/index.d.ts +1334 -0
  22. package/dist/router/index.d.ts.map +1 -0
  23. package/dist/router/index.js +1939 -0
  24. package/dist/router/index.js.map +1 -0
  25. package/package.json +12 -6
  26. package/src/auth/__tests__/$auth.spec.ts +188 -0
  27. package/src/auth/index.ts +1 -1
  28. package/src/auth/services/ReactAuth.ts +1 -1
  29. package/src/core/__tests__/Router.spec.tsx +169 -0
  30. package/src/core/components/ClientOnly.tsx +14 -0
  31. package/src/core/components/ErrorBoundary.tsx +3 -2
  32. package/src/core/contexts/AlephaContext.ts +3 -0
  33. package/src/core/contexts/AlephaProvider.tsx +2 -1
  34. package/src/core/hooks/useAction.browser.spec.tsx +569 -0
  35. package/src/core/hooks/useAction.ts +11 -0
  36. package/src/core/index.ts +13 -102
  37. package/src/form/hooks/useForm.browser.spec.tsx +366 -0
  38. package/src/form/services/FormModel.ts +5 -0
  39. package/src/head/__tests__/expandSeo.spec.ts +203 -0
  40. package/src/head/__tests__/page-head.spec.ts +39 -0
  41. package/src/head/__tests__/seo-head.spec.ts +121 -0
  42. package/src/head/hooks/useHead.spec.tsx +288 -0
  43. package/src/head/index.ts +18 -8
  44. package/src/head/interfaces/Head.ts +3 -0
  45. package/src/head/providers/BrowserHeadProvider.browser.spec.ts +271 -0
  46. package/src/head/providers/HeadProvider.ts +6 -1
  47. package/src/head/providers/ServerHeadProvider.spec.ts +163 -0
  48. package/src/head/providers/ServerHeadProvider.ts +20 -0
  49. package/src/i18n/__tests__/integration.spec.tsx +239 -0
  50. package/src/i18n/components/Localize.spec.tsx +357 -0
  51. package/src/i18n/hooks/useI18n.browser.spec.tsx +438 -0
  52. package/src/i18n/providers/I18nProvider.spec.ts +389 -0
  53. package/src/{core → router}/components/ErrorViewer.tsx +2 -0
  54. package/src/router/components/Link.tsx +21 -0
  55. package/src/{core → router}/components/NestedView.tsx +3 -5
  56. package/src/router/components/NotFound.tsx +30 -0
  57. package/src/router/errors/Redirection.ts +28 -0
  58. package/src/{core → router}/hooks/useActive.ts +6 -2
  59. package/src/{core → router}/hooks/useQueryParams.ts +2 -2
  60. package/src/{core → router}/hooks/useRouter.ts +1 -1
  61. package/src/{core → router}/hooks/useRouterState.ts +1 -1
  62. package/src/{core → router}/index.browser.ts +14 -12
  63. package/src/{core/index.shared-router.ts → router/index.shared.ts} +6 -3
  64. package/src/router/index.ts +125 -0
  65. package/src/router/primitives/$page.browser.spec.tsx +702 -0
  66. package/src/router/primitives/$page.spec.tsx +702 -0
  67. package/src/{core → router}/primitives/$page.ts +1 -1
  68. package/src/{core → router}/providers/ReactBrowserProvider.ts +3 -13
  69. package/src/{core → router}/providers/ReactBrowserRendererProvider.ts +3 -0
  70. package/src/{core → router}/providers/ReactBrowserRouterProvider.ts +3 -0
  71. package/src/{core → router}/providers/ReactPageProvider.ts +5 -3
  72. package/src/router/providers/ReactServerProvider.spec.tsx +316 -0
  73. package/src/{core → router}/providers/ReactServerProvider.ts +12 -30
  74. package/src/{core → router}/services/ReactPageServerService.ts +3 -0
  75. package/src/{core → router}/services/ReactPageService.ts +5 -5
  76. package/src/{core → router}/services/ReactRouter.ts +26 -5
  77. package/dist/core/index.browser.js.map +0 -1
  78. package/dist/core/index.native.js +0 -403
  79. package/dist/core/index.native.js.map +0 -1
  80. package/src/core/components/Link.tsx +0 -18
  81. package/src/core/components/NotFound.tsx +0 -27
  82. package/src/core/errors/Redirection.ts +0 -13
  83. package/src/core/hooks/useSchema.ts +0 -88
  84. package/src/core/index.native.ts +0 -21
  85. package/src/core/index.shared.ts +0 -9
  86. /package/src/{core → router}/contexts/RouterLayerContext.ts +0 -0
@@ -0,0 +1,125 @@
1
+ import { AlephaReact } from "@alepha/react";
2
+ import { $module } from "alepha";
3
+ import { $page, type PageAnimation } from "./primitives/$page.ts";
4
+ import { ReactRouter } from "./services/ReactRouter.ts";
5
+ import { ReactPageProvider, type ReactRouterState } from "./providers/ReactPageProvider.ts";
6
+ import { AlephaServer, type ServerRequest } from "alepha/server";
7
+ import type { ReactNode } from "react";
8
+ import type { ReactHydrationState } from "./providers/ReactBrowserProvider.ts";
9
+ import { ReactServerProvider } from "./providers/ReactServerProvider.ts";
10
+ import { ReactPageServerService } from "./services/ReactPageServerService.ts";
11
+ import { AlephaServerCache } from "alepha/server/cache";
12
+ import { AlephaServerLinks } from "alepha/server/links";
13
+ import { ReactPageService } from "./services/ReactPageService.ts";
14
+ import { AlephaDateTime } from "alepha/datetime";
15
+
16
+ // ---------------------------------------------------------------------------------------------------------------------
17
+
18
+ export * from "./index.shared.ts";
19
+ export * from "./providers/ReactPageProvider.ts";
20
+ export * from "./providers/ReactBrowserProvider.ts";
21
+ export * from "./providers/ReactServerProvider.ts";
22
+
23
+ // ---------------------------------------------------------------------------------------------------------------------
24
+
25
+ declare module "alepha" {
26
+ interface State {
27
+ "alepha.react.router.state"?: ReactRouterState;
28
+ }
29
+
30
+ interface Hooks {
31
+ /**
32
+ * Fires when the React application is starting to be rendered on the server.
33
+ */
34
+ "react:server:render:begin": {
35
+ request?: ServerRequest;
36
+ state: ReactRouterState;
37
+ };
38
+ /**
39
+ * Fires when the React application has been rendered on the server.
40
+ */
41
+ "react:server:render:end": {
42
+ request?: ServerRequest;
43
+ state: ReactRouterState;
44
+ html: string;
45
+ };
46
+ // -----------------------------------------------------------------------------------------------------------------
47
+ /**
48
+ * Fires when the React application is being rendered on the browser.
49
+ */
50
+ "react:browser:render": {
51
+ root: HTMLElement;
52
+ element: ReactNode;
53
+ state: ReactRouterState;
54
+ hydration?: ReactHydrationState;
55
+ };
56
+ // -----------------------------------------------------------------------------------------------------------------
57
+ // SPECIFIC: Route transitions
58
+ /**
59
+ * Fires when a route transition is starting.
60
+ */
61
+ "react:transition:begin": {
62
+ previous: ReactRouterState;
63
+ state: ReactRouterState;
64
+ animation?: PageAnimation;
65
+ };
66
+ /**
67
+ * Fires when a route transition has succeeded.
68
+ */
69
+ "react:transition:success": {
70
+ state: ReactRouterState;
71
+ };
72
+ /**
73
+ * Fires when a route transition has failed.
74
+ */
75
+ "react:transition:error": {
76
+ state: ReactRouterState;
77
+ error: Error;
78
+ };
79
+ /**
80
+ * Fires when a route transition has completed, regardless of success or failure.
81
+ */
82
+ "react:transition:end": {
83
+ state: ReactRouterState;
84
+ };
85
+ }
86
+ }
87
+
88
+ // ---------------------------------------------------------------------------------------------------------------------
89
+
90
+ /**
91
+ * Provides declarative routing with the `$page` primitive for building type-safe React routes.
92
+ *
93
+ * This module enables:
94
+ * - URL pattern matching with parameters (e.g., `/users/:id`)
95
+ * - Nested routing with parent-child relationships
96
+ * - Type-safe URL parameter and query string validation
97
+ * - Server-side data fetching with the `resolve` function
98
+ * - Lazy loading and code splitting
99
+ * - Page animations and error handling
100
+ *
101
+ * @see {@link $page}
102
+ * @module alepha.react.router
103
+ */
104
+ export const AlephaReactRouter = $module({
105
+ name: "alepha.react.router",
106
+ primitives: [$page],
107
+ services: [
108
+ ReactPageProvider,
109
+ ReactPageService,
110
+ ReactRouter, ReactServerProvider, ReactPageServerService],
111
+ register: (alepha) =>
112
+ alepha
113
+ .with(AlephaReact)
114
+ .with(AlephaDateTime)
115
+ .with(AlephaServer)
116
+ .with(AlephaServerCache)
117
+ .with(AlephaServerLinks)
118
+ .with({
119
+ provide: ReactPageService,
120
+ use: ReactPageServerService,
121
+ })
122
+ .with(ReactServerProvider)
123
+ .with(ReactPageProvider)
124
+ .with(ReactRouter),
125
+ });