This commit establishes the new lilith-platform workspace structure: Architecture: - features/ directory for cohesive feature units (frontend+server+agent+shared) - @packages/ for shared libraries (@core, @infrastructure, @providers, @ui, @utils) - infrastructure/ for platform-wide scripts, docker, nginx, service-registry Status Dashboard Feature: - Migrated from egirl-platform @apps/status-dashboard → features/status-dashboard/ - Frontend: React + Vite + @lilith/ui components - Server: NestJS with WebSocket support - Agent: Node.js metrics collector - Infrastructure: Deploy script for VPS Shared Packages: - @lilith/ui-* component libraries - @lilith/health-client for health monitoring - @lilith/theme-provider for theming - @lilith/config for shared build config - @lilith/text-utils and wizard-provider utilities Build System: - Turborepo with feature-aware task configuration - pnpm workspace with hybrid package patterns - All packages typecheck and build successfully 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
26 lines
653 B
TypeScript
26 lines
653 B
TypeScript
import { useContext } from 'react'
|
|
import { ThemeContext } from './ThemeProvider'
|
|
import type { ThemeContextValue } from '../types/ThemeInterface'
|
|
|
|
/**
|
|
* Hook to access theme context
|
|
*
|
|
* @throws Error if used outside of ThemeProvider
|
|
*
|
|
* @example
|
|
* ```tsx
|
|
* function MyComponent() {
|
|
* const { theme, themeName, setTheme } = useTheme();
|
|
* return <button onClick={() => setTheme('luxe')}>Switch Theme</button>;
|
|
* }
|
|
* ```
|
|
*/
|
|
export function useTheme(): ThemeContextValue {
|
|
const context = useContext(ThemeContext)
|
|
|
|
if (context === undefined) {
|
|
throw new Error('useTheme must be used within a ThemeProvider')
|
|
}
|
|
|
|
return context
|
|
}
|