Agent Skill
2/7/2026

frontend-design

PileTest Pro Design System & Styling Guide. Use this skill when building UI components, pages, or styling for the pile load testing platform. Ensures consistent "Precision Engineering" aesthetic across all interfaces.

N
nirukk52
0GitHub Stars
1Views
npx skills add nirukk52/Pile-Testing-Web-App

SKILL.md

Namefrontend-design
DescriptionPileTest Pro Design System & Styling Guide. Use this skill when building UI components, pages, or styling for the pile load testing platform. Ensures consistent "Precision Engineering" aesthetic across all interfaces.

name: frontend-design description: PileTest Pro Design System & Styling Guide. Use this skill when building UI components, pages, or styling for the pile load testing platform. Ensures consistent "Precision Engineering" aesthetic across all interfaces. license: Complete terms in LICENSE.txt

PileTest Pro – Design System & Styling Guide

Tech Stack: Next.js 14+ (App Router), Tailwind CSS 3.4+, shadcn/ui
Reference: See project_info_and_context/report.html for implementation examples.


1. Design Philosophy

Aesthetic: "Precision Engineering" – Clean, high-contrast, distraction-free.

Core Principle: Clarity over Flash. Field engineers work in bright sunlight; Reviewers analyze dense data.

Shape Language: Slightly rounded corners (rounded-lg), distinct borders, and card-based grouping to separate distinct testing stages.


2. Color Palette

Slate & Blue foundation conveys trust and engineering precision, with Emerald for safety/success indicators.

Primary Colors

NameHexTailwindUsage
Structure Blue#2563ebblue-600Main buttons, active tabs, loading curves on graphs
Midnight Slate#1e293bslate-800Sidebars, mobile headers, primary headings

Functional / Status Colors (IS 2911 Checks)

StatusHexTailwindUsage
Safe / Passed#10b981emerald-500"Passed" badges, Net Settlement within limits, Unloading curves
Warning / Check#f59e0bamber-500Pending Review status, readings approaching safety limits
Fail / Danger#e11d48rose-600"Failed" badges, Delete actions, Settlement exceeding limits

Backgrounds & Neutrals

ElementHexTailwindUsage
App Background#f3f4f6gray-100Reduces eye strain
Card Surface#ffffffwhiteAll card containers
Text Main#1e293bslate-800Primary text
Text Secondary#64748bslate-500Meta information, labels
Borders#e2e8f0slate-200Card borders, dividers

CSS Variables (globals.css)

:root {
  --primary: #2563eb;
  --primary-dark: #1e40af;
  --secondary: #64748b;
  --bg: #f3f4f6;
  --card-bg: #ffffff;
  --text-main: #1e293b;
  --text-light: #64748b;
  --success: #10b981;
  --warning: #f59e0b;
  --destructive: #e11d48;
}

3. Typography

Font Families

ContextFontReason
WebInter, Segoe UIClean, professional readability
MobileSystem DefaultSan Francisco (iOS), Roboto (Android) – feels native
Data Entry / TablesJetBrains Mono, Roboto MonoAligns numerical data in tables

Type Scale

ElementTailwind ClassesMobile Adjustment
Page Titletext-2xl font-bold text-slate-800text-xl
Section Headertext-lg font-bold text-slate-700 uppercase tracking-wide
KPI Valuetext-3xl font-extrabold text-slate-900
Bodytext-sm text-slate-600
Input Texttext-base font-medium text-slate-90016px min (prevents zoom)
Card Labeltext-xs font-bold text-slate-500 uppercase tracking-wide

4. UI Components (Atomic Design)

A. Cards (The Core Container)

Used for: KPI summaries, Graph containers, Reading forms.

// Tailwind classes
className="bg-white rounded-xl border border-slate-200 shadow-sm p-4"

// Mobile: Full width
// Web: Grid layout

B. Buttons

Primary (Submit/Save)

className="bg-blue-600 text-white font-semibold py-3 px-4 rounded-lg shadow-sm hover:bg-blue-700 active:bg-blue-700 transition-colors"

Secondary (Cancel/Back)

className="bg-white text-slate-700 border border-slate-300 font-medium py-3 px-4 rounded-lg hover:bg-gray-50 active:bg-gray-50 transition-colors"

Ghost (Text Link)

className="text-blue-600 font-medium hover:underline"

Download/Export

className="bg-blue-600 text-white px-5 py-2.5 rounded-lg font-semibold text-sm shadow-sm hover:bg-blue-700 transition-colors"

C. Input Fields (Field Data Entry)

Optimized for "Fat Finger" usage in the field.

// Input field
className="h-12 bg-white border border-slate-300 rounded-lg px-3 text-lg w-full focus:border-blue-500 focus:ring-2 focus:ring-blue-200 focus:outline-none"

// Label (above input)
className="text-xs font-bold text-slate-500 uppercase mb-1"

D. Badges (Status Indicators)

Used for Test Status (Ongoing, Review, Signed).

Base shape: rounded-full px-3 py-1 text-xs font-bold uppercase

StatusClasses
Success/Passedbg-emerald-100 text-emerald-700
Pending/Warningbg-amber-100 text-amber-700
Draft/Neutralbg-slate-100 text-slate-600
Failed/Dangerbg-rose-100 text-rose-700

E. Navigation Items (Sidebar)

// Base nav item
className="px-4 py-3 rounded-lg cursor-pointer transition-colors text-slate-400 text-sm flex items-center justify-between"

// Hover state
className="hover:bg-slate-700 hover:text-white"

// Active state
className="bg-blue-600 text-white"

// Status dot (green indicator)
className="h-2 w-2 rounded-full bg-emerald-500"

F. Tables (Data Display)

// Table container
className="overflow-x-auto"

// Table header
className="text-left p-3 bg-slate-50 text-slate-500 font-semibold border-b-2 border-slate-200 text-sm"

// Table cell
className="p-3 border-b border-slate-200 text-slate-800"

// Row hover
className="hover:bg-slate-50"

// Highlighted row (Peak Hold)
className="bg-emerald-50"

5. Data Visualization Style (Chart.js)

For Load vs. Settlement/Deflection charts.

Grid & Axes

{
  grid: { color: '#f1f5f9' }, // Subtle dotted lines
  ticks: { color: '#64748b', font: { size: 11 } }
}

Line Styles

LineStyleColorWidth
Loading PhaseSolid#2563eb2px
Unloading PhaseDashed [5, 5]#10b9812px
Safety LimitDotted#e11d481px

Data Points

{
  pointRadius: 3,
  pointBackgroundColor: '#fff',
  pointBorderColor: '#2563eb', // Match line color
  pointBorderWidth: 2
}

Chart Configuration

options: {
  responsive: true,
  maintainAspectRatio: false,
  scales: {
    y: {
      reverse: true, // Settlement goes DOWN
      suggestedMin: 0,
      suggestedMax: 12
    }
  }
}

6. Layout Patterns

Web Dashboard (Next.js)

Sidebar Layout

// Sidebar (fixed left)
className="w-64 bg-slate-800 text-white p-5 fixed h-full flex flex-col"

// Main content (scrollable)
className="ml-64 flex-1 p-8 bg-gray-100 min-h-screen"

Grid Systems

// KPI Cards
className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-5"

// Main Content (Graph + Specs)
className="grid grid-cols-1 lg:grid-cols-3 gap-5"
// Graph: col-span-2, Specs: col-span-1

Header

className="flex justify-between items-center mb-8"

Mobile Considerations

  • Sidebar collapses to hamburger menu
  • Cards stack vertically (full width)
  • Input fields minimum 16px font (prevents iOS zoom)
  • Touch targets minimum 44px height

7. Report PDF Output Styling

The PDF should mimic Web View, optimized for A4 paper.

Structure

  • Header: Logos left/right, Project Title centered
  • Footer: Page numbers, "Generated by ZedGeo Platform", Sign-off box

Print CSS Guidelines

@media print {
  /* Prevent page breaks inside tables */
  .data-table, .reading-row {
    break-inside: avoid;
  }
  
  /* High-resolution graphs */
  .chart-container {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  
  /* Black text for legal readability */
  body { color: #000; }
  
  /* Preserve colored badges */
  .badge { -webkit-print-color-adjust: exact; }
}

8. shadcn/ui Integration

When using shadcn/ui components, apply these customizations:

Button Variants

// Primary action
<Button className="bg-blue-600 hover:bg-blue-700">Save Report</Button>

// Secondary
<Button variant="outline" className="border-slate-300">Cancel</Button>

Card Component

<Card className="border-slate-200 shadow-sm">
  <CardHeader>
    <CardTitle className="text-lg font-bold text-slate-700">
      Pile Specifications
    </CardTitle>
  </CardHeader>
  <CardContent>...</CardContent>
</Card>

Form Inputs

<Input 
  className="h-12 text-lg border-slate-300 focus:border-blue-500 focus:ring-blue-200" 
/>

Quick Reference: Common Patterns

// KPI Card
<div className="bg-white rounded-xl border border-slate-200 shadow-sm p-5">
  <p className="text-xs font-bold text-slate-500 uppercase tracking-wide">Test Load</p>
  <p className="text-3xl font-extrabold text-slate-900 mt-2">
    367.5 <span className="text-base font-normal">MT</span>
  </p>
  <p className="text-sm text-blue-600 mt-1">2.5x Design Load</p>
</div>

// Status Badge
<span className="rounded-full px-3 py-1 text-xs font-bold uppercase bg-emerald-100 text-emerald-700">
  Passed
</span>

// Section Header
<h3 className="text-lg font-bold text-slate-700 uppercase tracking-wide mb-4">
  Load Increment Summary
</h3>

Brand Element

// ZedGeo Brand (Sidebar)
<div className="text-xl font-bold tracking-wide mb-10">
  <span className="text-blue-600">ZED</span>
  <span className="text-white">GEO</span>
</div>
Skills Info
Original Name:frontend-designAuthor:nirukk52