Compare commits

..

6 commits
beta ... main

Author SHA1 Message Date
3bb715f25b Merge pull request 'feat: sync missing stitch screens (Business Analytics, Orders search/avatars, Products filters/badges, Verified Bank card, Live store preview)' (#5) from beta into main
All checks were successful
Production CI/CD Pipeline / build-and-test (push) Successful in 1m8s
Production CI/CD Pipeline / deploy-prod (push) Successful in 26s
Reviewed-on: http://16.113.106.152:3000/vignesh/supplier_central_frontend/pulls/5
2026-09-10 15:01:31 +00:00
fe835eba5f Merge pull request 'beta' (#4) from beta into main
All checks were successful
Production CI/CD Pipeline / build-and-test (push) Successful in 1m8s
Production CI/CD Pipeline / deploy-prod (push) Successful in 26s
Reviewed-on: http://16.113.106.152:3000/vignesh/supplier_central_frontend/pulls/4
2026-09-10 14:52:19 +00:00
3d5ce6a1ba Merge pull request 'chore: update action references to use fully qualified URLs and upgrade checkout to v4' (#3) from beta into main
All checks were successful
Production CI/CD Pipeline / build-and-test (push) Successful in 1m6s
Production CI/CD Pipeline / deploy-prod (push) Successful in 25s
Reviewed-on: http://16.113.106.152:3000/vignesh/supplier_central_frontend/pulls/3
2026-09-10 13:32:50 +00:00
5cd7466c1b Merge pull request 'Demo site' (#2) from beta into main
Some checks failed
Production CI/CD Pipeline / build-and-test (push) Failing after 3s
Production CI/CD Pipeline / deploy-prod (push) Has been skipped
Reviewed-on: http://16.113.106.152:3000/vignesh/supplier_central_frontend/pulls/2
2026-09-10 13:13:22 +00:00
c3ed85562a Merge branch 'beta' into main
All checks were successful
Production CI/CD Pipeline / build-and-test (push) Successful in 1m14s
Production CI/CD Pipeline / deploy-prod (push) Successful in 28s
2026-09-09 19:52:41 +05:30
85bbebac88 Merge pull request 'adding production setup' (#1) from beta into main
All checks were successful
Beta CI/CD Pipeline / build-and-test (push) Successful in 1m9s
Beta CI/CD Pipeline / deploy-beta (push) Successful in 36s
Reviewed-on: http://16.113.106.152:3000/vignesh/supplier_central_frontend/pulls/1
2026-09-09 14:11:04 +00:00
17 changed files with 893 additions and 1775 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

View file

@ -20,11 +20,14 @@ function AppRouter() {
return <DashboardLayout />;
}
if (currentPage === 'home') {
return <LandingPage />;
}
return (
<div className="is-flex is-flex-direction-column" style={{ minHeight: '100vh', backgroundColor: 'var(--trad-bg)' }}>
<Header />
<main className="is-flex-grow-1">
{currentPage === 'home' && <LandingPage />}
{currentPage === 'how-it-works' && <HowItWorksPage />}
{currentPage === 'pricing' && <PricingPage />}
{currentPage === 'grow-business' && <GrowBusinessPage />}

View file

@ -1,17 +1,8 @@
import React, { useState, useEffect } from 'react';
import React from 'react';
import { useSeller } from '../../context/SellerContext';
export default function Header() {
const { currentPage, setCurrentPage, isMobileMenuOpen, setIsMobileMenuOpen, isProfileComplete } = useSeller();
const [isScrolled, setIsScrolled] = useState(false);
useEffect(() => {
const handleScroll = () => {
setIsScrolled(window.scrollY > 20);
};
window.addEventListener('scroll', handleScroll);
return () => window.removeEventListener('scroll', handleScroll);
}, []);
const handleNav = (page: any) => {
setCurrentPage(page);
@ -20,175 +11,132 @@ export default function Header() {
};
return (
<header
className={`w-full border-b border-gray-200 bg-white/95 backdrop-blur-md sticky top-0 z-50 transition-shadow duration-300 ${
isScrolled ? 'shadow-md' : 'shadow-sm'
}`}
id="main-header"
>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-3 flex items-center justify-between">
{/* Brand Logo */}
<a
className="flex items-center gap-3 group cursor-pointer"
onClick={() => handleNav('home')}
aria-label="TRADHOX Home"
>
<img
alt="TRADHOX Logo"
className="h-12 sm:h-14 md:h-16 w-auto object-contain transition-transform group-hover:scale-105"
src="/images/landing/tradhox-logo.png"
/>
</a>
<header className="trad-header-wrapper" style={{ borderBottom: '1px solid #e7ded9', background: '#ffffff', position: 'sticky', top: 0, zIndex: 90 }}>
<div className="container is-max-widescreen px-4">
<nav className="navbar" role="navigation" aria-label="main navigation" style={{ background: 'transparent', minHeight: '4.25rem' }}>
<div className="navbar-brand is-flex is-align-items-center">
<a
className="navbar-item is-clickable is-flex is-align-items-center p-0 mr-5"
onClick={() => handleNav('home')}
style={{ textDecoration: 'none' }}
>
<span className="font-serif-trad has-text-weight-bold" style={{ fontSize: '1.65rem', color: 'var(--trad-maroon)', letterSpacing: '-0.02em' }}>
TRADHOX
</span>
<span className="tag is-rounded ml-2 is-hidden-mobile" style={{ fontSize: '0.65rem', fontWeight: 700, letterSpacing: '0.08em', backgroundColor: '#f5e8e8', color: 'var(--trad-maroon)' }}>
SELLER HUB
</span>
</a>
{/* Desktop Navigation Links & Primary CTA */}
<div className="flex items-center gap-8">
<nav className="hidden lg:flex items-center space-x-8 text-sm font-medium text-slate-700">
<button
className={`hover:text-brand-maroon transition-colors font-medium cursor-pointer ${
currentPage === 'how-it-works' ? 'text-brand-maroon font-bold' : 'text-slate-700'
}`}
onClick={() => handleNav('how-it-works')}
type="button"
<a
role="button"
className={`navbar-burger ${isMobileMenuOpen ? 'is-active' : ''}`}
aria-label="menu"
aria-expanded={isMobileMenuOpen}
onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}
style={{ color: 'var(--trad-maroon)', marginLeft: 'auto' }}
>
How it works
</button>
<button
className={`hover:text-brand-maroon transition-colors font-medium cursor-pointer ${
currentPage === 'pricing' ? 'text-brand-maroon font-bold' : 'text-slate-700'
}`}
onClick={() => handleNav('pricing')}
type="button"
>
Pricing
</button>
<button
className={`hover:text-brand-maroon transition-colors font-medium cursor-pointer ${
currentPage === 'grow-business' ? 'text-brand-maroon font-bold' : 'text-slate-700'
}`}
onClick={() => handleNav('grow-business')}
type="button"
>
Grow your business
</button>
<button
className={`hover:text-brand-maroon transition-colors font-medium cursor-pointer ${
currentPage === 'contact' ? 'text-brand-maroon font-bold' : 'text-slate-700'
}`}
onClick={() => handleNav('contact')}
type="button"
>
Contact Us
</button>
<button
className={`hover:text-brand-maroon transition-colors font-semibold cursor-pointer ${
currentPage === 'login' ? 'text-brand-maroon font-bold' : 'text-slate-900'
}`}
onClick={() => handleNav('login')}
type="button"
>
Login
</button>
</nav>
{/* Action Button */}
<div className="flex items-center gap-3">
{isProfileComplete ? (
<button
className="inline-flex items-center justify-center px-4 sm:px-5 py-2 sm:py-2.5 rounded-lg text-sm font-semibold bg-brand-maroon text-white hover:bg-brand-maroonHover transition-all shadow-sm cursor-pointer"
onClick={() => handleNav('dashboard')}
type="button"
>
<i className="fa-solid fa-gauge-high mr-2"></i> Seller Dashboard
</button>
) : (
<button
className="inline-flex items-center justify-center px-4 sm:px-5 py-2 sm:py-2.5 rounded-lg text-sm font-semibold border-2 border-brand-maroon text-brand-maroon hover:bg-brand-maroon hover:text-white transition-all shadow-sm cursor-pointer active:scale-95"
onClick={() => handleNav('signup')}
type="button"
>
Become a seller
</button>
)}
{/* Mobile Burger Toggle */}
<button
aria-expanded={isMobileMenuOpen}
aria-label="Toggle navigation menu"
className="p-2 rounded-lg text-stone-600 hover:text-slate-900 hover:bg-stone-100 lg:hidden focus:outline-none cursor-pointer"
onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}
type="button"
>
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
{isMobileMenuOpen ? (
<path d="M6 18L18 6M6 6l12 12" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" />
) : (
<path d="M4 6h16M4 12h16M4 18h16" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" />
)}
</svg>
</button>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>
</div>
<div className={`navbar-menu ${isMobileMenuOpen ? 'is-active' : ''}`} style={{ backgroundColor: isMobileMenuOpen ? '#ffffff' : 'transparent', boxShadow: isMobileMenuOpen ? '0 8px 16px rgba(0,0,0,0.1)' : 'none' }}>
<div className="navbar-start is-flex-grow-1 is-justify-content-center" style={{ gap: '1.75rem' }}>
<a
className={`navbar-item is-size-6 has-text-weight-semibold trad-nav-item ${currentPage === 'home' ? 'is-active-nav' : ''}`}
onClick={() => handleNav('home')}
>
Home
</a>
<a
className={`navbar-item is-size-6 has-text-weight-semibold trad-nav-item ${currentPage === 'how-it-works' ? 'is-active-nav' : ''}`}
onClick={() => handleNav('how-it-works')}
>
How it works
</a>
<a
className={`navbar-item is-size-6 has-text-weight-semibold trad-nav-item ${currentPage === 'pricing' ? 'is-active-nav' : ''}`}
onClick={() => handleNav('pricing')}
>
Pricing
</a>
<a
className={`navbar-item is-size-6 has-text-weight-semibold trad-nav-item ${currentPage === 'grow-business' ? 'is-active-nav' : ''}`}
onClick={() => handleNav('grow-business')}
>
Grow your business
</a>
<a
className={`navbar-item is-size-6 has-text-weight-semibold trad-nav-item ${currentPage === 'contact' ? 'is-active-nav' : ''}`}
onClick={() => handleNav('contact')}
>
Contact Us
</a>
</div>
<div className="navbar-end is-flex is-align-items-center">
<div className="navbar-item">
<div className="buttons is-align-items-center mb-0">
{isProfileComplete ? (
<button
className="button is-rounded is-small has-text-weight-bold"
onClick={() => handleNav('dashboard')}
style={{ backgroundColor: 'var(--trad-maroon)', color: '#ffffff' }}
>
<i className="fa-solid fa-gauge-high mr-2"></i> Seller Dashboard
</button>
) : (
<>
<a
className="button is-ghost has-text-weight-bold mr-2"
onClick={() => handleNav('login')}
style={{ color: 'var(--trad-text-main)', textDecoration: 'none' }}
>
Login
</a>
<a
className="button is-rounded has-text-weight-bold"
onClick={() => handleNav('signup')}
style={{ border: '1.5px solid #791B2C', color: '#791B2C', background: 'transparent', borderRadius: '9999px', padding: '6px 20px', fontWeight: 600, fontSize: '0.9rem', display: 'inline-flex', alignItems: 'center', transition: 'all 0.2s' }}
>
Become a seller
</a>
</>
)}
</div>
</div>
</div>
</div>
</nav>
</div>
{/* Mobile Menu Dropdown */}
{isMobileMenuOpen && (
<div className="lg:hidden border-t border-gray-200 bg-white px-6 py-4 shadow-xl flex flex-col gap-3">
<button
className={`text-left py-2 text-sm font-medium hover:text-brand-maroon ${currentPage === 'how-it-works' ? 'text-brand-maroon font-bold' : 'text-slate-700'}`}
onClick={() => handleNav('how-it-works')}
type="button"
>
How it works
</button>
<button
className={`text-left py-2 text-sm font-medium hover:text-brand-maroon ${currentPage === 'pricing' ? 'text-brand-maroon font-bold' : 'text-slate-700'}`}
onClick={() => handleNav('pricing')}
type="button"
>
Pricing
</button>
<button
className={`text-left py-2 text-sm font-medium hover:text-brand-maroon ${currentPage === 'grow-business' ? 'text-brand-maroon font-bold' : 'text-slate-700'}`}
onClick={() => handleNav('grow-business')}
type="button"
>
Grow your business
</button>
<button
className={`text-left py-2 text-sm font-medium hover:text-brand-maroon ${currentPage === 'contact' ? 'text-brand-maroon font-bold' : 'text-slate-700'}`}
onClick={() => handleNav('contact')}
type="button"
>
Contact Us
</button>
<button
className={`text-left py-2 text-sm font-semibold hover:text-brand-maroon ${currentPage === 'login' ? 'text-brand-maroon font-bold' : 'text-slate-900'}`}
onClick={() => handleNav('login')}
type="button"
>
Login
</button>
<div className="pt-2 border-t border-gray-100">
{isProfileComplete ? (
<button
className="w-full text-center py-2.5 rounded-lg text-sm font-semibold bg-brand-maroon text-white hover:bg-brand-maroonHover transition-all shadow-sm"
onClick={() => handleNav('dashboard')}
type="button"
>
<i className="fa-solid fa-gauge-high mr-2"></i> Seller Dashboard
</button>
) : (
<button
className="w-full text-center py-2.5 rounded-lg text-sm font-semibold border-2 border-brand-maroon text-brand-maroon hover:bg-brand-maroon hover:text-white transition-all shadow-sm"
onClick={() => handleNav('signup')}
type="button"
>
Become a seller
</button>
)}
</div>
</div>
)}
<style>{`
.trad-nav-item {
color: #4b4746 !important;
transition: color 0.15s ease;
background: transparent !important;
}
.trad-nav-item:hover, .trad-nav-item.is-active-nav {
color: var(--trad-maroon) !important;
}
@media screen and (min-width: 1024px) {
.trad-nav-item {
position: relative;
padding: 0.5rem 0.25rem;
}
.trad-nav-item.is-active-nav::after {
content: '';
position: absolute;
bottom: 0px;
left: 0;
right: 0;
height: 2px;
background-color: var(--trad-maroon);
}
}
`}</style>
</header>
);
}

View file

@ -1,535 +1,184 @@
import React, { useState } from 'react';
import React from 'react';
import { useSeller } from '../../context/SellerContext';
export default function GrowBusinessPage() {
const { setCurrentPage } = useSeller();
const [activeFaq, setActiveFaq] = useState<number | null>(null);
const initiatives = [
{
id: 1,
title: 'Curated Artisan Showcases',
category: 'Advertising',
tag: 'Marketing',
icon: 'fa-bullhorn',
tagColor: '#FBECEE',
textColor: '#791B2C',
desc: 'Get featured on festive curation pages (Diwali, Pongal, National Handloom Day), thematic catalogs, and heritage storytelling reels distributed to verified buyers across India.',
features: [
'Seasonal festive marketing campaigns with zero sponsor fees',
'Featured placement on Tradhox homepage curated artisan collections',
'Social media spotlight reels celebrating your workshop technique'
]
desc: 'Get featured on festive curation pages (Diwali, Pongal, Handloom Day), thematic catalogs, and heritage story reels distributed to verified buyers.'
},
{
id: 2,
title: 'Craft Analytics & Trends',
category: 'Analytics',
tag: 'Intelligence',
icon: 'fa-chart-line',
tagColor: '#EDF0FB',
textColor: '#1B2667',
desc: 'Understand which designs, materials, and colors are trending across metro cities. Optimize your workshop production schedule with data-backed regional demand forecasts.',
features: [
'Real-time views, wishlist counts, and buyer conversion data',
'Seasonal color and craft motifs popularity indexes',
'Fair pricing elasticity insights across domestic & overseas markets'
]
desc: 'Understand which designs, materials, and colors are trending across metro cities. Optimize your inventory with data-backed demand forecasts.'
},
{
id: 3,
title: '1-on-1 Cluster Mentorship',
category: 'Account management',
tag: 'Support',
icon: 'fa-user-group',
tagColor: '#EDF7F5',
textColor: '#1B675C',
desc: 'Work directly with dedicated craft managers who assist with professional product photography tips, SKU descriptions, and GI (Geographical Indication) certifications.',
features: [
'Assistance with GI tag registration & government artisan cards',
'Professional product photography and catalog composition guidelines',
'Direct WhatsApp support channel with your regional craft coordinator'
]
desc: 'Work directly with dedicated craft managers who assist with professional product photography tips, SKU descriptions, and GI certifications.'
},
{
id: 4,
title: 'Storage & Fulfillment',
category: 'Storage & fulfillment',
title: 'Safe Storage & Fast Dispatch',
tag: 'Logistics',
icon: 'fa-warehouse',
tagColor: '#FFF8E6',
textColor: '#8C660D',
desc: 'Store inventory in secure regional facilities or dispatch straight from your village workshop. Enjoy seamless doorstep pickups covering 15,000+ pin codes.',
features: [
'Automated 1-click airway bill (AWB) and packaging label creation',
'Full transit insurance on all delicate ceramics, brass, and fine weaves',
'2448 hour rapid dispatch tracking with automated customer SMS'
]
desc: 'Store inventory in secure regional facilities or dispatch straight from your workshop. Enjoy seamless doorstep pickups covering 15,000+ pin codes.'
},
{
title: 'Global Export Facilitation',
tag: 'Export Ready',
icon: 'fa-earth-americas',
desc: 'Expand your reach to international art lovers and Indian diaspora with simplified customs paperwork and discounted international air freight.'
},
{
title: 'Direct Patron Relationships',
tag: 'Community',
icon: 'fa-comments',
desc: 'Connect your personal story with connoisseurs. Share weaving traditions, generational techniques, and receive custom bespoke craft commissions.'
}
];
const clusterStories = [
{
id: 'jaipur',
title: 'Jaipur Blue Pottery',
state: 'Rajasthan',
tag: 'GI Tagged Heritage',
stat: '+140%',
statLabel: 'Order Volume Growth',
desc: 'Master artisans in Kot Jewar connected directly with architecture studios and home decor patrons, expanding beyond local tourist footfall.',
img: '/images/clusters/jaipur-pottery.png'
},
{
id: 'moradabad',
title: 'Moradabad Brassware',
state: 'Uttar Pradesh',
tag: 'ODOP Specialty',
stat: '+85%',
statLabel: 'Direct Maker Realization',
desc: 'Generational metal casting families eliminated four layers of export middlemen, retaining fair remuneration for hand-engraved brass decor.',
img: '/images/clusters/moradabad-brass.png'
},
{
id: 'jute',
title: 'Bengal Sustainable Jute & Bamboo',
state: 'West Bengal',
tag: 'Eco-Aligned Craft',
stat: '3,200+',
statLabel: 'Conscious Patrons Reached',
desc: 'Rural self-help groups crafting biodegradable lifestyle bags and bamboo homeware reached corporate gifting and mindful urban buyers nationwide.',
img: '/images/clusters/sustainable-jute.png'
}
];
const criteriaList = [
{
title: 'Authentic Handcrafted Production',
desc: 'Products must be created through traditional handcrafting, handloom, casting, or artisanal techniques rather than mass mechanized factories.'
},
{
title: 'Verifiable Artisan Identity',
desc: 'Artisan ID card (Pehchan card), Handloom mark, GI cluster certificate, cooperative affiliation, or workshop registration.'
},
{
title: 'Fair Pricing & Ethical Making',
desc: 'Commitment to genuine natural materials, non-toxic dyes where applicable, and fair wage distribution for contributing workshop weavers and crafters.'
},
{
title: 'Safe Workshop Dispatch',
desc: 'Ability to safely package items for courier pickup using standard protective or eco-friendly honeycomb paper wrap.'
}
];
const faqs = [
{
q: 'What is the Maker Onboarding Accelerator on Tradhox?',
a: 'Our foundational onboarding accelerator guarantees zero listing fees, zero setup costs, free professional photography auditing, and priority inclusion in festive marketing curations for the first 10,000 registered Indian artisans.'
},
{
q: 'Do I need to pay upfront for festive exhibitions & spotlights?',
a: 'No. Tradhox does not sell sponsored product slots. All featured placements during Diwali, Handloom Day, and seasonal craft exhibitions are editorial and based strictly on authenticity and craft excellence.'
},
{
q: 'How does Tradhox help with GI (Geographical Indication) tagging?',
a: 'Our dedicated cluster mentorship team works with state artisan boards, weaver cooperatives, and intellectual property facilitators to assist verified makers in obtaining and displaying authorized GI certificates on their storefronts.'
},
{
q: 'Can our cooperative or Self-Help Group (SHG) register as a collective?',
a: 'Yes! Tradhox fully supports registered societies, producer companies, SHGs, and weaver federations with collective storefronts, multiple maker bios, and centralized bank settlement.'
}
];
const toggleFaq = (idx: number) => {
setActiveFaq(activeFaq === idx ? null : idx);
};
return (
<div className="grow-business-page" style={{ minHeight: '100vh', backgroundColor: '#FCF9F8' }}>
{/* Top Breadcrumb */}
<div className="px-4 py-3" style={{ borderBottom: '1px solid #ECE7E4', backgroundColor: '#FFFFFF' }}>
<div className="container is-max-widescreen">
<nav className="breadcrumb is-small mb-0" aria-label="breadcrumbs">
<ul>
<li>
<a
onClick={() => { setCurrentPage('home'); window.scrollTo(0, 0); }}
className="has-text-grey"
style={{ textDecoration: 'none' }}
>
Home
</a>
</li>
<li className="is-active">
<a aria-current="page" className="has-text-weight-bold" style={{ color: 'var(--trad-maroon)' }}>
Grow your business
</a>
</li>
</ul>
</nav>
</div>
</div>
{/* Hero Section */}
<section className="py-6 px-4" style={{ background: 'linear-gradient(180deg, #FBF8F6 0%, #FCF9F8 100%)', borderBottom: '1px solid #E7DED9' }}>
<div className="container is-max-desktop has-text-centered py-4">
<div className="is-inline-flex is-align-items-center mb-3" style={{ gap: '0.5rem', backgroundColor: '#FBECEE', color: '#791B2C', borderRadius: '9999px', padding: '6px 16px', fontWeight: 700, fontSize: '0.8rem', letterSpacing: '0.06em' }}>
<i className="fa-solid fa-seedling"></i>
<span>Early Maker Initiative</span>
</div>
<h1 className="title is-1 font-serif-trad mb-4" style={{ color: 'var(--trad-maroon)', fontSize: '2.8rem', lineHeight: 1.2 }}>
<div className="grow-business-page has-background-white-ter" style={{ minHeight: '100vh' }}>
{/* Hero */}
<section className="py-6 px-4" style={{ background: 'linear-gradient(180deg, #f7eeee 0%, #fcf9f8 100%)', borderBottom: '1px solid #e7ded9' }}>
<div className="container is-max-desktop has-text-centered py-5">
<span className="tag is-rounded is-small mb-3" style={{ backgroundColor: '#f2dede', color: 'var(--trad-maroon)', fontWeight: 700, letterSpacing: '0.08em' }}>
ACCELERATOR &amp; SCALE PROGRAMMES
</span>
<h1 className="title is-1 font-serif-trad mb-4" style={{ color: 'var(--trad-maroon)', fontSize: '2.75rem' }}>
Scale Your Authentic Artisan Brand With Tradhox
</h1>
<p className="subtitle is-5 has-text-grey-dark mx-auto mb-6" style={{ maxWidth: '780px', lineHeight: 1.65 }}>
<p className="subtitle is-5 has-text-grey-dark mx-auto mb-6" style={{ maxWidth: '750px', lineHeight: 1.6 }}>
Unlock tailored marketing campaigns, comprehensive analytics, dedicated maker account mentorship, and streamlined logistics designed specifically for heritage craftsmen, GI-tagged clusters, and regional creators.
</p>
<div className="is-flex is-justify-content-center is-align-items-center mb-5" style={{ gap: '1rem', flexWrap: 'wrap' }}>
<button
className="button is-rounded is-large has-text-weight-bold px-6"
onClick={() => { setCurrentPage('signup'); window.scrollTo(0, 0); }}
style={{ backgroundColor: 'var(--trad-maroon)', color: '#ffffff', border: 'none', boxShadow: '0 8px 24px rgba(103,27,38,0.25)' }}
>
Start Growing Today <i className="fa-solid fa-arrow-right ml-3"></i>
</button>
<button
className="button is-rounded is-large has-text-weight-bold px-6"
onClick={() => {
const initElem = document.getElementById('growth-initiatives');
if (initElem) initElem.scrollIntoView({ behavior: 'smooth' });
}}
style={{ backgroundColor: '#FFFFFF', color: 'var(--trad-maroon)', border: '1.5px solid var(--trad-maroon)' }}
>
Explore Initiatives <i className="fa-solid fa-chart-line ml-2"></i>
</button>
<div className="is-flex is-justify-content-center is-align-items-center is-flex-wrap-wrap mb-5" style={{ gap: '1.25rem' }}>
<span className="tag is-light is-rounded has-text-weight-bold" style={{ color: 'var(--trad-maroon)', backgroundColor: '#faeef0' }}>
Zero listing fee · Guaranteed direct payouts
</span>
<span className="tag is-light is-rounded has-text-weight-bold" style={{ color: 'var(--trad-navy)', backgroundColor: '#edf0fb' }}>
Dedicated Maker Mentorship
</span>
<span className="tag is-light is-rounded has-text-weight-bold" style={{ color: 'var(--trad-teal)', backgroundColor: '#edf7f5' }}>
GI &amp; Cluster Certification Support
</span>
</div>
<button
className="button is-large is-rounded has-text-weight-bold px-6"
onClick={() => { setCurrentPage('signup'); window.scrollTo(0, 0); }}
style={{ backgroundColor: 'var(--trad-maroon)', color: '#ffffff', border: 'none', boxShadow: '0 8px 24px rgba(103,27,38,0.2)' }}
>
Start Growing Today <i className="fa-solid fa-arrow-right ml-3"></i>
</button>
</div>
</section>
{/* Impact Stats Banner */}
<section className="py-5 px-4" style={{ backgroundColor: '#FFFFFF', borderBottom: '1px solid #ECE7E4' }}>
<section className="py-5 px-4" style={{ backgroundColor: '#ffffff', borderBottom: '1px solid #e7ded9' }}>
<div className="container is-max-widescreen">
<div className="columns is-mobile is-multiline has-text-centered">
<div className="column is-3-desktop is-6-mobile py-3">
<div className="column is-3-desktop is-6-mobile">
<p className="title is-2 mb-1" style={{ color: 'var(--trad-maroon)', fontWeight: 800 }}>Day 1</p>
<p className="has-text-grey is-size-6">Direct Storefront Setup</p>
</div>
<div className="column is-3-desktop is-6-mobile py-3">
<div className="column is-3-desktop is-6-mobile">
<p className="title is-2 mb-1" style={{ color: 'var(--trad-teal)', fontWeight: 800 }}>1-on-1</p>
<p className="has-text-grey is-size-6">Dedicated Craft Mentorship</p>
</div>
<div className="column is-3-desktop is-6-mobile py-3">
<div className="column is-3-desktop is-6-mobile">
<p className="title is-2 mb-1" style={{ color: 'var(--trad-navy)', fontWeight: 800 }}>100%</p>
<p className="has-text-grey is-size-6">Direct Artisan Bank Payouts</p>
</div>
<div className="column is-3-desktop is-6-mobile py-3">
<div className="column is-3-desktop is-6-mobile">
<p className="title is-2 mb-1" style={{ color: 'var(--trad-bronze)', fontWeight: 800 }}>0</p>
<p className="has-text-grey is-size-6">Zero Listing Fee Forever</p>
<p className="has-text-grey is-size-6">Upfront Setup &amp; Joining Cost</p>
</div>
</div>
</div>
</section>
{/* Specialized Growth Initiatives */}
<section id="growth-initiatives" className="py-6 px-4">
{/* Growth Initiatives Grid */}
<section className="py-6 px-4">
<div className="container is-max-widescreen">
<div className="has-text-centered mb-6">
<span className="has-text-weight-bold is-uppercase" style={{ color: 'var(--trad-bronze)', letterSpacing: '0.1em', fontSize: '0.85rem' }}>
SCALING TOOLKIT
Specialized Initiatives
</span>
<h2 className="title is-2 font-serif-trad mt-2 mb-3" style={{ color: 'var(--trad-maroon)' }}>
Specialized Growth Initiatives
</h2>
<p className="has-text-grey-dark mx-auto" style={{ maxWidth: '680px' }}>
Designed hand-in-hand with craft guilds to remove barriers between traditional workshops and conscious consumers nationwide.
</p>
</div>
<div className="columns is-multiline">
{initiatives.map((item) => (
<div key={item.id} className="column is-6-tablet">
<div
className="box p-6 is-flex is-flex-direction-column"
style={{
height: '100%',
borderRadius: '20px',
border: '1px solid #ECE7E4',
backgroundColor: '#FFFFFF',
boxShadow: '0 4px 16px rgba(0,0,0,0.03)'
}}
>
<div className="is-flex is-justify-content-between is-align-items-center mb-4">
<div
style={{
width: '52px',
height: '52px',
borderRadius: '14px',
backgroundColor: item.tagColor,
color: item.textColor,
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
fontSize: '1.4rem'
}}
>
<i className={`fa-solid ${item.icon}`}></i>
</div>
<span
className="tag is-rounded has-text-weight-bold"
style={{ backgroundColor: item.tagColor, color: item.textColor, fontSize: '0.78rem' }}
>
{item.category}
</span>
</div>
<h3 className="title is-4 font-serif-trad mb-3" style={{ color: '#2B2523' }}>
{item.title}
</h3>
<p className="has-text-grey-dark mb-4 is-size-6" style={{ lineHeight: 1.65 }}>
{item.desc}
</p>
<div className="mt-auto pt-3" style={{ borderTop: '1px solid #F0ECE9' }}>
<ul className="mb-0" style={{ listStyleType: 'none', paddingLeft: 0 }}>
{item.features.map((f, fi) => (
<li key={fi} className="is-flex is-align-items-center mb-2 is-size-7 has-text-grey-dark" style={{ gap: '0.5rem' }}>
<i className="fa-solid fa-check" style={{ color: 'var(--trad-teal)', fontSize: '0.8rem' }}></i>
<span>{f}</span>
</li>
))}
</ul>
</div>
</div>
</div>
))}
</div>
</div>
</section>
{/* Every Advantage Built Into Your Storefront */}
<section className="section py-8 px-4" style={{ backgroundColor: '#FAF8F5', borderTop: '1px solid #ECE7E4', borderBottom: '1px solid #ECE7E4' }}>
<div className="container is-max-widescreen">
<div className="has-text-centered mb-6">
<span className="has-text-weight-bold is-uppercase" style={{ color: 'var(--trad-teal)', letterSpacing: '0.1em', fontSize: '0.82rem' }}>
OUR COMMITMENT TO MAKERS
</span>
<h2 className="title is-2 font-serif-trad mt-2 mb-3" style={{ color: '#1A1A1A' }}>
<h2 className="title is-2 font-serif-trad mt-2" style={{ color: 'var(--trad-maroon)' }}>
Every Advantage Built Into Your Storefront
</h2>
<p className="has-text-grey-dark mx-auto" style={{ maxWidth: '640px' }}>
Designed with genuine cultural respect and operational simplicity to empower regional creators.
<p className="has-text-grey-dark">
From catalog digitisation to global shipping, we provide the infrastructure so authentic traditions thrive.
</p>
</div>
<div className="columns is-multiline">
<div className="column is-4-desktop is-12-mobile">
<div className="box p-5" style={{ height: '100%', borderRadius: '16px', border: '1px solid #E7E3DA', backgroundColor: '#FFFFFF' }}>
<div style={{ fontSize: '1.85rem', fontWeight: 800, color: 'var(--trad-maroon)', letterSpacing: '-0.01em' }}>Priority</div>
<div style={{ fontSize: '1rem', fontWeight: 700, color: '#1A1A1A', marginTop: '4px' }}>Direct Catalog Discovery</div>
<p className="is-size-6 mt-3" style={{ color: '#564243', lineHeight: 1.6 }}>
Organic search visibility and curated craft cluster spotlights designed to connect your authentic creations with discerning buyers across India.
</p>
</div>
</div>
<div className="column is-4-desktop is-12-mobile">
<div className="box p-5" style={{ height: '100%', borderRadius: '16px', border: '1px solid #E7E3DA', backgroundColor: '#FFFFFF' }}>
<div style={{ fontSize: '1.85rem', fontWeight: 800, color: 'var(--trad-teal)', letterSpacing: '-0.01em' }}>Verified</div>
<div style={{ fontSize: '1rem', fontWeight: 700, color: '#1A1A1A', marginTop: '4px' }}>Heritage Provenance</div>
<p className="is-size-6 mt-3" style={{ color: '#564243', lineHeight: 1.6 }}>
Build lasting customer loyalty through verified craft authenticity badges and direct maker storytelling highlighting generational technique.
</p>
</div>
</div>
<div className="column is-4-desktop is-12-mobile">
<div className="box p-5" style={{ height: '100%', borderRadius: '16px', border: '1px solid #E7E3DA', backgroundColor: '#FFFFFF' }}>
<div style={{ fontSize: '1.85rem', fontWeight: 800, color: 'var(--trad-navy)', letterSpacing: '-0.01em' }}>Doorstep</div>
<div style={{ fontSize: '1rem', fontWeight: 700, color: '#1A1A1A', marginTop: '4px' }}>Simplified Dispatch</div>
<p className="is-size-6 mt-3" style={{ color: '#564243', lineHeight: 1.6 }}>
Hassle-free doorstep logistics and protective packaging with Product Fulfillment by Tradhox across 15,000+ pin codes in India.
</p>
</div>
</div>
</div>
</div>
</section>
{/* Proven Impact Across Craft Clusters */}
<section className="py-6 px-4" style={{ backgroundColor: '#FAF8F6', borderTop: '1px solid #ECE7E4', borderBottom: '1px solid #ECE7E4' }}>
<div className="container is-max-widescreen">
<div className="has-text-centered mb-6">
<span className="has-text-weight-bold is-uppercase" style={{ color: 'var(--trad-teal)', letterSpacing: '0.1em', fontSize: '0.85rem' }}>
REAL CLUSTER TRANSFORMATION
</span>
<h2 className="title is-2 font-serif-trad mt-2 mb-3" style={{ color: 'var(--trad-maroon)' }}>
Proven Impact Across Craft Clusters
</h2>
<p className="has-text-grey-dark mx-auto" style={{ maxWidth: '680px' }}>
Explore how authentic craft communities across India have scaled sustainable livelihoods with Tradhox.
</p>
</div>
<div className="columns is-multiline">
{clusterStories.map((story) => (
<div key={story.id} className="column is-4-desktop is-6-tablet">
<div
className="box p-0 is-flex is-flex-direction-column"
style={{
height: '100%',
borderRadius: '18px',
border: '1px solid #ECE7E4',
backgroundColor: '#FFFFFF',
overflow: 'hidden',
boxShadow: '0 4px 16px rgba(0,0,0,0.03)'
}}
>
<div style={{ height: '200px', backgroundColor: '#F0ECE9', position: 'relative' }}>
<img
src={story.img}
alt={story.title}
style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }}
/>
<span
className="tag is-rounded is-small has-text-weight-bold"
style={{ position: 'absolute', top: '12px', right: '12px', backgroundColor: 'rgba(255,255,255,0.92)', color: 'var(--trad-maroon)' }}
>
{story.tag}
{initiatives.map((item, i) => (
<div key={i} className="column is-4-desktop is-6-tablet">
<div className="box p-5 is-flex is-flex-direction-column" style={{ height: '100%', borderRadius: '12px', border: '1px solid #e7ded9' }}>
<div className="is-flex is-justify-content-between is-align-items-center mb-3">
<div style={{ width: '40px', height: '40px', borderRadius: '8px', backgroundColor: '#faeef0', display: 'flex', alignItems: 'center', justifyContent: 'center', color: 'var(--trad-maroon)', fontSize: '1.15rem' }}>
<i className={`fa-solid ${item.icon}`}></i>
</div>
<span className="tag is-light is-rounded has-text-weight-semibold" style={{ color: 'var(--trad-navy)', backgroundColor: '#edf0fb', fontSize: '0.75rem' }}>
{item.tag}
</span>
</div>
<div className="p-5 is-flex is-flex-direction-column is-flex-grow-1">
<div className="is-flex is-justify-content-between is-align-items-baseline mb-2">
<h4 className="title is-5 mb-0 font-serif-trad" style={{ color: '#2B2523' }}>
{story.title}
</h4>
<span className="is-size-7 has-text-grey-dark has-text-weight-semibold">
{story.state}
</span>
</div>
<p className="has-text-grey-dark is-size-6 mb-4 is-flex-grow-1" style={{ lineHeight: 1.6 }}>
{story.desc}
</p>
<div className="p-3" style={{ backgroundColor: '#FAF8F6', borderRadius: '10px', border: '1px solid #ECE7E4' }}>
<p className="title is-3 mb-0" style={{ color: 'var(--trad-maroon)', fontWeight: 800 }}>
{story.stat}
</p>
<p className="is-size-7 has-text-grey has-text-weight-semibold">
{story.statLabel}
</p>
</div>
</div>
</div>
</div>
))}
</div>
</div>
</section>
{/* Simple Criteria for Authentic Indian Makers */}
<section className="py-6 px-4">
<div className="container is-max-desktop">
<div className="has-text-centered mb-6">
<span className="has-text-weight-bold is-uppercase" style={{ color: 'var(--trad-bronze)', letterSpacing: '0.1em', fontSize: '0.85rem' }}>
VERIFICATION STANDARDS
</span>
<h2 className="title is-2 font-serif-trad mt-2 mb-3" style={{ color: 'var(--trad-maroon)' }}>
Simple Criteria for Authentic Indian Makers
</h2>
<p className="has-text-grey-dark">
We protect the integrity of our marketplace by verifying all craft workshops.
</p>
</div>
<div className="columns is-multiline">
{criteriaList.map((c, i) => (
<div key={i} className="column is-6">
<div className="p-4" style={{ backgroundColor: '#FFFFFF', borderRadius: '14px', border: '1px solid #ECE7E4', height: '100%' }}>
<div className="is-flex is-align-items-center mb-2" style={{ gap: '0.75rem' }}>
<div style={{ width: '28px', height: '28px', borderRadius: '50%', backgroundColor: '#EBF7EE', color: '#1B7D36', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '0.8rem', fontWeight: 700, flexShrink: 0 }}>
<i className="fa-solid fa-check"></i>
</div>
<h4 className="title is-6 mb-0" style={{ color: '#2B2523' }}>{c.title}</h4>
</div>
<p className="is-size-7 has-text-grey-dark pl-5" style={{ lineHeight: 1.6 }}>
{c.desc}
<h3 className="title is-5 mb-2" style={{ color: '#2b2523' }}>
{item.title}
</h3>
<p className="has-text-grey-dark is-size-6" style={{ lineHeight: 1.6 }}>
{item.desc}
</p>
</div>
</div>
))}
</div>
</div>
</section>
{/* FAQs Accordion */}
<div className="mt-6 pt-5" style={{ borderTop: '1px solid #ECE7E4' }}>
<h3 className="title is-3 font-serif-trad has-text-centered mb-5" style={{ color: 'var(--trad-maroon)' }}>
Frequently Asked Questions
</h3>
<div className="accordion-wrapper">
{faqs.map((f, i) => {
const isOpen = activeFaq === i;
return (
<div
key={i}
className="box p-0 mb-4"
style={{ border: '1px solid #E2DBD6', borderRadius: '14px', overflow: 'hidden' }}
>
<button
type="button"
onClick={() => toggleFaq(i)}
className="is-flex is-justify-content-between is-align-items-center w-full p-5"
style={{
width: '100%',
background: isOpen ? '#FAF8F6' : '#FFFFFF',
border: 'none',
textAlign: 'left',
cursor: 'pointer'
}}
aria-expanded={isOpen}
>
<span className="has-text-weight-bold" style={{ color: '#1B2667', fontSize: '1.05rem' }}>
{f.q}
</span>
<span className="icon has-text-grey ml-3">
<i className={`fa-solid ${isOpen ? 'fa-chevron-up' : 'fa-chevron-down'}`}></i>
</span>
</button>
{isOpen && (
<div className="p-5" style={{ borderTop: '1px solid #ECE7E4', backgroundColor: '#FFFFFF' }}>
<p className="has-text-grey-dark" style={{ lineHeight: 1.7, fontSize: '0.95rem' }}>
{f.a}
</p>
</div>
)}
</div>
);
})}
{/* Artisan Spotlight Quote */}
<section className="py-6 px-4" style={{ backgroundColor: '#ffffff', borderTop: '1px solid #e7ded9', borderBottom: '1px solid #e7ded9' }}>
<div className="container is-max-desktop">
<div className="box p-6" style={{ backgroundColor: '#fdf9f7', border: '1px solid #dacfc9', borderRadius: '16px', position: 'relative' }}>
<div className="is-flex is-align-items-center mb-4">
<span className="tag is-rounded is-medium has-text-weight-bold" style={{ backgroundColor: 'var(--trad-maroon)', color: '#ffffff' }}>
EARLY MAKER INITIATIVE
</span>
</div>
<p className="font-serif-trad is-size-4 mb-4" style={{ color: '#2b2523', fontStyle: 'italic', lineHeight: 1.6 }}>
Be among the first heritage artisan clusters and master makers to launch on Tradhox. Get priority catalog placement, professional storytelling assistance, and zero upfront platform charges from day one.
</p>
<p className="has-text-weight-bold" style={{ color: 'var(--trad-bronze)' }}>
Tradhox Maker Onboarding &amp; Cultural Council
</p>
</div>
</div>
</section>
{/* Bottom CTA Banner */}
<div
className="box has-text-centered py-6 px-5 mt-6"
style={{
background: 'linear-gradient(135deg, #671B26 0%, #791B2C 100%)',
color: '#ffffff',
borderRadius: '20px',
boxShadow: '0 12px 32px rgba(103,27,38,0.25)'
}}
>
{/* Bottom CTA */}
<section className="py-6 px-4">
<div className="container is-max-desktop">
<div className="box has-text-centered py-6 px-4" style={{ background: 'linear-gradient(135deg, var(--trad-maroon) 0%, var(--trad-burgundy) 100%)', color: '#ffffff', borderRadius: '16px' }}>
<h2 className="title is-2 font-serif-trad mb-3" style={{ color: '#ffffff' }}>
Ready to Expand Your Craft Beyond Borders?
Take your craft brand to patrons across India and beyond
</h2>
<p className="subtitle is-5 mb-5" style={{ color: '#FAD4D8', maxWidth: '640px', margin: '0 auto', lineHeight: 1.6 }}>
Join India's dedicated artisan platform today. Dedicated mentorship, zero upfront fees, and transparent direct payouts.
<p className="subtitle is-5 mb-5" style={{ color: '#fad4d8', maxWidth: '600px', margin: '0 auto' }}>
Simple registration. Dedicated onboarding support. Zero upfront fees.
</p>
<button
className="button is-rounded is-large has-text-weight-bold px-6"
onClick={() => { setCurrentPage('signup'); window.scrollTo(0, 0); }}
style={{ backgroundColor: '#ffffff', color: 'var(--trad-maroon)', border: 'none', boxShadow: '0 4px 16px rgba(0,0,0,0.1)' }}
style={{ backgroundColor: '#ffffff', color: 'var(--trad-maroon)', border: 'none' }}
>
Become a seller <i className="fa-solid fa-arrow-right ml-2"></i>
Register as a Maker
</button>
</div>
</div>

View file

@ -3,116 +3,61 @@ import { useSeller } from '../../context/SellerContext';
export default function HowItWorksPage() {
const { setCurrentPage } = useSeller();
const [activeStep, setActiveStep] = useState<number>(1);
const [activeFaq, setActiveFaq] = useState<number | null>(null);
const steps = [
{
num: 1,
id: 'step-1',
stage: 'Stage One',
title: 'Set up your seller profile',
title: 'Create Your Profile',
badge: 'Step 1: Setup',
icon: 'fa-user-check',
visualBadge: '✨ 5-minute Paperless Onboarding',
img: '/images/login-potter.jpg',
shortDesc: 'Register with mobile OTP, PAN & GSTIN (or artisan enrollment ID).',
desc: 'Begin with a simple, guided verification. All you need is your mobile number, bank account details, and GSTIN or enrollment number (if applicable). Our artisan regional liaison team verifies your workshop credibility to protect genuine regional crafts.',
tags: ['Mobile verification', 'GSTIN / UID', 'Bank details'],
docs: 'Aadhaar / Mobile, PAN Card, GSTIN (optional for exempt artisans), Bank IFSC',
time: '35 minutes',
perk: 'Dedicated cluster coordinator assistance'
desc: 'Register with your mobile number, PAN, and GSTIN (or artisan registration). Set up your unique craft store URL and artisan bio in minutes.'
},
{
num: 2,
id: 'step-2',
stage: 'Stage Two',
title: 'Add your products',
badge: 'Step 2: Products',
title: 'List Your Craft Catalog',
badge: 'Step 2: Showcase',
icon: 'fa-boxes-stacked',
visualBadge: '🏷️ 0% Listing Fee Guarantee',
img: '/kanchipuram_silk.jpg',
shortDesc: 'Upload crisp photos, mark GI tags, and set your artisan pricing.',
desc: 'Upload high-resolution craft photos from your smartphone or camera. Assign dimensions, available stock, material purity, and your desired craft price. We provide smart pricing recommendations and categorization across GI tags, pottery, handloom, and metal crafts.',
tags: ['Category tagging', 'Fair pricing', 'Photos & details'],
docs: 'Product photos (up to 6), dimensions, craft material specs, maker price',
time: 'Instant live listing',
perk: 'Zero listing fees & free organic catalog indexing'
desc: 'Upload high-resolution images, highlight GI tags, artisan technique details, and fair-pricing tiers with zero upfront listing fees.'
},
{
num: 3,
id: 'step-3',
stage: 'Stage Three',
title: "Share your craft's story",
badge: 'Step 3: Story',
icon: 'fa-feather-pointed',
visualBadge: '📜 GI & Heritage Provenance Badges',
img: '/artisan_weaving.jpg',
shortDesc: 'Connect patrons with your generational legacy and workshop roots.',
desc: 'Buyers cherish what makes your work rare. Create an artisan bio, document the generational lineage of your technique, and attach short making-of clips. Each product page features the creator\'s profile, reinforcing authentic provenance and value.',
tags: ['Maker profile', 'Origin & craft heritage', 'Photos/video clips'],
docs: 'Artisan workshop bio, craft heritage photo, cluster location',
time: '1-time profile setup',
perk: 'Featured in Tradhox Heritage Spotlight'
title: 'Receive Customer Orders',
badge: 'Step 3: Alert',
icon: 'fa-bell',
desc: 'Get immediate notifications via SMS, WhatsApp, and your dashboard whenever a customer falls in love with your creation.'
},
{
num: 4,
id: 'step-4',
stage: 'Stage Four',
title: 'Receive customer orders',
badge: 'Step 4: Orders',
icon: 'fa-bell',
visualBadge: '🔔 Instant Alerts via SMS & WhatsApp',
img: '/images/pricing/fast-settlement.png',
shortDesc: 'Get real-time order alerts via WhatsApp, SMS, and your maker desk.',
desc: 'Get instant SMS and dashboard notifications whenever an admirer purchases your artwork. Review customer requirements, confirm dispatch readiness with one tap, and print pre-generated shipping waybills right from your seller portal.',
tags: ['Instant SMS alerts', '1-click confirm', 'Prepare for pickup'],
docs: 'Digital packing slip & pre-generated courier label',
time: 'Instant order alert',
perk: 'Real-time order tracking & inventory sync'
title: 'Craft Safe Packaging',
badge: 'Step 4: Protect',
icon: 'fa-box-open',
desc: 'Pack your authentic creations securely using standard or eco-friendly materials. Generate and stick the pre-printed courier dispatch label.'
},
{
num: 5,
id: 'step-5',
stage: 'Stage Five',
title: 'Pack & ship with Tradhox support',
badge: 'Step 5: Ship',
title: 'Doorstep Courier Pickup',
badge: 'Step 5: Transit',
icon: 'fa-truck-ramp-box',
visualBadge: '🚚 Doorstep Pickup Across India',
img: '/images/clusters/sustainable-jute.png',
shortDesc: 'Safe packaging and doorstep courier collection across 15,000+ pin codes.',
desc: 'Never stress over parcel counters or couriers. We provide sturdy craft-protective packaging guidelines, while our nationwide logistics partner picks up the packaged craft straight from your home or workshop with live GPS tracking.',
tags: ['Product FF by Tradhox', 'Doorstep pickup', '15,000+ pincode delivery'],
docs: 'Affix Tradhox shipping label to exterior carton',
time: 'Doorstep pickup in 24 hrs',
perk: 'Zero courier coordination hassle & full transit insurance'
desc: 'Our certified logistics partners collect the parcels directly from your workshop or home across 15,000+ pin codes in India.'
},
{
num: 6,
id: 'step-6',
stage: 'Stage Six',
title: 'Guaranteed 7-Day Payouts: Get paid on schedule',
title: 'Guaranteed 7-Day Payouts',
badge: 'Step 6: Payout',
icon: 'fa-indian-rupee-sign',
visualBadge: '💳 7-Day Direct Bank Transfers',
img: '/images/pricing/transparent-weaver.png',
shortDesc: '100% direct bank deposits settled on schedule with zero hidden deductions.',
desc: 'Timely payouts right to your bank account with zero hidden fees. Track sales numbers, view transparent margin statements, and monitor your scheduled settlements every 7 days through your intuitive seller dashboard.',
tags: ['7-day payout cycle', 'Direct bank transfer', 'Transparent earnings dashboard'],
docs: 'Verified bank account (cancelled cheque or passbook copy)',
time: 'Settled every 7 days',
perk: '100% direct bank deposits with transparent split'
desc: 'Receive 100% direct bank deposits for every delivered order within 7 days. Full transparency, zero hidden commission deductions.'
}
];
const faqs = [
{
q: 'Do I need a GST number to sell on Tradhox?',
a: 'If you sell within your state (intra-state) under government handicraft exemption thresholds, an artisan enrollment ID or PAN qualifies. For pan-India inter-state shipping, a GST number is recommended and our cluster support team assists you with rapid registration.'
a: 'If you sell within the state (intra-state) under current government threshold exemptions for small artisans and handicraft makers, enrollment IDs may qualify. For pan-India shipping, a GST number is recommended and our team assists with quick registration.'
},
{
q: 'How does doorstep pickup work from remote artisan villages?',
a: 'We partner with India\'s leading logistics network covering over 15,000 pin codes. If your village cluster has courier accessibility, scheduled pickups happen right at your home workshop.'
q: 'How does pickup work from remote artisan villages?',
a: 'We partner with Indias leading logistics providers reaching over 15,000 pin codes. If your village has courier accessibility, pickups are scheduled at your doorstep.'
},
{
q: 'When and how do I receive money for my sales?',
@ -120,271 +65,130 @@ export default function HowItWorksPage() {
},
{
q: 'Are there any registration or listing fees?',
a: 'None! Tradhox has zero registration fees and zero listing fees. You only pay a transparent marketplace fee (5% for GI-tagged, 8% for standard) when your product actually sells.'
},
{
q: 'Can I sell made-to-order or customizable handcrafted items?',
a: 'Yes! Tradhox specifically supports artisan lead times. You can mark products as made-to-order and specify the crafting days required before dispatch.'
a: 'None! Tradhox has zero registration fees and zero listing fees. You only pay a transparent marketplace fee when your product actually sells.'
}
];
const toggleFaq = (idx: number) => {
setActiveFaq(activeFaq === idx ? null : idx);
};
const scrollToStep = (stepNum: number, stepId: string) => {
setActiveStep(stepNum);
const el = document.getElementById(stepId);
if (el) {
el.scrollIntoView({ behavior: 'smooth', block: 'start' });
}
};
return (
<div className="how-it-works-page" style={{ minHeight: '100vh', backgroundColor: '#FCF9F8' }}>
{/* Top Breadcrumb */}
<div className="px-4 py-3" style={{ borderBottom: '1px solid #ECE7E4', backgroundColor: '#FFFFFF' }}>
<div className="container is-max-widescreen">
<nav className="breadcrumb is-small mb-0" aria-label="breadcrumbs">
<ul>
<li>
<a
onClick={() => { setCurrentPage('home'); window.scrollTo(0, 0); }}
className="has-text-grey"
style={{ textDecoration: 'none', cursor: 'pointer' }}
>
Home
</a>
</li>
<li className="is-active">
<a aria-current="page" className="has-text-weight-bold" style={{ color: 'var(--trad-maroon)' }}>
How it works
</a>
</li>
</ul>
</nav>
</div>
</div>
<div className="how-it-works-page has-background-white-ter" style={{ minHeight: '100vh' }}>
{/* Hero Section */}
<section className="py-8 px-4" style={{ background: 'linear-gradient(180deg, #FBF8F6 0%, #FCF9F8 100%)', borderBottom: '1px solid #E7DED9' }}>
<div className="container is-max-desktop has-text-centered py-4">
<span className="tag is-rounded is-small mb-3" style={{ backgroundColor: '#FBECEE', color: '#791B2C', fontWeight: 700, letterSpacing: '0.08em', padding: '6px 14px' }}>
<section className="py-6 px-4" style={{ background: 'linear-gradient(180deg, #f7eeee 0%, #fcf9f8 100%)', borderBottom: '1px solid #e7ded9' }}>
<div className="container is-max-desktop has-text-centered py-5">
<span className="tag is-rounded is-small mb-3" style={{ backgroundColor: '#f2dede', color: 'var(--trad-maroon)', fontWeight: 700, letterSpacing: '0.08em' }}>
EMPOWERING INDIAN ARTISANS
</span>
<h1 className="title is-1 font-serif-trad mb-3" style={{ color: 'var(--trad-maroon)', fontSize: '2.8rem', lineHeight: 1.2 }}>
<h1 className="title is-1 font-serif-trad mb-4" style={{ color: 'var(--trad-maroon)', fontSize: '2.75rem' }}>
How it works The Seller Journey
</h1>
<p className="subtitle is-4 has-text-weight-semibold mb-4" style={{ color: '#2B2523' }}>
From artisan workshop to nationwide doorstep delivery
</p>
<p className="has-text-grey-dark mx-auto mb-5" style={{ maxWidth: '750px', fontSize: '1.05rem', lineHeight: 1.65 }}>
<p className="subtitle is-5 has-text-grey-dark mx-auto mb-6" style={{ maxWidth: '720px', lineHeight: 1.6 }}>
A transparent, step-by-step pathway empowering verified Indian craftsmen and creative masters to showcase heritage artistry, fulfill orders effortlessly, and reach patrons nationwide.
</p>
<div className="is-flex is-justify-content-center is-align-items-center mb-6" style={{ gap: '1.75rem', flexWrap: 'wrap' }}>
<span className="has-text-weight-semibold" style={{ color: '#4A4543' }}>
<div className="is-flex is-justify-content-center is-align-items-center is-flex-wrap-wrap mb-5" style={{ gap: '1.5rem' }}>
<span className="has-text-weight-semibold" style={{ color: '#4a4543' }}>
<i className="fa-solid fa-circle-check mr-2" style={{ color: 'var(--trad-teal)' }}></i> Zero Listing Fees
</span>
<span className="has-text-grey-light"></span>
<span className="has-text-weight-semibold" style={{ color: '#4A4543' }}>
<i className="fa-solid fa-circle-check mr-2" style={{ color: 'var(--trad-teal)' }}></i> Direct 7-Day Bank Payouts
<span className="has-text-weight-semibold" style={{ color: '#4a4543' }}>
<i className="fa-solid fa-circle-check mr-2" style={{ color: 'var(--trad-teal)' }}></i> 7-Day Direct Payouts
</span>
<span className="has-text-grey-light"></span>
<span className="has-text-weight-semibold" style={{ color: '#4A4543' }}>
<span className="has-text-weight-semibold" style={{ color: '#4a4543' }}>
<i className="fa-solid fa-circle-check mr-2" style={{ color: 'var(--trad-teal)' }}></i> 15,000+ Pin Codes Pickup
</span>
</div>
<button
className="button is-rounded is-large has-text-weight-bold px-6"
onClick={() => { setCurrentPage('signup'); window.scrollTo(0, 0); }}
style={{ backgroundColor: 'var(--trad-maroon)', color: '#ffffff', border: 'none', boxShadow: '0 8px 24px rgba(103,27,38,0.25)' }}
>
Become a seller <i className="fa-solid fa-arrow-right ml-3"></i>
</button>
<div>
<button
className="button is-large is-rounded has-text-weight-bold px-6"
onClick={() => { setCurrentPage('signup'); window.scrollTo(0, 0); }}
style={{ backgroundColor: 'var(--trad-maroon)', color: '#ffffff', border: 'none', boxShadow: '0 8px 24px rgba(103,27,38,0.2)' }}
>
Register as a seller <i className="fa-solid fa-arrow-right ml-3"></i>
</button>
</div>
</div>
</section>
{/* Sticky Step Navigator Bar */}
<nav
aria-label="Process navigation"
className="sticky top-[60px] z-30 bg-white/95 backdrop-blur-md border-b border-stone-200 py-3 px-4 shadow-xs"
>
{/* 6-Step Journey Grid */}
<section className="py-6 px-4">
<div className="container is-max-widescreen">
<div className="is-flex is-align-items-center is-justify-content-between mb-2">
<h2 className="is-size-7 font-bold text-stone-500 uppercase tracking-wider mb-0">
<div className="has-text-centered mb-6">
<span className="has-text-weight-bold is-uppercase" style={{ color: 'var(--trad-bronze)', letterSpacing: '0.1em', fontSize: '0.85rem' }}>
The 6-Step Journey
</span>
<h2 className="title is-2 font-serif-trad mt-2" style={{ color: 'var(--trad-maroon)' }}>
From artisan workshop to nationwide doorstep delivery
</h2>
<span className="is-size-7 text-stone-400 font-medium">Click step to explore</span>
</div>
<div className="columns is-mobile is-variable is-2" style={{ overflowX: 'auto', margin: 0, paddingBottom: '4px' }}>
{steps.map((s) => {
const isCurrent = s.num === activeStep;
return (
<div key={s.num} className="column is-narrow" style={{ minWidth: '130px' }}>
<button
onClick={() => scrollToStep(s.num, s.id)}
type="button"
className="w-full text-left p-2 rounded-xl transition-all border flex items-center gap-2 cursor-pointer"
style={{
backgroundColor: isCurrent ? '#FBECEE' : '#FFFFFF',
borderColor: isCurrent ? 'var(--trad-maroon)' : '#E7E3DA',
color: isCurrent ? 'var(--trad-maroon)' : '#5A5550'
}}
>
<span
className="w-6 h-6 rounded-full flex items-center justify-center text-xs font-bold shrink-0"
style={{
backgroundColor: isCurrent ? 'var(--trad-maroon)' : '#F0EDED',
color: isCurrent ? '#FFFFFF' : '#5A5550'
}}
>
{s.num}
</span>
<span className="text-xs font-semibold truncate">
{s.badge.replace(`Step ${s.num}: `, '')}
</span>
</button>
</div>
);
})}
</div>
</div>
</nav>
{/* Alternating 6 Step Deep-Dive Sections */}
<div className="steps-container py-8 space-y-16">
{steps.map((s, idx) => {
const isEven = idx % 2 === 1;
return (
<section
key={s.num}
id={s.id}
className="py-10 max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 scroll-mt-28"
>
<div className="grid grid-cols-1 lg:grid-cols-12 gap-8 lg:gap-12 items-center">
{/* Visual Column */}
<div className={`lg:col-span-6 ${isEven ? 'order-1 lg:order-2' : 'order-2 lg:order-1'}`}>
<div className="relative rounded-2xl overflow-hidden step-img-frame border border-stone-200/80 bg-white shadow-sm hover:shadow-md transition-shadow">
<img
src={s.img}
alt={s.title}
className="w-full h-72 sm:h-80 object-cover transform hover:scale-105 transition-transform duration-500"
/>
<div className="absolute bottom-4 left-4 bg-white/95 backdrop-blur-sm px-4 py-2 rounded-xl border border-stone-200 text-xs font-bold text-brand-maroon shadow-sm">
{s.visualBadge}
</div>
</div>
</div>
{/* Content Column */}
<div className={`lg:col-span-6 ${isEven ? 'order-2 lg:order-1' : 'order-1 lg:order-2'} space-y-4`}>
<div className="flex items-center gap-3">
<span
className="w-9 h-9 rounded-full text-white font-bold flex items-center justify-center shadow-md text-sm"
style={{ backgroundColor: 'var(--trad-maroon)' }}
>
{s.num}
<div className="columns is-multiline">
{steps.map((step) => (
<div key={step.num} className="column is-4-desktop is-6-tablet">
<div className="box p-5 is-flex is-flex-direction-column" style={{ height: '100%', borderRadius: '12px', border: '1px solid #e7ded9', boxShadow: '0 4px 14px rgba(0,0,0,0.03)' }}>
<div className="is-flex is-justify-content-between is-align-items-center mb-4">
<span className="trad-badge-step is-active" style={{ fontSize: '1.1rem' }}>
{step.num}
</span>
<span
className="text-xs font-bold uppercase tracking-wider px-2.5 py-0.5 rounded-full border"
style={{ backgroundColor: '#FBECEE', color: 'var(--trad-maroon)', borderColor: '#F2D3D7' }}
>
{s.stage}
<span className="tag is-light is-rounded has-text-weight-semibold" style={{ color: 'var(--trad-maroon)', backgroundColor: '#faeef0' }}>
{step.badge}
</span>
</div>
<h3 className="text-2xl font-extrabold text-slate-900 tracking-tight font-serif-trad">
{s.title}
<h3 className="title is-4 mb-3" style={{ color: '#2b2523' }}>
{step.title}
</h3>
<p className="text-slate-600 text-base leading-relaxed">
{s.desc}
<p className="has-text-grey-dark is-size-6" style={{ lineHeight: 1.6 }}>
{step.desc}
</p>
{/* Metadata Tags */}
<div className="flex flex-wrap items-center gap-2 pt-1">
{s.tags.map((tag, tIdx) => (
<span
key={tIdx}
className="inline-flex items-center px-3 py-1 rounded-lg text-xs font-medium bg-stone-100 text-stone-700 border border-stone-200"
>
{tag}
</span>
))}
</div>
{/* Documentation & Perk Badges */}
<div className="grid grid-cols-1 sm:grid-cols-2 gap-3 pt-3">
<div className="p-3 bg-stone-50 rounded-xl border border-stone-200">
<p className="text-xs font-bold uppercase mb-1" style={{ color: 'var(--trad-maroon)' }}>
<i className="fa-solid fa-file-lines mr-1"></i> Documentation:
</p>
<p className="text-xs text-stone-600 leading-snug">{s.docs}</p>
</div>
<div className="p-3 bg-stone-50 rounded-xl border border-stone-200">
<p className="text-xs font-bold uppercase mb-1" style={{ color: 'var(--trad-teal)' }}>
<i className="fa-solid fa-gift mr-1"></i> Tradhox Perk:
</p>
<p className="text-xs text-stone-600 leading-snug">{s.perk}</p>
</div>
</div>
</div>
</div>
</section>
);
})}
</div>
))}
</div>
</div>
</section>
{/* Doorstep Logistics Spotlight */}
<section className="py-12 px-4" style={{ backgroundColor: '#FAF8F6', borderTop: '1px solid #ECE7E4', borderBottom: '1px solid #ECE7E4' }}>
<div className="container is-max-widescreen">
{/* Logistics & Support Highlight */}
<section className="py-6 px-4" style={{ backgroundColor: '#ffffff', borderTop: '1px solid #e7ded9', borderBottom: '1px solid #e7ded9' }}>
<div className="container is-max-desktop">
<div className="columns is-vcentered">
<div className="column is-6 pr-5">
<span className="tag is-success is-light is-rounded has-text-weight-bold mb-3">
PAN-INDIA COURIER NETWORK
<div className="column is-6">
<span className="tag is-warning is-light is-rounded has-text-weight-bold mb-3">
ARTISAN FIRST LOGISTICS
</span>
<h2 className="title is-2 font-serif-trad mb-4" style={{ color: 'var(--trad-maroon)' }}>
Doorstep Pickup Across 15,000+ Pin Codes
We handle the heavy lifting, so you can focus on your craft.
</h2>
<p className="has-text-grey-dark mb-4" style={{ fontSize: '1.05rem', lineHeight: 1.7 }}>
Whether your craft workshop is located in Pochampally, Rajasthan&apos;s desert clusters, or Kashmir&apos;s weaving valleys, Tradhox's integrated courier partners provide automated pickup scheduling.
<p className="has-text-grey-dark mb-4" style={{ lineHeight: 1.7 }}>
Traditional handlooms and handicraft items require careful transit. Tradhox works closely with certified regional partners who know how to protect fragile clay, delicate silk, and intricate woodwork.
</p>
<div className="content">
<ul>
<li className="has-text-grey-dark mb-2">
<strong>Zero Courier Negotiations:</strong> Standardized shipping rates calculated automatically for the buyer.
</li>
<li className="has-text-grey-dark mb-2">
<strong>Transit Insurance Included:</strong> Every fragile ceramic, delicate silk, and intricate woodwork is insured against loss or damage.
</li>
<li className="has-text-grey-dark">
<strong>Pre-Printed Airway Bills:</strong> Generate 1-click shipping labels from your mobile phone or laptop.
</li>
</ul>
</div>
<ul style={{ listStyle: 'none', paddingLeft: 0 }}>
<li className="mb-3 is-flex is-align-items-center">
<i className="fa-solid fa-circle-check mr-3" style={{ color: 'var(--trad-teal)' }}></i>
<span>Automated tracking links sent to your patrons</span>
</li>
<li className="mb-3 is-flex is-align-items-center">
<i className="fa-solid fa-circle-check mr-3" style={{ color: 'var(--trad-teal)' }}></i>
<span>Zero fines for delayed dispatches due to seasonal weather</span>
</li>
<li className="mb-3 is-flex is-align-items-center">
<i className="fa-solid fa-circle-check mr-3" style={{ color: 'var(--trad-teal)' }}></i>
<span>Free doorstep return inspection to protect maker goods</span>
</li>
</ul>
</div>
<div className="column is-6">
<div className="box p-5" style={{ backgroundColor: '#FFFFFF', borderRadius: '16px', border: '1px solid #E2DBD6' }}>
<div className="columns is-mobile is-multiline has-text-centered">
<div className="column is-6 py-4">
<p className="title is-2 mb-1" style={{ color: 'var(--trad-maroon)', fontWeight: 800 }}>15,000+</p>
<p className="is-size-7 has-text-grey has-text-weight-semibold">Serviceable Postal Codes</p>
</div>
<div className="column is-6 py-4">
<p className="title is-2 mb-1" style={{ color: 'var(--trad-teal)', fontWeight: 800 }}>2448h</p>
<p className="is-size-7 has-text-grey has-text-weight-semibold">Average Pickup Window</p>
</div>
<div className="column is-6 py-4">
<p className="title is-2 mb-1" style={{ color: 'var(--trad-navy)', fontWeight: 800 }}>100%</p>
<p className="is-size-7 has-text-grey has-text-weight-semibold">Transit Damage Protection</p>
</div>
<div className="column is-6 py-4">
<p className="title is-2 mb-1" style={{ color: 'var(--trad-bronze)', fontWeight: 800 }}>0</p>
<p className="is-size-7 has-text-grey has-text-weight-semibold">Artisan Pickup Surcharge</p>
</div>
<div className="box p-5" style={{ backgroundColor: '#fdf9f7', border: '1px solid #dacfc9', borderRadius: '12px' }}>
<h4 className="title is-4 mb-4" style={{ color: 'var(--trad-navy)' }}>
<i className="fa-solid fa-hand-holding-heart mr-2" style={{ color: 'var(--trad-maroon)' }}></i>
Maker Support Pledge
</h4>
<p className="is-size-6 mb-4 has-text-grey-dark">
Need help taking catalog photos or writing your story? Our regional field coordinators visit artisan clusters across Rajasthan, Bengal, Tamil Nadu, and UP to help you digitize.
</p>
<div className="notification is-light p-3" style={{ backgroundColor: '#ffffff', border: '1px solid #e7ded9' }}>
<p className="is-size-7 has-text-weight-semibold" style={{ color: 'var(--trad-maroon)' }}>
<i className="fa-solid fa-phone mr-1"></i> Dedicated Maker Helpline: 1800-TRADHOX
</p>
</div>
</div>
</div>
@ -392,99 +196,54 @@ export default function HowItWorksPage() {
</div>
</section>
{/* FAQs Section */}
<section className="py-12 px-4">
{/* FAQ Section */}
<section className="py-6 px-4">
<div className="container is-max-desktop">
<div className="has-text-centered mb-6">
<span className="has-text-weight-bold is-uppercase" style={{ color: 'var(--trad-bronze)', letterSpacing: '0.1em', fontSize: '0.85rem' }}>
FREQUENTLY ASKED QUESTIONS
Got Questions?
</span>
<h2 className="title is-2 font-serif-trad mt-2" style={{ color: 'var(--trad-maroon)' }}>
Common questions from artisans &amp; sellers
Frequently Asked Questions
</h2>
<p className="has-text-grey-dark">
Everything you need to know about starting your digital seller journey on Tradhox.
</p>
</div>
<div className="accordion-wrapper">
{faqs.map((f, i) => {
const isOpen = activeFaq === i;
return (
<div className="faq-list">
{faqs.map((faq, i) => (
<div key={i} className="box mb-4 p-5" style={{ border: '1px solid #e7ded9', borderRadius: '8px' }}>
<div
key={i}
className="box p-0 mb-4"
style={{
border: '1px solid #E2DBD6',
borderRadius: '14px',
overflow: 'hidden'
}}
className="is-flex is-justify-content-between is-align-items-center is-clickable"
onClick={() => setActiveFaq(activeFaq === i ? null : i)}
>
<button
type="button"
onClick={() => toggleFaq(i)}
className="is-flex is-justify-content-between is-align-items-center w-full p-5"
style={{
width: '100%',
background: isOpen ? '#FAF8F6' : '#FFFFFF',
border: 'none',
textAlign: 'left',
cursor: 'pointer'
}}
aria-expanded={isOpen}
>
<span className="has-text-weight-bold" style={{ color: '#1B2667', fontSize: '1.05rem' }}>
{f.q}
</span>
<span className="icon has-text-grey ml-3">
<i className={`fa-solid ${isOpen ? 'fa-chevron-up' : 'fa-chevron-down'}`}></i>
</span>
</button>
{isOpen && (
<div className="p-5" style={{ borderTop: '1px solid #ECE7E4', backgroundColor: '#FFFFFF' }}>
<p className="has-text-grey-dark" style={{ lineHeight: 1.7, fontSize: '0.95rem' }}>
{f.a}
</p>
</div>
)}
<h4 className="title is-5 mb-0" style={{ color: '#2b2523' }}>
{faq.q}
</h4>
<i className={`fa-solid ${activeFaq === i ? 'fa-chevron-up' : 'fa-chevron-down'}`} style={{ color: 'var(--trad-maroon)' }}></i>
</div>
);
})}
{activeFaq === i && (
<p className="mt-4 has-text-grey-dark is-size-6" style={{ lineHeight: 1.6 }}>
{faq.a}
</p>
)}
</div>
))}
</div>
{/* Bottom CTA Banner */}
<div
className="box has-text-centered py-8 px-6 mt-8"
style={{
background: 'linear-gradient(135deg, #671B26 0%, #791B2C 100%)',
color: '#ffffff',
borderRadius: '20px',
boxShadow: '0 12px 32px rgba(103,27,38,0.25)'
}}
>
{/* CTA Banner */}
<div className="box has-text-centered py-6 px-4 mt-6" style={{ background: 'linear-gradient(135deg, var(--trad-maroon) 0%, var(--trad-burgundy) 100%)', color: '#ffffff', borderRadius: '16px' }}>
<h2 className="title is-2 font-serif-trad mb-3" style={{ color: '#ffffff' }}>
Ready to start selling your authentic creations?
Ready to introduce your craft to the world?
</h2>
<p className="subtitle is-5 mb-6" style={{ color: '#FAD4D8', maxWidth: '640px', margin: '0 auto', lineHeight: 1.6 }}>
Join hundreds of verified masters, cooperatives, and artisanal creators reaching appreciative patrons every day. Zero registration fees, free catalog listing, and guaranteed 7-day bank payouts.
<p className="subtitle is-5 mb-5" style={{ color: '#fad4d8', maxWidth: '600px', margin: '0 auto' }}>
Join thousands of Indian artisans and heritage makers expanding their livelihood through Tradhox.
</p>
<div className="flex flex-wrap items-center justify-center gap-4">
<button
className="button is-rounded is-large has-text-weight-bold px-6"
onClick={() => { setCurrentPage('signup'); window.scrollTo(0, 0); }}
style={{ backgroundColor: '#ffffff', color: 'var(--trad-maroon)', border: 'none', boxShadow: '0 4px 16px rgba(0,0,0,0.1)' }}
>
Register as a seller <i className="fa-solid fa-arrow-right ml-2"></i>
</button>
<button
className="button is-rounded is-large is-outlined has-text-weight-bold px-6 text-white"
onClick={() => { setCurrentPage('pricing'); window.scrollTo(0, 0); }}
style={{ borderColor: '#ffffff', color: '#ffffff', backgroundColor: 'transparent' }}
>
View Pricing &amp; Fees
</button>
</div>
<button
className="button is-rounded is-large has-text-weight-bold px-6"
onClick={() => { setCurrentPage('signup'); window.scrollTo(0, 0); }}
style={{ backgroundColor: '#ffffff', color: 'var(--trad-maroon)', border: 'none' }}
>
Start Selling Today
</button>
</div>
</div>
</section>

View file

@ -401,6 +401,84 @@ export default function LandingPage() {
}
`}</style>
{/* BEGIN: MainHeader */}
<header
className={`w-full border-b border-gray-200 bg-white/95 backdrop-blur-md sticky top-0 z-50 transition-shadow duration-300 ${
isScrolled ? 'shadow-md' : 'shadow-sm'
}`}
id="main-header"
>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-3 flex items-center justify-between">
{/* Brand Logo Block */}
<a className="flex items-center gap-3 group" href="#">
<img
alt="TRADHOX Logo"
className="h-14 md:h-16 w-auto object-contain transition-transform group-hover:scale-105"
src="/images/landing/tradhox-logo.png"
/>
</a>
{/* Desktop Navigation Links & Primary CTA */}
<div className="flex items-center gap-8">
<nav className="hidden lg:flex items-center space-x-8 text-sm font-medium text-slate-700">
<button
className="hover:text-brand-maroon transition-colors text-slate-700 font-medium cursor-pointer"
onClick={() => { setCurrentPage('how-it-works'); window.scrollTo(0, 0); }}
type="button"
>
How it works
</button>
<button
className="hover:text-brand-maroon transition-colors text-slate-700 font-medium cursor-pointer"
onClick={() => { setCurrentPage('pricing'); window.scrollTo(0, 0); }}
type="button"
>
Pricing
</button>
<button
className="hover:text-brand-maroon transition-colors text-slate-700 font-medium cursor-pointer"
onClick={() => { setCurrentPage('grow-business'); window.scrollTo(0, 0); }}
type="button"
>
Grow your business
</button>
<a className="hover:text-brand-maroon transition-colors" href="#categories">Resources</a>
<button
className="hover:text-brand-maroon transition-colors text-slate-700 font-medium cursor-pointer"
onClick={() => setCurrentPage('contact')}
type="button"
>
Contact Us
</button>
<button
className="hover:text-brand-maroon transition-colors text-slate-900 font-semibold cursor-pointer"
onClick={() => setCurrentPage('login')}
type="button"
>
Login
</button>
</nav>
<div className="flex items-center gap-3">
<button
className="hidden sm:inline-flex items-center justify-center px-4 py-2 rounded-lg text-sm font-semibold text-slate-700 hover:text-brand-maroon hover:bg-stone-50 transition-all cursor-pointer"
onClick={() => setCurrentPage('login')}
type="button"
>
Sign In
</button>
<button
className="inline-flex items-center justify-center px-5 py-2.5 rounded-lg text-sm font-semibold border-2 border-brand-maroon text-brand-maroon hover:bg-brand-maroon hover:text-white transition-all shadow-sm cursor-pointer active:scale-95"
onClick={() => openModal('register')}
type="button"
>
Become a seller
</button>
</div>
</div>
</div>
</header>
{/* END: MainHeader */}
<main className="flex-grow">
{/* BEGIN: HeroSection */}
<section className="border-b border-gray-200 py-12 lg:py-20 bg-gradient-to-b from-[#fdfcfb] to-white">
@ -804,44 +882,45 @@ export default function LandingPage() {
</div>
</div>
</section>
{/* END: CategoryShowcaseSection */}
{/* BEGIN: Pricing Section */}
<section className="py-16 bg-white border-b border-gray-200" id="pricing">
{/* Pricing Anchor Section */}
<section className="py-12 bg-white border-b border-gray-200" id="pricing">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="bg-[#fbf9f5] border border-stone-200 rounded-2xl p-8 lg:p-12 shadow-sm">
<div className="bg-[#fbf9f5] border border-brand-border rounded-2xl p-8 lg:p-10">
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8 items-center">
<div className="lg:col-span-2 space-y-4">
<div className="inline-flex items-center gap-1.5 px-3 py-1 rounded-full text-xs font-bold bg-[#791B2C]/10 text-brand-maroon">
<div className="lg:col-span-2 space-y-3">
<div className="inline-flex items-center gap-1.5 px-3 py-1 rounded-full text-xs font-bold bg-[#671B26]/10 text-brand-maroon">
Transparent Pricing Policy
</div>
<h3 className="text-2xl sm:text-3xl font-black text-slate-900 tracking-tight">
<h3 className="text-2xl sm:text-3xl font-black text-slate-900">
0% Listing Fees. Pay Only When You Sell.
</h3>
<p className="text-slate-600 text-sm sm:text-base leading-relaxed">
<p className="text-slate-600 text-sm leading-relaxed">
Unlike standard retail platforms that charge recurring shelf or monthly subscription fees, TRADHOX only deducts a minimal handling commission once an order is verified and completed.
</p>
<div className="grid grid-cols-3 gap-4 pt-3">
<div className="grid grid-cols-3 gap-4 pt-2">
<div className="border-l-2 border-brand-maroon pl-3">
<span className="block text-2xl font-black text-brand-maroon">0</span>
<span className="text-xs text-slate-500 font-medium">Upfront Platform Cost</span>
<span className="text-xs text-slate-500">Upfront Platform Cost</span>
</div>
<div className="border-l-2 border-brand-maroon pl-3">
<span className="block text-2xl font-black text-brand-maroon">100%</span>
<span className="text-xs text-slate-500 font-medium">Transparent Payout</span>
<span className="text-xs text-slate-500">Transparent Payout</span>
</div>
<div className="border-l-2 border-brand-maroon pl-3">
<span className="block text-2xl font-black text-brand-maroon">7 Days</span>
<span className="text-xs text-slate-500 font-medium">Fast Bank Settlement</span>
<span className="text-xs text-slate-500">Fast Bank Settlement</span>
</div>
</div>
</div>
<div className="text-center lg:text-right">
<button
className="w-full sm:w-auto px-8 py-4 bg-brand-maroon hover:bg-brand-maroonHover text-white font-bold text-base rounded-xl transition-all shadow-md hover:shadow-lg cursor-pointer inline-flex items-center justify-center gap-2"
onClick={() => { setCurrentPage('pricing'); window.scrollTo(0, 0); }}
onClick={() => openModal('register')}
type="button"
>
<span>Explore Transparent Pricing</span>
<span>Get Started For Free</span>
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M17 8l4 4m0 0l-4 4m4-4H3" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2"></path>
</svg>
@ -851,7 +930,6 @@ export default function LandingPage() {
</div>
</div>
</section>
{/* END: Pricing Section */}
{/* BEGIN: FinalCallToAction */}
<section className="py-14 bg-[#f4ede4] border-b border-gray-200" id="register">
@ -876,6 +954,110 @@ export default function LandingPage() {
{/* END: FinalCallToAction */}
</main>
{/* BEGIN: MainFooter */}
<footer className="bg-[#791B2C] text-stone-200 text-sm border-t border-brand-maroon">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12 lg:py-16">
{/* 5-Column Grid */}
<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-8">
{/* Column 1: Brand & Tagline */}
<div className="col-span-2 md:col-span-1 lg:col-span-1 flex flex-col space-y-3">
<div className="flex items-center gap-2.5">
<img
alt="TRADHOX Wordmark Logo"
className="h-9 w-auto object-contain brightness-0 invert"
src="/images/landing/tradhox-wordmark.png"
/>
</div>
<p className="text-xs text-stone-300 pt-2">Building India's most authentic trade and artisan infrastructure.</p>
</div>
{/* Column 2: Quick Links */}
<div className="flex flex-col space-y-2.5">
<h4 className="font-bold text-white text-xs uppercase tracking-wider mb-1">Quick links</h4>
<button
className="text-left hover:text-amber-300 transition-colors text-xs sm:text-sm text-stone-200 cursor-pointer"
onClick={() => { setCurrentPage('how-it-works'); window.scrollTo(0, 0); }}
type="button"
>
How it works
</button>
<button
className="text-left hover:text-amber-300 transition-colors text-xs sm:text-sm text-stone-200 cursor-pointer"
onClick={() => { setCurrentPage('pricing'); window.scrollTo(0, 0); }}
type="button"
>
Pricing
</button>
<button
className="text-left hover:text-amber-300 transition-colors text-xs sm:text-sm font-semibold text-amber-300 cursor-pointer"
onClick={() => { setCurrentPage('signup'); window.scrollTo(0, 0); }}
type="button"
>
Register
</button>
<button
className="text-left hover:text-amber-300 transition-colors text-xs sm:text-sm text-stone-200 cursor-pointer"
onClick={() => { setCurrentPage('grow-business'); window.scrollTo(0, 0); }}
type="button"
>
Grow your business
</button>
</div>
{/* Column 3: Company */}
<div className="flex flex-col space-y-2.5">
<h4 className="font-bold text-white text-xs uppercase tracking-wider mb-1">Company</h4>
<button
className="text-left hover:text-amber-300 transition-colors text-xs sm:text-sm text-stone-200 cursor-pointer"
onClick={() => setCurrentPage('about')}
type="button"
>
About
</button>
<button
className="text-left hover:text-amber-300 transition-colors text-xs sm:text-sm text-stone-200 cursor-pointer"
onClick={() => setCurrentPage('contact')}
type="button"
>
Contact
</button>
<a className="hover:text-amber-300 transition-colors text-xs sm:text-sm text-stone-200" href="#why-sell">
Grow your business
</a>
</div>
{/* Column 4: Policies */}
<div className="flex flex-col space-y-2.5">
<h4 className="font-bold text-white text-xs uppercase tracking-wider mb-1">Policies</h4>
<a className="hover:text-amber-300 transition-colors text-xs sm:text-sm text-stone-200" href="#">Privacy policy</a>
<a className="hover:text-amber-300 transition-colors text-xs sm:text-sm text-stone-200" href="#">Terms of service</a>
<a className="hover:text-amber-300 transition-colors text-xs sm:text-sm text-stone-200" href="#">Returns &amp; refunds</a>
</div>
{/* Column 5: Social Handlers */}
<div className="flex flex-col space-y-2.5">
<h4 className="font-bold text-white text-xs uppercase tracking-wider mb-1">Social handlers</h4>
<a className="hover:text-amber-300 transition-colors text-xs sm:text-sm flex items-center gap-1.5 text-stone-200" href="https://instagram.com" rel="noopener noreferrer" target="_blank">
<span>Instagram</span>
</a>
<a className="hover:text-amber-300 transition-colors text-xs sm:text-sm flex items-center gap-1.5 text-stone-200" href="https://facebook.com" rel="noopener noreferrer" target="_blank">
<span>Facebook</span>
</a>
<a className="hover:text-amber-300 transition-colors text-xs sm:text-sm flex items-center gap-1.5 text-stone-200" href="https://youtube.com" rel="noopener noreferrer" target="_blank">
<span>YouTube</span>
</a>
</div>
</div>
{/* Copyright Bar */}
<div className="border-t border-white/20 mt-12 pt-6 flex flex-col sm:flex-row justify-between items-center text-xs text-stone-300">
<p>© 2026 TRADHOX Inc. All rights reserved.</p>
<p className="mt-2 sm:mt-0">Empowering verified Indian craftsmanship worldwide.</p>
</div>
</div>
</footer>
{/* END: MainFooter */}
{/* ========================================================================= */}
{/* INTERACTIVE MODALS & DIALOGS */}
{/* ========================================================================= */}

File diff suppressed because it is too large Load diff

View file

@ -5,7 +5,6 @@ export default function PricingPage() {
const { setCurrentPage } = useSeller();
const [calcPrice, setCalcPrice] = useState<number>(1500);
const [isGiTagged, setIsGiTagged] = useState<boolean>(true);
const [activeFaq, setActiveFaq] = useState<number | null>(null);
// Commission is 5% for GI-tagged/artisan heritage, 8% for standard handmade
const commissionRate = isGiTagged ? 0.05 : 0.08;
@ -15,242 +14,104 @@ export default function PricingPage() {
const pillars = [
{
id: 1,
num: '01',
title: 'No registration fee',
desc: 'Start your digital seller journey completely free. We provide seamless Aadhaar and artisan cluster onboarding without subscription charges.',
badge: '₹0 Upfront Cost',
subtextBadge: 'Direct cluster onboarding support',
desc: 'Start your digital seller journey completely free. We provide seamless Aadhaar and artisan cluster onboarding without subscription charges, hidden onboarding fees, or account activation deposits.',
img: '/images/pricing/no-reg-artisan.png',
alt: 'Authentic Indian artisan smiling in a workshop'
icon: 'fa-id-card'
},
{
id: 2,
num: '02',
title: 'No listing fee',
desc: 'Publish your full catalog of authentic handmade creations with zero upfront slot or cataloging charges. All verified artisan products receive equal organic discovery.',
badge: 'Unlimited Listings',
subtextBadge: 'Zero inventory holding caps',
desc: 'Publish your full catalog of authentic handmade creations with zero upfront slot or cataloging charges. All verified artisan products receive equal organic discovery and shelf life across the marketplace.',
img: '/images/pricing/zero-listing-coin.png',
alt: 'Aesthetic brass coin representing zero listing fees'
icon: 'fa-tags'
},
{
id: 3,
num: '03',
title: 'No hidden payments',
title: 'No hidden deductions',
desc: 'Every rupee earned on your verified craft is safeguarded. We guarantee zero hidden deductions with a 100% transparent split on every order.',
badge: '100% Transparent',
subtextBadge: 'Transparent fee breakdown on every order',
desc: 'Every rupee earned on your verified craft is safeguarded. We guarantee zero hidden deductions with a 100% transparent fee split on every order. You see exactly what the buyer pays and what enters your bank account.',
img: '/images/pricing/transparent-weaver.png',
alt: 'Artisan handloom weaver crafting heritage textiles'
icon: 'fa-file-invoice-dollar'
},
{
id: 4,
num: '04',
title: 'Fast settlement',
badge: 'Guaranteed Weekly NEFT',
subtextBadge: 'Direct NEFT / RTGS within 7 days',
desc: 'Receive accelerated disbursements directly into your registered bank account as soon as your craft reaches the customer, keeping your working capital fluid and raw material procurement effortless.',
img: '/images/pricing/fast-settlement.png',
alt: 'Artisan receiving direct electronic payout confirmation'
title: 'Fast 7-day settlement',
desc: 'Receive accelerated disbursements directly into your registered bank account as soon as your craft reaches the customer, keeping your working capital fluid.',
badge: 'Weekly Direct NEFT',
icon: 'fa-bolt-lightning'
},
{
id: 5,
num: '05',
title: 'No penalty',
title: 'No penalization fees',
desc: 'A maker-first community that supports craftsmanship rather than imposing arbitrary SLAs or algorithmic penalty deductions for artisan lead times.',
badge: 'Artisan Protected',
subtextBadge: 'Flexible artisan production schedules',
desc: 'A maker-first community that supports genuine craftsmanship rather than imposing arbitrary SLAs or algorithmic penalty deductions for artisan lead times, handcraft variations, or seasonal cluster weather.',
img: '/images/pricing/no-penalty-craft.png',
alt: 'Craftsmanship protected with artisan friendly timelines'
icon: 'fa-heart-circle-check'
}
];
const faqs = [
{
q: "What is Tradhox's AEO (Authorised Economic Operator) framework, and how does it benefit sellers?",
a: 'Tradhox operates under AEO-certified customs and export logistics facilitation. This grants verified Indian artisan goods fast-track export customs clearance, prioritized cargo screening, and zero unexpected customs handling charges on outbound international consignments.'
},
{
q: 'What is the exact commission rate for GI-tagged and ODOP products?',
a: 'GI-tagged (Geographical Indication) crafts and certified ODOP (One District One Product) items enjoy a preferential reduced marketplace fee of 5%. Standard uncertified handcrafted goods have an 8% flat marketplace platform fee.'
},
{
q: 'How does the 7-day settlement cycle work?',
a: 'Once courier delivery is confirmed at the customer doorstep, the return buffer period begins. Payouts are computed automatically and credited via NEFT/RTGS directly into your verified bank account every 7 days without delay.'
},
{
q: 'Are there any penalties for made-to-order craft delays?',
a: 'No. Tradhox recognizes that intricate handcrafted and handloom items require patient artisan labor. You set your custom crafting lead time on every SKU, and we never penalize genuine makers for handcrafting nuances.'
},
{
q: 'Do I have to pay for marketing or buyer ads?',
a: 'No. Unlike other platforms where sellers must pay for sponsored slots to be seen, Tradhox provides organic discovery, cluster storytelling, and thematic curations completely free of charge.'
}
];
const toggleFaq = (index: number) => {
setActiveFaq(activeFaq === index ? null : index);
};
return (
<div className="pricing-page" style={{ minHeight: '100vh', backgroundColor: '#FCF9F8' }}>
{/* Top Breadcrumb */}
<div className="px-4 py-3" style={{ borderBottom: '1px solid #ECE7E4', backgroundColor: '#FFFFFF' }}>
<div className="container is-max-widescreen">
<nav className="breadcrumb is-small mb-0" aria-label="breadcrumbs">
<ul>
<li>
<a
onClick={() => { setCurrentPage('home'); window.scrollTo(0, 0); }}
className="has-text-grey"
style={{ textDecoration: 'none' }}
>
Home
</a>
</li>
<li className="is-active">
<a aria-current="page" className="has-text-weight-bold" style={{ color: 'var(--trad-maroon)' }}>
Pricing
</a>
</li>
</ul>
</nav>
</div>
</div>
{/* Hero Section */}
<section className="py-6 px-4" style={{ background: 'linear-gradient(180deg, #FBF8F6 0%, #FCF9F8 100%)', borderBottom: '1px solid #E7DED9' }}>
<div className="container is-max-desktop has-text-centered py-4">
<span className="tag is-rounded is-small mb-3" style={{ backgroundColor: '#FBECEE', color: '#791B2C', fontWeight: 700, letterSpacing: '0.08em', padding: '6px 14px' }}>
<div className="pricing-page has-background-white-ter" style={{ minHeight: '100vh' }}>
{/* Hero */}
<section className="py-6 px-4" style={{ background: 'linear-gradient(180deg, #f7eeee 0%, #fcf9f8 100%)', borderBottom: '1px solid #e7ded9' }}>
<div className="container is-max-desktop has-text-centered py-5">
<span className="tag is-rounded is-small mb-3" style={{ backgroundColor: '#f2dede', color: 'var(--trad-maroon)', fontWeight: 700, letterSpacing: '0.08em' }}>
TRANSPARENT ARTISAN COMMERCE
</span>
<h1 className="title is-1 font-serif-trad mb-4" style={{ color: 'var(--trad-maroon)', fontSize: '2.8rem', lineHeight: 1.2 }}>
<h1 className="title is-1 font-serif-trad mb-4" style={{ color: 'var(--trad-maroon)', fontSize: '2.75rem' }}>
Transparent Pricing Built Solely for Maker Prosperity
</h1>
<p className="subtitle is-5 has-text-grey-dark mx-auto mb-6" style={{ maxWidth: '780px', lineHeight: 1.65 }}>
<p className="subtitle is-5 has-text-grey-dark mx-auto mb-6" style={{ maxWidth: '750px', lineHeight: 1.6 }}>
Empowering traditional artisans, GI-tagged clusters, and direct creators across India with 100% transparent fee structures, zero upfront charges, and guaranteed weekly bank payouts.
</p>
<div className="is-flex is-justify-content-center is-align-items-center mb-5" style={{ gap: '1rem', flexWrap: 'wrap' }}>
<button
className="button is-rounded is-large has-text-weight-bold px-6"
onClick={() => { setCurrentPage('signup'); window.scrollTo(0, 0); }}
style={{ backgroundColor: 'var(--trad-maroon)', color: '#ffffff', border: 'none', boxShadow: '0 8px 24px rgba(103,27,38,0.25)', minHeight: '3.25rem' }}
>
Become a seller <i className="fa-solid fa-arrow-right ml-3"></i>
</button>
<button
className="button is-rounded is-large has-text-weight-bold px-6"
onClick={() => {
const calcElem = document.getElementById('pricing-calculator');
if (calcElem) calcElem.scrollIntoView({ behavior: 'smooth' });
}}
style={{ backgroundColor: '#FFFFFF', color: 'var(--trad-maroon)', border: '1.5px solid var(--trad-maroon)' }}
>
Calculate Payout <i className="fa-solid fa-calculator ml-2"></i>
</button>
</div>
<button
className="button is-large is-rounded has-text-weight-bold px-6"
onClick={() => { setCurrentPage('signup'); window.scrollTo(0, 0); }}
style={{ backgroundColor: 'var(--trad-maroon)', color: '#ffffff', border: 'none', boxShadow: '0 8px 24px rgba(103,27,38,0.2)' }}
>
Register as a seller <i className="fa-solid fa-arrow-right ml-3"></i>
</button>
</div>
</section>
{/* 5 Core Pillars in Alternating Zig-Zag Rows */}
{/* 5 Core Pillars */}
<section className="py-6 px-4">
<div className="container is-max-widescreen">
<div className="has-text-centered mb-6">
<span className="has-text-weight-bold is-uppercase" style={{ color: 'var(--trad-bronze)', letterSpacing: '0.1em', fontSize: '0.85rem' }}>
PRO-ARTISAN FEE ARCHITECTURE
</span>
<h2 className="title is-2 font-serif-trad mt-2 mb-3" style={{ color: 'var(--trad-maroon)' }}>
<h2 className="title is-2 font-serif-trad" style={{ color: 'var(--trad-maroon)' }}>
Zero Upfront Costs. Only Pay When You Sell.
</h2>
<p className="has-text-grey-dark mx-auto" style={{ maxWidth: '680px' }}>
Traditional marketplaces charge heavy listing and membership fees. Tradhox changes the rules with a zero-risk model crafted specifically for India&apos;s heritage makers.
<p className="has-text-grey-dark">
Traditional marketplaces charge heavy listing and membership fees. Tradhox changes the rules for India's creators.
</p>
</div>
<div className="zigzag-rows-container">
{pillars.map((p, idx) => {
const isEven = idx % 2 === 1;
return (
<div
key={p.id}
className="benefit-zigzag-card mb-6"
style={{
backgroundColor: '#FFFFFF',
borderRadius: '20px',
border: '1px solid #ECE7E4',
boxShadow: '0 6px 20px rgba(0,0,0,0.03)',
overflow: 'hidden'
}}
>
<div className={`columns is-vcentered m-0 ${isEven ? 'is-flex-direction-row-reverse-tablet' : ''}`}>
{/* Text Column */}
<div className="column is-7 p-6">
<div className="is-flex is-align-items-center mb-3" style={{ gap: '0.75rem' }}>
<span
style={{
fontSize: '0.9rem',
fontWeight: 800,
color: 'var(--trad-maroon)',
backgroundColor: '#FBECEE',
padding: '4px 10px',
borderRadius: '8px'
}}
>
{p.num}
</span>
<span className="tag is-success is-light is-rounded has-text-weight-bold" style={{ fontSize: '0.8rem' }}>
<i className="fa-solid fa-circle-check mr-1"></i> {p.badge}
</span>
</div>
<h3 className="title is-3 mb-3 font-serif-trad" style={{ color: '#2B2523' }}>
{p.title}
</h3>
<p className="has-text-grey-dark mb-4" style={{ fontSize: '1.05rem', lineHeight: 1.7 }}>
{p.desc}
</p>
<div
className="is-inline-flex is-align-items-center px-3 py-2"
style={{
backgroundColor: '#F7F5F3',
borderRadius: '8px',
border: '1px solid #EBE6E2',
gap: '0.5rem',
fontSize: '0.88rem',
fontWeight: 600,
color: '#4A4340'
}}
>
<i className="fa-solid fa-shield-halved" style={{ color: 'var(--trad-teal)' }}></i>
<span>{p.subtextBadge}</span>
</div>
</div>
{/* Image Column */}
<div className="column is-5 p-0" style={{ minHeight: '280px', backgroundColor: '#F5F2EF' }}>
<img
src={p.img}
alt={p.alt}
style={{ width: '100%', height: '100%', minHeight: '300px', objectFit: 'cover', display: 'block' }}
/>
<div className="columns is-multiline">
{pillars.map((p, i) => (
<div key={i} className="column is-4-desktop is-6-tablet">
<div className="box p-5 is-flex is-flex-direction-column" style={{ height: '100%', borderRadius: '12px', border: '1px solid #e7ded9' }}>
<div className="is-flex is-justify-content-between is-align-items-center mb-4">
<div style={{ width: '42px', height: '42px', borderRadius: '10px', backgroundColor: '#faeef0', display: 'flex', alignItems: 'center', justifyContent: 'center', color: 'var(--trad-maroon)', fontSize: '1.25rem' }}>
<i className={`fa-solid ${p.icon}`}></i>
</div>
<span className="tag is-success is-light is-rounded has-text-weight-bold" style={{ fontSize: '0.75rem' }}>
{p.badge}
</span>
</div>
<h3 className="title is-5 mb-2" style={{ color: '#2b2523' }}>
{p.title}
</h3>
<p className="has-text-grey-dark is-size-6" style={{ lineHeight: 1.6 }}>
{p.desc}
</p>
</div>
);
})}
</div>
))}
</div>
</div>
</section>
{/* Interactive Artisan Profit Calculator */}
<section id="pricing-calculator" className="py-6 px-4" style={{ backgroundColor: '#FFFFFF', borderTop: '1px solid #ECE7E4', borderBottom: '1px solid #ECE7E4' }}>
{/* Interactive Fee & Payout Calculator */}
<section className="py-6 px-4" style={{ backgroundColor: '#ffffff', borderTop: '1px solid #e7ded9', borderBottom: '1px solid #e7ded9' }}>
<div className="container is-max-desktop">
<div className="has-text-centered mb-5">
<span className="tag is-warning is-light is-rounded has-text-weight-bold mb-2" style={{ padding: '6px 14px' }}>
<span className="tag is-warning is-light is-rounded has-text-weight-bold mb-2">
ARTISAN PROFIT CALCULATOR
</span>
<h2 className="title is-2 font-serif-trad" style={{ color: 'var(--trad-maroon)' }}>
@ -261,83 +122,49 @@ export default function PricingPage() {
</p>
</div>
<div className="box p-6" style={{ border: '1px solid #E2DBD6', borderRadius: '20px', backgroundColor: '#FCF9F8', boxShadow: '0 8px 28px rgba(0,0,0,0.04)' }}>
<div className="box p-6" style={{ border: '1px solid #e7ded9', borderRadius: '16px', backgroundColor: '#fcf9f8' }}>
<div className="columns is-vcentered">
{/* Controls Column */}
<div className="column is-6 pr-5">
<div className="field mb-5">
<div className="is-flex is-justify-content-between is-align-items-center mb-2">
<label htmlFor="calc-price-input" className="label has-text-weight-semibold mb-0">Your Product Selling Price ()</label>
<span className="has-text-weight-bold" style={{ color: 'var(--trad-maroon)', fontSize: '1.2rem' }}>
{calcPrice.toLocaleString('en-IN')}
</span>
</div>
<div className="control has-icons-left mb-3">
<label className="label has-text-weight-semibold">Your Product Selling Price ()</label>
<div className="control has-icons-left">
<input
id="calc-price-input"
type="number"
className="input is-medium has-text-weight-bold"
value={calcPrice}
onChange={(e) => setCalcPrice(Math.max(0, Number(e.target.value)))}
style={{ borderColor: 'var(--trad-border)', borderRadius: '10px' }}
style={{ borderColor: 'var(--trad-border)' }}
/>
<span className="icon is-left has-text-weight-bold" style={{ color: 'var(--trad-maroon)' }}></span>
</div>
<input
type="range"
min="200"
max="25000"
step="100"
value={calcPrice}
onChange={(e) => setCalcPrice(Number(e.target.value))}
aria-label="Price range slider"
className="w-full"
style={{ width: '100%', accentColor: 'var(--trad-maroon)', cursor: 'pointer' }}
/>
<div className="is-flex is-justify-content-between is-size-7 has-text-grey mt-1">
<span>200</span>
<span>12,500</span>
<span>25,000+</span>
</div>
</div>
<div className="field mb-4">
<label className="label has-text-weight-semibold mb-2">Heritage Classification</label>
<div className="control">
<label className="checkbox is-flex is-align-items-center p-3" style={{ backgroundColor: '#FFFFFF', borderRadius: '10px', border: '1px solid #E2DBD6' }}>
<label className="checkbox is-flex is-align-items-center">
<input
type="checkbox"
checked={isGiTagged}
onChange={(e) => setIsGiTagged(e.target.checked)}
className="mr-3"
className="mr-2"
style={{ accentColor: 'var(--trad-maroon)', transform: 'scale(1.2)' }}
/>
<div>
<p className="has-text-weight-semibold" style={{ color: '#2B2523', fontSize: '0.95rem' }}>
GI-Tagged / Artisan Certified
</p>
<p className="is-size-7 has-text-grey">
Reduced 5% fee tier for verified craft clusters &amp; cooperatives
</p>
</div>
<span className="is-size-6">
GI-Tagged / Artisan Certified (Reduced 5% fee tier)
</span>
</label>
</div>
</div>
<p className="is-size-7 has-text-grey mt-4" style={{ lineHeight: 1.5 }}>
<p className="is-size-7 has-text-grey mt-4">
*Standard handmade crafts without GI certification have an 8% flat marketplace platform fee. Payment gateway fee is ~1.5%.
</p>
</div>
{/* Summary Card Column */}
<div className="column is-6">
<div className="box p-5" style={{ backgroundColor: '#FFFFFF', border: '1px solid #E2DBD6', borderRadius: '16px', boxShadow: '0 4px 16px rgba(0,0,0,0.03)' }}>
<div className="is-flex is-justify-content-between is-align-items-center mb-4">
<h4 className="title is-5 mb-0 has-text-grey-dark">Order Payout Breakdown</h4>
<span className="tag is-info is-light is-rounded has-text-weight-bold" style={{ fontSize: '0.75rem' }}>
7-Day Settlement
</span>
</div>
<div className="box p-5" style={{ backgroundColor: '#ffffff', border: '1px solid #e7ded9', borderRadius: '12px' }}>
<h4 className="title is-5 mb-4 has-text-grey-dark">Order Payout Breakdown</h4>
<div className="is-flex is-justify-content-between mb-3">
<span className="has-text-grey">Gross Selling Price:</span>
@ -356,21 +183,16 @@ export default function PricingPage() {
<span className="has-text-danger has-text-weight-semibold">- {paymentGatewayFee.toLocaleString('en-IN')}</span>
</div>
<hr style={{ margin: '1rem 0', backgroundColor: '#E7DED9' }} />
<hr style={{ margin: '1rem 0', backgroundColor: '#e7ded9' }} />
<div className="is-flex is-justify-content-between is-align-items-center">
<div>
<p className="has-text-weight-bold" style={{ color: 'var(--trad-maroon)', fontSize: '1.25rem' }}>Net Bank Payout</p>
<p className="is-size-7 has-text-grey">Credited in 7 days after delivery</p>
</div>
<div className="has-text-right">
<span className="has-text-weight-bold" style={{ fontSize: '1.9rem', color: 'var(--trad-teal)' }}>
{netEarnings.toLocaleString('en-IN')}
</span>
<p className="is-size-7 has-text-success has-text-weight-semibold">
{( (netEarnings / (calcPrice || 1)) * 100 ).toFixed(1)}% Take-Home
</p>
</div>
<span className="has-text-weight-bold" style={{ fontSize: '1.75rem', color: 'var(--trad-teal)' }}>
{netEarnings.toLocaleString('en-IN')}
</span>
</div>
</div>
</div>
@ -379,147 +201,61 @@ export default function PricingPage() {
</div>
</section>
{/* Reliable Settlements Without Delays */}
<section className="py-6 px-4" style={{ backgroundColor: '#FAF8F6', borderBottom: '1px solid #ECE7E4' }}>
<div className="container is-max-widescreen">
<div className="has-text-centered mb-6">
<span className="has-text-weight-bold is-uppercase" style={{ color: 'var(--trad-teal)', letterSpacing: '0.1em', fontSize: '0.85rem' }}>
CASH FLOW PREDICTABILITY
</span>
<h2 className="title is-2 font-serif-trad mt-2" style={{ color: 'var(--trad-maroon)' }}>
Reliable Settlements Without Delays
</h2>
<p className="has-text-grey-dark mx-auto" style={{ maxWidth: '640px' }}>
We understand artisan workshops rely on steady liquidity for raw materials, natural dyes, and weaver daily wages.
</p>
</div>
<div className="columns">
<div className="column is-6">
<div className="box p-5 is-flex is-flex-direction-column" style={{ height: '100%', borderRadius: '16px', border: '1px solid #E2DBD6' }}>
<div className="is-flex is-align-items-center mb-3" style={{ gap: '1rem' }}>
<div style={{ width: '48px', height: '48px', borderRadius: '12px', backgroundColor: '#EDF0FB', color: 'var(--trad-navy)', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '1.3rem' }}>
<i className="fa-solid fa-calendar-check"></i>
</div>
<div>
<h4 className="title is-5 mb-1" style={{ color: '#1B2667' }}>Standard 7-Day Cycle</h4>
<span className="tag is-success is-light is-rounded has-text-weight-bold" style={{ fontSize: '0.72rem' }}>
All Verified Sellers
</span>
</div>
</div>
<p className="has-text-grey-dark" style={{ lineHeight: 1.6 }}>
Direct NEFT/RTGS settlement to your verified bank account exactly 7 days after verified customer delivery. Every order details shipping, customer delivery proof, and exact net credit without deductions.
</p>
</div>
</div>
<div className="column is-6">
<div className="box p-5 is-flex is-flex-direction-column" style={{ height: '100%', borderRadius: '16px', border: '1px solid #E2DBD6' }}>
<div className="is-flex is-align-items-center mb-3" style={{ gap: '1rem' }}>
<div style={{ width: '48px', height: '48px', borderRadius: '12px', backgroundColor: '#FBECEE', color: 'var(--trad-maroon)', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: '1.3rem' }}>
<i className="fa-solid fa-bolt-lightning"></i>
</div>
<div>
<h4 className="title is-5 mb-1" style={{ color: 'var(--trad-maroon)' }}>Instant GI / Cluster Liquidity</h4>
<span className="tag is-warning is-light is-rounded has-text-weight-bold" style={{ fontSize: '0.72rem' }}>
Cooperative Fast-Track
</span>
</div>
</div>
<p className="has-text-grey-dark" style={{ lineHeight: 1.6 }}>
Preferential 48-hour disbursals for verified cooperatives, master craftsperson guilds, and state-registered artisan societies to keep workshop looms and kilns continually supplied.
</p>
</div>
</div>
</div>
</div>
</section>
{/* Accordion FAQ: AEO, Customs & Seller Pricing Questions */}
{/* AEO & Customs Compliance Info */}
<section className="py-6 px-4">
<div className="container is-max-desktop">
<div className="has-text-centered mb-6">
<span className="has-text-weight-bold is-uppercase" style={{ color: 'var(--trad-bronze)', letterSpacing: '0.1em', fontSize: '0.85rem' }}>
FREQUENTLY ASKED · EXPORT &amp; CHARGES
Frequently Asked · AEO &amp; Export Compliance
</span>
<h2 className="title is-2 font-serif-trad mt-2" style={{ color: 'var(--trad-maroon)' }}>
AEO, Customs &amp; Seller Pricing Questions
</h2>
<p className="has-text-grey-dark">
Clear answers regarding export clearances, logistics costs, and seller fee structures.
</p>
</div>
<div className="accordion-wrapper">
{faqs.map((f, i) => {
const isOpen = activeFaq === i;
return (
<div
key={i}
className="box p-0 mb-4"
style={{
border: '1px solid #E2DBD6',
borderRadius: '14px',
overflow: 'hidden',
transition: 'border-color 0.2s ease'
}}
>
<button
type="button"
onClick={() => toggleFaq(i)}
className="is-flex is-justify-content-between is-align-items-center w-full p-5"
style={{
width: '100%',
background: isOpen ? '#FAF8F6' : '#FFFFFF',
border: 'none',
textAlign: 'left',
cursor: 'pointer'
}}
aria-expanded={isOpen}
>
<span className="has-text-weight-bold" style={{ color: '#1B2667', fontSize: '1.05rem' }}>
{f.q}
</span>
<span className="icon has-text-grey ml-3">
<i className={`fa-solid ${isOpen ? 'fa-chevron-up' : 'fa-chevron-down'}`}></i>
</span>
</button>
<div className="content">
<div className="box p-5 mb-4" style={{ border: '1px solid #e7ded9' }}>
<h4 className="title is-5 mb-2" style={{ color: 'var(--trad-navy)' }}>
What is Tradhox's AEO (Authorised Economic Operator) framework, and how does it benefit sellers?
</h4>
<p className="has-text-grey-dark">
Tradhox operates under AEO-certified customs and export logistics facilitation. This grants verified Indian artisan goods fast-track export customs clearance, prioritized cargo screening, and zero unexpected customs handling charges on outbound international consignments.
</p>
</div>
{isOpen && (
<div className="p-5" style={{ borderTop: '1px solid #ECE7E4', backgroundColor: '#FFFFFF' }}>
<p className="has-text-grey-dark" style={{ lineHeight: 1.7, fontSize: '0.95rem' }}>
{f.a}
</p>
</div>
)}
</div>
);
})}
<div className="box p-5 mb-4" style={{ border: '1px solid #e7ded9' }}>
<h4 className="title is-5 mb-2" style={{ color: 'var(--trad-navy)' }}>
How does the 7-day settlement cycle work?
</h4>
<p className="has-text-grey-dark">
Once courier delivery is confirmed at the customer doorstep, the return buffer period begins. Payouts are computed automatically and credited via NEFT/RTGS into your registered bank account every Tuesday.
</p>
</div>
<div className="box p-5 mb-4" style={{ border: '1px solid #e7ded9' }}>
<h4 className="title is-5 mb-2" style={{ color: 'var(--trad-navy)' }}>
Do I have to pay for marketing or buyer ads?
</h4>
<p className="has-text-grey-dark">
No. Unlike other platforms where sellers must pay for sponsored slots to be seen, Tradhox gives equal organic showcase to all authentic artisan workshops.
</p>
</div>
</div>
{/* Bottom CTA Banner */}
<div
className="box has-text-centered py-6 px-5 mt-6"
style={{
background: 'linear-gradient(135deg, #671B26 0%, #791B2C 100%)',
color: '#ffffff',
borderRadius: '20px',
boxShadow: '0 12px 32px rgba(103,27,38,0.25)'
}}
>
{/* Bottom CTA */}
<div className="box has-text-centered py-6 px-4 mt-6" style={{ background: 'linear-gradient(135deg, var(--trad-maroon) 0%, var(--trad-burgundy) 100%)', color: '#ffffff', borderRadius: '16px' }}>
<h2 className="title is-2 font-serif-trad mb-3" style={{ color: '#ffffff' }}>
Ready to grow your craft brand?
Ready to start selling your authentic creations?
</h2>
<p className="subtitle is-5 mb-5" style={{ color: '#FAD4D8', maxWidth: '640px', margin: '0 auto', lineHeight: 1.6 }}>
Join thousands of authentic Indian artisans. Zero upfront registration, zero listing fees, and guaranteed 7-day bank payouts.
<p className="subtitle is-5 mb-5" style={{ color: '#fad4d8', maxWidth: '600px', margin: '0 auto' }}>
No upfront charges. No hidden contracts. Just fair craft trade.
</p>
<button
className="button is-rounded is-large has-text-weight-bold px-6"
onClick={() => { setCurrentPage('signup'); window.scrollTo(0, 0); }}
style={{ backgroundColor: '#ffffff', color: 'var(--trad-maroon)', border: 'none', boxShadow: '0 4px 16px rgba(0,0,0,0.1)' }}
style={{ backgroundColor: '#ffffff', color: 'var(--trad-maroon)', border: 'none' }}
>
Become a seller <i className="fa-solid fa-arrow-right ml-2"></i>
Join Tradhox Today
</button>
</div>
</div>