Files
eigen-hris/DESIGN.md
T
saefulrahman 16cbe65c62 Initialize Eigen HRIS project
- Add .gitignore, .yarnrc.yml, and initial project metadata (AGENTS.md, DESIGN.md, package.json, Yarn lock, Tailwind, PostCSS, Next.js config, TypeScript config)
- Add CSV data files (users, employees, contracts, attendances)
- Implement API routes for auth, employees, contracts, attendances, analytics, and file upload
- Add core pages (dashboard, employees, attendances, profile, login, main layout)
- Add UI components (avatar, avatar picker, badge, button, card, input, modal, select, sidebar, navigation shell, top header)
- Add attendance features (table, clock widget, unified permit modal with file upload, upload API)
- Add employee management (contract timeline with file upload, employee form modal, employee table)
- Add dashboard widgets (leaderboard, early bird, latecomer, night owl, day status feed, date filter bar)
- Add utilities (avatar generator, analytics calculations, CSV DB layer, auth context)
- Add type definitions for auth, employee, contract, attendance, dashboard

All changes are synchronized with documentation (AGENTS.md, DESIGN.md, walkthrough).
2026-08-27 17:41:59 +07:00

7.1 KiB

DESIGN.md - Eigen HRIS Visual Design System & UI Blueprint

1. Design Philosophy: "Anti-AI-Slop & Human-Centric"

Eigen HRIS avoids repetitive, low-effort template aesthetics ("AI Slop"—such as generic gray rounded cards, centered meaningless gradients, and bland stock dashboards). Instead, Eigen HRIS is engineered with:

  • High Intentionality & Structure: Sharp borders, subtle shadows, deliberate typographic scale, and purposeful asymmetric layouts.
  • Personality-Driven Gamification: Playful, human-centric recognition widgets for employees ("Si Paling Pagi", "Si Paling Rajin", "Si Paling Telat", "Si Paling Pulang Malam").
  • Dynamic & Tactile Feedback: Crisp micro-interactions, responsive hover states, smooth transitions, and distinct status indicators.

2. Color Palette & Token Architecture

The color system is derived from the approved brand palette (Color Hunt #1b4ef53874ff5996fff4ceff):

Primary Brand Colors

Token Name Hex Code Purpose & Application
--color-brand-primary #1b4ef5 Cobalt Electric: Primary action buttons, active navigation markers, key metric callouts, high-emphasis icons.
--color-brand-secondary #3874ff Royal Azure: Secondary buttons, active interactive elements, gradient fills, table header highlights.
--color-brand-tertiary #5996ff Sky Periwinkle: Subtle borders, active tab underlines, hover glow, secondary badges.
--color-brand-pastel #f4ceff Lilac Cloud / Lavender Mist: Soft background tints for top highlight cards ("Si Paling Pagi", streak champion badges), subtle notification accents.

Neutral & Semantic Colors

Token Name Hex Code Purpose
--color-bg-app #F8FAFC Main application background (Clean slate-50).
--color-bg-card #FFFFFF Card surface with crisp border border-slate-200/80.
--color-text-primary #0F172A Primary text (Slate 900) for sharp readability.
--color-text-secondary #475569 Secondary text (Slate 600) for subtitles and table contents.
--color-text-muted #94A3B8 Muted labels, timestamps, and placeholder text (Slate 400).
--color-status-present #10B981 Emerald Green: Present (WFO / WFH), Approved requests.
--color-status-late #F59E0B Amber: Late clock-ins, Late permits.
--color-status-leave #8B5CF6 Purple: Annual leave (Cuti).
--color-status-sick #EC4899 Rose / Pink: Sick leave with doctor note.
--color-status-danger #EF4444 Red: Rejected requests, Contract termination.

3. Typography: Plus Jakarta Sans

The entire interface uses Plus Jakarta Sans for modern geometric clarity and high legibility.

Hierarchy Scale

  • Display / Hero Title: 32px (text-3xl), font-extrabold (800), tracking -0.03em.
  • Page Headings: 24px (text-2xl), font-bold (700), tracking -0.02em.
  • Card / Widget Headings: 16px (text-base), font-semibold (600), tracking -0.01em.
  • Section Eyebrow / Category Label: 12px (text-xs), font-bold (700), uppercase, tracking 0.06em, color text-brand-primary or text-slate-500.
  • Body Regular: 14px (text-sm), font-normal (400) / font-medium (500), leading-relaxed.
  • Tabular Data & Timestamps: 13px - 14px, font-mono or font-feature-settings: 'tnum' for aligned clock times and numbers.

4. UI Components & Visual Patterns

4.1 Gamified Analytics Widget System

  • "Si Paling Rajin" (Streak Champion):
    • Card with electric cobalt #1b4ef5 gradient border, flame streak badge (🔥), and total active days counter.
  • "Si Paling Pagi" (The Early Bird):
    • Card with soft lilac #f4ceff luminous background accent, golden sunburst badge (☀️), and average clock-in stamp (e.g., 07:42 AM).
  • "Si Paling Telat" (The Snooze King):
    • Card with amber/warning border tint, alarm clock badge (), and total accumulated late minutes breakdown.
  • "Si Paling Pulang Malam" (The Night Owl):
    • Card with deep blue/indigo background accent, crescent moon badge (🌙), and average late clock-out stamp (e.g., 20:15 PM).

4.2 Online Avatar & Photo Picker Component

  • Avatar Display:
    • Crisp rounded avatar (rounded-2xl or circular) with dynamic online photo URLs.
    • Border indicator corresponding to employment status (Green = Active, Orange = Probation, Gray = Inactive).
  • Online Avatar Generator Modal / Picker:
    • Interactive "Generate New Avatar" button fetching dynamic SVG/PNG portraits from online services (DiceBear, Pravatar, Unsplash).
    • Seed customization input allowing instant avatar regeneration based on employee name or unique strings.

4.3 Navigation & Layout Shell

  • Sidebar:
    • Sleek vertical sidebar with deep cobalt active link indicators, subtle badges, and company branding (Eigen HRIS).
  • Top Header:
    • Global search bar, quick role badge (SUPERADMIN / STAFF), and user profile dropdown with quick status switch.
  • Interactive Filter Bar:
    • Segmented control pills for date ranges (This Month, Last Month, Custom Range).
    • Day toggle buttons (Yesterday, Today, Tomorrow) with badge counts.

4.4 Data Tables & Status Badges

  • Unified Table:
    • Clean table headers (bg-slate-50, sticky positioning, crisp divider).
    • Row hover transition with hover:bg-slate-50/80.
    • Action buttons with icon tooltips (Edit, View Contract, Approve/Reject).
  • Status Badges:
    • Pill design (rounded-full px-2.5 py-1 text-xs font-semibold) with high-contrast text and soft pastel background tints.

5. Micro-Interactions & Transitions

  • Button Hover / Active: Subtle scale transition (active:scale-[0.98] transition-transform duration-150).
  • Modal Dialogs: Smooth backdrop blur (backdrop-blur-sm bg-slate-900/40) with fade-and-scale entrance.
  • Card Hover: Subtle border illumination using --color-brand-tertiary (#5996ff).

6. Design System Maintenance & Changelog

Important

Mandatory Documentation Sync: Any modification to design tokens, typography, component behaviors, layouts, or visual aesthetics MUST be immediately documented in this file (DESIGN.md) alongside implementation updates.

Changelog

Date Author / Agent Changes & Notes
2026-08-27 System / Antigravity Initial creation of the Eigen HRIS Design System: Color Hunt #1b4ef53874ff5996fff4ceff palette, Plus Jakarta Sans typography, gamified widgets, online photo picker components, and synchronization policy.
2026-08-27 User / Antigravity Configured design system pipeline dependencies to be installed and managed via Yarn.
2026-08-27 System / Antigravity Implemented complete anti-AI-slop UI components: custom tactile cards, avatar picker with live preview & style presets, status badges, celebratory confetti micro-interactions, responsive sidebars, and real-time WIB clock header.
2026-08-27 User / Antigravity Added tactile file upload dropzone for permits/contracts, live upload preview badges, and one-click 'Lihat' (view) & 'Unduh' (download) action buttons for server-stored attachments.