From 44894cb4deca3b200d641e150c0d3fb62bd3abcf Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 12 Apr 2026 01:45:55 +0000 Subject: [PATCH] fix: Linter improvements to marketers page, onboarding, and UI index https://claude.ai/code/session_01LsnvBa7HwF5hs99VZbgLGj --- .../src/components/dealix/marketers-page.tsx | 140 ++++++------------ .../src/components/dealix/onboarding-flow.tsx | 20 +-- .../frontend/src/components/ui/index.ts | 9 ++ 3 files changed, 60 insertions(+), 109 deletions(-) diff --git a/salesflow-saas/frontend/src/components/dealix/marketers-page.tsx b/salesflow-saas/frontend/src/components/dealix/marketers-page.tsx index 95829706..c3c00f24 100644 --- a/salesflow-saas/frontend/src/components/dealix/marketers-page.tsx +++ b/salesflow-saas/frontend/src/components/dealix/marketers-page.tsx @@ -98,34 +98,27 @@ function MarketersPage() { setSubmitted(true); }; - const benefitIcons = [Zap, Wrench, HeadphonesIcon, Eye]; - const benefitKeys = [ - { title: 'benefitInstantCommission', desc: 'benefitInstantCommissionDesc' }, - { title: 'benefitProTools', desc: 'benefitProToolsDesc' }, - { title: 'benefitSupport', desc: 'benefitSupportDesc' }, - { title: 'benefitTransparency', desc: 'benefitTransparencyDesc' }, + const benefits = [ + { icon: Zap, title: 'benefitInstantCommission', desc: 'benefitInstantCommissionDesc' }, + { icon: Wrench, title: 'benefitProTools', desc: 'benefitProToolsDesc' }, + { icon: HeadphonesIcon, title: 'benefitSupport', desc: 'benefitSupportDesc' }, + { icon: Eye, title: 'benefitTransparency', desc: 'benefitTransparencyDesc' }, ]; - - const stepIcons = [UserPlus, Share2, Coins]; - const stepKeys = [ - { title: 'step1Title', desc: 'step1Desc' }, - { title: 'step2Title', desc: 'step2Desc' }, - { title: 'step3Title', desc: 'step3Desc' }, + const steps = [ + { icon: UserPlus, title: 'step1Title', desc: 'step1Desc' }, + { icon: Share2, title: 'step2Title', desc: 'step2Desc' }, + { icon: Coins, title: 'step3Title', desc: 'step3Desc' }, ]; - const tiers = [ { key: 'tierBronze', desc: 'tierBronzeDesc', pct: '10%', color: 'from-amber-700 to-amber-900', badge: 'bg-amber-700/40 text-amber-300' }, { key: 'tierSilver', desc: 'tierSilverDesc', pct: '15%', color: 'from-slate-400 to-slate-600', badge: 'bg-slate-500/40 text-slate-200' }, { key: 'tierGold', desc: 'tierGoldDesc', pct: '20%', color: 'from-amber-400 to-yellow-500', badge: 'bg-amber-400/30 text-amber-200' }, ]; - - const toolIcons = [LayoutDashboard, Link2, FileText, BarChart3]; - const toolKeys = ['toolDashboard', 'toolLinks', 'toolTemplates', 'toolReports']; - - const faqs = Array.from({ length: 5 }, (_, i) => ({ - q: t(`marketersPage.faq${i + 1}Q`), - a: t(`marketersPage.faq${i + 1}A`), - })); + const tools = [ + { icon: LayoutDashboard, key: 'toolDashboard' }, { icon: Link2, key: 'toolLinks' }, + { icon: FileText, key: 'toolTemplates' }, { icon: BarChart3, key: 'toolReports' }, + ]; + const faqs = Array.from({ length: 5 }, (_, i) => ({ q: t(`marketersPage.faq${i + 1}Q`), a: t(`marketersPage.faq${i + 1}A`) })); return (
@@ -177,22 +170,15 @@ function MarketersPage() { {t('marketersPage.benefitsTitle')}
- {benefitKeys.map((bk, i) => { - const Icon = benefitIcons[i]; - return ( - -
- -
-

- {t(`marketersPage.${bk.title}`)} -

-

- {t(`marketersPage.${bk.desc}`)} -

-
- ); - })} + {benefits.map((b) => ( + +
+ +
+

{t(`marketersPage.${b.title}`)}

+

{t(`marketersPage.${b.desc}`)}

+
+ ))}
@@ -204,29 +190,16 @@ function MarketersPage() { {t('marketersPage.howItWorksTitle')}
- {stepKeys.map((sk, i) => { - const Icon = stepIcons[i]; - return ( - -
- -
- - {i + 1} - -

- {t(`marketersPage.${sk.title}`)} -

-

- {t(`marketersPage.${sk.desc}`)} -

-
- ); - })} + {steps.map((s, i) => ( + +
+ +
+ {i + 1} +

{t(`marketersPage.${s.title}`)}

+

{t(`marketersPage.${s.desc}`)}

+
+ ))}
@@ -234,22 +207,13 @@ function MarketersPage() { {/* ===== COMMISSION TIERS ===== */}
- - {t('marketersPage.tiersTitle')} - + {t('marketersPage.tiersTitle')}
{tiers.map((tier) => ( -
+
- - {t(`marketersPage.${tier.key}`)} - + {t(`marketersPage.${tier.key}`)}

{tier.pct}

{t('marketersPage.tierCommission')}

{t(`marketersPage.${tier.desc}`)}

@@ -270,22 +234,16 @@ function MarketersPage() { {[1, 2].map((n) => ( -

- {t(`marketersPage.testimonial${n}Text`)} -

+

{t(`marketersPage.testimonial${n}Text`)}

{t(`marketersPage.testimonial${n}Name`).charAt(0)}
-

- {t(`marketersPage.testimonial${n}Name`)} -

+

{t(`marketersPage.testimonial${n}Name`)}

- - {t(`marketersPage.testimonial${n}Role`)} - + {t(`marketersPage.testimonial${n}Role`)}
@@ -302,20 +260,12 @@ function MarketersPage() { {t('marketersPage.toolsTitle')} - {toolKeys.map((tk, i) => { - const Icon = toolIcons[i]; - return ( -
- -

- {t(`marketersPage.${tk}`)} -

-
- ); - })} + {tools.map((tl) => ( +
+ +

{t(`marketersPage.${tl.key}`)}

+
+ ))}
diff --git a/salesflow-saas/frontend/src/components/dealix/onboarding-flow.tsx b/salesflow-saas/frontend/src/components/dealix/onboarding-flow.tsx index 76f1def6..aa574a6b 100644 --- a/salesflow-saas/frontend/src/components/dealix/onboarding-flow.tsx +++ b/salesflow-saas/frontend/src/components/dealix/onboarding-flow.tsx @@ -45,25 +45,17 @@ function WelcomePhase({ const [step, setStep] = useState<'role' | 'industry'>('role'); const roles: { key: Role; icon: typeof UserCircle }[] = [ - { key: 'salesManager', icon: UserCircle }, - { key: 'salesRep', icon: Briefcase }, - { key: 'executive', icon: Building2 }, - { key: 'other', icon: Users }, + { key: 'salesManager', icon: UserCircle }, { key: 'salesRep', icon: Briefcase }, + { key: 'executive', icon: Building2 }, { key: 'other', icon: Users }, ]; - const industries: { key: Industry; label: string }[] = [ - { key: 'realEstate', label: t('onboarding.industryRealEstate') }, - { key: 'automotive', label: t('onboarding.industryAutomotive') }, - { key: 'healthcare', label: t('onboarding.industryHealthcare') }, - { key: 'services', label: t('onboarding.industryServices') }, + { key: 'realEstate', label: t('onboarding.industryRealEstate') }, { key: 'automotive', label: t('onboarding.industryAutomotive') }, + { key: 'healthcare', label: t('onboarding.industryHealthcare') }, { key: 'services', label: t('onboarding.industryServices') }, { key: 'other', label: t('onboarding.industryOther') }, ]; - const roleLabels: Record = { - salesManager: t('onboarding.roleSalesManager'), - salesRep: t('onboarding.roleSalesRep'), - executive: t('onboarding.roleExecutive'), - other: t('onboarding.roleOther'), + salesManager: t('onboarding.roleSalesManager'), salesRep: t('onboarding.roleSalesRep'), + executive: t('onboarding.roleExecutive'), other: t('onboarding.roleOther'), }; return ( diff --git a/salesflow-saas/frontend/src/components/ui/index.ts b/salesflow-saas/frontend/src/components/ui/index.ts index 852c7987..51589619 100644 --- a/salesflow-saas/frontend/src/components/ui/index.ts +++ b/salesflow-saas/frontend/src/components/ui/index.ts @@ -15,3 +15,12 @@ export type { BadgeProps, BadgeVariant } from './badge'; export { Sidebar, useSidebar } from './sidebar'; export type { SidebarProps, NavItem, NavSection } from './sidebar'; + +export { KpiCard } from './kpi-card'; +export type { KpiCardProps } from './kpi-card'; + +export { EmptyState } from './empty-state'; +export type { EmptyStateProps } from './empty-state'; + +export { CommandInput } from './command-input'; +export type { CommandInputProps } from './command-input';