import type { ReactNode } from 'react'; import type { AuthSsoProvider } from './sso-providers'; export interface CreateOrganizationFormProps { /** * Controlled field values. Omit `email` entirely for flows that neither collect nor show an * address — the native Apple signup, where the provider asserted it and may only have handed the * app a relay alias the user has never seen. Pass it with `emailReadOnly` to show it uneditable. */ email?: string; organizationName: string; domain: string; agreedToTerms: boolean; /** Omit together with `email` when the form collects no address. */ onEmailChange?: (value: string) => void; onOrganizationNameChange: (value: string) => void; onDomainChange: (value: string) => void; onAgreedToTermsChange: (checked: boolean) => void; /** Primary submit ("Continue") */ onSubmit: () => void; /** * Personal details and credentials, collected on the same screen as the organization. Supply the * four handlers to render them; omit them and the form stays organization-only (the SSO paths, * where the provider is the credential and there is no password to set). */ firstName?: string; lastName?: string; password?: string; confirmPassword?: string; onFirstNameChange?: (value: string) => void; onLastNameChange?: (value: string) => void; onPasswordChange?: (value: string) => void; onConfirmPasswordChange?: (value: string) => void; /** * Renders the email as a read-only field instead of an input, for flows where the address was * fixed by an earlier step and this form cannot change it — a signup that collected it on a * previous step, or an SSO login where the provider asserted it and the server reads it from the * session. `onEmailChange` is not called in this mode. */ emailReadOnly?: boolean; /** Label above the read-only email, e.g. "Signed in with Google". Ignored unless `emailReadOnly`. */ emailReadOnlyLabel?: string; /** Overrides the default heading. */ title?: string; /** Overrides the default sub-heading. */ subtitle?: ReactNode; /** Suffix rendered inside the domain input, e.g. ".openframe.ai" */ domainSuffix?: string; domainPlaceholder?: string; termsUrl?: string; privacyPolicyUrl?: string; submitLabel?: string; /** * Extra fields, rendered after the account block and before the terms — the same slot * CompleteAccountForm offers, for inputs a deployment adds conditionally (a dev-only PR number). */ children?: ReactNode; /** Renders a back action beside the submit when supplied (e.g. to return to an earlier step). */ onBack?: () => void; backLabel?: string; /** Disables just the primary submit (fields stay editable). */ submitDisabled?: boolean; loading?: boolean; disabled?: boolean; errors?: { email?: string; organizationName?: string; domain?: string; terms?: string; firstName?: string; lastName?: string; password?: string; confirmPassword?: string; }; /** Informational status under the email field (e.g. live availability). `errors.email` wins. */ emailStatus?: { message: string; variant: 'error' | 'warning' | 'success' | 'muted'; }; /** Informational status under the domain field (e.g. live availability). `errors.domain` wins. */ domainStatus?: { message: string; variant: 'error' | 'warning' | 'success' | 'muted'; }; /** Extra content rendered under the domain field, e.g. suggested available domains. */ domainSlot?: ReactNode; /** * SSO registration alternatives rendered below the primary submit behind an * "or continue with" divider. The form fields stay editable — gate the * buttons with `ssoDisabled` (e.g. until the form validates). */ ssoProviders?: AuthSsoProvider[]; onSsoClick?: (provider: AuthSsoProvider) => void; /** Disables the provider buttons (e.g. until the form validates). */ ssoDisabled?: boolean; /** Verb prefix for provider buttons, e.g. "Continue with". */ ssoActionLabel?: string; /** Divider text between the primary submit and the SSO buttons. */ dividerLabel?: string; className?: string; } /** * Create Organization form (Sign Up tab). Presentational + controlled — the * consumer owns state, validation and submission. Covers the empty, filled and * SSO states from the auth redesign. */ export declare function CreateOrganizationForm({ email, organizationName, domain, agreedToTerms, onEmailChange, onOrganizationNameChange, onDomainChange, onAgreedToTermsChange, onSubmit, firstName, lastName, password, confirmPassword, onFirstNameChange, onLastNameChange, onPasswordChange, onConfirmPasswordChange, emailReadOnly, emailReadOnlyLabel, title, subtitle, domainSuffix, domainPlaceholder, termsUrl, privacyPolicyUrl, submitLabel, children, onBack, backLabel, submitDisabled, loading, disabled, errors, emailStatus, domainStatus, domainSlot, ssoProviders, onSsoClick, ssoDisabled, ssoActionLabel, dividerLabel, className, }: CreateOrganizationFormProps): import("react").JSX.Element; //# sourceMappingURL=create-organization-form.d.ts.map