@alepha/react 0.11.11 → 0.11.12
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/README.md +1 -183
- package/dist/auth/index.browser.js +1460 -0
- package/dist/auth/index.browser.js.map +1 -0
- package/dist/auth/index.cjs +3647 -0
- package/dist/auth/index.cjs.map +1 -0
- package/dist/auth/index.d.cts +564 -0
- package/dist/auth/index.d.cts.map +1 -0
- package/dist/auth/index.d.ts +564 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +3615 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/{index.browser.js → core/index.browser.js} +36 -35
- package/dist/core/index.browser.js.map +1 -0
- package/dist/{index.cjs → core/index.cjs} +141 -140
- package/dist/core/index.cjs.map +1 -0
- package/dist/{index.d.cts → core/index.d.cts} +68 -68
- package/dist/core/index.d.cts.map +1 -0
- package/dist/{index.d.ts → core/index.d.ts} +68 -68
- package/dist/core/index.d.ts.map +1 -0
- package/dist/{index.js → core/index.js} +39 -38
- package/dist/core/index.js.map +1 -0
- package/dist/form/index.cjs +2054 -0
- package/dist/form/index.cjs.map +1 -0
- package/dist/form/index.d.cts +211 -0
- package/dist/form/index.d.cts.map +1 -0
- package/dist/form/index.d.ts +211 -0
- package/dist/form/index.d.ts.map +1 -0
- package/dist/form/index.js +2026 -0
- package/dist/form/index.js.map +1 -0
- package/dist/head/index.browser.js +1503 -0
- package/dist/head/index.browser.js.map +1 -0
- package/dist/head/index.cjs +1908 -0
- package/dist/head/index.cjs.map +1 -0
- package/dist/head/index.d.cts +595 -0
- package/dist/head/index.d.cts.map +1 -0
- package/dist/head/index.d.ts +601 -0
- package/dist/head/index.d.ts.map +1 -0
- package/dist/head/index.js +1880 -0
- package/dist/head/index.js.map +1 -0
- package/dist/i18n/index.cjs +1886 -0
- package/dist/i18n/index.cjs.map +1 -0
- package/dist/i18n/index.d.cts +168 -0
- package/dist/i18n/index.d.cts.map +1 -0
- package/dist/i18n/index.d.ts +168 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +1857 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/websocket/index.cjs +1774 -0
- package/dist/websocket/index.cjs.map +1 -0
- package/dist/websocket/index.d.cts +118 -0
- package/dist/websocket/index.d.cts.map +1 -0
- package/dist/websocket/index.d.ts +118 -0
- package/dist/websocket/index.d.ts.map +1 -0
- package/dist/websocket/index.js +1750 -0
- package/dist/websocket/index.js.map +1 -0
- package/package.json +89 -67
- package/src/auth/descriptors/$auth.ts +436 -0
- package/src/auth/descriptors/$authApple.ts +8 -0
- package/src/auth/descriptors/$authGithub.ts +81 -0
- package/src/auth/descriptors/$authGoogle.ts +38 -0
- package/src/auth/errors/SessionExpiredError.ts +6 -0
- package/src/auth/hooks/useAuth.ts +31 -0
- package/src/auth/index.browser.ts +16 -0
- package/src/auth/index.shared.ts +3 -0
- package/src/auth/index.ts +47 -0
- package/src/auth/providers/ReactAuthProvider.ts +629 -0
- package/src/auth/schemas/tokenResponseSchema.ts +11 -0
- package/src/auth/schemas/tokensSchema.ts +21 -0
- package/src/auth/schemas/userinfoResponseSchema.ts +10 -0
- package/src/auth/services/ReactAuth.ts +124 -0
- package/src/{components → core/components}/ErrorViewer.tsx +3 -2
- package/src/{components → core/components}/NestedView.tsx +1 -1
- package/src/{contexts → core/contexts}/AlephaContext.ts +1 -1
- package/src/{descriptors → core/descriptors}/$page.ts +4 -4
- package/src/{hooks → core/hooks}/useAction.ts +1 -1
- package/src/{hooks → core/hooks}/useAlepha.ts +1 -1
- package/src/{hooks → core/hooks}/useClient.ts +1 -1
- package/src/{hooks → core/hooks}/useEvents.ts +1 -1
- package/src/{hooks → core/hooks}/useInject.ts +1 -1
- package/src/{hooks → core/hooks}/useQueryParams.ts +1 -1
- package/src/{hooks → core/hooks}/useRouterState.ts +1 -1
- package/src/{hooks → core/hooks}/useSchema.ts +3 -3
- package/src/{hooks → core/hooks}/useStore.ts +2 -2
- package/src/{index.browser.ts → core/index.browser.ts} +4 -4
- package/src/{index.ts → core/index.ts} +6 -6
- package/src/{providers → core/providers}/ReactBrowserProvider.ts +6 -6
- package/src/{providers → core/providers}/ReactBrowserRendererProvider.ts +2 -2
- package/src/{providers → core/providers}/ReactBrowserRouterProvider.ts +3 -3
- package/src/{providers → core/providers}/ReactPageProvider.ts +3 -3
- package/src/{providers → core/providers}/ReactServerProvider.ts +7 -7
- package/src/{services → core/services}/ReactPageServerService.ts +2 -2
- package/src/{services → core/services}/ReactPageService.ts +1 -1
- package/src/{services → core/services}/ReactRouter.ts +1 -1
- package/src/form/components/FormState.tsx +17 -0
- package/src/form/hooks/useForm.ts +47 -0
- package/src/form/hooks/useFormState.ts +130 -0
- package/src/form/index.ts +38 -0
- package/src/form/services/FormModel.ts +548 -0
- package/src/head/descriptors/$head.ts +25 -0
- package/src/head/hooks/useHead.ts +62 -0
- package/src/head/index.browser.ts +25 -0
- package/src/head/index.ts +47 -0
- package/src/head/interfaces/Head.ts +46 -0
- package/src/head/providers/BrowserHeadProvider.ts +105 -0
- package/src/head/providers/HeadProvider.ts +73 -0
- package/src/head/providers/ServerHeadProvider.ts +109 -0
- package/src/i18n/README.md +76 -0
- package/src/i18n/components/Localize.tsx +35 -0
- package/src/i18n/descriptors/$dictionary.ts +65 -0
- package/src/i18n/hooks/useI18n.ts +18 -0
- package/src/i18n/index.ts +34 -0
- package/src/i18n/providers/I18nProvider.ts +277 -0
- package/src/websocket/hooks/useRoom.tsx +223 -0
- package/src/websocket/index.ts +7 -0
- package/dist/index.browser.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- /package/src/{components → core/components}/ClientOnly.tsx +0 -0
- /package/src/{components → core/components}/ErrorBoundary.tsx +0 -0
- /package/src/{components → core/components}/Link.tsx +0 -0
- /package/src/{components → core/components}/NotFound.tsx +0 -0
- /package/src/{contexts → core/contexts}/RouterLayerContext.ts +0 -0
- /package/src/{errors → core/errors}/Redirection.ts +0 -0
- /package/src/{hooks → core/hooks}/useActive.ts +0 -0
- /package/src/{hooks → core/hooks}/useRouter.ts +0 -0
- /package/src/{index.shared.ts → core/index.shared.ts} +0 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import * as alepha0 from "alepha";
|
|
2
|
+
import { Alepha, Static, TObject, TSchema } from "alepha";
|
|
3
|
+
import * as alepha_logger0 from "alepha/logger";
|
|
4
|
+
import { InputHTMLAttributes, ReactNode } from "react";
|
|
5
|
+
|
|
6
|
+
//#region src/form/services/FormModel.d.ts
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* FormModel is a dynamic form handler that generates form inputs based on a provided TypeBox schema.
|
|
10
|
+
* It manages form state, handles input changes, and processes form submissions with validation.
|
|
11
|
+
*
|
|
12
|
+
* It means to be injected and used within React components to provide a structured way to create and manage forms.
|
|
13
|
+
*
|
|
14
|
+
* @see {@link useForm}
|
|
15
|
+
*/
|
|
16
|
+
declare class FormModel<T extends TObject> {
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly options: FormCtrlOptions<T>;
|
|
19
|
+
protected readonly log: alepha_logger0.Logger;
|
|
20
|
+
protected readonly alepha: Alepha;
|
|
21
|
+
protected readonly values: Record<string, any>;
|
|
22
|
+
protected submitInProgress: boolean;
|
|
23
|
+
input: SchemaToInput<T>;
|
|
24
|
+
get submitting(): boolean;
|
|
25
|
+
constructor(id: string, options: FormCtrlOptions<T>);
|
|
26
|
+
get element(): HTMLFormElement;
|
|
27
|
+
get currentValues(): Record<string, any>;
|
|
28
|
+
get props(): {
|
|
29
|
+
id: string;
|
|
30
|
+
noValidate: boolean;
|
|
31
|
+
onSubmit: (ev?: FormEventLike) => void;
|
|
32
|
+
onReset: (event: FormEventLike) => Promise<void>;
|
|
33
|
+
};
|
|
34
|
+
readonly reset: (event: FormEventLike) => Promise<void>;
|
|
35
|
+
readonly submit: () => Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Restructures flat keys like "address.city" into nested objects like { address: { city: ... } }
|
|
38
|
+
* Values are already typed from onChange, so no conversion is needed.
|
|
39
|
+
*/
|
|
40
|
+
protected restructureValues(store: Record<string, any>): Record<string, any>;
|
|
41
|
+
/**
|
|
42
|
+
* Helper to restructure a flat key like "address.city" into nested object structure.
|
|
43
|
+
* The value is already typed, so we just assign it to the nested path.
|
|
44
|
+
*/
|
|
45
|
+
protected restructureNestedValue(values: Record<string, any>, key: string, value: any): void;
|
|
46
|
+
protected createProxyFromSchema<T extends TObject>(options: FormCtrlOptions<T>, schema: TSchema, context: {
|
|
47
|
+
parent: string;
|
|
48
|
+
store: Record<string, any>;
|
|
49
|
+
}): SchemaToInput<T>;
|
|
50
|
+
protected createInputFromSchema<T extends TObject>(name: keyof Static<T> & string, options: FormCtrlOptions<T>, schema: TObject, required: boolean, context: {
|
|
51
|
+
parent: string;
|
|
52
|
+
store: Record<string, any>;
|
|
53
|
+
}): InputField;
|
|
54
|
+
/**
|
|
55
|
+
* Convert an input value to the correct type based on the schema.
|
|
56
|
+
* Handles raw DOM values (strings, booleans from checkboxes, Files, etc.)
|
|
57
|
+
*/
|
|
58
|
+
protected getValueFromInput(input: any, schema: TSchema): any;
|
|
59
|
+
protected valueToInputEntry(value: any): string | number | boolean;
|
|
60
|
+
}
|
|
61
|
+
type SchemaToInput<T extends TObject> = { [K in keyof T["properties"]]: T["properties"][K] extends TObject ? SchemaToInput<T["properties"][K]> : InputField };
|
|
62
|
+
interface FormEventLike {
|
|
63
|
+
preventDefault?: () => void;
|
|
64
|
+
stopPropagation?: () => void;
|
|
65
|
+
}
|
|
66
|
+
interface InputField {
|
|
67
|
+
path: string;
|
|
68
|
+
required: boolean;
|
|
69
|
+
props: InputHTMLAttributesLike;
|
|
70
|
+
schema: TSchema;
|
|
71
|
+
set: (value: any) => void;
|
|
72
|
+
form: FormModel<any>;
|
|
73
|
+
}
|
|
74
|
+
type InputHTMLAttributesLike = Pick<InputHTMLAttributes<unknown>, "id" | "name" | "type" | "value" | "defaultValue" | "required" | "maxLength" | "minLength" | "aria-label" | "autoComplete"> & {
|
|
75
|
+
value?: any;
|
|
76
|
+
defaultValue?: any;
|
|
77
|
+
onChange?: (event: any) => void;
|
|
78
|
+
};
|
|
79
|
+
type FormCtrlOptions<T extends TObject> = {
|
|
80
|
+
/**
|
|
81
|
+
* The schema defining the structure and validation rules for the form.
|
|
82
|
+
* This should be a TypeBox schema object.
|
|
83
|
+
*/
|
|
84
|
+
schema: T;
|
|
85
|
+
/**
|
|
86
|
+
* Callback function to handle form submission.
|
|
87
|
+
* This function will receive the parsed and validated form values.
|
|
88
|
+
*/
|
|
89
|
+
handler: (values: Static<T>, args: {
|
|
90
|
+
form: HTMLFormElement;
|
|
91
|
+
}) => unknown;
|
|
92
|
+
/**
|
|
93
|
+
* Optional initial values for the form fields.
|
|
94
|
+
* This can be used to pre-populate the form with existing data.
|
|
95
|
+
*/
|
|
96
|
+
initialValues?: Partial<Static<T>>;
|
|
97
|
+
/**
|
|
98
|
+
* Optional function to create custom field attributes.
|
|
99
|
+
* This can be used to add custom validation, styles, or other attributes.
|
|
100
|
+
*/
|
|
101
|
+
onCreateField?: (name: keyof Static<T> & string, schema: TSchema) => InputHTMLAttributes<unknown>;
|
|
102
|
+
/**
|
|
103
|
+
* If defined, this will generate a unique ID for each field, prefixed with this string.
|
|
104
|
+
*
|
|
105
|
+
* > "username" with id="form-123" will become "form-123-username".
|
|
106
|
+
*
|
|
107
|
+
* If omitted, IDs will not be generated.
|
|
108
|
+
*/
|
|
109
|
+
id?: string;
|
|
110
|
+
onError?: (error: Error, args: {
|
|
111
|
+
form: HTMLFormElement;
|
|
112
|
+
}) => void;
|
|
113
|
+
onChange?: (key: string, value: any, store: Record<string, any>) => void;
|
|
114
|
+
onReset?: () => void;
|
|
115
|
+
};
|
|
116
|
+
//#endregion
|
|
117
|
+
//#region src/form/components/FormState.d.ts
|
|
118
|
+
declare const FormState: <T extends TObject>(props: {
|
|
119
|
+
form: FormModel<T>;
|
|
120
|
+
children: (state: {
|
|
121
|
+
loading: boolean;
|
|
122
|
+
dirty: boolean;
|
|
123
|
+
}) => ReactNode;
|
|
124
|
+
}) => ReactNode;
|
|
125
|
+
//#endregion
|
|
126
|
+
//#region src/form/hooks/useForm.d.ts
|
|
127
|
+
/**
|
|
128
|
+
* Custom hook to create a form with validation and field management.
|
|
129
|
+
* This hook uses TypeBox schemas to define the structure and validation rules for the form.
|
|
130
|
+
* It provides a way to handle form submission, field creation, and value management.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```tsx
|
|
134
|
+
* import { t } from "alepha";
|
|
135
|
+
*
|
|
136
|
+
* const form = useForm({
|
|
137
|
+
* schema: t.object({
|
|
138
|
+
* username: t.text(),
|
|
139
|
+
* password: t.text(),
|
|
140
|
+
* }),
|
|
141
|
+
* handler: (values) => {
|
|
142
|
+
* console.log("Form submitted with values:", values);
|
|
143
|
+
* },
|
|
144
|
+
* });
|
|
145
|
+
*
|
|
146
|
+
* return (
|
|
147
|
+
* <form {...form.props}>
|
|
148
|
+
* <input {...form.input.username.props} />
|
|
149
|
+
* <input {...form.input.password.props} />
|
|
150
|
+
* <button type="submit">Submit</button>
|
|
151
|
+
* </form>
|
|
152
|
+
* );
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
declare const useForm: <T extends TObject>(options: FormCtrlOptions<T>, deps?: any[]) => FormModel<T>;
|
|
156
|
+
//#endregion
|
|
157
|
+
//#region src/form/hooks/useFormState.d.ts
|
|
158
|
+
interface UseFormStateReturn {
|
|
159
|
+
loading: boolean;
|
|
160
|
+
dirty: boolean;
|
|
161
|
+
values?: Record<string, any>;
|
|
162
|
+
error?: Error;
|
|
163
|
+
}
|
|
164
|
+
declare const useFormState: <T extends TObject, Keys extends keyof UseFormStateReturn>(target: FormModel<T> | {
|
|
165
|
+
form: FormModel<T>;
|
|
166
|
+
path: string;
|
|
167
|
+
}, _events?: Keys[]) => Pick<UseFormStateReturn, Keys>;
|
|
168
|
+
//#endregion
|
|
169
|
+
//#region src/form/index.d.ts
|
|
170
|
+
declare module "alepha" {
|
|
171
|
+
interface Hooks {
|
|
172
|
+
"form:change": {
|
|
173
|
+
id: string;
|
|
174
|
+
path: string;
|
|
175
|
+
value: any;
|
|
176
|
+
};
|
|
177
|
+
"form:reset": {
|
|
178
|
+
id: string;
|
|
179
|
+
values: Record<string, any>;
|
|
180
|
+
};
|
|
181
|
+
"form:submit:begin": {
|
|
182
|
+
id: string;
|
|
183
|
+
};
|
|
184
|
+
"form:submit:success": {
|
|
185
|
+
id: string;
|
|
186
|
+
values: Record<string, any>;
|
|
187
|
+
};
|
|
188
|
+
"form:submit:error": {
|
|
189
|
+
id: string;
|
|
190
|
+
error: Error;
|
|
191
|
+
};
|
|
192
|
+
"form:submit:end": {
|
|
193
|
+
id: string;
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* React hooks for managing forms in Alepha applications.
|
|
199
|
+
*
|
|
200
|
+
* This module provides a set of hooks to simplify form handling, validation, and submission in React applications built with Alepha.
|
|
201
|
+
*
|
|
202
|
+
* It includes:
|
|
203
|
+
* - `useForm`: A hook for managing form state, validation, and submission.
|
|
204
|
+
*
|
|
205
|
+
* @see {@link useForm}
|
|
206
|
+
* @module alepha.react.form
|
|
207
|
+
*/
|
|
208
|
+
declare const AlephaReactForm: alepha0.Service<alepha0.Module>;
|
|
209
|
+
//#endregion
|
|
210
|
+
export { AlephaReactForm, FormCtrlOptions, FormEventLike, FormModel, FormState, InputField, InputHTMLAttributesLike, SchemaToInput, UseFormStateReturn, useForm, useFormState };
|
|
211
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/form/services/FormModel.ts","../../src/form/components/FormState.tsx","../../src/form/hooks/useForm.ts","../../src/form/hooks/useFormState.ts","../../src/form/index.ts"],"sourcesContent":[],"mappings":"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"}
|