Lucent Wash Logo
Lucent Wash

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

Stack Item 1

Click the buttons above to toggle visibility

Stack Item 2

Click the buttons above to toggle visibility

<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

Licensed Insured 5-Star Rated Eco-FriendlyNewPopular

Buttons

All button variants, sizes, and states

Primary Button

Sizes

With Icons

States

Secondary Button

Sizes

With Icons

States

Ghost Button

Sizes

With Icons

Icon Buttons

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

Most Popular

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/Sparkles

Glass 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)

Icon

32x32 PNG

/app/icon.png

apple-icon.png

Apple Icon

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.

pending

import { 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" />

Lucent Wash Logo
Lucent Wash

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" />

Lucent Wash Logo
Lucent Wash

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

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)

Home Page

/opengraph-image.png

LogoLucent Wash

Crystal Clear Views, Every Time

Professional Window Washing | DFW Metroplex

Careers Page

/careers/opengraph-image.png

LogoLucent Wash

Join Our Team

Now Hiring | Part-Time Window Washers | $18-22/hr

Residential Page

/residential/opengraph-image.png

LogoLucent Wash

Residential Window Cleaning

Streak-Free Windows for Your Home | DFW

Commercial Page

/commercial/opengraph-image.png

LogoLucent Wash

Commercial Window Cleaning

Professional Service for Your Business | DFW

Storefront Page

/storefront/opengraph-image.png

LogoLucent Wash

Storefront Window Cleaning

Make Your Business Shine | DFW

Quote Page

/quote/opengraph-image.png

LogoLucent Wash

Get Your Free Quote

Instant Pricing in Under 2 Minutes | Lucent Wash

OpenGraph Image Guidelines

  • Recommended size: 1200x630px (1.91:1 aspect ratio)
  • File format: PNG or JPG, under 8MB
  • Place as opengraph-image.png in each route folder
  • Next.js automatically generates og:image meta tags from these files

Shadows

Elevation system using Tailwind shadows

Standard Shadows

shadow-sm

shadow-sm

Subtle shadow for cards and inputs

shadow

shadow

Default shadow for elevated elements

shadow-md

shadow-md

Medium shadow - used on headers

shadow-lg

shadow-lg

Large shadow for modals and dropdowns

shadow-xl

shadow-xl

Extra large shadow for prominent cards

shadow-2xl

shadow-2xl

Largest shadow for hero elements

Colored Shadows

Blue Shadow

shadow-lg shadow-blue-500/25

Primary CTA buttons

Cyan Shadow

shadow-lg shadow-cyan-500/25

Accent elements

Slate Shadow

shadow-lg shadow-slate-200/50

Service cards

Inner Shadows

shadow-inner

shadow-inner

Inset shadow for pressed states or inputs

shadow-none

shadow-none

Remove shadow (useful for hover states)

Shadow Usage Guidelines

  • shadow-md - Headers (fixed/sticky navigation)
  • shadow-lg - Cards, dropdowns, modals
  • shadow-lg shadow-blue-500/25 - Primary CTA buttons
  • shadow-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

Gradient Text

Crystal Clear Views, Every Time