fix bug 16 and 17
Build & Push / Pipeline Tests (push) Successful in 1m53s
Test / Type Check (all packages) (push) Successful in 56s
Build & Push / Build & Push Docker Image (push) Failing after 4m53s
Test / API Unit Tests (push) Successful in 1m15s
Test / Homepage Unit Tests (push) Successful in 46s
Test / Carplace Unit Tests (push) Successful in 41s
Test / Admin Unit Tests (push) Successful in 40s
Test / Dashboard Unit Tests (push) Successful in 42s
Test / API Integration Tests (push) Successful in 1m6s

This commit is contained in:
root
2026-08-04 00:52:58 -04:00
parent 626da23c2e
commit 149806a773
72 changed files with 834 additions and 174 deletions
@@ -10,6 +10,19 @@ import { buildHomepageSignInPath } from "@/lib/dashboardPaths";
import { websiteUrl } from "@/lib/urls";
const DASHBOARD_LOGO_SRC = "/dashboard/rentaldrivego.png";
const SUBSCRIPTION_PLANS = ["STARTER", "GROWTH", "PRO"] as const;
type SubscriptionPlan = (typeof SUBSCRIPTION_PLANS)[number];
const PLAN_LABELS: Record<SubscriptionPlan, string> = {
STARTER: "Launch",
GROWTH: "Growth",
PRO: "Pro",
};
function isSubscriptionPlan(value: string | null): value is SubscriptionPlan {
return SUBSCRIPTION_PLANS.some((plan) => plan === value);
}
function notifyParent(message: Record<string, unknown>) {
if (typeof window === "undefined" || window.parent === window) return;
@@ -41,6 +54,8 @@ export default function SignUpForm({
const searchParams = useSearchParams();
const requestedLanguage = searchParams.get("lang");
const requestedTheme = searchParams.get("theme");
const requestedPlan = searchParams.get("plan");
const selectedPlan = isSubscriptionPlan(requestedPlan) ? requestedPlan : null;
const initializedFromQuery = useRef(false);
const initialLanguage =
requestedLanguage === "en" ||
@@ -151,6 +166,7 @@ export default function SignUpForm({
passwordHint: "Minimum 8 characters",
languageLabel: "Preferred language",
create: "Create account",
subscribeToPlan: "Subscribe to {plan}",
creating: "Creating\u2026",
alreadyHave: "Already have an account?",
signIn: "Sign in",
@@ -179,6 +195,7 @@ export default function SignUpForm({
passwordHint: "Minimum 8 caract\u00e8res",
languageLabel: "Langue pr\u00e9f\u00e9r\u00e9e",
create: "Cr\u00e9er un compte",
subscribeToPlan: "Sabonner à {plan}",
creating: "Cr\u00e9ation\u2026",
alreadyHave: "Vous avez d\u00e9j\u00e0 un compte ?",
signIn: "Se connecter",
@@ -214,6 +231,8 @@ export default function SignUpForm({
"\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629",
create:
"\u0623\u0646\u0634\u0626 \u062d\u0633\u0627\u0628\u064b\u0627",
subscribeToPlan:
"\u0627\u0634\u062a\u0631\u0643 \u0641\u064a {plan}",
creating:
"\u062c\u0627\u0631\u064d \u0627\u0644\u0625\u0646\u0634\u0627\u0621\u2026",
alreadyHave:
@@ -240,6 +259,9 @@ export default function SignUpForm({
language: preferredLanguage,
theme,
});
const submitLabel = selectedPlan
? dict.subscribeToPlan.replace("{plan}", PLAN_LABELS[selectedPlan])
: dict.create;
async function handleSubmit(e: React.FormEvent) {
e.preventDefault();
@@ -261,6 +283,7 @@ export default function SignUpForm({
email,
password,
preferredLanguage,
...(selectedPlan ? { subscriptionPlan: selectedPlan } : {}),
}),
});
@@ -498,7 +521,7 @@ export default function SignUpForm({
disabled={loading}
className="inline-flex w-full justify-center rounded-full bg-orange-600 px-6 py-3 text-sm font-semibold text-white transition hover:bg-orange-700 disabled:cursor-not-allowed disabled:opacity-60 dark:bg-orange-500 dark:text-white dark:hover:bg-orange-400"
>
{loading ? dict.creating : dict.create}
{loading ? dict.creating : submitLabel}
</button>
</form>