nxtgauge-frontend-solid/src/lib/auth-intent.ts

36 lines
1.4 KiB
TypeScript
Raw Normal View History

export type CanonicalIntent = 'customer' | 'professional' | 'company' | 'job_seeker' | null;
const INTENT_KEY = 'nxtgauge_intent_v1';
export function normalizeIntent(value: string | null | undefined): CanonicalIntent {
if (!value) return null;
const normalized = value.trim().toLowerCase();
if (!normalized) return null;
if (normalized === 'customer') return 'customer';
if (normalized === 'professional' || normalized === 'pro') return 'professional';
if (normalized === 'company' || normalized === 'employer') return 'company';
if (normalized === 'job_seeker' || normalized === 'job-seeker' || normalized === 'jobseeker') return 'job_seeker';
return null;
}
export function intentToOnboardingPath(intent: CanonicalIntent): string {
if (intent === 'company') return '/signup?intent=company';
if (intent === 'job_seeker') return '/signup?intent=job_seeker';
if (intent === 'professional') return '/signup?intent=professional';
return '/signup?intent=customer';
}
export function saveCanonicalIntent(intent: CanonicalIntent): void {
if (typeof window === 'undefined') return;
if (!intent) {
window.localStorage.removeItem(INTENT_KEY);
return;
}
window.localStorage.setItem(INTENT_KEY, intent);
}
export function readCanonicalIntent(): CanonicalIntent {
if (typeof window === 'undefined') return null;
return normalizeIntent(window.localStorage.getItem(INTENT_KEY));
}