Skip to main content
Back to site

Style Guide

WeMoveX Design System

A comprehensive guide to the visual language, components, and patterns used across the WeMoveX platform. Built with Tailwind CSS v4, Base UI, and React 19.

Colors

Our color system uses OKLCH color space for perceptual uniformity. The primary pink/rose palette creates a distinctive brand identity.

Core Palette

Chart Colors

Primary Brand Color

Shocking Pink

oklch(0.59 0.22 1)

High chroma pink used for primary actions, CTAs, and brand accents

Usage Guidelines

tsx
// Semantic color usage
<div className="bg-primary text-primary-foreground">Primary button</div>
<div className="bg-muted text-muted-foreground">Secondary content</div>
<div className="border-border">Border color</div>
<div className="bg-destructive text-white">Error state</div>

// Direct CSS variable access
style={{ backgroundColor: 'var(--primary)' }}

Typography

We use Inter for body text and UI elements, with Geist Mono for code and numerical displays.

Font Families

Inter (Sans)
--font-sans

The quick brown fox jumps over the lazy dog

Used for body text, headings, and all UI elements

Geist Mono
--font-geist-mono

1234567890

Used for code, pricing, and tabular data

Type Scale

text-7xlHeading
text-5xlHeading
text-4xlHeading
text-3xlHeading
text-2xlHeading
text-xlHeading
text-lgHeading
text-baseBody text
text-smSmall text
text-xsExtra small text

Font Weights

Normal (400)font-normal
Medium (500)font-medium
Semibold (600)font-semibold
Bold (700)font-bold

Spacing & Border Radius

Consistent spacing and rounded corners create visual harmony across the interface.

Border Radius Scale

radius-smcalc(0.625rem - 4px)
radius-mdcalc(0.625rem - 2px)
radius-lg0.625rem
radius-xlcalc(0.625rem + 4px)
radius-2xlcalc(0.625rem + 8px)
radius-3xlcalc(0.625rem + 12px)
radius-4xlcalc(0.625rem + 16px)

Component Radius Guidelines

  • Buttons, Inputs, Badgesrounded-4xl
  • Cardsrounded-2xl
  • Dropdowns, Select Itemsrounded-xl
  • Textarearounded-xl
  • Alert Dialogsrounded-4xl

Design principle: Higher-level interactive elements (buttons, inputs) use maximum roundness (4xl), while containers (cards, panels) use moderate roundness (2xl) to create visual hierarchy.

Spacing Scale

1
2
3
4
5
6
8
10
12
16
20
24

Spacing values in Tailwind are based on 4px increments (1 = 4px, 2 = 8px, etc.)

Buttons

Built on Base UI primitives with CVA for variant management. All buttons use rounded-4xl for maximum roundness.

Variants

Sizes

Icon Buttons

With Icons

States

Liquid Metal Button

Special animated border effect used for hero CTAs

Get Quote

Usage

tsx
import { Button } from "@/components/ui/button"

// Basic usage
<Button>Click me</Button>

// With variants
<Button variant="outline" size="lg">Large Outline</Button>

// With icons
<Button>
  <SearchIcon data-icon="inline-start" />
  Search
</Button>

// Icon only
<Button size="icon" variant="ghost">
  <XIcon />
</Button>

Inputs

Form inputs with consistent styling, focus states, and validation feedback.

Basic Input

Input with Icons (Input Group)

Textarea

Select

Usage

tsx
import { Input } from "@/components/ui/input"
import { InputGroup, InputGroupAddon, InputGroupInput } from "@/components/ui/input-group"

// Basic input
<Input placeholder="Enter text" />

// Input with icon
<InputGroup>
  <InputGroupAddon align="inline-start">
    <MailIcon className="size-4" />
  </InputGroupAddon>
  <InputGroupInput placeholder="Email" />
</InputGroup>

Cards

Container components for grouping related content with consistent padding and borders.

Basic Card

Card Title
A brief description of the card content goes here.

This is the main content area of the card. You can put any content here including text, images, forms, etc.

Card Sizes

Default Size
Standard padding (py-6, px-6)

Default card with standard spacing for general use.

Small Size
Compact padding (py-4, px-4)

Smaller card for compact layouts.

Usage

tsx
import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from "@/components/ui/card"

<Card>
  <CardHeader>
    <CardTitle>Title</CardTitle>
    <CardDescription>Description</CardDescription>
  </CardHeader>
  <CardContent>Content goes here</CardContent>
  <CardFooter>
    <Button>Action</Button>
  </CardFooter>
</Card>

Badges

Small labels for categorization, status indication, and counts.

Variants

DefaultSecondaryOutlineDestructiveGhost

With Icons

VerifiedError

Usage

tsx
import { Badge } from "@/components/ui/badge"

<Badge>Default</Badge>
<Badge variant="secondary">Secondary</Badge>
<Badge variant="outline">Outline</Badge>

Form Patterns

Consistent field layouts with labels, descriptions, and error states.

Field Components

Enter your name as it appears on your ID.

Field Groups

Usage

tsx
import { Field, FieldLabel, FieldDescription, FieldError } from "@/components/ui/field"

<Field>
  <FieldLabel htmlFor="email">Email</FieldLabel>
  <Input id="email" placeholder="john@example.com" />
  <FieldDescription>We'll never share your email.</FieldDescription>
</Field>

// With error
<Field>
  <FieldLabel htmlFor="email">Email</FieldLabel>
  <Input id="email" aria-invalid="true" />
  <FieldError>Please enter a valid email.</FieldError>
</Field>

Brand Assets

Custom illustrated assets that represent WeMoveX's transport services. Each illustration follows a consistent visual language using the brand color palette.

Illustration Style Guide

Visual Style
  • Bold vector illustrations with clean, geometric lines
  • Isometric-style perspective for depth and dimension
  • Stylized shadows using dark navy (#1a1a2e)
  • WeMoveX branding integrated into vehicle illustrations
PColor Palette
#d63c83

Primary Pink

#efd0e0

Light Pink

#ffffff

White

#1a1a2e

Dark Navy

Logo

WeMoveX Logo
SVGlogo.svg

Primary logo on light backgrounds. Uses brand pink gradient.

WeMoveX Logo
SVGlogo.svg (inverted)

Logo on dark backgrounds using CSS invert filter.

Vehicle Type Illustrations

12 custom illustrations representing different transport categories. Each PNG has a transparent background for flexible use on various backgrounds.

Most PopularCars, SUV's & 4WD's

Cars, SUV's & 4WD's

Reliable transport for standard passenger vehicles, ensuring safe and efficient delivery for everyday cars and smaller SUVs.

/wmx/CARS SUV 4WD.png

Sedans • Hatches • SUVs • 4WDs • Station Wagons • Utes

High DemandOversized Vehicles

Oversized Vehicles

Specialised transport for vans, oversized passenger vehicles, utility vehicles and mine spec vehicles.

/wmx/VANS 4WD.png

Large SUVs • Vans • Cab Chassis • Mini Bus • Camper Vans

Non-Running OKSalvage Vehicles

Salvage Vehicles

Transport for damaged or non-operational vehicles, including salvage operations from auction yards.

/wmx/SALAVAGE.png

Cars • SUVs • Trucks • Motorbikes • Vans

Adventure ReadyCaravan & Campers

Caravan & Campers

All towable items including camper trailers, caravans and 5th wheelers for your next adventure.

/wmx/CARAVANS CAMPERVANS.png

Caravans • Camper Trailers • 5th Wheelers • Motorhomes

Watercraft ExpertsBoats & Jet Skis

Boats & Jet Skis

Fully enclosed specialised transport for trailered boats and jet skis to any destination.

/wmx/JETSKIS BOATS.png

Boats on Trailer • Jet Skis on Trailer

Towable SpecialistsTrailers & Towables

Trailers & Towables

Secure transport for various trailers and towable equipment, ideal for construction and recreation.

/wmx/TRAILERS.png

Trailers • Semi Trailers • Curtain Siders • Tankers

Heavy DutyTrucks & Buses

Trucks & Buses

Heavy-duty transport solutions for commercial trucks and passenger buses across Australia.

/wmx/BUSES TRUCKS.png

Trucks • Buses • Tautliners • Semi Trailers • Rigids

Enclosed TransportMotorbikes & Quads

Motorbikes & Quads

Dedicated personalised service for two-wheeled bikes, quads and trikes. Fully enclosed transport.

/wmx/MOTORBIKES.png

Motorcycles • Quads • Trikes • eBikes • Bicycles

Industrial GradeHeavy Machinery

Heavy Machinery

Robust transport for mining and heavy industrial machinery, handling extreme weights and sizes.

/wmx/MINING HEAVY MACHINERY.png

Excavators • Cranes • Tractors • Bulldozers • Bobcats

Warehouse SolutionsForklifts & Cranes

Forklifts & Cranes

Any industrial lifting equipment for warehouses and construction sites. If it has wheels, we move it.

/wmx/FORKLIFTS.png

Forklifts • Stackers • Telehandlers • Cherry Pickers

Any SizeGeneral Freight

General Freight

Versatile freight services for containers and general palletised cargo. From envelopes to containers.

/wmx/GENERAL FRIEGHT CONTAINERS.png

Pallets • Containers • Boxes • Air Freight

Unique ItemsOther Items

Other Items

For all the items we can't list! If it's moveable, we have a solution. Helicopters to train carriages.

/wmx/OTHER.png

Custom Solutions • Specialty Transport

Asset Usage Guidelines

Do
  • • Use on light backgrounds or subtle gradients
  • • Maintain aspect ratio when scaling
  • • Allow sufficient padding around illustrations
  • • Use for service category selection and marketing
Don't
  • • Place on busy or clashing backgrounds
  • • Distort or crop the illustrations
  • • Change the brand colors in the illustrations
  • • Use at extremely small sizes (<60px height)

File Reference

tsx
// Import path for vehicle illustrations
const imagePath = "/wmx/CARS SUV 4WD.png";

// Usage in Next.js Image component
import Image from "next/image";

<Image 
  src="/wmx/CARS SUV 4WD.png"
  alt="Cars, SUV's & 4WD's"
  width={400}
  height={250}
  className="object-contain"
/>

// Available files in /public/wmx/:
// - BUSES TRUCKS.png
// - CARAVANS CAMPERVANS.png  
// - CARS SUV 4WD.png
// - FORKLIFTS.png
// - GENERAL FRIEGHT CONTAINERS.png
// - JETSKIS BOATS.png
// - MINING HEAVY MACHINERY.png
// - MOTORBIKES.png
// - OTHER.png
// - SALAVAGE.png
// - TRAILERS.png
// - VANS 4WD.png

Animations

Motion adds delight and feedback to interactions. We use Motion (formerly Framer Motion) for complex animations and CSS for simple transitions.

Page Entrance Animations

animate-fade-in-up
animate-fade-in-scale

Header Animations

slide-in-left
slide-in-down
slide-in-right

Special Effects

Liquid Metal Border

Animated Gradient

Marquee Animation

Scrolling testimonials • Client reviews • Partner logos • Scrolling testimonials • Client reviews • Partner logos •

CSS Animation Classes

css
/* Entrance animations */
.animate-fade-in-up { animation: fadeInUp 0.8s ease-out forwards; }
.animate-fade-in-scale { animation: fadeInScale 0.5s ease-out 0.3s forwards; }
.animate-slide-in-left { animation: slideInLeft 0.5s ease-out forwards; }
.animate-slide-in-right { animation: slideInRight 0.5s ease-out forwards; }
.animate-slide-in-down { animation: slideInDown 0.5s ease-out 0.1s forwards; }

/* Continuous animations */
.animate-bounce-slow { animation: bounce 2s ease-in-out infinite; }
.animate-marquee { animation: marquee 30s linear infinite; }

/* Special effects */
.btn-liquid-border::before { animation: liquidMetalShine 20s ease-in-out infinite; }

Style Inconsistencies

Identified areas where styling patterns deviate from the established design system. These should be addressed for better consistency.

Raw color values instead of semantic tokens

Currenttext-neutral-700, bg-neutral-100, border-neutral-200
Suggestedtext-muted-foreground, bg-muted, border-border
Affected files: radio-group.tsx, testimonials.tsx, drawer.tsx, features.tsx

Inconsistent pink color references

Currentpink-500/20, pink-400 (raw Tailwind)
Suggestedprimary/20, primary (semantic tokens)
Affected files: number-counter.tsx

Mixed border-radius values in Drawer

Currentrounded-t-3xl (drawer content)
Suggestedrounded-t-4xl (match dialog and inputs)
Affected files: drawer.tsx

Hardcoded colors in Drawer

Currenttext-neutral-900, text-neutral-500, border-neutral-100, bg-neutral-300
Suggestedtext-foreground, text-muted-foreground, border-border, bg-muted
Affected files: drawer.tsx

Footer uses raw neutral colors

Currenttext-neutral-700, text-neutral-400, border-neutral-200
Suggestedtext-foreground, text-muted-foreground, border-border
Affected files: footer.tsx

Hero uses white/opacity instead of tokens

Currenttext-white/70, text-white/90, bg-white/10
SuggestedConsider creating inverse tokens for dark backgrounds
Affected files: hero.tsx, header.tsx

Rose-600 used directly in Features

Currenttext-rose-600
Suggestedtext-primary
Affected files: features.tsx
Recommended Actions
  1. Create a lint rule to flag raw color values (neutral-*, pink-*, rose-*) in components
  2. Add inverse color tokens for use on dark backgrounds (--foreground-inverse, etc.)
  3. Standardize border-radius to use only the defined scale (rounded-xl, rounded-2xl, rounded-4xl)
  4. Update Drawer component to use semantic color tokens
  5. Audit all landing page components for consistent token usage

Questions about the design system?

This guide is maintained by the WeMoveX development team. For updates or suggestions, reach out via the internal channels.