@alepha/ui 0.14.4 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/admin/index.d.ts.map +1 -1
  2. package/dist/auth/Login-Cjxv3EDi.js.map +1 -1
  3. package/dist/auth/{Register-BKBIpHhW.js → Register-CGlbQ50l.js} +5 -2
  4. package/dist/auth/Register-CGlbQ50l.js.map +1 -0
  5. package/dist/auth/Register-CWdkXWkc.js +4 -0
  6. package/dist/auth/ResetPassword-DvqD_1SJ.js.map +1 -1
  7. package/dist/auth/index.d.ts +24 -20
  8. package/dist/auth/index.d.ts.map +1 -1
  9. package/dist/auth/index.js +6 -6
  10. package/dist/auth/index.js.map +1 -1
  11. package/dist/core/index.d.ts +186 -186
  12. package/dist/core/index.d.ts.map +1 -1
  13. package/dist/demo/{DemoLogin--wE44i23.js → DemoLogin-DvltFTER.js} +2 -1
  14. package/dist/demo/DemoLogin-DvltFTER.js.map +1 -0
  15. package/dist/demo/{DemoRegister-BtrMksx6.js → DemoRegister-Vu6ZPWib.js} +6 -2
  16. package/dist/demo/DemoRegister-Vu6ZPWib.js.map +1 -0
  17. package/dist/demo/{DemoResetPassword-DVXiiiX7.js → DemoResetPassword-BFwmqwec.js} +2 -1
  18. package/dist/demo/DemoResetPassword-BFwmqwec.js.map +1 -0
  19. package/dist/demo/index.d.ts +12 -12
  20. package/dist/demo/index.d.ts.map +1 -1
  21. package/dist/demo/index.js +3 -3
  22. package/dist/json/index.d.ts +18 -19
  23. package/dist/json/index.d.ts.map +1 -1
  24. package/package.json +11 -11
  25. package/src/auth/AuthRouter.ts +6 -6
  26. package/src/auth/components/Login.tsx +2 -2
  27. package/src/auth/components/Register.tsx +8 -3
  28. package/src/auth/components/ResetPassword.tsx +2 -2
  29. package/src/demo/components/auth/DemoLogin.tsx +4 -3
  30. package/src/demo/components/auth/DemoRegister.tsx +4 -3
  31. package/src/demo/components/auth/DemoResetPassword.tsx +3 -2
  32. package/dist/auth/Register-BKBIpHhW.js.map +0 -1
  33. package/dist/auth/Register-CtdvihIM.js +0 -4
  34. package/dist/demo/DemoLogin--wE44i23.js.map +0 -1
  35. package/dist/demo/DemoRegister-BtrMksx6.js.map +0 -1
  36. package/dist/demo/DemoResetPassword-DVXiiiX7.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/core/atoms/alephaThemeAtom.ts","../../src/core/utils/parseInput.ts","../../src/core/components/form/ControlArray.tsx","../../src/core/components/form/ControlNumber.tsx","../../src/core/components/form/ControlObject.tsx","../../src/core/components/form/ControlSelect.tsx","../../src/core/components/form/Control.tsx","../../src/core/atoms/alephaThemeListAtom.ts","../../src/core/interfaces/AlephaTheme.ts","../../src/core/atoms/themes/default.ts","../../src/core/atoms/themes/midnight.ts","../../src/core/components/buttons/ActionButton.tsx","../../src/core/components/buttons/BurgerButton.tsx","../../src/core/components/buttons/ClipboardButton.tsx","../../src/core/components/buttons/DarkModeButton.tsx","../../src/core/components/buttons/LanguageButton.tsx","../../src/core/components/buttons/OmnibarButton.tsx","../../src/core/components/buttons/ThemeButton.tsx","../../src/core/services/DialogService.tsx","../../src/core/components/dialogs/AlertDialog.tsx","../../src/core/components/dialogs/ConfirmDialog.tsx","../../src/core/components/dialogs/PromptDialog.tsx","../../src/core/components/form/ControlDate.tsx","../../src/core/components/form/ControlQueryBuilder.tsx","../../src/core/components/form/TypeForm.tsx","../../src/core/components/layout/AppBar.tsx","../../src/core/components/layout/Sidebar.tsx","../../src/core/components/layout/AdminShell.tsx","../../src/core/components/layout/Omnibar.tsx","../../src/core/components/layout/AlephaMantineProvider.tsx","../../src/core/components/table/types.ts","../../src/core/components/table/DataTable.tsx","../../src/core/constants/ui.ts","../../src/core/hooks/useDialog.ts","../../src/core/services/ToastService.tsx","../../src/core/hooks/useToast.ts","../../src/core/providers/ThemeProvider.ts","../../src/core/RootRouter.ts","../../src/core/utils/extractSchemaFields.ts","../../src/core/utils/icons.tsx","../../src/core/utils/string.ts","../../src/core/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/core/atoms/alephaThemeAtom.ts","../../src/core/utils/parseInput.ts","../../src/core/components/form/ControlArray.tsx","../../src/core/components/form/ControlNumber.tsx","../../src/core/components/form/ControlObject.tsx","../../src/core/components/form/ControlSelect.tsx","../../src/core/components/form/Control.tsx","../../src/core/atoms/alephaThemeListAtom.ts","../../src/core/interfaces/AlephaTheme.ts","../../src/core/atoms/themes/default.ts","../../src/core/atoms/themes/midnight.ts","../../src/core/components/buttons/ActionButton.tsx","../../src/core/components/buttons/BurgerButton.tsx","../../src/core/components/buttons/ClipboardButton.tsx","../../src/core/components/buttons/DarkModeButton.tsx","../../src/core/components/buttons/LanguageButton.tsx","../../src/core/components/buttons/OmnibarButton.tsx","../../src/core/components/buttons/ThemeButton.tsx","../../src/core/services/DialogService.tsx","../../src/core/components/dialogs/AlertDialog.tsx","../../src/core/components/dialogs/ConfirmDialog.tsx","../../src/core/components/dialogs/PromptDialog.tsx","../../src/core/components/form/ControlDate.tsx","../../src/core/components/form/ControlQueryBuilder.tsx","../../src/core/components/form/TypeForm.tsx","../../src/core/components/layout/AppBar.tsx","../../src/core/components/layout/Sidebar.tsx","../../src/core/components/layout/AdminShell.tsx","../../src/core/components/layout/Omnibar.tsx","../../src/core/components/layout/AlephaMantineProvider.tsx","../../src/core/components/table/types.ts","../../src/core/components/table/DataTable.tsx","../../src/core/constants/ui.ts","../../src/core/hooks/useDialog.ts","../../src/core/services/ToastService.tsx","../../src/core/hooks/useToast.ts","../../src/core/providers/ThemeProvider.ts","../../src/core/RootRouter.ts","../../src/core/utils/extractSchemaFields.ts","../../src/core/utils/icons.tsx","../../src/core/utils/string.ts","../../src/core/index.ts"],"mappings":"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"}
@@ -283,6 +283,7 @@ const buildRealmConfig = (props) => {
283
283
  emailEnabled: props.emailEnabled,
284
284
  emailRequired: false,
285
285
  usernameEnabled: props.usernameEnabled,
286
+ usernameRegExp: "^[a-zA-Z0-9_]{3,30}$",
286
287
  usernameRequired: false,
287
288
  phoneEnabled: props.phoneEnabled,
288
289
  phoneRequired: false,
@@ -324,4 +325,4 @@ var DemoLogin_default = DemoLogin;
324
325
 
325
326
  //#endregion
326
327
  export { DemoLogin_default as default };
327
- //# sourceMappingURL=DemoLogin--wE44i23.js.map
328
+ //# sourceMappingURL=DemoLogin-DvltFTER.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DemoLogin-DvltFTER.js","names":["IconGoogle","IconGithub","Showcase","Login"],"sources":["../../src/auth/components/Login.tsx","../../src/demo/components/auth/DemoLogin.tsx"],"sourcesContent":["import { useAuth } from \"@alepha/react/auth\";\nimport { FormValidationError, useForm } from \"@alepha/react/form\";\nimport { useI18n } from \"@alepha/react/i18n\";\nimport { useRouter } from \"@alepha/react/router\";\nimport { ActionButton, Control, capitalize } from \"@alepha/ui\";\nimport { Card, Flex, Group, Image, Stack, Text, Title } from \"@mantine/core\";\nimport { IconLock, IconUser } from \"@tabler/icons-react\";\nimport { AlephaError, t } from \"alepha\";\nimport type { RealmConfig } from \"alepha/api/users\";\nimport { HttpError } from \"alepha/server\";\nimport { useMemo } from \"react\";\nimport type { AuthI18n } from \"../AuthI18n.ts\";\nimport type { AuthRouter } from \"../AuthRouter.ts\";\nimport IconGithub from \"./icons/IconGithub.tsx\";\nimport IconGoogle from \"./icons/IconGoogle.tsx\";\n\nexport interface LoginProps {\n realmConfig: RealmConfig;\n}\n\nconst Login = (props: LoginProps) => {\n const auth = useAuth();\n const router = useRouter<AuthRouter>();\n const { tr } = useI18n<AuthI18n, \"en\">();\n const redirect = router.query.r || \"/\";\n\n const credentialsProvider = props.realmConfig.authenticationMethods.find(\n (it) => it.type === \"CREDENTIALS\",\n );\n\n const settings = props.realmConfig.settings;\n\n // Determine what login methods are available\n const loginMethods = useMemo(() => {\n const methods = [];\n if (settings.usernameEnabled !== false) methods.push(\"username\");\n if (settings.emailEnabled !== false) methods.push(\"email\");\n if (settings.phoneEnabled === true) methods.push(\"phone\");\n return methods;\n }, [settings]);\n\n // Create identifier title based on enabled methods\n const identifierTitle = useMemo(() => {\n if (loginMethods.length === 0) return tr(\"loginUsername\");\n if (loginMethods.length === 1) {\n if (loginMethods[0] === \"username\") return tr(\"loginUsername\");\n if (loginMethods[0] === \"email\") return tr(\"loginEmail\");\n if (loginMethods[0] === \"phone\") return tr(\"loginPhone\");\n }\n const labels = loginMethods.map((m) => {\n if (m === \"username\") return tr(\"loginUsername\").toLowerCase();\n if (m === \"email\") return tr(\"loginEmail\").toLowerCase();\n if (m === \"phone\") return tr(\"loginPhone\").toLowerCase();\n return m;\n });\n return capitalize(\n `${labels.slice(0, -1).join(\", \")} or ${labels[labels.length - 1]}`,\n );\n }, [loginMethods, tr]);\n\n const form = useForm({\n schema: t.object({\n identifier: t.string({\n minLength: 1,\n }),\n password: t.string({\n minLength: settings.passwordPolicy?.minLength || 6,\n }),\n }),\n handler: async (data) => {\n if (!credentialsProvider) {\n throw new AlephaError(\"Credentials provider not configured\");\n }\n\n try {\n await auth.login(credentialsProvider.name, {\n username: data.identifier,\n password: data.password,\n realm: props.realmConfig.realmName,\n });\n await router.go(router.query.r || \"/\");\n } catch (error) {\n if (\n error instanceof HttpError &&\n error.error === \"InvalidCredentialsError\"\n ) {\n throw new FormValidationError({\n message: \"Invalid identifier or password\",\n path: \"/password\",\n });\n }\n throw error;\n }\n },\n });\n\n const getAutoCompleteType = () => {\n if (loginMethods.includes(\"email\")) {\n return \"email\";\n }\n if (loginMethods.includes(\"username\")) {\n return \"username\";\n }\n if (loginMethods.includes(\"phone\")) {\n return \"tel\";\n }\n return \"username\";\n };\n\n const externalLoginMethods = props.realmConfig.authenticationMethods.filter(\n (method) => method.type !== \"CREDENTIALS\",\n );\n\n const showOrDivider = credentialsProvider && externalLoginMethods.length > 0;\n\n return (\n <Flex flex={1} justify={\"center\"} align={\"center\"}>\n <Stack gap={\"sm\"} w={360}>\n <Card withBorder p={\"lg\"} bg={\"var(--alepha-elevated)\"}>\n <Stack gap={\"md\"}>\n {/* Realm branding */}\n {(settings.logoUrl ||\n settings.displayName ||\n settings.description) && (\n <Stack gap={\"xs\"} align=\"center\" mb=\"xs\">\n {settings.logoUrl && (\n <Image\n src={settings.logoUrl}\n alt={settings.displayName || props.realmConfig.realmName}\n h={48}\n w=\"auto\"\n fit=\"contain\"\n />\n )}\n {settings.displayName && (\n <Title order={4} ta=\"center\">\n {settings.displayName}\n </Title>\n )}\n {settings.description && (\n <Text size=\"sm\" c=\"dimmed\" ta=\"center\">\n {settings.description}\n </Text>\n )}\n </Stack>\n )}\n\n {/* Credentials login form */}\n {credentialsProvider && (\n <>\n <form {...form.props}>\n <Stack flex={1} gap={\"md\"}>\n <Control\n title={identifierTitle}\n input={form.input.identifier}\n icon={IconUser}\n text={{\n autoComplete: getAutoCompleteType(),\n }}\n />\n <Control\n title={tr(\"loginPassword\")}\n input={form.input.password}\n icon={IconLock}\n password={{\n autoComplete: \"current-password\",\n }}\n />\n <ActionButton variant={\"filled\"} form={form}>\n {tr(\"loginSignIn\")}\n </ActionButton>\n </Stack>\n </form>\n {settings.resetPasswordAllowed && (\n <Text size=\"sm\" ta=\"center\">\n <ActionButton\n href={router.path(\"resetPassword\", {\n query: { realm: props.realmConfig.realmName },\n })}\n anchorProps={{ inherit: true }}\n >\n {tr(\"loginForgotPassword\")}\n </ActionButton>\n </Text>\n )}\n </>\n )}\n\n {/* OR divider - only when both credentials AND external methods exist */}\n {showOrDivider && (\n <Group align=\"center\" justify=\"center\" gap={\"md\"}>\n <Flex flex={1} h={\"1px\"} bg={\"var(--alepha-border)\"} />\n <Text size=\"xs\" c={\"dimmed\"}>\n {tr(\"loginOr\")}\n </Text>\n <Flex flex={1} h={\"1px\"} bg={\"var(--alepha-border)\"} />\n </Group>\n )}\n\n {/* External login methods */}\n {externalLoginMethods.length > 0 && (\n <Stack gap={\"sm\"}>\n {externalLoginMethods.map((method) => (\n <ActionButton\n variant={\"default\"}\n key={method.type}\n leftSection={leftSection(method.name.toLowerCase())}\n onClick={() =>\n auth.login(method.name, {\n redirect,\n realm: props.realmConfig.realmName,\n })\n }\n >\n {tr(\"loginContinueWith\", {\n args: [capitalize(method.name)],\n })}\n </ActionButton>\n ))}\n </Stack>\n )}\n\n {/* Registration link */}\n {settings.registrationAllowed && (\n <Text size=\"sm\" ta=\"center\">\n {tr(\"loginNoAccount\")}{\" \"}\n <ActionButton\n href={router.path(\"register\", {\n query: { realm: props.realmConfig.realmName },\n })}\n anchorProps={{ inherit: true }}\n >\n {tr(\"loginSignUp\")}\n </ActionButton>\n </Text>\n )}\n </Stack>\n </Card>\n <ActionButton variant={\"subtle\"} href={\"/\"}>\n {tr(\"loginCancel\")}\n </ActionButton>\n </Stack>\n </Flex>\n );\n};\n\nexport default Login;\n\nconst leftSection = (name: string) => {\n if (name === \"google\") {\n return <IconGoogle />;\n }\n\n if (name === \"github\") {\n return <IconGithub />;\n }\n};\n","import { t } from \"alepha\";\nimport type { RealmConfig } from \"alepha/api/users\";\nimport Login from \"../../../auth/components/Login.tsx\";\nimport Showcase from \"../shared/Showcase.tsx\";\n\nconst showcaseSchema = t.object({\n showCredentials: t.boolean({\n title: \"Credentials\",\n default: true,\n $control: { switch: true },\n }),\n showGoogleOAuth: t.boolean({\n title: \"Google OAuth\",\n default: true,\n $control: { switch: true },\n }),\n showGithubOAuth: t.boolean({\n title: \"GitHub OAuth\",\n default: false,\n $control: { switch: true },\n }),\n usernameEnabled: t.boolean({\n title: \"Username Login\",\n default: true,\n $control: { switch: true },\n }),\n emailEnabled: t.boolean({\n title: \"Email Login\",\n default: true,\n $control: { switch: true },\n }),\n phoneEnabled: t.boolean({\n title: \"Phone Login\",\n default: false,\n $control: { switch: true },\n }),\n registrationAllowed: t.boolean({\n title: \"Show Sign Up\",\n default: true,\n $control: { switch: true },\n }),\n resetPasswordAllowed: t.boolean({\n title: \"Forgot Password\",\n default: true,\n $control: { switch: true },\n }),\n showBranding: t.boolean({\n title: \"Show Branding\",\n default: true,\n $control: { switch: true },\n }),\n});\n\nconst buildRealmConfig = (props: {\n showCredentials: boolean;\n showGoogleOAuth: boolean;\n showGithubOAuth: boolean;\n usernameEnabled: boolean;\n emailEnabled: boolean;\n phoneEnabled: boolean;\n registrationAllowed: boolean;\n resetPasswordAllowed: boolean;\n showBranding: boolean;\n}): RealmConfig => {\n const authMethods: RealmConfig[\"authenticationMethods\"] = [];\n\n if (props.showCredentials) {\n authMethods.push({ name: \"credentials\", type: \"CREDENTIALS\" });\n }\n if (props.showGoogleOAuth) {\n authMethods.push({ name: \"google\", type: \"OAUTH2\" });\n }\n if (props.showGithubOAuth) {\n authMethods.push({ name: \"github\", type: \"OAUTH2\" });\n }\n\n return {\n realmName: \"demo\",\n authenticationMethods: authMethods,\n settings: {\n displayName: props.showBranding ? \"Demo App\" : undefined,\n description: props.showBranding ? \"Sign in to continue\" : undefined,\n logoUrl: undefined,\n registrationAllowed: props.registrationAllowed,\n emailEnabled: props.emailEnabled,\n emailRequired: false,\n usernameEnabled: props.usernameEnabled,\n usernameRegExp: \"^[a-zA-Z0-9_]{3,30}$\",\n usernameRequired: false,\n phoneEnabled: props.phoneEnabled,\n phoneRequired: false,\n verifyEmailRequired: false,\n verifyPhoneRequired: false,\n firstNameLastNameEnabled: false,\n firstNameLastNameRequired: false,\n resetPasswordAllowed: props.resetPasswordAllowed,\n passwordPolicy: {\n minLength: 8,\n requireUppercase: true,\n requireLowercase: true,\n requireNumbers: true,\n requireSpecialCharacters: false,\n },\n },\n };\n};\n\nconst DemoLogin = () => {\n return (\n <Showcase\n title=\"Login\"\n schema={showcaseSchema}\n initialValues={{\n showCredentials: true,\n showGoogleOAuth: true,\n showGithubOAuth: false,\n usernameEnabled: true,\n emailEnabled: true,\n phoneEnabled: false,\n registrationAllowed: true,\n resetPasswordAllowed: true,\n showBranding: true,\n }}\n columns={1}\n >\n {(props) => <Login realmConfig={buildRealmConfig(props)} />}\n </Showcase>\n );\n};\n\nexport default DemoLogin;\n"],"mappings":"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"}
@@ -30,7 +30,10 @@ const Register = (props) => {
30
30
  const form = useForm({
31
31
  schema: useMemo(() => {
32
32
  const registerSchema = t.object({
33
- username: t.optional(t.text()),
33
+ username: t.optional(t.text({
34
+ trim: true,
35
+ pattern: settings.usernameRegExp
36
+ })),
34
37
  email: t.optional(t.email()),
35
38
  phoneNumber: t.optional(t.e164()),
36
39
  password: t.string({ minLength: 8 }),
@@ -443,6 +446,7 @@ const buildRealmConfig = (props) => {
443
446
  emailRequired: props.emailRequired,
444
447
  usernameEnabled: props.usernameEnabled,
445
448
  usernameRequired: props.usernameRequired,
449
+ usernameRegExp: "^[a-zA-Z0-9_]{3,30}$",
446
450
  phoneEnabled: props.phoneEnabled,
447
451
  phoneRequired: props.phoneRequired,
448
452
  verifyEmailRequired: false,
@@ -485,4 +489,4 @@ var DemoRegister_default = DemoRegister;
485
489
 
486
490
  //#endregion
487
491
  export { DemoRegister_default as default };
488
- //# sourceMappingURL=DemoRegister-BtrMksx6.js.map
492
+ //# sourceMappingURL=DemoRegister-Vu6ZPWib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DemoRegister-Vu6ZPWib.js","names":["IconGoogle","IconGithub","Showcase","Register"],"sources":["../../src/auth/components/Register.tsx","../../src/demo/components/auth/DemoRegister.tsx"],"sourcesContent":["import { useClient } from \"@alepha/react\";\nimport { useAuth } from \"@alepha/react/auth\";\nimport { useForm } from \"@alepha/react/form\";\nimport { useI18n } from \"@alepha/react/i18n\";\nimport { useRouter } from \"@alepha/react/router\";\nimport { ActionButton, Control, capitalize } from \"@alepha/ui\";\nimport {\n Alert,\n Card,\n Flex,\n Group,\n Image,\n PinInput,\n Stack,\n Text,\n Title,\n} from \"@mantine/core\";\nimport {\n IconAlertCircle,\n IconLock,\n IconMail,\n IconPhone,\n IconUser,\n} from \"@tabler/icons-react\";\nimport { TypeBoxError, t } from \"alepha\";\nimport type {\n RealmConfig,\n RegistrationIntentResponse,\n UserController,\n} from \"alepha/api/users\";\nimport { useMemo, useState } from \"react\";\nimport type { AuthI18n } from \"../AuthI18n.ts\";\nimport type { AuthRouter } from \"../AuthRouter.ts\";\nimport IconGithub from \"./icons/IconGithub.tsx\";\nimport IconGoogle from \"./icons/IconGoogle.tsx\";\n\nexport interface RegisterProps {\n realmConfig: RealmConfig;\n}\n\ntype RegistrationPhase = \"form\" | \"verification\";\n\ninterface RegistrationState {\n phase: RegistrationPhase;\n intent?: RegistrationIntentResponse;\n credentials?: {\n identifier: string;\n password: string;\n };\n}\n\nconst Register = (props: RegisterProps) => {\n const auth = useAuth();\n const userCtrl = useClient<UserController>();\n const router = useRouter<AuthRouter>();\n const { tr } = useI18n<AuthI18n, \"en\">();\n const redirect = router.query.r || \"/\";\n\n const [registrationState, setRegistrationState] = useState<RegistrationState>(\n {\n phase: \"form\",\n },\n );\n const [emailCode, setEmailCode] = useState(\"\");\n const [phoneCode, setPhoneCode] = useState(\"\");\n const [verificationError, setVerificationError] = useState<string | null>(\n null,\n );\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const credentialsProvider = props.realmConfig.authenticationMethods.find(\n (it) => it.type === \"CREDENTIALS\",\n );\n\n const settings = props.realmConfig.settings || {};\n const isRegistrationAllowed = settings.registrationAllowed !== false;\n\n const registerSchema = useMemo(() => {\n const registerSchema = t.object({\n username: t.optional(\n t.text({\n trim: true,\n pattern: settings.usernameRegExp,\n }),\n ),\n email: t.optional(t.email()),\n phoneNumber: t.optional(t.e164()),\n password: t.string({ minLength: 8 }),\n confirmPassword: t.string({ minLength: 8 }),\n });\n\n const required = registerSchema.required as string[];\n\n if (settings.usernameRequired) required.push(\"username\");\n if (settings.emailRequired) required.push(\"email\");\n if (settings.phoneRequired) required.push(\"phoneNumber\");\n\n return registerSchema;\n }, []);\n\n const form = useForm({\n schema: registerSchema,\n handler: async (data) => {\n if (data.password !== data.confirmPassword) {\n throw new TypeBoxError({\n message: \"Passwords do not match\",\n instancePath: \"/confirmPassword\",\n keyword: \"not\",\n schemaPath: \"\",\n params: {},\n });\n }\n\n // Phase 1: Create registration intent\n const intent = await userCtrl.createRegistrationIntent({\n query: { userRealmName: props.realmConfig.realmName },\n body: {\n username: data.username,\n email: data.email,\n phoneNumber: data.phoneNumber,\n password: data.password,\n },\n });\n\n const identifier = data.username ?? data.email ?? data.phoneNumber;\n\n // Check if verification is needed\n if (\n intent.expectEmailVerification ||\n intent.expectPhoneVerification ||\n intent.expectCaptcha\n ) {\n // Move to verification phase\n setRegistrationState({\n phase: \"verification\",\n intent,\n credentials: identifier\n ? { identifier, password: data.password }\n : undefined,\n });\n return;\n }\n\n // No verification needed - complete registration immediately\n await userCtrl.createUserFromIntent({\n body: { intentId: intent.intentId },\n });\n\n // Auto-login after registration\n if (identifier && credentialsProvider) {\n await auth.login(credentialsProvider.name, {\n username: identifier,\n password: data.password,\n realm: props.realmConfig.realmName,\n });\n }\n\n await router.go(router.query.r || \"/\");\n },\n });\n\n const handleVerificationSubmit = async () => {\n if (!registrationState.intent) return;\n\n setIsSubmitting(true);\n setVerificationError(null);\n\n try {\n // Phase 2: Complete registration with verification codes\n await userCtrl.createUserFromIntent({\n body: {\n intentId: registrationState.intent.intentId,\n emailCode: registrationState.intent.expectEmailVerification\n ? emailCode\n : undefined,\n phoneCode: registrationState.intent.expectPhoneVerification\n ? phoneCode\n : undefined,\n },\n });\n\n // Auto-login after registration\n if (registrationState.credentials && credentialsProvider) {\n await auth.login(credentialsProvider.name, {\n username: registrationState.credentials.identifier,\n password: registrationState.credentials.password,\n realm: props.realmConfig.realmName,\n });\n }\n\n await router.go(router.query.r || \"/\");\n } catch (error) {\n setVerificationError(\n error instanceof Error ? error.message : \"Verification failed\",\n );\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const canSubmitVerification = () => {\n if (!registrationState.intent) return false;\n\n if (\n registrationState.intent.expectEmailVerification &&\n emailCode.length !== 6\n ) {\n return false;\n }\n\n if (\n registrationState.intent.expectPhoneVerification &&\n phoneCode.length !== 6\n ) {\n return false;\n }\n\n return true;\n };\n\n // Verification phase UI\n if (registrationState.phase === \"verification\" && registrationState.intent) {\n return (\n <Flex flex={1} justify={\"center\"} align={\"center\"}>\n <Stack gap={\"sm\"} w={360}>\n <Card withBorder p={\"lg\"} bg={\"var(--alepha-elevated)\"}>\n <Stack gap={\"md\"}>\n <Text size=\"lg\" fw={500} ta=\"center\">\n {tr(\"registerVerifyTitle\") ?? \"Verify your account\"}\n </Text>\n <Text size=\"sm\" c=\"dimmed\" ta=\"center\">\n {tr(\"registerVerifyDescription\") ??\n \"Please enter the verification code(s) sent to you.\"}\n </Text>\n\n {verificationError && (\n <Alert variant=\"light\" color=\"red\" icon={<IconAlertCircle />}>\n <Text size=\"sm\">{verificationError}</Text>\n </Alert>\n )}\n\n {registrationState.intent.expectEmailVerification && (\n <Stack gap={\"xs\"}>\n <Text size=\"sm\" fw={500}>\n {tr(\"registerEmailCode\")}\n </Text>\n <Flex justify=\"center\">\n <PinInput\n length={6}\n value={emailCode}\n onChange={setEmailCode}\n type=\"number\"\n oneTimeCode\n aria-label=\"Email verification code\"\n />\n </Flex>\n </Stack>\n )}\n\n {registrationState.intent.expectPhoneVerification && (\n <Stack gap={\"xs\"}>\n <Text size=\"sm\" fw={500}>\n {tr(\"registerPhoneCode\")}\n </Text>\n <Flex justify=\"center\">\n <PinInput\n length={6}\n value={phoneCode}\n onChange={setPhoneCode}\n type=\"number\"\n oneTimeCode\n aria-label=\"Phone verification code\"\n />\n </Flex>\n </Stack>\n )}\n\n <ActionButton\n color={\"blue\"}\n onClick={handleVerificationSubmit}\n loading={isSubmitting}\n disabled={!canSubmitVerification()}\n >\n {tr(\"registerVerifySubmit\")}\n </ActionButton>\n\n <ActionButton\n variant=\"subtle\"\n onClick={() =>\n setRegistrationState({ phase: \"form\", intent: undefined })\n }\n >\n {tr(\"registerVerifyBack\") ?? \"Back to registration\"}\n </ActionButton>\n </Stack>\n </Card>\n </Stack>\n </Flex>\n );\n }\n\n // External login methods\n const externalMethods = props.realmConfig.authenticationMethods.filter(\n (method) => method.type !== \"CREDENTIALS\",\n );\n\n const showOrDivider = credentialsProvider && externalMethods.length > 0;\n\n // Registration form phase UI\n return (\n <Flex flex={1} justify={\"center\"} align={\"center\"}>\n <Stack gap={\"sm\"} w={360}>\n <Card withBorder p={\"lg\"} bg={\"var(--alepha-elevated)\"}>\n <Stack gap={\"md\"}>\n {/* Realm branding */}\n {(settings.logoUrl ||\n settings.displayName ||\n settings.description) && (\n <Stack gap={\"xs\"} align=\"center\" mb=\"xs\">\n {settings.logoUrl && (\n <Image\n src={settings.logoUrl}\n alt={settings.displayName || props.realmConfig.realmName}\n h={48}\n w=\"auto\"\n fit=\"contain\"\n />\n )}\n {settings.displayName && (\n <Title order={4} ta=\"center\">\n {settings.displayName}\n </Title>\n )}\n {settings.description && (\n <Text size=\"sm\" c=\"dimmed\" ta=\"center\">\n {settings.description}\n </Text>\n )}\n </Stack>\n )}\n\n {!isRegistrationAllowed ? (\n <>\n <Alert\n variant=\"light\"\n color=\"yellow\"\n icon={<IconAlertCircle />}\n >\n <Text size=\"sm\">{tr(\"registerDisabled\")}</Text>\n </Alert>\n <ActionButton\n href={router.path(\"login\", {\n query: { realm: props.realmConfig.realmName },\n })}\n >\n {tr(\"registerBackToSignIn\")}\n </ActionButton>\n </>\n ) : (\n <>\n {/* Credentials registration form */}\n {credentialsProvider && (\n <form {...form.props}>\n <Stack flex={1} gap={\"md\"}>\n {settings.usernameEnabled !== false &&\n form.input.username && (\n <Control\n title={tr(\"registerUsername\")}\n input={form.input.username}\n icon={<IconUser />}\n text={{\n autoComplete: \"username\",\n }}\n />\n )}\n {settings.emailEnabled !== false && form.input.email && (\n <Control\n title={tr(\"registerEmail\")}\n input={form.input.email}\n icon={<IconMail />}\n text={{\n autoComplete: \"email\",\n }}\n />\n )}\n {settings.phoneEnabled === true &&\n form.input.phoneNumber && (\n <Control\n title={tr(\"registerPhone\")}\n input={form.input.phoneNumber}\n icon={<IconPhone />}\n text={{\n autoComplete: \"tel\",\n }}\n />\n )}\n <Control\n title={tr(\"registerPassword\")}\n input={form.input.password}\n icon={<IconLock />}\n password={{\n autoComplete: \"new-password\",\n }}\n />\n <Control\n title={tr(\"registerConfirmPassword\")}\n input={form.input.confirmPassword}\n icon={<IconLock />}\n password={{\n autoComplete: \"new-password\",\n }}\n />\n <ActionButton\n form={form}\n color={\"blue\"}\n variant={\"filled\"}\n >\n {tr(\"registerCreateAccount\")}\n </ActionButton>\n </Stack>\n </form>\n )}\n\n {/* OR divider - only when both credentials AND external methods exist */}\n {showOrDivider && (\n <Group align=\"center\" justify=\"center\" gap={\"md\"}>\n <Flex flex={1} h={\"1px\"} bg={\"var(--alepha-border)\"} />\n <Text size=\"xs\" c=\"dimmed\">\n {tr(\"registerOr\")}\n </Text>\n <Flex flex={1} h={\"1px\"} bg={\"var(--alepha-border)\"} />\n </Group>\n )}\n\n {/* External login methods */}\n {externalMethods.length > 0 && (\n <Stack gap={\"sm\"}>\n {externalMethods.map((method) => (\n <ActionButton\n variant={\"default\"}\n key={method.type}\n leftSection={leftSection(method.name.toLowerCase())}\n onClick={() =>\n auth.login(method.name, {\n redirect,\n realm: props.realmConfig.realmName,\n })\n }\n >\n {tr(\"registerContinueWith\", {\n args: [capitalize(method.name)],\n })}\n </ActionButton>\n ))}\n </Stack>\n )}\n\n {/* Sign in link */}\n <Text size=\"sm\" ta=\"center\">\n {tr(\"registerHaveAccount\")}{\" \"}\n <ActionButton\n href={router.path(\"login\", {\n query: { realm: props.realmConfig.realmName },\n })}\n anchorProps={{ inherit: true }}\n >\n {tr(\"registerSignIn\")}\n </ActionButton>\n </Text>\n </>\n )}\n </Stack>\n </Card>\n <ActionButton variant={\"subtle\"} href={redirect}>\n {tr(\"registerCancel\")}\n </ActionButton>\n </Stack>\n </Flex>\n );\n};\n\nexport default Register;\n\nconst leftSection = (name: string) => {\n if (name === \"google\") {\n return <IconGoogle />;\n }\n\n if (name === \"github\") {\n return <IconGithub />;\n }\n};\n","import { t } from \"alepha\";\nimport type { RealmConfig } from \"alepha/api/users\";\nimport Register from \"../../../auth/components/Register.tsx\";\nimport Showcase from \"../shared/Showcase.tsx\";\n\nconst showcaseSchema = t.object({\n showCredentials: t.boolean({\n title: \"Credentials\",\n default: true,\n $control: { switch: true },\n }),\n showGoogleOAuth: t.boolean({\n title: \"Google OAuth\",\n default: true,\n $control: { switch: true },\n }),\n showGithubOAuth: t.boolean({\n title: \"GitHub OAuth\",\n default: false,\n $control: { switch: true },\n }),\n usernameEnabled: t.boolean({\n title: \"Username Field\",\n default: true,\n $control: { switch: true },\n }),\n usernameRequired: t.boolean({\n title: \"Username Required\",\n default: false,\n $control: { switch: true },\n }),\n emailEnabled: t.boolean({\n title: \"Email Field\",\n default: true,\n $control: { switch: true },\n }),\n emailRequired: t.boolean({\n title: \"Email Required\",\n default: true,\n $control: { switch: true },\n }),\n phoneEnabled: t.boolean({\n title: \"Phone Field\",\n default: false,\n $control: { switch: true },\n }),\n phoneRequired: t.boolean({\n title: \"Phone Required\",\n default: false,\n $control: { switch: true },\n }),\n registrationAllowed: t.boolean({\n title: \"Registration Allowed\",\n default: true,\n $control: { switch: true },\n }),\n showBranding: t.boolean({\n title: \"Show Branding\",\n default: true,\n $control: { switch: true },\n }),\n});\n\nconst buildRealmConfig = (props: {\n showCredentials: boolean;\n showGoogleOAuth: boolean;\n showGithubOAuth: boolean;\n usernameEnabled: boolean;\n usernameRequired: boolean;\n emailEnabled: boolean;\n emailRequired: boolean;\n phoneEnabled: boolean;\n phoneRequired: boolean;\n registrationAllowed: boolean;\n showBranding: boolean;\n}): RealmConfig => {\n const authMethods: RealmConfig[\"authenticationMethods\"] = [];\n\n if (props.showCredentials) {\n authMethods.push({ name: \"credentials\", type: \"CREDENTIALS\" });\n }\n if (props.showGoogleOAuth) {\n authMethods.push({ name: \"google\", type: \"OAUTH2\" });\n }\n if (props.showGithubOAuth) {\n authMethods.push({ name: \"github\", type: \"OAUTH2\" });\n }\n\n return {\n realmName: \"demo\",\n authenticationMethods: authMethods,\n settings: {\n displayName: props.showBranding ? \"Demo App\" : undefined,\n description: props.showBranding ? \"Create your account\" : undefined,\n logoUrl: undefined,\n registrationAllowed: props.registrationAllowed,\n emailEnabled: props.emailEnabled,\n emailRequired: props.emailRequired,\n usernameEnabled: props.usernameEnabled,\n usernameRequired: props.usernameRequired,\n usernameRegExp: \"^[a-zA-Z0-9_]{3,30}$\",\n phoneEnabled: props.phoneEnabled,\n phoneRequired: props.phoneRequired,\n verifyEmailRequired: false,\n verifyPhoneRequired: false,\n firstNameLastNameEnabled: false,\n firstNameLastNameRequired: false,\n resetPasswordAllowed: true,\n passwordPolicy: {\n minLength: 8,\n requireUppercase: true,\n requireLowercase: true,\n requireNumbers: true,\n requireSpecialCharacters: false,\n },\n },\n };\n};\n\nconst DemoRegister = () => {\n return (\n <Showcase\n title=\"Register\"\n schema={showcaseSchema}\n initialValues={{\n showCredentials: true,\n showGoogleOAuth: true,\n showGithubOAuth: false,\n usernameEnabled: true,\n usernameRequired: false,\n emailEnabled: true,\n emailRequired: true,\n phoneEnabled: false,\n phoneRequired: false,\n registrationAllowed: true,\n showBranding: true,\n }}\n columns={1}\n >\n {(props) => <Register realmConfig={buildRealmConfig(props)} />}\n </Showcase>\n );\n};\n\nexport default DemoRegister;\n"],"mappings":"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"}
@@ -305,6 +305,7 @@ const buildRealmConfig = (props) => {
305
305
  emailRequired: true,
306
306
  usernameEnabled: false,
307
307
  usernameRequired: false,
308
+ usernameRegExp: "^[a-zA-Z0-9_]{3,30}$",
308
309
  phoneEnabled: false,
309
310
  phoneRequired: false,
310
311
  verifyEmailRequired: false,
@@ -338,4 +339,4 @@ var DemoResetPassword_default = DemoResetPassword;
338
339
 
339
340
  //#endregion
340
341
  export { DemoResetPassword_default as default };
341
- //# sourceMappingURL=DemoResetPassword-DVXiiiX7.js.map
342
+ //# sourceMappingURL=DemoResetPassword-BFwmqwec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DemoResetPassword-BFwmqwec.js","names":["Showcase","ResetPassword"],"sources":["../../src/auth/components/ResetPassword.tsx","../../src/demo/components/auth/DemoResetPassword.tsx"],"sourcesContent":["import { useClient } from \"@alepha/react\";\nimport { useForm } from \"@alepha/react/form\";\nimport { useI18n } from \"@alepha/react/i18n\";\nimport { useRouter } from \"@alepha/react/router\";\nimport { ActionButton, Control } from \"@alepha/ui\";\nimport {\n Alert,\n Card,\n Flex,\n Image,\n PinInput,\n Stack,\n Text,\n Title,\n} from \"@mantine/core\";\nimport {\n IconAlertCircle,\n IconCheck,\n IconInfoCircle,\n IconLock,\n IconMail,\n} from \"@tabler/icons-react\";\nimport { AlephaError, t } from \"alepha\";\nimport type {\n PasswordResetIntentResponse,\n RealmConfig,\n UserController,\n} from \"alepha/api/users\";\nimport { resetPasswordRequestSchema } from \"alepha/api/users\";\nimport { useState } from \"react\";\nimport type { AuthI18n } from \"../AuthI18n.ts\";\nimport type { AuthRouter } from \"../AuthRouter.ts\";\n\nexport interface ResetPasswordProps {\n realmConfig: RealmConfig;\n}\n\ntype Step = \"email\" | \"code\" | \"password\" | \"success\";\n\ninterface ResetState {\n step: Step;\n intent?: PasswordResetIntentResponse;\n email?: string;\n code?: string;\n}\n\nconst ResetPassword = (props: ResetPasswordProps) => {\n const router = useRouter<AuthRouter>();\n const userCtrl = useClient<UserController>();\n const { tr } = useI18n<AuthI18n, \"en\">();\n const [resetState, setResetState] = useState<ResetState>({ step: \"email\" });\n const [error, setError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const redirect = router.query.r || \"/\";\n\n const settings = props.realmConfig.settings;\n const isResetPasswordAllowed = settings?.resetPasswordAllowed !== false;\n\n // Phase 1: Request password reset intent\n const emailForm = useForm({\n schema: resetPasswordRequestSchema,\n handler: async (data) => {\n setError(null);\n const intent = await userCtrl.createPasswordResetIntent({\n query: { userRealmName: props.realmConfig.realmName },\n body: { email: data.email },\n });\n\n setResetState({\n step: \"code\",\n intent,\n email: data.email,\n });\n },\n });\n\n // Phase 2: Complete password reset\n const passwordForm = useForm(\n {\n schema: t.object({\n password: t.string({ minLength: 8 }),\n confirmPassword: t.string({ minLength: 8 }),\n }),\n handler: async (data) => {\n if (data.password !== data.confirmPassword) {\n throw new AlephaError(\"Passwords do not match\");\n }\n\n if (!resetState.intent || !resetState.code) {\n throw new AlephaError(\"Invalid reset state\");\n }\n\n await userCtrl.completePasswordReset({\n body: {\n intentId: resetState.intent.intentId,\n code: resetState.code,\n newPassword: data.password,\n },\n });\n\n setResetState({ step: \"success\" });\n },\n },\n [resetState.intent, resetState.code],\n );\n\n const handleCodeComplete = (value: string) => {\n if (value.length === 6) {\n setResetState((prev) => ({\n ...prev,\n step: \"password\",\n code: value,\n }));\n }\n };\n\n const handleResendCode = async () => {\n if (!resetState.email) return;\n\n setIsSubmitting(true);\n setError(null);\n\n try {\n const intent = await userCtrl.createPasswordResetIntent({\n query: { userRealmName: props.realmConfig.realmName },\n body: { email: resetState.email },\n });\n\n setResetState((prev) => ({\n ...prev,\n intent,\n }));\n } catch (err) {\n setError(err instanceof Error ? err.message : \"Failed to resend code\");\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <Flex flex={1} justify={\"center\"} align={\"center\"}>\n <Stack gap={\"sm\"} w={360}>\n <Card withBorder p={\"lg\"} bg={\"var(--alepha-elevated)\"}>\n <Stack gap={\"md\"}>\n {/* Realm branding */}\n {(settings.logoUrl ||\n settings.displayName ||\n settings.description) && (\n <Stack gap={\"xs\"} align=\"center\" mb=\"xs\">\n {settings.logoUrl && (\n <Image\n src={settings.logoUrl}\n alt={settings.displayName || props.realmConfig.realmName}\n h={48}\n w=\"auto\"\n fit=\"contain\"\n />\n )}\n {settings.displayName && (\n <Title order={4} ta=\"center\">\n {settings.displayName}\n </Title>\n )}\n {settings.description && (\n <Text size=\"sm\" c=\"dimmed\" ta=\"center\">\n {settings.description}\n </Text>\n )}\n </Stack>\n )}\n\n {error && (\n <Alert variant=\"light\" color=\"red\" icon={<IconAlertCircle />}>\n <Text size=\"sm\">{error}</Text>\n </Alert>\n )}\n\n {!isResetPasswordAllowed ? (\n <>\n <Alert\n variant=\"light\"\n color=\"yellow\"\n icon={<IconAlertCircle />}\n >\n <Text size=\"sm\">{tr(\"resetPasswordDisabled\")}</Text>\n </Alert>\n <ActionButton\n href={router.path(\"login\", {\n query: { realm: props.realmConfig.realmName },\n })}\n >\n {tr(\"resetPasswordBackToSignIn\")}\n </ActionButton>\n </>\n ) : resetState.step === \"email\" ? (\n <form {...emailForm.props}>\n <Stack flex={1} gap={\"md\"}>\n <Text size=\"lg\" fw={500} ta=\"center\">\n {tr(\"resetPasswordTitle\")}\n </Text>\n <Text size=\"sm\" c=\"dimmed\">\n {tr(\"resetPasswordEnterEmail\")}\n </Text>\n <Control\n title={tr(\"resetPasswordEmail\")}\n input={emailForm.input.email}\n icon={<IconMail />}\n text={{\n autoComplete: \"email\",\n autoFocus: true,\n disabled: !isResetPasswordAllowed,\n }}\n />\n <ActionButton\n form={emailForm}\n disabled={!isResetPasswordAllowed}\n >\n {tr(\"resetPasswordSendCode\")}\n </ActionButton>\n </Stack>\n </form>\n ) : resetState.step === \"code\" ? (\n <Stack gap={\"md\"}>\n <Text size=\"lg\" fw={500} ta=\"center\">\n {tr(\"resetPasswordTitle\")}\n </Text>\n <Alert variant=\"light\" color=\"blue\" icon={<IconInfoCircle />}>\n <Text size=\"sm\">{tr(\"resetPasswordCodeSent\")}</Text>\n </Alert>\n <Text size=\"sm\" c=\"dimmed\" ta=\"center\">\n {tr(\"resetPasswordEnterCode\")}\n </Text>\n <Flex justify=\"center\">\n <PinInput\n length={6}\n type=\"number\"\n autoFocus\n oneTimeCode\n onComplete={handleCodeComplete}\n aria-label=\"Password reset verification code\"\n />\n </Flex>\n <ActionButton\n variant=\"subtle\"\n onClick={handleResendCode}\n loading={isSubmitting}\n >\n {tr(\"resetPasswordResendCode\")}\n </ActionButton>\n </Stack>\n ) : resetState.step === \"password\" ? (\n <form {...passwordForm.props}>\n <Stack flex={1} gap={\"md\"}>\n <Text size=\"lg\" fw={500} ta=\"center\">\n {tr(\"resetPasswordTitle\")}\n </Text>\n <Text size=\"sm\" c=\"dimmed\">\n {tr(\"resetPasswordEnterNewPassword\")}\n </Text>\n <Control\n title={tr(\"resetPasswordNewPassword\")}\n input={passwordForm.input.password}\n icon={<IconLock />}\n password={{\n autoComplete: \"new-password\",\n autoFocus: true,\n }}\n />\n <Control\n title={tr(\"resetPasswordConfirmPassword\")}\n input={passwordForm.input.confirmPassword}\n icon={<IconLock />}\n password={{\n autoComplete: \"new-password\",\n }}\n />\n <ActionButton form={passwordForm}>\n {tr(\"resetPasswordSetNewPassword\")}\n </ActionButton>\n </Stack>\n </form>\n ) : (\n <>\n <Alert variant=\"light\" color=\"green\" icon={<IconCheck />}>\n <Text size=\"sm\">{tr(\"resetPasswordSuccess\")}</Text>\n </Alert>\n <ActionButton\n href={router.path(\"login\", {\n query: { realm: props.realmConfig.realmName },\n })}\n >\n {tr(\"resetPasswordBackToSignIn\")}\n </ActionButton>\n </>\n )}\n </Stack>\n </Card>\n <ActionButton variant={\"subtle\"} href={redirect}>\n {tr(\"resetPasswordCancel\")}\n </ActionButton>\n </Stack>\n </Flex>\n );\n};\n\nexport default ResetPassword;\n","import { t } from \"alepha\";\nimport type { RealmConfig } from \"alepha/api/users\";\nimport ResetPassword from \"../../../auth/components/ResetPassword.tsx\";\nimport Showcase from \"../shared/Showcase.tsx\";\n\nconst showcaseSchema = t.object({\n resetPasswordAllowed: t.boolean({\n title: \"Reset Allowed\",\n default: true,\n $control: { switch: true },\n }),\n showBranding: t.boolean({\n title: \"Show Branding\",\n default: true,\n $control: { switch: true },\n }),\n});\n\nconst buildRealmConfig = (props: {\n resetPasswordAllowed: boolean;\n showBranding: boolean;\n}): RealmConfig => {\n return {\n realmName: \"demo\",\n authenticationMethods: [{ name: \"credentials\", type: \"CREDENTIALS\" }],\n settings: {\n displayName: props.showBranding ? \"Demo App\" : undefined,\n description: props.showBranding ? \"Reset your password\" : undefined,\n logoUrl: undefined,\n registrationAllowed: true,\n emailEnabled: true,\n emailRequired: true,\n usernameEnabled: false,\n usernameRequired: false,\n usernameRegExp: \"^[a-zA-Z0-9_]{3,30}$\",\n phoneEnabled: false,\n phoneRequired: false,\n verifyEmailRequired: false,\n verifyPhoneRequired: false,\n firstNameLastNameEnabled: false,\n firstNameLastNameRequired: false,\n resetPasswordAllowed: props.resetPasswordAllowed,\n passwordPolicy: {\n minLength: 8,\n requireUppercase: true,\n requireLowercase: true,\n requireNumbers: true,\n requireSpecialCharacters: false,\n },\n },\n };\n};\n\nconst DemoResetPassword = () => {\n return (\n <Showcase\n title=\"ResetPassword\"\n schema={showcaseSchema}\n initialValues={{\n resetPasswordAllowed: true,\n showBranding: true,\n }}\n columns={1}\n >\n {(props) => <ResetPassword realmConfig={buildRealmConfig(props)} />}\n </Showcase>\n );\n};\n\nexport default DemoResetPassword;\n"],"mappings":"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"}
@@ -31,28 +31,28 @@ declare const MacWindow: ({
31
31
  //#region ../../src/demo/components/shared/Showcase.d.ts
32
32
  interface ShowcaseProps<T extends TObject> {
33
33
  /**
34
- * Component title
35
- */
34
+ * Component title
35
+ */
36
36
  title: string;
37
37
  /**
38
- * Schema for the props configuration
39
- */
38
+ * Schema for the props configuration
39
+ */
40
40
  schema: T;
41
41
  /**
42
- * Initial values for the props
43
- */
42
+ * Initial values for the props
43
+ */
44
44
  initialValues?: Partial<Static<T>>;
45
45
  /**
46
- * Number of columns for the props form
47
- */
46
+ * Number of columns for the props form
47
+ */
48
48
  columns?: number;
49
49
  /**
50
- * Render function that receives the current props values
51
- */
50
+ * Render function that receives the current props values
51
+ */
52
52
  children: (props: Static<T>) => ReactNode;
53
53
  /**
54
- * Additional props for the MacWindow container
55
- */
54
+ * Additional props for the MacWindow container
55
+ */
56
56
  windowProps?: Partial<MacWindowProps>;
57
57
  }
58
58
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/demo/components/DemoHome.tsx","../../src/demo/components/DemoLayout.tsx","../../src/demo/components/json/DemoJsonViewer.tsx","../../src/demo/components/shared/MacWindow.tsx","../../src/demo/components/shared/Showcase.tsx","../../src/demo/DemoRouter.ts","../../src/demo/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;cAaM,gBAAQ,kBAAA,CAAA,GAAA,CAAA;;;cCRR,kBAAU,kBAAA,CAAA,GAAA,CAAA;;;cC6EV,sBAAc,kBAAA,CAAA,GAAA,CAAA;;;UC/EH,cAAA;YACL;;mBAEO;;;AHOL,cGDR,SHcL,EAAA,CAba;EAAA,QAAA;EAAA,KAAA;EAAA,cAab;EAAA;AAAA,CAAA,EGTE,cHSF,EAAA,GGTgB,kBAAA,CAAA,GAAA,CAAA,OHShB;;;UInBgB,wBAAwB;;;;;EJMnC;;;UIEI;EHVJ;;;kBGcY,QAAQ,OAAO;EF+D3B;;;;EC/EW;AAKhB;;EAIkB,QAAA,EAAA,CAAA,KAAA,ECeC,MDfD,CCeQ,CDfR,CAAA,EAAA,GCee,SDff;EAAA;;;EAKF,WAAA,CAAA,ECcD,ODdC,CCcO,cDdP,CAAA;;;;;ACVjB;cA+BM,QA/BmC,EAAA,CAAA,UA+Bb,OA/Ba,CAAA,CAAA;EAAA,KAAA;EAAA,MAAA;EAAA,aAAA;EAAA,OAAA;EAAA,QAAA;EAAA;AAAA,CAAA,EAsCtC,aAtCsC,CAsCxB,CAtCwB,CAAA,EAAA,GAsCtB,kBAAA,CAAA,GAAA,CAAA,OAtCsB;;;cCU5B,UAAA;cACD,qBAAA,CAAA,cADW,qBAAA,CACX,gBAAA,OAAA,qBAAA,CAAA,mBAAA;YAaF,qBAAA,CAAA,cAbE,qBAAA,CAaF,gBAAA,OAAA,qBAAA,CAAA,mBAAA;YAQA,qBAAA,CAAA,cARA,qBAAA,CAQA,gBAAA,OAAA,qBAAA,CAAA,mBAAA;gBAOI,qBAAA,CAAA,cAPJ,qBAAA,CAOI,gBAAA,OAAA,qBAAA,CAAA,mBAAA;eAOD,qBAAA,CAAA,cAPC,qBAAA,CAOD,gBAAA,OAAA,qBAAA,CAAA,mBAAA;iBAOE,qBAAA,CAAA,cAPF,qBAAA,CAOE,gBAAA,OAAA,qBAAA,CAAA,mBAAA;YAQL,qBAAA,CAAA,cARK,qBAAA,CAQL,gBAAA,OAAA,qBAAA,CAAA,mBAAA;ELvDJ,cAaL,EKiDe,qBAAA,CAAA,aLjDf,CK0CS,qBAAA,CAOM,gBAAA,ELjDf,GAAA,EKiDe,qBAAA,CAAA,mBAAA,CLjDf;YKyDS,qBAAA,CAAA,cARM,qBAAA,CAQN,gBAAA,OAAA,qBAAA,CAAA,mBAAA;aAYC,qBAAA,CAAA,cAZD,qBAAA,CAYC,gBAAA,OAAA,qBAAA,CAAA,mBAAA;gBAOG,qBAAA,CAAA,cAPH,qBAAA,CAOG,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EJjGR,iBA4CL,EI4DkB,qBAAA,CAAA,aJ5DlB,CIqDa,qBAAA,CAOK,gBAAA,EJ5DlB,GAAA,EI4DkB,qBAAA,CAAA,mBAAA,CJ5DlB;mBImEgB,qBAAA,CAAA,cAPE,qBAAA,CAOF,gBAAA,OAAA,qBAAA,CAAA,mBAAA;;;;;;ALvGH;;;cMaD,cAAY,OAAA,CAAA,QAGvB,OAAA,CAHuB,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/demo/components/DemoHome.tsx","../../src/demo/components/DemoLayout.tsx","../../src/demo/components/json/DemoJsonViewer.tsx","../../src/demo/components/shared/MacWindow.tsx","../../src/demo/components/shared/Showcase.tsx","../../src/demo/DemoRouter.ts","../../src/demo/index.ts"],"mappings":";;;;;;;;cAaM,QAAA,QAAQ,kBAAA,CAAA,GAAA,CAAA,OAAA;;;cCRR,UAAA,QAAU,kBAAA,CAAA,GAAA,CAAA,OAAA;;;cC6EV,cAAA,QAAc,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UC/EH,cAAA;EAAA,QAAA,EACL,SAAA;EAAA,KAAA;EAAA,cAAA,GAEO,QAAA;EAAA,IAAA;AAAA;AAAA,cAMb,SAAA;EAAA,QAAA;EAAA,KAAA;EAAA,cAAA;EAAA;AAAA,GAKH,cAAA,KAAc,kBAAA,CAAA,GAAA,CAAA,OAAA;;;UCVA,aAAA,WAAwB,OAAA;EAAA;;;EAAA,KAAA;EAAA;;;EAAA,MAAA,EAQ/B,CAAA;EAAA;;;EAAA,aAAA,GAIQ,OAAA,CAAQ,MAAA,CAAO,CAAA;EAAA;;;EAAA,OAAA;EAAA;;;EAAA,QAAA,GAAA,KAAA,EAQb,MAAA,CAAO,CAAA,MAAO,SAAA;EAAA;;;EAAA,WAAA,GAIlB,OAAA,CAAQ,cAAA;AAAA;AAAA;;;AACvB;AADuB,cAOlB,QAAA,aAAsB,OAAA;EAAA,KAAA;EAAA,MAAA;EAAA,aAAA;EAAA,OAAA;EAAA,QAAA;EAAA;AAAA,GAOzB,aAAA,CAAc,CAAA,MAAE,kBAAA,CAAA,GAAA,CAAA,OAAA;;;cC5BN,UAAA;EAAA,UAAA,EACD,qBAAA,CAAA,aAAA,CADW,qBAAA,CACX,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EAAA,QAAA,EAaF,qBAAA,CAAA,aAAA,CAbE,qBAAA,CAaF,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EAAA,QAAA,EAQA,qBAAA,CAAA,aAAA,CARA,qBAAA,CAQA,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EAAA,YAAA,EAOI,qBAAA,CAAA,aAAA,CAPJ,qBAAA,CAOI,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EAAA,WAAA,EAOD,qBAAA,CAAA,aAAA,CAPC,qBAAA,CAOD,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EAAA,aAAA,EAOE,qBAAA,CAAA,aAAA,CAPF,qBAAA,CAOE,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EAAA,QAAA,EAQL,qBAAA,CAAA,aAAA,CARK,qBAAA,CAQL,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EAAA,cAAA,EAOM,qBAAA,CAAA,aAAA,CAPN,qBAAA,CAOM,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EAAA,QAAA,EAQN,qBAAA,CAAA,aAAA,CARM,qBAAA,CAQN,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EAAA,SAAA,EAYC,qBAAA,CAAA,aAAA,CAZD,qBAAA,CAYC,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EAAA,YAAA,EAOG,qBAAA,CAAA,aAAA,CAPH,qBAAA,CAOG,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EAAA,iBAAA,EAOK,qBAAA,CAAA,aAAA,CAPL,qBAAA,CAOK,gBAAA,OAAA,qBAAA,CAAA,mBAAA;EAAA,eAAA,EAOF,qBAAA,CAAA,aAAA,CAPE,qBAAA,CAOF,gBAAA,OAAA,qBAAA,CAAA,mBAAA;AAAA;;;;AC1FjB;;;;cAAa,YAAA,EAAY,OAAA,CAAA,OAAA,CAGvB,OAAA,CAHuB,MAAA"}
@@ -82,19 +82,19 @@ var DemoRouter = class {
82
82
  icon: IconLogin,
83
83
  path: "/login",
84
84
  label: "Login",
85
- lazy: () => import("./DemoLogin--wE44i23.js")
85
+ lazy: () => import("./DemoLogin-DvltFTER.js")
86
86
  });
87
87
  demoRegister = $page({
88
88
  icon: IconUserPlus,
89
89
  path: "/register",
90
90
  label: "Register",
91
- lazy: () => import("./DemoRegister-BtrMksx6.js")
91
+ lazy: () => import("./DemoRegister-Vu6ZPWib.js")
92
92
  });
93
93
  demoResetPassword = $page({
94
94
  icon: IconLockQuestion,
95
95
  path: "/reset-password",
96
96
  label: "ResetPassword",
97
- lazy: () => import("./DemoResetPassword-DVXiiiX7.js")
97
+ lazy: () => import("./DemoResetPassword-BFwmqwec.js")
98
98
  });
99
99
  demoVerifyEmail = $page({
100
100
  icon: IconMailCheck,
@@ -6,42 +6,41 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
6
6
  declare module "@alepha/ui" {
7
7
  interface DialogService {
8
8
  /**
9
- * Opens a JSON viewer dialog.
10
- *
11
- * @param data - The JSON data to display.
12
- * @param options - Additional dialog options.
13
- */
9
+ * Opens a JSON viewer dialog.
10
+ *
11
+ * @param data - The JSON data to display.
12
+ * @param options - Additional dialog options.
13
+ */
14
14
  json(data?: any, options?: BaseDialogOptions): void;
15
15
  }
16
- }
17
- //# sourceMappingURL=DialogService.d.ts.map
16
+ } //# sourceMappingURL=DialogService.d.ts.map
18
17
  //#endregion
19
18
  //#region ../../src/json/components/JsonViewer.d.ts
20
19
  interface JsonViewerProps {
21
20
  data: any;
22
21
  /**
23
- * Depth level to expand by default (0 = collapsed, Infinity = all expanded)
24
- */
22
+ * Depth level to expand by default (0 = collapsed, Infinity = all expanded)
23
+ */
25
24
  defaultExpandedDepth?: number;
26
25
  /**
27
- * Maximum nesting depth to render
28
- */
26
+ * Maximum nesting depth to render
27
+ */
29
28
  maxDepth?: number;
30
29
  /**
31
- * Size variant
32
- */
30
+ * Size variant
31
+ */
33
32
  size?: MantineSize;
34
33
  /**
35
- * Whether to show quotes around keys and strings
36
- */
34
+ * Whether to show quotes around keys and strings
35
+ */
37
36
  showQuotes?: boolean;
38
37
  /**
39
- * Show copy button on row hover
40
- */
38
+ * Show copy button on row hover
39
+ */
41
40
  showCopyButton?: boolean;
42
41
  /**
43
- * Custom value formatter. Return formatted string or undefined to use default.
44
- */
42
+ * Custom value formatter. Return formatted string or undefined to use default.
43
+ */
45
44
  formatValue?: (key: string | undefined, value: any, path: string[]) => string | number | undefined;
46
45
  }
47
46
  declare const JsonViewer: ({
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/json/extensions/DialogService.tsx","../../src/json/components/JsonViewer.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;AAAuE;;;;IAYvB,IAAA,CAAA,IAAA,CAAA,EAAA,GAAA,EAAA,OAAA,CAAA,EAAjB,iBAAiB,CAAA,EAAA,IAAA;;;;;;UCetC,eAAA;;;;AD3B6D;EAAA,oBAAA,CAAA,EAAA,MAAA;;;;;;;ACQhD;EA4VV,IAAA,CAAA,EA5TJ,WAmeR;EAvK0B;;;EAAA,UAAA,CAAA,EAAA,OAAA;EAAA;;;EAQxB,cAAA,CAAA,EAAA,OAAA;EAAe;;;;;cARL;;;;;;;;GAQV,oBAAe,kBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/json/extensions/DialogService.tsx","../../src/json/components/JsonViewer.tsx"],"mappings":";;;;;;;;AAAuE;;;;;+BAYxC,iBAAA;EAAA;AAAA;;;UCerB,eAAA;EAAA,IAAA;EAAA;AAyUV;;EAzUU,oBAAA;EAAA;AAyUV;;EAzUU,QAAA;EAAA;AAyUV;;EAzUU,IAAA,GAaD,WAAA;EAAA;AA4TT;;EA5TS,UAAA;EAAA;AA4TT;;EA5TS,cAAA;EAAA;AA4TT;;EA5TS,WAAA,IAAA,GAAA,sBAAA,KAAA,OAAA,IAAA;AAAA;AAAA,cA4TI,UAAA;EAAA,IAAA;EAAA,oBAAA;EAAA,QAAA;EAAA,IAAA;EAAA,UAAA;EAAA,cAAA;EAAA;AAAA,GAQV,eAAA,KAAe,kBAAA,CAAA,GAAA,CAAA,OAAA"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "mantine"
8
8
  ],
9
9
  "author": "Nicolas Foures",
10
- "version": "0.14.4",
10
+ "version": "0.15.0",
11
11
  "type": "module",
12
12
  "engines": {
13
13
  "node": ">=22.0.0"
@@ -22,16 +22,16 @@
22
22
  "styles.css"
23
23
  ],
24
24
  "dependencies": {
25
- "@alepha/react": "0.14.4",
26
- "@mantine/core": "^8.3.11",
27
- "@mantine/dates": "^8.3.11",
28
- "@mantine/hooks": "^8.3.11",
29
- "@mantine/modals": "^8.3.11",
30
- "@mantine/notifications": "^8.3.11",
31
- "@mantine/nprogress": "^8.3.11",
32
- "@mantine/spotlight": "^8.3.11",
25
+ "@alepha/react": "0.15.0",
26
+ "@mantine/core": "^8.3.12",
27
+ "@mantine/dates": "^8.3.12",
28
+ "@mantine/hooks": "^8.3.12",
29
+ "@mantine/modals": "^8.3.12",
30
+ "@mantine/notifications": "^8.3.12",
31
+ "@mantine/nprogress": "^8.3.12",
32
+ "@mantine/spotlight": "^8.3.12",
33
33
  "@tabler/icons-react": "^3.36.1",
34
- "alepha": "0.14.4",
34
+ "alepha": "0.15.0",
35
35
  "dayjs": "^1.11.19"
36
36
  },
37
37
  "devDependencies": {
@@ -40,7 +40,7 @@
40
40
  "react-dom": "^19.2.3",
41
41
  "typescript": "^5.9.3",
42
42
  "vite": "^7.3.1",
43
- "vitest": "^4.0.16"
43
+ "vitest": "^4.0.17"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "react": "*",
@@ -8,7 +8,7 @@ import {
8
8
  IconUserPlus,
9
9
  } from "@tabler/icons-react";
10
10
  import { $inject, AlephaError, t } from "alepha";
11
- import type { UserRealmController } from "alepha/api/users";
11
+ import type { RealmController } from "alepha/api/users";
12
12
  import { $client } from "alepha/server/links";
13
13
 
14
14
  /**
@@ -22,7 +22,7 @@ const realmQuerySchema = t.object({
22
22
  });
23
23
 
24
24
  export class AuthRouter {
25
- protected readonly userRealmClient = $client<UserRealmController>();
25
+ protected readonly realmClient = $client<RealmController>();
26
26
  protected readonly auth = $inject(ReactAuth);
27
27
 
28
28
  layout = $page({
@@ -115,15 +115,15 @@ export class AuthRouter {
115
115
  },
116
116
  });
117
117
 
118
- protected async loadRealmConfig(userRealmName?: string) {
118
+ protected async loadRealmConfig(realmName?: string) {
119
119
  try {
120
- return await this.userRealmClient.getRealmConfig({
121
- query: { userRealmName },
120
+ return await this.realmClient.getRealmConfig({
121
+ query: { realmName },
122
122
  });
123
123
  } catch (e) {
124
124
  if (e instanceof AlephaError) {
125
125
  throw new AlephaError(
126
- "Missing User-Realm Configuration - Did you forget to add '$userRealm()' to your application?",
126
+ "Missing Realm Configuration - Did you forget to add '$realm()' to your application?",
127
127
  e,
128
128
  );
129
129
  }
@@ -6,7 +6,7 @@ import { ActionButton, Control, capitalize } from "@alepha/ui";
6
6
  import { Card, Flex, Group, Image, Stack, Text, Title } from "@mantine/core";
7
7
  import { IconLock, IconUser } from "@tabler/icons-react";
8
8
  import { AlephaError, t } from "alepha";
9
- import type { UserRealmConfig } from "alepha/api/users";
9
+ import type { RealmConfig } from "alepha/api/users";
10
10
  import { HttpError } from "alepha/server";
11
11
  import { useMemo } from "react";
12
12
  import type { AuthI18n } from "../AuthI18n.ts";
@@ -15,7 +15,7 @@ import IconGithub from "./icons/IconGithub.tsx";
15
15
  import IconGoogle from "./icons/IconGoogle.tsx";
16
16
 
17
17
  export interface LoginProps {
18
- realmConfig: UserRealmConfig;
18
+ realmConfig: RealmConfig;
19
19
  }
20
20
 
21
21
  const Login = (props: LoginProps) => {
@@ -24,9 +24,9 @@ import {
24
24
  } from "@tabler/icons-react";
25
25
  import { TypeBoxError, t } from "alepha";
26
26
  import type {
27
+ RealmConfig,
27
28
  RegistrationIntentResponse,
28
29
  UserController,
29
- UserRealmConfig,
30
30
  } from "alepha/api/users";
31
31
  import { useMemo, useState } from "react";
32
32
  import type { AuthI18n } from "../AuthI18n.ts";
@@ -35,7 +35,7 @@ import IconGithub from "./icons/IconGithub.tsx";
35
35
  import IconGoogle from "./icons/IconGoogle.tsx";
36
36
 
37
37
  export interface RegisterProps {
38
- realmConfig: UserRealmConfig;
38
+ realmConfig: RealmConfig;
39
39
  }
40
40
 
41
41
  type RegistrationPhase = "form" | "verification";
@@ -77,7 +77,12 @@ const Register = (props: RegisterProps) => {
77
77
 
78
78
  const registerSchema = useMemo(() => {
79
79
  const registerSchema = t.object({
80
- username: t.optional(t.text()),
80
+ username: t.optional(
81
+ t.text({
82
+ trim: true,
83
+ pattern: settings.usernameRegExp,
84
+ }),
85
+ ),
81
86
  email: t.optional(t.email()),
82
87
  phoneNumber: t.optional(t.e164()),
83
88
  password: t.string({ minLength: 8 }),
@@ -23,8 +23,8 @@ import {
23
23
  import { AlephaError, t } from "alepha";
24
24
  import type {
25
25
  PasswordResetIntentResponse,
26
+ RealmConfig,
26
27
  UserController,
27
- UserRealmConfig,
28
28
  } from "alepha/api/users";
29
29
  import { resetPasswordRequestSchema } from "alepha/api/users";
30
30
  import { useState } from "react";
@@ -32,7 +32,7 @@ import type { AuthI18n } from "../AuthI18n.ts";
32
32
  import type { AuthRouter } from "../AuthRouter.ts";
33
33
 
34
34
  export interface ResetPasswordProps {
35
- realmConfig: UserRealmConfig;
35
+ realmConfig: RealmConfig;
36
36
  }
37
37
 
38
38
  type Step = "email" | "code" | "password" | "success";