Animated Stack
Smoothly animate items in and out of a vertical stack
AnimatedItem
Use AnimatedItem to wrap content that should animate in/out
This content stays in place while the above animates.
<AnimatedItem visible={false}>
<div>Your content</div>
</AnimatedItem>
AnimatedStack
Use AnimatedStack to manage multiple items
<AnimatedStack
gap={12}
items={[
{ key: "1", visible: true, content: ... },
{ key: "2", visible: false, content: ... },
]}
/>
Usage
import { AnimatedStack, AnimatedItem } from "@/components/AnimatedStack";
// Single item toggle
<AnimatedItem visible={isVisible}>
<div>Content that animates in/out</div>
</AnimatedItem>
// Multiple items in a stack
<AnimatedStack
gap={16} // Gap between items (px)
duration={0.3} // Animation duration (seconds)
items={[
{ key: "unique-id", visible: true, content: <div>...</div> },
]}
/>Badges
Status and feature badges
Cards
Card components for services, features, and testimonials
Service Cards
Residential
Interior & exterior cleaning
Commercial
Office buildings & high-rises
Storefront
Keep your business inviting
Pricing Cards
One-Time
$185
Monthly
$167
10% off
Bi-Weekly
$157
15% off
Weekly
$148
20% off
Testimonial Card
“Lucent Wash transformed our office building. The windows have never looked better. Professional, punctual, and perfect results!”
Sarah M.
Dallas, TX
Feature Cards
Licensed & Insured
Full coverage for peace of mind
Eco-Friendly
Safe for your family & pets
Flexible Scheduling
Book at your convenience
Color Palette
Electric blue and tropical cyan create a fresh, clean aesthetic
Primary (Electric Blue)
50
#EFF6FF
100
#DBEAFE
200
#BFDBFE
300
#93C5FD
400
#60A5FA
500
#3B82F6
600
#2563EB
700
#1D4ED8
800
#1E40AF
900
#1E3A8A
Accent (Cyan/Water)
accent-300
#67E8F9
accent-400
#22D3EE
accent-500
#06B6D4
Semantic
Success
#10B981
Warning
#F59E0B
Error
#EF4444
Gradients
Hero Gradient
Button Gradient
Water Gradient
Effects & Animations
Sparkles, glass shimmer, and squeegee streak effects
Sparkles
Crystal Clear Views
Twinkling sparkle animation
<Sparkles count={15} minSize={16} maxSize={32} />Import from @/components/SparklesGlass Panel with Shimmer
3D Glass Shimmer
Watch the light sweep across this frosted glass panel
Squeegee Streak Effect
Horizontal streak animation like a squeegee wipe
3D Glass Cards
Residential
Hover to see 3D lift effect
Commercial
Hover to see 3D lift effect
Storefront
Hover to see 3D lift effect
Loading Shimmer
Favicon
Browser tab icons generated from the logo
icon.png (Primary Favicon)
32x32 PNG
/app/icon.png
apple-icon.png
180x180 PNG
/app/apple-icon.png
Favicon Files
/app/icon.png- PNG favicon for modern browsers (32x32)/app/apple-icon.png- Apple Touch Icon (180x180)- Generated from
/public/logo.svg - Next.js automatically generates favicon meta tags from these files
Form Elements
Inputs, selects, and form controls
Select Component
Custom dropdown select with keyboard navigation, animations, and multiple variants.
Status Select
Compact pill-style select for status fields with color indicators.
pendingimport { Select, StatusSelect } from "@/components/Select"; // Basic usage <Select value={value} onChange={setValue} options={[ { value: "residential", label: "Residential" }, { value: "commercial", label: "Commercial" }, ]} placeholder="Select..." size="md" // "sm" | "md" | "lg" variant="default" // "default" | "minimal" | "pill" /> // Status select with colors <StatusSelect value={status} onChange={setStatus} options={[ { value: "pending", label: "Pending", color: "bg-amber-100 text-amber-700" }, { value: "confirmed", label: "Confirmed", color: "bg-blue-100 text-blue-700" }, ]} />
Other Form Elements
Headers
Navigation header variants used across the site. These render the actual Header component.
Main Site Header
Used on: Landing page, service pages<Header variant="main" />
Full Width (resize browser to see breakpoints: xl=1280px+, lg=1024px, mobile=<1024px)
xl (1280px+): All nav items visible, full phone number, "My Account" with icon, "Get Free Quote"
lg (1024-1279px): Services, Pricing + "More" dropdown, phone & account as icons only, "Get Quote"
<lg: Hamburger menu
Subpage Header
Used on: Residential, Commercial, Storefront, Design System<Header variant="subpage" backHref="/" pageLabel="Page Name" />
Resize browser to see responsive behavior: back label and wordmark hide on small screens
Dashboard Header
Used on: Customer dashboard, Admin dashboard, Quote flow<Header variant="dashboard" userEmail="user@example.com" />
Resize browser to see responsive behavior: email hides on small screens
Header Component API
Import:
import Header from "@/components/Header";Props:
variant:"main" | "subpage" | "dashboard"backHref: Back button destination (subpage only)backLabel: Back button text (subpage only)pageLabel: Page name shown after logo (subpage only)userEmail: User email to display (dashboard only)onClose: Close button callback (dashboard only)
Responsive Breakpoints (Main Header):
xl (1280px+): Full text for phone, account, "Get Free Quote"lg (1024px): Icons for phone/account, "Get Quote", "More" dropdown<lg: Hamburger menu with full mobile nav
Logo
Upload your logo.svg to the public folder and it will appear here
App Icon
Used in headers and as a favicon. White logo on cyan-teal gradient background.
64px
48px
40px
32px
24px
<AppIcon size={40} /> - Import from @/components/AppIcon
Logo Wordmark
Combined AppIcon + wordmark for headers and auth pages. Clickable to navigate home.
48px (Auth pages)
40px (Main header)
36px (Dashboard)
32px (Subpage)
<LogoWordmark iconSize={40} /> - Import from @/components/LogoWordmark
Props: iconSize, clickable, href, hideWordmarkOnMobile
On Light Background
On Dark Background
On Brand Gradient
Logo File Requirements
/public/logo.svg- Primary logo (for light backgrounds)/public/logo-white.svg- White version (for dark/gradient backgrounds)- Recommended dimensions: 200x60px (horizontal lockup)
- Minimum clear space: 20px on all sides
Modals
Animated modal dialogs with spring physics and smooth transitions
Centered Modal
Scales up with fade, backdrop blur. Good for forms and content.
Dialog Modal
Confirmation dialogs with title, description, and action buttons.
Fullscreen Modal
Slides up from bottom, covers the whole screen. Used in quote flow.
Usage
import { Modal, FullscreenModal, DialogModal, useModal } from "@/components/Modal";
// Hook for managing modal state
const modal = useModal();
// Centered Modal (forms, content)
<Modal isOpen={modal.isOpen} onClose={modal.close}>
<div className="p-6">Modal content</div>
</Modal>
// Dialog Modal (confirmations)
<DialogModal
isOpen={modal.isOpen}
onClose={modal.close}
title="Confirm"
description="Are you sure?"
actions={<>
<button onClick={modal.close}>Cancel</button>
<button onClick={handleConfirm}>Confirm</button>
</>}
/>
// Fullscreen Modal (multi-step flows)
<FullscreenModal
isOpen={modal.isOpen}
onClose={modal.close}
title="Step 1 of 3"
>
<div>Full page content</div>
</FullscreenModal>OpenGraph Images
Social media preview images for public-facing pages (1200x630px recommended)
Crystal Clear Views, Every Time
Professional Window Washing | DFW Metroplex
Join Our Team
Now Hiring | Part-Time Window Washers | $18-22/hr
Residential Window Cleaning
Streak-Free Windows for Your Home | DFW
Commercial Window Cleaning
Professional Service for Your Business | DFW
Storefront Window Cleaning
Make Your Business Shine | DFW
OpenGraph Image Guidelines
- Recommended size:
1200x630px(1.91:1 aspect ratio) - File format: PNG or JPG, under 8MB
- Place as
opengraph-image.pngin each route folder - Next.js automatically generates og:image meta tags from these files
Shadows
Elevation system using Tailwind shadows
Standard Shadows
shadow-sm
Subtle shadow for cards and inputs
shadow
Default shadow for elevated elements
shadow-md
Medium shadow - used on headers
shadow-lg
Large shadow for modals and dropdowns
shadow-xl
Extra large shadow for prominent cards
shadow-2xl
Largest shadow for hero elements
Colored Shadows
shadow-lg shadow-blue-500/25
Primary CTA buttons
shadow-lg shadow-cyan-500/25
Accent elements
shadow-lg shadow-slate-200/50
Service cards
Inner Shadows
shadow-inner
Inset shadow for pressed states or inputs
shadow-none
Remove shadow (useful for hover states)
Shadow Usage Guidelines
shadow-md- Headers (fixed/sticky navigation)shadow-lg- Cards, dropdowns, modalsshadow-lg shadow-blue-500/25- Primary CTA buttonsshadow-xl- Hover states on cards
Typography
Clean, modern type scale with Inter font family
Display / 60px
Crystal Clear Views
H1 / 48px
Professional Window Cleaning
H2 / 36px
Our Services
H3 / 24px
Residential Cleaning
Body Large / 18px
We provide streak-free, sparkling clean windows for your home or business.
Body / 16px
Serving the entire DFW metroplex with reliable, professional window cleaning services.
Small / 14px
© 2025 Lucent Wash. All rights reserved. Privacy Policy | Terms of Service