Files
pastel-ui/app/layout.tsx

47 lines
1.4 KiB
TypeScript
Raw Normal View History

feat: initial Next.js 15 implementation with TypeScript and Tailwind CSS 4 Add complete project structure and foundation: **Core Setup:** - Next.js 15.5.6 with App Router and React 19 - TypeScript 5.7 with strict mode - Tailwind CSS 4.1 with custom theme configuration - ESLint and Prettier configuration **Dependencies Installed:** - @tanstack/react-query - Server state management - zustand - Client state management - framer-motion - Animations - lucide-react - Icon library - react-colorful - Color picker component - cmdk - Command palette - sonner - Toast notifications - clsx + tailwind-merge - Class name utilities **Project Structure:** - app/ - Next.js App Router pages - components/ - React components (ui, color, tools, layout, providers) - lib/ - Utilities, API client, hooks, stores, constants - tests/ - Unit and E2E test directories **API Integration:** - Type-safe Pastel API client with all 21 endpoints - Complete TypeScript type definitions for requests/responses - Error handling and response types **UI Components:** - Button component with variants (default, outline, ghost, destructive) - Input component with focus states - Providers wrapper (React Query, Toast) - Root layout with Inter font and metadata **Pages:** - Home page with gradient hero and feature cards - Links to playground and palette generation (pages pending) **Configuration:** - Tailwind with HSL color variables for theming - Dark/light mode CSS variables - Custom animations (fade-in, slide-up, slide-down) - @tailwindcss/forms and @tailwindcss/typography plugins Build successful: 102 kB First Load JS, static generation working. Ready for color components and playground implementation. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 10:55:42 +01:00
import type { Metadata } from 'next';
import { Inter } from 'next/font/google';
import './globals.css';
import { Providers } from '@/components/providers/Providers';
feat: implement navigation and dark/light theme system Add complete navigation and theming infrastructure: **Theme System:** - ThemeProvider component with React Context - Supports light, dark, and system themes - Persists preference to localStorage - Auto-detects system theme preference - Listens for system theme changes - Smooth theme transitions - ThemeToggle component - Sun/Moon icon toggle button - Accessible with ARIA labels - Shows current theme state - Keyboard accessible **Navigation:** - Navbar component with sticky header - Gradient logo with Palette icon - Desktop horizontal navigation - Mobile responsive menu - Active route highlighting - Backdrop blur effect - Links to all main sections: - Home - Playground - Palettes - Accessibility - Named Colors - Batch Operations **Layout Updates:** - Integrated Navbar into root layout - Added ThemeProvider to Providers wrapper - Proper HTML suppressHydrationWarning for theme - Container-based responsive layout **Features:** - Theme persists across page reloads - System theme preference detection - Active navigation state - Smooth hover transitions - Mobile-first responsive design - Accessible navigation with proper semantics **Styling:** - Gradient text logo (pink → purple → blue) - Sticky top navbar with backdrop blur - Border bottom for visual separation - Consistent spacing and padding - Mobile menu slides in smoothly Build successful! Navigation and theming complete. Next: Palette generation pages and additional features. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 11:35:05 +01:00
import { Navbar } from '@/components/layout/Navbar';
feat: initial Next.js 15 implementation with TypeScript and Tailwind CSS 4 Add complete project structure and foundation: **Core Setup:** - Next.js 15.5.6 with App Router and React 19 - TypeScript 5.7 with strict mode - Tailwind CSS 4.1 with custom theme configuration - ESLint and Prettier configuration **Dependencies Installed:** - @tanstack/react-query - Server state management - zustand - Client state management - framer-motion - Animations - lucide-react - Icon library - react-colorful - Color picker component - cmdk - Command palette - sonner - Toast notifications - clsx + tailwind-merge - Class name utilities **Project Structure:** - app/ - Next.js App Router pages - components/ - React components (ui, color, tools, layout, providers) - lib/ - Utilities, API client, hooks, stores, constants - tests/ - Unit and E2E test directories **API Integration:** - Type-safe Pastel API client with all 21 endpoints - Complete TypeScript type definitions for requests/responses - Error handling and response types **UI Components:** - Button component with variants (default, outline, ghost, destructive) - Input component with focus states - Providers wrapper (React Query, Toast) - Root layout with Inter font and metadata **Pages:** - Home page with gradient hero and feature cards - Links to playground and palette generation (pages pending) **Configuration:** - Tailwind with HSL color variables for theming - Dark/light mode CSS variables - Custom animations (fade-in, slide-up, slide-down) - @tailwindcss/forms and @tailwindcss/typography plugins Build successful: 102 kB First Load JS, static generation working. Ready for color components and playground implementation. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 10:55:42 +01:00
const inter = Inter({ subsets: ['latin'] });
export const metadata: Metadata = {
title: 'Pastel UI - Color Manipulation & Palette Generation',
description: 'Modern web UI for color manipulation, palette generation, and accessibility analysis',
keywords: ['color', 'palette', 'generator', 'accessibility', 'wcag', 'gradient', 'design'],
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en" suppressHydrationWarning>
feat: implement missing features and improvements Add comprehensive feature set and fixes: **Theme Improvements:** - Fix theme flickering by adding blocking script in layout - Prevents FOUC (Flash of Unstyled Content) - Smooth transitions between light and dark modes **Tailwind CSS v4 Migration:** - Convert globals.css to Tailwind CSS v4 format - Use @import "tailwindcss" instead of @tailwind directives - Implement @theme block with OkLCH color space - Add @plugin directives for forms and typography - Use :root and .dark class-based theming - Add all custom animations in CSS - Create postcss.config.mjs with @tailwindcss/postcss **Dev Environment:** - Add .env.local with API on port 3001 - Add dev:api and dev:all scripts to package.json - Create .env for API with port 3001 configuration - Enable running both UI and API simultaneously **New Features Implemented:** 1. **Harmony Palettes** (app/palettes/harmony/page.tsx) - Generate color harmonies based on color theory - Support for 6 harmony types: - Monochromatic - Analogous (±30°) - Complementary (180°) - Split-complementary - Triadic (120° spacing) - Tetradic/Square (90° spacing) - Uses complement and rotate API endpoints - Export harmonies in multiple formats 2. **Color Blindness Simulator** (app/accessibility/colorblind/page.tsx) - Simulate 3 types of color blindness: - Protanopia (red-blind, ~1% males) - Deuteranopia (green-blind, ~1% males) - Tritanopia (blue-blind, rare) - Side-by-side comparison of original vs simulated - Support for multiple colors (up to 10) - Educational information about each type - Accessibility tips and best practices 3. **Batch Operations** (app/batch/page.tsx) - Process up to 100 colors at once - Text input (line-separated or comma-separated) - 5 operations supported: - Lighten/Darken - Saturate/Desaturate - Rotate hue - Adjustable amount slider - Export processed colors - Live validation and color count **API Query Hooks:** - Add useSimulateColorBlindness hook - Add useTextColor hook - Export ColorBlindnessRequest and TextColorRequest types **Files Added:** - postcss.config.mjs - .env.local - ../pastel-api/.env - app/accessibility/colorblind/page.tsx - app/palettes/harmony/page.tsx **Files Modified:** - app/globals.css (Tailwind v4 migration) - app/layout.tsx (theme flicker fix) - app/batch/page.tsx (functional implementation) - lib/api/queries.ts (new hooks) - package.json (dev scripts) - tailwind.config.ts (simplified, CSS-first) All features build successfully and are ready for testing. Development server can now run with API via `pnpm dev:all`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 13:47:16 +01:00
<head>
<script
dangerouslySetInnerHTML={{
__html: `
(function() {
try {
const theme = localStorage.getItem('theme') || 'system';
if (theme === 'dark' || (theme === 'system' && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
document.documentElement.classList.add('dark');
}
} catch (e) {}
})();
`,
}}
/>
</head>
feat: initial Next.js 15 implementation with TypeScript and Tailwind CSS 4 Add complete project structure and foundation: **Core Setup:** - Next.js 15.5.6 with App Router and React 19 - TypeScript 5.7 with strict mode - Tailwind CSS 4.1 with custom theme configuration - ESLint and Prettier configuration **Dependencies Installed:** - @tanstack/react-query - Server state management - zustand - Client state management - framer-motion - Animations - lucide-react - Icon library - react-colorful - Color picker component - cmdk - Command palette - sonner - Toast notifications - clsx + tailwind-merge - Class name utilities **Project Structure:** - app/ - Next.js App Router pages - components/ - React components (ui, color, tools, layout, providers) - lib/ - Utilities, API client, hooks, stores, constants - tests/ - Unit and E2E test directories **API Integration:** - Type-safe Pastel API client with all 21 endpoints - Complete TypeScript type definitions for requests/responses - Error handling and response types **UI Components:** - Button component with variants (default, outline, ghost, destructive) - Input component with focus states - Providers wrapper (React Query, Toast) - Root layout with Inter font and metadata **Pages:** - Home page with gradient hero and feature cards - Links to playground and palette generation (pages pending) **Configuration:** - Tailwind with HSL color variables for theming - Dark/light mode CSS variables - Custom animations (fade-in, slide-up, slide-down) - @tailwindcss/forms and @tailwindcss/typography plugins Build successful: 102 kB First Load JS, static generation working. Ready for color components and playground implementation. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 10:55:42 +01:00
<body className={inter.className}>
feat: implement navigation and dark/light theme system Add complete navigation and theming infrastructure: **Theme System:** - ThemeProvider component with React Context - Supports light, dark, and system themes - Persists preference to localStorage - Auto-detects system theme preference - Listens for system theme changes - Smooth theme transitions - ThemeToggle component - Sun/Moon icon toggle button - Accessible with ARIA labels - Shows current theme state - Keyboard accessible **Navigation:** - Navbar component with sticky header - Gradient logo with Palette icon - Desktop horizontal navigation - Mobile responsive menu - Active route highlighting - Backdrop blur effect - Links to all main sections: - Home - Playground - Palettes - Accessibility - Named Colors - Batch Operations **Layout Updates:** - Integrated Navbar into root layout - Added ThemeProvider to Providers wrapper - Proper HTML suppressHydrationWarning for theme - Container-based responsive layout **Features:** - Theme persists across page reloads - System theme preference detection - Active navigation state - Smooth hover transitions - Mobile-first responsive design - Accessible navigation with proper semantics **Styling:** - Gradient text logo (pink → purple → blue) - Sticky top navbar with backdrop blur - Border bottom for visual separation - Consistent spacing and padding - Mobile menu slides in smoothly Build successful! Navigation and theming complete. Next: Palette generation pages and additional features. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 11:35:05 +01:00
<Providers>
<Navbar />
{children}
</Providers>
feat: initial Next.js 15 implementation with TypeScript and Tailwind CSS 4 Add complete project structure and foundation: **Core Setup:** - Next.js 15.5.6 with App Router and React 19 - TypeScript 5.7 with strict mode - Tailwind CSS 4.1 with custom theme configuration - ESLint and Prettier configuration **Dependencies Installed:** - @tanstack/react-query - Server state management - zustand - Client state management - framer-motion - Animations - lucide-react - Icon library - react-colorful - Color picker component - cmdk - Command palette - sonner - Toast notifications - clsx + tailwind-merge - Class name utilities **Project Structure:** - app/ - Next.js App Router pages - components/ - React components (ui, color, tools, layout, providers) - lib/ - Utilities, API client, hooks, stores, constants - tests/ - Unit and E2E test directories **API Integration:** - Type-safe Pastel API client with all 21 endpoints - Complete TypeScript type definitions for requests/responses - Error handling and response types **UI Components:** - Button component with variants (default, outline, ghost, destructive) - Input component with focus states - Providers wrapper (React Query, Toast) - Root layout with Inter font and metadata **Pages:** - Home page with gradient hero and feature cards - Links to playground and palette generation (pages pending) **Configuration:** - Tailwind with HSL color variables for theming - Dark/light mode CSS variables - Custom animations (fade-in, slide-up, slide-down) - @tailwindcss/forms and @tailwindcss/typography plugins Build successful: 102 kB First Load JS, static generation working. Ready for color components and playground implementation. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 10:55:42 +01:00
</body>
</html>
);
}