Comprehensive Design System · Admin Dashboard
WayYourChild Design System
A complete reference for the admin dashboard — every foundation, component, pattern and screen the product uses, in the locked Academic Navy & Gold identity. Mirrored from the live SubAdmin panel (its 22 modules, dashboard widgets and list-page template), and re-skinned: the current app's blue + orange maps to navy + gold.
Colour
One confident navy for brand and primary actions, a single gold accent for emphasis and highlights, warm neutrals for surfaces, and four semantic colours for status. Gold is for accents only — never large fills or body text.
Navy — primary ramp
Primary = navy-700 #1B2A4A. Hover/pressed = navy-800. Tints 50–100 for selected rows, soft chips, focus rings.
Gold — accent ramp
Accent = gold-400 #C8A24B. Use sparingly: active indicators, highlights, one accent CTA, document seals.
Neutrals (warm grey)
Semantic
Each semantic colour has a soft background (≈12–15% tint on white) for pills, alerts and table cells, and the solid tone for text/icons. Always pair colour with a label or icon — never colour alone.
Typography
Fraunces (serif) carries headings for an established, classic feel; Inter handles all body, UI and dense tables; a monospace is used for numeric/transactional data (amounts, IDs, dates).
| Token | Family / weight | Use |
|---|---|---|
| --font-head | Fraunces 600 | Headings, KPI values, document titles, logo |
| --font-body | Inter 400–700 | Everything else — UI, body, tables, forms |
| --font-mono | SF Mono / system | Amounts, IDs, dates, code, fixed-width data |
Spacing & layout
A 4-point spacing scale governs all padding, gaps and margins. The app uses a fixed left sidebar (248px) + fluid content, a 12-column content grid, and a max content width of 1240px.
Spacing · 4-pt scale
4 · 8 · 12 · 16 · 24 · 32 · 48 · 64
Breakpoints
| sm | ≥ 560px | stacked → 2-col |
| md | ≥ 768px | sidebar collapses to icons |
| lg | ≥ 980px | full sidebar + multi-col |
| xl | ≥ 1240px | max container width |
Radius & elevation
Soft, consistent corners and three restrained elevation levels keep the interface calm. Cards and inputs use md radius; pills are fully rounded; overlays get the largest shadow.
Radius
sm 6 · md 10 (default) · lg 16 · pill
Elevation
sm cards · md dropdowns/toasts · lg modals/popovers
Iconography
A single line-icon family — 1.7px stroke, rounded joins, 20px (24px touch) default, 16px inline. Monochrome only; never multicolour. Icons always pair with a label except in universally understood controls.
Motion & z-index
Motion
| Micro (hover, toggle) | 120ms ease |
| Standard (dropdown, tab) | 180ms ease |
| Overlay (modal, drawer) | 240ms ease-out |
Motion is feedback, never decoration. Honour prefers-reduced-motion.
Z-index scale
| Sticky header / toolbar | 100 |
| Dropdown / popover | 400 |
| Drawer | 600 |
| Modal + backdrop | 800 |
| Toast | 1000 |
Page header
Every list/detail page opens with a breadcrumb, a serif title, optional status, and a right-aligned primary action.
Aarav Sharma
Admission no. WYC-2026-0481 · Grade 5-AText inputs & fields
Consistent field anatomy: label (with required marker), control, and help/error text. Focus shows a navy ring; errors turn the border red with a message.
Selection controls
Single & multi-select (react-select), checkboxes, radios, toggle switches, tag input and file upload — the controls used across admission, fee and bulk-action forms.
Tables & data grid
The workhorse of the admin app. Tables carry a toolbar (search, filters, density, bulk actions, export), sortable headers, status pills, row hover, selection, and pagination. Large lists use the server-paginated data grid.
Cards & KPIs
Surfaces for grouped content. KPI cards lead dashboards with a label, a serif value and a trend delta.
Basic card
A surface with a title and content. md radius, sm shadow, 1px border.
Card with tag
Cards can host pills, tags and actions.
Accent card
A gold top border draws attention to a highlighted item.
Badges & status
A fixed vocabulary of status pills keeps meaning consistent across fees, attendance, results and accounts. Always colour + label, never colour alone.
Fees
Attendance
Results & accounts
Avatars & chips
Tabs & accordion
Gold underline marks the active tab. Used on every student/staff detail page.
Progress & timeline
Tooltip & popover
Toasts
Transient confirmations (react-toastify), top-right, auto-dismiss. Coloured left border + icon. Never use a toast for errors that require a decision — use a dialog.
Dialogs & modals
Modals for focused tasks (forms) and confirm dialogs for destructive/irreversible actions (sweetalert pattern). Backdrop dims the page; primary action on the right; destructive actions use the danger button and name the consequence.
Collect fee — Aarav Sharma
Delete this student?
This removes Rohan Verma and all linked records. This action cannot be undone.
Alerts & banners
Loaders & skeletons
Empty & error states
Pagination
Stepper / wizard
Multi-step flows such as new admission and bulk upload.
Charts & data viz
Built on ApexCharts. Series use the navy ramp with gold reserved for the highlighted/most-recent value. Keep charts simple, labelled and paired with a KPI.
Fee collection — 7 months
On trackFee status mix
Pattern · Dashboard
A faithful re-skin of the live SubAdmin home screen — subscription banner, "learn" strip + academic-year selector, school-info card with live clock, the five KPI stat-cards, calendar, attendance chart, and the School-Fee / Birthdays / Activity widgets — all in Navy & Gold.
Calendar
● Holidays ● Events| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
Attendance
● Present ● AbsentSchool Fee
Activity
Transport Fee
Pattern · List / management page
The template behind nearly every module (Students, Teachers, Fee, Transport…). Breadcrumb + academic-year selector, an action-button row, a filter card of dropdowns + Reset, a table toolbar (page-size · search · Actions), the navy-header table with avatars, and a footer pager. In the live app the action buttons are multicolour (orange / red / green); the system keeps the same roles but uses the unified button hierarchy.
Pattern · Form / tabbed module page
Modelled on the live Fee → Payment screen: breadcrumb + year selector, a secondary action (Report), sub-tabs within the module (Add Payment · Payment List · Cheque Payment · Bulk Payment), then fields organised into grouped cards (labels with required markers, selects, disabled prefilled fields) and a single primary action. Admission and Add-Student forms follow the same anatomy.
Pattern · Student profile header
Aarav Sharma
ActivePattern · Fee receipt
A printable/emailable document. Navy header with the gold logo seal, monospace amounts, dashed dividers, bold total — must read as official.
Pattern · Marksheet / report card
Pattern · ID card
Pattern · Attendance grid
A month view using the semantic colours. Present / Absent / Leave / Holiday read instantly.
Pattern · Timetable grid
| Day | I | II | III | IV |
|---|---|---|---|---|
| Mon | Maths | English | Science | Art |
| Tue | Science | Maths | Hindi | PE |
Pattern · Bulk upload
Stepper + template download + dropzone + validation summary — used for student, fee and attendance imports.
Formats & data
| Type | Format | Example |
|---|---|---|
| Currency | ₹ + Indian grouping (lakh/crore) | ₹1,25,000 · ₹1.82 Cr |
| Date | DD-MM-YYYY | 08-06-2026 |
| Date (long) | D MMM YYYY | 8 Jun 2026 |
| Percent | 0–1 decimal | 94.1% |
| IDs / TXN | uppercase, hyphenated, monospace | WYC-2026-0481 |
Voice & tone
Plain, calm, respectful — written for parents and busy school staff, multilingual-ready. Say what happened in human terms; never expose system jargon.
Do
- "Fee received — receipt sent to the parent."
- "3 instalments are due this week."
- "We couldn't confirm this payment. Try again."
- Name the consequence before destructive actions.
Don't
- "Transaction 200 OK."
- "Error code 4012."
- ALL-CAPS or exclamation-heavy copy.
- Blame the user ("You entered wrong data").
Accessibility
- Contrast: WCAG AA — ≥4.5:1 text, ≥3:1 UI & large text.
- Focus: visible navy focus ring on every interactive element.
- Keyboard: full tab order; modals trap & restore focus; Esc closes.
- Targets: ≥44px touch targets.
- Status: never colour alone — pair with label/icon.
- Motion: respect
prefers-reduced-motion; multilingual + RTL ready.
Design tokens
The system is variable-driven, so it can be dropped into the React panel as CSS custom properties (or exported to JSON / a Tailwind config). Core tokens:
--primary: #1B2A4A; --primary-700: #142036; --on-primary: #FFFFFF; --accent: #C8A24B; --accent-600: #B08C3A; --on-accent: #241B07; --bg: #FBFAF7; --surface: #FFFFFF; --surface-2: #F5F2EB; --border: #E7E3DA; --text: #1A1F2B; --muted: #5B6473; --success: #2E7D5B; --warning: #B7791F; --error: #B23A3A; --info: #2A5B8C; --radius: 10px; --radius-lg: 16px; --radius-pill: 999px; --font-head: "Fraunces", serif; --font-body: "Inter", sans-serif; --shadow-sm: 0 1px 2px rgba(20,25,40,.06); --space: 8px (4-pt scale);
Download the full token set, ready for the React panel: