@ankhorage/zora 12.0.0 → 13.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/CHANGELOG.md +16 -0
- package/README.md +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +9 -0
- package/dist/constants.js.map +1 -1
- package/dist/features/accordion/accordionItemMeta.d.ts +53 -0
- package/dist/features/accordion/accordionItemMeta.d.ts.map +1 -0
- package/dist/features/accordion/accordionItemMeta.js +45 -0
- package/dist/features/accordion/accordionItemMeta.js.map +1 -0
- package/dist/features/accordion/accordionMeta.d.ts +36 -0
- package/dist/features/accordion/accordionMeta.d.ts.map +1 -0
- package/dist/features/accordion/accordionMeta.js +33 -0
- package/dist/features/accordion/accordionMeta.js.map +1 -0
- package/dist/features/accordion/adapters/inbound/Accordion.d.ts +5 -0
- package/dist/features/accordion/adapters/inbound/Accordion.d.ts.map +1 -0
- package/dist/features/accordion/adapters/inbound/Accordion.js +41 -0
- package/dist/features/accordion/adapters/inbound/Accordion.js.map +1 -0
- package/dist/features/accordion/adapters/inbound/AccordionItem.d.ts +5 -0
- package/dist/features/accordion/adapters/inbound/AccordionItem.d.ts.map +1 -0
- package/dist/features/accordion/adapters/inbound/AccordionItem.js +52 -0
- package/dist/features/accordion/adapters/inbound/AccordionItem.js.map +1 -0
- package/dist/features/accordion/composition/AccordionPresentationContext.d.ts +4 -0
- package/dist/features/accordion/composition/AccordionPresentationContext.d.ts.map +1 -0
- package/dist/features/accordion/composition/AccordionPresentationContext.js +3 -0
- package/dist/features/accordion/composition/AccordionPresentationContext.js.map +1 -0
- package/dist/features/accordion/public.d.ts +4 -0
- package/dist/features/accordion/public.d.ts.map +1 -0
- package/dist/features/accordion/public.js +3 -0
- package/dist/features/accordion/public.js.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/AuthForm.d.ts +3 -3
- package/dist/features/auth/adapters/inbound/AuthForm.d.ts.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/AuthForm.js +2 -2
- package/dist/features/auth/adapters/inbound/AuthForm.js.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/AuthFormField.d.ts +2 -2
- package/dist/features/auth/adapters/inbound/AuthFormField.d.ts.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/AuthFormField.js +2 -2
- package/dist/features/auth/adapters/inbound/AuthFormField.js.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/ForgotPasswordForm.d.ts +1 -1
- package/dist/features/auth/adapters/inbound/ForgotPasswordForm.d.ts.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/ForgotPasswordForm.js +5 -5
- package/dist/features/auth/adapters/inbound/ForgotPasswordForm.js.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/OAuthProviderButton.d.ts +1 -1
- package/dist/features/auth/adapters/inbound/OAuthProviderButton.d.ts.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/OAuthProviderButton.js +3 -3
- package/dist/features/auth/adapters/inbound/OAuthProviderButton.js.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/OAuthProviderList.d.ts +1 -1
- package/dist/features/auth/adapters/inbound/OAuthProviderList.d.ts.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/OAuthProviderList.js +2 -2
- package/dist/features/auth/adapters/inbound/OAuthProviderList.js.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/OtpForm.d.ts +1 -1
- package/dist/features/auth/adapters/inbound/OtpForm.d.ts.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/OtpForm.js +4 -4
- package/dist/features/auth/adapters/inbound/OtpForm.js.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/SignInForm.d.ts +1 -1
- package/dist/features/auth/adapters/inbound/SignInForm.d.ts.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/SignInForm.js +5 -5
- package/dist/features/auth/adapters/inbound/SignInForm.js.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/SignUpForm.d.ts +1 -1
- package/dist/features/auth/adapters/inbound/SignUpForm.d.ts.map +1 -0
- package/dist/{patterns/auth → features/auth/adapters/inbound}/SignUpForm.js +3 -3
- package/dist/features/auth/adapters/inbound/SignUpForm.js.map +1 -0
- package/dist/features/auth/forgotPasswordFormMeta.d.ts +79 -0
- package/dist/features/auth/forgotPasswordFormMeta.d.ts.map +1 -0
- package/dist/features/auth/forgotPasswordFormMeta.js +48 -0
- package/dist/features/auth/forgotPasswordFormMeta.js.map +1 -0
- package/dist/features/auth/oauthProviderButtonMeta.d.ts +83 -0
- package/dist/features/auth/oauthProviderButtonMeta.d.ts.map +1 -0
- package/dist/features/auth/oauthProviderButtonMeta.js +61 -0
- package/dist/features/auth/oauthProviderButtonMeta.js.map +1 -0
- package/dist/features/auth/oauthProviderListMeta.d.ts +109 -0
- package/dist/features/auth/oauthProviderListMeta.d.ts.map +1 -0
- package/dist/features/auth/oauthProviderListMeta.js +66 -0
- package/dist/features/auth/oauthProviderListMeta.js.map +1 -0
- package/dist/features/auth/otpFormMeta.d.ts +89 -0
- package/dist/features/auth/otpFormMeta.d.ts.map +1 -0
- package/dist/features/auth/otpFormMeta.js +54 -0
- package/dist/features/auth/otpFormMeta.js.map +1 -0
- package/dist/features/auth/public.d.ts +9 -0
- package/dist/features/auth/public.d.ts.map +1 -0
- package/dist/features/auth/public.js +8 -0
- package/dist/features/auth/public.js.map +1 -0
- package/dist/features/auth/signInFormMeta.d.ts +100 -0
- package/dist/features/auth/signInFormMeta.d.ts.map +1 -0
- package/dist/features/auth/signInFormMeta.js +62 -0
- package/dist/features/auth/signInFormMeta.js.map +1 -0
- package/dist/features/auth/signUpFormMeta.d.ts +111 -0
- package/dist/features/auth/signUpFormMeta.d.ts.map +1 -0
- package/dist/features/auth/signUpFormMeta.js +66 -0
- package/dist/features/auth/signUpFormMeta.js.map +1 -0
- package/dist/{patterns/auth/utils.d.ts → features/auth/utils/authForm.d.ts} +3 -3
- package/dist/features/auth/utils/authForm.d.ts.map +1 -0
- package/dist/{patterns/auth/utils.js → features/auth/utils/authForm.js} +1 -1
- package/dist/features/auth/utils/authForm.js.map +1 -0
- package/dist/{patterns/auth → features/auth/utils}/oauthProviders.d.ts +1 -1
- package/dist/features/auth/utils/oauthProviders.d.ts.map +1 -0
- package/dist/features/auth/utils/oauthProviders.js.map +1 -0
- package/dist/features/bottom-sheet/bottomSheetMeta.d.ts +1 -1
- package/dist/features/card/cardMeta.d.ts +1 -1
- package/dist/features/card/mediaCardMeta.d.ts +1 -1
- package/dist/features/card/postCardMeta.d.ts +1 -1
- package/dist/{components/gradient → features/gradient/adapters/inbound}/Gradient.d.ts +1 -1
- package/dist/features/gradient/adapters/inbound/Gradient.d.ts.map +1 -0
- package/dist/{components/gradient → features/gradient/adapters/inbound}/Gradient.js +2 -2
- package/dist/features/gradient/adapters/inbound/Gradient.js.map +1 -0
- package/dist/{components/gradient → features/gradient/adapters/inbound}/GradientRendererContext.d.ts +3 -2
- package/dist/features/gradient/adapters/inbound/GradientRendererContext.d.ts.map +1 -0
- package/dist/{components/gradient → features/gradient/adapters/inbound}/GradientRendererContext.js +2 -1
- package/dist/features/gradient/adapters/inbound/GradientRendererContext.js.map +1 -0
- package/dist/features/gradient/gradientMeta.d.ts +48 -0
- package/dist/features/gradient/gradientMeta.d.ts.map +1 -0
- package/dist/features/gradient/gradientMeta.js +25 -0
- package/dist/features/gradient/gradientMeta.js.map +1 -0
- package/dist/features/gradient/public.d.ts +4 -0
- package/dist/features/gradient/public.d.ts.map +1 -0
- package/dist/features/gradient/public.js +3 -0
- package/dist/features/gradient/public.js.map +1 -0
- package/dist/features/keyboard-avoiding-view/keyboardAvoidingViewMeta.d.ts +1 -1
- package/dist/features/layout/boxMeta.d.ts +1 -1
- package/dist/features/layout/containerMeta.d.ts +1 -1
- package/dist/features/layout/gridMeta.d.ts +1 -1
- package/dist/features/layout/stackMeta.d.ts +1 -1
- package/dist/features/list/flatListMeta.d.ts +1 -1
- package/dist/features/list/sectionListMeta.d.ts +1 -1
- package/dist/features/surface/surfaceMeta.d.ts +1 -1
- package/dist/index.d.ts +5 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/layout/screen/meta.d.ts +1 -1
- package/dist/layout/screen-section/meta.d.ts +1 -1
- package/dist/metadata/allowedChildren.d.ts +3 -3
- package/dist/metadata/allowedChildren.d.ts.map +1 -1
- package/dist/metadata/allowedChildren.js +8 -0
- package/dist/metadata/allowedChildren.js.map +1 -1
- package/dist/metadata/bindableComponentMeta.d.ts +2 -2
- package/dist/metadata/componentMeta.d.ts.map +1 -1
- package/dist/metadata/componentMeta.js +11 -4
- package/dist/metadata/componentMeta.js.map +1 -1
- package/dist/patterns/message-bubble/meta.d.ts +1 -1
- package/dist/patterns/notice/meta.d.ts +1 -1
- package/dist/patterns/panel/meta.d.ts +1 -1
- package/dist/patterns/reader/meta.d.ts +2 -2
- package/dist/patterns/scanner/meta.d.ts +2 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +5 -4
- package/dist/registry.js.map +1 -1
- package/dist/types/accordion.d.ts +23 -0
- package/dist/types/accordion.d.ts.map +1 -0
- package/dist/types/accordion.js +2 -0
- package/dist/types/accordion.js.map +1 -0
- package/dist/{patterns/auth/types.d.ts → types/auth.d.ts} +8 -8
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +2 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/{components/gradient/types.d.ts → types/gradient.d.ts} +3 -3
- package/dist/types/gradient.d.ts.map +1 -0
- package/dist/types/gradient.js +2 -0
- package/dist/types/gradient.js.map +1 -0
- package/package.json +2 -2
- package/src/constants.ts +9 -0
- package/src/expo57Migration.test.ts +1 -1
- package/src/featureManifest.test.ts +2 -0
- package/src/features/accordion/accordionItemMeta.ts +46 -0
- package/src/features/accordion/accordionMeta.ts +34 -0
- package/src/features/accordion/adapters/inbound/Accordion.tsx +94 -0
- package/src/features/accordion/adapters/inbound/AccordionItem.tsx +86 -0
- package/src/features/accordion/composition/AccordionPresentationContext.ts +6 -0
- package/src/features/accordion/public.ts +9 -0
- package/src/{patterns/auth → features/auth/adapters/inbound}/AuthForm.tsx +5 -5
- package/src/{patterns/auth → features/auth/adapters/inbound}/AuthFormField.tsx +4 -4
- package/src/{patterns/auth → features/auth/adapters/inbound}/ForgotPasswordForm.tsx +8 -8
- package/src/{patterns/auth → features/auth/adapters/inbound}/OAuthProviderButton.tsx +4 -4
- package/src/{patterns/auth → features/auth/adapters/inbound}/OAuthProviderList.tsx +3 -3
- package/src/{patterns/auth → features/auth/adapters/inbound}/OtpForm.tsx +6 -6
- package/src/{patterns/auth → features/auth/adapters/inbound}/SignInForm.tsx +8 -8
- package/src/{patterns/auth → features/auth/adapters/inbound}/SignUpForm.tsx +5 -5
- package/src/features/auth/forgotPasswordFormMeta.ts +49 -0
- package/src/features/auth/oauthProviderButtonMeta.ts +62 -0
- package/src/features/auth/oauthProviderListMeta.ts +67 -0
- package/src/features/auth/otpFormMeta.ts +55 -0
- package/src/features/auth/public.test.ts +34 -0
- package/src/{patterns/auth/index.ts → features/auth/public.ts} +12 -12
- package/src/features/auth/signInFormMeta.ts +63 -0
- package/src/features/auth/signUpFormMeta.ts +67 -0
- package/src/{patterns/auth/utils.ts → features/auth/utils/authForm.ts} +2 -2
- package/src/{patterns/auth → features/auth/utils}/oauthProviders.test.ts +1 -1
- package/src/{patterns/auth → features/auth/utils}/oauthProviders.ts +1 -1
- package/src/{components/gradient → features/gradient/adapters/inbound}/Gradient.tsx +3 -3
- package/src/{components/gradient → features/gradient/adapters/inbound}/GradientRendererContext.tsx +3 -2
- package/src/features/gradient/gradientMeta.ts +26 -0
- package/src/features/gradient/public.test.ts +15 -0
- package/src/{components/gradient/index.ts → features/gradient/public.ts} +3 -3
- package/src/index.ts +49 -42
- package/src/metadata/allowedChildren.ts +8 -0
- package/src/metadata/componentMeta.test.ts +16 -0
- package/src/metadata/componentMeta.ts +11 -11
- package/src/registry.ts +12 -11
- package/src/showcaseCoverage.test.ts +2 -1
- package/src/theme/themeScopeStructure.test.ts +10 -7
- package/src/types/accordion.ts +38 -0
- package/src/{patterns/auth/types.ts → types/auth.ts} +7 -7
- package/src/{components/gradient/types.ts → types/gradient.ts} +2 -2
- package/dist/components/gradient/Gradient.d.ts.map +0 -1
- package/dist/components/gradient/Gradient.js.map +0 -1
- package/dist/components/gradient/GradientRendererContext.d.ts.map +0 -1
- package/dist/components/gradient/GradientRendererContext.js.map +0 -1
- package/dist/components/gradient/index.d.ts +0 -4
- package/dist/components/gradient/index.d.ts.map +0 -1
- package/dist/components/gradient/index.js +0 -3
- package/dist/components/gradient/index.js.map +0 -1
- package/dist/components/gradient/meta.d.ts +0 -9
- package/dist/components/gradient/meta.d.ts.map +0 -1
- package/dist/components/gradient/meta.js +0 -9
- package/dist/components/gradient/meta.js.map +0 -1
- package/dist/components/gradient/types.d.ts.map +0 -1
- package/dist/components/gradient/types.js +0 -2
- package/dist/components/gradient/types.js.map +0 -1
- package/dist/patterns/auth/AuthForm.d.ts.map +0 -1
- package/dist/patterns/auth/AuthForm.js.map +0 -1
- package/dist/patterns/auth/AuthFormField.d.ts.map +0 -1
- package/dist/patterns/auth/AuthFormField.js.map +0 -1
- package/dist/patterns/auth/ForgotPasswordForm.d.ts.map +0 -1
- package/dist/patterns/auth/ForgotPasswordForm.js.map +0 -1
- package/dist/patterns/auth/OAuthProviderButton.d.ts.map +0 -1
- package/dist/patterns/auth/OAuthProviderButton.js.map +0 -1
- package/dist/patterns/auth/OAuthProviderList.d.ts.map +0 -1
- package/dist/patterns/auth/OAuthProviderList.js.map +0 -1
- package/dist/patterns/auth/OtpForm.d.ts.map +0 -1
- package/dist/patterns/auth/OtpForm.js.map +0 -1
- package/dist/patterns/auth/SignInForm.d.ts.map +0 -1
- package/dist/patterns/auth/SignInForm.js.map +0 -1
- package/dist/patterns/auth/SignUpForm.d.ts.map +0 -1
- package/dist/patterns/auth/SignUpForm.js.map +0 -1
- package/dist/patterns/auth/index.d.ts +0 -9
- package/dist/patterns/auth/index.d.ts.map +0 -1
- package/dist/patterns/auth/index.js +0 -8
- package/dist/patterns/auth/index.js.map +0 -1
- package/dist/patterns/auth/meta.d.ts +0 -49
- package/dist/patterns/auth/meta.d.ts.map +0 -1
- package/dist/patterns/auth/meta.js +0 -50
- package/dist/patterns/auth/meta.js.map +0 -1
- package/dist/patterns/auth/oauthProviders.d.ts.map +0 -1
- package/dist/patterns/auth/oauthProviders.js.map +0 -1
- package/dist/patterns/auth/types.d.ts.map +0 -1
- package/dist/patterns/auth/types.js +0 -2
- package/dist/patterns/auth/types.js.map +0 -1
- package/dist/patterns/auth/utils.d.ts.map +0 -1
- package/dist/patterns/auth/utils.js.map +0 -1
- package/dist/patterns/disclosure-section/DisclosureSection.d.ts +0 -9
- package/dist/patterns/disclosure-section/DisclosureSection.d.ts.map +0 -1
- package/dist/patterns/disclosure-section/DisclosureSection.js +0 -86
- package/dist/patterns/disclosure-section/DisclosureSection.js.map +0 -1
- package/dist/patterns/disclosure-section/index.d.ts +0 -3
- package/dist/patterns/disclosure-section/index.d.ts.map +0 -1
- package/dist/patterns/disclosure-section/index.js +0 -3
- package/dist/patterns/disclosure-section/index.js.map +0 -1
- package/dist/patterns/disclosure-section/meta.d.ts +0 -9
- package/dist/patterns/disclosure-section/meta.d.ts.map +0 -1
- package/dist/patterns/disclosure-section/meta.js +0 -9
- package/dist/patterns/disclosure-section/meta.js.map +0 -1
- package/dist/patterns/disclosure-section/types.d.ts +0 -15
- package/dist/patterns/disclosure-section/types.d.ts.map +0 -1
- package/dist/patterns/disclosure-section/types.js +0 -2
- package/dist/patterns/disclosure-section/types.js.map +0 -1
- package/src/components/gradient/meta.ts +0 -10
- package/src/patterns/auth/meta.ts +0 -57
- package/src/patterns/disclosure-section/DisclosureSection.tsx +0 -130
- package/src/patterns/disclosure-section/index.ts +0 -2
- package/src/patterns/disclosure-section/meta.ts +0 -10
- package/src/patterns/disclosure-section/types.ts +0 -16
- /package/dist/{patterns/auth → features/auth/utils}/oauthProviders.js +0 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AccordionContent as SurfaceAccordionContent,
|
|
3
|
+
AccordionItem as SurfaceAccordionItem,
|
|
4
|
+
AccordionTrigger as SurfaceAccordionTrigger,
|
|
5
|
+
} from '@ankhorage/surface';
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import type { ViewStyle } from 'react-native';
|
|
8
|
+
|
|
9
|
+
import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
|
|
10
|
+
import type { AccordionItemProps } from '../../../../types/accordion';
|
|
11
|
+
import { Icon } from '../../../icon/public';
|
|
12
|
+
import { Box, Divider, Stack } from '../../../layout/public';
|
|
13
|
+
import { Heading, Text } from '../../../typography/public';
|
|
14
|
+
import { AccordionPresentationContext } from '../../composition/AccordionPresentationContext';
|
|
15
|
+
|
|
16
|
+
/*** Renders one opinionated ZORA accordion item over Surface trigger/content primitives. */
|
|
17
|
+
export const AccordionItem = withZoraThemeScope(AccordionItemInner);
|
|
18
|
+
|
|
19
|
+
const triggerStyle: ViewStyle = { flex: 1 };
|
|
20
|
+
|
|
21
|
+
/*** Composes the item header, optional actions, expanded content, and separator. */
|
|
22
|
+
function AccordionItemInner({
|
|
23
|
+
themeId: _themeId,
|
|
24
|
+
mode: _mode,
|
|
25
|
+
actions,
|
|
26
|
+
children,
|
|
27
|
+
description,
|
|
28
|
+
disabled,
|
|
29
|
+
icon,
|
|
30
|
+
interactionPolicy,
|
|
31
|
+
testID,
|
|
32
|
+
title,
|
|
33
|
+
value,
|
|
34
|
+
...surfaceItemProps
|
|
35
|
+
}: AccordionItemProps) {
|
|
36
|
+
const presentation = React.useContext(AccordionPresentationContext);
|
|
37
|
+
if (!presentation) {
|
|
38
|
+
throw new Error('AccordionItem must be rendered inside Accordion.');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const open = presentation.openValues.includes(value);
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<SurfaceAccordionItem
|
|
45
|
+
{...surfaceItemProps}
|
|
46
|
+
disabled={disabled}
|
|
47
|
+
interactionPolicy={interactionPolicy}
|
|
48
|
+
testID={testID}
|
|
49
|
+
value={value}
|
|
50
|
+
>
|
|
51
|
+
<Stack gap="none">
|
|
52
|
+
<Stack align="center" direction="row" gap="s">
|
|
53
|
+
<Box flex={1}>
|
|
54
|
+
<SurfaceAccordionTrigger interactionPolicy={interactionPolicy} style={triggerStyle}>
|
|
55
|
+
<Box px="m" py="m">
|
|
56
|
+
<Stack align="center" direction="row" gap="m">
|
|
57
|
+
{icon ? <Icon {...icon} /> : null}
|
|
58
|
+
<Box flex={1}>
|
|
59
|
+
<Stack gap="xs">
|
|
60
|
+
<Heading level={4}>{title}</Heading>
|
|
61
|
+
{description ? (
|
|
62
|
+
<Text emphasis="muted" variant="bodySmall">
|
|
63
|
+
{description}
|
|
64
|
+
</Text>
|
|
65
|
+
) : null}
|
|
66
|
+
</Stack>
|
|
67
|
+
</Box>
|
|
68
|
+
<Icon name={open ? 'chevron-up-outline' : 'chevron-down-outline'} size="m" />
|
|
69
|
+
</Stack>
|
|
70
|
+
</Box>
|
|
71
|
+
</SurfaceAccordionTrigger>
|
|
72
|
+
</Box>
|
|
73
|
+
{actions ? <Box pr="m">{actions}</Box> : null}
|
|
74
|
+
</Stack>
|
|
75
|
+
|
|
76
|
+
<SurfaceAccordionContent>
|
|
77
|
+
<Box px="m" pb="m">
|
|
78
|
+
<Stack gap="m">{children}</Stack>
|
|
79
|
+
</Box>
|
|
80
|
+
</SurfaceAccordionContent>
|
|
81
|
+
|
|
82
|
+
<Divider />
|
|
83
|
+
</Stack>
|
|
84
|
+
</SurfaceAccordionItem>
|
|
85
|
+
);
|
|
86
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type {
|
|
2
|
+
AccordionItemProps,
|
|
3
|
+
AccordionMode,
|
|
4
|
+
AccordionMultipleProps,
|
|
5
|
+
AccordionProps,
|
|
6
|
+
AccordionSingleProps,
|
|
7
|
+
} from '../../types/accordion';
|
|
8
|
+
export { Accordion } from './adapters/inbound/Accordion';
|
|
9
|
+
export { AccordionItem } from './adapters/inbound/AccordionItem';
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
3
|
+
import type { ZoraBaseProps } from '../../../../theme/ZoraBaseProps';
|
|
4
|
+
import type { FormErrors, FormFieldConfig, FormValues } from '../../../../types/form';
|
|
5
|
+
import { FormActions, FormError, useFormController } from '../../../form/public';
|
|
6
|
+
import { Stack } from '../../../layout/public';
|
|
7
7
|
import { AuthFormField } from './AuthFormField';
|
|
8
8
|
|
|
9
9
|
interface AuthFormProps<TName extends string> {
|
|
10
10
|
fields: readonly FormFieldConfig<TName>[];
|
|
11
11
|
values: FormValues<TName>;
|
|
12
12
|
onChange: (values: FormValues<TName>) => void;
|
|
13
|
-
onSubmit
|
|
13
|
+
onSubmit?: (values: FormValues<TName>) => void | Promise<void>;
|
|
14
14
|
errors?: FormErrors<TName>;
|
|
15
15
|
error?: React.ReactNode;
|
|
16
16
|
loading?: boolean;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
3
|
+
import type { ZoraBaseProps } from '../../../../theme/ZoraBaseProps';
|
|
4
|
+
import type { FormFieldConfig, FormFieldValue } from '../../../../types/form';
|
|
5
|
+
import { FormField, hasRequiredRule } from '../../../form/public';
|
|
6
|
+
import { TextInput } from '../../../form/text-input/public';
|
|
7
7
|
|
|
8
8
|
interface AuthFormFieldProps<TName extends string> {
|
|
9
9
|
field: FormFieldConfig<TName>;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import type { ForgotPasswordFormProps } from './types';
|
|
3
|
+
import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
|
|
4
|
+
import type { ForgotPasswordFormProps } from '../../../../types/auth';
|
|
5
|
+
import type { FormFieldConfig, FormValues } from '../../../../types/form';
|
|
6
|
+
import { Button } from '../../../button/public';
|
|
7
|
+
import { Stack } from '../../../layout/public';
|
|
9
8
|
import {
|
|
10
9
|
defaultIdentifiers,
|
|
11
10
|
normalizeIdentifierKind,
|
|
12
11
|
resolveIdentifierLabel,
|
|
13
12
|
resolveIdentifierRules,
|
|
14
13
|
resolveIdentifierType,
|
|
15
|
-
} from '
|
|
14
|
+
} from '../../utils/authForm';
|
|
15
|
+
import { AuthForm } from './AuthForm';
|
|
16
16
|
|
|
17
17
|
type ForgotPasswordFieldName = 'identifier';
|
|
18
18
|
|
|
@@ -49,7 +49,7 @@ function ForgotPasswordFormInner({
|
|
|
49
49
|
|
|
50
50
|
const handleSubmit = React.useCallback(
|
|
51
51
|
(formValues: FormValues<ForgotPasswordFieldName>) =>
|
|
52
|
-
onSubmit({
|
|
52
|
+
onSubmit?.({
|
|
53
53
|
identifier: formValues.identifier.trim(),
|
|
54
54
|
identifierKind: normalizeIdentifierKind(formValues.identifier, identifiers),
|
|
55
55
|
}),
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
3
|
+
import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
|
|
4
|
+
import type { OAuthProviderButtonProps } from '../../../../types/auth';
|
|
5
|
+
import { Button } from '../../../button/public';
|
|
6
|
+
import { resolveOAuthProviderIcon, resolveOAuthProviderLabel } from '../../utils/oauthProviders';
|
|
7
7
|
|
|
8
8
|
function OAuthProviderButtonInner({
|
|
9
9
|
themeId: _themeId,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
|
|
4
|
+
import type { OAuthProviderListProps } from '../../../../types/auth';
|
|
5
|
+
import { Stack } from '../../../layout/public';
|
|
5
6
|
import { OAuthProviderButton } from './OAuthProviderButton';
|
|
6
|
-
import type { OAuthProviderListProps } from './types';
|
|
7
7
|
|
|
8
8
|
function OAuthProviderListInner({
|
|
9
9
|
themeId: _themeId,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
3
|
+
import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
|
|
4
|
+
import type { OtpFormProps } from '../../../../types/auth';
|
|
5
|
+
import type { FormFieldConfig, FormValues } from '../../../../types/form';
|
|
6
|
+
import { Button } from '../../../button/public';
|
|
7
|
+
import { Stack } from '../../../layout/public';
|
|
7
8
|
import { AuthForm } from './AuthForm';
|
|
8
|
-
import type { OtpFormProps } from './types';
|
|
9
9
|
|
|
10
10
|
type OtpFieldName = 'otp';
|
|
11
11
|
|
|
@@ -45,7 +45,7 @@ function OtpFormInner({
|
|
|
45
45
|
|
|
46
46
|
const handleSubmit = React.useCallback(
|
|
47
47
|
(formValues: FormValues<OtpFieldName>) =>
|
|
48
|
-
onSubmit({
|
|
48
|
+
onSubmit?.({
|
|
49
49
|
otp: formValues.otp.trim(),
|
|
50
50
|
}),
|
|
51
51
|
[onSubmit],
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import type { SignInFormProps } from './types';
|
|
3
|
+
import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
|
|
4
|
+
import type { SignInFormProps } from '../../../../types/auth';
|
|
5
|
+
import type { FormFieldConfig, FormValues } from '../../../../types/form';
|
|
6
|
+
import { Button } from '../../../button/public';
|
|
7
|
+
import { Stack } from '../../../layout/public';
|
|
9
8
|
import {
|
|
10
9
|
defaultIdentifiers,
|
|
11
10
|
normalizeIdentifierKind,
|
|
12
11
|
resolveIdentifierLabel,
|
|
13
12
|
resolveIdentifierRules,
|
|
14
13
|
resolveIdentifierType,
|
|
15
|
-
} from '
|
|
14
|
+
} from '../../utils/authForm';
|
|
15
|
+
import { AuthForm } from './AuthForm';
|
|
16
16
|
|
|
17
17
|
type SignInFieldName = 'identifier' | 'secret';
|
|
18
18
|
|
|
@@ -60,7 +60,7 @@ function SignInFormInner({
|
|
|
60
60
|
|
|
61
61
|
const handleSubmit = React.useCallback(
|
|
62
62
|
(formValues: FormValues<SignInFieldName>) =>
|
|
63
|
-
onSubmit({
|
|
63
|
+
onSubmit?.({
|
|
64
64
|
identifier: formValues.identifier.trim(),
|
|
65
65
|
identifierKind: normalizeIdentifierKind(formValues.identifier, identifiers),
|
|
66
66
|
secret: formValues.secret,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
3
|
+
import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
|
|
4
|
+
import type { SignUpFormProps } from '../../../../types/auth';
|
|
5
|
+
import type { FormFieldConfig, FormValues } from '../../../../types/form';
|
|
6
|
+
import { Button } from '../../../button/public';
|
|
7
|
+
import { Stack } from '../../../layout/public';
|
|
7
8
|
import { AuthForm } from './AuthForm';
|
|
8
|
-
import type { SignUpFormProps } from './types';
|
|
9
9
|
|
|
10
10
|
const defaultSignUpFields = [
|
|
11
11
|
{
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ZoraComponentMeta } from '../../metadata';
|
|
2
|
+
|
|
3
|
+
export const forgotPasswordFormMeta = {
|
|
4
|
+
name: 'ForgotPasswordForm',
|
|
5
|
+
category: 'pattern',
|
|
6
|
+
description: 'Collects an account identifier to start password recovery.',
|
|
7
|
+
directManifestNode: true,
|
|
8
|
+
allowedChildren: [],
|
|
9
|
+
blueprint: {
|
|
10
|
+
label: 'Forgot password form',
|
|
11
|
+
defaultProps: {
|
|
12
|
+
identifiers: ['email'],
|
|
13
|
+
identifierLabel: 'Email',
|
|
14
|
+
signInLabel: 'Sign in',
|
|
15
|
+
submitLabel: 'Send code',
|
|
16
|
+
loading: false,
|
|
17
|
+
disabled: false,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
events: {
|
|
21
|
+
submit: {
|
|
22
|
+
label: 'Submit',
|
|
23
|
+
eventType: 'forgotPasswordForm.submit',
|
|
24
|
+
payloadFields: [
|
|
25
|
+
{ path: 'identifier', type: 'string', label: 'Identifier' },
|
|
26
|
+
{ path: 'identifierKind', type: 'string', label: 'Identifier kind' },
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
signIn: {
|
|
30
|
+
label: 'Sign in',
|
|
31
|
+
eventType: 'forgotPasswordForm.signIn',
|
|
32
|
+
payloadFields: [],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
props: {
|
|
36
|
+
identifiers: {
|
|
37
|
+
type: 'array',
|
|
38
|
+
category: 'Authentication',
|
|
39
|
+
label: 'Identifiers',
|
|
40
|
+
default: ['email'],
|
|
41
|
+
},
|
|
42
|
+
identifierLabel: { type: 'string', category: 'Content', label: 'Identifier label' },
|
|
43
|
+
signInLabel: { type: 'string', category: 'Content', label: 'Sign-in label' },
|
|
44
|
+
submitLabel: { type: 'string', category: 'Content', label: 'Submit label' },
|
|
45
|
+
error: { type: 'string', category: 'State', label: 'Error' },
|
|
46
|
+
loading: { type: 'boolean', category: 'State', label: 'Loading', default: false },
|
|
47
|
+
disabled: { type: 'boolean', category: 'State', label: 'Disabled', default: false },
|
|
48
|
+
},
|
|
49
|
+
} as const satisfies ZoraComponentMeta;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ZORA_COLORS } from '../../internal/colorModel';
|
|
2
|
+
import type { ZoraComponentMeta } from '../../metadata';
|
|
3
|
+
|
|
4
|
+
export const oauthProviderButtonMeta = {
|
|
5
|
+
name: 'OAuthProviderButton',
|
|
6
|
+
category: 'pattern',
|
|
7
|
+
description: 'Renders a provider-branded OAuth action button.',
|
|
8
|
+
directManifestNode: true,
|
|
9
|
+
allowedChildren: [],
|
|
10
|
+
blueprint: {
|
|
11
|
+
label: 'OAuth provider button',
|
|
12
|
+
defaultProps: {
|
|
13
|
+
providerId: 'google',
|
|
14
|
+
fullWidth: true,
|
|
15
|
+
size: 'l',
|
|
16
|
+
variant: 'outline',
|
|
17
|
+
color: 'neutral',
|
|
18
|
+
loading: false,
|
|
19
|
+
disabled: false,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
events: {
|
|
23
|
+
press: {
|
|
24
|
+
label: 'Press',
|
|
25
|
+
eventType: 'oauthProviderButton.press',
|
|
26
|
+
payloadFields: [{ path: 'providerId', type: 'string', label: 'Provider ID' }],
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
props: {
|
|
30
|
+
providerId: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
category: 'Authentication',
|
|
33
|
+
label: 'Provider ID',
|
|
34
|
+
default: 'google',
|
|
35
|
+
},
|
|
36
|
+
label: { type: 'string', category: 'Content', label: 'Label' },
|
|
37
|
+
disabled: { type: 'boolean', category: 'State', label: 'Disabled', default: false },
|
|
38
|
+
loading: { type: 'boolean', category: 'State', label: 'Loading', default: false },
|
|
39
|
+
fullWidth: { type: 'boolean', category: 'Layout', label: 'Full width', default: true },
|
|
40
|
+
size: {
|
|
41
|
+
type: 'enum',
|
|
42
|
+
category: 'Style',
|
|
43
|
+
label: 'Size',
|
|
44
|
+
enum: ['s', 'm', 'l'],
|
|
45
|
+
default: 'l',
|
|
46
|
+
},
|
|
47
|
+
variant: {
|
|
48
|
+
type: 'enum',
|
|
49
|
+
category: 'Style',
|
|
50
|
+
label: 'Variant',
|
|
51
|
+
enum: ['solid', 'outline', 'ghost', 'soft'],
|
|
52
|
+
default: 'outline',
|
|
53
|
+
},
|
|
54
|
+
color: {
|
|
55
|
+
type: 'enum',
|
|
56
|
+
category: 'Style',
|
|
57
|
+
label: 'Color',
|
|
58
|
+
enum: [...ZORA_COLORS],
|
|
59
|
+
default: 'neutral',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
} as const satisfies ZoraComponentMeta;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ZORA_COLORS } from '../../internal/colorModel';
|
|
2
|
+
import type { ZoraComponentMeta } from '../../metadata';
|
|
3
|
+
|
|
4
|
+
export const oauthProviderListMeta = {
|
|
5
|
+
name: 'OAuthProviderList',
|
|
6
|
+
category: 'pattern',
|
|
7
|
+
description: 'Renders a configurable group of OAuth provider actions.',
|
|
8
|
+
directManifestNode: true,
|
|
9
|
+
allowedChildren: [],
|
|
10
|
+
blueprint: {
|
|
11
|
+
label: 'OAuth provider list',
|
|
12
|
+
defaultProps: {
|
|
13
|
+
providers: [{ id: 'google', label: 'Continue with Google' }],
|
|
14
|
+
layout: 'stack',
|
|
15
|
+
loading: false,
|
|
16
|
+
disabled: false,
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
events: {
|
|
20
|
+
providerPress: {
|
|
21
|
+
label: 'Provider press',
|
|
22
|
+
eventType: 'oauthProviderList.providerPress',
|
|
23
|
+
payloadFields: [{ path: 'providerId', type: 'string', label: 'Provider ID' }],
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
props: {
|
|
27
|
+
providers: {
|
|
28
|
+
type: 'array',
|
|
29
|
+
category: 'Authentication',
|
|
30
|
+
label: 'Providers',
|
|
31
|
+
itemSchema: [
|
|
32
|
+
{ key: 'id', schema: { type: 'string', category: 'Identity', label: 'Provider ID' } },
|
|
33
|
+
{ key: 'label', schema: { type: 'string', category: 'Content', label: 'Label' } },
|
|
34
|
+
{ key: 'disabled', schema: { type: 'boolean', category: 'State', label: 'Disabled' } },
|
|
35
|
+
{ key: 'loading', schema: { type: 'boolean', category: 'State', label: 'Loading' } },
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
disabled: { type: 'boolean', category: 'State', label: 'Disabled', default: false },
|
|
39
|
+
loading: { type: 'boolean', category: 'State', label: 'Loading', default: false },
|
|
40
|
+
fullWidth: { type: 'boolean', category: 'Layout', label: 'Full width' },
|
|
41
|
+
layout: {
|
|
42
|
+
type: 'enum',
|
|
43
|
+
category: 'Layout',
|
|
44
|
+
label: 'Layout',
|
|
45
|
+
enum: ['stack', 'inline'],
|
|
46
|
+
default: 'stack',
|
|
47
|
+
},
|
|
48
|
+
size: {
|
|
49
|
+
type: 'enum',
|
|
50
|
+
category: 'Style',
|
|
51
|
+
label: 'Size',
|
|
52
|
+
enum: ['s', 'm', 'l'],
|
|
53
|
+
},
|
|
54
|
+
variant: {
|
|
55
|
+
type: 'enum',
|
|
56
|
+
category: 'Style',
|
|
57
|
+
label: 'Variant',
|
|
58
|
+
enum: ['solid', 'outline', 'ghost', 'soft'],
|
|
59
|
+
},
|
|
60
|
+
color: {
|
|
61
|
+
type: 'enum',
|
|
62
|
+
category: 'Style',
|
|
63
|
+
label: 'Color',
|
|
64
|
+
enum: [...ZORA_COLORS],
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
} as const satisfies ZoraComponentMeta;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ZoraComponentMeta } from '../../metadata';
|
|
2
|
+
|
|
3
|
+
export const otpFormMeta = {
|
|
4
|
+
name: 'OtpForm',
|
|
5
|
+
category: 'pattern',
|
|
6
|
+
description: 'Collects and verifies a one-time passcode with an optional resend action.',
|
|
7
|
+
directManifestNode: true,
|
|
8
|
+
allowedChildren: [],
|
|
9
|
+
blueprint: {
|
|
10
|
+
label: 'OTP form',
|
|
11
|
+
defaultProps: {
|
|
12
|
+
length: 6,
|
|
13
|
+
otpLabel: 'Code',
|
|
14
|
+
resendLabel: 'Resend code',
|
|
15
|
+
submitLabel: 'Verify code',
|
|
16
|
+
resendDisabled: false,
|
|
17
|
+
resendLoading: false,
|
|
18
|
+
loading: false,
|
|
19
|
+
disabled: false,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
events: {
|
|
23
|
+
submit: {
|
|
24
|
+
label: 'Submit',
|
|
25
|
+
eventType: 'otpForm.submit',
|
|
26
|
+
payloadFields: [{ path: 'otp', type: 'string', label: 'One-time passcode' }],
|
|
27
|
+
},
|
|
28
|
+
resend: {
|
|
29
|
+
label: 'Resend',
|
|
30
|
+
eventType: 'otpForm.resend',
|
|
31
|
+
payloadFields: [],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
props: {
|
|
35
|
+
length: { type: 'number', category: 'Validation', label: 'Code length', default: 6 },
|
|
36
|
+
otpLabel: { type: 'string', category: 'Content', label: 'Code label' },
|
|
37
|
+
resendLabel: { type: 'string', category: 'Content', label: 'Resend label' },
|
|
38
|
+
submitLabel: { type: 'string', category: 'Content', label: 'Submit label' },
|
|
39
|
+
error: { type: 'string', category: 'State', label: 'Error' },
|
|
40
|
+
resendDisabled: {
|
|
41
|
+
type: 'boolean',
|
|
42
|
+
category: 'State',
|
|
43
|
+
label: 'Resend disabled',
|
|
44
|
+
default: false,
|
|
45
|
+
},
|
|
46
|
+
resendLoading: {
|
|
47
|
+
type: 'boolean',
|
|
48
|
+
category: 'State',
|
|
49
|
+
label: 'Resend loading',
|
|
50
|
+
default: false,
|
|
51
|
+
},
|
|
52
|
+
loading: { type: 'boolean', category: 'State', label: 'Loading', default: false },
|
|
53
|
+
disabled: { type: 'boolean', category: 'State', label: 'Disabled', default: false },
|
|
54
|
+
},
|
|
55
|
+
} as const satisfies ZoraComponentMeta;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { expect, test } from 'bun:test';
|
|
2
|
+
|
|
3
|
+
import { ZORA_COMPONENT_META } from '../../metadata/componentMeta';
|
|
4
|
+
|
|
5
|
+
const AUTH_MANIFEST_ELEMENTS = [
|
|
6
|
+
'ForgotPasswordForm',
|
|
7
|
+
'OAuthProviderButton',
|
|
8
|
+
'OAuthProviderList',
|
|
9
|
+
'OtpForm',
|
|
10
|
+
'SignInForm',
|
|
11
|
+
'SignUpForm',
|
|
12
|
+
] as const;
|
|
13
|
+
const authMetaByName = new Map(Object.entries(ZORA_COMPONENT_META));
|
|
14
|
+
|
|
15
|
+
test('auth solutions are direct manifest leaf nodes with authoring schemas', () => {
|
|
16
|
+
for (const name of AUTH_MANIFEST_ELEMENTS) {
|
|
17
|
+
const meta = authMetaByName.get(name);
|
|
18
|
+
expect(meta?.directManifestNode, name).toBe(true);
|
|
19
|
+
expect(meta?.allowedChildren, name).toEqual([]);
|
|
20
|
+
expect(Object.keys(meta?.props ?? {}).length, name).toBeGreaterThan(0);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test('auth solution events expose their actionable boundaries', () => {
|
|
25
|
+
expect(ZORA_COMPONENT_META.SignInForm?.events?.submit?.payloadFields).toContainEqual({
|
|
26
|
+
path: 'secret',
|
|
27
|
+
type: 'string',
|
|
28
|
+
label: 'Secret',
|
|
29
|
+
});
|
|
30
|
+
expect(ZORA_COMPONENT_META.OtpForm?.events?.resend?.eventType).toBe('otpForm.resend');
|
|
31
|
+
expect(ZORA_COMPONENT_META.OAuthProviderList?.events?.providerPress?.payloadFields).toEqual([
|
|
32
|
+
{ path: 'providerId', type: 'string', label: 'Provider ID' },
|
|
33
|
+
]);
|
|
34
|
+
});
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
export { ForgotPasswordForm } from './ForgotPasswordForm';
|
|
2
|
-
export { OAuthProviderButton } from './OAuthProviderButton';
|
|
3
|
-
export { OAuthProviderList } from './OAuthProviderList';
|
|
4
|
-
export {
|
|
5
|
-
DEFAULT_OAUTH_PROVIDER_ICONS,
|
|
6
|
-
resolveOAuthProviderIcon,
|
|
7
|
-
resolveOAuthProviderLabel,
|
|
8
|
-
} from './oauthProviders';
|
|
9
|
-
export { OtpForm } from './OtpForm';
|
|
10
|
-
export { SignInForm } from './SignInForm';
|
|
11
|
-
export { SignUpForm } from './SignUpForm';
|
|
12
1
|
export type {
|
|
13
2
|
AuthFormBaseProps,
|
|
14
3
|
AuthIdentifierKind,
|
|
@@ -26,4 +15,15 @@ export type {
|
|
|
26
15
|
SignUpFormField,
|
|
27
16
|
SignUpFormProps,
|
|
28
17
|
SignUpFormValues,
|
|
29
|
-
} from '
|
|
18
|
+
} from '../../types/auth';
|
|
19
|
+
export { ForgotPasswordForm } from './adapters/inbound/ForgotPasswordForm';
|
|
20
|
+
export { OAuthProviderButton } from './adapters/inbound/OAuthProviderButton';
|
|
21
|
+
export { OAuthProviderList } from './adapters/inbound/OAuthProviderList';
|
|
22
|
+
export { OtpForm } from './adapters/inbound/OtpForm';
|
|
23
|
+
export { SignInForm } from './adapters/inbound/SignInForm';
|
|
24
|
+
export { SignUpForm } from './adapters/inbound/SignUpForm';
|
|
25
|
+
export {
|
|
26
|
+
DEFAULT_OAUTH_PROVIDER_ICONS,
|
|
27
|
+
resolveOAuthProviderIcon,
|
|
28
|
+
resolveOAuthProviderLabel,
|
|
29
|
+
} from './utils/oauthProviders';
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { ZoraComponentMeta } from '../../metadata';
|
|
2
|
+
|
|
3
|
+
export const signInFormMeta = {
|
|
4
|
+
name: 'SignInForm',
|
|
5
|
+
category: 'pattern',
|
|
6
|
+
description: 'Collects an account identifier and secret for sign-in.',
|
|
7
|
+
directManifestNode: true,
|
|
8
|
+
allowedChildren: [],
|
|
9
|
+
blueprint: {
|
|
10
|
+
label: 'Sign-in form',
|
|
11
|
+
defaultProps: {
|
|
12
|
+
identifiers: ['email'],
|
|
13
|
+
identifierLabel: 'Email',
|
|
14
|
+
secretLabel: 'Password',
|
|
15
|
+
forgotPasswordLabel: 'Forgot password',
|
|
16
|
+
signUpLabel: 'Sign up',
|
|
17
|
+
submitLabel: 'Sign in',
|
|
18
|
+
loading: false,
|
|
19
|
+
disabled: false,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
events: {
|
|
23
|
+
submit: {
|
|
24
|
+
label: 'Submit',
|
|
25
|
+
eventType: 'signInForm.submit',
|
|
26
|
+
payloadFields: [
|
|
27
|
+
{ path: 'identifier', type: 'string', label: 'Identifier' },
|
|
28
|
+
{ path: 'identifierKind', type: 'string', label: 'Identifier kind' },
|
|
29
|
+
{ path: 'secret', type: 'string', label: 'Secret' },
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
forgotPassword: {
|
|
33
|
+
label: 'Forgot password',
|
|
34
|
+
eventType: 'signInForm.forgotPassword',
|
|
35
|
+
payloadFields: [],
|
|
36
|
+
},
|
|
37
|
+
signUp: {
|
|
38
|
+
label: 'Sign up',
|
|
39
|
+
eventType: 'signInForm.signUp',
|
|
40
|
+
payloadFields: [],
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
props: {
|
|
44
|
+
identifiers: {
|
|
45
|
+
type: 'array',
|
|
46
|
+
category: 'Authentication',
|
|
47
|
+
label: 'Identifiers',
|
|
48
|
+
default: ['email'],
|
|
49
|
+
},
|
|
50
|
+
identifierLabel: { type: 'string', category: 'Content', label: 'Identifier label' },
|
|
51
|
+
secretLabel: { type: 'string', category: 'Content', label: 'Secret label' },
|
|
52
|
+
forgotPasswordLabel: {
|
|
53
|
+
type: 'string',
|
|
54
|
+
category: 'Content',
|
|
55
|
+
label: 'Forgot-password label',
|
|
56
|
+
},
|
|
57
|
+
signUpLabel: { type: 'string', category: 'Content', label: 'Sign-up label' },
|
|
58
|
+
submitLabel: { type: 'string', category: 'Content', label: 'Submit label' },
|
|
59
|
+
error: { type: 'string', category: 'State', label: 'Error' },
|
|
60
|
+
loading: { type: 'boolean', category: 'State', label: 'Loading', default: false },
|
|
61
|
+
disabled: { type: 'boolean', category: 'State', label: 'Disabled', default: false },
|
|
62
|
+
},
|
|
63
|
+
} as const satisfies ZoraComponentMeta;
|