;\n\nexport function PhoneAuthScreen({ children, ...props }: PhoneAuthScreenProps) {\n const ui = useUI();\n\n const titleText = getTranslation(ui, \"labels\", \"signIn\");\n const subtitleText = getTranslation(ui, \"prompts\", \"signInToAccount\");\n const mfaResolver = ui.multiFactorResolver;\n\n return (\n \n
\n \n {titleText}\n {subtitleText}\n \n \n {mfaResolver ? (\n \n ) : (\n <>\n \n {children ? (\n <>\n {getTranslation(ui, \"messages\", \"dividerOr\")}\n \n {children}\n \n
\n >\n ) : null}\n >\n )}\n \n \n
\n );\n}\n",
"type": "registry:component"
}
]
diff --git a/packages/shadcn/public/policies.json b/packages/shadcn/public/policies.json
index 5afca182c..cdb112409 100644
--- a/packages/shadcn/public/policies.json
+++ b/packages/shadcn/public/policies.json
@@ -5,12 +5,12 @@
"title": "Policies",
"description": "A component allowing users to navigate to the terms of service and privacy policy.",
"dependencies": [
- "@firebase-ui/react"
+ "@firebase-oss/ui-react"
],
"files": [
{
"path": "src/registry/policies.tsx",
- "content": "import { cn } from \"@/lib/utils\";\nimport { getTranslation } from \"@firebase-ui/core\";\nimport { useUI, PolicyContext } from \"@firebase-ui/react\";\nimport { cloneElement, useContext } from \"react\";\n\nexport function Policies() {\n const ui = useUI();\n const policies = useContext(PolicyContext);\n\n if (!policies) {\n return null;\n }\n\n const { termsOfServiceUrl, privacyPolicyUrl, onNavigate } = policies;\n const termsAndPrivacyText = getTranslation(ui, \"messages\", \"termsAndPrivacy\");\n const parts = termsAndPrivacyText.split(/(\\{tos\\}|\\{privacy\\})/);\n\n const className = cn(\"hover:underline font-semibold\");\n const Handler = onNavigate ? (\n \n ) : (\n \n );\n\n return (\n \n {parts.map((part: string, index: number) => {\n if (part === \"{tos}\") {\n return cloneElement(Handler, {\n key: index,\n onClick: onNavigate ? () => onNavigate(termsOfServiceUrl) : undefined,\n href: onNavigate ? undefined : termsOfServiceUrl,\n children: getTranslation(ui, \"labels\", \"termsOfService\"),\n });\n }\n\n if (part === \"{privacy}\") {\n return cloneElement(Handler, {\n key: index,\n onClick: onNavigate ? () => onNavigate(privacyPolicyUrl) : undefined,\n href: onNavigate ? undefined : privacyPolicyUrl,\n children: getTranslation(ui, \"labels\", \"privacyPolicy\"),\n });\n }\n\n return {part};\n })}\n
\n );\n}\n",
+ "content": "import { cn } from \"@/lib/utils\";\nimport { getTranslation } from \"@firebase-oss/ui-core\";\nimport { useUI, PolicyContext } from \"@firebase-oss/ui-react\";\nimport { cloneElement, useContext } from \"react\";\n\nexport function Policies() {\n const ui = useUI();\n const policies = useContext(PolicyContext);\n\n if (!policies) {\n return null;\n }\n\n const { termsOfServiceUrl, privacyPolicyUrl, onNavigate } = policies;\n const termsAndPrivacyText = getTranslation(ui, \"messages\", \"termsAndPrivacy\");\n const parts = termsAndPrivacyText.split(/(\\{tos\\}|\\{privacy\\})/);\n\n const className = cn(\"hover:underline font-semibold\");\n const Handler = onNavigate ? (\n \n ) : (\n \n );\n\n return (\n \n {parts.map((part: string, index: number) => {\n if (part === \"{tos}\") {\n return cloneElement(Handler, {\n key: index,\n onClick: onNavigate ? () => onNavigate(termsOfServiceUrl) : undefined,\n href: onNavigate ? undefined : termsOfServiceUrl,\n children: getTranslation(ui, \"labels\", \"termsOfService\"),\n });\n }\n\n if (part === \"{privacy}\") {\n return cloneElement(Handler, {\n key: index,\n onClick: onNavigate ? () => onNavigate(privacyPolicyUrl) : undefined,\n href: onNavigate ? undefined : privacyPolicyUrl,\n children: getTranslation(ui, \"labels\", \"privacyPolicy\"),\n });\n }\n\n return {part};\n })}\n
\n );\n}\n",
"type": "registry:component"
}
]
diff --git a/packages/shadcn/public/redirect-error.json b/packages/shadcn/public/redirect-error.json
index c0b7f2cf7..66d7bf698 100644
--- a/packages/shadcn/public/redirect-error.json
+++ b/packages/shadcn/public/redirect-error.json
@@ -5,12 +5,12 @@
"title": "Redirect Error",
"description": "A component that displays redirect errors from Firebase UI authentication flow.",
"dependencies": [
- "@firebase-ui/react"
+ "@firebase-oss/ui-react"
],
"files": [
{
"path": "src/registry/redirect-error.tsx",
- "content": "\"use client\";\n\nimport { useRedirectError } from \"@firebase-ui/react\";\n\nexport function RedirectError() {\n const error = useRedirectError();\n\n if (!error) {\n return null;\n }\n\n return {error}
;\n}\n",
+ "content": "\"use client\";\n\nimport { useRedirectError } from \"@firebase-oss/ui-react\";\n\nexport function RedirectError() {\n const error = useRedirectError();\n\n if (!error) {\n return null;\n }\n\n return {error}
;\n}\n",
"type": "registry:component"
}
]
diff --git a/packages/shadcn/public/sign-in-auth-form.json b/packages/shadcn/public/sign-in-auth-form.json
index 94c3713e0..ebcd14fcf 100644
--- a/packages/shadcn/public/sign-in-auth-form.json
+++ b/packages/shadcn/public/sign-in-auth-form.json
@@ -5,7 +5,7 @@
"title": "Sign In Auth Form",
"description": "A form allowing users to sign in with email and password.",
"dependencies": [
- "@firebase-ui/react"
+ "@firebase-oss/ui-react"
],
"registryDependencies": [
"input",
@@ -16,7 +16,7 @@
"files": [
{
"path": "src/registry/sign-in-auth-form.tsx",
- "content": "\"use client\";\n\nimport type { SignInAuthFormSchema } from \"@firebase-ui/core\";\nimport { useSignInAuthFormAction, useSignInAuthFormSchema, useUI, type SignInAuthFormProps } from \"@firebase-ui/react\";\nimport { useForm } from \"react-hook-form\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport { FirebaseUIError, getTranslation } from \"@firebase-ui/core\";\n\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { Policies } from \"./policies\";\n\nexport type { SignInAuthFormProps };\n\nexport function SignInAuthForm(props: SignInAuthFormProps) {\n const ui = useUI();\n const schema = useSignInAuthFormSchema();\n const action = useSignInAuthFormAction();\n\n const form = useForm({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n email: \"\",\n password: \"\",\n },\n });\n\n async function onSubmit(values: SignInAuthFormSchema) {\n try {\n const credential = await action(values);\n props.onSignIn?.(credential);\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n }\n\n return (\n \n \n );\n}\n",
+ "content": "\"use client\";\n\nimport type { SignInAuthFormSchema } from \"@firebase-oss/ui-core\";\nimport { useSignInAuthFormAction, useSignInAuthFormSchema, useUI, type SignInAuthFormProps } from \"@firebase-oss/ui-react\";\nimport { useForm } from \"react-hook-form\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport { FirebaseUIError, getTranslation } from \"@firebase-oss/ui-core\";\n\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { Policies } from \"./policies\";\n\nexport type { SignInAuthFormProps };\n\nexport function SignInAuthForm(props: SignInAuthFormProps) {\n const ui = useUI();\n const schema = useSignInAuthFormSchema();\n const action = useSignInAuthFormAction();\n\n const form = useForm({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n email: \"\",\n password: \"\",\n },\n });\n\n async function onSubmit(values: SignInAuthFormSchema) {\n try {\n const credential = await action(values);\n props.onSignIn?.(credential);\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n }\n\n return (\n \n \n );\n}\n",
"type": "registry:component"
}
]
diff --git a/packages/shadcn/public/sign-in-auth-screen.json b/packages/shadcn/public/sign-in-auth-screen.json
index 4fabd25ef..a9a96daae 100644
--- a/packages/shadcn/public/sign-in-auth-screen.json
+++ b/packages/shadcn/public/sign-in-auth-screen.json
@@ -5,7 +5,7 @@
"title": "Sign In Auth Screen",
"description": "A screen allowing users to sign in with email and password.",
"dependencies": [
- "@firebase-ui/react"
+ "@firebase-oss/ui-react"
],
"registryDependencies": [
"separator",
@@ -15,7 +15,7 @@
"files": [
{
"path": "src/registry/sign-in-auth-screen.tsx",
- "content": "\"use client\";\n\nimport { getTranslation } from \"@firebase-ui/core\";\nimport { useUI, type SignInAuthScreenProps } from \"@firebase-ui/react\";\n\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { SignInAuthForm } from \"@/registry/sign-in-auth-form\";\nimport { MultiFactorAuthAssertionForm } from \"@/registry/multi-factor-auth-assertion-form\";\n\nexport type { SignInAuthScreenProps };\n\nexport function SignInAuthScreen({ children, ...props }: SignInAuthScreenProps) {\n const ui = useUI();\n\n const titleText = getTranslation(ui, \"labels\", \"signIn\");\n const subtitleText = getTranslation(ui, \"prompts\", \"signInToAccount\");\n\n const mfaResolver = ui.multiFactorResolver;\n\n return (\n \n
\n \n {titleText}\n {subtitleText}\n \n \n {mfaResolver ? (\n \n ) : (\n <>\n \n {children ? (\n <>\n {getTranslation(ui, \"messages\", \"dividerOr\")}\n {children}
\n >\n ) : null}\n >\n )}\n \n \n
\n );\n}\n",
+ "content": "\"use client\";\n\nimport { getTranslation } from \"@firebase-oss/ui-core\";\nimport { useUI, type SignInAuthScreenProps } from \"@firebase-oss/ui-react\";\n\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { SignInAuthForm } from \"@/registry/sign-in-auth-form\";\nimport { MultiFactorAuthAssertionForm } from \"@/registry/multi-factor-auth-assertion-form\";\n\nexport type { SignInAuthScreenProps };\n\nexport function SignInAuthScreen({ children, ...props }: SignInAuthScreenProps) {\n const ui = useUI();\n\n const titleText = getTranslation(ui, \"labels\", \"signIn\");\n const subtitleText = getTranslation(ui, \"prompts\", \"signInToAccount\");\n\n const mfaResolver = ui.multiFactorResolver;\n\n return (\n \n
\n \n {titleText}\n {subtitleText}\n \n \n {mfaResolver ? (\n \n ) : (\n <>\n \n {children ? (\n <>\n {getTranslation(ui, \"messages\", \"dividerOr\")}\n {children}
\n >\n ) : null}\n >\n )}\n \n \n
\n );\n}\n",
"type": "registry:component"
}
]
diff --git a/packages/shadcn/public/sign-up-auth-form.json b/packages/shadcn/public/sign-up-auth-form.json
index aa4c33f67..f658b9731 100644
--- a/packages/shadcn/public/sign-up-auth-form.json
+++ b/packages/shadcn/public/sign-up-auth-form.json
@@ -5,7 +5,7 @@
"title": "Sign Up Auth Form",
"description": "A form allowing users to sign up with email and password.",
"dependencies": [
- "@firebase-ui/react"
+ "@firebase-oss/ui-react"
],
"registryDependencies": [
"input",
@@ -16,7 +16,7 @@
"files": [
{
"path": "src/registry/sign-up-auth-form.tsx",
- "content": "\"use client\";\n\nimport type { SignUpAuthFormSchema } from \"@firebase-ui/core\";\nimport {\n useSignUpAuthFormAction,\n useSignUpAuthFormSchema,\n useUI,\n type SignUpAuthFormProps,\n useRequireDisplayName,\n} from \"@firebase-ui/react\";\nimport { useForm } from \"react-hook-form\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport { FirebaseUIError, getTranslation } from \"@firebase-ui/core\";\n\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { Policies } from \"./policies\";\n\nexport type { SignUpAuthFormProps };\n\nexport function SignUpAuthForm(props: SignUpAuthFormProps) {\n const ui = useUI();\n const schema = useSignUpAuthFormSchema();\n const action = useSignUpAuthFormAction();\n const requireDisplayName = useRequireDisplayName();\n\n const form = useForm({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n email: \"\",\n password: \"\",\n displayName: requireDisplayName ? \"\" : undefined,\n },\n });\n\n async function onSubmit(values: SignUpAuthFormSchema) {\n try {\n const credential = await action(values);\n props.onSignUp?.(credential);\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n }\n\n return (\n \n \n );\n}\n",
+ "content": "\"use client\";\n\nimport type { SignUpAuthFormSchema } from \"@firebase-oss/ui-core\";\nimport {\n useSignUpAuthFormAction,\n useSignUpAuthFormSchema,\n useUI,\n type SignUpAuthFormProps,\n useRequireDisplayName,\n} from \"@firebase-oss/ui-react\";\nimport { useForm } from \"react-hook-form\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\nimport { FirebaseUIError, getTranslation } from \"@firebase-oss/ui-core\";\n\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { Policies } from \"./policies\";\n\nexport type { SignUpAuthFormProps };\n\nexport function SignUpAuthForm(props: SignUpAuthFormProps) {\n const ui = useUI();\n const schema = useSignUpAuthFormSchema();\n const action = useSignUpAuthFormAction();\n const requireDisplayName = useRequireDisplayName();\n\n const form = useForm({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n email: \"\",\n password: \"\",\n displayName: requireDisplayName ? \"\" : undefined,\n },\n });\n\n async function onSubmit(values: SignUpAuthFormSchema) {\n try {\n const credential = await action(values);\n props.onSignUp?.(credential);\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n }\n\n return (\n \n \n );\n}\n",
"type": "registry:component"
}
]
diff --git a/packages/shadcn/public/sign-up-auth-screen.json b/packages/shadcn/public/sign-up-auth-screen.json
index 3f8687226..e65db9000 100644
--- a/packages/shadcn/public/sign-up-auth-screen.json
+++ b/packages/shadcn/public/sign-up-auth-screen.json
@@ -5,7 +5,7 @@
"title": "Sign Up Auth Screen",
"description": "A screen allowing users to sign up with email and password.",
"dependencies": [
- "@firebase-ui/react"
+ "@firebase-oss/ui-react"
],
"registryDependencies": [
"separator",
@@ -15,7 +15,7 @@
"files": [
{
"path": "src/registry/sign-up-auth-screen.tsx",
- "content": "\"use client\";\n\nimport { getTranslation } from \"@firebase-ui/core\";\nimport { useUI, type SignUpAuthScreenProps } from \"@firebase-ui/react\";\n\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { SignUpAuthForm } from \"@/registry/sign-up-auth-form\";\n\nexport type { SignUpAuthScreenProps };\n\nexport function SignUpAuthScreen({ children, ...props }: SignUpAuthScreenProps) {\n const ui = useUI();\n\n const titleText = getTranslation(ui, \"labels\", \"register\");\n const subtitleText = getTranslation(ui, \"prompts\", \"enterDetailsToCreate\");\n\n return (\n \n
\n \n {titleText}\n {subtitleText}\n \n \n \n {children ? (\n <>\n {getTranslation(ui, \"messages\", \"dividerOr\")}\n {children}
\n >\n ) : null}\n \n \n
\n );\n}\n",
+ "content": "\"use client\";\n\nimport { getTranslation } from \"@firebase-oss/ui-core\";\nimport { useUI, type SignUpAuthScreenProps } from \"@firebase-oss/ui-react\";\n\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { SignUpAuthForm } from \"@/registry/sign-up-auth-form\";\n\nexport type { SignUpAuthScreenProps };\n\nexport function SignUpAuthScreen({ children, ...props }: SignUpAuthScreenProps) {\n const ui = useUI();\n\n const titleText = getTranslation(ui, \"labels\", \"register\");\n const subtitleText = getTranslation(ui, \"prompts\", \"enterDetailsToCreate\");\n\n return (\n \n
\n \n {titleText}\n {subtitleText}\n \n \n \n {children ? (\n <>\n {getTranslation(ui, \"messages\", \"dividerOr\")}\n {children}
\n >\n ) : null}\n \n \n
\n );\n}\n",
"type": "registry:component"
}
]
diff --git a/packages/shadcn/public/sms-multi-factor-assertion-form.json b/packages/shadcn/public/sms-multi-factor-assertion-form.json
index 1b03a141d..74ea8c0b9 100644
--- a/packages/shadcn/public/sms-multi-factor-assertion-form.json
+++ b/packages/shadcn/public/sms-multi-factor-assertion-form.json
@@ -5,7 +5,7 @@
"title": "SMS Multi-Factor Assertion Form",
"description": "A form allowing users to complete SMS-based multi-factor authentication during sign-in.",
"dependencies": [
- "@firebase-ui/react"
+ "@firebase-oss/ui-react"
],
"registryDependencies": [
"form",
@@ -16,7 +16,7 @@
"files": [
{
"path": "src/registry/sms-multi-factor-assertion-form.tsx",
- "content": "\"use client\";\n\nimport { useRef, useState } from \"react\";\nimport { type MultiFactorInfo } from \"firebase/auth\";\n\nimport { FirebaseUIError, getTranslation } from \"@firebase-ui/core\";\nimport {\n useMultiFactorPhoneAuthVerifyFormSchema,\n useRecaptchaVerifier,\n useUI,\n useSmsMultiFactorAssertionPhoneFormAction,\n useSmsMultiFactorAssertionVerifyFormAction,\n} from \"@firebase-ui/react\";\nimport { useForm } from \"react-hook-form\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\n\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Button } from \"@/components/ui/button\";\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from \"@/components/ui/input-otp\";\n\ntype PhoneMultiFactorInfo = MultiFactorInfo & {\n phoneNumber?: string;\n};\n\ntype SmsMultiFactorAssertionPhoneFormProps = {\n hint: MultiFactorInfo;\n onSubmit: (verificationId: string) => void;\n};\n\nfunction SmsMultiFactorAssertionPhoneForm(props: SmsMultiFactorAssertionPhoneFormProps) {\n const ui = useUI();\n const recaptchaContainerRef = useRef(null);\n const recaptchaVerifier = useRecaptchaVerifier(recaptchaContainerRef);\n const action = useSmsMultiFactorAssertionPhoneFormAction();\n const [error, setError] = useState(null);\n\n const onSubmit = async () => {\n try {\n setError(null);\n const verificationId = await action({ hint: props.hint, recaptchaVerifier: recaptchaVerifier! });\n props.onSubmit(verificationId);\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n setError(message);\n }\n };\n\n return (\n \n
\n
\n
\n {(props.hint as PhoneMultiFactorInfo).phoneNumber || \"No phone number available\"}\n
\n
\n
\n
\n {error &&
{error}
}\n
\n );\n}\n\ntype SmsMultiFactorAssertionVerifyFormProps = {\n verificationId: string;\n onSuccess: () => void;\n};\n\nfunction SmsMultiFactorAssertionVerifyForm(props: SmsMultiFactorAssertionVerifyFormProps) {\n const ui = useUI();\n const schema = useMultiFactorPhoneAuthVerifyFormSchema();\n const action = useSmsMultiFactorAssertionVerifyFormAction();\n\n const form = useForm<{ verificationId: string; verificationCode: string }>({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n verificationId: props.verificationId,\n verificationCode: \"\",\n },\n });\n\n const onSubmit = async (values: { verificationId: string; verificationCode: string }) => {\n try {\n await action({ verificationId: values.verificationId, verificationCode: values.verificationCode });\n props.onSuccess();\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n };\n\n return (\n \n \n );\n}\n\nexport type SmsMultiFactorAssertionFormProps = {\n hint: MultiFactorInfo;\n onSuccess?: () => void;\n};\n\nexport function SmsMultiFactorAssertionForm(props: SmsMultiFactorAssertionFormProps) {\n const [verification, setVerification] = useState<{\n verificationId: string;\n } | null>(null);\n\n if (!verification) {\n return (\n setVerification({ verificationId })}\n />\n );\n }\n\n return (\n {\n props.onSuccess?.();\n }}\n />\n );\n}\n",
+ "content": "\"use client\";\n\nimport { useRef, useState } from \"react\";\nimport { type MultiFactorInfo } from \"firebase/auth\";\n\nimport { FirebaseUIError, getTranslation } from \"@firebase-oss/ui-core\";\nimport {\n useMultiFactorPhoneAuthVerifyFormSchema,\n useRecaptchaVerifier,\n useUI,\n useSmsMultiFactorAssertionPhoneFormAction,\n useSmsMultiFactorAssertionVerifyFormAction,\n} from \"@firebase-oss/ui-react\";\nimport { useForm } from \"react-hook-form\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\n\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Button } from \"@/components/ui/button\";\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from \"@/components/ui/input-otp\";\n\ntype PhoneMultiFactorInfo = MultiFactorInfo & {\n phoneNumber?: string;\n};\n\ntype SmsMultiFactorAssertionPhoneFormProps = {\n hint: MultiFactorInfo;\n onSubmit: (verificationId: string) => void;\n};\n\nfunction SmsMultiFactorAssertionPhoneForm(props: SmsMultiFactorAssertionPhoneFormProps) {\n const ui = useUI();\n const recaptchaContainerRef = useRef(null);\n const recaptchaVerifier = useRecaptchaVerifier(recaptchaContainerRef);\n const action = useSmsMultiFactorAssertionPhoneFormAction();\n const [error, setError] = useState(null);\n\n const onSubmit = async () => {\n try {\n setError(null);\n const verificationId = await action({ hint: props.hint, recaptchaVerifier: recaptchaVerifier! });\n props.onSubmit(verificationId);\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n setError(message);\n }\n };\n\n return (\n \n
\n
\n
\n {(props.hint as PhoneMultiFactorInfo).phoneNumber || \"No phone number available\"}\n
\n
\n
\n
\n {error &&
{error}
}\n
\n );\n}\n\ntype SmsMultiFactorAssertionVerifyFormProps = {\n verificationId: string;\n onSuccess: () => void;\n};\n\nfunction SmsMultiFactorAssertionVerifyForm(props: SmsMultiFactorAssertionVerifyFormProps) {\n const ui = useUI();\n const schema = useMultiFactorPhoneAuthVerifyFormSchema();\n const action = useSmsMultiFactorAssertionVerifyFormAction();\n\n const form = useForm<{ verificationId: string; verificationCode: string }>({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n verificationId: props.verificationId,\n verificationCode: \"\",\n },\n });\n\n const onSubmit = async (values: { verificationId: string; verificationCode: string }) => {\n try {\n await action({ verificationId: values.verificationId, verificationCode: values.verificationCode });\n props.onSuccess();\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n };\n\n return (\n \n \n );\n}\n\nexport type SmsMultiFactorAssertionFormProps = {\n hint: MultiFactorInfo;\n onSuccess?: () => void;\n};\n\nexport function SmsMultiFactorAssertionForm(props: SmsMultiFactorAssertionFormProps) {\n const [verification, setVerification] = useState<{\n verificationId: string;\n } | null>(null);\n\n if (!verification) {\n return (\n setVerification({ verificationId })}\n />\n );\n }\n\n return (\n {\n props.onSuccess?.();\n }}\n />\n );\n}\n",
"type": "registry:component"
}
]
diff --git a/packages/shadcn/public/sms-multi-factor-enrollment-form.json b/packages/shadcn/public/sms-multi-factor-enrollment-form.json
index 4df076a27..cc656d155 100644
--- a/packages/shadcn/public/sms-multi-factor-enrollment-form.json
+++ b/packages/shadcn/public/sms-multi-factor-enrollment-form.json
@@ -5,7 +5,7 @@
"title": "SMS Multi-Factor Enrollment Form",
"description": "A form allowing users to enroll SMS-based multi-factor authentication.",
"dependencies": [
- "@firebase-ui/react"
+ "@firebase-oss/ui-react"
],
"registryDependencies": [
"form",
@@ -17,7 +17,7 @@
"files": [
{
"path": "src/registry/sms-multi-factor-enrollment-form.tsx",
- "content": "\"use client\";\n\nimport { useRef, useState } from \"react\";\nimport { multiFactor, PhoneAuthProvider, PhoneMultiFactorGenerator } from \"firebase/auth\";\nimport {\n enrollWithMultiFactorAssertion,\n FirebaseUIError,\n formatPhoneNumber,\n getTranslation,\n verifyPhoneNumber,\n} from \"@firebase-ui/core\";\nimport { CountrySelector, type CountrySelectorRef } from \"@/registry/country-selector\";\nimport {\n useMultiFactorPhoneAuthNumberFormSchema,\n useMultiFactorPhoneAuthVerifyFormSchema,\n useRecaptchaVerifier,\n useUI,\n} from \"@firebase-ui/react\";\nimport { useForm } from \"react-hook-form\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\n\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from \"@/components/ui/input-otp\";\n\ntype MultiFactorEnrollmentPhoneNumberFormProps = {\n onSubmit: (verificationId: string, displayName?: string) => void;\n};\n\nfunction MultiFactorEnrollmentPhoneNumberForm(props: MultiFactorEnrollmentPhoneNumberFormProps) {\n const ui = useUI();\n const recaptchaContainerRef = useRef(null);\n const recaptchaVerifier = useRecaptchaVerifier(recaptchaContainerRef);\n const countrySelector = useRef(null);\n const schema = useMultiFactorPhoneAuthNumberFormSchema();\n\n const form = useForm<{ displayName: string; phoneNumber: string }>({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n displayName: \"\",\n phoneNumber: \"\",\n },\n });\n\n const onSubmit = async (values: { displayName: string; phoneNumber: string }) => {\n try {\n const formatted = formatPhoneNumber(values.phoneNumber, countrySelector.current!.getCountry());\n const mfaUser = multiFactor(ui.auth.currentUser!);\n const confirmationResult = await verifyPhoneNumber(ui, formatted, recaptchaVerifier!, mfaUser);\n props.onSubmit(confirmationResult, values.displayName);\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n };\n\n return (\n \n \n );\n}\n\ntype MultiFactorEnrollmentVerifyPhoneNumberFormProps = {\n verificationId: string;\n displayName?: string;\n onSuccess: () => void;\n};\n\nexport function MultiFactorEnrollmentVerifyPhoneNumberForm(props: MultiFactorEnrollmentVerifyPhoneNumberFormProps) {\n const ui = useUI();\n const schema = useMultiFactorPhoneAuthVerifyFormSchema();\n\n const form = useForm<{ verificationId: string; verificationCode: string }>({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n verificationId: props.verificationId,\n verificationCode: \"\",\n },\n });\n\n const onSubmit = async (values: { verificationId: string; verificationCode: string }) => {\n try {\n const credential = PhoneAuthProvider.credential(values.verificationId, values.verificationCode);\n const assertion = PhoneMultiFactorGenerator.assertion(credential);\n await enrollWithMultiFactorAssertion(ui, assertion, props.displayName);\n props.onSuccess();\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n };\n\n return (\n \n \n );\n}\n\nexport type SmsMultiFactorEnrollmentFormProps = {\n onSuccess?: () => void;\n};\n\nexport function SmsMultiFactorEnrollmentForm(props: SmsMultiFactorEnrollmentFormProps) {\n const ui = useUI();\n\n const [verification, setVerification] = useState<{\n verificationId: string;\n displayName?: string;\n } | null>(null);\n\n if (!ui.auth.currentUser) {\n throw new Error(\"User must be authenticated to enroll with multi-factor authentication\");\n }\n\n if (!verification) {\n return (\n setVerification({ verificationId, displayName })}\n />\n );\n }\n\n return (\n {\n props.onSuccess?.();\n }}\n />\n );\n}\n",
+ "content": "\"use client\";\n\nimport { useRef, useState } from \"react\";\nimport { multiFactor, PhoneAuthProvider, PhoneMultiFactorGenerator } from \"firebase/auth\";\nimport {\n enrollWithMultiFactorAssertion,\n FirebaseUIError,\n formatPhoneNumber,\n getTranslation,\n verifyPhoneNumber,\n} from \"@firebase-oss/ui-core\";\nimport { CountrySelector, type CountrySelectorRef } from \"@/registry/country-selector\";\nimport {\n useMultiFactorPhoneAuthNumberFormSchema,\n useMultiFactorPhoneAuthVerifyFormSchema,\n useRecaptchaVerifier,\n useUI,\n} from \"@firebase-oss/ui-react\";\nimport { useForm } from \"react-hook-form\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\n\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from \"@/components/ui/input-otp\";\n\ntype MultiFactorEnrollmentPhoneNumberFormProps = {\n onSubmit: (verificationId: string, displayName?: string) => void;\n};\n\nfunction MultiFactorEnrollmentPhoneNumberForm(props: MultiFactorEnrollmentPhoneNumberFormProps) {\n const ui = useUI();\n const recaptchaContainerRef = useRef(null);\n const recaptchaVerifier = useRecaptchaVerifier(recaptchaContainerRef);\n const countrySelector = useRef(null);\n const schema = useMultiFactorPhoneAuthNumberFormSchema();\n\n const form = useForm<{ displayName: string; phoneNumber: string }>({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n displayName: \"\",\n phoneNumber: \"\",\n },\n });\n\n const onSubmit = async (values: { displayName: string; phoneNumber: string }) => {\n try {\n const formatted = formatPhoneNumber(values.phoneNumber, countrySelector.current!.getCountry());\n const mfaUser = multiFactor(ui.auth.currentUser!);\n const confirmationResult = await verifyPhoneNumber(ui, formatted, recaptchaVerifier!, mfaUser);\n props.onSubmit(confirmationResult, values.displayName);\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n };\n\n return (\n \n \n );\n}\n\ntype MultiFactorEnrollmentVerifyPhoneNumberFormProps = {\n verificationId: string;\n displayName?: string;\n onSuccess: () => void;\n};\n\nexport function MultiFactorEnrollmentVerifyPhoneNumberForm(props: MultiFactorEnrollmentVerifyPhoneNumberFormProps) {\n const ui = useUI();\n const schema = useMultiFactorPhoneAuthVerifyFormSchema();\n\n const form = useForm<{ verificationId: string; verificationCode: string }>({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n verificationId: props.verificationId,\n verificationCode: \"\",\n },\n });\n\n const onSubmit = async (values: { verificationId: string; verificationCode: string }) => {\n try {\n const credential = PhoneAuthProvider.credential(values.verificationId, values.verificationCode);\n const assertion = PhoneMultiFactorGenerator.assertion(credential);\n await enrollWithMultiFactorAssertion(ui, assertion, props.displayName);\n props.onSuccess();\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n };\n\n return (\n \n \n );\n}\n\nexport type SmsMultiFactorEnrollmentFormProps = {\n onSuccess?: () => void;\n};\n\nexport function SmsMultiFactorEnrollmentForm(props: SmsMultiFactorEnrollmentFormProps) {\n const ui = useUI();\n\n const [verification, setVerification] = useState<{\n verificationId: string;\n displayName?: string;\n } | null>(null);\n\n if (!ui.auth.currentUser) {\n throw new Error(\"User must be authenticated to enroll with multi-factor authentication\");\n }\n\n if (!verification) {\n return (\n setVerification({ verificationId, displayName })}\n />\n );\n }\n\n return (\n {\n props.onSuccess?.();\n }}\n />\n );\n}\n",
"type": "registry:component"
}
]
diff --git a/packages/shadcn/public/totp-multi-factor-assertion-form.json b/packages/shadcn/public/totp-multi-factor-assertion-form.json
index decc75ccd..3ce71ccfd 100644
--- a/packages/shadcn/public/totp-multi-factor-assertion-form.json
+++ b/packages/shadcn/public/totp-multi-factor-assertion-form.json
@@ -5,7 +5,7 @@
"title": "TOTP Multi-Factor Assertion Form",
"description": "A form allowing users to complete TOTP-based multi-factor authentication during sign-in.",
"dependencies": [
- "@firebase-ui/react"
+ "@firebase-oss/ui-react"
],
"registryDependencies": [
"form",
@@ -15,7 +15,7 @@
"files": [
{
"path": "src/registry/totp-multi-factor-assertion-form.tsx",
- "content": "\"use client\";\n\nimport { type MultiFactorInfo } from \"firebase/auth\";\nimport { FirebaseUIError, getTranslation } from \"@firebase-ui/core\";\nimport {\n useMultiFactorTotpAuthVerifyFormSchema,\n useUI,\n useTotpMultiFactorAssertionFormAction,\n} from \"@firebase-ui/react\";\nimport { useForm } from \"react-hook-form\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\n\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Button } from \"@/components/ui/button\";\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from \"@/components/ui/input-otp\";\n\ntype TotpMultiFactorAssertionFormProps = {\n hint: MultiFactorInfo;\n onSuccess?: () => void;\n};\n\nexport function TotpMultiFactorAssertionForm(props: TotpMultiFactorAssertionFormProps) {\n const ui = useUI();\n const schema = useMultiFactorTotpAuthVerifyFormSchema();\n const action = useTotpMultiFactorAssertionFormAction();\n\n const form = useForm<{ verificationCode: string }>({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n verificationCode: \"\",\n },\n });\n\n const onSubmit = async (values: { verificationCode: string }) => {\n try {\n await action({ verificationCode: values.verificationCode, hint: props.hint });\n props.onSuccess?.();\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n };\n\n return (\n \n \n );\n}\n",
+ "content": "\"use client\";\n\nimport { type MultiFactorInfo } from \"firebase/auth\";\nimport { FirebaseUIError, getTranslation } from \"@firebase-oss/ui-core\";\nimport {\n useMultiFactorTotpAuthVerifyFormSchema,\n useUI,\n useTotpMultiFactorAssertionFormAction,\n} from \"@firebase-oss/ui-react\";\nimport { useForm } from \"react-hook-form\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\n\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Button } from \"@/components/ui/button\";\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from \"@/components/ui/input-otp\";\n\ntype TotpMultiFactorAssertionFormProps = {\n hint: MultiFactorInfo;\n onSuccess?: () => void;\n};\n\nexport function TotpMultiFactorAssertionForm(props: TotpMultiFactorAssertionFormProps) {\n const ui = useUI();\n const schema = useMultiFactorTotpAuthVerifyFormSchema();\n const action = useTotpMultiFactorAssertionFormAction();\n\n const form = useForm<{ verificationCode: string }>({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n verificationCode: \"\",\n },\n });\n\n const onSubmit = async (values: { verificationCode: string }) => {\n try {\n await action({ verificationCode: values.verificationCode, hint: props.hint });\n props.onSuccess?.();\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n };\n\n return (\n \n \n );\n}\n",
"type": "registry:component"
}
]
diff --git a/packages/shadcn/public/totp-multi-factor-enrollment-form.json b/packages/shadcn/public/totp-multi-factor-enrollment-form.json
index 5de677e23..ced8a0bab 100644
--- a/packages/shadcn/public/totp-multi-factor-enrollment-form.json
+++ b/packages/shadcn/public/totp-multi-factor-enrollment-form.json
@@ -5,7 +5,7 @@
"title": "TOTP Multi-Factor Enrollment Form",
"description": "A form allowing users to enroll TOTP-based multi-factor authentication with QR code generation.",
"dependencies": [
- "@firebase-ui/react"
+ "@firebase-oss/ui-react"
],
"registryDependencies": [
"form",
@@ -16,7 +16,7 @@
"files": [
{
"path": "src/registry/totp-multi-factor-enrollment-form.tsx",
- "content": "\"use client\";\n\nimport { useState } from \"react\";\nimport { TotpMultiFactorGenerator, type TotpSecret } from \"firebase/auth\";\nimport {\n enrollWithMultiFactorAssertion,\n FirebaseUIError,\n generateTotpQrCode,\n generateTotpSecret,\n getTranslation,\n} from \"@firebase-ui/core\";\nimport {\n useMultiFactorTotpAuthNumberFormSchema,\n useMultiFactorTotpAuthVerifyFormSchema,\n useUI,\n} from \"@firebase-ui/react\";\nimport { useForm } from \"react-hook-form\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\n\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from \"@/components/ui/input-otp\";\n\ntype TotpMultiFactorSecretGenerationFormProps = {\n onSubmit: (secret: TotpSecret, displayName: string) => void;\n};\n\nfunction TotpMultiFactorSecretGenerationForm(props: TotpMultiFactorSecretGenerationFormProps) {\n const ui = useUI();\n const schema = useMultiFactorTotpAuthNumberFormSchema();\n\n const form = useForm<{ displayName: string }>({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n displayName: \"\",\n },\n });\n\n const onSubmit = async (values: { displayName: string }) => {\n try {\n const secret = await generateTotpSecret(ui);\n props.onSubmit(secret, values.displayName);\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n };\n\n return (\n \n \n );\n}\n\ntype MultiFactorEnrollmentVerifyTotpFormProps = {\n secret: TotpSecret;\n displayName: string;\n onSuccess: () => void;\n};\n\nexport function MultiFactorEnrollmentVerifyTotpForm(props: MultiFactorEnrollmentVerifyTotpFormProps) {\n const ui = useUI();\n const schema = useMultiFactorTotpAuthVerifyFormSchema();\n\n const form = useForm<{ verificationCode: string }>({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n verificationCode: \"\",\n },\n });\n\n const onSubmit = async (values: { verificationCode: string }) => {\n try {\n const assertion = TotpMultiFactorGenerator.assertionForEnrollment(props.secret, values.verificationCode);\n await enrollWithMultiFactorAssertion(ui, assertion, values.verificationCode);\n props.onSuccess();\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n };\n\n const qrCodeDataUrl = generateTotpQrCode(ui, props.secret, props.displayName);\n\n return (\n \n
\n
\n

\n
\n Scan this QR code with your authenticator app\n
\n
\n
\n
\n \n
\n );\n}\n\nexport type TotpMultiFactorEnrollmentFormProps = {\n onSuccess?: () => void;\n};\n\nexport function TotpMultiFactorEnrollmentForm(props: TotpMultiFactorEnrollmentFormProps) {\n const ui = useUI();\n\n const [enrollment, setEnrollment] = useState<{\n secret: TotpSecret;\n displayName: string;\n } | null>(null);\n\n if (!ui.auth.currentUser) {\n throw new Error(\"User must be authenticated to enroll with multi-factor authentication\");\n }\n\n if (!enrollment) {\n return (\n setEnrollment({ secret, displayName })} />\n );\n }\n\n return (\n {\n props.onSuccess?.();\n }}\n />\n );\n}\n",
+ "content": "\"use client\";\n\nimport { useState } from \"react\";\nimport { TotpMultiFactorGenerator, type TotpSecret } from \"firebase/auth\";\nimport {\n enrollWithMultiFactorAssertion,\n FirebaseUIError,\n generateTotpQrCode,\n generateTotpSecret,\n getTranslation,\n} from \"@firebase-oss/ui-core\";\nimport {\n useMultiFactorTotpAuthNumberFormSchema,\n useMultiFactorTotpAuthVerifyFormSchema,\n useUI,\n} from \"@firebase-oss/ui-react\";\nimport { useForm } from \"react-hook-form\";\nimport { standardSchemaResolver } from \"@hookform/resolvers/standard-schema\";\n\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"@/components/ui/form\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from \"@/components/ui/input-otp\";\n\ntype TotpMultiFactorSecretGenerationFormProps = {\n onSubmit: (secret: TotpSecret, displayName: string) => void;\n};\n\nfunction TotpMultiFactorSecretGenerationForm(props: TotpMultiFactorSecretGenerationFormProps) {\n const ui = useUI();\n const schema = useMultiFactorTotpAuthNumberFormSchema();\n\n const form = useForm<{ displayName: string }>({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n displayName: \"\",\n },\n });\n\n const onSubmit = async (values: { displayName: string }) => {\n try {\n const secret = await generateTotpSecret(ui);\n props.onSubmit(secret, values.displayName);\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n };\n\n return (\n \n \n );\n}\n\ntype MultiFactorEnrollmentVerifyTotpFormProps = {\n secret: TotpSecret;\n displayName: string;\n onSuccess: () => void;\n};\n\nexport function MultiFactorEnrollmentVerifyTotpForm(props: MultiFactorEnrollmentVerifyTotpFormProps) {\n const ui = useUI();\n const schema = useMultiFactorTotpAuthVerifyFormSchema();\n\n const form = useForm<{ verificationCode: string }>({\n resolver: standardSchemaResolver(schema),\n defaultValues: {\n verificationCode: \"\",\n },\n });\n\n const onSubmit = async (values: { verificationCode: string }) => {\n try {\n const assertion = TotpMultiFactorGenerator.assertionForEnrollment(props.secret, values.verificationCode);\n await enrollWithMultiFactorAssertion(ui, assertion, values.verificationCode);\n props.onSuccess();\n } catch (error) {\n const message = error instanceof FirebaseUIError ? error.message : String(error);\n form.setError(\"root\", { message });\n }\n };\n\n const qrCodeDataUrl = generateTotpQrCode(ui, props.secret, props.displayName);\n\n return (\n \n
\n
\n

\n
\n Scan this QR code with your authenticator app\n
\n
\n
\n
\n \n
\n );\n}\n\nexport type TotpMultiFactorEnrollmentFormProps = {\n onSuccess?: () => void;\n};\n\nexport function TotpMultiFactorEnrollmentForm(props: TotpMultiFactorEnrollmentFormProps) {\n const ui = useUI();\n\n const [enrollment, setEnrollment] = useState<{\n secret: TotpSecret;\n displayName: string;\n } | null>(null);\n\n if (!ui.auth.currentUser) {\n throw new Error(\"User must be authenticated to enroll with multi-factor authentication\");\n }\n\n if (!enrollment) {\n return (\n setEnrollment({ secret, displayName })} />\n );\n }\n\n return (\n {\n props.onSuccess?.();\n }}\n />\n );\n}\n",
"type": "registry:component"
}
]
diff --git a/packages/shadcn/public/twitter-sign-in-button.json b/packages/shadcn/public/twitter-sign-in-button.json
index 20f49f260..a07adecc4 100644
--- a/packages/shadcn/public/twitter-sign-in-button.json
+++ b/packages/shadcn/public/twitter-sign-in-button.json
@@ -5,7 +5,7 @@
"title": "Twitter Sign In Button",
"description": "A button component for Twitter OAuth authentication.",
"dependencies": [
- "@firebase-ui/react"
+ "@firebase-oss/ui-react"
],
"registryDependencies": [
"https://fir-ui-shadcn.web.app/oauth-button.json"
@@ -13,7 +13,7 @@
"files": [
{
"path": "src/registry/twitter-sign-in-button.tsx",
- "content": "\"use client\";\n\nimport { TwitterAuthProvider } from \"firebase/auth\";\nimport { getTranslation } from \"@firebase-ui/core\";\nimport { useUI, type TwitterSignInButtonProps, TwitterLogo } from \"@firebase-ui/react\";\n\nimport { OAuthButton } from \"@/registry/oauth-button\";\n\nexport type { TwitterSignInButtonProps };\n\nexport function TwitterSignInButton({ provider, themed }: TwitterSignInButtonProps) {\n const ui = useUI();\n\n return (\n \n \n {getTranslation(ui, \"labels\", \"signInWithTwitter\")}\n \n );\n}\n",
+ "content": "\"use client\";\n\nimport { TwitterAuthProvider } from \"firebase/auth\";\nimport { getTranslation } from \"@firebase-oss/ui-core\";\nimport { useUI, type TwitterSignInButtonProps, TwitterLogo } from \"@firebase-oss/ui-react\";\n\nimport { OAuthButton } from \"@/registry/oauth-button\";\n\nexport type { TwitterSignInButtonProps };\n\nexport function TwitterSignInButton({ provider, themed }: TwitterSignInButtonProps) {\n const ui = useUI();\n\n return (\n \n \n {getTranslation(ui, \"labels\", \"signInWithTwitter\")}\n \n );\n}\n",
"type": "registry:component"
}
],
diff --git a/packages/shadcn/registry-spec.json b/packages/shadcn/registry-spec.json
index f1bf02e00..5b8476138 100644
--- a/packages/shadcn/registry-spec.json
+++ b/packages/shadcn/registry-spec.json
@@ -8,7 +8,7 @@
"type": "registry:block",
"title": "Apple Sign In Button",
"description": "A button component for Apple OAuth authentication.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["{{ DOMAIN }}/oauth-button.json"],
"files": [
{
@@ -42,7 +42,7 @@
"type": "registry:block",
"title": "Country Selector",
"description": "A country selector component for phone number input with country codes and flags.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["select"],
"files": [
{
@@ -56,7 +56,7 @@
"type": "registry:block",
"title": "Email Link Auth Form",
"description": "A form allowing users to sign in via email link.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["input", "button", "form", "{{ DOMAIN }}/policies.json"],
"files": [
{
@@ -70,7 +70,7 @@
"type": "registry:block",
"title": "Email Link Auth Screen",
"description": "A screen allowing users to sign in via email link.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["separator", "card", "{{ DOMAIN }}/email-link-auth-form.json"],
"files": [
{
@@ -84,7 +84,7 @@
"type": "registry:block",
"title": "Facebook Sign In Button",
"description": "A button component for Facebook OAuth authentication.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["{{ DOMAIN }}/oauth-button.json"],
"files": [
{
@@ -109,7 +109,7 @@
"type": "registry:block",
"title": "Forgot Password Auth Form",
"description": "A form allowing users to reset their password via email.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["input", "button", "form", "{{ DOMAIN }}/policies.json"],
"files": [
{
@@ -123,7 +123,7 @@
"type": "registry:block",
"title": "Forgot Password Auth Screen",
"description": "A screen allowing users to reset their password via email.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["card", "{{ DOMAIN }}/forgot-password-auth-form.json"],
"files": [
{
@@ -137,7 +137,7 @@
"type": "registry:block",
"title": "GitHub Sign In Button",
"description": "A button component for GitHub OAuth authentication.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["{{ DOMAIN }}/oauth-button.json"],
"files": [
{
@@ -171,7 +171,7 @@
"type": "registry:block",
"title": "Google Sign In Button",
"description": "A button component for Google OAuth authentication.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["{{ DOMAIN }}/oauth-button.json"],
"files": [
{
@@ -212,7 +212,7 @@
"type": "registry:block",
"title": "Microsoft Sign In Button",
"description": "A button component for Microsoft OAuth authentication.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["{{ DOMAIN }}/oauth-button.json"],
"files": [
{
@@ -246,7 +246,7 @@
"type": "registry:block",
"title": "Multi-Factor Auth Assertion Form",
"description": "A form allowing users to complete multi-factor authentication during sign-in with TOTP or SMS options.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": [
"button",
"{{ DOMAIN }}/sms-multi-factor-assertion-form.json",
@@ -264,7 +264,7 @@
"type": "registry:block",
"title": "Multi-Factor Auth Enrollment Form",
"description": "A form allowing users to select and configure multi-factor authentication methods.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": [
"button",
"{{ DOMAIN }}/sms-multi-factor-enrollment-form.json",
@@ -282,7 +282,7 @@
"type": "registry:block",
"title": "Multi-Factor Auth Enrollment Screen",
"description": "A screen allowing users to set up multi-factor authentication with TOTP or SMS options.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["card", "{{ DOMAIN }}/multi-factor-auth-enrollment-form.json"],
"files": [
{
@@ -296,7 +296,7 @@
"type": "registry:block",
"title": "OAuth Button",
"description": "A button component for OAuth authentication providers.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["button"],
"files": [
{
@@ -310,7 +310,7 @@
"type": "registry:block",
"title": "OAuth Screen",
"description": "A screen allowing users to sign in with OAuth providers.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": [
"card",
"{{ DOMAIN }}/policies.json",
@@ -329,7 +329,7 @@
"type": "registry:block",
"title": "Phone Auth Form",
"description": "A form allowing users to authenticate using their phone number with SMS verification.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": [
"form",
"input",
@@ -349,7 +349,7 @@
"type": "registry:block",
"title": "Phone Auth Screen",
"description": "A screen allowing users to authenticate using their phone number with SMS verification.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": [
"card",
"separator",
@@ -369,7 +369,7 @@
"type": "registry:block",
"title": "Policies",
"description": "A component allowing users to navigate to the terms of service and privacy policy.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"files": [
{
"path": "src/registry/policies.tsx",
@@ -382,7 +382,7 @@
"type": "registry:block",
"title": "Redirect Error",
"description": "A component that displays redirect errors from Firebase UI authentication flow.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"files": [
{
"path": "src/registry/redirect-error.tsx",
@@ -395,7 +395,7 @@
"type": "registry:block",
"title": "Sign In Auth Form",
"description": "A form allowing users to sign in with email and password.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["input", "button", "form", "{{ DOMAIN }}/policies.json"],
"files": [
{
@@ -409,7 +409,7 @@
"type": "registry:block",
"title": "Sign In Auth Screen",
"description": "A screen allowing users to sign in with email and password.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["separator", "card", "{{ DOMAIN }}/sign-in-auth-form.json"],
"files": [
{
@@ -423,7 +423,7 @@
"type": "registry:block",
"title": "Sign Up Auth Form",
"description": "A form allowing users to sign up with email and password.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["input", "button", "form", "{{ DOMAIN }}/policies.json"],
"files": [
{
@@ -437,7 +437,7 @@
"type": "registry:block",
"title": "Sign Up Auth Screen",
"description": "A screen allowing users to sign up with email and password.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["separator", "card", "{{ DOMAIN }}/sign-up-auth-form.json"],
"files": [
{
@@ -451,7 +451,7 @@
"type": "registry:block",
"title": "SMS Multi-Factor Assertion Form",
"description": "A form allowing users to complete SMS-based multi-factor authentication during sign-in.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["form", "input", "button", "input-otp"],
"files": [
{
@@ -465,7 +465,7 @@
"type": "registry:block",
"title": "SMS Multi-Factor Enrollment Form",
"description": "A form allowing users to enroll SMS-based multi-factor authentication.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["form", "input", "button", "input-otp", "{{ DOMAIN }}/country-selector.json"],
"files": [
{
@@ -479,7 +479,7 @@
"type": "registry:block",
"title": "TOTP Multi-Factor Assertion Form",
"description": "A form allowing users to complete TOTP-based multi-factor authentication during sign-in.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["form", "button", "input-otp"],
"files": [
{
@@ -493,7 +493,7 @@
"type": "registry:block",
"title": "TOTP Multi-Factor Enrollment Form",
"description": "A form allowing users to enroll TOTP-based multi-factor authentication with QR code generation.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["form", "input", "button", "input-otp"],
"files": [
{
@@ -507,7 +507,7 @@
"type": "registry:block",
"title": "Twitter Sign In Button",
"description": "A button component for Twitter OAuth authentication.",
- "dependencies": ["{{ DEP | @firebase-ui/react }}"],
+ "dependencies": ["{{ DEP | @firebase-oss/ui-react }}"],
"registryDependencies": ["{{ DOMAIN }}/oauth-button.json"],
"files": [
{
diff --git a/packages/shadcn/src/registry/apple-sign-in-button.test.tsx b/packages/shadcn/src/registry/apple-sign-in-button.test.tsx
index b381805ee..6d7e5b793 100644
--- a/packages/shadcn/src/registry/apple-sign-in-button.test.tsx
+++ b/packages/shadcn/src/registry/apple-sign-in-button.test.tsx
@@ -18,9 +18,9 @@ import { describe, it, expect, vi, afterEach, beforeEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { AppleSignInButton } from "./apple-sign-in-button";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
+import { registerLocale } from "@firebase-oss/ui-translations";
import { OAuthProvider } from "firebase/auth";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
vi.mock("./oauth-button", () => ({
OAuthButton: ({ provider, children, themed }: any) => (
@@ -32,8 +32,8 @@ vi.mock("./oauth-button", () => ({
),
}));
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
AppleLogo: ({ className, ...props }: any) => (
diff --git a/packages/shadcn/src/registry/apple-sign-in-button.tsx b/packages/shadcn/src/registry/apple-sign-in-button.tsx
index f600032bc..a0c1de402 100644
--- a/packages/shadcn/src/registry/apple-sign-in-button.tsx
+++ b/packages/shadcn/src/registry/apple-sign-in-button.tsx
@@ -1,8 +1,8 @@
"use client";
import { OAuthProvider } from "firebase/auth";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI, type AppleSignInButtonProps, AppleLogo } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI, type AppleSignInButtonProps, AppleLogo } from "@firebase-oss/ui-react";
import { OAuthButton } from "@/registry/oauth-button";
diff --git a/packages/shadcn/src/registry/country-selector.test.tsx b/packages/shadcn/src/registry/country-selector.test.tsx
index 6b9befb3d..9c22e7720 100644
--- a/packages/shadcn/src/registry/country-selector.test.tsx
+++ b/packages/shadcn/src/registry/country-selector.test.tsx
@@ -16,13 +16,13 @@
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, cleanup, renderHook, waitFor } from "@testing-library/react";
-import { countryCodes } from "@firebase-ui/core";
+import { countryCodes } from "@firebase-oss/ui-core";
import { CountrySelector } from "./country-selector";
import { createMockUI, createFirebaseUIProvider } from "../../tests/utils";
-import { FirebaseUIProvider } from "@firebase-ui/react";
-import { useCountries, useDefaultCountry } from "@firebase-ui/react";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
+import { useCountries, useDefaultCountry } from "@firebase-oss/ui-react";
import type { RefObject } from "react";
-import type { CountrySelectorRef } from "@firebase-ui/react";
+import type { CountrySelectorRef } from "@firebase-oss/ui-react";
// Mock the shadcn Select components
vi.mock("@/components/ui/select", () => ({
diff --git a/packages/shadcn/src/registry/country-selector.tsx b/packages/shadcn/src/registry/country-selector.tsx
index b3fc77cc7..1e74e40e2 100644
--- a/packages/shadcn/src/registry/country-selector.tsx
+++ b/packages/shadcn/src/registry/country-selector.tsx
@@ -1,13 +1,13 @@
"use client";
import { forwardRef, useCallback, useImperativeHandle, useState } from "react";
-import type { CountryCode, CountryData } from "@firebase-ui/core";
+import type { CountryCode, CountryData } from "@firebase-oss/ui-core";
import {
type CountrySelectorRef,
type CountrySelectorProps,
useCountries,
useDefaultCountry,
-} from "@firebase-ui/react";
+} from "@firebase-oss/ui-react";
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
diff --git a/packages/shadcn/src/registry/email-link-auth-form.test.tsx b/packages/shadcn/src/registry/email-link-auth-form.test.tsx
index f93e4306f..f9a872616 100644
--- a/packages/shadcn/src/registry/email-link-auth-form.test.tsx
+++ b/packages/shadcn/src/registry/email-link-auth-form.test.tsx
@@ -18,15 +18,15 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, fireEvent, cleanup, waitFor } from "@testing-library/react";
import { EmailLinkAuthForm } from "./email-link-auth-form";
import { act } from "react";
-import { useEmailLinkAuthFormAction } from "@firebase-ui/react";
+import { useEmailLinkAuthFormAction } from "@firebase-oss/ui-react";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
import { UserCredential } from "firebase/auth";
-import { completeEmailLinkSignIn } from "@firebase-ui/core";
+import { completeEmailLinkSignIn } from "@firebase-oss/ui-core";
-vi.mock("@firebase-ui/core", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-core", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
sendSignInLinkToEmail: vi.fn(),
@@ -34,8 +34,8 @@ vi.mock("@firebase-ui/core", async (importOriginal) => {
};
});
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
useEmailLinkAuthFormAction: vi.fn(),
diff --git a/packages/shadcn/src/registry/email-link-auth-form.tsx b/packages/shadcn/src/registry/email-link-auth-form.tsx
index 20e28c68e..4780472d3 100644
--- a/packages/shadcn/src/registry/email-link-auth-form.tsx
+++ b/packages/shadcn/src/registry/email-link-auth-form.tsx
@@ -1,16 +1,16 @@
"use client";
-import type { EmailLinkAuthFormSchema } from "@firebase-ui/core";
+import type { EmailLinkAuthFormSchema } from "@firebase-oss/ui-core";
import {
useUI,
useEmailLinkAuthFormAction,
useEmailLinkAuthFormSchema,
useEmailLinkAuthFormCompleteSignIn,
type EmailLinkAuthFormProps,
-} from "@firebase-ui/react";
+} from "@firebase-oss/ui-react";
import { useForm } from "react-hook-form";
import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
-import { FirebaseUIError, getTranslation } from "@firebase-ui/core";
+import { FirebaseUIError, getTranslation } from "@firebase-oss/ui-core";
import { useState } from "react";
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form";
diff --git a/packages/shadcn/src/registry/email-link-auth-screen.test.tsx b/packages/shadcn/src/registry/email-link-auth-screen.test.tsx
index 48879ecaf..439009a82 100644
--- a/packages/shadcn/src/registry/email-link-auth-screen.test.tsx
+++ b/packages/shadcn/src/registry/email-link-auth-screen.test.tsx
@@ -18,8 +18,8 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { EmailLinkAuthScreen } from "./email-link-auth-screen";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
vi.mock("./email-link-auth-form", () => ({
EmailLinkAuthForm: ({ onEmailSent, onSignIn }: any) => (
diff --git a/packages/shadcn/src/registry/email-link-auth-screen.tsx b/packages/shadcn/src/registry/email-link-auth-screen.tsx
index 27c4beafa..1ba16af6e 100644
--- a/packages/shadcn/src/registry/email-link-auth-screen.tsx
+++ b/packages/shadcn/src/registry/email-link-auth-screen.tsx
@@ -1,7 +1,7 @@
"use client";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI, type EmailLinkAuthScreenProps } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI, type EmailLinkAuthScreenProps } from "@firebase-oss/ui-react";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { Separator } from "@/components/ui/separator";
diff --git a/packages/shadcn/src/registry/facebook-sign-in-button.test.tsx b/packages/shadcn/src/registry/facebook-sign-in-button.test.tsx
index 26b33f532..44a986215 100644
--- a/packages/shadcn/src/registry/facebook-sign-in-button.test.tsx
+++ b/packages/shadcn/src/registry/facebook-sign-in-button.test.tsx
@@ -18,9 +18,9 @@ import { describe, it, expect, vi, afterEach, beforeEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { FacebookSignInButton } from "./facebook-sign-in-button";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
+import { registerLocale } from "@firebase-oss/ui-translations";
import { FacebookAuthProvider } from "firebase/auth";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
vi.mock("./oauth-button", () => ({
OAuthButton: ({ provider, children, themed }: any) => (
@@ -32,8 +32,8 @@ vi.mock("./oauth-button", () => ({
),
}));
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
FacebookLogo: ({ className, ...props }: any) => (
diff --git a/packages/shadcn/src/registry/facebook-sign-in-button.tsx b/packages/shadcn/src/registry/facebook-sign-in-button.tsx
index 6708ab607..0947e1ad9 100644
--- a/packages/shadcn/src/registry/facebook-sign-in-button.tsx
+++ b/packages/shadcn/src/registry/facebook-sign-in-button.tsx
@@ -1,8 +1,8 @@
"use client";
import { FacebookAuthProvider } from "firebase/auth";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI, type FacebookSignInButtonProps, FacebookLogo } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI, type FacebookSignInButtonProps, FacebookLogo } from "@firebase-oss/ui-react";
import { OAuthButton } from "@/registry/oauth-button";
diff --git a/packages/shadcn/src/registry/forgot-password-auth-form.test.tsx b/packages/shadcn/src/registry/forgot-password-auth-form.test.tsx
index b450c9b5f..b363e14e1 100644
--- a/packages/shadcn/src/registry/forgot-password-auth-form.test.tsx
+++ b/packages/shadcn/src/registry/forgot-password-auth-form.test.tsx
@@ -18,21 +18,21 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, fireEvent, cleanup, waitFor } from "@testing-library/react";
import { ForgotPasswordAuthForm } from "./forgot-password-auth-form";
import { act } from "react";
-import { useForgotPasswordAuthFormAction } from "@firebase-ui/react";
+import { useForgotPasswordAuthFormAction } from "@firebase-oss/ui-react";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
-vi.mock("@firebase-ui/core", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-core", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
sendPasswordResetEmail: vi.fn(),
};
});
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
useForgotPasswordAuthFormAction: vi.fn(),
diff --git a/packages/shadcn/src/registry/forgot-password-auth-form.tsx b/packages/shadcn/src/registry/forgot-password-auth-form.tsx
index e050d262f..4eed22c7c 100644
--- a/packages/shadcn/src/registry/forgot-password-auth-form.tsx
+++ b/packages/shadcn/src/registry/forgot-password-auth-form.tsx
@@ -1,15 +1,15 @@
"use client";
-import type { ForgotPasswordAuthFormSchema } from "@firebase-ui/core";
+import type { ForgotPasswordAuthFormSchema } from "@firebase-oss/ui-core";
import {
useForgotPasswordAuthFormAction,
useForgotPasswordAuthFormSchema,
useUI,
type ForgotPasswordAuthFormProps,
-} from "@firebase-ui/react";
+} from "@firebase-oss/ui-react";
import { useForm } from "react-hook-form";
import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
-import { FirebaseUIError, getTranslation } from "@firebase-ui/core";
+import { FirebaseUIError, getTranslation } from "@firebase-oss/ui-core";
import { useState } from "react";
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form";
diff --git a/packages/shadcn/src/registry/forgot-password-auth-screen.test.tsx b/packages/shadcn/src/registry/forgot-password-auth-screen.test.tsx
index fd65e7469..c5302aef0 100644
--- a/packages/shadcn/src/registry/forgot-password-auth-screen.test.tsx
+++ b/packages/shadcn/src/registry/forgot-password-auth-screen.test.tsx
@@ -18,8 +18,8 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { ForgotPasswordAuthScreen } from "./forgot-password-auth-screen";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
vi.mock("./forgot-password-auth-form", () => ({
ForgotPasswordAuthForm: ({ onPasswordSent, onBackToSignInClick }: any) => (
diff --git a/packages/shadcn/src/registry/forgot-password-auth-screen.tsx b/packages/shadcn/src/registry/forgot-password-auth-screen.tsx
index 15d1336bd..a392152d7 100644
--- a/packages/shadcn/src/registry/forgot-password-auth-screen.tsx
+++ b/packages/shadcn/src/registry/forgot-password-auth-screen.tsx
@@ -1,7 +1,7 @@
"use client";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI, type ForgotPasswordAuthScreenProps } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI, type ForgotPasswordAuthScreenProps } from "@firebase-oss/ui-react";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { ForgotPasswordAuthForm } from "@/registry/forgot-password-auth-form";
diff --git a/packages/shadcn/src/registry/github-sign-in-button.test.tsx b/packages/shadcn/src/registry/github-sign-in-button.test.tsx
index 49a7feac9..439e598d8 100644
--- a/packages/shadcn/src/registry/github-sign-in-button.test.tsx
+++ b/packages/shadcn/src/registry/github-sign-in-button.test.tsx
@@ -18,9 +18,9 @@ import { describe, it, expect, vi, afterEach, beforeEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { GitHubSignInButton } from "./github-sign-in-button";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
+import { registerLocale } from "@firebase-oss/ui-translations";
import { GithubAuthProvider } from "firebase/auth";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
vi.mock("./oauth-button", () => ({
OAuthButton: ({ provider, children, themed }: any) => (
@@ -32,8 +32,8 @@ vi.mock("./oauth-button", () => ({
),
}));
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
GitHubLogo: ({ className, ...props }: any) => (
diff --git a/packages/shadcn/src/registry/github-sign-in-button.tsx b/packages/shadcn/src/registry/github-sign-in-button.tsx
index 80f70ca89..be663b856 100644
--- a/packages/shadcn/src/registry/github-sign-in-button.tsx
+++ b/packages/shadcn/src/registry/github-sign-in-button.tsx
@@ -1,8 +1,8 @@
"use client";
import { GithubAuthProvider } from "firebase/auth";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI, type GitHubSignInButtonProps, GitHubLogo } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI, type GitHubSignInButtonProps, GitHubLogo } from "@firebase-oss/ui-react";
import { OAuthButton } from "@/registry/oauth-button";
diff --git a/packages/shadcn/src/registry/google-sign-in-button.test.tsx b/packages/shadcn/src/registry/google-sign-in-button.test.tsx
index 1f6ec87be..674579398 100644
--- a/packages/shadcn/src/registry/google-sign-in-button.test.tsx
+++ b/packages/shadcn/src/registry/google-sign-in-button.test.tsx
@@ -18,9 +18,9 @@ import { describe, it, expect, vi, afterEach, beforeEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { GoogleSignInButton } from "./google-sign-in-button";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
+import { registerLocale } from "@firebase-oss/ui-translations";
import { GoogleAuthProvider } from "firebase/auth";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
vi.mock("./oauth-button", () => ({
OAuthButton: ({ provider, children, themed }: any) => (
@@ -32,8 +32,8 @@ vi.mock("./oauth-button", () => ({
),
}));
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
GoogleLogo: ({ className, ...props }: any) => (
diff --git a/packages/shadcn/src/registry/google-sign-in-button.tsx b/packages/shadcn/src/registry/google-sign-in-button.tsx
index 7d5c213ac..354cc6821 100644
--- a/packages/shadcn/src/registry/google-sign-in-button.tsx
+++ b/packages/shadcn/src/registry/google-sign-in-button.tsx
@@ -1,8 +1,8 @@
"use client";
import { GoogleAuthProvider } from "firebase/auth";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI, type GoogleSignInButtonProps, GoogleLogo } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI, type GoogleSignInButtonProps, GoogleLogo } from "@firebase-oss/ui-react";
import { OAuthButton } from "@/registry/oauth-button";
diff --git a/packages/shadcn/src/registry/microsoft-sign-in-button.test.tsx b/packages/shadcn/src/registry/microsoft-sign-in-button.test.tsx
index 26bf20538..677bf8817 100644
--- a/packages/shadcn/src/registry/microsoft-sign-in-button.test.tsx
+++ b/packages/shadcn/src/registry/microsoft-sign-in-button.test.tsx
@@ -18,9 +18,9 @@ import { describe, it, expect, vi, afterEach, beforeEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { MicrosoftSignInButton } from "./microsoft-sign-in-button";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
+import { registerLocale } from "@firebase-oss/ui-translations";
import { OAuthProvider } from "firebase/auth";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
vi.mock("./oauth-button", () => ({
OAuthButton: ({ provider, children, themed }: any) => (
@@ -32,8 +32,8 @@ vi.mock("./oauth-button", () => ({
),
}));
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
MicrosoftLogo: ({ className, ...props }: any) => (
diff --git a/packages/shadcn/src/registry/microsoft-sign-in-button.tsx b/packages/shadcn/src/registry/microsoft-sign-in-button.tsx
index 69c460104..d9edec518 100644
--- a/packages/shadcn/src/registry/microsoft-sign-in-button.tsx
+++ b/packages/shadcn/src/registry/microsoft-sign-in-button.tsx
@@ -1,8 +1,8 @@
"use client";
import { OAuthProvider } from "firebase/auth";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI, type MicrosoftSignInButtonProps, MicrosoftLogo } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI, type MicrosoftSignInButtonProps, MicrosoftLogo } from "@firebase-oss/ui-react";
import { OAuthButton } from "@/registry/oauth-button";
diff --git a/packages/shadcn/src/registry/multi-factor-auth-assertion-form.test.tsx b/packages/shadcn/src/registry/multi-factor-auth-assertion-form.test.tsx
index 6911068a7..425ebd407 100644
--- a/packages/shadcn/src/registry/multi-factor-auth-assertion-form.test.tsx
+++ b/packages/shadcn/src/registry/multi-factor-auth-assertion-form.test.tsx
@@ -2,7 +2,7 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, fireEvent, cleanup } from "@testing-library/react";
import { MultiFactorAuthAssertionForm } from "./multi-factor-auth-assertion-form";
import { createFirebaseUIProvider, createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
+import { registerLocale } from "@firebase-oss/ui-translations";
import { FactorId, MultiFactorResolver, PhoneMultiFactorGenerator, TotpMultiFactorGenerator } from "firebase/auth";
vi.mock("@/registry/sms-multi-factor-assertion-form", () => ({
diff --git a/packages/shadcn/src/registry/multi-factor-auth-assertion-form.tsx b/packages/shadcn/src/registry/multi-factor-auth-assertion-form.tsx
index 98669e2ab..86afa783c 100644
--- a/packages/shadcn/src/registry/multi-factor-auth-assertion-form.tsx
+++ b/packages/shadcn/src/registry/multi-factor-auth-assertion-form.tsx
@@ -2,8 +2,8 @@
import { PhoneMultiFactorGenerator, TotpMultiFactorGenerator, type MultiFactorInfo } from "firebase/auth";
import { type ComponentProps, useState } from "react";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI } from "@firebase-oss/ui-react";
import { SmsMultiFactorAssertionForm } from "./sms-multi-factor-assertion-form";
import { TotpMultiFactorAssertionForm } from "./totp-multi-factor-assertion-form";
diff --git a/packages/shadcn/src/registry/multi-factor-auth-enrollment-form.test.tsx b/packages/shadcn/src/registry/multi-factor-auth-enrollment-form.test.tsx
index 850f5f696..fd78d9260 100644
--- a/packages/shadcn/src/registry/multi-factor-auth-enrollment-form.test.tsx
+++ b/packages/shadcn/src/registry/multi-factor-auth-enrollment-form.test.tsx
@@ -18,8 +18,8 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, fireEvent, cleanup } from "@testing-library/react";
import { MultiFactorAuthEnrollmentForm } from "./multi-factor-auth-enrollment-form";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
import { FactorId } from "firebase/auth";
vi.mock("./sms-multi-factor-enrollment-form", () => ({
diff --git a/packages/shadcn/src/registry/multi-factor-auth-enrollment-form.tsx b/packages/shadcn/src/registry/multi-factor-auth-enrollment-form.tsx
index eaf6a6899..779d1115f 100644
--- a/packages/shadcn/src/registry/multi-factor-auth-enrollment-form.tsx
+++ b/packages/shadcn/src/registry/multi-factor-auth-enrollment-form.tsx
@@ -2,8 +2,8 @@
import { type ComponentProps, useState } from "react";
import { FactorId } from "firebase/auth";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI } from "@firebase-oss/ui-react";
import { SmsMultiFactorEnrollmentForm } from "@/registry/sms-multi-factor-enrollment-form";
import { TotpMultiFactorEnrollmentForm } from "@/registry/totp-multi-factor-enrollment-form";
diff --git a/packages/shadcn/src/registry/multi-factor-auth-enrollment-screen.test.tsx b/packages/shadcn/src/registry/multi-factor-auth-enrollment-screen.test.tsx
index 8096da31f..e97276b4c 100644
--- a/packages/shadcn/src/registry/multi-factor-auth-enrollment-screen.test.tsx
+++ b/packages/shadcn/src/registry/multi-factor-auth-enrollment-screen.test.tsx
@@ -18,8 +18,8 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { MultiFactorAuthEnrollmentScreen } from "./multi-factor-auth-enrollment-screen";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
vi.mock("./multi-factor-auth-enrollment-form", () => ({
MultiFactorAuthEnrollmentForm: ({ onEnrollment }: { onEnrollment?: () => void }) => (
diff --git a/packages/shadcn/src/registry/multi-factor-auth-enrollment-screen.tsx b/packages/shadcn/src/registry/multi-factor-auth-enrollment-screen.tsx
index 7a320e8d4..d0b54ba79 100644
--- a/packages/shadcn/src/registry/multi-factor-auth-enrollment-screen.tsx
+++ b/packages/shadcn/src/registry/multi-factor-auth-enrollment-screen.tsx
@@ -1,8 +1,8 @@
"use client";
import React, { type PropsWithChildren } from "react";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI, type MultiFactorAuthEnrollmentFormProps } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI, type MultiFactorAuthEnrollmentFormProps } from "@firebase-oss/ui-react";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { MultiFactorAuthEnrollmentForm } from "@/registry/multi-factor-auth-enrollment-form";
diff --git a/packages/shadcn/src/registry/oauth-button.test.tsx b/packages/shadcn/src/registry/oauth-button.test.tsx
index 978c91725..7d447ce18 100644
--- a/packages/shadcn/src/registry/oauth-button.test.tsx
+++ b/packages/shadcn/src/registry/oauth-button.test.tsx
@@ -18,15 +18,15 @@ import { describe, it, expect, vi, afterEach, beforeEach } from "vitest";
import { render, screen, fireEvent, cleanup } from "@testing-library/react";
import { OAuthButton } from "./oauth-button";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
+import { registerLocale } from "@firebase-oss/ui-translations";
import type { AuthProvider, UserCredential } from "firebase/auth";
import { ComponentProps } from "react";
-import { signInWithProvider } from "@firebase-ui/core";
+import { signInWithProvider } from "@firebase-oss/ui-core";
import { FirebaseError } from "firebase/app";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
-vi.mock("@firebase-ui/core", async (importOriginal) => {
+vi.mock("@firebase-oss/ui-core", async (importOriginal) => {
const mod = await importOriginal();
return {
...(mod as object),
@@ -142,7 +142,7 @@ describe("", () => {
});
it("displays FirebaseUIError message when FirebaseUIError occurs", async () => {
- const { FirebaseUIError } = await import("@firebase-ui/core");
+ const { FirebaseUIError } = await import("@firebase-oss/ui-core");
const mockSignInWithProvider = vi.mocked(signInWithProvider);
const ui = createMockUI();
const mockError = new FirebaseUIError(
@@ -211,7 +211,7 @@ describe("", () => {
});
it("clears error when button is clicked again", async () => {
- const { FirebaseUIError } = await import("@firebase-ui/core");
+ const { FirebaseUIError } = await import("@firebase-oss/ui-core");
const mockSignInWithProvider = vi.mocked(signInWithProvider);
const ui = createMockUI();
diff --git a/packages/shadcn/src/registry/oauth-button.tsx b/packages/shadcn/src/registry/oauth-button.tsx
index dd5d3740e..8c0d1f0ab 100644
--- a/packages/shadcn/src/registry/oauth-button.tsx
+++ b/packages/shadcn/src/registry/oauth-button.tsx
@@ -1,6 +1,6 @@
"use client";
-import { useUI, type OAuthButtonProps, useSignInWithProvider } from "@firebase-ui/react";
+import { useUI, type OAuthButtonProps, useSignInWithProvider } from "@firebase-oss/ui-react";
import { Button } from "@/components/ui/button";
export type { OAuthButtonProps };
diff --git a/packages/shadcn/src/registry/oauth-screen.test.tsx b/packages/shadcn/src/registry/oauth-screen.test.tsx
index 7126a5dbd..8bfd1d977 100644
--- a/packages/shadcn/src/registry/oauth-screen.test.tsx
+++ b/packages/shadcn/src/registry/oauth-screen.test.tsx
@@ -17,7 +17,7 @@ import { describe, it, expect, vi, afterEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { OAuthScreen } from "@/registry/oauth-screen";
import { CreateFirebaseUIProvider, createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
+import { registerLocale } from "@firebase-oss/ui-translations";
import { MultiFactorResolver } from "firebase/auth";
vi.mock("@/registry/policies", () => ({
diff --git a/packages/shadcn/src/registry/oauth-screen.tsx b/packages/shadcn/src/registry/oauth-screen.tsx
index 7b9172e6f..de42028cc 100644
--- a/packages/shadcn/src/registry/oauth-screen.tsx
+++ b/packages/shadcn/src/registry/oauth-screen.tsx
@@ -1,8 +1,8 @@
"use client";
-import { getTranslation } from "@firebase-ui/core";
+import { getTranslation } from "@firebase-oss/ui-core";
import { type PropsWithChildren } from "react";
-import { useUI } from "@firebase-ui/react";
+import { useUI } from "@firebase-oss/ui-react";
import { Card, CardContent, CardHeader, CardDescription, CardTitle } from "@/components/ui/card";
import { Policies } from "@/registry/policies";
import { MultiFactorAuthAssertionForm } from "@/registry/multi-factor-auth-assertion-form";
diff --git a/packages/shadcn/src/registry/phone-auth-form.test.tsx b/packages/shadcn/src/registry/phone-auth-form.test.tsx
index e26768453..6e28269c5 100644
--- a/packages/shadcn/src/registry/phone-auth-form.test.tsx
+++ b/packages/shadcn/src/registry/phone-auth-form.test.tsx
@@ -18,17 +18,17 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, fireEvent, cleanup, waitFor } from "@testing-library/react";
import { PhoneAuthForm } from "./phone-auth-form";
import { act } from "react";
-import { usePhoneNumberFormAction, useVerifyPhoneNumberFormAction, useUI } from "@firebase-ui/react";
+import { usePhoneNumberFormAction, useVerifyPhoneNumberFormAction, useUI } from "@firebase-oss/ui-react";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
import { User, UserCredential } from "firebase/auth";
-import { FirebaseUI, FirebaseUIError } from "@firebase-ui/core";
+import { FirebaseUI, FirebaseUIError } from "@firebase-oss/ui-core";
import { FirebaseError } from "firebase/app";
-import { ERROR_CODE_MAP } from "@firebase-ui/translations";
+import { ERROR_CODE_MAP } from "@firebase-oss/ui-translations";
-vi.mock("@firebase-ui/core", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-core", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
verifyPhoneNumber: vi.fn(),
@@ -49,8 +49,8 @@ vi.mock("@firebase-ui/core", async (importOriginal) => {
};
});
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
usePhoneNumberFormAction: vi.fn().mockReturnValue(vi.fn().mockResolvedValue("verification-id-123")),
diff --git a/packages/shadcn/src/registry/phone-auth-form.tsx b/packages/shadcn/src/registry/phone-auth-form.tsx
index a13b284b3..0a1c59bec 100644
--- a/packages/shadcn/src/registry/phone-auth-form.tsx
+++ b/packages/shadcn/src/registry/phone-auth-form.tsx
@@ -9,7 +9,7 @@ import {
useRecaptchaVerifier,
useUI,
useVerifyPhoneNumberFormAction,
-} from "@firebase-ui/react";
+} from "@firebase-oss/ui-react";
import { useState } from "react";
import type { UserCredential } from "firebase/auth";
import { useRef } from "react";
@@ -21,7 +21,7 @@ import {
getTranslation,
type PhoneAuthNumberFormSchema,
type PhoneAuthVerifyFormSchema,
-} from "@firebase-ui/core";
+} from "@firebase-oss/ui-core";
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form";
import { Input } from "@/components/ui/input";
diff --git a/packages/shadcn/src/registry/phone-auth-screen.test.tsx b/packages/shadcn/src/registry/phone-auth-screen.test.tsx
index 06d665895..6764d8009 100644
--- a/packages/shadcn/src/registry/phone-auth-screen.test.tsx
+++ b/packages/shadcn/src/registry/phone-auth-screen.test.tsx
@@ -17,7 +17,7 @@ import { describe, it, expect, vi, afterEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { PhoneAuthScreen } from "@/registry/phone-auth-screen";
import { CreateFirebaseUIProvider, createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
+import { registerLocale } from "@firebase-oss/ui-translations";
import { MultiFactorResolver } from "firebase/auth";
vi.mock("@/registry/phone-auth-form", () => ({
diff --git a/packages/shadcn/src/registry/phone-auth-screen.tsx b/packages/shadcn/src/registry/phone-auth-screen.tsx
index 23cdd3235..28c17fc11 100644
--- a/packages/shadcn/src/registry/phone-auth-screen.tsx
+++ b/packages/shadcn/src/registry/phone-auth-screen.tsx
@@ -1,8 +1,8 @@
"use client";
import type { PropsWithChildren } from "react";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI } from "@firebase-oss/ui-react";
import { Card, CardContent, CardHeader, CardDescription, CardTitle } from "@/components/ui/card";
import { Separator } from "@/components/ui/separator";
import { PhoneAuthForm, type PhoneAuthFormProps } from "@/registry/phone-auth-form";
diff --git a/packages/shadcn/src/registry/policies.test.tsx b/packages/shadcn/src/registry/policies.test.tsx
index 805360723..c7358f35e 100644
--- a/packages/shadcn/src/registry/policies.test.tsx
+++ b/packages/shadcn/src/registry/policies.test.tsx
@@ -18,11 +18,11 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, fireEvent, cleanup } from "@testing-library/react";
import { Policies } from "./policies";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
-vi.mock("@firebase-ui/core", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-core", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
signInWithEmailAndPassword: vi.fn(),
diff --git a/packages/shadcn/src/registry/policies.tsx b/packages/shadcn/src/registry/policies.tsx
index 970cf37ff..3c352ea90 100644
--- a/packages/shadcn/src/registry/policies.tsx
+++ b/packages/shadcn/src/registry/policies.tsx
@@ -1,6 +1,6 @@
import { cn } from "@/lib/utils";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI, PolicyContext } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI, PolicyContext } from "@firebase-oss/ui-react";
import { cloneElement, useContext } from "react";
export function Policies() {
diff --git a/packages/shadcn/src/registry/redirect-error.tsx b/packages/shadcn/src/registry/redirect-error.tsx
index db0fa5272..6beaeed37 100644
--- a/packages/shadcn/src/registry/redirect-error.tsx
+++ b/packages/shadcn/src/registry/redirect-error.tsx
@@ -1,6 +1,6 @@
"use client";
-import { useRedirectError } from "@firebase-ui/react";
+import { useRedirectError } from "@firebase-oss/ui-react";
export function RedirectError() {
const error = useRedirectError();
diff --git a/packages/shadcn/src/registry/sign-in-auth-form.test.tsx b/packages/shadcn/src/registry/sign-in-auth-form.test.tsx
index 634c21116..1536e5a11 100644
--- a/packages/shadcn/src/registry/sign-in-auth-form.test.tsx
+++ b/packages/shadcn/src/registry/sign-in-auth-form.test.tsx
@@ -18,22 +18,22 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, fireEvent, cleanup, waitFor } from "@testing-library/react";
import { SignInAuthForm } from "./sign-in-auth-form";
import { act } from "react";
-import { useSignInAuthFormAction } from "@firebase-ui/react";
+import { useSignInAuthFormAction } from "@firebase-oss/ui-react";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
import { UserCredential } from "firebase/auth";
-vi.mock("@firebase-ui/core", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-core", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
signInWithEmailAndPassword: vi.fn(),
};
});
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
useSignInAuthFormAction: vi.fn(),
diff --git a/packages/shadcn/src/registry/sign-in-auth-form.tsx b/packages/shadcn/src/registry/sign-in-auth-form.tsx
index 6950c8f1a..a2bea703a 100644
--- a/packages/shadcn/src/registry/sign-in-auth-form.tsx
+++ b/packages/shadcn/src/registry/sign-in-auth-form.tsx
@@ -1,10 +1,10 @@
"use client";
-import type { SignInAuthFormSchema } from "@firebase-ui/core";
-import { useSignInAuthFormAction, useSignInAuthFormSchema, useUI, type SignInAuthFormProps } from "@firebase-ui/react";
+import type { SignInAuthFormSchema } from "@firebase-oss/ui-core";
+import { useSignInAuthFormAction, useSignInAuthFormSchema, useUI, type SignInAuthFormProps } from "@firebase-oss/ui-react";
import { useForm } from "react-hook-form";
import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
-import { FirebaseUIError, getTranslation } from "@firebase-ui/core";
+import { FirebaseUIError, getTranslation } from "@firebase-oss/ui-core";
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form";
import { Input } from "@/components/ui/input";
diff --git a/packages/shadcn/src/registry/sign-in-auth-screen.test.tsx b/packages/shadcn/src/registry/sign-in-auth-screen.test.tsx
index 2bfd6a688..82f53f09c 100644
--- a/packages/shadcn/src/registry/sign-in-auth-screen.test.tsx
+++ b/packages/shadcn/src/registry/sign-in-auth-screen.test.tsx
@@ -18,8 +18,8 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { SignInAuthScreen } from "./sign-in-auth-screen";
import { createMockUI, createFirebaseUIProvider } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
vi.mock("./sign-in-auth-form", () => ({
SignInAuthForm: ({ onSignIn, onForgotPasswordClick, onRegisterClick }: any) => (
diff --git a/packages/shadcn/src/registry/sign-in-auth-screen.tsx b/packages/shadcn/src/registry/sign-in-auth-screen.tsx
index aed39534e..3eba44c34 100644
--- a/packages/shadcn/src/registry/sign-in-auth-screen.tsx
+++ b/packages/shadcn/src/registry/sign-in-auth-screen.tsx
@@ -1,7 +1,7 @@
"use client";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI, type SignInAuthScreenProps } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI, type SignInAuthScreenProps } from "@firebase-oss/ui-react";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { Separator } from "@/components/ui/separator";
diff --git a/packages/shadcn/src/registry/sign-up-auth-form.test.tsx b/packages/shadcn/src/registry/sign-up-auth-form.test.tsx
index 48de25791..ef6c20113 100644
--- a/packages/shadcn/src/registry/sign-up-auth-form.test.tsx
+++ b/packages/shadcn/src/registry/sign-up-auth-form.test.tsx
@@ -18,22 +18,22 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, fireEvent, cleanup, waitFor } from "@testing-library/react";
import { SignUpAuthForm } from "./sign-up-auth-form";
import { act } from "react";
-import { useSignUpAuthFormAction, useRequireDisplayName } from "@firebase-ui/react";
+import { useSignUpAuthFormAction, useRequireDisplayName } from "@firebase-oss/ui-react";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
import { UserCredential } from "firebase/auth";
-vi.mock("@firebase-ui/core", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-core", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
createUserWithEmailAndPassword: vi.fn(),
};
});
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
useSignUpAuthFormAction: vi.fn(),
diff --git a/packages/shadcn/src/registry/sign-up-auth-form.tsx b/packages/shadcn/src/registry/sign-up-auth-form.tsx
index dc8ea78c1..1916d3439 100644
--- a/packages/shadcn/src/registry/sign-up-auth-form.tsx
+++ b/packages/shadcn/src/registry/sign-up-auth-form.tsx
@@ -1,16 +1,16 @@
"use client";
-import type { SignUpAuthFormSchema } from "@firebase-ui/core";
+import type { SignUpAuthFormSchema } from "@firebase-oss/ui-core";
import {
useSignUpAuthFormAction,
useSignUpAuthFormSchema,
useUI,
type SignUpAuthFormProps,
useRequireDisplayName,
-} from "@firebase-ui/react";
+} from "@firebase-oss/ui-react";
import { useForm } from "react-hook-form";
import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
-import { FirebaseUIError, getTranslation } from "@firebase-ui/core";
+import { FirebaseUIError, getTranslation } from "@firebase-oss/ui-core";
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form";
import { Input } from "@/components/ui/input";
diff --git a/packages/shadcn/src/registry/sign-up-auth-screen.test.tsx b/packages/shadcn/src/registry/sign-up-auth-screen.test.tsx
index 6f7b6a3b8..ddd79a89a 100644
--- a/packages/shadcn/src/registry/sign-up-auth-screen.test.tsx
+++ b/packages/shadcn/src/registry/sign-up-auth-screen.test.tsx
@@ -18,8 +18,8 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { SignUpAuthScreen } from "./sign-up-auth-screen";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
vi.mock("./sign-up-auth-form", () => ({
SignUpAuthForm: ({ onSignUp, onBackToSignInClick }: any) => (
diff --git a/packages/shadcn/src/registry/sign-up-auth-screen.tsx b/packages/shadcn/src/registry/sign-up-auth-screen.tsx
index 6cd47be9d..bd8769a6d 100644
--- a/packages/shadcn/src/registry/sign-up-auth-screen.tsx
+++ b/packages/shadcn/src/registry/sign-up-auth-screen.tsx
@@ -1,7 +1,7 @@
"use client";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI, type SignUpAuthScreenProps } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI, type SignUpAuthScreenProps } from "@firebase-oss/ui-react";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { Separator } from "@/components/ui/separator";
diff --git a/packages/shadcn/src/registry/sms-multi-factor-assertion-form.test.tsx b/packages/shadcn/src/registry/sms-multi-factor-assertion-form.test.tsx
index f5f0cd417..c4d9a9e44 100644
--- a/packages/shadcn/src/registry/sms-multi-factor-assertion-form.test.tsx
+++ b/packages/shadcn/src/registry/sms-multi-factor-assertion-form.test.tsx
@@ -2,13 +2,13 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, fireEvent, cleanup, waitFor } from "@testing-library/react";
import { SmsMultiFactorAssertionForm } from "./sms-multi-factor-assertion-form";
import { createFirebaseUIProvider, createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
+import { registerLocale } from "@firebase-oss/ui-translations";
import { PhoneMultiFactorGenerator } from "firebase/auth";
-import { verifyPhoneNumber, signInWithMultiFactorAssertion } from "@firebase-ui/core";
+import { verifyPhoneNumber, signInWithMultiFactorAssertion } from "@firebase-oss/ui-core";
import {
useSmsMultiFactorAssertionPhoneFormAction,
useSmsMultiFactorAssertionVerifyFormAction,
-} from "@firebase-ui/react";
+} from "@firebase-oss/ui-react";
import React from "react";
// Mock input-otp components to prevent window access issues
@@ -25,8 +25,8 @@ vi.mock("@/components/ui/input-otp", () => ({
}),
}));
-vi.mock("@firebase-ui/core", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-core", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
verifyPhoneNumber: vi.fn(),
@@ -34,8 +34,8 @@ vi.mock("@firebase-ui/core", async (importOriginal) => {
};
});
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
useRecaptchaVerifier: () => ({
diff --git a/packages/shadcn/src/registry/sms-multi-factor-assertion-form.tsx b/packages/shadcn/src/registry/sms-multi-factor-assertion-form.tsx
index 35ee4e52b..b2d420bd7 100644
--- a/packages/shadcn/src/registry/sms-multi-factor-assertion-form.tsx
+++ b/packages/shadcn/src/registry/sms-multi-factor-assertion-form.tsx
@@ -3,14 +3,14 @@
import { useRef, useState } from "react";
import { type MultiFactorInfo } from "firebase/auth";
-import { FirebaseUIError, getTranslation } from "@firebase-ui/core";
+import { FirebaseUIError, getTranslation } from "@firebase-oss/ui-core";
import {
useMultiFactorPhoneAuthVerifyFormSchema,
useRecaptchaVerifier,
useUI,
useSmsMultiFactorAssertionPhoneFormAction,
useSmsMultiFactorAssertionVerifyFormAction,
-} from "@firebase-ui/react";
+} from "@firebase-oss/ui-react";
import { useForm } from "react-hook-form";
import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
diff --git a/packages/shadcn/src/registry/sms-multi-factor-enrollment-form.test.tsx b/packages/shadcn/src/registry/sms-multi-factor-enrollment-form.test.tsx
index fc3b43828..28005c80a 100644
--- a/packages/shadcn/src/registry/sms-multi-factor-enrollment-form.test.tsx
+++ b/packages/shadcn/src/registry/sms-multi-factor-enrollment-form.test.tsx
@@ -17,8 +17,8 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, fireEvent, cleanup, waitFor } from "@testing-library/react";
import { SmsMultiFactorEnrollmentForm } from "./sms-multi-factor-enrollment-form";
import { createFirebaseUIProvider, createMockUIWithUser } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { verifyPhoneNumber, enrollWithMultiFactorAssertion } from "@firebase-ui/core";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { verifyPhoneNumber, enrollWithMultiFactorAssertion } from "@firebase-oss/ui-core";
import React from "react";
// Mock input-otp components to prevent window access issues
@@ -32,16 +32,16 @@ vi.mock("@/components/ui/input-otp", () => ({
}));
// Mock the schema hooks
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
useRecaptchaVerifier: vi.fn().mockReturnValue({}),
};
});
-vi.mock("@firebase-ui/core", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-core", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
verifyPhoneNumber: vi.fn(),
diff --git a/packages/shadcn/src/registry/sms-multi-factor-enrollment-form.tsx b/packages/shadcn/src/registry/sms-multi-factor-enrollment-form.tsx
index 0eec29e4d..47afdd773 100644
--- a/packages/shadcn/src/registry/sms-multi-factor-enrollment-form.tsx
+++ b/packages/shadcn/src/registry/sms-multi-factor-enrollment-form.tsx
@@ -8,14 +8,14 @@ import {
formatPhoneNumber,
getTranslation,
verifyPhoneNumber,
-} from "@firebase-ui/core";
+} from "@firebase-oss/ui-core";
import { CountrySelector, type CountrySelectorRef } from "@/registry/country-selector";
import {
useMultiFactorPhoneAuthNumberFormSchema,
useMultiFactorPhoneAuthVerifyFormSchema,
useRecaptchaVerifier,
useUI,
-} from "@firebase-ui/react";
+} from "@firebase-oss/ui-react";
import { useForm } from "react-hook-form";
import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
diff --git a/packages/shadcn/src/registry/totp-multi-factor-assertion-form.test.tsx b/packages/shadcn/src/registry/totp-multi-factor-assertion-form.test.tsx
index 71acc8afd..adba84f62 100644
--- a/packages/shadcn/src/registry/totp-multi-factor-assertion-form.test.tsx
+++ b/packages/shadcn/src/registry/totp-multi-factor-assertion-form.test.tsx
@@ -2,9 +2,9 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, fireEvent, cleanup, waitFor } from "@testing-library/react";
import { TotpMultiFactorAssertionForm } from "./totp-multi-factor-assertion-form";
import { createFirebaseUIProvider, createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
+import { registerLocale } from "@firebase-oss/ui-translations";
import { TotpMultiFactorGenerator } from "firebase/auth";
-import { useTotpMultiFactorAssertionFormAction } from "@firebase-ui/react";
+import { useTotpMultiFactorAssertionFormAction } from "@firebase-oss/ui-react";
import React from "react";
// Mock input-otp components to prevent window access issues
@@ -21,8 +21,8 @@ vi.mock("@/components/ui/input-otp", () => ({
}),
}));
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
useTotpMultiFactorAssertionFormAction: vi.fn(),
diff --git a/packages/shadcn/src/registry/totp-multi-factor-assertion-form.tsx b/packages/shadcn/src/registry/totp-multi-factor-assertion-form.tsx
index 7410c1b2f..e8d35548b 100644
--- a/packages/shadcn/src/registry/totp-multi-factor-assertion-form.tsx
+++ b/packages/shadcn/src/registry/totp-multi-factor-assertion-form.tsx
@@ -1,12 +1,12 @@
"use client";
import { type MultiFactorInfo } from "firebase/auth";
-import { FirebaseUIError, getTranslation } from "@firebase-ui/core";
+import { FirebaseUIError, getTranslation } from "@firebase-oss/ui-core";
import {
useMultiFactorTotpAuthVerifyFormSchema,
useUI,
useTotpMultiFactorAssertionFormAction,
-} from "@firebase-ui/react";
+} from "@firebase-oss/ui-react";
import { useForm } from "react-hook-form";
import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
diff --git a/packages/shadcn/src/registry/totp-multi-factor-enrollment-form.test.tsx b/packages/shadcn/src/registry/totp-multi-factor-enrollment-form.test.tsx
index eb210d519..bbc8350e7 100644
--- a/packages/shadcn/src/registry/totp-multi-factor-enrollment-form.test.tsx
+++ b/packages/shadcn/src/registry/totp-multi-factor-enrollment-form.test.tsx
@@ -17,8 +17,8 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
import { render, screen, fireEvent, cleanup, waitFor } from "@testing-library/react";
import { TotpMultiFactorEnrollmentForm } from "./totp-multi-factor-enrollment-form";
import { createFirebaseUIProvider, createMockUIWithUser } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
-import { generateTotpSecret, generateTotpQrCode, enrollWithMultiFactorAssertion } from "@firebase-ui/core";
+import { registerLocale } from "@firebase-oss/ui-translations";
+import { generateTotpSecret, generateTotpQrCode, enrollWithMultiFactorAssertion } from "@firebase-oss/ui-core";
import React from "react";
// Mock input-otp components to prevent window access issues
@@ -35,8 +35,8 @@ vi.mock("@/components/ui/input-otp", () => ({
}),
}));
-vi.mock("@firebase-ui/core", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-core", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
generateTotpSecret: vi.fn(),
diff --git a/packages/shadcn/src/registry/totp-multi-factor-enrollment-form.tsx b/packages/shadcn/src/registry/totp-multi-factor-enrollment-form.tsx
index b37571d23..d56a2697c 100644
--- a/packages/shadcn/src/registry/totp-multi-factor-enrollment-form.tsx
+++ b/packages/shadcn/src/registry/totp-multi-factor-enrollment-form.tsx
@@ -8,12 +8,12 @@ import {
generateTotpQrCode,
generateTotpSecret,
getTranslation,
-} from "@firebase-ui/core";
+} from "@firebase-oss/ui-core";
import {
useMultiFactorTotpAuthNumberFormSchema,
useMultiFactorTotpAuthVerifyFormSchema,
useUI,
-} from "@firebase-ui/react";
+} from "@firebase-oss/ui-react";
import { useForm } from "react-hook-form";
import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
diff --git a/packages/shadcn/src/registry/twitter-sign-in-button.test.tsx b/packages/shadcn/src/registry/twitter-sign-in-button.test.tsx
index ad175ea5a..05267bb53 100644
--- a/packages/shadcn/src/registry/twitter-sign-in-button.test.tsx
+++ b/packages/shadcn/src/registry/twitter-sign-in-button.test.tsx
@@ -18,9 +18,9 @@ import { describe, it, expect, vi, afterEach, beforeEach } from "vitest";
import { render, screen, cleanup } from "@testing-library/react";
import { TwitterSignInButton } from "./twitter-sign-in-button";
import { createMockUI } from "../../tests/utils";
-import { registerLocale } from "@firebase-ui/translations";
+import { registerLocale } from "@firebase-oss/ui-translations";
import { TwitterAuthProvider } from "firebase/auth";
-import { FirebaseUIProvider } from "@firebase-ui/react";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
vi.mock("./oauth-button", () => ({
OAuthButton: ({ provider, children, themed }: any) => (
@@ -32,8 +32,8 @@ vi.mock("./oauth-button", () => ({
),
}));
-vi.mock("@firebase-ui/react", async (importOriginal) => {
- const mod = await importOriginal();
+vi.mock("@firebase-oss/ui-react", async (importOriginal) => {
+ const mod = await importOriginal();
return {
...mod,
TwitterLogo: ({ className, ...props }: any) => (
diff --git a/packages/shadcn/src/registry/twitter-sign-in-button.tsx b/packages/shadcn/src/registry/twitter-sign-in-button.tsx
index 8f42bbb4a..de981cbc5 100644
--- a/packages/shadcn/src/registry/twitter-sign-in-button.tsx
+++ b/packages/shadcn/src/registry/twitter-sign-in-button.tsx
@@ -1,8 +1,8 @@
"use client";
import { TwitterAuthProvider } from "firebase/auth";
-import { getTranslation } from "@firebase-ui/core";
-import { useUI, type TwitterSignInButtonProps, TwitterLogo } from "@firebase-ui/react";
+import { getTranslation } from "@firebase-oss/ui-core";
+import { useUI, type TwitterSignInButtonProps, TwitterLogo } from "@firebase-oss/ui-react";
import { OAuthButton } from "@/registry/oauth-button";
diff --git a/packages/shadcn/tests/utils.tsx b/packages/shadcn/tests/utils.tsx
index ced93dc2f..f38cc83ff 100644
--- a/packages/shadcn/tests/utils.tsx
+++ b/packages/shadcn/tests/utils.tsx
@@ -1,9 +1,9 @@
import type { FirebaseApp } from "firebase/app";
import type { Auth } from "firebase/auth";
-import { enUs } from "@firebase-ui/translations";
-import { FirebaseUIProvider } from "@firebase-ui/react";
-import { Behavior, FirebaseUIOptions, initializeUI } from "@firebase-ui/core";
-import { FirebaseUIStore } from "@firebase-ui/core";
+import { enUs } from "@firebase-oss/ui-translations";
+import { FirebaseUIProvider } from "@firebase-oss/ui-react";
+import { Behavior, FirebaseUIOptions, initializeUI } from "@firebase-oss/ui-core";
+import { FirebaseUIStore } from "@firebase-oss/ui-core";
import { vi } from "vitest";
export function createMockUI(overrides?: Partial) {
diff --git a/packages/shadcn/tsconfig.json b/packages/shadcn/tsconfig.json
index 2a150020f..b24344581 100644
--- a/packages/shadcn/tsconfig.json
+++ b/packages/shadcn/tsconfig.json
@@ -8,8 +8,8 @@
"paths": {
"@/*": ["./src/*"],
"@/tests/*": ["./tests/*"],
- "@firebase-ui/core": ["../core/src/index.ts"],
- "@firebase-ui/react": ["../react/src/index.ts"]
+ "@firebase-oss/ui-core": ["../core/src/index.ts"],
+ "@firebase-oss/ui-react": ["../react/src/index.ts"]
}
},
"include": ["src", "tests", "vite.config.ts", "setup-test.ts"]
diff --git a/packages/shadcn/vitest.config.ts b/packages/shadcn/vitest.config.ts
index 20a7334b6..3ccebb4c8 100644
--- a/packages/shadcn/vitest.config.ts
+++ b/packages/shadcn/vitest.config.ts
@@ -19,7 +19,7 @@ import viteConfig from "./vite.config";
export default mergeConfig(viteConfig, {
test: {
- name: "@firebase-ui/shadcn",
+ name: "@firebase-oss/ui-shadcn",
// Use the same environment as the package
environment: "jsdom",
// Include TypeScript files
diff --git a/packages/styles/GEMINI.md b/packages/styles/GEMINI.md
index 4855e83a5..00af45eb9 100644
--- a/packages/styles/GEMINI.md
+++ b/packages/styles/GEMINI.md
@@ -1,10 +1,10 @@
# Firebase UI Styles
-This document provides context for the `@firebase-ui/styles` package.
+This document provides context for the `@firebase-oss/ui-styles` package.
## Overview
-The `@firebase-ui/styles` package provides the core styling for all Firebase UI for Web components. It is framework-agnostic and offers multiple ways to be consumed.
+The `@firebase-oss/ui-styles` package provides the core styling for all Firebase UI for Web components. It is framework-agnostic and offers multiple ways to be consumed.
1. **CSS Files**: For direct use in projects. It provides different files depending on whether you use Tailwind CSS.
2. **Component Variants**: It exports utilities using `cva` (Class Variance Authority) to programmatically apply styles, which is useful when building custom components.
@@ -21,7 +21,7 @@ If your project uses Tailwind CSS, you should import the `tailwind` entry point
```css
/* In your global styles.css */
-@import "@firebase-ui/styles/tailwind";
+@import "@firebase-oss/ui-styles/tailwind";
```
### Without Tailwind CSS
@@ -30,7 +30,7 @@ If you are not using Tailwind CSS, you can import the pre-compiled distributed f
```javascript
// In your main application file
-import "@firebase-ui/styles";
+import "@firebase-oss/ui-styles";
```
## Component Variants (CVA)
@@ -44,7 +44,7 @@ Currently, it exports a `buttonVariant` helper.
Here is how you might use it in a React component:
```tsx
-import { buttonVariant, ButtonVariant } from "@firebase-ui/styles";
+import { buttonVariant, ButtonVariant } from "@firebase-oss/ui-styles";
import { type ComponentProps } from "react";
interface ButtonProps extends ComponentProps<"button"> {
diff --git a/packages/styles/README.md b/packages/styles/README.md
index 97908a37a..046be2bb5 100644
--- a/packages/styles/README.md
+++ b/packages/styles/README.md
@@ -1,4 +1,4 @@
-# @firebase-ui/styles
+# @firebase-oss/ui-styles
This package contains the styles for the FirebaseUI components.
@@ -10,7 +10,7 @@ If you are using Tailwind CSS in your project, you can import the source files d
```css
@import "tailwindcss";
-@import "@firebase-ui/styles/tailwind";
+@import "@firebase-oss/ui-styles/tailwind";
```
### With CSS
@@ -18,7 +18,7 @@ If you are using Tailwind CSS in your project, you can import the source files d
Alternatively, you can import fully compiled CSS files into your project. This output contains both the tailwind styles and the FirebaseUI styles.
```jsx
-import "@firebase-ui/styles";
+import "@firebase-oss/ui-styles";
```
## Themes
@@ -27,8 +27,8 @@ The packages also exports themes which overrides the CSS variables with preset c
```css
@import "tailwindcss";
-@import "@firebase-ui/styles/tailwind";
-@import "@firebase-ui/styles/themes/brualist";
+@import "@firebase-oss/ui-styles/tailwind";
+@import "@firebase-oss/ui-styles/themes/brualist";
```
## Building
diff --git a/packages/styles/package.json b/packages/styles/package.json
index 22ce3757a..855e91fed 100644
--- a/packages/styles/package.json
+++ b/packages/styles/package.json
@@ -1,5 +1,5 @@
{
- "name": "@firebase-ui/styles",
+ "name": "@firebase-oss/ui-styles",
"version": "0.0.1",
"type": "module",
"main": "./dist/index.cjs",
diff --git a/packages/styles/vitest.config.ts b/packages/styles/vitest.config.ts
index 99fa62f88..455adb70b 100644
--- a/packages/styles/vitest.config.ts
+++ b/packages/styles/vitest.config.ts
@@ -18,7 +18,7 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- name: "@firebase-ui/styles",
+ name: "@firebase-oss/ui-styles",
environment: "jsdom",
include: ["src/**/*.{test,spec}.{js,ts}"],
exclude: ["node_modules/**/*", "dist/**/*"],
diff --git a/packages/translations/GEMINI.md b/packages/translations/GEMINI.md
index d70a165b1..bc3a4d779 100644
--- a/packages/translations/GEMINI.md
+++ b/packages/translations/GEMINI.md
@@ -1,20 +1,20 @@
# Firebase UI Translations
-This document provides context for the `@firebase-ui/translations` package.
+This document provides context for the `@firebase-oss/ui-translations` package.
## Overview
-The `@firebase-ui/translations` package provides the localization and internationalization (i18n) capabilities for the Firebase UI for Web library. It contains the translation strings for various languages and exports utilities to register and use different locales.
+The `@firebase-oss/ui-translations` package provides the localization and internationalization (i18n) capabilities for the Firebase UI for Web library. It contains the translation strings for various languages and exports utilities to register and use different locales.
-This package is a core dependency of `@firebase-ui/core`, which uses it to display all user-facing text, such as labels, messages, and errors.
+This package is a core dependency of `@firebase-oss/ui-core`, which uses it to display all user-facing text, such as labels, messages, and errors.
## Usage
-The primary way to use this package is to import a pre-registered locale and pass it to the `initializeUI` function from the `@firebase-ui/core` package.
+The primary way to use this package is to import a pre-registered locale and pass it to the `initializeUI` function from the `@firebase-oss/ui-core` package.
```typescript
-import { initializeUI } from "@firebase-ui/core";
-import { enUs } from "@firebase-ui/translations";
+import { initializeUI } from "@firebase-oss/ui-core";
+import { enUs } from "@firebase-oss/ui-translations";
import { firebaseApp } from "./firebase";
const ui = initializeUI({
@@ -49,7 +49,7 @@ To contribute a new language, you can create a new locale file and register it u
1. **Create the translation file (`fr.ts`):**
```typescript
- import { type Translations } from "@firebase-ui/translations";
+ import { type Translations } from "@firebase-oss/ui-translations";
export const fr: Translations = {
errors: {
@@ -63,8 +63,8 @@ To contribute a new language, you can create a new locale file and register it u
2. **Register and use the locale:**
```typescript
- import { initializeUI } from "@firebase-ui/core";
- import { registerLocale } from "@firebase-ui/translations";
+ import { initializeUI } from "@firebase-oss/ui-core";
+ import { registerLocale } from "@firebase-oss/ui-translations";
import { fr } from "./fr"; // Your custom locale file
const frFr = registerLocale("fr-FR", fr);
@@ -85,7 +85,7 @@ The `registerLocale` function accepts an optional third argument: a `fallback` l
```typescript
// en-gb.ts
- import { type Translations } from "@firebase-ui/translations";
+ import { type Translations } from "@firebase-oss/ui-translations";
// Only define the strings you want to override.
export const enGB: Partial = {
@@ -98,8 +98,8 @@ The `registerLocale` function accepts an optional third argument: a `fallback` l
2. **Register the locale with a fallback:**
```typescript
- import { initializeUI } from "@firebase-ui/core";
- import { registerLocale, enUs } from "@firebase-ui/translations";
+ import { initializeUI } from "@firebase-oss/ui-core";
+ import { registerLocale, enUs } from "@firebase-oss/ui-translations";
import { enGB } from "./en-gb";
// Register en-GB, with en-US as the fallback.
diff --git a/packages/translations/package.json b/packages/translations/package.json
index 34e0d9b20..a15b47a20 100644
--- a/packages/translations/package.json
+++ b/packages/translations/package.json
@@ -1,5 +1,5 @@
{
- "name": "@firebase-ui/translations",
+ "name": "@firebase-oss/ui-translations",
"version": "0.0.1",
"description": "Translations for Firebase UI",
"type": "module",
diff --git a/packages/translations/vitest.config.ts b/packages/translations/vitest.config.ts
index a2ec77be2..5f7669405 100644
--- a/packages/translations/vitest.config.ts
+++ b/packages/translations/vitest.config.ts
@@ -18,7 +18,7 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
- name: "@firebase-ui/translations",
+ name: "@firebase-oss/ui-translations",
include: ["src/**/*.{test,spec}.{js,ts}"],
exclude: ["node_modules/**/*", "dist/**/*"],
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7b8676744..c533b955e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -179,16 +179,16 @@ importers:
'@angular/ssr':
specifier: ^20.2.2
version: 20.3.7(64ca8375dbaf48ae24b53908d91cad2b)
- '@firebase-ui/angular':
+ '@firebase-oss/ui-angular':
specifier: workspace:*
version: link:../../packages/angular
- '@firebase-ui/core':
+ '@firebase-oss/ui-core':
specifier: workspace:*
version: link:../../packages/core
- '@firebase-ui/styles':
+ '@firebase-oss/ui-styles':
specifier: workspace:*
version: link:../../packages/styles
- '@firebase-ui/translations':
+ '@firebase-oss/ui-translations':
specifier: workspace:*
version: link:../../packages/translations
'@tailwindcss/postcss':
@@ -279,16 +279,16 @@ importers:
examples/nextjs:
dependencies:
- '@firebase-ui/core':
+ '@firebase-oss/ui-core':
specifier: workspace:*
version: link:../../packages/core
- '@firebase-ui/react':
+ '@firebase-oss/ui-react':
specifier: workspace:*
version: link:../../packages/react
- '@firebase-ui/styles':
+ '@firebase-oss/ui-styles':
specifier: workspace:*
version: link:../../packages/styles
- '@firebase-ui/translations':
+ '@firebase-oss/ui-translations':
specifier: workspace:*
version: link:../../packages/translations
firebase:
@@ -334,16 +334,16 @@ importers:
examples/react:
dependencies:
- '@firebase-ui/core':
+ '@firebase-oss/ui-core':
specifier: workspace:*
version: link:../../packages/core
- '@firebase-ui/react':
+ '@firebase-oss/ui-react':
specifier: workspace:*
version: link:../../packages/react
- '@firebase-ui/styles':
+ '@firebase-oss/ui-styles':
specifier: workspace:*
version: link:../../packages/styles
- '@firebase-ui/translations':
+ '@firebase-oss/ui-translations':
specifier: workspace:*
version: link:../../packages/translations
firebase:
@@ -398,13 +398,13 @@ importers:
examples/shadcn:
dependencies:
- '@firebase-ui/core':
+ '@firebase-oss/ui-core':
specifier: workspace:*
version: link:../../packages/core
- '@firebase-ui/react':
+ '@firebase-oss/ui-react':
specifier: workspace:*
version: link:../../packages/react
- '@firebase-ui/styles':
+ '@firebase-oss/ui-styles':
specifier: workspace:*
version: link:../../packages/styles
'@hookform/resolvers':
@@ -591,10 +591,10 @@ importers:
packages/angular:
dependencies:
- '@firebase-ui/core':
+ '@firebase-oss/ui-core':
specifier: workspace:*
version: link:../core
- '@firebase-ui/styles':
+ '@firebase-oss/ui-styles':
specifier: workspace:*
version: link:../styles
'@tanstack/angular-form':
@@ -694,7 +694,7 @@ importers:
packages/core:
dependencies:
- '@firebase-ui/translations':
+ '@firebase-oss/ui-translations':
specifier: workspace:*
version: link:../translations
libphonenumber-js:
@@ -740,10 +740,10 @@ importers:
packages/react:
dependencies:
- '@firebase-ui/core':
+ '@firebase-oss/ui-core':
specifier: workspace:*
version: link:../core
- '@firebase-ui/styles':
+ '@firebase-oss/ui-styles':
specifier: workspace:*
version: link:../styles
'@nanostores/react':
@@ -765,7 +765,7 @@ importers:
specifier: 'catalog:'
version: 4.1.12
devDependencies:
- '@firebase-ui/translations':
+ '@firebase-oss/ui-translations':
specifier: workspace:*
version: link:../translations
'@testing-library/jest-dom':
@@ -822,10 +822,10 @@ importers:
packages/shadcn:
dependencies:
- '@firebase-ui/core':
+ '@firebase-oss/ui-core':
specifier: workspace:*
version: link:../core
- '@firebase-ui/react':
+ '@firebase-oss/ui-react':
specifier: workspace:*
version: link:../react
'@hookform/resolvers':
@@ -865,7 +865,7 @@ importers:
specifier: 'catalog:'
version: 4.1.12
devDependencies:
- '@firebase-ui/translations':
+ '@firebase-oss/ui-translations':
specifier: workspace:*
version: link:../translations
'@tailwindcss/vite':
From 5c2263567857cc5d3bd3f35b31ff60f76eb0b43a Mon Sep 17 00:00:00 2001
From: Jeff Huleatt <3759507+jhuleatt@users.noreply.github.com>
Date: Fri, 31 Oct 2025 10:54:54 -0400
Subject: [PATCH 2/4] update readmes with new package names
---
README.md | 29 ++++++-----------------------
packages/angular/README.md | 14 +++++++++++++-
packages/react/README.md | 2 +-
packages/shadcn/README.md | 4 ++--
4 files changed, 22 insertions(+), 27 deletions(-)
diff --git a/README.md b/README.md
index bd230e912..0ce115482 100644
--- a/README.md
+++ b/README.md
@@ -10,24 +10,15 @@ FirebaseUI requires the `firebase` package to be installed:
npm install firebase
```
-**Note**: Since the packages are not yet published to npm, you must manually install them from GitHub releases. Once published, these steps will be simplified.
+### Framework-specific Installation
-### Framework-specific Installation
-
-Packages have been created for both `React` and `Angular`. For now, they're only available as direct downloads from this repository. Add the following to your `package.json` file:
+Packages have been created for both `React` and `Angular`.
React
-```json
-{
- "dependencies": {
- "@firebase-oss/ui-react": "https://github.com/firebase/firebaseui-web/raw/refs/heads/v7-alpha/releases/firebase-ui-react-0.0.1.tgz",
- "@firebase-oss/ui-core": "https://github.com/firebase/firebaseui-web/raw/refs/heads/v7-alpha/releases/firebase-ui-core-0.0.1.tgz",
- "@firebase-oss/ui-styles": "https://github.com/firebase/firebaseui-web/raw/refs/heads/v7-alpha/releases/firebase-ui-styles-0.0.1.tgz",
- "@firebase-oss/ui-translations": "https://github.com/firebase/firebaseui-web/raw/refs/heads/v7-alpha/releases/firebase-ui-translations-0.0.1.tgz"
- }
-}
+```bash
+npm install @firebase-oss/ui-react @firebase-oss/ui-core @firebase-oss/ui-styles @firebase-oss/ui-translations
```
@@ -37,16 +28,8 @@ Packages have been created for both `React` and `Angular`. For now, they're only
FirebaseUI for Angular depends on the [AngularFire](https://github.com/angular/angularfire) package:
-```json
-{
- "dependencies": {
- "@angular/fire": "^19.1.0",
- "@firebase-oss/ui-angular": "https://github.com/firebase/firebaseui-web/raw/refs/heads/v7-alpha/releases/firebase-ui-angular-0.0.1.tgz",
- "@firebase-oss/ui-core": "https://github.com/firebase/firebaseui-web/raw/refs/heads/v7-alpha/releases/firebase-ui-core-0.0.1.tgz",
- "@firebase-oss/ui-styles": "https://github.com/firebase/firebaseui-web/raw/refs/heads/v7-alpha/releases/firebase-ui-styles-0.0.1.tgz",
- "@firebase-oss/ui-translations": "https://github.com/firebase/firebaseui-web/raw/refs/heads/v7-alpha/releases/firebase-ui-translations-0.0.1.tgz"
- }
-}
+```bash
+npm install @angular/fire @firebase-oss/ui-angular @firebase-oss/ui-core @firebase-oss/ui-styles @firebase-oss/ui-translations
```
diff --git a/packages/angular/README.md b/packages/angular/README.md
index 2359a0db8..63958a267 100644
--- a/packages/angular/README.md
+++ b/packages/angular/README.md
@@ -1,4 +1,16 @@
-# FirebaseuiAngular
+# @firebase-oss/ui-angular
+
+This package contains the Angular components for FirebaseUI.
+
+## Installation
+
+Install the package from NPM:
+
+```bash
+npm install @angular/fire @firebase-oss/ui-angular @firebase-oss/ui-core @firebase-oss/ui-styles @firebase-oss/ui-translations
+```
+
+## Development
This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 19.1.0.
diff --git a/packages/react/README.md b/packages/react/README.md
index 3e789a4fe..017053015 100644
--- a/packages/react/README.md
+++ b/packages/react/README.md
@@ -20,7 +20,7 @@ If using Tailwind CSS, you can import the styles directly into your project.
```css
@import "tailwindcss";
-@import "@firebase-oss/ui-styles/src/base.css";
+@import "@firebase-oss/ui-styles/tailwind";
```
Alternatively, you can import the fully compiled CSS file into your project.
diff --git a/packages/shadcn/README.md b/packages/shadcn/README.md
index 71828c686..b67864835 100644
--- a/packages/shadcn/README.md
+++ b/packages/shadcn/README.md
@@ -27,11 +27,11 @@ npx shadcn@latest add @firebase/sign-up-auth-screen
Before consuming a component, ensure you have initalized your Firebase UI application:
```tsx
-import { initalizeUI } from '@firebase-oss/ui-core';
+import { initializeUI } from '@firebase-oss/ui-core';
import { FirebaseUIProvider } from '@firebase-oss/ui-react';
import { SignInAuthScreen } from '@/components/sign-in-auth-screen';
-const ui = initalizeUI(...);
+const ui = initializeUI(...);
function App() {
return (
From 49ca92382fa5e39443aa07bbb956bdb8a8e6f737 Mon Sep 17 00:00:00 2001
From: Jeff Huleatt <3759507+jhuleatt@users.noreply.github.com>
Date: Fri, 31 Oct 2025 11:06:20 -0400
Subject: [PATCH 3/4] prettier
---
examples/shadcn/src/components/sign-in-auth-form.tsx | 7 ++++++-
.../angular/src/lib/auth/forms/phone-auth-form.spec.ts | 7 ++++++-
.../src/auth/forms/mfa/sms-multi-factor-assertion-form.tsx | 7 ++++++-
packages/shadcn/src/registry/sign-in-auth-form.tsx | 7 ++++++-
4 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/examples/shadcn/src/components/sign-in-auth-form.tsx b/examples/shadcn/src/components/sign-in-auth-form.tsx
index 8df4ca109..31adb3bd0 100644
--- a/examples/shadcn/src/components/sign-in-auth-form.tsx
+++ b/examples/shadcn/src/components/sign-in-auth-form.tsx
@@ -1,7 +1,12 @@
"use client";
import type { SignInAuthFormSchema } from "@firebase-oss/ui-core";
-import { useSignInAuthFormAction, useSignInAuthFormSchema, useUI, type SignInAuthFormProps } from "@firebase-oss/ui-react";
+import {
+ useSignInAuthFormAction,
+ useSignInAuthFormSchema,
+ useUI,
+ type SignInAuthFormProps,
+} from "@firebase-oss/ui-react";
import { useForm } from "react-hook-form";
import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
import { FirebaseUIError, getTranslation } from "@firebase-oss/ui-core";
diff --git a/packages/angular/src/lib/auth/forms/phone-auth-form.spec.ts b/packages/angular/src/lib/auth/forms/phone-auth-form.spec.ts
index 2f8679438..2671de6af 100644
--- a/packages/angular/src/lib/auth/forms/phone-auth-form.spec.ts
+++ b/packages/angular/src/lib/auth/forms/phone-auth-form.spec.ts
@@ -49,7 +49,12 @@ describe("", () => {
let mockFirebaseUIError: any;
beforeEach(() => {
- const { verifyPhoneNumber, confirmPhoneNumber, formatPhoneNumber, FirebaseUIError } = require("@firebase-oss/ui-core");
+ const {
+ verifyPhoneNumber,
+ confirmPhoneNumber,
+ formatPhoneNumber,
+ FirebaseUIError,
+ } = require("@firebase-oss/ui-core");
const { injectRecaptchaVerifier } = require("../../tests/test-helpers");
mockVerifyPhoneNumber = verifyPhoneNumber;
mockConfirmPhoneNumber = confirmPhoneNumber;
diff --git a/packages/react/src/auth/forms/mfa/sms-multi-factor-assertion-form.tsx b/packages/react/src/auth/forms/mfa/sms-multi-factor-assertion-form.tsx
index 53501a6ef..283a7095c 100644
--- a/packages/react/src/auth/forms/mfa/sms-multi-factor-assertion-form.tsx
+++ b/packages/react/src/auth/forms/mfa/sms-multi-factor-assertion-form.tsx
@@ -6,7 +6,12 @@ import {
type RecaptchaVerifier,
} from "firebase/auth";
-import { signInWithMultiFactorAssertion, FirebaseUIError, getTranslation, verifyPhoneNumber } from "@firebase-oss/ui-core";
+import {
+ signInWithMultiFactorAssertion,
+ FirebaseUIError,
+ getTranslation,
+ verifyPhoneNumber,
+} from "@firebase-oss/ui-core";
import { form } from "~/components/form";
import {
useMultiFactorPhoneAuthNumberFormSchema,
diff --git a/packages/shadcn/src/registry/sign-in-auth-form.tsx b/packages/shadcn/src/registry/sign-in-auth-form.tsx
index a2bea703a..61d0d4c9f 100644
--- a/packages/shadcn/src/registry/sign-in-auth-form.tsx
+++ b/packages/shadcn/src/registry/sign-in-auth-form.tsx
@@ -1,7 +1,12 @@
"use client";
import type { SignInAuthFormSchema } from "@firebase-oss/ui-core";
-import { useSignInAuthFormAction, useSignInAuthFormSchema, useUI, type SignInAuthFormProps } from "@firebase-oss/ui-react";
+import {
+ useSignInAuthFormAction,
+ useSignInAuthFormSchema,
+ useUI,
+ type SignInAuthFormProps,
+} from "@firebase-oss/ui-react";
import { useForm } from "react-hook-form";
import { standardSchemaResolver } from "@hookform/resolvers/standard-schema";
import { FirebaseUIError, getTranslation } from "@firebase-oss/ui-core";
From ecfce260bb5aac5c365e0d70494beb3ff74edb13 Mon Sep 17 00:00:00 2001
From: Jeff Huleatt <3759507+jhuleatt@users.noreply.github.com>
Date: Fri, 31 Oct 2025 11:08:31 -0400
Subject: [PATCH 4/4] lint
---
packages/core/vite.config.ts | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/packages/core/vite.config.ts b/packages/core/vite.config.ts
index 6b617e5ac..3189ee4bf 100644
--- a/packages/core/vite.config.ts
+++ b/packages/core/vite.config.ts
@@ -7,7 +7,10 @@ export default defineConfig({
resolve: {
alias: {
"@firebase-oss/ui-styles": path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../styles/src"),
- "@firebase-oss/ui-translations": path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../translations/src"),
+ "@firebase-oss/ui-translations": path.resolve(
+ path.dirname(fileURLToPath(import.meta.url)),
+ "../translations/src"
+ ),
"~/tests": path.resolve(path.dirname(fileURLToPath(import.meta.url)), "./tests"),
"~": path.resolve(path.dirname(fileURLToPath(import.meta.url)), "./src"),
},