keycloak_theme/stories/login/pages/Register.stories.tsx

124 lines
3.4 KiB
TypeScript
Raw Normal View History

2023-04-20 05:41:34 +02:00
import React from "react";
2024-06-03 00:11:19 +02:00
import type { Meta, StoryObj } from "@storybook/react";
2024-06-09 11:53:25 +02:00
import { createKcPageStory } from "../KcPageStory";
2023-04-20 05:41:34 +02:00
2024-06-09 11:53:25 +02:00
const { KcPageStory } = createKcPageStory({ pageId: "register.ftl" });
2023-04-20 05:41:34 +02:00
2024-06-03 00:11:19 +02:00
const meta = {
2024-06-06 07:28:34 +02:00
title: "login/register.ftl",
2024-06-09 11:53:25 +02:00
component: KcPageStory
} satisfies Meta<typeof KcPageStory>;
2023-04-20 05:41:34 +02:00
export default meta;
2024-06-03 00:11:19 +02:00
type Story = StoryObj<typeof meta>;
export const Default: Story = {
2024-06-09 11:53:25 +02:00
render: () => <KcPageStory />
2024-06-03 00:11:19 +02:00
};
2024-06-12 23:11:06 +02:00
export const WithEmailAlreadyExists: Story = {
2024-06-03 00:11:19 +02:00
render: () => (
2024-06-09 11:53:25 +02:00
<KcPageStory
2024-06-03 00:11:19 +02:00
kcContext={{
profile: {
2024-06-03 23:54:08 +02:00
attributesByName: {
2024-06-12 23:11:06 +02:00
username: {
value: "johndoe"
},
2024-06-03 23:54:08 +02:00
email: {
2024-06-12 23:11:06 +02:00
value: "jhon.doe@gmail.com"
},
firstName: {
value: "John"
},
lastName: {
value: "Doe"
2024-06-03 00:11:19 +02:00
}
2024-06-03 23:54:08 +02:00
}
2024-06-03 00:11:19 +02:00
},
messagesPerField: {
2024-06-12 23:11:06 +02:00
// NOTE: The other functions of messagesPerField are derived from get() and
// existsError() so they are the only ones that need to mock.
existsError: (fieldName: string, ...otherFieldNames: string[]) => [fieldName, ...otherFieldNames].includes("email"),
get: (fieldName: string) => (fieldName === "email" ? "Email already exists." : undefined)
2024-06-03 00:11:19 +02:00
}
}}
/>
)
};
2024-06-03 00:11:19 +02:00
export const WithEmailAsUsername: Story = {
render: () => (
2024-06-09 11:53:25 +02:00
<KcPageStory
2024-06-03 00:11:19 +02:00
kcContext={{
realm: {
registrationEmailAsUsername: true
}
}}
/>
)
};
2024-06-03 00:11:19 +02:00
export const WithoutPassword: Story = {
render: () => (
2024-06-09 11:53:25 +02:00
<KcPageStory
2024-06-03 00:11:19 +02:00
kcContext={{
passwordRequired: false
}}
/>
)
};
2024-06-03 00:11:19 +02:00
export const WithRecaptcha: Story = {
render: () => (
2024-06-09 11:53:25 +02:00
<KcPageStory
2024-06-03 00:11:19 +02:00
kcContext={{
2024-06-04 01:39:54 +02:00
scripts: ["https://www.google.com/recaptcha/api.js?hl=en"],
2024-06-03 00:11:19 +02:00
recaptchaRequired: true,
2024-06-04 01:39:54 +02:00
recaptchaSiteKey: "6LfQHvApAAAAAE73SYTd5vS0lB1Xr7zdiQ-6iBVa"
2024-06-03 00:11:19 +02:00
}}
/>
)
};
2024-06-05 01:02:17 +02:00
export const WithRecaptchaFrench: Story = {
render: () => (
2024-06-09 11:53:25 +02:00
<KcPageStory
2024-06-05 01:02:17 +02:00
kcContext={{
locale: {
currentLanguageTag: "fr"
},
scripts: ["https://www.google.com/recaptcha/api.js?hl=fr"],
recaptchaRequired: true,
recaptchaSiteKey: "6LfQHvApAAAAAE73SYTd5vS0lB1Xr7zdiQ-6iBVa"
}}
/>
)
};
2024-06-03 00:11:19 +02:00
export const WithPresets: Story = {
render: () => (
2024-06-09 11:53:25 +02:00
<KcPageStory
2024-06-03 00:11:19 +02:00
kcContext={{
profile: {
2024-06-03 23:54:08 +02:00
attributesByName: {
firstName: {
2024-06-03 00:11:19 +02:00
value: "Max"
},
2024-06-03 23:54:08 +02:00
lastName: {
2024-06-03 00:11:19 +02:00
value: "Mustermann"
},
2024-06-03 23:54:08 +02:00
email: {
2024-06-03 00:11:19 +02:00
value: "max.mustermann@gmail.com"
},
2024-06-03 23:54:08 +02:00
username: {
2024-06-03 00:11:19 +02:00
value: "max.mustermann"
}
2024-06-03 23:54:08 +02:00
}
2024-06-03 00:11:19 +02:00
}
}}
/>
)
};