Design system
Style guide
BallcapBuddy uses a monochrome luxury visual language, CSS variables shared with shadcn/ui (New York style), and Tailwind CSS v4. This page documents tokens, patterns, components, and routes used across the site.
Brand
Positioning in code and copy: high-end headwear preservation — architectural, precise, timeless. The UI stays strictly black, white, and gray; accent is structural (borders, glass surfaces), not decorative color.
Design tokens
Semantic colors are defined in src/app/globals.css as :root CSS variables and mapped into Tailwind via @theme inline. Radius is 0rem at the theme level (sharp geometry); individual components may use rounded classes where specified (e.g. cards).
background
Page canvas
foreground
card
muted
muted-foreground
primary
secondary
accent
destructive
border
ring
Typography
Body font: Inter (variable --font-inter), loaded in root layout with weights 300–900. Tailwind maps font-sans to Inter.
text-4xl font-bold
Preserve the silhouette
text-2xl font-semibold
Section title
text-base (default body)
Muted body copy uses text-muted-foreground for hierarchy without introducing new hues.
text-sm
Supporting text, form labels, table cells
text-xs uppercase tracking-widest
Eyebrow / category
Layout & spacing
- Primary content width:
max-w-[1400px] mx-auto px-6 sm:px-10(matches header and footer). - Marketing pages:
min-h-screen bg-backgroundon<main>.
Custom CSS utilities
Defined in globals.css for product and hero surfaces.
.liquid-glass — frosted panel, subtle border and inset highlights
.liquid-glass-image — image well / upper card region
.shimmer-on-hover — parent must be relative overflow-hidden
Also: @keyframes marquee, .no-scrollbar, themed ::-webkit-scrollbar (8px track).
UI components
Primitives live in src/components/ui/. The project uses shadcn/ui New York style, lucide-react for icons, and Radix primitives under the hood.
Buttons
Badges
Form controls
Tabs
Card
Cards use bg-card, border, and optional shadow.
Additional installed components include: accordion, alert-dialog, avatar, breadcrumb, calendar, carousel, chart, command, context-menu, dialog, drawer, dropdown-menu, hover-card, input-otp, menubar, navigation-menu, pagination, popover, progress, radio-group, resizable, scroll-area, sheet, sidebar, skeleton, sonner, table, textarea, toast, and tooltip — same design tokens apply.
Marketing page composition
The home page composes these sections in order (see src/app/page.tsx):
- Header — logo, nav (Story, Introduction, Linktree, Craft anchor), Shop Now CTA, reseller login
- HeroSection
- TargetGroupsSection
- ProblemSolutionSection
- BrandSlider
- StorySection
- ProductSection
- CraftsmanshipSection
- PurchaseSection
- Footer — columns, social, legal strip
Header marketing nav uses GSAP for entrance animation; the Shop Now control uses GSAP for magnetic hover and click particles. Footer uses explicit hex grays (#0a0a0a, #666, #888) for consistency with the wordmark.
Routes
Public
/Home — hero, segments, brand slider, product, craft, purchase/storyBrand story timeline/introductionProduct introduction steps/linktreeLink hub/shopProduct listing/shop/[id]Product detail/cartShopping cart/checkoutCheckout/checkout/paymentPayment step/checkout/successOrder confirmation/loginSign in/reseller/loginReseller login/registerRegistration/galleryImage and video gallery/style-guidesThis style bookDashboard
/dashboardReseller home/dashboard/ordersOrders/dashboard/productsProducts/dashboard/customersCustomers/dashboard/analyticsAnalytics/dashboard/settingsSettings/dashboard/helpHelp/dashboard/marketingMarketing hub/dashboard/marketing/emailEmail/dashboard/marketing/campaignsCampaigns/dashboard/marketing/trackingTracking/dashboard/marketing/deliverabilityDeliverabilityAdmin
/adminAdminTechnical stack
- Next.js (App Router), React, TypeScript
- Tailwind CSS v4 +
tw-animate-css - shadcn/ui (New York), Radix UI, class-variance-authority, tailwind-merge
- Convex (data, auth) — see
convex/ - GSAP (header / story / introduction motion)
- Vercel Analytics (production)