Frontend Design Expert
Create production-grade frontend interfaces that are distinctive, polished, and avoid generic "AI slop" aesthetics. This skill activates when building web components, pages, or applications.
Design Thinking
Before writing code, understand context and commit to intentional design choices:
- Purpose: What problem does this interface solve? What action should users take?
- Audience: Upper middle class American Muslim professionals (doctors, lawyers, engineers)
- Tone: Pick a direction with conviction—minimalist restraint, data-forward trust, or warm sophistication
- Constraints: React 19, Tailwind v4, existing theme system, accessibility requirements
- Differentiation: What makes this memorable? What will someone recall after leaving?
Critical: Bold intentionality beats timid compromise. A clear aesthetic point-of-view—whether minimal or maximal—is always better than splitting the difference.
Audience Profile
The primary audience is upper middle class American Muslim professionals:
| Trait |
Implication |
| Highly educated |
Don't oversimplify; they understand nuance |
| Time-constrained |
Get to the point; respect their attention |
| Discerning |
They notice quality (or lack thereof) |
| Data-literate |
Show numbers, methodology, sources |
| Skeptical of hype |
Substance over marketing speak |
| Quality expectations |
They use Stripe, Notion, Apple—match that bar |
What they value:
- Transparency over emotional appeals
- Data over vague impact claims
- Intellectual respect over patronizing explanations
- Efficiency over decoration
Project Tech Stack
Framework
- React 19 with Vite 6.2
- TypeScript 5.8 for type safety
- Tailwind CSS v4.1 with PostCSS (no custom config file)
Theme System
Light/Dark Mode:
import { useLandingTheme } from '@/contexts/LandingThemeContext';
const { isDark, toggleTheme } = useLandingTheme();
Brand Variants:
import { useTheme } from '@/types/theme';
const { variant } = useTheme(); // 'amal' | 'third-bucket'
Component Patterns
- Icons: Lucide React (
import { Icon } from 'lucide-react')
- Charts: Recharts for data visualization
- Sanitization: DOMPurify for user-generated content
Key Reference Files
website/src/components/CharityCard.tsx - Color pattern examples
website/src/components/BaselineCharityDetail.tsx - Wallet tag styling
website/src/themes.tsx - Experimental theme presets
website/contexts/LandingThemeContext.tsx - Dark mode implementation
Typography
| Purpose |
Class |
Notes |
| Headlines, brand moments |
font-merriweather |
Serif, distinctive |
| Body text, UI |
font-sans |
System stack, readable |
| Quranic references |
font-arabic |
Arabic typography only |
| Data displays, technical |
font-mono |
Monospace for numbers |
Typography Principles:
- Clear hierarchy: One dominant element per section
- Readable line lengths: ~60-75 characters
- Generous line height:
leading-relaxed for body copy
- Restrained headings: Meaningful, not "Welcome to our platform"
Color & Theme
Primary Palette
- Emerald: Primary actions, positive states (
emerald-600, emerald-700)
- Slate: Neutrals, backgrounds (
slate-100 to slate-950)
- White/Black: Text, highest contrast
Semantic Colors (Wallet Tags - Self-Assertion Model)
- Emerald (
emerald-700): Zakat Eligible (ZAKAT-ELIGIBLE) - charity claims zakat on website
- Indigo (
indigo-700): Strategic Sadaqah (SADAQAH-STRATEGIC) - high-impact systemic work
- Gray (
gray-600): General Sadaqah (SADAQAH-GENERAL) - standard charitable giving
- Slate (
slate-500): Insufficient Data (INSUFFICIENT-DATA)
Dark Mode
- Background:
slate-950 (not pure black)
- Surface:
slate-900 for cards
- Text:
white / slate-400 for hierarchy
- Always provide dark mode variants:
isDark ? 'bg-slate-900' : 'bg-white'
Color Pattern Example
const colors = {
bg: isDark ? 'bg-slate-900' : 'bg-white',
text: isDark ? 'text-white' : 'text-slate-900',
muted: isDark ? 'text-slate-400' : 'text-slate-600',
border: isDark ? 'border-slate-800' : 'border-slate-200',
};
Motion & Animation
Philosophy: Purposeful, not decorative. Every animation should serve UX.
| Purpose |
Pattern |
| Standard interactive |
transition-all duration-300 |
| Theme switching |
transition-colors duration-500 |
| Hover lift |
hover:shadow-lg hover:-translate-y-1 |
| Arrow indicators |
group-hover:translate-x-1 |
Avoid: Parallax for its own sake, spinners that spin forever, bouncing elements, page load fireworks.
What NOT to Do (AI Slop Detection)
Visual Anti-Patterns
AVOID:
- Generic gradients (purple→blue on white)
- Glassmorphism cards without purpose
- Oversized hero sections with tiny CTAs
- Parallax scrolling that adds nothing
- Blob shapes behind text
- Neon accents on dark backgrounds (the "Discord look")
- Cards with excessive rounded corners + drop shadows
- Placeholder icons (generic house, heart, people silhouettes)
Typography Anti-Patterns
AVOID:
- Inter, Roboto, Poppins, Montserrat (the default AI fonts)
- Hero text 80px+ with no content hierarchy
- Excessive letter-spacing everywhere
- ALL CAPS subheadings on everything
- "Welcome to our platform" headers
Islamic Design Anti-Patterns
AVOID:
- Bright green (#00FF00) as primary (the "masjid green" trap)
- Crescent moon icons everywhere
- Mosque dome silhouettes in backgrounds
- Stock photos of people praying or giving money
- Arabic calligraphy as meaningless decoration
- Overwhelming geometric tessellations
- "Salam" as the hero greeting (performative authenticity)
Charity Website Anti-Patterns
AVOID:
- "Just $1 can save a life" emotional manipulation
- Crying children imagery
- Progress bars showing "90% of goal reached" (fake urgency)
- Impact counters that spin up on scroll
- Vague claims: "We've helped millions" without methodology
- Generic world map with pins
- "Your donation goes directly to..." without actual breakdown
Copy Anti-Patterns
AVOID:
- "Empowering communities through innovative solutions"
- "Making a difference, one [X] at a time"
- "Join our mission to transform..."
- Bullet points all starting with verbs (Empower, Transform, Enable)
- Three-column feature grids with identical structure
- FAQ sections with softball questions
Interaction Anti-Patterns
AVOID:
- Hover effects on everything
- Skeleton loaders that never resolve
- Infinite scroll without pagination option
- Modal popups on page load
- Chatbot widgets in bottom-right corner
- Newsletter popup within 5 seconds
Technical Tells (These Scream "AI Generated")
AVOID:
- Components that ignore theme context
- Hardcoded colors instead of Tailwind tokens
- Inconsistent spacing (mixing
px-4 with px-6 randomly)
- Missing dark mode variants
- Buttons without proper states (hover, active, disabled)
- No loading states for async operations
- No error states
- No empty states
Trust Architecture
Build trust through transparency, not emotional appeals.
Show Your Work
- Display data sources (Form 990, ProPublica, IRS data)
- Link to primary documents
- Explain methodology in accessible terms
- Show confidence levels when data is uncertain
Acknowledge Complexity
- Note where scholars differ on zakat eligibility
- Don't pretend contested topics are settled
- Provide nuance, not false certainty
Avoid Trust Destroyers
- Vague impact claims ("millions helped")
- Round numbers without context
- Hidden methodology
- Unverifiable testimonials
Cultural Authenticity
Do
- Bismillah in Arabic (subtle, not dominant)
- Geometric patterns used sparingly
- References to Islamic scholarship with proper citation
- Inclusive of diverse Muslim backgrounds (not just Arab aesthetics)
- Respect for legitimate differences (madhab pluralism)
Don't
- Performative religiosity (excessive "insha'Allah" in UI copy)
- Stereotypical imagery (domes, minarets, prayer photos)
- Assuming one correct interpretation
- Excluding converts, non-Arabic speakers, or non-traditional Muslims
Implementation Checklist
Before shipping any component:
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: frontend-design-993description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics. Use when this capability is needed.4---56# Frontend Design Expert78Create production-grade frontend interfaces that are distinctive, polished, and avoid generic "AI slop" aesthetics. This skill activates when building web components, pages, or applications.910## Design Thinking1112Before writing code, understand context and commit to intentional design choices:13141. **Purpose**: What problem does this interface solve? What action should users take?152. **Audience**: Upper middle class American Muslim professionals (doctors, lawyers, engineers)163. **Tone**: Pick a direction with conviction—minimalist restraint, data-forward trust, or warm sophistication174. **Constraints**: React 19, Tailwind v4, existing theme system, accessibility requirements185. **Differentiation**: What makes this memorable? What will someone recall after leaving?1920**Critical**: Bold intentionality beats timid compromise. A clear aesthetic point-of-view—whether minimal or maximal—is always better than splitting the difference.2122---2324## Audience Profile2526The primary audience is upper middle class American Muslim professionals:2728| Trait | Implication |29|-------|-------------|30| **Highly educated** | Don't oversimplify; they understand nuance |31| **Time-constrained** | Get to the point; respect their attention |32| **Discerning** | They notice quality (or lack thereof) |33| **Data-literate** | Show numbers, methodology, sources |34| **Skeptical of hype** | Substance over marketing speak |35| **Quality expectations** | They use Stripe, Notion, Apple—match that bar |3637**What they value:**38- Transparency over emotional appeals39- Data over vague impact claims40- Intellectual respect over patronizing explanations41- Efficiency over decoration4243---4445## Project Tech Stack4647### Framework48- **React 19** with Vite 6.249- **TypeScript 5.8** for type safety50- **Tailwind CSS v4.1** with PostCSS (no custom config file)5152### Theme System5354**Light/Dark Mode:**55```tsx56import { useLandingTheme } from '@/contexts/LandingThemeContext';57const { isDark, toggleTheme } = useLandingTheme();58```5960**Brand Variants:**61```tsx62import { useTheme } from '@/types/theme';63const { variant } = useTheme(); // 'amal' | 'third-bucket'64```6566### Component Patterns67- Icons: Lucide React (`import { Icon } from 'lucide-react'`)68- Charts: Recharts for data visualization69- Sanitization: DOMPurify for user-generated content7071### Key Reference Files72- `website/src/components/CharityCard.tsx` - Color pattern examples73- `website/src/components/BaselineCharityDetail.tsx` - Wallet tag styling74- `website/src/themes.tsx` - Experimental theme presets75- `website/contexts/LandingThemeContext.tsx` - Dark mode implementation7677---7879## Typography8081| Purpose | Class | Notes |82|---------|-------|-------|83| Headlines, brand moments | `font-merriweather` | Serif, distinctive |84| Body text, UI | `font-sans` | System stack, readable |85| Quranic references | `font-arabic` | Arabic typography only |86| Data displays, technical | `font-mono` | Monospace for numbers |8788**Typography Principles:**89- Clear hierarchy: One dominant element per section90- Readable line lengths: ~60-75 characters91- Generous line height: `leading-relaxed` for body copy92- Restrained headings: Meaningful, not "Welcome to our platform"9394---9596## Color & Theme9798### Primary Palette99- **Emerald**: Primary actions, positive states (`emerald-600`, `emerald-700`)100- **Slate**: Neutrals, backgrounds (`slate-100` to `slate-950`)101- **White/Black**: Text, highest contrast102103### Semantic Colors (Wallet Tags - Self-Assertion Model)104- **Emerald** (`emerald-700`): Zakat Eligible (ZAKAT-ELIGIBLE) - charity claims zakat on website105- **Indigo** (`indigo-700`): Strategic Sadaqah (SADAQAH-STRATEGIC) - high-impact systemic work106- **Gray** (`gray-600`): General Sadaqah (SADAQAH-GENERAL) - standard charitable giving107- **Slate** (`slate-500`): Insufficient Data (INSUFFICIENT-DATA)108109### Dark Mode110- Background: `slate-950` (not pure black)111- Surface: `slate-900` for cards112- Text: `white` / `slate-400` for hierarchy113- Always provide dark mode variants: `isDark ? 'bg-slate-900' : 'bg-white'`114115### Color Pattern Example116```tsx117const colors = {118 bg: isDark ? 'bg-slate-900' : 'bg-white',119 text: isDark ? 'text-white' : 'text-slate-900',120 muted: isDark ? 'text-slate-400' : 'text-slate-600',121 border: isDark ? 'border-slate-800' : 'border-slate-200',122};123```124125---126127## Motion & Animation128129**Philosophy**: Purposeful, not decorative. Every animation should serve UX.130131| Purpose | Pattern |132|---------|---------|133| Standard interactive | `transition-all duration-300` |134| Theme switching | `transition-colors duration-500` |135| Hover lift | `hover:shadow-lg hover:-translate-y-1` |136| Arrow indicators | `group-hover:translate-x-1` |137138**Avoid**: Parallax for its own sake, spinners that spin forever, bouncing elements, page load fireworks.139140---141142## What NOT to Do (AI Slop Detection)143144### Visual Anti-Patterns145146**AVOID:**147- Generic gradients (purple→blue on white)148- Glassmorphism cards without purpose149- Oversized hero sections with tiny CTAs150- Parallax scrolling that adds nothing151- Blob shapes behind text152- Neon accents on dark backgrounds (the "Discord look")153- Cards with excessive rounded corners + drop shadows154- Placeholder icons (generic house, heart, people silhouettes)155156### Typography Anti-Patterns157158**AVOID:**159- Inter, Roboto, Poppins, Montserrat (the default AI fonts)160- Hero text 80px+ with no content hierarchy161- Excessive letter-spacing everywhere162- ALL CAPS subheadings on everything163- "Welcome to our platform" headers164165### Islamic Design Anti-Patterns166167**AVOID:**168- Bright green (#00FF00) as primary (the "masjid green" trap)169- Crescent moon icons everywhere170- Mosque dome silhouettes in backgrounds171- Stock photos of people praying or giving money172- Arabic calligraphy as meaningless decoration173- Overwhelming geometric tessellations174- "Salam" as the hero greeting (performative authenticity)175176### Charity Website Anti-Patterns177178**AVOID:**179- "Just $1 can save a life" emotional manipulation180- Crying children imagery181- Progress bars showing "90% of goal reached" (fake urgency)182- Impact counters that spin up on scroll183- Vague claims: "We've helped millions" without methodology184- Generic world map with pins185- "Your donation goes directly to..." without actual breakdown186187### Copy Anti-Patterns188189**AVOID:**190- "Empowering communities through innovative solutions"191- "Making a difference, one [X] at a time"192- "Join our mission to transform..."193- Bullet points all starting with verbs (Empower, Transform, Enable)194- Three-column feature grids with identical structure195- FAQ sections with softball questions196197### Interaction Anti-Patterns198199**AVOID:**200- Hover effects on everything201- Skeleton loaders that never resolve202- Infinite scroll without pagination option203- Modal popups on page load204- Chatbot widgets in bottom-right corner205- Newsletter popup within 5 seconds206207### Technical Tells (These Scream "AI Generated")208209**AVOID:**210- Components that ignore theme context211- Hardcoded colors instead of Tailwind tokens212- Inconsistent spacing (mixing `px-4` with `px-6` randomly)213- Missing dark mode variants214- Buttons without proper states (hover, active, disabled)215- No loading states for async operations216- No error states217- No empty states218219---220221## Trust Architecture222223Build trust through transparency, not emotional appeals.224225### Show Your Work226- Display data sources (Form 990, ProPublica, IRS data)227- Link to primary documents228- Explain methodology in accessible terms229- Show confidence levels when data is uncertain230231### Acknowledge Complexity232- Note where scholars differ on zakat eligibility233- Don't pretend contested topics are settled234- Provide nuance, not false certainty235236### Avoid Trust Destroyers237- Vague impact claims ("millions helped")238- Round numbers without context239- Hidden methodology240- Unverifiable testimonials241242---243244## Cultural Authenticity245246### Do247- Bismillah in Arabic (subtle, not dominant)248- Geometric patterns used sparingly249- References to Islamic scholarship with proper citation250- Inclusive of diverse Muslim backgrounds (not just Arab aesthetics)251- Respect for legitimate differences (madhab pluralism)252253### Don't254- Performative religiosity (excessive "insha'Allah" in UI copy)255- Stereotypical imagery (domes, minarets, prayer photos)256- Assuming one correct interpretation257- Excluding converts, non-Arabic speakers, or non-traditional Muslims258259---260261## Implementation Checklist262263Before shipping any component:264265- [ ] Theme-aware (responds to `useLandingTheme`)266- [ ] Uses Tailwind tokens (no hardcoded colors)267- [ ] Dark mode tested268- [ ] Mobile responsive269- [ ] Loading state implemented270- [ ] Error state implemented271- [ ] Empty state implemented272- [ ] Hover/focus/active states on interactive elements273- [ ] Accessible (semantic HTML, proper contrast, keyboard navigation)274- [ ] No AI slop patterns (review list above)275276---277> Converted and distributed by [TomeVault](https://tomevault.io/claim/uabbasi) — claim your Tome and manage your conversions.278<!-- tomevault:4.0:skill_md:2026-04-14 -->