# Bermadani Design System v1.0

> **Purpose**: Single source of truth for building all frontend pages in Koperasi Bermadani.
> DNA extracted from: FlowOps, Financial SaaS, PaperFlow DESIGN references + existing implementations.
> Targets: 21 Admin pages (Phase 1/1*) + future Phase 2-3 pages.

---

## 1. Brand Identity

| Token | Value | Notes |
|-------|-------|-------|
| **App Name** | Bermadani | Koperasi pegawai — professional, warm, trustworthy |
| **Logo** | `/logo.png` | Used in sidebar + mobile header |
| **Tagline** | Koperasi Digital Modern | |
| **Personality** | Professional warmth | Not corporate-cold, not playful — *trustworthy fintech* |

---

## 2. Color System (60-30-10 Rule)

### Core Palette

```
┌──────────────────────────────────────────────────┐
│  60% DOMINANT — Backgrounds & Surfaces           │
│  ─────────────────────────────────────────────    │
│  Background:  #FAFAFB  (page bg)                 │
│  Surface:     #F4F5F7  (content area, active nav)│
│  Neutral:     #FFFFFF  (cards, header, sidebar)   │
│  Border:      #E5E7EB  (subtle dividers)         │
│                                                    │
│  30% SECONDARY — Brand Teal                       │
│  ─────────────────────────────────────────────    │
│  Primary:     #1F6376  (base brand teal)         │
│  Primary-lt:  #277A91  (gradient start)          │
│  Primary-dk:  #154350  (gradient end)            │
│                                                    │
│  10% ACCENT — Highlights & CTAs                   │
│  ─────────────────────────────────────────────    │
│  Accent:      #F39E20  (orange/yellow)           │
│  Accent-lt:   #F5B04A  (gradient start)          │
│  Accent-dk:   #C97F12  (gradient end)            │
└──────────────────────────────────────────────────┘
```

### Semantic Colors

| Role | Light Value | Usage |
|------|------------|-------|
| **Success** | `emerald-500` (#10B981) | Simpanan naik, payment success |
| **Warning** | `amber-500` (#F59E0B) | Pending approval, attention needed |
| **Danger** | `rose-500` (#F43F5E) | Overdue, rejected, logout |
| **Info** | `sky-500` (#0EA5E9) | Informational badges, tips |
| **Text Primary** | `slate-900` (#0F172A) | Headings, important text |
| **Text Secondary** | `slate-500` (#64748B) | Descriptions, labels |
| **Text Muted** | `slate-400` (#94A3B8) | Placeholders, disabled |

### Gradient Recipes

```css
/* Primary gradient (buttons, digital card) */
bg-gradient-to-br from-[#277A91] via-[#1F6376] to-[#154350]

/* Accent gradient (accent buttons, highlights) */
bg-gradient-to-br from-[#F5B04A] via-[#F39E20] to-[#C97F12]

/* Card inner gradient (emerald — for financial metrics) */
bg-gradient-to-br from-[#f2fdf7] to-[#fbfffb]

/* Card inner gradient (indigo — for analytics/charts) */
bg-gradient-to-br from-[#f3f4fd] to-[#fcfcff]

/* Card inner gradient (amber — for warnings/pending) */
bg-gradient-to-br from-[#fffbf2] to-[#fffef9]

/* Card inner gradient (sky — for info/overview) */
bg-gradient-to-br from-[#f0f9ff] to-[#fbfeff]

/* Secondary button gradient */
bg-gradient-to-b from-white to-slate-50
```

---

## 3. Typography

### Font Stack

```css
--font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;
```

### Type Scale

| Tier | Size | Weight | Line-Height | Letter-Spacing | Usage |
|------|------|--------|-------------|----------------|-------|
| **Display** | `text-2xl` (24px) | `font-bold` (700) | tight | `-0.025em` | Page titles |
| **Title** | `text-xl` (20px) | `font-medium` (500) | tight | `-0.015em` | Card titles |
| **Subtitle** | `text-[15px]` | `font-medium` (500) | snug | default | Section headers |
| **Body** | `text-sm` (14px) | `font-normal` (400) | relaxed | default | General text |
| **Body Small** | `text-[13px]` | `font-medium` (500) | snug | default | Descriptions |
| **Label** | `text-[11px]` | `font-medium` (500) | tight | `0.35px` | Badges, metadata |
| **Mono** | `text-[10px]` font-mono | `font-semibold` (600) | 1.2 | default | Financial data, IDs |

### Text Color Classes

```
Headings:        text-slate-900
Descriptions:    text-slate-500
Placeholders:    text-slate-400
Links:           text-primary hover:text-primary/80
Danger text:     text-rose-500
Success text:    text-emerald-600
```

---

## 4. Spacing System

### Base Unit: `4px`

| Token | Value | Usage |
|-------|-------|-------|
| `gap-1.5` | 6px | Nav item gaps, tight spacing |
| `gap-2` | 8px | Inline element gaps |
| `gap-3` | 12px | Icon-text gaps in nav |
| `gap-4` | 16px | Card inner gaps, form field gaps |
| `gap-6` | 24px | Section gaps, grid gaps |
| `p-3` | 12px | Card outer padding |
| `p-4` | 16px | Mobile content padding |
| `p-5` | 20px | Card inner content padding |
| `p-6` | 24px | Desktop content padding, section padding |
| `px-4 sm:px-8` | 16px → 32px | Header horizontal padding |

### Content Width

```
Max content width: max-w-[1400px] mx-auto
Sidebar width:     lg:w-[260px]
Header height:     h-[80px]
```

---

## 5. Border Radius System

| Token | Value | Usage |
|-------|-------|-------|
| **Card** | `rounded-[2rem]` (32px) | Main content cards |
| **Card Inner** | `rounded-[1.5rem]` (24px) | Inner gradient panels |
| **Button Large** | `rounded-[18px]` | Large CTA buttons |
| **Button Medium** | `rounded-[16px]` | Standard buttons |
| **Control** | `rounded-xl` (12px) | Inputs, nav items, small buttons |
| **Badge/Pill** | `rounded-full` (9999px) | Tags, avatars, status dots |
| **Table Row** | `rounded-lg` (8px) | Table rows on hover |

> **Rule**: Larger surfaces → larger radius. Controls → `xl`. Pills → `full`. Never use `rounded-md` or `rounded-sm` — they break the DNA.

---

## 6. Elevation & Depth

### Shadow System

| Level | Shadow | Usage |
|-------|--------|-------|
| **Card** | `shadow-[0_10px_30px_-10px_rgba(0,0,0,0.06),inset_0_1px_0_white]` | Standard cards |
| **Card Hover** | `shadow-[0_20px_40px_-10px_rgba(0,0,0,0.08),inset_0_1px_0_white]` | Hovered cards |
| **Button Primary** | `shadow-[0_18px_38px_rgba(31,99,118,0.28),inset_0_1px_0_rgba(255,255,255,0.32)]` | Primary buttons |
| **Control** | `shadow-sm` | Inputs, small buttons, badges |
| **Header** | (none, border only) | Top header bar |
| **Mobile Nav** | `shadow-[0_-10px_40px_rgba(0,0,0,0.05)]` | Bottom mobile nav |
| **Inner Panel** | `shadow-[inset_0_2px_15px_rgba(0,0,0,0.02)]` | Card inner gradient areas |

### Glass / Blur

```css
/* Glass card (landing page, overlays) */
.glass-card {
    background: rgba(255, 255, 255, 0.7);
    backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.6);
}

/* Mobile nav blur */
bg-white/90 backdrop-blur-lg
```

### Border Language

```
Cards:           border border-slate-100
Active surfaces: border border-emerald-100/50 (or relevant semantic color)
Header/Sidebar:  border-b border-slate-200/50  |  border-r border-slate-200/60
Controls:        border border-slate-200/60
Dark cards:      border border-white/10
```

---

## 7. Layout Patterns

### Page Shell (Authenticated)

```
┌─────────────────────────────────────────────────────┐
│ ┌──────────┐ ┌────────────────────────────────────┐ │
│ │          │ │  HEADER (80px)                     │ │
│ │ SIDEBAR  │ ├────────────────────────────────────┤ │
│ │ (260px)  │ │                                    │ │
│ │          │ │  CONTENT AREA                      │ │
│ │ Hidden   │ │  max-w-[1400px] mx-auto            │ │
│ │ on       │ │  p-4 sm:p-6                        │ │
│ │ mobile   │ │                                    │ │
│ │          │ │                                    │ │
│ └──────────┘ └────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
```

### Admin Page Layout Pattern

```jsx
<AuthenticatedLayout>
    <Head title="Page Title" />
    <div className="max-w-[1400px] mx-auto flex flex-col gap-6">
        
        {/* Page Header */}
        <div className="flex flex-col sm:flex-row justify-between items-start sm:items-end gap-4 mb-2">
            <div>
                <h1 className="text-2xl font-bold tracking-tight text-slate-900 mb-1">
                    Page Title
                </h1>
                <p className="text-[13px] text-slate-500 font-medium">
                    Page description here.
                </p>
            </div>
            <div className="flex items-center gap-3">
                {/* Action buttons */}
            </div>
        </div>

        {/* Content Grid */}
        <div className="grid grid-cols-1 xl:grid-cols-12 gap-6">
            {/* ... */}
        </div>
    </div>
</AuthenticatedLayout>
```

### Grid Patterns

| Pattern | Classes | Usage |
|---------|---------|-------|
| **Dashboard** | `grid grid-cols-1 xl:grid-cols-12 gap-6` | Main with sidebar stats |
| **Cards Row** | `grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-4` | Stats/KPI cards |
| **List + Detail** | `xl:col-span-8` + `xl:col-span-4` | Table + sidebar summary |
| **Full Width** | `xl:col-span-12` | Full-width tables, forms |
| **Form 2-col** | `grid grid-cols-1 md:grid-cols-2 gap-4` | Form fields layout |
| **Mobile Scroll** | `flex overflow-x-auto snap-x snap-mandatory no-scrollbar` | Horizontal card scroll |

---

## 8. Components

### Card (`<Card>`)

**File**: [Card.jsx](file:///home/tanesheva/Documents/project/bermadani/resources/js/Components/UI/Card.jsx)

| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `dark` | boolean | false | Dark variant using primary color |
| `hover` | boolean | false | Hover animation (lift + shadow) |
| `animate` | boolean | false | Scroll-triggered entrance |
| `innerPadding` | string | "p-3" | Outer padding |
| `className` | string | "" | Additional classes |

**Light card**: White bg, `border-slate-100`, soft shadow, `rounded-[2rem]`
**Dark card**: Primary bg, `border-white/10`, teal shadow

**Card Inner Panel** (the gradient area inside cards):
```jsx
<div className="rounded-[1.5rem] bg-gradient-to-br from-[#f2fdf7] to-[#fbfffb] 
    relative overflow-hidden shadow-[inset_0_2px_15px_rgba(0,0,0,0.02)] 
    border border-emerald-100/50 flex flex-col p-5">
    {/* Chart or metric content */}
</div>
```

### Button (`<Button>`)

**File**: [Button.jsx](file:///home/tanesheva/Documents/project/bermadani/resources/js/Components/UI/Button.jsx)

| Variant | Visual | Use Case |
|---------|--------|----------|
| `primary` | Teal gradient + glossy overlay | Main actions (Save, Submit, Create) |
| `secondary` | White + subtle border | Secondary actions (Cancel, View) |
| `ghost` | Transparent | Tertiary actions (Filter, Options) |
| `accent` | Orange gradient + glossy overlay | Important CTAs (Approve, Disburse) |

| Size | Height | Padding | Radius |
|------|--------|---------|--------|
| `sm` | h-10 | px-4 | rounded-xl |
| `md` | h-12 | px-6 | rounded-[16px] |
| `lg` | h-14 | px-8 | rounded-[18px] |

### Nav Item (Sidebar)

```jsx
<Link className={`
    group flex items-center gap-3 px-4 py-3 text-sm rounded-xl 
    transition-all relative
    ${active 
        ? 'bg-[#F4F5F7] text-slate-900 font-medium' 
        : 'text-slate-500 font-normal hover:bg-slate-50 hover:text-slate-900'}
`}>
    {/* Active indicator bar */}
    <div className={`absolute left-0 top-1/2 -translate-y-1/2 w-1 h-5 
        bg-primary rounded-r-md transition-all duration-300 
        ${active ? 'opacity-100 scale-y-100' : 'opacity-0 scale-y-0'}`} />
    <Icon className="w-[18px] h-[18px]" strokeWidth={1.5} />
    {name}
</Link>
```

### Input / Form Control

```jsx
<input className="w-full bg-white border border-slate-200/60 rounded-xl 
    pl-11 pr-4 py-2.5 text-sm font-normal 
    focus:outline-none focus:ring-1 focus:ring-slate-300 
    placeholder-slate-400 shadow-sm" />
```

### Badge / Tag

```jsx
{/* Success badge */}
<span className="text-[10px] font-bold text-emerald-600 bg-emerald-100/80 
    px-2 py-1 rounded-full shadow-sm">
    AKTIF
</span>

{/* Warning badge */}
<span className="text-[10px] font-bold text-amber-600 bg-amber-100/80 
    px-2 py-1 rounded-full shadow-sm">
    PENDING
</span>

{/* Danger badge */}
<span className="text-[10px] font-bold text-rose-600 bg-rose-100/80 
    px-2 py-1 rounded-full shadow-sm">
    OVERDUE
</span>
```

### Stat/KPI Card

```jsx
<Card hover>
    <div className="rounded-[1.5rem] bg-gradient-to-br from-[#f2fdf7] to-[#fbfffb] 
        shadow-[inset_0_2px_15px_rgba(0,0,0,0.02)] border border-emerald-100/50 
        flex flex-col p-5 mb-3 h-[140px]">
        <div className="flex justify-between items-start">
            <div className="flex items-center gap-2">
                <div className="w-2 h-2 rounded-full bg-emerald-500" />
                <h3 className="text-[13px] font-medium text-slate-700">Label</h3>
            </div>
            <Badge>+5.2%</Badge>
        </div>
        <div className="mt-auto">
            <span className="text-3xl font-medium tracking-tight text-slate-900">
                Rp 12.500.000
            </span>
        </div>
    </div>
    <div className="px-3 pb-2">
        <h3 className="text-xl font-medium tracking-tight text-slate-900">Card Title</h3>
        <p className="text-[13px] text-slate-500 mt-1">Description</p>
    </div>
</Card>
```

### Table (Admin Pages)

```jsx
<div className="bg-white rounded-[2rem] border border-slate-100 
    shadow-[0_10px_30px_-10px_rgba(0,0,0,0.06),inset_0_1px_0_white] overflow-hidden">
    
    {/* Table Header */}
    <div className="px-6 py-4 border-b border-slate-100 flex justify-between items-center">
        <h3 className="text-[15px] font-medium text-slate-900">Table Title</h3>
        <div className="flex items-center gap-2">
            {/* Filters, search, actions */}
        </div>
    </div>
    
    {/* Table Content */}
    <div className="overflow-x-auto">
        <table className="w-full text-sm">
            <thead>
                <tr className="border-b border-slate-100">
                    <th className="text-left text-[11px] font-semibold text-slate-400 
                        uppercase tracking-wider px-6 py-3">Column</th>
                </tr>
            </thead>
            <tbody>
                <tr className="border-b border-slate-50 hover:bg-slate-50/50 
                    transition-colors cursor-pointer">
                    <td className="px-6 py-4 text-sm text-slate-700">Data</td>
                </tr>
            </tbody>
        </table>
    </div>
</div>
```

### Header Action Button (Small)

```jsx
<button className="flex items-center gap-1.5 px-2.5 py-1 text-[11px] font-medium 
    text-slate-700 bg-white rounded-xl border border-slate-200/80 
    hover:bg-slate-50 transition-colors shadow-sm">
    <Plus className="w-3 h-3" />
    Add New
</button>
```

### Profile Chip (Header)

```jsx
<div className="flex items-center gap-3 bg-white border border-slate-200/60 
    rounded-full pr-5 pl-1.5 py-1.5 shadow-sm cursor-pointer 
    hover:bg-slate-50 transition-colors">
    <img src="..." className="w-8 h-8 rounded-full object-cover" />
    <div className="flex flex-col">
        <span className="text-[13px] font-medium text-slate-900 leading-tight">Name</span>
        <span className="text-[11px] text-slate-500 leading-tight">Role</span>
    </div>
</div>
```

---

## 9. Iconography

| Property | Value |
|----------|-------|
| **Library** | Lucide React |
| **Size** | `w-[18px] h-[18px]` (nav), `w-4 h-4` (inline), `w-6 h-6` (mobile nav) |
| **Stroke** | `strokeWidth={1.5}` (default), `strokeWidth={2}` (active) |
| **Style** | Linear (outline) — never filled |
| **Color** | Inherits from parent text color |

### Icon Import Pattern

```jsx
import { 
    LayoutDashboard,   // Dashboard
    Users,             // Members
    WalletCards,       // Simpanan
    HandCoins,         // Loans
    FileText,          // Laporan
    BookOpen,          // Jurnal
    Calendar,          // Fiscal Period
    Settings,          // Settings
    UserCog,           // User Management
    TrendingUp,        // Stats trending up
    TrendingDown,      // Stats trending down
    ArrowUpRight,      // Outgoing
    ArrowDownRight,    // Incoming
    Search,            // Search
    Bell,              // Notifications
    Plus,              // Add/Create
    Eye,               // View/Show
    Pencil,            // Edit
    Trash2,            // Delete
    Check,             // Approve
    X,                 // Reject/Close
    Download,          // Export
    Filter,            // Filter
    ChevronRight,      // Navigation arrow
} from 'lucide-react';
```

---

## 10. Motion & Animation

### Intensity Level: **Refined** (not expressive, not static)

| Pattern | Implementation | Duration |
|---------|---------------|----------|
| **Card Entrance** | `opacity: 0, y: 20 → opacity: 1, y: 0` | 600ms, ease `[0.22, 1, 0.36, 1]` |
| **Card Hover** | `translateY(-4px)` + shadow increase | 500ms |
| **Nav Indicator** | `scaleY(0) → scaleY(1)` + `opacity 0→1` | 300ms |
| **Button Hover** | `translateY(-2px)` + shadow increase | 300ms |
| **Button Active** | `translateY(0) scale(0.99)` | instant |
| **Float Soft** | `translateY(0 → -3px → 0)` | 4-6s infinite |
| **Shimmer** | `opacity 0.3 → 0.7 → 0.3` | 3s infinite |
| **Marquee** | `translateX(0 → -50%)` | 40s linear infinite |

### Easing

```
Default:    cubic-bezier(0.22, 1, 0.36, 1)  — smooth decelerate
Hover:      transition-all duration-300
Spring:     cubic-bezier(0.34, 1.56, 0.64, 1)  — bouncy pop
Linear:     linear (marquee only)
```

### Animation Classes (from app.css)

```
.anim-float          — 4s gentle float
.anim-float-delayed-1 — 5s float (1s delay)
.anim-pulse-soft     — 3s subtle pulse
.anim-bar-{1-5}      — chart bar animations
.anim-shimmer        — 3s opacity shimmer
.animate-marquee     — 40s linear marquee
```

---

## 11. Admin Page Templates

### 11a. Index/List Page (Members, Loans, Simpanan)

```
┌─────────────────────────────────────────────┐
│ Page Header                    [+ Create]   │
│ Description text                            │
├─────────────────────────────────────────────┤
│ ┌─── Stats Row ──────────────────────────┐  │
│ │ [KPI 1] [KPI 2] [KPI 3] [KPI 4]       │  │
│ └────────────────────────────────────────┘  │
│                                             │
│ ┌─── Data Table Card ────────────────────┐  │
│ │ Title               [Search] [Filter]  │  │
│ │ ─────────────────────────────────────  │  │
│ │ TH  TH  TH  TH  TH  TH               │  │
│ │ ─────────────────────────────────────  │  │
│ │ Row 1                        [Actions] │  │
│ │ Row 2                        [Actions] │  │
│ │ Row 3                        [Actions] │  │
│ │ ─────────────────────────────────────  │  │
│ │ Pagination                             │  │
│ └────────────────────────────────────────┘  │
└─────────────────────────────────────────────┘
```

### 11b. Show/Detail Page (Member Detail, Loan Detail)

```
┌─────────────────────────────────────────────┐
│ ← Back   Page Title                        │
├──────────────────────┬──────────────────────┤
│  Profile Card (8col) │  Summary (4col)      │
│  ┌────────────────┐  │  ┌────────────────┐  │
│  │ Avatar + Info  │  │  │ Balance/Status │  │
│  │ Personal Data  │  │  │ Quick Stats    │  │
│  │ Contact Info   │  │  │ Actions        │  │
│  └────────────────┘  │  └────────────────┘  │
├──────────────────────┴──────────────────────┤
│  ┌─── Transaction Table ─────────────────┐  │
│  │ (Full width table below)              │  │
│  └───────────────────────────────────────┘  │
└─────────────────────────────────────────────┘
```

### 11c. Create/Edit Form Page

```
┌─────────────────────────────────────────────┐
│ ← Back   Page Title                        │
├─────────────────────────────────────────────┤
│ ┌─── Form Card ──────────────────────────┐  │
│ │ Section Title                          │  │
│ │ ┌──────────┐ ┌──────────┐              │  │
│ │ │ Field 1  │ │ Field 2  │              │  │
│ │ └──────────┘ └──────────┘              │  │
│ │ ┌──────────┐ ┌──────────┐              │  │
│ │ │ Field 3  │ │ Field 4  │              │  │
│ │ └──────────┘ └──────────┘              │  │
│ │                                        │  │
│ │ ──── Divider ────                      │  │
│ │                                        │  │
│ │ Section Title 2                        │  │
│ │ ┌──────────────────────┐               │  │
│ │ │ Full-width field     │               │  │
│ │ └──────────────────────┘               │  │
│ │                                        │  │
│ │            [Cancel]  [Save/Submit]     │  │
│ └────────────────────────────────────────┘  │
└─────────────────────────────────────────────┘
```

### 11d. Dashboard Overview (Admin)

```
┌─────────────────────────────────────────────┐
│ Admin Overview              [Date Filter]   │
│ Description                                 │
├─────────────────────────────────────────────┤
│ [Total Anggota] [Total Simpanan] [Pinjaman] [SHU] │
│                                             │
│ ┌─── Chart Card (8col) ──┐ ┌─ Side (4col)─┐│
│ │ Trend Simpanan          │ │ Top Members  ││
│ │ ████████████████        │ │ 1. Budi 2.5M ││
│ │                         │ │ 2. Siti 1.8M ││
│ └─────────────────────────┘ └──────────────┘│
│                                             │
│ ┌─── Recent Activity Table ──────────────┐  │
│ │ (Full width)                           │  │
│ └────────────────────────────────────────┘  │
└─────────────────────────────────────────────┘
```

---

## 12. Do's and Don'ts

### ✅ DO

- **DO** use the 60-30-10 color ratio consistently
- **DO** keep spacing aligned to the 4px base rhythm (4, 8, 12, 16, 20, 24)
- **DO** use `rounded-[2rem]` for cards, `rounded-xl` for controls
- **DO** use the `inset_0_1px_0_white` shadow highlight on all white cards
- **DO** use gradient inner panels inside cards for visual depth
- **DO** use `text-[13px]` for descriptions, `text-[11px]` for metadata
- **DO** use Lucide React icons at 18px with `strokeWidth={1.5}`
- **DO** use `transition-all duration-300` for hover states
- **DO** add the primary-colored indicator bar on active nav items
- **DO** use `font-sans` (Inter) everywhere, `font-mono` for financial figures
- **DO** reuse `<Card>` and `<Button>` components — never rebuild from scratch
- **DO** use semantic gradient colors (emerald for success, amber for warning, etc.)

### ❌ DON'T

- **DON'T** use generic Tailwind colors (plain `red-500`, `blue-500`) without semantic meaning
- **DON'T** use `rounded-md` or `rounded-sm` — they break the soft, premium radius system
- **DON'T** introduce flat shadows or `shadow-md/lg` — always use the custom shadow recipes
- **DON'T** mix font sizes arbitrarily — stick to the type scale
- **DON'T** use filled icons — always linear/outline
- **DON'T** add extra accent colors beyond the teal/orange palette
- **DON'T** use dark backgrounds for admin pages (keep them light mode)
- **DON'T** flatten complex layouts into generic card grids
- **DON'T** skip the inner gradient panel — it's what makes cards feel premium vs flat

---

## 13. New Components Needed for Admin Pages

These components should be built following the design system above:

| Component | File Path | Purpose |
|-----------|-----------|---------|
| `AdminLayout` | `@/Layouts/AdminLayout.jsx` | Admin-specific layout with different nav items |
| `DataTable` | `@/Components/UI/DataTable.jsx` | Reusable table with search, filter, pagination |
| `FormCard` | `@/Components/UI/FormCard.jsx` | Card wrapper for form sections |
| `FormInput` | `@/Components/UI/FormInput.jsx` | Styled input with label and error state |
| `FormSelect` | `@/Components/UI/FormSelect.jsx` | Styled select dropdown |
| `StatCard` | `@/Components/UI/StatCard.jsx` | KPI stat card with gradient inner |
| `StatusBadge` | `@/Components/UI/StatusBadge.jsx` | Semantic status badge |
| `Modal` | `@/Components/UI/Modal.jsx` | Confirmation dialogs |
| `Pagination` | `@/Components/UI/Pagination.jsx` | Table pagination |
| `EmptyState` | `@/Components/UI/EmptyState.jsx` | Empty data placeholder |
| `SearchInput` | `@/Components/UI/SearchInput.jsx` | Search with icon |
| `FilterDropdown` | `@/Components/UI/FilterDropdown.jsx` | Filter controls |
| `Tabs` | `@/Components/UI/Tabs.jsx` | Tab navigation |

---

## 14. Page-to-Design Mapping

| Admin Page | Template | Key Gradient | Key Components |
|------------|----------|-------------|----------------|
| Dashboard | 11d Dashboard | sky, emerald | StatCard ×4, Chart, DataTable |
| Members/Index | 11a List | — | DataTable, StatusBadge, SearchInput |
| Members/Create | 11c Form | — | FormCard, FormInput, FormSelect |
| Members/Show | 11b Detail | sky | Profile card, StatCard ×3, DataTable |
| Members/Edit | 11c Form | — | FormCard, FormInput (prefilled) |
| Simpanan/Index | 11a List | emerald | StatCard ×3, DataTable |
| Simpanan/Deposit | 11c Form | emerald | FormCard, member search, amount input |
| Simpanan/Withdraw | 11c Form | amber | FormCard, balance display, amount input |
| Loans/Index | 11a List | amber | StatCard ×4, DataTable, StatusBadge |
| Loans/Create | 11c Form | — | FormCard, member search, schedule preview |
| Loans/Show | 11b Detail | amber | Loan card, schedule table, payment history |
| Laporan/Neraca | 11a List | sky | Accordion table, balance columns |
| Laporan/LabaRugi | 11a List | emerald | Revenue/expense sections |
| Laporan/TrialBalance | 11a List | — | Debit/Credit columns |
| Laporan/BukuBesar | 11b Detail | — | Account filter, ledger table |
| COA/Index | 11a List | — | Tree table, type badges |
| Jurnal/Index | 11a List | — | DataTable, debit/credit columns |
| FiscalPeriod/Index | 11a List | — | Period cards, lock/unlock actions |
| Settings/Index | 11c Form | — | Settings sections, save button |
| Users/Index | 11a List | — | DataTable, role badges |

---

## 15. File References

### Source DNA Documents
- [FlowOps DESIGN.md](file:///home/tanesheva/Documents/project/bermadani/docs/design-ref/FlowOps---Surgical-Precision-DESIGN.md) — Primary admin panel DNA
- [Financial SaaS DESIGN.md](file:///home/tanesheva/Documents/project/bermadani/docs/design-ref/financial-saas-platform-metrics-DESIGN.md) — Dashboard metrics DNA
- [PaperFlow DESIGN.md](file:///home/tanesheva/Documents/project/bermadani/docs/design-ref/paperflow-design-layout-DESIGN.md) — Form/CTA DNA

### HTML References
- [dashboard.html](file:///home/tanesheva/Documents/project/bermadani/docs/design-ref/dashboard.html) — Revio dashboard (sidebar + cards + charts)
- [generated-page(1).html](file:///home/tanesheva/Documents/project/bermadani/docs/design-ref/generated-page%281%29.html) — Fluxa hero (landing page patterns)
- [generated-page.html](file:///home/tanesheva/Documents/project/bermadani/docs/design-ref/generated-page.html) — bio.tm (glass cards, grid backgrounds)

### Existing Implementation
- [AuthenticatedLayout.jsx](file:///home/tanesheva/Documents/project/bermadani/resources/js/Layouts/AuthenticatedLayout.jsx) — Current layout shell
- [Dashboard.jsx](file:///home/tanesheva/Documents/project/bermadani/resources/js/Pages/Dashboard.jsx) — Member dashboard (reference for card patterns)
- [Card.jsx](file:///home/tanesheva/Documents/project/bermadani/resources/js/Components/UI/Card.jsx) — Card component
- [Button.jsx](file:///home/tanesheva/Documents/project/bermadani/resources/js/Components/UI/Button.jsx) — Button component
- [app.css](file:///home/tanesheva/Documents/project/bermadani/resources/css/app.css) — Global styles + animations
