add homepage management

This commit is contained in:
root
2026-05-07 00:34:29 -04:00
parent 750ae56a29
commit c4a45c8b21
33 changed files with 4228 additions and 418 deletions
@@ -4,7 +4,6 @@ import Link from 'next/link'
import { SignIn } from '@clerk/nextjs'
import { clerkFrontendEnabled } from '@/lib/clerk'
import { useDashboardI18n } from '@/components/I18nProvider'
import PublicShell from '@/components/layout/PublicShell'
import { marketplaceUrl } from '@/lib/urls'
export default function SignInPage() {
@@ -12,14 +11,7 @@ export default function SignInPage() {
const dict = {
en: {
workspace: 'Company workspace',
body: 'Sign in to manage fleet operations, reservations, billing, team access, and performance reporting from one workspace.',
features: [
['Reservations', 'Track bookings, handoffs, availability, and customer activity without leaving the dashboard.'],
['Billing', 'Review plan status, trial timing, payment setup, and subscription changes in one place.'],
['Team access', 'Owners and staff keep separate access with role-based controls and invited employee accounts.'],
['Analytics', 'Monitor fleet usage, revenue movement, and offer performance from the operations view.'],
],
access: 'Workspace Access',
access: 'Workspace access',
signIn: 'Sign in',
useAccount: 'Use your owner or employee account to access the company workspace.',
inactive: 'Enter your workspace credentials to continue.',
@@ -30,13 +22,6 @@ export default function SignInPage() {
},
fr: {
workspace: 'Espace entreprise',
body: 'Connectez-vous pour gérer la flotte, les réservations, la facturation, laccès équipe et le reporting depuis un seul espace.',
features: [
['Réservations', 'Suivez les réservations, remises, disponibilités et activité client sans quitter le dashboard.'],
['Facturation', 'Consultez le plan, la période dessai, la configuration des paiements et les changements dabonnement.'],
['Accès équipe', 'Les propriétaires et collaborateurs ont des accès séparés avec rôles et invitations.'],
['Analytique', 'Surveillez lusage de la flotte, les revenus et la performance des offres.'],
],
access: 'Accès workspace',
signIn: 'Connexion',
useAccount: 'Utilisez votre compte propriétaire ou employé pour accéder à lespace entreprise.',
@@ -48,13 +33,6 @@ export default function SignInPage() {
},
ar: {
workspace: 'مساحة الشركة',
body: 'سجّل الدخول لإدارة الأسطول والحجوزات والفوترة ووصول الفريق والتقارير من مساحة واحدة.',
features: [
['الحجوزات', 'تابع الحجوزات والتسليمات والتوفر ونشاط العملاء من داخل اللوحة.'],
['الفوترة', 'راجع الخطة وفترة التجربة وإعدادات الدفع وتغييرات الاشتراك في مكان واحد.'],
['وصول الفريق', 'يحصل المالكون والموظفون على وصول منفصل مع أدوار ودعوات منظمة.'],
['التحليلات', 'راقب استخدام الأسطول وحركة الإيرادات وأداء العروض.'],
],
access: 'الوصول إلى المساحة',
signIn: 'تسجيل الدخول',
useAccount: 'استخدم حساب المالك أو الموظف للوصول إلى مساحة الشركة.',
@@ -67,44 +45,33 @@ export default function SignInPage() {
}[language]
return (
<PublicShell>
<main className="px-4 py-12">
<div className="mx-auto flex min-h-[calc(100vh-11rem)] max-w-6xl items-center">
<div className="grid w-full gap-10 lg:grid-cols-[1.1fr_0.9fr]">
<section className="space-y-8">
<div>
<Link href={marketplaceUrl} className="inline-block text-xs font-semibold uppercase tracking-[0.24em] text-blue-600">RentalDriveGo</Link>
<h1 className="mt-4 text-5xl font-black tracking-tight text-slate-900">{dict.workspace}</h1>
<p className="mt-4 max-w-xl text-base leading-7 text-slate-600">{dict.body}</p>
</div>
<div className="grid gap-4 sm:grid-cols-2">
{dict.features.map(([title, body]) => (
<FeatureCard key={title} title={title} body={body} />
))}
</div>
</section>
<section className="rounded-[2rem] border border-slate-200 bg-white p-8 shadow-sm">
<p className="text-xs font-semibold uppercase tracking-[0.2em] text-slate-500">{dict.access}</p>
<h2 className="mt-3 text-3xl font-black tracking-tight text-slate-900">{dict.signIn}</h2>
<p className="mt-3 text-sm leading-6 text-slate-500">{dict.useAccount}</p>
<div className="mt-8">
{clerkFrontendEnabled ? <ConfiguredSignIn /> : <FallbackSignInCard dict={dict} />}
</div>
<div className="mt-6 border-t border-slate-200 pt-6 text-sm text-slate-500">
{dict.newAccount}
<Link href="/sign-up" className="ml-1 font-semibold text-slate-900 underline decoration-slate-300 underline-offset-4">
{dict.createWorkspace}
</Link>
</div>
</section>
</div>
<main className="flex min-h-screen items-center justify-center bg-[radial-gradient(circle_at_top,#dbeafe,transparent_35%),linear-gradient(180deg,#f8fafc,white)] px-4 py-12">
<div className="w-full max-w-md">
<div className="mb-8 text-center">
<Link href={marketplaceUrl} className="text-xs font-semibold uppercase tracking-[0.24em] text-blue-600">
RentalDriveGo
</Link>
<h1 className="mt-3 text-3xl font-black tracking-tight text-slate-900">{dict.workspace}</h1>
<p className="mt-2 text-sm text-slate-500">{dict.useAccount}</p>
</div>
</main>
</PublicShell>
<section className="rounded-[2rem] border border-slate-200 bg-white p-8 shadow-sm">
<p className="text-xs font-semibold uppercase tracking-[0.2em] text-slate-500">{dict.access}</p>
<h2 className="mt-3 text-3xl font-black tracking-tight text-slate-900">{dict.signIn}</h2>
<div className="mt-8">
{clerkFrontendEnabled ? <ConfiguredSignIn /> : <FallbackSignInCard dict={dict} />}
</div>
<div className="mt-6 border-t border-slate-200 pt-6 text-sm text-slate-500">
{dict.newAccount}
<Link href="/sign-up" className="ml-1 font-semibold text-slate-900 underline decoration-slate-300 underline-offset-4">
{dict.createWorkspace}
</Link>
</div>
</section>
</div>
</main>
)
}
@@ -142,12 +109,3 @@ function FallbackSignInCard({ dict }: { dict: { inactive: string; email: string;
</div>
)
}
function FeatureCard({ title, body }: { title: string; body: string }) {
return (
<div className="rounded-[1.5rem] border border-slate-200 bg-white p-5 shadow-sm">
<h3 className="text-sm font-semibold uppercase tracking-[0.16em] text-slate-900">{title}</h3>
<p className="mt-3 text-sm leading-6 text-slate-600">{body}</p>
</div>
)
}