Skip to main content

Design System

Artbase uses a consistent design system across all applications. This guide covers colors, typography, components, and patterns.

Color Palette

Brand Colors

NameHexUsage
Soft Sand#F5F0E8Backgrounds
Ink Charcoal#2D2D2DText, headings
Studio Coral#FF6F5EPrimary actions, CTAs
Muted Teal#4A9B8CSecondary actions, success
Warm Terracotta#C67B5CAccents, highlights

Semantic Colors

--color-success: #4A9B8C;
--color-warning: #F5A623;
--color-error: #E74C3C;
--color-info: #3498DB;

Usage in Tailwind

<button className="bg-studio-coral text-white hover:bg-studio-coral/90">
Add to Cart
</button>

<div className="bg-soft-sand text-ink-charcoal">
Content area
</div>

Typography

Font Stack

--font-sans: 'Inter', system-ui, sans-serif;
--font-display: 'Playfair Display', serif;
--font-mono: 'JetBrains Mono', monospace;

Heading Scale

LevelSizeWeightUsage
H12.5rem700Page titles
H22rem600Section headers
H31.5rem600Subsections
H41.25rem500Card titles

Body Text

  • Regular: 1rem (16px), 400 weight
  • Small: 0.875rem (14px), 400 weight
  • Caption: 0.75rem (12px), 400 weight

Spacing

Use Tailwind's spacing scale consistently:

TokenValueUsage
space-10.25remTight spacing
space-20.5remInline elements
space-41remComponent padding
space-61.5remSection margins
space-82remLarge gaps

Components

Buttons

// Primary
<Button variant="primary">Add to Cart</Button>

// Secondary
<Button variant="secondary">View Details</Button>

// Ghost
<Button variant="ghost">Cancel</Button>

// Destructive
<Button variant="destructive">Delete</Button>

Inputs

<Input
label="Email"
type="email"
placeholder="artist@example.com"
error={errors.email}
/>

Cards

<Card>
<CardHeader>
<CardTitle>Product Title</CardTitle>
</CardHeader>
<CardContent>
Card content here
</CardContent>
<CardFooter>
<Button>Action</Button>
</CardFooter>
</Card>

Icons

Using Lucide React icons:

import { ShoppingCart, Heart, Share2 } from 'lucide-react';

<ShoppingCart className="w-5 h-5" />
<Heart className="w-5 h-5 text-studio-coral" />

Icon Sizes

ContextSizeClass
Inline16pxw-4 h-4
Button20pxw-5 h-5
Navigation24pxw-6 h-6
Feature32pxw-8 h-8

Layout Patterns

Page Layout

<div className="min-h-screen bg-soft-sand">
<Header />
<main className="container mx-auto px-4 py-8">
{children}
</main>
<Footer />
</div>

Grid System

// Product grid
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6">
{products.map(product => (
<ProductCard key={product.id} product={product} />
))}
</div>

Container Widths

SizeMax WidthUsage
sm640pxModals, forms
md768pxContent pages
lg1024pxDashboard
xl1280pxFull layouts

Animations

Transitions

--transition-fast: 150ms ease;
--transition-base: 200ms ease;
--transition-slow: 300ms ease;

Common Animations

// Fade in
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ duration: 0.2 }}
>

// Slide up
<motion.div
initial={{ opacity: 0, y: 10 }}
animate={{ opacity: 1, y: 0 }}
>

Dark Mode

Artbase supports dark mode via Tailwind:

<div className="bg-soft-sand dark:bg-ink-charcoal">
<p className="text-ink-charcoal dark:text-soft-sand">
Content adapts to theme
</p>
</div>

Accessibility

Color Contrast

All color combinations meet WCAG AA standards:

  • Normal text: 4.5:1 minimum
  • Large text: 3:1 minimum

Focus States

.focus-ring {
@apply focus:outline-none focus:ring-2 focus:ring-studio-coral focus:ring-offset-2;
}

Screen Reader Support

<button aria-label="Add to cart">
<ShoppingCart className="w-5 h-5" />
</button>

<span className="sr-only">Loading...</span>

Resources