OpenWriterControle/.opencode/context/ui/web/design/guides/premium-dark-ui-quick-start.md
Darren Hinde a468e96a71
fix: Clean up agent YAML frontmatter and add standards (#156)
* chore: bump version to v0.8.0

* chore: update version to 0.7.1 instead of 0.8.0

* docs: expand comparison table with Oh My OpenCode and additional features

* backup: development context before reorganization

* refactor(context): reorganize development folder

- Remove 7 duplicate files (ui/design files exist in ui/web/)
- Remove 2 redundant READMEs (use navigation.md instead)
- Move react-patterns.md to frontend/react/
- Create frontend/react/navigation.md
- Update 4 navigation files (development, ui, frontend, frontend/react)
- Update developer profile (4 path changes: ui-styling-standards, design-systems, design-assets, animation-patterns)
- Update 3 core context files (visual-development.md, design-iteration.md, file-locations.md)

Result: 29 context files (down from 36), no duplicates, clean structure

Refs: REORGANIZATION_PLAN.md, REORGANIZATION_SUMMARY.md

* docs(context): add frontend delegation guide

- Create when-to-delegate.md with clear decision criteria
- Decision matrix for when to delegate vs. handle directly
- Common patterns and examples
- Red flags and green flags
- Frontend-specialist capabilities reference
- Update frontend and development navigation files

Helps orchestrators decide when to delegate UI work to frontend-specialist subagent.

* feat: enhance developer and advanced profiles with UI, development, and system builder context

- Developer profile: Add UI/UX patterns, development principles, design systems, React patterns, animation patterns, styling standards, and design assets
- Full profile: Add same UI/development context as developer profile for consistency
- Advanced profile: Add comprehensive system builder context including templates, guides, context system standards, and repository management context
- Update profile descriptions to reflect new capabilities
- All context files verified to exist and are properly referenced

* fix: remove duplicate context entries with incorrect paths

- Remove duplicate design-assets, ui-styling-standards, clean-code, animation-patterns, design-systems, react-patterns, and api-design entries that pointed to wrong paths
- Remove non-existent development-readme and mastra-ai-readme entries
- Keep only correct entries with proper file paths
- All registry paths now validated and correct

* feat: add add-context command to registry and all profiles

- Register add-context command in registry.json
- Add command:add-context to all 5 profiles (essential, developer, business, full, advanced)
- Update add-context.md to mention external-context files in .tmp/ directory
- Fix command dependencies to use context IDs instead of full paths
- All registry paths and dependencies validated

* feat: enhance add-context with external context file management

- Add Stage 0: Detect external context files in .tmp/
- Offer options to extract, manage, or harvest external files
- Extract patterns from external context files for use in project intelligence
- Provide management options: update, remove, clean, or harvest
- Add examples showing external context extraction and management
- Update troubleshooting with external context file handling
- Integrate with /context harvest command for permanent context organization

* fix: comprehensive context system audit and restructuring

- Fix 6 command documentation inconsistencies in add-context.md
  * Correct /add-context vs /context harvest command references
  * Simplify Stage 0 workflow from 4 to 2 options
  * Update examples to match actual behavior
  * Remove non-existent operations from delegation section
  * Fix troubleshooting Q&A section

- Restructure registry.json with 4 major improvements
  * Replace 31 duplicate 'navigation' IDs with unique IDs per subfolder
    - core-navigation, development-navigation, openagents-repo-navigation, etc.
  * Add context:openagents-repo/* to developer and full profiles
    - Developers now have repo-specific guides and examples
  * Remove context:to-be-consumed/* from essential, developer, business, full
    - Keep only in advanced profile for system builders
  * Properly scope mastra-ai context via wildcard patterns

Validation Results:
- Registry: 220/220 paths valid, 0 missing dependencies
- Profiles: All appropriately scoped with no duplicate IDs
- Standards: MVI compliance, frontmatter, structure verified
- No regressions: All tests passing

Fixes issues with context organization, command consistency, and profile coverage.

* feat: add premium dark UI design system context

- Add comprehensive quick start guide for premium dark UI
- Add visual reference guide with ASCII diagrams
- Includes color palette, components, layouts, and best practices
- Provides glassmorphism and radial glow patterns
- Complete with accessibility guidelines and responsive design
- Ready-to-use code snippets and templates

* docs: update design navigation with premium dark UI guides

* fix: Clean up agent YAML frontmatter and add standards

Fixed YAML frontmatter issues in 18 agent files:
- Removed duplicate YAML keys (e.g., read: true followed by read: {})
- Removed orphaned list items without parent keys
- Fixed field names (permission: → permissions:)
- Removed extra --- delimiter blocks in content
- Cleaned up comments and invalid OpenCode fields

Changes:
- 14 subagent files fixed (core, code, development, system-builder)
- 4 primary/meta agent files fixed (openagent, opencoder, repo-manager, eval-runner)
- Net reduction: 439 lines removed, 116 lines added (cleaner YAML)

Added agent standards documentation:
- .opencode/context/openagents-repo/standards/agent-frontmatter.md
- .opencode/context/openagents-repo/standards/subagent-structure.md
- .opencode/context/openagents-repo/standards/navigation.md
- Updated main navigation.md with standards section

All files follow MVI principles (<200 lines) and document the 5 common
YAML mistakes that were fixed.

Fixes subagent recognition issues where agents were registered as 'all'
mode instead of 'subagent' mode due to malformed YAML.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-01-31 13:11:24 +00:00

638 lines
14 KiB
Markdown

# Premium Dark UI - Quick Start Guide
**Goal**: Create a sophisticated, modern dark website with glassmorphism and depth.
**Time to implement**: 30-60 minutes
---
## 1. COLOR PALETTE (Copy This)
```css
/* Backgrounds */
--bg-deep-dark: #0a0f0d; /* Main background */
--bg-black: #000000; /* Alternate sections */
/* Text */
--text-heading: #ffffff; /* Headings */
--text-body: #cbd5e1; /* Body (slate-300) */
--text-muted: #94a3b8; /* Muted (slate-400) */
/* Accent */
--accent: #80cca5; /* Green - CTAs, links, highlights */
--accent-hover: #6bb890; /* Hover state */
/* Glass */
--glass-bg: rgba(255, 255, 255, 0.02);
--glass-border: rgba(255, 255, 255, 0.1);
```
**Rule**: Use ONLY these colors. No exceptions.
---
## 2. CORE COMPONENTS (4 Building Blocks)
### A. Section Wrapper
```tsx
// PremiumSection.tsx
export function PremiumSection({ children, withGlow = true }) {
return (
<section className="relative py-24 px-4 bg-[#0a0f0d] overflow-hidden">
{withGlow && (
<div
className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] pointer-events-none"
style={{
background: 'radial-gradient(circle, rgba(128, 204, 165, 0.15) 0%, transparent 70%)',
opacity: 0.15
}}
/>
)}
<div className="max-w-7xl mx-auto relative z-10">
{children}
</div>
</section>
)
}
```
### B. Glass Card
```tsx
// PremiumCard.tsx
export function PremiumCard({ children, className = "" }) {
return (
<div className={`
p-8 rounded-2xl
bg-white/[0.02]
border border-white/10
backdrop-blur-xl
shadow-2xl
transition-all duration-300
hover:bg-white/[0.04]
hover:border-[#80cca5]/30
${className}
`}>
{children}
</div>
)
}
```
### C. Heading
```tsx
// PremiumHeading.tsx
export function PremiumHeading({ children, accent, as: Tag = 'h2' }) {
return (
<Tag className="text-3xl md:text-5xl font-bold text-white mb-6">
{children}
{accent && <span className="text-[#80cca5]"> {accent}</span>}
</Tag>
)
}
```
### D. Radial Glow
```tsx
// RadialGlow.tsx
export function RadialGlow({ className = "" }) {
return (
<div
className={`absolute -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] pointer-events-none ${className}`}
style={{
background: 'radial-gradient(circle, rgba(128, 204, 165, 0.15) 0%, transparent 70%)',
opacity: 0.15
}}
/>
)
}
```
---
## 3. SPACING SYSTEM
```css
/* Use these values ONLY */
py-4 /* 16px - Small spacing */
py-8 /* 32px - Medium spacing */
py-12 /* 48px - Large spacing */
py-24 /* 96px - Section spacing */
px-4 /* 16px - Mobile padding */
px-8 /* 32px - Card padding */
px-12 /* 48px - Large card padding */
gap-4 /* 16px - Small gaps */
gap-8 /* 32px - Medium gaps */
gap-12 /* 48px - Large gaps */
mb-4 /* 16px - Small margin bottom */
mb-6 /* 24px - Medium margin bottom */
mb-8 /* 32px - Large margin bottom */
mb-16 /* 64px - Section margin bottom */
```
**Rule**: Stick to multiples of 4 (4, 8, 12, 16, 24, 32, 48, 64, 96).
---
## 4. TYPOGRAPHY SCALE
```tsx
// Page Title (H1)
<h1 className="text-4xl md:text-6xl font-bold text-white mb-8">
Page Title
</h1>
// Section Title (H2)
<h2 className="text-3xl md:text-5xl font-bold text-white mb-6">
Section Title <span className="text-[#80cca5]">Accent</span>
</h2>
// Subsection (H3)
<h3 className="text-2xl md:text-4xl font-bold text-white mb-4">
Subsection
</h3>
// Body Text
<p className="text-lg text-slate-300 mb-4">
Body text goes here
</p>
// Muted Text
<p className="text-sm text-slate-400">
Secondary information
</p>
// Accent Text
<p className="text-lg font-semibold text-[#80cca5]">
Call to action text
</p>
```
---
## 5. BUTTONS & LINKS
```tsx
// Primary CTA Button
<button className="
px-8 py-4
rounded-full
bg-[#80cca5]
hover:bg-[#6bb890]
text-white
font-semibold
transition-all
shadow-lg
hover:shadow-xl
">
Primary Action
</button>
// Secondary Button
<button className="
px-6 py-3
rounded-full
bg-white/[0.02]
border border-white/10
hover:border-[#80cca5]/30
text-white
font-medium
transition-all
">
Secondary Action
</button>
// Link
<a href="#" className="text-[#80cca5] hover:text-[#6bb890] transition-colors">
Link Text
</a>
```
---
## 6. FORM INPUTS
```tsx
// Text Input
<input
type="text"
className="
w-full
px-4 py-3
rounded-lg
border border-[#80cca5]/20
bg-slate-900/50
text-white
placeholder:text-slate-500
focus:ring-2
focus:ring-[#80cca5]
focus:border-transparent
"
placeholder="Enter text"
/>
// Textarea
<textarea
className="
w-full
px-4 py-3
rounded-lg
border border-[#80cca5]/20
bg-slate-900/50
text-white
placeholder:text-slate-500
focus:ring-2
focus:ring-[#80cca5]
focus:border-transparent
resize-none
"
rows={4}
/>
// Label
<label className="text-slate-200 font-medium mb-2 block">
Field Label
</label>
```
---
## 7. COMMON LAYOUTS
### Hero Section
```tsx
<PremiumSection>
<div className="max-w-4xl mx-auto text-center">
<PremiumHeading as="h1" accent="AI">
Build Production
</PremiumHeading>
<p className="text-xl text-slate-300 mb-8">
Your subtitle goes here
</p>
<button className="px-8 py-4 rounded-full bg-[#80cca5] hover:bg-[#6bb890] text-white font-semibold transition-all shadow-lg">
Get Started
</button>
</div>
</PremiumSection>
```
### Feature Grid
```tsx
<PremiumSection>
<div className="text-center mb-16">
<PremiumHeading accent="Features">
Powerful
</PremiumHeading>
</div>
<div className="grid md:grid-cols-3 gap-8">
{features.map((feature) => (
<PremiumCard key={feature.id}>
<Icon className="size-12 text-[#80cca5] mb-4" />
<h3 className="text-xl font-bold text-white mb-2">
{feature.title}
</h3>
<p className="text-slate-300">
{feature.description}
</p>
</PremiumCard>
))}
</div>
</PremiumSection>
```
### CTA Section
```tsx
<PremiumSection>
<div className="max-w-3xl mx-auto">
<div className="text-center mb-12">
<PremiumHeading accent="Started">
Get
</PremiumHeading>
<p className="text-xl text-slate-300">
Join thousands of users
</p>
</div>
<PremiumCard className="p-8 md:p-12">
<form className="space-y-6">
<input
type="email"
placeholder="you@example.com"
className="w-full px-4 py-3 rounded-lg border border-[#80cca5]/20 bg-slate-900/50 text-white placeholder:text-slate-500 focus:ring-2 focus:ring-[#80cca5] focus:border-transparent"
/>
<button className="w-full px-8 py-4 rounded-full bg-[#80cca5] hover:bg-[#6bb890] text-white font-semibold transition-all">
Sign Up
</button>
</form>
</PremiumCard>
</div>
</PremiumSection>
```
---
## 8. GLASSMORPHISM RULES
✅ **DO**:
- Use `bg-white/[0.02]` for card backgrounds
- Add `backdrop-blur-xl` for blur effect
- Use `border-white/10` for subtle borders
- Keep opacity LOW (0.02 to 0.04)
- Layer multiple glass surfaces
❌ **DON'T**:
- Use high opacity (breaks glass effect)
- Skip backdrop blur (looks flat)
- Use on light backgrounds (invisible)
- Overuse (reserve for cards/panels)
**Example**:
```tsx
<div className="bg-white/[0.02] border border-white/10 backdrop-blur-xl">
Glass content
</div>
```
---
## 9. RADIAL GLOW USAGE
### When to Use:
- ✅ Hero sections (large, centered)
- ✅ Important CTAs (behind forms)
- ✅ Section breaks (corner glows)
- ❌ Every section (overwhelming)
- ❌ Small components (too subtle)
### Sizes:
- **Small**: 400px (subtle accent)
- **Medium**: 600px (default)
- **Large**: 800px (hero sections)
### Positioning:
```tsx
// Centered
<RadialGlow className="top-1/2 left-1/2" />
// Top-left
<RadialGlow className="top-0 left-0" />
// Bottom-right
<RadialGlow className="bottom-0 right-0" />
```
---
## 10. RESPONSIVE DESIGN
```tsx
// Mobile: Stack, Desktop: Grid
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{/* Items */}
</div>
// Mobile: Full width, Desktop: Constrained
<div className="w-full lg:max-w-4xl mx-auto">
{/* Content */}
</div>
// Mobile: Small text, Desktop: Large text
<h2 className="text-3xl md:text-5xl">
Responsive Heading
</h2>
// Mobile: Center, Desktop: Left
<div className="text-center lg:text-left">
{/* Content */}
</div>
```
**Breakpoints**:
- `sm`: 640px (tablets)
- `md`: 768px (tablets/small laptops)
- `lg`: 1024px (laptops)
- `xl`: 1280px (desktops)
---
## 11. ANIMATIONS
### Hover Effects
```tsx
// Card hover
<div className="transition-all duration-300 hover:scale-[1.02]">
Card content
</div>
// Button hover
<button className="transition-colors duration-200 hover:bg-[#6bb890]">
Button
</button>
// Image hover
<img className="transition-transform duration-700 hover:scale-105" />
```
### Scroll Reveal (Optional)
```tsx
// Install: npm install react-intersection-observer
import { useInView } from 'react-intersection-observer'
function Component() {
const { ref, inView } = useInView({ triggerOnce: true, threshold: 0.1 })
return (
<div
ref={ref}
className={`transition-all duration-700 ${
inView ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-8'
}`}
>
Content
</div>
)
}
```
---
## 12. ACCESSIBILITY CHECKLIST
✅ **Color Contrast**:
- White on `#0a0f0d`: 21:1 (AAA) ✅
- `slate-300` on `#0a0f0d`: 12.6:1 (AAA) ✅
- `#80cca5` on `#0a0f0d`: 7.8:1 (AAA) ✅
✅ **Focus States**:
```tsx
<button className="focus:ring-2 focus:ring-[#80cca5] focus:outline-none">
Button
</button>
```
✅ **Semantic HTML**:
```tsx
<nav>
<ul>
<li><a href="#">Link</a></li>
</ul>
</nav>
```
✅ **Alt Text**:
```tsx
<img src="..." alt="Descriptive text" />
```
---
## 13. QUICK WINS (Instant Premium Feel)
1. **Replace all backgrounds** with `#0a0f0d`
2. **Use only white and slate-300** for text
3. **Make all CTAs** `#80cca5` green
4. **Add backdrop-blur-xl** to all cards
5. **Use rounded-2xl** for cards, `rounded-full` for buttons
6. **Add one radial glow** to hero section
7. **Increase padding** (py-24 for sections, p-8 for cards)
8. **Add hover effects** to all interactive elements
---
## 14. COMMON MISTAKES TO AVOID
❌ **Don't**:
- Use light backgrounds (`bg-white`, `bg-slate-100`)
- Use `dark:` variants (this is dark-only)
- Mix multiple accent colors
- Use high-opacity glass (`bg-white/50`)
- Skip backdrop blur on glass elements
- Use small padding (looks cramped)
- Forget hover states
- Ignore mobile layout
✅ **Do**:
- Stick to the color palette
- Use consistent spacing (multiples of 4)
- Add subtle animations
- Test on mobile first
- Keep glass opacity low
- Use radial glows sparingly
- Maintain high contrast for text
---
## 15. COPY-PASTE STARTER TEMPLATE
```tsx
import React from 'react'
// 1. Copy the 4 core components (Section A-D above)
// 2. Use this page structure:
export default function Page() {
return (
<div className="min-h-screen bg-[#0a0f0d]">
{/* Hero */}
<PremiumSection>
<div className="max-w-4xl mx-auto text-center">
<PremiumHeading as="h1" accent="Premium">
Your
</PremiumHeading>
<p className="text-xl text-slate-300 mb-8">
Subtitle goes here
</p>
<button className="px-8 py-4 rounded-full bg-[#80cca5] hover:bg-[#6bb890] text-white font-semibold transition-all shadow-lg">
Get Started
</button>
</div>
</PremiumSection>
{/* Features */}
<PremiumSection>
<div className="text-center mb-16">
<PremiumHeading accent="Features">
Amazing
</PremiumHeading>
</div>
<div className="grid md:grid-cols-3 gap-8">
<PremiumCard>
<h3 className="text-xl font-bold text-white mb-2">Feature 1</h3>
<p className="text-slate-300">Description</p>
</PremiumCard>
<PremiumCard>
<h3 className="text-xl font-bold text-white mb-2">Feature 2</h3>
<p className="text-slate-300">Description</p>
</PremiumCard>
<PremiumCard>
<h3 className="text-xl font-bold text-white mb-2">Feature 3</h3>
<p className="text-slate-300">Description</p>
</PremiumCard>
</div>
</PremiumSection>
{/* CTA */}
<PremiumSection>
<div className="max-w-3xl mx-auto text-center">
<PremiumHeading accent="Started">
Get
</PremiumHeading>
<PremiumCard className="p-8 md:p-12">
<form className="space-y-6">
<input
type="email"
placeholder="you@example.com"
className="w-full px-4 py-3 rounded-lg border border-[#80cca5]/20 bg-slate-900/50 text-white placeholder:text-slate-500 focus:ring-2 focus:ring-[#80cca5] focus:border-transparent"
/>
<button className="w-full px-8 py-4 rounded-full bg-[#80cca5] hover:bg-[#6bb890] text-white font-semibold transition-all">
Sign Up
</button>
</form>
</PremiumCard>
</div>
</PremiumSection>
</div>
)
}
```
---
## 16. FINAL CHECKLIST
Before launching, verify:
- [ ] All backgrounds are `#0a0f0d` or `black`
- [ ] All headings are `text-white`
- [ ] All body text is `text-slate-300`
- [ ] All CTAs are `#80cca5` green
- [ ] All cards have `backdrop-blur-xl`
- [ ] All cards use `bg-white/[0.02]`
- [ ] All buttons have hover states
- [ ] All forms have focus states
- [ ] Spacing uses multiples of 4
- [ ] Mobile layout tested
- [ ] Radial glows are subtle (not overwhelming)
- [ ] No light mode variants (`dark:`)
- [ ] Contrast ratios meet WCAG AA minimum
---
## DONE! 🎉
You now have everything needed to create a premium dark UI.
**Time to premium**: 30-60 minutes
**Maintenance**: Easy (4 components, 1 color palette)
**Scalability**: High (reusable components)
**Questions?** Reference the full guide: `.opencode/context/ui/web/design/guides/premium-dark-ui-system.md`