1238 lines
23 KiB
Markdown
1238 lines
23 KiB
Markdown
# CRMS-Inspired Admin Dashboard UI Skill
|
||
|
||
## Purpose
|
||
|
||
Transform the **existing admin-ecommerce project UI** to follow the visual design language, layout structure, spacing, component patterns, and interaction patterns of the CRMS reference dashboard provided by the user.
|
||
|
||
This is a **UI/UX modification skill only**.
|
||
|
||
Do **not** rewrite, replace, remove, or alter existing business functionality.
|
||
|
||
---
|
||
|
||
# 1. Primary Rule: UI Only
|
||
|
||
Before making any changes, analyze the existing codebase and understand the current implementation.
|
||
|
||
Preserve all existing:
|
||
|
||
* Routes and navigation logic
|
||
* API calls
|
||
* Backend integration
|
||
* Authentication
|
||
* Authorization
|
||
* Role and permission logic
|
||
* React Query logic
|
||
* Zustand stores
|
||
* React Hook Form logic
|
||
* Zod schemas and validation
|
||
* Existing TypeScript interfaces and types
|
||
* Data models
|
||
* CRUD functionality
|
||
* Table functionality
|
||
* Filtering logic
|
||
* Search functionality
|
||
* Pagination
|
||
* Sorting
|
||
* Existing event handlers
|
||
* Loading states
|
||
* Error states
|
||
* Toast notifications
|
||
* Existing component props and contracts
|
||
|
||
## Important
|
||
|
||
Do not change functionality just to make the UI easier to implement.
|
||
|
||
The goal is:
|
||
|
||
> **Keep the application behavior exactly the same. Improve only the presentation layer.**
|
||
|
||
If existing functionality and the new UI conflict, preserve the existing functionality and adapt the UI around it.
|
||
|
||
---
|
||
|
||
# 2. Technology Constraints
|
||
|
||
The project uses:
|
||
|
||
* Next.js 16
|
||
* React 19
|
||
* TypeScript
|
||
* Tailwind CSS v4
|
||
* Framer Motion
|
||
* Lucide React
|
||
* TanStack React Query
|
||
* TanStack Table
|
||
* TanStack Virtual
|
||
* React Hook Form
|
||
* Zod
|
||
* Zustand
|
||
* next-themes
|
||
* Recharts
|
||
* Sonner
|
||
|
||
Use the existing stack.
|
||
|
||
Do not introduce Bootstrap, jQuery, another CSS framework, or unnecessary UI libraries.
|
||
|
||
Do not add dependencies unless absolutely required.
|
||
|
||
Prefer existing utilities and installed packages.
|
||
|
||
Use:
|
||
|
||
```tsx
|
||
lucide-react
|
||
```
|
||
|
||
for icons.
|
||
|
||
Use:
|
||
|
||
```tsx
|
||
framer-motion
|
||
```
|
||
|
||
only where animation improves the existing UX.
|
||
|
||
Use:
|
||
|
||
```tsx
|
||
recharts
|
||
```
|
||
|
||
for existing or new visual presentation of chart data without changing the underlying data source.
|
||
|
||
---
|
||
|
||
# 3. Existing Design System Must Be Preserved
|
||
|
||
The existing project already has a Tailwind v4 CSS variable design system.
|
||
|
||
Do not replace it.
|
||
|
||
Do not create a second competing design system.
|
||
|
||
Use the existing semantic variables:
|
||
|
||
```css
|
||
--background
|
||
--foreground
|
||
--card
|
||
--card-foreground
|
||
--primary
|
||
--primary-foreground
|
||
--secondary
|
||
--secondary-foreground
|
||
--muted
|
||
--muted-foreground
|
||
--accent
|
||
--accent-foreground
|
||
--destructive
|
||
--border
|
||
--input
|
||
--ring
|
||
--sidebar
|
||
--sidebar-foreground
|
||
--sidebar-active
|
||
--success
|
||
--warning
|
||
--info
|
||
```
|
||
|
||
The existing primary brand color is:
|
||
|
||
```text
|
||
#e4382f
|
||
```
|
||
|
||
This is the application's main accent color.
|
||
|
||
Do not replace the brand color with the original CRMS accent color if different.
|
||
|
||
Instead:
|
||
|
||
> Reproduce the CRMS UI structure and visual hierarchy while applying the existing project color system.
|
||
|
||
---
|
||
|
||
# 4. Design Philosophy
|
||
|
||
The target UI should feel like a modern, professional SaaS administration dashboard.
|
||
|
||
Follow these principles:
|
||
|
||
* Clean
|
||
* Compact
|
||
* Structured
|
||
* Information dense without feeling crowded
|
||
* Consistent across every page
|
||
* Professional
|
||
* Responsive
|
||
* Reusable
|
||
* Minimal unnecessary decoration
|
||
|
||
Avoid:
|
||
|
||
* Excessive gradients
|
||
* Large empty spaces
|
||
* Oversized cards
|
||
* Excessive border radius
|
||
* Glassmorphism
|
||
* Heavy shadows
|
||
* Random colors
|
||
* Huge page headings
|
||
* Oversized buttons
|
||
* Excessive animations
|
||
* Every section looking like an isolated floating widget
|
||
|
||
The UI should feel like one coherent admin application.
|
||
|
||
---
|
||
|
||
# 5. Application Shell
|
||
|
||
Follow this general structure:
|
||
|
||
```text
|
||
┌──────────────────────────────────────────────────────────────┐
|
||
│ Sidebar │ Top Header │
|
||
│ ├────────────────────────────────────────────────────┤
|
||
│ │ Breadcrumb / Page Title / Actions │
|
||
│ ├────────────────────────────────────────────────────┤
|
||
│ │ │
|
||
│ │ Main Page Content │
|
||
│ │ │
|
||
│ │ Cards / Tables / Forms / Charts │
|
||
│ │ │
|
||
└─────────┴────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
The application shell should be reusable.
|
||
|
||
Prefer a structure similar to:
|
||
|
||
```text
|
||
AppLayout
|
||
├── Sidebar
|
||
├── Header
|
||
└── MainContent
|
||
├── PageHeader
|
||
└── PageContent
|
||
```
|
||
|
||
Do not duplicate layout logic across individual pages.
|
||
|
||
---
|
||
|
||
# 6. Sidebar Design
|
||
|
||
The sidebar should follow a professional CRM/admin pattern.
|
||
|
||
## Structure
|
||
|
||
Include:
|
||
|
||
1. Brand/logo area
|
||
2. Main navigation
|
||
3. Navigation groups
|
||
4. Optional group labels
|
||
5. Nested menu support
|
||
6. Active item state
|
||
7. Expand/collapse behavior where already supported
|
||
|
||
## Visual Style
|
||
|
||
Use:
|
||
|
||
* Compact vertical spacing
|
||
* Small but readable icons
|
||
* Consistent icon alignment
|
||
* Clear hierarchy
|
||
* Subtle hover states
|
||
* Strong active state
|
||
* Group labels with smaller typography
|
||
* Smooth submenu transitions
|
||
|
||
The sidebar should use:
|
||
|
||
```css
|
||
var(--sidebar)
|
||
```
|
||
|
||
for the main background.
|
||
|
||
Use:
|
||
|
||
```css
|
||
var(--sidebar-foreground)
|
||
```
|
||
|
||
for normal navigation text.
|
||
|
||
Use:
|
||
|
||
```css
|
||
var(--sidebar-active)
|
||
```
|
||
|
||
for active navigation emphasis.
|
||
|
||
Do not hardcode unrelated colors.
|
||
|
||
## Active Navigation
|
||
|
||
The active item should be immediately recognizable.
|
||
|
||
Recommended pattern:
|
||
|
||
```text
|
||
Active item:
|
||
- Brand-colored background or accent indicator
|
||
- White/high-contrast icon
|
||
- Stronger text weight
|
||
|
||
Inactive item:
|
||
- Transparent background
|
||
- Muted sidebar text
|
||
- Subtle hover background
|
||
```
|
||
|
||
Avoid large pill-shaped menu items unless the existing application already uses them consistently.
|
||
|
||
---
|
||
|
||
# 7. Top Header
|
||
|
||
The header should be compact and functional.
|
||
|
||
Recommended layout:
|
||
|
||
```text
|
||
[Sidebar Toggle] [Global Search / Context]
|
||
|
||
[Theme] [Notifications] [Profile]
|
||
```
|
||
|
||
Use:
|
||
|
||
* White or card background
|
||
* Bottom border using `--border`
|
||
* Compact height
|
||
* Horizontally aligned controls
|
||
* Icon buttons with consistent dimensions
|
||
* Clear spacing between actions
|
||
|
||
Do not make the header excessively tall.
|
||
|
||
The header should visually separate navigation from application content.
|
||
|
||
---
|
||
|
||
# 8. Page Header Pattern
|
||
|
||
Every main page should follow a consistent page header.
|
||
|
||
Recommended structure:
|
||
|
||
```text
|
||
Page Title Primary Action
|
||
Breadcrumb / Context Secondary Actions
|
||
```
|
||
|
||
Example:
|
||
|
||
```text
|
||
Products
|
||
Dashboard / Products + Add Product
|
||
```
|
||
|
||
Rules:
|
||
|
||
* Keep the page title concise.
|
||
* Do not use oversized headings.
|
||
* Breadcrumbs should be subtle.
|
||
* Actions should align to the right on desktop.
|
||
* Stack intelligently on smaller screens.
|
||
* Primary actions should use the existing primary color.
|
||
* Secondary actions should use outline or neutral styling.
|
||
|
||
Avoid wrapping the entire page header in a large unnecessary card.
|
||
|
||
The page header should generally be part of the page layout, not a floating container.
|
||
|
||
---
|
||
|
||
# 9. Spacing System
|
||
|
||
The CRMS-style UI should be compact but comfortable.
|
||
|
||
Prefer consistent spacing.
|
||
|
||
Use a predictable scale such as:
|
||
|
||
```text
|
||
4px
|
||
8px
|
||
12px
|
||
16px
|
||
20px
|
||
24px
|
||
32px
|
||
```
|
||
|
||
General guidance:
|
||
|
||
* Small gap between related controls: `8px`
|
||
* Standard component spacing: `12px` or `16px`
|
||
* Card padding: `16px` to `24px`
|
||
* Major section spacing: `20px` to `24px`
|
||
|
||
Avoid large empty areas unless they intentionally improve readability.
|
||
|
||
Do not use arbitrary spacing values throughout the project.
|
||
|
||
---
|
||
|
||
# 10. Cards
|
||
|
||
Cards are a major part of the UI.
|
||
|
||
Use the existing:
|
||
|
||
```css
|
||
--card
|
||
--card-foreground
|
||
--border
|
||
```
|
||
|
||
Recommended card style:
|
||
|
||
```text
|
||
Background: var(--card)
|
||
Border: subtle 1px var(--border)
|
||
Radius: 8px to 12px
|
||
Shadow: none or extremely subtle
|
||
Padding: 16px to 24px
|
||
```
|
||
|
||
Cards should not look overly rounded or oversized.
|
||
|
||
Avoid:
|
||
|
||
```text
|
||
rounded-3xl
|
||
heavy drop shadows
|
||
large padding
|
||
huge empty card areas
|
||
```
|
||
|
||
Use cards only when they provide meaningful grouping.
|
||
|
||
Do not place every small element inside its own card.
|
||
|
||
---
|
||
|
||
# 11. Dashboard Widgets
|
||
|
||
Dashboard statistics should follow a compact KPI pattern.
|
||
|
||
Recommended structure:
|
||
|
||
```text
|
||
┌──────────────────────────────┐
|
||
│ Label Icon │
|
||
│ │
|
||
│ 1,245 │
|
||
│ +12.5% from last period │
|
||
└──────────────────────────────┘
|
||
```
|
||
|
||
Rules:
|
||
|
||
* Label should be smaller and muted.
|
||
* Main value should have strong hierarchy.
|
||
* Trend indicators should be visually distinct.
|
||
* Icons should use subtle background containers.
|
||
* Do not make the icon container too large.
|
||
* Keep card heights consistent when displayed in a grid.
|
||
|
||
Use semantic colors:
|
||
|
||
```text
|
||
Success → --success
|
||
Warning → --warning
|
||
Info → --info
|
||
Error → --destructive
|
||
Primary → --primary
|
||
```
|
||
|
||
Do not use random Tailwind color palettes when a semantic variable exists.
|
||
|
||
---
|
||
|
||
# 12. Charts and Analytics Sections
|
||
|
||
For analytics cards:
|
||
|
||
```text
|
||
Card Header
|
||
├── Title
|
||
├── Optional description
|
||
└── Filter / Date Range
|
||
|
||
Chart Area
|
||
|
||
Optional Legend / Summary
|
||
```
|
||
|
||
Use Recharts where charts already exist.
|
||
|
||
Do not change:
|
||
|
||
* API data
|
||
* Data transformation logic
|
||
* Query logic
|
||
* Business calculations
|
||
|
||
Only improve:
|
||
|
||
* Chart container
|
||
* Typography
|
||
* Legend
|
||
* Tooltip styling
|
||
* Layout
|
||
* Spacing
|
||
* Responsive behavior
|
||
|
||
Charts should integrate visually with the design system.
|
||
|
||
Avoid excessive grid lines or visual noise.
|
||
|
||
---
|
||
|
||
# 13. Tables
|
||
|
||
Tables should follow a modern CRM/admin pattern.
|
||
|
||
Recommended structure:
|
||
|
||
```text
|
||
Card
|
||
├── Header
|
||
│ ├── Title / Record Count
|
||
│ └── Actions
|
||
│
|
||
├── Toolbar
|
||
│ ├── Search
|
||
│ ├── Filters
|
||
│ └── View / Export / Add actions
|
||
│
|
||
├── Table
|
||
│
|
||
└── Pagination
|
||
```
|
||
|
||
## Table Style
|
||
|
||
Use:
|
||
|
||
* Compact row height
|
||
* Clear column alignment
|
||
* Muted table header
|
||
* Subtle row separators
|
||
* Soft hover state
|
||
* Sticky header only when useful
|
||
* Horizontal scrolling on smaller screens
|
||
|
||
Avoid excessive borders around every cell.
|
||
|
||
Prefer horizontal row separation.
|
||
|
||
Example hierarchy:
|
||
|
||
```text
|
||
Header:
|
||
- Smaller
|
||
- Muted
|
||
- Semibold
|
||
|
||
Cell:
|
||
- Normal readable text
|
||
|
||
Primary entity:
|
||
- Stronger text
|
||
|
||
Secondary information:
|
||
- Muted text
|
||
```
|
||
|
||
Do not change TanStack Table logic.
|
||
|
||
Only modify the presentation layer.
|
||
|
||
---
|
||
|
||
# 14. Search and Filter Toolbars
|
||
|
||
Avoid large search cards with too many buttons.
|
||
|
||
Instead, create a compact responsive toolbar.
|
||
|
||
Desktop:
|
||
|
||
```text
|
||
[Search Input] [Filter] [Sort] [More] [Primary Action]
|
||
```
|
||
|
||
Smaller screens:
|
||
|
||
```text
|
||
[Search Input ]
|
||
[Filter] [Sort] [More] [Add]
|
||
```
|
||
|
||
Rules:
|
||
|
||
* Search input should be the largest flexible element.
|
||
* Secondary controls should be icon buttons or compact buttons when appropriate.
|
||
* Group related controls.
|
||
* Hide low-priority actions inside a dropdown when space is limited.
|
||
* Do not allow controls to consume excessive vertical space.
|
||
|
||
Use existing functionality.
|
||
|
||
Do not remove filters or actions.
|
||
|
||
If necessary, move existing actions into a dropdown or overflow menu while preserving access.
|
||
|
||
---
|
||
|
||
# 15. Buttons
|
||
|
||
Create a consistent button hierarchy.
|
||
|
||
## Primary
|
||
|
||
Use for the main action:
|
||
|
||
```text
|
||
Background: --primary
|
||
Text: --primary-foreground
|
||
```
|
||
|
||
Examples:
|
||
|
||
```text
|
||
Add Product
|
||
Create Order
|
||
Save Changes
|
||
```
|
||
|
||
## Secondary
|
||
|
||
Use for non-primary actions.
|
||
|
||
Recommended:
|
||
|
||
```text
|
||
Neutral/card background
|
||
Border
|
||
Foreground text
|
||
```
|
||
|
||
## Icon Buttons
|
||
|
||
Use for:
|
||
|
||
* Filter
|
||
* More actions
|
||
* Edit
|
||
* Delete
|
||
* Refresh
|
||
* Settings
|
||
* Notifications
|
||
|
||
Keep icon buttons consistent in size.
|
||
|
||
Do not create different button styles on every page.
|
||
|
||
---
|
||
|
||
# 16. Forms
|
||
|
||
Forms should be visually compact and structured.
|
||
|
||
Use a consistent field pattern:
|
||
|
||
```text
|
||
Label
|
||
Input / Select / Control
|
||
Helper text or Validation message
|
||
```
|
||
|
||
Rules:
|
||
|
||
* Keep labels above fields.
|
||
* Use consistent control heights.
|
||
* Align related fields in responsive grids.
|
||
* Avoid excessive nesting.
|
||
* Avoid placing each field inside a separate card.
|
||
* Group fields only when there is a meaningful section.
|
||
|
||
Recommended:
|
||
|
||
```text
|
||
Desktop:
|
||
2 or 3 column responsive grid
|
||
|
||
Mobile:
|
||
1 column
|
||
```
|
||
|
||
Do not change:
|
||
|
||
* React Hook Form
|
||
* Zod validation
|
||
* Field names
|
||
* Submit handlers
|
||
* Form submission logic
|
||
|
||
Only change the visual layout.
|
||
|
||
---
|
||
|
||
# 17. Modals and Right-Side Drawers
|
||
|
||
For create/edit experiences, prefer the interaction pattern already used by the application.
|
||
|
||
When a right-side panel is appropriate:
|
||
|
||
```text
|
||
Closed
|
||
↓
|
||
Smooth slide from right
|
||
↓
|
||
Form content
|
||
↓
|
||
Save
|
||
↓
|
||
Success
|
||
↓
|
||
Close
|
||
```
|
||
|
||
Use Framer Motion only if the project does not already have an existing animation implementation.
|
||
|
||
Keep transitions subtle:
|
||
|
||
```text
|
||
Duration: approximately 200ms–300ms
|
||
Ease: smooth
|
||
```
|
||
|
||
Do not introduce heavy animations.
|
||
|
||
Do not alter submit behavior.
|
||
|
||
After successful submission, preserve the existing success and refresh behavior.
|
||
|
||
---
|
||
|
||
# 18. Dropdowns and Action Menus
|
||
|
||
Use compact action menus for secondary actions.
|
||
|
||
Typical actions:
|
||
|
||
```text
|
||
Edit
|
||
Duplicate
|
||
Archive
|
||
Delete
|
||
```
|
||
|
||
Destructive actions must remain visually distinguishable.
|
||
|
||
Use:
|
||
|
||
```css
|
||
--destructive
|
||
```
|
||
|
||
Do not expose every action as a visible button when space is limited.
|
||
|
||
---
|
||
|
||
# 19. Badges and Status
|
||
|
||
Status indicators should be compact and easy to scan.
|
||
|
||
Recommended statuses:
|
||
|
||
```text
|
||
Active
|
||
Inactive
|
||
Pending
|
||
Completed
|
||
Cancelled
|
||
Draft
|
||
Published
|
||
```
|
||
|
||
Use semantic colors and subtle backgrounds.
|
||
|
||
Example:
|
||
|
||
```text
|
||
Success → green semantic styling
|
||
Warning → amber semantic styling
|
||
Info → info semantic styling
|
||
Destructive → red semantic styling
|
||
```
|
||
|
||
Badges should not dominate the interface.
|
||
|
||
Avoid overly large pills.
|
||
|
||
---
|
||
|
||
# 20. Icons
|
||
|
||
Use `lucide-react`.
|
||
|
||
Rules:
|
||
|
||
* Use consistent stroke widths.
|
||
* Use consistent icon sizes.
|
||
* Standard interface icons: approximately 16px–20px.
|
||
* Larger dashboard icons: approximately 20px–24px.
|
||
* Do not mix multiple icon libraries.
|
||
* Do not use emoji as UI icons.
|
||
|
||
Icons must align correctly with text.
|
||
|
||
---
|
||
|
||
# 21. Typography
|
||
|
||
Maintain a clear hierarchy.
|
||
|
||
Recommended hierarchy:
|
||
|
||
```text
|
||
Page Title
|
||
20px–24px
|
||
Semibold / Bold
|
||
|
||
Section Title
|
||
16px–18px
|
||
Semibold
|
||
|
||
Card Label
|
||
12px–14px
|
||
Medium / Semibold
|
||
|
||
Body
|
||
13px–15px
|
||
Normal
|
||
|
||
Secondary Text
|
||
12px–14px
|
||
Muted
|
||
```
|
||
|
||
Do not use extremely large typography for normal dashboard pages.
|
||
|
||
Use:
|
||
|
||
```css
|
||
var(--foreground)
|
||
```
|
||
|
||
for primary text.
|
||
|
||
Use:
|
||
|
||
```css
|
||
var(--muted-foreground)
|
||
```
|
||
|
||
for secondary information.
|
||
|
||
---
|
||
|
||
# 22. Light and Dark Mode
|
||
|
||
The existing dark mode system must continue working.
|
||
|
||
Do not:
|
||
|
||
* Remove `.dark` overrides.
|
||
* Replace CSS variables with hardcoded light colors.
|
||
* Add components that only work in light mode.
|
||
|
||
Every UI change must be tested in:
|
||
|
||
```text
|
||
Light Mode
|
||
Dark Mode
|
||
```
|
||
|
||
When adding new styles:
|
||
|
||
Prefer:
|
||
|
||
```tsx
|
||
bg-card
|
||
text-foreground
|
||
border-border
|
||
bg-muted
|
||
text-muted-foreground
|
||
bg-primary
|
||
```
|
||
|
||
Avoid:
|
||
|
||
```tsx
|
||
bg-white
|
||
text-slate-900
|
||
border-gray-200
|
||
```
|
||
|
||
unless the existing global dark mode override intentionally supports that usage.
|
||
|
||
The preferred approach is to use semantic design tokens directly.
|
||
|
||
---
|
||
|
||
# 23. Responsive Rules
|
||
|
||
The UI must work across:
|
||
|
||
```text
|
||
Desktop
|
||
Laptop
|
||
Tablet
|
||
Mobile
|
||
```
|
||
|
||
Recommended behavior:
|
||
|
||
## Desktop
|
||
|
||
* Full sidebar
|
||
* Full table layout
|
||
* Inline actions
|
||
* Multi-column forms
|
||
|
||
## Tablet
|
||
|
||
* Adaptive sidebar
|
||
* Reduced spacing
|
||
* Wrapping page actions
|
||
* Responsive card grids
|
||
|
||
## Mobile
|
||
|
||
* Overlay sidebar
|
||
* Single-column layout
|
||
* Horizontally scrollable tables
|
||
* Compact action controls
|
||
* Stacked forms
|
||
* Full-width primary actions where appropriate
|
||
|
||
Do not simply shrink the desktop UI.
|
||
|
||
Reorganize controls intelligently.
|
||
|
||
---
|
||
|
||
# 24. Animation Rules
|
||
|
||
Animations should feel subtle and functional.
|
||
|
||
Allowed:
|
||
|
||
* Sidebar transition
|
||
* Dropdown fade/scale
|
||
* Drawer slide
|
||
* Modal appearance
|
||
* Small hover transitions
|
||
* Card interaction feedback
|
||
|
||
Avoid:
|
||
|
||
* Constant animation
|
||
* Bouncing elements
|
||
* Large entrance animations
|
||
* Excessive motion
|
||
* Long animation durations
|
||
|
||
Respect:
|
||
|
||
```css
|
||
prefers-reduced-motion
|
||
```
|
||
|
||
The existing reduced motion implementation must remain intact.
|
||
|
||
---
|
||
|
||
# 25. Component Reusability
|
||
|
||
Before creating a new UI component:
|
||
|
||
1. Search the existing project.
|
||
2. Check whether a similar component already exists.
|
||
3. Reuse or improve the existing component when possible.
|
||
4. Create a reusable component only when it will be used in multiple places.
|
||
|
||
Useful reusable UI patterns include:
|
||
|
||
```text
|
||
AppLayout
|
||
SidebarNavItem
|
||
SidebarGroup
|
||
PageHeader
|
||
PageActionBar
|
||
StatCard
|
||
SectionCard
|
||
TableToolbar
|
||
StatusBadge
|
||
EmptyState
|
||
LoadingState
|
||
IconButton
|
||
ConfirmDialog
|
||
SlideOver
|
||
```
|
||
|
||
Do not create duplicate versions of the same UI pattern.
|
||
|
||
---
|
||
|
||
# 26. CSS Rules
|
||
|
||
Modify the existing project CSS carefully.
|
||
|
||
Do not rewrite the entire stylesheet unless necessary.
|
||
|
||
Do not remove existing:
|
||
|
||
* Theme variables
|
||
* Dark mode support
|
||
* Accessibility styles
|
||
* Scrollbar styles
|
||
* Reduced motion support
|
||
|
||
When additional reusable styles are needed:
|
||
|
||
* Add them in a clearly organized section.
|
||
* Use existing CSS variables.
|
||
* Avoid global selectors that can unexpectedly affect unrelated pages.
|
||
* Avoid `!important` unless working around an unavoidable existing conflict.
|
||
|
||
Prefer component-level Tailwind classes for page-specific styling.
|
||
|
||
Use global CSS only for genuinely global patterns.
|
||
|
||
---
|
||
|
||
# 27. Existing Global CSS
|
||
|
||
The existing CSS design system is authoritative.
|
||
|
||
Specifically preserve:
|
||
|
||
```css
|
||
--background: #f4f7fe;
|
||
--foreground: #1b2559;
|
||
--card: #ffffff;
|
||
--primary: #e4382f;
|
||
--sidebar: #1b2559;
|
||
--success: #01b574;
|
||
--warning: #ffb547;
|
||
--info: #4318ff;
|
||
```
|
||
|
||
Preserve the corresponding dark mode variables.
|
||
|
||
The CRMS-inspired UI should therefore use:
|
||
|
||
> CRMS layout and component patterns + the existing application's color system.
|
||
|
||
Do not blindly copy colors from the reference.
|
||
|
||
---
|
||
|
||
# 28. Implementation Workflow
|
||
|
||
Follow this workflow for every UI modification.
|
||
|
||
## Step 1: Analyze First
|
||
|
||
Before editing:
|
||
|
||
* Inspect the relevant page.
|
||
* Inspect its parent layout.
|
||
* Inspect reusable components.
|
||
* Identify existing functionality.
|
||
* Identify existing data flow.
|
||
* Identify state and event handlers.
|
||
* Identify existing responsive behavior.
|
||
|
||
Do not start rewriting JSX before understanding the component.
|
||
|
||
## Step 2: Define UI Changes
|
||
|
||
Determine:
|
||
|
||
```text
|
||
What can change:
|
||
- Layout
|
||
- Tailwind classes
|
||
- Spacing
|
||
- Typography
|
||
- Component composition
|
||
- Icon placement
|
||
- Responsive structure
|
||
- Visual hierarchy
|
||
|
||
What must not change:
|
||
- Logic
|
||
- Data
|
||
- APIs
|
||
- State
|
||
- Validation
|
||
- Permissions
|
||
- Business rules
|
||
```
|
||
|
||
## Step 3: Reuse
|
||
|
||
Use existing components wherever possible.
|
||
|
||
## Step 4: Implement
|
||
|
||
Modify only the required UI layer.
|
||
|
||
## Step 5: Verify
|
||
|
||
After implementation, verify:
|
||
|
||
```text
|
||
- Existing page still renders
|
||
- No TypeScript errors
|
||
- No broken imports
|
||
- No changed API behavior
|
||
- Existing forms still submit
|
||
- Existing permissions still work
|
||
- Existing table behavior still works
|
||
- Light mode works
|
||
- Dark mode works
|
||
- Desktop works
|
||
- Mobile works
|
||
```
|
||
|
||
---
|
||
|
||
# 29. Safety Rules for Code Changes
|
||
|
||
Never perform broad refactoring when the task is only UI-related.
|
||
|
||
Do not:
|
||
|
||
* Rename API fields
|
||
* Rename form fields
|
||
* Change Zod schemas
|
||
* Change API endpoints
|
||
* Change database models
|
||
* Replace state management
|
||
* Rewrite working hooks
|
||
* Change permission checks
|
||
* Remove loading/error states
|
||
* Replace working table logic
|
||
* Modify route behavior
|
||
|
||
If JSX is difficult to restyle because logic and presentation are mixed:
|
||
|
||
1. Extract presentation components carefully.
|
||
2. Keep existing logic intact.
|
||
3. Pass the same props and handlers.
|
||
4. Verify behavior remains unchanged.
|
||
|
||
---
|
||
|
||
# 30. Code Quality
|
||
|
||
Follow these rules:
|
||
|
||
* TypeScript must remain valid.
|
||
* Avoid `any`.
|
||
* Avoid unused imports.
|
||
* Avoid duplicate components.
|
||
* Avoid dead CSS.
|
||
* Avoid hardcoded repeated values when a semantic variable exists.
|
||
* Preserve existing naming conventions.
|
||
* Keep components readable.
|
||
* Do not over-engineer.
|
||
|
||
Run or verify:
|
||
|
||
```bash
|
||
npm run lint
|
||
npm run build
|
||
```
|
||
|
||
Fix UI-related TypeScript or lint issues introduced by the modification.
|
||
|
||
Do not make unrelated code changes merely to clean up the project.
|
||
|
||
---
|
||
|
||
# 31. Visual Checklist
|
||
|
||
Before considering a page complete, verify:
|
||
|
||
* [ ] Page follows the shared application shell.
|
||
* [ ] Sidebar matches the CRMS-inspired navigation pattern.
|
||
* [ ] Header is compact and consistent.
|
||
* [ ] Page title and actions are aligned correctly.
|
||
* [ ] Excessive empty space has been removed.
|
||
* [ ] Cards use consistent padding and radius.
|
||
* [ ] Search and filters are compact.
|
||
* [ ] Tables are clean and readable.
|
||
* [ ] Actions do not consume unnecessary space.
|
||
* [ ] Buttons follow a consistent hierarchy.
|
||
* [ ] Icons come from Lucide React.
|
||
* [ ] Status colors use semantic variables.
|
||
* [ ] Existing primary red color is preserved.
|
||
* [ ] Light mode works.
|
||
* [ ] Dark mode works.
|
||
* [ ] Mobile layout works.
|
||
* [ ] Existing functionality remains unchanged.
|
||
* [ ] No unnecessary dependencies were added.
|
||
* [ ] No unrelated files were modified.
|
||
|
||
---
|
||
|
||
# 32. Final Instruction
|
||
|
||
When asked to modify any page in this project:
|
||
|
||
1. First inspect the existing implementation.
|
||
2. Preserve all functionality.
|
||
3. Modify only the UI and presentation layer.
|
||
4. Follow the CRMS-inspired admin dashboard design language.
|
||
5. Use the existing Tailwind v4 CSS variable design system.
|
||
6. Preserve the existing primary color and dark mode.
|
||
7. Reuse existing components before creating new ones.
|
||
8. Keep the interface compact, professional, and responsive.
|
||
9. Do not introduce Bootstrap or another UI framework.
|
||
10. Do not perform unrelated refactoring.
|
||
11. Verify that the application behavior remains exactly the same.
|
||
|
||
The final result should feel like:
|
||
|
||
> **A polished, compact, modern CRM/admin dashboard inspired by the provided CRMS reference, while remaining visually branded with the existing project's design tokens and preserving 100% of the current application functionality.**
|