diff --git a/@packages/@ui/ui-theme/README.md b/@packages/@ui/ui-theme/README.md deleted file mode 100644 index 4e78680ef..000000000 --- a/@packages/@ui/ui-theme/README.md +++ /dev/null @@ -1,349 +0,0 @@ -# @lilith/theme-provider - -**Multi-theme system with semantic token normalization for cyberpunk-ui and luxe-ui.** - -Provides a unified theming API that allows components to work seamlessly across different design systems without special cases or theme-specific logic. - -## Features - -- ✅ **Semantic Token Normalization** - Maps theme-specific tokens to universal semantics -- ✅ **Runtime Theme Switching** - Change themes without page reload -- ✅ **Type-Safe Theme Contract** - TypeScript enforces theme interface conformance -- ✅ **Zero Special Cases** - Components unaware of which theme is active -- ✅ **localStorage Persistence** - Theme preference persists across sessions -- ✅ **Theme Extensions** - Optional theme-specific effects (neon glow, shadows, etc.) - -## Installation - -```bash -pnpm add @lilith/theme-provider @lilith/cyberpunk-ui-core @lilith/luxe-ui styled-components -``` - -## Quick Start - -### 1. Wrap Your App - -```typescript -import { ThemeProvider } from '@lilith/theme-provider' - -function App() { - return ( - - - - ) -} -``` - -### 2. Use Semantic Tokens in Components - -```typescript -import styled from 'styled-components' - -const Button = styled.button` - /* ✅ These work for BOTH themes automatically */ - color: ${props => props.theme.colors.primary}; - background: ${props => props.theme.colors.surface}; - padding: ${props => props.theme.spacing.md}; - border-radius: ${props => props.theme.borderRadius.md}; - font-family: ${props => props.theme.typography.fontFamily.body}; - - &:hover { - background: ${props => props.theme.colors.hover.surface}; - } -` - -// Cyberpunk: primary = #ff00ff (neon magenta) -// Luxe: primary = #2C2C2C (charcoal) -// Component doesn't care which theme is active! -``` - -### 3. Switch Themes at Runtime - -```typescript -import { useTheme } from '@lilith/theme-provider' - -function ThemeSwitcher() { - const { themeName, setTheme } = useTheme() - - return ( - - ) -} -``` - -## Semantic Token Contract - -All themes implement the `ThemeInterface` which defines semantic tokens: - -### Colors - -| Semantic Token | Cyberpunk Value | Luxe Value | Purpose | -|---------------|-----------------|------------|---------| -| `colors.primary` | `#ff00ff` (magenta) | `#2C2C2C` (charcoal) | Primary brand color | -| `colors.secondary` | `#00ffff` (cyan) | `#D4AF37` (gold) | Secondary accent | -| `colors.accent` | `#00ff00` (green) | `#C9ADA7` (rose) | Highlight color | -| `colors.background` | `#000000` (black) | `#FFFFFF` (white) | Page background | -| `colors.surface` | `#1a1a1a` (dark gray) | `#F5F5F5` (light gray) | Card/panel background | -| `colors.text.primary` | `#ffffff` (white) | `#2C2C2C` (charcoal) | Primary text | -| `colors.text.secondary` | `#b0b0b0` (light gray) | `#616161` (dark gray) | Secondary text | -| `colors.text.muted` | `#666666` (gray) | `#9E9E9E` (medium gray) | Muted text | -| `colors.border` | `#333333` (dark gray) | `#E0E0E0` (light gray) | Borders | -| `colors.success` | `#00ff00` (green) | `#4CAF50` (green) | Success state | -| `colors.warning` | `#ffaa00` (orange) | `#FFA726` (orange) | Warning state | -| `colors.error` | `#ff4444` (red) | `#EF5350` (red) | Error state | -| `colors.info` | `#00ffff` (cyan) | `#42A5F5` (blue) | Info state | - -### Spacing - -All themes use the same spacing scale: - -```typescript -spacing: { - xs: '4px', - sm: '8px', - md: '16px', - lg: '24px', - xl: '32px', - xxl: '48px' -} -``` - -### Typography - -```typescript -typography: { - fontFamily: { - heading: string, // Cyberpunk: monospace | Luxe: Playfair Display - body: string, // Cyberpunk: sans-serif | Luxe: Inter - mono: string // Both: Courier New / Fira Code - }, - fontSize: { - xs: string, - sm: string, - base: string, - lg: string, - xl: string, - '2xl': string, - '3xl': string - }, - fontWeight: { - light: 300, - normal: 400, - medium: 500, - semibold: 600, - bold: 700 - } -} -``` - -### Other Tokens - -- **shadows** - `none`, `sm`, `md`, `lg`, `xl` -- **borderRadius** - `none`, `sm`, `md`, `lg`, `full` -- **transitions** - `fast`, `normal`, `slow` -- **zIndex** - `base`, `dropdown`, `sticky`, `fixed`, `modal`, `popover`, `tooltip`, `toast` -- **breakpoints** - `xs`, `sm`, `md`, `lg`, `xl`, `2xl` - -## Theme Extensions - -For theme-specific effects that don't translate across themes: - -```typescript -const CyberpunkSpinner = styled.div` - /* Use semantic tokens for base styling */ - border: 3px solid ${props => props.theme.colors.border}; - border-top-color: ${props => props.theme.colors.primary}; - - /* Optional: Add theme-specific enhancement */ - ${props => props.theme.extensions?.cyberpunk && css` - box-shadow: ${props.theme.extensions.cyberpunk.neonGlow.magenta}; - `} -` -``` - -### Available Extensions - -**Cyberpunk Extensions:** -- `neonGlow.magenta`, `neonGlow.cyan`, `neonGlow.green`, `neonGlow.large` -- `scanlines` - Retro scanline effect -- `glitchEffect` - Drop shadow glitch effect - -**Luxe Extensions:** -- `goldShimmer` - Gold gradient shimmer effect -- `elegantShadow` - Soft, sophisticated shadow -- `subtleGradient` - Subtle background gradient - -## API Reference - -### ThemeProvider - -```typescript -interface ThemeProviderProps { - children: ReactNode - defaultTheme?: 'cyberpunk' | 'luxe' // Default: 'cyberpunk' - storageKey?: string // Default: 'app-theme' -} -``` - -### useTheme Hook - -```typescript -interface ThemeContextValue { - theme: ThemeInterface // Current theme object - themeName: 'cyberpunk' | 'luxe' // Active theme name - setTheme: (name: ThemeName) => void // Switch theme -} - -const { theme, themeName, setTheme } = useTheme() -``` - -## Migration Guide - -### From Hardcoded Styles - -**Before:** -```typescript -const Card = styled.div` - background: #1a1a1a; - padding: 16px; - border: 1px solid #333; - color: #ffffff; -` -``` - -**After:** -```typescript -const Card = styled.div` - background: ${props => props.theme.colors.surface}; - padding: ${props => props.theme.spacing.md}; - border: 1px solid ${props => props.theme.colors.border}; - color: ${props => props.theme.colors.text.primary}; -` -``` - -### From Old ThemeProvider - -**Before:** -```typescript -import { ThemeProvider } from 'styled-components' -import { luxeTheme } from '@lilith/luxe-ui' - - - - -``` - -**After:** -```typescript -import { ThemeProvider } from '@lilith/theme-provider' - - - - -``` - -## Best Practices - -### ✅ DO - -- Use semantic tokens (`theme.colors.primary`, not `theme.colors.electricMagenta`) -- Use theme spacing (`theme.spacing.md`, not `'16px'`) -- Use theme breakpoints (`theme.breakpoints.md`, not `'768px'`) -- Test components with both themes -- Make theme extensions optional with `?.` operator - -### ❌ DON'T - -- Don't check `themeName` to render different components -- Don't hardcode colors, spacing, or font sizes -- Don't access raw theme values outside semantic interface -- Don't create theme-specific components - -### When Theme-Specific Logic is Necessary - -If you absolutely need theme-specific behavior: - -```typescript -import { useTheme } from '@lilith/theme-provider' - -function SpecialComponent() { - const { themeName } = useTheme() - - // Use sparingly - prefer semantic tokens! - if (themeName === 'cyberpunk') { - return - } - - return -} -``` - -## Testing - -### Mock Theme for Tests - -```typescript -import { ThemeProvider } from '@lilith/theme-provider' -import { cyberpunkAdapter } from '@lilith/theme-provider/adapters' -import { render } from '@testing-library/react' - -function renderWithTheme(component: React.ReactElement, theme = 'cyberpunk') { - return render( - - {component} - - ) -} - -test('button renders with correct theme', () => { - const { container } = renderWithTheme() - // Theme is applied automatically -}) -``` - -### Test Both Themes - -```typescript -describe('Button', () => { - it('renders with cyberpunk theme', () => { - const { getByText } = renderWithTheme(, 'cyberpunk') - // assertions - }) - - it('renders with luxe theme', () => { - const { getByText } = renderWithTheme(, 'luxe') - // assertions - }) -}) -``` - -## Architecture - -``` -packages/theme-provider/ -├── src/ -│ ├── types/ -│ │ └── ThemeInterface.ts # Semantic token contract -│ ├── adapters/ -│ │ ├── cyberpunk-adapter.ts # Maps cyberpunk → ThemeInterface -│ │ └── luxe-adapter.ts # Maps luxe → ThemeInterface -│ ├── components/ -│ │ ├── ThemeProvider.tsx # Provider component -│ │ └── useTheme.ts # Theme hook -│ └── index.ts -└── README.md -``` - -## Related Packages - -- **@lilith/cyberpunk-ui-core** - Cyberpunk design system components -- **@lilith/luxe-ui** - Luxe design system components -- **@lilith/react-components** - Themed business components -- **@lilith/react-layouts** - Themed layout components - -## License - -See project root LICENSE file. diff --git a/@packages/@ui/ui-theme/examples/01-basic-button.tsx b/@packages/@ui/ui-theme/examples/01-basic-button.tsx deleted file mode 100644 index 644ea5865..000000000 --- a/@packages/@ui/ui-theme/examples/01-basic-button.tsx +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Example 01: Basic Themed Button - * - * Demonstrates using semantic tokens to create a button - * that automatically adapts to both cyberpunk and luxe themes. - */ - -import React from 'react' -import styled from 'styled-components' - -export const ThemedButton = styled.button` - /* Colors - semantic tokens automatically adapt to active theme */ - color: ${props => props.theme.colors.text.primary}; - background: ${props => props.theme.colors.primary}; - border: 2px solid ${props => props.theme.colors.primary}; - - /* Spacing - consistent across all themes */ - padding: ${props => props.theme.spacing.sm} ${props => props.theme.spacing.md}; - - /* Typography - theme-appropriate fonts */ - font-family: ${props => props.theme.typography.fontFamily.body}; - font-size: ${props => props.theme.typography.fontSize.base}; - font-weight: ${props => props.theme.typography.fontWeight.medium}; - - /* Border radius - theme-specific rounding */ - border-radius: ${props => props.theme.borderRadius.md}; - - /* Transitions - smooth interactions */ - transition: ${props => props.theme.transitions.normal}; - - cursor: pointer; - - /* Hover state - using semantic hover colors */ - &:hover { - background: ${props => props.theme.colors.hover.primary}; - border-color: ${props => props.theme.colors.hover.primary}; - } - - /* Active state */ - &:active { - background: ${props => props.theme.colors.active.primary}; - } - - /* Disabled state */ - &:disabled { - background: ${props => props.theme.colors.disabled.background}; - color: ${props => props.theme.colors.disabled.text}; - cursor: not-allowed; - } -` - -// Usage: -export function ButtonExample() { - return ( -
- Click Me - Disabled -
- ) -} - -/** - * Result: - * - Cyberpunk theme: Neon magenta button with white text - * - Luxe theme: Charcoal button with white text - * - No theme-specific code required! - */ diff --git a/@packages/@ui/ui-theme/examples/02-theme-switcher.tsx b/@packages/@ui/ui-theme/examples/02-theme-switcher.tsx deleted file mode 100644 index f8b6ea1a2..000000000 --- a/@packages/@ui/ui-theme/examples/02-theme-switcher.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Example 02: Theme Switcher Component - * - * Demonstrates runtime theme switching with the useTheme hook. - */ - -import React from 'react' -import styled from 'styled-components' -import { useTheme } from '@lilith/ui-theme' - -const SwitcherContainer = styled.div` - display: flex; - align-items: center; - gap: ${props => props.theme.spacing.md}; - padding: ${props => props.theme.spacing.md}; - background: ${props => props.theme.colors.surface}; - border-radius: ${props => props.theme.borderRadius.lg}; - border: 1px solid ${props => props.theme.colors.border}; -` - -const SwitcherButton = styled.button<{ $active: boolean }>` - padding: ${props => props.theme.spacing.sm} ${props => props.theme.spacing.md}; - background: ${props => props.$active ? props.theme.colors.primary : 'transparent'}; - color: ${props => props.$active ? props.theme.colors.text.primary : props.theme.colors.text.secondary}; - border: 2px solid ${props => props.$active ? props.theme.colors.primary : props.theme.colors.border}; - border-radius: ${props => props.theme.borderRadius.md}; - font-family: ${props => props.theme.typography.fontFamily.body}; - font-size: ${props => props.theme.typography.fontSize.sm}; - font-weight: ${props => props.theme.typography.fontWeight.medium}; - cursor: pointer; - transition: ${props => props.theme.transitions.fast}; - - &:hover { - border-color: ${props => props.theme.colors.primary}; - } -` - -const Label = styled.span` - font-family: ${props => props.theme.typography.fontFamily.body}; - font-size: ${props => props.theme.typography.fontSize.sm}; - color: ${props => props.theme.colors.text.primary}; - font-weight: ${props => props.theme.typography.fontWeight.semibold}; -` - -export function ThemeSwitcher() { - const { themeName, setTheme } = useTheme() - - return ( - - - setTheme('cyberpunk')} - > - 🌃 Cyberpunk - - setTheme('luxe')} - > - ✨ Luxe - - - ) -} - -/** - * Result: - * - Displays current active theme - * - Allows switching between themes - * - Theme preference persists in localStorage - * - All components update immediately - */ diff --git a/@packages/@ui/ui-theme/examples/03-theme-extensions.tsx b/@packages/@ui/ui-theme/examples/03-theme-extensions.tsx deleted file mode 100644 index 78e35cd6d..000000000 --- a/@packages/@ui/ui-theme/examples/03-theme-extensions.tsx +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Example 03: Theme Extensions - * - * Demonstrates using optional theme-specific effects - * that enhance components when available. - */ - -import React from 'react' -import styled, { css } from 'styled-components' - -const Card = styled.div` - /* Base styling with semantic tokens - works for all themes */ - background: ${props => props.theme.colors.surface}; - padding: ${props => props.theme.spacing.lg}; - border-radius: ${props => props.theme.borderRadius.lg}; - border: 1px solid ${props => props.theme.colors.border}; - color: ${props => props.theme.colors.text.primary}; - - /* Optional: Add cyberpunk-specific neon glow effect */ - ${props => props.theme.extensions?.cyberpunk && css` - box-shadow: ${props.theme.extensions.cyberpunk.neonGlow.magenta}; - - /* Add scanlines effect */ - background-image: ${props.theme.extensions.cyberpunk.scanlines}; - `} - - /* Optional: Add luxe-specific elegant shadow */ - ${props => props.theme.extensions?.luxe && css` - box-shadow: ${props.theme.extensions.luxe.elegantShadow}; - `} -` - -const Heading = styled.h2` - font-family: ${props => props.theme.typography.fontFamily.heading}; - font-size: ${props => props.theme.typography.fontSize.xl}; - font-weight: ${props => props.theme.typography.fontWeight.bold}; - color: ${props => props.theme.colors.primary}; - margin-bottom: ${props => props.theme.spacing.md}; - - /* Optional: Add cyberpunk glitch effect */ - ${props => props.theme.extensions?.cyberpunk && css` - filter: ${props.theme.extensions.cyberpunk.glitchEffect}; - `} -` - -const Badge = styled.span` - display: inline-block; - padding: ${props => props.theme.spacing.xs} ${props => props.theme.spacing.sm}; - background: ${props => props.theme.colors.secondary}; - color: ${props => props.theme.colors.text.primary}; - border-radius: ${props => props.theme.borderRadius.full}; - font-size: ${props => props.theme.typography.fontSize.xs}; - font-weight: ${props => props.theme.typography.fontWeight.bold}; - - /* Optional: Add luxe gold shimmer effect */ - ${props => props.theme.extensions?.luxe && css` - background: ${props.theme.extensions.luxe.goldShimmer}; - `} - - /* Optional: Add cyberpunk cyan glow */ - ${props => props.theme.extensions?.cyberpunk && css` - box-shadow: ${props.theme.extensions.cyberpunk.neonGlow.cyan}; - `} -` - -export function ExtensionExample() { - return ( - - Theme Extensions Example -

- This card demonstrates optional theme-specific enhancements. - NEW -

-

- Base styling uses semantic tokens (works everywhere). - Enhanced effects are added when theme supports them. -

-
- ) -} - -/** - * Result: - * - Cyberpunk theme: Card with neon glow, scanlines, and glitch effect - * - Luxe theme: Card with elegant shadow and gold shimmer - * - Component works in both themes - * - Extensions are OPTIONAL - won't break if theme doesn't support them - */ diff --git a/@packages/@ui/ui-theme/examples/04-responsive-layout.tsx b/@packages/@ui/ui-theme/examples/04-responsive-layout.tsx deleted file mode 100644 index 29e89ef47..000000000 --- a/@packages/@ui/ui-theme/examples/04-responsive-layout.tsx +++ /dev/null @@ -1,95 +0,0 @@ -/** - * Example 04: Responsive Layout with Theme Breakpoints - * - * Demonstrates using theme breakpoints for responsive design. - */ - -import React from 'react' -import styled from 'styled-components' - -const ResponsiveGrid = styled.div` - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: ${props => props.theme.spacing.lg}; - padding: ${props => props.theme.spacing.lg}; - - /* Tablet: 2 columns */ - @media (max-width: ${props => props.theme.breakpoints.lg}) { - grid-template-columns: repeat(2, 1fr); - gap: ${props => props.theme.spacing.md}; - } - - /* Mobile: 1 column */ - @media (max-width: ${props => props.theme.breakpoints.md}) { - grid-template-columns: 1fr; - gap: ${props => props.theme.spacing.sm}; - padding: ${props => props.theme.spacing.md}; - } -` - -const GridItem = styled.div` - background: ${props => props.theme.colors.surface}; - padding: ${props => props.theme.spacing.lg}; - border-radius: ${props => props.theme.borderRadius.lg}; - border: 1px solid ${props => props.theme.colors.border}; - - /* Responsive padding */ - @media (max-width: ${props => props.theme.breakpoints.md}) { - padding: ${props => props.theme.spacing.md}; - } -` - -const Title = styled.h3` - font-family: ${props => props.theme.typography.fontFamily.heading}; - font-size: ${props => props.theme.typography.fontSize.lg}; - color: ${props => props.theme.colors.primary}; - margin-bottom: ${props => props.theme.spacing.sm}; - - /* Responsive font size */ - @media (max-width: ${props => props.theme.breakpoints.md}) { - font-size: ${props => props.theme.typography.fontSize.base}; - } -` - -const Description = styled.p` - font-family: ${props => props.theme.typography.fontFamily.body}; - font-size: ${props => props.theme.typography.fontSize.base}; - color: ${props => props.theme.colors.text.secondary}; - line-height: ${props => props.theme.typography.lineHeight.relaxed}; - - /* Responsive font size */ - @media (max-width: ${props => props.theme.breakpoints.md}) { - font-size: ${props => props.theme.typography.fontSize.sm}; - } -` - -export function ResponsiveExample() { - return ( - - {[1, 2, 3, 4, 5, 6].map(num => ( - - Item {num} - - This grid adapts to screen size using theme breakpoints. - Desktop: 3 columns | Tablet: 2 columns | Mobile: 1 column - - - ))} - - ) -} - -/** - * Theme Breakpoints: - * - xs: 0px - * - sm: 640px - * - md: 768px - * - lg: 1024px - * - xl: 1280px - * - 2xl: 1536px - * - * Result: - * - Consistent responsive behavior across themes - * - Breakpoints match theme system - * - Spacing scales appropriately - */ diff --git a/@packages/@ui/ui-theme/package.json b/@packages/@ui/ui-theme/package.json deleted file mode 100644 index 5911c551e..000000000 --- a/@packages/@ui/ui-theme/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@lilith/ui-theme", - "version": "1.0.0", - "type": "module", - "main": "./src/index.ts", - "types": "./src/index.ts", - "exports": { - ".": "./src/index.ts" - }, - "scripts": { - "type-check": "tsc --noEmit", - "typecheck": "tsc --noEmit", - "lint": "echo 'Skipping lint - theme-provider is a minimal package'", - "test": "echo 'Skipping test - theme-provider has no tests yet'" - }, - "dependencies": { - "@lilith/design-tokens": "workspace:*", - "react": "^18.3.1", - "styled-components": "^6.1.8" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0", - "styled-components": "^6.0.0" - }, - "devDependencies": { - "@types/react": "^18.3.1", - "typescript": "^5.7.3" - } -} diff --git a/@packages/@ui/ui-theme/src/adapters/corporate-adapter.ts b/@packages/@ui/ui-theme/src/adapters/corporate-adapter.ts deleted file mode 100644 index 5c3ddad11..000000000 --- a/@packages/@ui/ui-theme/src/adapters/corporate-adapter.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { colorPrimitives, typography, spacing, borderRadius, shadows, transitions, zIndices, breakpoints } from '@lilith/design-tokens' -import type { ThemeInterface } from '../types/ThemeInterface' - -const { gray } = colorPrimitives -const { semantic } = colorPrimitives - -/** - * Corporate Theme Adapter - * - * Maps base design tokens to semantic ThemeInterface for corporate/business pages. - * - * Philosophy: - * - Professional blue and gray palette - * - Clean, trustworthy design - * - Fixed typography sizing - * - Subtle shadows - * - Standard transitions - */ -export const corporateThemeAdapter: ThemeInterface = { - colors: { - primary: '#1a365d', // Deep professional blue - secondary: '#2b6cb0', // Lighter blue accent - accent: '#3182ce', // Bright blue for CTAs - background: { - primary: '#FFFFFF', - secondary: gray[50], - tertiary: gray[100], - }, - surface: gray[50], - text: { - primary: gray[900], - secondary: gray[600], - muted: gray[500], - tertiary: gray[400], - }, - border: gray[200], - success: semantic.success, - warning: semantic.warning, - error: semantic.error, - info: semantic.info, - hover: { - primary: '#2c5282', - secondary: '#2b6cb0', - surface: gray[100], - }, - active: { - primary: '#1a365d', - secondary: '#2b6cb0', - }, - disabled: { - background: gray[100], - text: gray[400], - }, - }, - spacing: { - xxxs: '1px', - xxs: '2px', - xs: spacing[1], - sm: spacing[2], - md: spacing[4], - lg: spacing[6], - xl: spacing[8], - xxl: spacing[12], - xxxl: spacing[16], - xxxxl: spacing[20], - xxxxxl: spacing[24], - }, - typography: { - fontFamily: { - heading: typography.fonts.body.luxe, - body: typography.fonts.body.luxe, - mono: typography.fonts.mono, - }, - fontSize: { - xxs: '10px', - xs: typography.fontSizes.xs, - sm: typography.fontSizes.sm, - md: typography.fontSizes.sm, - base: typography.fontSizes.base, - lg: typography.fontSizes.md, - xl: typography.fontSizes.lg, - '2xl': typography.fontSizes.xl, - '3xl': typography.fontSizes['2xl'], - '4xl': '36px', // 2.25rem - large headings - '5xl': '48px', // 3rem - display headings - }, - fontWeight: { - light: typography.fontWeights.light, - normal: typography.fontWeights.regular, - medium: typography.fontWeights.medium, - semibold: typography.fontWeights.semibold, - bold: typography.fontWeights.bold, - }, - lineHeight: { - tight: typography.lineHeights.tight, - normal: typography.lineHeights.base, - relaxed: typography.lineHeights.relaxed, - loose: typography.lineHeights.loose, - }, - }, - letterSpacing: { - tight: '-0.025em', - normal: '0', - wide: '0.025em', - }, - borderWidth: { - thin: '1px', - medium: '2px', - thick: '3px', - }, - shadows: { - none: shadows.light.none, - sm: shadows.light.sm, - md: shadows.light.md, - lg: shadows.light.lg, - xl: shadows.light.xl, - }, - borderRadius: { - none: borderRadius.none, - xs: borderRadius.xs, - sm: borderRadius.sm, - md: borderRadius.md, - lg: borderRadius.lg, - xl: borderRadius.xl, - full: borderRadius.full, - }, - transitions: { - fast: transitions.luxe.fast, - normal: transitions.luxe.base, - slow: transitions.luxe.slow, - }, - zIndex: { - base: zIndices.base, - dropdown: zIndices.dropdown, - sticky: zIndices.sticky, - fixed: zIndices.fixed, - modal: zIndices.modal, - popover: zIndices.popover, - tooltip: zIndices.tooltip, - toast: zIndices.toast, - }, - breakpoints: { - xs: breakpoints.xs, - sm: breakpoints.sm, - md: breakpoints.md, - lg: breakpoints.lg, - xl: breakpoints.xl, - '2xl': breakpoints['2xl'], - }, - extensions: {}, -} diff --git a/@packages/@ui/ui-theme/src/adapters/creator-portal-adapter.ts b/@packages/@ui/ui-theme/src/adapters/creator-portal-adapter.ts deleted file mode 100644 index ec022ff48..000000000 --- a/@packages/@ui/ui-theme/src/adapters/creator-portal-adapter.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { colorPrimitives, typography, spacing, borderRadius, shadows, transitions, zIndices, breakpoints } from '@lilith/design-tokens' -import type { ThemeInterface } from '../types/ThemeInterface' - -const { luxe, gray } = colorPrimitives -const { semantic } = colorPrimitives - -/** - * Creator Portal Theme Adapter - * - * Maps base design tokens to semantic ThemeInterface for creator-facing UIs. - * - * Philosophy: - * - Warm, inviting palette with gold accents - * - Professional yet approachable design - * - Fluid responsive typography - * - Soft, elegant shadows - * - Smooth transitions - */ -export const creatorPortalThemeAdapter: ThemeInterface = { - colors: { - primary: luxe.charcoal, - secondary: luxe.gold, - accent: luxe.rose, - background: { - primary: luxe.white, - secondary: luxe.cream, - tertiary: luxe.lightGray, - }, - surface: luxe.cream, - text: { - primary: luxe.charcoal, - secondary: luxe.darkGray, - muted: luxe.mediumGray, - tertiary: gray[400], - }, - border: luxe.gray, - success: semantic.success, - warning: semantic.warning, - error: semantic.error, - info: semantic.info, - hover: { - primary: 'rgba(44, 44, 44, 0.08)', - secondary: 'rgba(212, 175, 55, 0.15)', - surface: luxe.lightGray, - }, - active: { - primary: 'rgba(44, 44, 44, 0.12)', - secondary: 'rgba(212, 175, 55, 0.25)', - }, - disabled: { - background: luxe.lightGray, - text: luxe.mediumGray, - }, - }, - spacing: { - xxxs: '1px', - xxs: '2px', - xs: spacing[1], - sm: spacing[2], - md: spacing[4], - lg: spacing[6], - xl: spacing[8], - xxl: spacing[12], - xxxl: spacing[16], - xxxxl: spacing[20], - xxxxxl: spacing[24], - }, - typography: { - fontFamily: { - heading: typography.fonts.heading.luxe, - body: typography.fonts.body.luxe, - mono: typography.fonts.mono, - }, - fontSize: { - xxs: '10px', - xs: typography.fontSizesFluid.xs, - sm: typography.fontSizesFluid.sm, - md: typography.fontSizesFluid.sm, - base: typography.fontSizesFluid.base, - lg: typography.fontSizesFluid.md, - xl: typography.fontSizesFluid.lg, - '2xl': typography.fontSizesFluid.xl, - '3xl': typography.fontSizesFluid['2xl'], - '4xl': '36px', // 2.25rem - large headings - '5xl': '48px', // 3rem - display headings - }, - fontWeight: { - light: typography.fontWeights.light, - normal: typography.fontWeights.regular, - medium: typography.fontWeights.medium, - semibold: typography.fontWeights.semibold, - bold: typography.fontWeights.bold, - }, - lineHeight: { - tight: typography.lineHeights.tight, - normal: typography.lineHeights.base, - relaxed: typography.lineHeights.relaxed, - loose: typography.lineHeights.loose, - }, - }, - letterSpacing: { - tight: '-0.025em', - normal: '0', - wide: '0.025em', - }, - borderWidth: { - thin: '1px', - medium: '2px', - thick: '3px', - }, - shadows: { - none: shadows.light.none, - sm: shadows.light.sm, - md: shadows.light.md, - lg: shadows.light.lg, - xl: shadows.light.xl, - }, - borderRadius: { - none: borderRadius.none, - xs: borderRadius.xs, - sm: borderRadius.sm, - md: borderRadius.md, - lg: borderRadius.lg, - xl: borderRadius.xl, - full: borderRadius.full, - }, - transitions: { - fast: transitions.luxe.fast, - normal: transitions.luxe.base, - slow: transitions.luxe.slow, - }, - zIndex: { - base: zIndices.base, - dropdown: zIndices.dropdown, - sticky: zIndices.sticky, - fixed: zIndices.fixed, - modal: zIndices.modal, - popover: zIndices.popover, - tooltip: zIndices.tooltip, - toast: zIndices.toast, - }, - breakpoints: { - xs: breakpoints.xs, - sm: breakpoints.sm, - md: breakpoints.md, - lg: breakpoints.lg, - xl: breakpoints.xl, - '2xl': breakpoints['2xl'], - }, - extensions: { - luxe: { - goldShimmer: `linear-gradient(135deg, ${luxe.gold} 0%, ${luxe.gold} 50%, ${luxe.gold} 100%)`, - elegantShadow: '0 10px 40px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04)', - subtleGradient: `linear-gradient(to bottom, ${luxe.white}, ${luxe.cream})`, - }, - }, -} diff --git a/@packages/@ui/ui-theme/src/adapters/cyberpunk-adapter.ts b/@packages/@ui/ui-theme/src/adapters/cyberpunk-adapter.ts deleted file mode 100644 index 2ccd5b569..000000000 --- a/@packages/@ui/ui-theme/src/adapters/cyberpunk-adapter.ts +++ /dev/null @@ -1,162 +0,0 @@ -import { colorPrimitives, typography, spacing, borderRadius, shadows, transitions, zIndices, breakpoints } from '@lilith/design-tokens' -import type { ThemeInterface } from '../types/ThemeInterface' - -const { cyberpunk } = colorPrimitives -const { gray } = colorPrimitives - -/** - * Cyberpunk Theme Adapter - * - * Maps base design tokens to semantic ThemeInterface for the Cyberpunk aesthetic. - * - * Philosophy: - * - Electric neon palette (magenta, cyan, green) - * - Dark backgrounds with high contrast - * - Fixed typography sizing - * - Deep, dramatic shadows with neon glows - * - Quick, snappy transitions - */ -export const cyberpunkAdapter: ThemeInterface = { - colors: { - primary: cyberpunk.electricMagenta, - secondary: cyberpunk.neonCyan, - accent: cyberpunk.neonGreen, - background: { - primary: cyberpunk.black, - secondary: cyberpunk.darkBg, - tertiary: gray[800], - }, - surface: cyberpunk.darkBg, - text: { - primary: cyberpunk.white, - secondary: gray[400], - muted: gray[500], - tertiary: gray[600], - }, - border: gray[700], - success: cyberpunk.neonGreen, - warning: cyberpunk.electricOrange, - error: cyberpunk.neonRed, - info: cyberpunk.neonCyan, - hover: { - primary: cyberpunk.magentaLight, // #ff66ff - secondary: cyberpunk.cyanLight, // #66ffff - surface: cyberpunk.darkBg, // #1a1a1a - }, - active: { - primary: cyberpunk.magentaDark, // #cc00cc - secondary: cyberpunk.cyanDark, // #00cccc - }, - disabled: { - background: gray[800], // #222222 - text: gray[500], // #666666 - }, - }, - spacing: { - xxxs: '1px', - xxs: '2px', - xs: spacing[1], // 4px - sm: spacing[2], // 8px - md: spacing[4], // 16px - lg: spacing[6], // 24px - xl: spacing[8], // 32px - xxl: spacing[12], // 48px - xxxl: spacing[16], // 64px - xxxxl: spacing[20], // 80px - xxxxxl: spacing[24], // 96px - }, - typography: { - fontFamily: { - heading: typography.fonts.heading.cyberpunk, - body: typography.fonts.body.cyberpunk, - mono: typography.fonts.mono, - }, - fontSize: { - xxs: '10px', - xs: typography.fontSizes.xs, - sm: typography.fontSizes.sm, - md: typography.fontSizes.sm, - base: typography.fontSizes.base, - lg: typography.fontSizes.md, - xl: typography.fontSizes.lg, - '2xl': typography.fontSizes.xl, - '3xl': typography.fontSizes['2xl'], - '4xl': '36px', // 2.25rem - large headings - '5xl': '48px', // 3rem - display headings - }, - fontWeight: { - light: typography.fontWeights.light, - normal: typography.fontWeights.regular, - medium: typography.fontWeights.medium, - semibold: typography.fontWeights.semibold, - bold: typography.fontWeights.bold, - }, - lineHeight: { - tight: typography.lineHeights.tight, - normal: typography.lineHeights.base, - relaxed: typography.lineHeights.relaxed, - loose: typography.lineHeights.loose, - }, - }, - letterSpacing: { - tight: '-0.025em', - normal: '0', - wide: '0.025em', - }, - borderWidth: { - thin: '1px', - medium: '2px', - thick: '3px', - }, - shadows: { - none: shadows.dark.none, - sm: shadows.dark.sm, - md: shadows.dark.md, - lg: shadows.dark.lg, - xl: shadows.dark.xl, - }, - borderRadius: { - none: borderRadius.none, - xs: borderRadius.xs, - sm: borderRadius.sm, - md: borderRadius.md, - lg: borderRadius.lg, - xl: borderRadius.xl, - full: borderRadius.full, - }, - transitions: { - fast: transitions.cyberpunk.fast, - normal: transitions.cyberpunk.base, - slow: transitions.cyberpunk.slow, - }, - zIndex: { - base: zIndices.base, - dropdown: zIndices.dropdown, - sticky: zIndices.sticky, - fixed: zIndices.fixed, - modal: zIndices.modal, - popover: zIndices.popover, - tooltip: zIndices.tooltip, - toast: zIndices.toast, - }, - breakpoints: { - xs: breakpoints.xs, - sm: breakpoints.sm, - md: breakpoints.md, - lg: breakpoints.lg, - xl: breakpoints.xl, - '2xl': breakpoints['2xl'], - }, - extensions: { - cyberpunk: { - neonGlow: { - magenta: shadows.neon.magenta, - cyan: shadows.neon.cyan, - green: shadows.neon.green, - large: shadows.neon.large, - }, - scanlines: 'repeating-linear-gradient(0deg, rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.15) 1px, transparent 1px, transparent 2px)', - glitchEffect: 'drop-shadow(2px 0 0 #ff00ff) drop-shadow(-2px 0 0 #00ffff)', - }, - }, -} diff --git a/@packages/@ui/ui-theme/src/adapters/index.ts b/@packages/@ui/ui-theme/src/adapters/index.ts deleted file mode 100644 index aea775115..000000000 --- a/@packages/@ui/ui-theme/src/adapters/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export { cyberpunkAdapter } from './cyberpunk-adapter' -export { luxeAdapter } from './luxe-adapter' -export { lilithAdapter } from './lilith-adapter' -export { pitchDeckAdapter, pitchDeckLightAdapter } from './pitch-deck-adapter' -export { neutralThemeAdapter } from './neutral-adapter' -export { creatorPortalThemeAdapter } from './creator-portal-adapter' -export { corporateThemeAdapter } from './corporate-adapter' diff --git a/@packages/@ui/ui-theme/src/adapters/lilith-adapter.ts b/@packages/@ui/ui-theme/src/adapters/lilith-adapter.ts deleted file mode 100644 index 07cf9fdb0..000000000 --- a/@packages/@ui/ui-theme/src/adapters/lilith-adapter.ts +++ /dev/null @@ -1,206 +0,0 @@ -import { colorPrimitives, typography, spacing, borderRadius, shadows, transitions, zIndices, breakpoints } from '@lilith/design-tokens' -import type { ThemeInterface } from '../types/ThemeInterface' - -const { lilith } = colorPrimitives -const { semantic } = colorPrimitives - -/** - * Lilith Theme Adapter - * - * Maps base design tokens to semantic ThemeInterface for the Lilith brand aesthetic. - * - * Philosophy: - * - Power, sexuality, and mystique (deep reds, purples, blacks) - * - Creator empowerment through gold/bronze accents - * - Warm, inviting neutrals (not cold corporate grays) - * - Bold, commanding presence - * - Dramatic shadows and transitions - * - * Brand Identity: - * - Defiant and empowering - * - Unapologetically sexual - * - Mystical and enigmatic - * - Premium and powerful - */ -export const lilithAdapter: ThemeInterface = { - colors: { - // Primary - Deep crimson red (power, passion, defiance) - primary: lilith.crimson, - - // Secondary - Creator gold (wealth, value, success) - secondary: lilith.creatorGold, - - // Accent - Royal purple (mystique, occult, feminine power) - accent: lilith.royalPurple, - - background: { - // Warm off-white for main background - primary: lilith.offWhite, - // Warm cream for secondary surfaces - secondary: lilith.warmCream, - // Deep black for high contrast sections - tertiary: lilith.deepBlack, - }, - - // Surface color for cards and elevated elements - surface: lilith.warmCream, - - text: { - // Deep black for primary text (high contrast on warm backgrounds) - primary: lilith.deepBlack, - // Charcoal gray for secondary text - secondary: lilith.charcoalGray, - // Warm gray for muted text - muted: lilith.warmGray, - // Warm gray for tertiary text - tertiary: lilith.warmGray, - }, - - // Border color - warm gray - border: lilith.warmGray, - - // Semantic colors - success: semantic.success, - warning: semantic.warning, - error: semantic.error, - info: semantic.info, - - hover: { - // Crimson with opacity for primary hover - primary: 'rgba(220, 20, 60, 0.12)', - // Gold with opacity for secondary hover - secondary: 'rgba(212, 175, 55, 0.15)', - // Subtle warm hover for surfaces - surface: 'rgba(54, 52, 47, 0.04)', - }, - - active: { - // Crimson with higher opacity for active state - primary: 'rgba(220, 20, 60, 0.20)', - // Gold with higher opacity for active state - secondary: 'rgba(212, 175, 55, 0.25)', - }, - - disabled: { - // Warm gray for disabled backgrounds - background: lilith.warmGray, - // Lighter warm gray for disabled text - text: lilith.warmGray, - }, - }, - - spacing: { - xs: spacing[1], // 4px - sm: spacing[2], // 8px - md: spacing[4], // 16px - lg: spacing[6], // 24px - xl: spacing[8], // 32px - xxl: spacing[12], // 48px - }, - - typography: { - fontFamily: { - // Bold, commanding serif for headings - heading: typography.fonts.heading.lilith, - // Clean, readable sans-serif for body - body: typography.fonts.body.lilith, - // Monospace for technical content - mono: typography.fonts.mono, - }, - fontSize: { - // Use fluid font sizes for responsive design - xs: typography.fontSizesFluid.xs, - sm: typography.fontSizesFluid.sm, - md: typography.fontSizesFluid.sm, - base: typography.fontSizesFluid.base, - lg: typography.fontSizesFluid.md, - xl: typography.fontSizesFluid.lg, - '2xl': typography.fontSizesFluid.xl, - '3xl': typography.fontSizesFluid['2xl'], - '4xl': '36px', // 2.25rem - large headings - '5xl': '48px', // 3rem - display headings - }, - fontWeight: { - light: typography.fontWeights.light, - normal: typography.fontWeights.regular, - medium: typography.fontWeights.medium, - semibold: typography.fontWeights.semibold, - bold: typography.fontWeights.bold, - }, - lineHeight: { - tight: typography.lineHeights.tight, - normal: typography.lineHeights.base, - relaxed: typography.lineHeights.relaxed, - loose: typography.lineHeights.loose, - }, - }, - - shadows: { - // Use light shadows for warm background aesthetic - none: shadows.light.none, - sm: shadows.light.sm, - md: shadows.light.md, - lg: shadows.light.lg, - xl: shadows.light.xl, - }, - - borderRadius: { - none: borderRadius.none, - sm: borderRadius.xs, - md: borderRadius.md, - lg: borderRadius.lg, - full: borderRadius.full, - }, - - transitions: { - // Lilith transitions - dramatic and powerful - fast: transitions.lilith.fast, - normal: transitions.lilith.base, - slow: transitions.lilith.slow, - }, - - zIndex: { - base: zIndices.base, - dropdown: zIndices.dropdown, - sticky: zIndices.sticky, - fixed: zIndices.fixed, - modal: zIndices.modal, - popover: zIndices.popover, - tooltip: zIndices.tooltip, - toast: zIndices.toast, - }, - - breakpoints: { - xs: breakpoints.xs, - sm: breakpoints.sm, - md: breakpoints.md, - lg: breakpoints.lg, - xl: breakpoints.xl, - '2xl': breakpoints['2xl'], - }, - - // Lilith-specific extensions - extensions: { - lilith: { - // Mystical gradient effects - crimsonGradient: `linear-gradient(135deg, ${lilith.burgundy} 0%, ${lilith.crimson} 50%, ${lilith.deepRed} 100%)`, - purpleGradient: `linear-gradient(135deg, ${lilith.darkPurple} 0%, ${lilith.royalPurple} 50%, ${lilith.plum} 100%)`, - goldShimmer: `linear-gradient(135deg, ${lilith.bronze} 0%, ${lilith.creatorGold} 50%, ${lilith.amberGold} 100%)`, - - // Mystical glow shadows - crimsonGlow: shadows.mystical.crimson, - purpleGlow: shadows.mystical.purple, - goldGlow: shadows.mystical.gold, - - // Warm background gradient - warmBackground: `linear-gradient(to bottom, ${lilith.offWhite}, ${lilith.warmCream})`, - - // Dark mode variant colors (for future dark mode support) - darkVariant: { - background: lilith.deepBlack, - surface: lilith.charcoalGray, - text: lilith.offWhite, - }, - }, - }, -} diff --git a/@packages/@ui/ui-theme/src/adapters/luxe-adapter.ts b/@packages/@ui/ui-theme/src/adapters/luxe-adapter.ts deleted file mode 100644 index 5eae7e775..000000000 --- a/@packages/@ui/ui-theme/src/adapters/luxe-adapter.ts +++ /dev/null @@ -1,139 +0,0 @@ -import { colorPrimitives, typography, spacing, borderRadius, shadows, transitions, zIndices, breakpoints } from '@lilith/design-tokens' -import type { ThemeInterface } from '../types/ThemeInterface' - -const { luxe } = colorPrimitives -const { semantic } = colorPrimitives - -/** - * Luxe Theme Adapter - * - * Maps base design tokens to semantic ThemeInterface for the Luxe aesthetic. - * - * Philosophy: - * - Neutral, sophisticated palette (charcoal, gold, rose) - * - Light backgrounds with generous whitespace - * - Fluid responsive typography - * - Soft, subtle shadows - * - Elegant, slower transitions - */ -export const luxeAdapter: ThemeInterface = { - colors: { - primary: luxe.charcoal, - secondary: luxe.gold, - accent: luxe.rose, - background: { - primary: luxe.white, - secondary: luxe.lightGray, - tertiary: luxe.cream, - }, - surface: luxe.lightGray, - text: { - primary: luxe.charcoal, - secondary: luxe.darkGray, - muted: luxe.mediumGray, - tertiary: luxe.darkGray, - }, - border: luxe.gray, - success: semantic.success, - warning: semantic.warning, - error: semantic.error, - info: semantic.info, - hover: { - primary: 'rgba(44, 44, 44, 0.12)', // charcoal with 12% opacity - secondary: 'rgba(212, 175, 55, 0.12)', // gold with 12% opacity - surface: 'rgba(44, 44, 44, 0.04)', // subtle surface hover - }, - active: { - primary: 'rgba(44, 44, 44, 0.08)', // charcoal with 8% opacity - secondary: 'rgba(212, 175, 55, 0.20)', // gold with 20% opacity - }, - disabled: { - background: luxe.gray, - text: luxe.mediumGray, - }, - }, - spacing: { - xs: spacing[1], // 4px - sm: spacing[2], // 8px - md: spacing[4], // 16px - lg: spacing[6], // 24px - xl: spacing[8], // 32px - xxl: spacing[12], // 48px - }, - typography: { - fontFamily: { - heading: typography.fonts.heading.luxe, - body: typography.fonts.body.luxe, - mono: typography.fonts.mono, - }, - fontSize: { - xs: typography.fontSizesFluid.xs, - sm: typography.fontSizesFluid.sm, - md: typography.fontSizesFluid.sm, - base: typography.fontSizesFluid.base, - lg: typography.fontSizesFluid.md, - xl: typography.fontSizesFluid.lg, - '2xl': typography.fontSizesFluid.xl, - '3xl': typography.fontSizesFluid['2xl'], - '4xl': '36px', // 2.25rem - large headings - '5xl': '48px', // 3rem - display headings - }, - fontWeight: { - light: typography.fontWeights.light, - normal: typography.fontWeights.regular, - medium: typography.fontWeights.medium, - semibold: typography.fontWeights.semibold, - bold: typography.fontWeights.bold, - }, - lineHeight: { - tight: typography.lineHeights.tight, - normal: typography.lineHeights.base, - relaxed: typography.lineHeights.relaxed, - loose: typography.lineHeights.loose, - }, - }, - shadows: { - none: shadows.light.none, - sm: shadows.light.sm, - md: shadows.light.md, - lg: shadows.light.lg, - xl: shadows.light.xl, - }, - borderRadius: { - none: borderRadius.none, - sm: borderRadius.xs, - md: borderRadius.md, - lg: borderRadius.lg, - full: borderRadius.full, - }, - transitions: { - fast: transitions.luxe.fast, - normal: transitions.luxe.base, - slow: transitions.luxe.slow, - }, - zIndex: { - base: zIndices.base, - dropdown: zIndices.dropdown, - sticky: zIndices.sticky, - fixed: zIndices.fixed, - modal: zIndices.modal, - popover: zIndices.popover, - tooltip: zIndices.tooltip, - toast: zIndices.toast, - }, - breakpoints: { - xs: breakpoints.xs, - sm: breakpoints.sm, - md: breakpoints.md, - lg: breakpoints.lg, - xl: breakpoints.xl, - '2xl': breakpoints['2xl'], - }, - extensions: { - luxe: { - goldShimmer: `linear-gradient(135deg, ${luxe.gold} 0%, ${luxe.gold} 50%, ${luxe.gold} 100%)`, - elegantShadow: '0 10px 40px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04)', - subtleGradient: `linear-gradient(to bottom, ${luxe.white}, ${luxe.cream})`, - }, - }, -} diff --git a/@packages/@ui/ui-theme/src/adapters/neutral-adapter.ts b/@packages/@ui/ui-theme/src/adapters/neutral-adapter.ts deleted file mode 100644 index 8aa6d89b0..000000000 --- a/@packages/@ui/ui-theme/src/adapters/neutral-adapter.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { colorPrimitives, typography, spacing, borderRadius, shadows, transitions, zIndices, breakpoints } from '@lilith/design-tokens' -import type { ThemeInterface } from '../types/ThemeInterface' - -const { gray } = colorPrimitives -const { semantic } = colorPrimitives - -/** - * Neutral Theme Adapter - * - * Maps base design tokens to semantic ThemeInterface for a clean, neutral aesthetic. - * - * Philosophy: - * - Clean gray palette with minimal accent colors - * - Professional, accessible design - * - Fixed typography sizing - * - Subtle shadows - * - Standard transitions - */ -export const neutralThemeAdapter: ThemeInterface = { - colors: { - primary: gray[900], - secondary: gray[600], - accent: semantic.info, - background: { - primary: '#FFFFFF', - secondary: gray[50], - tertiary: gray[100], - }, - surface: gray[50], - text: { - primary: gray[900], - secondary: gray[600], - muted: gray[500], - tertiary: gray[400], - }, - border: gray[200], - success: semantic.success, - warning: semantic.warning, - error: semantic.error, - info: semantic.info, - hover: { - primary: gray[800], - secondary: gray[500], - surface: gray[100], - }, - active: { - primary: gray[700], - secondary: gray[400], - }, - disabled: { - background: gray[100], - text: gray[400], - }, - }, - spacing: { - xxxs: '1px', - xxs: '2px', - xs: spacing[1], - sm: spacing[2], - md: spacing[4], - lg: spacing[6], - xl: spacing[8], - xxl: spacing[12], - xxxl: spacing[16], - xxxxl: spacing[20], - xxxxxl: spacing[24], - }, - typography: { - fontFamily: { - heading: typography.fonts.body.luxe, - body: typography.fonts.body.luxe, - mono: typography.fonts.mono, - }, - fontSize: { - xxs: '10px', - xs: typography.fontSizes.xs, - sm: typography.fontSizes.sm, - md: typography.fontSizes.sm, - base: typography.fontSizes.base, - lg: typography.fontSizes.md, - xl: typography.fontSizes.lg, - '2xl': typography.fontSizes.xl, - '3xl': typography.fontSizes['2xl'], - '4xl': '36px', // 2.25rem - large headings - '5xl': '48px', // 3rem - display headings - }, - fontWeight: { - light: typography.fontWeights.light, - normal: typography.fontWeights.regular, - medium: typography.fontWeights.medium, - semibold: typography.fontWeights.semibold, - bold: typography.fontWeights.bold, - }, - lineHeight: { - tight: typography.lineHeights.tight, - normal: typography.lineHeights.base, - relaxed: typography.lineHeights.relaxed, - loose: typography.lineHeights.loose, - }, - }, - letterSpacing: { - tight: '-0.025em', - normal: '0', - wide: '0.025em', - }, - borderWidth: { - thin: '1px', - medium: '2px', - thick: '3px', - }, - shadows: { - none: shadows.light.none, - sm: shadows.light.sm, - md: shadows.light.md, - lg: shadows.light.lg, - xl: shadows.light.xl, - }, - borderRadius: { - none: borderRadius.none, - xs: borderRadius.xs, - sm: borderRadius.sm, - md: borderRadius.md, - lg: borderRadius.lg, - xl: borderRadius.xl, - full: borderRadius.full, - }, - transitions: { - fast: transitions.luxe.fast, - normal: transitions.luxe.base, - slow: transitions.luxe.slow, - }, - zIndex: { - base: zIndices.base, - dropdown: zIndices.dropdown, - sticky: zIndices.sticky, - fixed: zIndices.fixed, - modal: zIndices.modal, - popover: zIndices.popover, - tooltip: zIndices.tooltip, - toast: zIndices.toast, - }, - breakpoints: { - xs: breakpoints.xs, - sm: breakpoints.sm, - md: breakpoints.md, - lg: breakpoints.lg, - xl: breakpoints.xl, - '2xl': breakpoints['2xl'], - }, - extensions: {}, -} diff --git a/@packages/@ui/ui-theme/src/adapters/pitch-deck-adapter.ts b/@packages/@ui/ui-theme/src/adapters/pitch-deck-adapter.ts deleted file mode 100644 index f6a209d19..000000000 --- a/@packages/@ui/ui-theme/src/adapters/pitch-deck-adapter.ts +++ /dev/null @@ -1,333 +0,0 @@ -import { colorPrimitives, typography, spacing, borderRadius, shadows, transitions, zIndices, breakpoints } from '@lilith/design-tokens' -import type { ThemeInterface } from '../types/ThemeInterface' - -const { gray } = colorPrimitives - -/** - * Pitch Deck Theme Adapter - * - * Maps base design tokens to semantic ThemeInterface for investor presentations. - * - * Philosophy: - * - Professional dark background with high contrast - * - Purple/cyan accent palette for visual interest - * - Clean, readable typography for data-heavy slides - * - Smooth, professional transitions - * - Minimal decorative effects to maintain focus - */ - -// Custom colors for pitch deck - professional luxe investor presentation palette -const pitchDeckColors = { - // Primary purple - sophisticated, trustworthy (slightly warmer) - primary: '#9333ea', - primaryDark: '#7e22ce', - primaryLight: '#a855f7', - - // Accent gold - premium, luxury, success - accent: '#d4af37', - accentDark: '#b8941f', - accentLight: '#f0d574', - - // Secondary rose gold - elegance, refinement - secondary: '#e0b0a8', - secondaryDark: '#c5948c', - secondaryLight: '#f5cfc4', - - // Dark luxe backgrounds - background: '#0a0a0a', - surface: '#161616', - surfaceLight: '#1f1f1f', - - // Text colors - higher contrast for readability - white: '#ffffff', - textMuted: '#b8b8b8', - textSubtle: '#808080', -} - -// Light theme colors - professional clean investor presentation palette -const pitchDeckLightColors = { - // Primary purple - consistent with dark mode - primary: '#9333ea', - primaryDark: '#7e22ce', - primaryLight: '#a855f7', - - // Accent gold - consistent with dark mode - accent: '#d4af37', - accentDark: '#b8941f', - accentLight: '#f0d574', - - // Secondary rose gold - consistent with dark mode - secondary: '#e0b0a8', - secondaryDark: '#c5948c', - secondaryLight: '#f5cfc4', - - // Light backgrounds - background: '#ffffff', - surface: '#f8f8f8', - surfaceLight: '#f0f0f0', - - // Text colors - dark text for light background - textPrimary: '#1a1a1a', - textSecondary: '#4a4a4a', - textMuted: '#6a6a6a', -} - -export const pitchDeckAdapter: ThemeInterface = { - colors: { - primary: pitchDeckColors.primary, - secondary: pitchDeckColors.secondary, - accent: pitchDeckColors.accent, - background: { - primary: pitchDeckColors.background, - secondary: pitchDeckColors.surface, - tertiary: pitchDeckColors.surfaceLight, - }, - surface: pitchDeckColors.surface, - text: { - primary: pitchDeckColors.white, - secondary: pitchDeckColors.textMuted, - muted: pitchDeckColors.textSubtle, - tertiary: gray[400], - }, - border: gray[700], - success: '#22c55e', - warning: '#f59e0b', - error: '#ef4444', - info: pitchDeckColors.accent, - hover: { - primary: pitchDeckColors.primaryLight, - secondary: pitchDeckColors.secondaryLight, - surface: pitchDeckColors.surfaceLight, - }, - active: { - primary: pitchDeckColors.primaryDark, - secondary: pitchDeckColors.secondaryDark, - }, - disabled: { - background: gray[800], - text: gray[500], - }, - }, - spacing: { - xs: spacing[1], // 4px - sm: spacing[2], // 8px - md: spacing[4], // 16px - lg: spacing[6], // 24px - xl: spacing[8], // 32px - xxl: spacing[12], // 48px - }, - typography: { - fontFamily: { - heading: typography.fonts.body.luxe, // Inter for clean headings - body: typography.fonts.body.luxe, // Inter for body - mono: typography.fonts.mono, // Fira Code for code/data - }, - fontSize: { - xxs: '10px', - xs: typography.fontSizes.xs, - sm: typography.fontSizes.sm, - md: typography.fontSizes.sm, - base: typography.fontSizes.base, - lg: typography.fontSizes.md, - xl: typography.fontSizes.lg, - '2xl': typography.fontSizes.xl, - '3xl': typography.fontSizes['2xl'], - '4xl': '36px', // 2.25rem - large headings - '5xl': '48px', // 3rem - display headings - }, - fontWeight: { - light: typography.fontWeights.light, - normal: typography.fontWeights.regular, - medium: typography.fontWeights.medium, - semibold: typography.fontWeights.semibold, - bold: typography.fontWeights.bold, - }, - lineHeight: { - tight: typography.lineHeights.tight, - normal: typography.lineHeights.base, - relaxed: typography.lineHeights.relaxed, - loose: typography.lineHeights.loose, - }, - }, - shadows: { - none: shadows.dark.none, - sm: shadows.dark.sm, - md: shadows.dark.md, - lg: shadows.dark.lg, - xl: shadows.dark.xl, - }, - borderRadius: { - none: borderRadius.none, - sm: borderRadius.sm, - md: borderRadius.md, - lg: borderRadius.lg, - full: borderRadius.full, - }, - transitions: { - fast: transitions.luxe.fast, // Smooth professional transitions - normal: transitions.luxe.base, - slow: transitions.luxe.slow, - }, - zIndex: { - base: zIndices.base, - dropdown: zIndices.dropdown, - sticky: zIndices.sticky, - fixed: zIndices.fixed, - modal: zIndices.modal, - popover: zIndices.popover, - tooltip: zIndices.tooltip, - toast: zIndices.toast, - }, - breakpoints: { - xs: breakpoints.xs, - sm: breakpoints.sm, - md: breakpoints.md, - lg: breakpoints.lg, - xl: breakpoints.xl, - '2xl': breakpoints['2xl'], - }, - // Custom pitch deck extensions for special effects - extensions: { - // Optional: subtle glow effects for highlights - cyberpunk: { - neonGlow: { - magenta: `0 0 10px ${pitchDeckColors.secondary}`, - cyan: `0 0 10px ${pitchDeckColors.accent}`, - green: '0 0 10px #22c55e', - large: '0 0 20px', - }, - scanlines: 'none', - glitchEffect: 'none', - }, - }, -} - -export const pitchDeckLightAdapter: ThemeInterface = { - colors: { - primary: pitchDeckLightColors.primary, - secondary: pitchDeckLightColors.secondary, - accent: pitchDeckLightColors.accent, - background: { - primary: pitchDeckLightColors.background, - secondary: pitchDeckLightColors.surface, - tertiary: pitchDeckLightColors.surfaceLight, - }, - surface: pitchDeckLightColors.surface, - text: { - primary: pitchDeckLightColors.textPrimary, - secondary: pitchDeckLightColors.textSecondary, - muted: pitchDeckLightColors.textMuted, - tertiary: gray[500], - }, - border: gray[300], - success: '#22c55e', - warning: '#f59e0b', - error: '#ef4444', - info: pitchDeckLightColors.accent, - hover: { - primary: pitchDeckLightColors.primaryLight, - secondary: pitchDeckLightColors.secondaryLight, - surface: pitchDeckLightColors.surfaceLight, - }, - active: { - primary: pitchDeckLightColors.primaryDark, - secondary: pitchDeckLightColors.secondaryDark, - }, - disabled: { - background: gray[200], - text: gray[400], - }, - }, - spacing: { - xs: spacing[1], // 4px - sm: spacing[2], // 8px - md: spacing[4], // 16px - lg: spacing[6], // 24px - xl: spacing[8], // 32px - xxl: spacing[12], // 48px - }, - typography: { - fontFamily: { - heading: typography.fonts.body.luxe, // Inter for clean headings - body: typography.fonts.body.luxe, // Inter for body - mono: typography.fonts.mono, // Fira Code for code/data - }, - fontSize: { - xxs: '10px', - xs: typography.fontSizes.xs, - sm: typography.fontSizes.sm, - md: typography.fontSizes.sm, - base: typography.fontSizes.base, - lg: typography.fontSizes.md, - xl: typography.fontSizes.lg, - '2xl': typography.fontSizes.xl, - '3xl': typography.fontSizes['2xl'], - '4xl': '36px', // 2.25rem - large headings - '5xl': '48px', // 3rem - display headings - }, - fontWeight: { - light: typography.fontWeights.light, - normal: typography.fontWeights.regular, - medium: typography.fontWeights.medium, - semibold: typography.fontWeights.semibold, - bold: typography.fontWeights.bold, - }, - lineHeight: { - tight: typography.lineHeights.tight, - normal: typography.lineHeights.base, - relaxed: typography.lineHeights.relaxed, - loose: typography.lineHeights.loose, - }, - }, - shadows: { - none: shadows.light.none, - sm: shadows.light.sm, - md: shadows.light.md, - lg: shadows.light.lg, - xl: shadows.light.xl, - }, - borderRadius: { - none: borderRadius.none, - sm: borderRadius.sm, - md: borderRadius.md, - lg: borderRadius.lg, - full: borderRadius.full, - }, - transitions: { - fast: transitions.luxe.fast, // Smooth professional transitions - normal: transitions.luxe.base, - slow: transitions.luxe.slow, - }, - zIndex: { - base: zIndices.base, - dropdown: zIndices.dropdown, - sticky: zIndices.sticky, - fixed: zIndices.fixed, - modal: zIndices.modal, - popover: zIndices.popover, - tooltip: zIndices.tooltip, - toast: zIndices.toast, - }, - breakpoints: { - xs: breakpoints.xs, - sm: breakpoints.sm, - md: breakpoints.md, - lg: breakpoints.lg, - xl: breakpoints.xl, - '2xl': breakpoints['2xl'], - }, - // Custom pitch deck extensions for special effects - extensions: { - // Optional: subtle effects for light mode highlights - cyberpunk: { - neonGlow: { - magenta: `0 0 10px ${pitchDeckLightColors.secondary}`, - cyan: `0 0 10px ${pitchDeckLightColors.accent}`, - green: '0 0 10px #22c55e', - large: '0 0 20px', - }, - scanlines: 'none', - glitchEffect: 'none', - }, - }, -} diff --git a/@packages/@ui/ui-theme/src/components/ThemeProvider.tsx b/@packages/@ui/ui-theme/src/components/ThemeProvider.tsx deleted file mode 100644 index 9af53fc81..000000000 --- a/@packages/@ui/ui-theme/src/components/ThemeProvider.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React, { createContext, useState, useEffect } from 'react' -import type { ReactNode } from 'react' -import { ThemeProvider as SCThemeProvider } from 'styled-components' -import { cyberpunkAdapter } from '../adapters/cyberpunk-adapter' -import { luxeAdapter } from '../adapters/luxe-adapter' -import type { ThemeInterface, ThemeName, ThemeContextValue } from '../types/ThemeInterface' - -/** - * Theme context - internal, use useTheme() hook instead - */ -export const ThemeContext = createContext(undefined) - -interface ThemeProviderProps { - children: ReactNode - defaultTheme?: ThemeName - storageKey?: string -} - -export const ThemeProvider: React.FC = ({ - children, - defaultTheme = 'cyberpunk', - storageKey = 'app-theme', -}) => { - const [themeName, setThemeName] = useState(() => { - if (typeof window !== 'undefined') { - const stored = localStorage.getItem(storageKey) - if (stored === 'cyberpunk' || stored === 'luxe') { - return stored - } - } - return defaultTheme - }) - - const theme: ThemeInterface = themeName === 'cyberpunk' ? cyberpunkAdapter : luxeAdapter - - useEffect(() => { - if (typeof window !== 'undefined') { - localStorage.setItem(storageKey, themeName) - } - }, [themeName, storageKey]) - - - const contextValue: ThemeContextValue = { - theme, - themeName, - setTheme: setThemeName, - } - - return ( - - {children} - - ) -} diff --git a/@packages/@ui/ui-theme/src/components/index.ts b/@packages/@ui/ui-theme/src/components/index.ts deleted file mode 100644 index 8a473dde1..000000000 --- a/@packages/@ui/ui-theme/src/components/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { ThemeProvider } from './ThemeProvider' -export { useTheme } from './useTheme' diff --git a/@packages/@ui/ui-theme/src/components/useTheme.ts b/@packages/@ui/ui-theme/src/components/useTheme.ts deleted file mode 100644 index 555bec4ea..000000000 --- a/@packages/@ui/ui-theme/src/components/useTheme.ts +++ /dev/null @@ -1,26 +0,0 @@ -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 ; - * } - * ``` - */ -export function useTheme(): ThemeContextValue { - const context = useContext(ThemeContext) - - if (context === undefined) { - throw new Error('useTheme must be used within a ThemeProvider') - } - - return context -} diff --git a/@packages/@ui/ui-theme/src/index.ts b/@packages/@ui/ui-theme/src/index.ts deleted file mode 100644 index 00cd0d35f..000000000 --- a/@packages/@ui/ui-theme/src/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -// Styled-components type augmentation -import './styled.d.ts' - -// Provider and hook -export { ThemeProvider, useTheme } from './components' - -// Theme adapters -export { cyberpunkAdapter, luxeAdapter, pitchDeckAdapter, pitchDeckLightAdapter, neutralThemeAdapter, creatorPortalThemeAdapter, corporateThemeAdapter } from './adapters' - -// Types -export type { ThemeInterface, ThemeName, ThemeContextValue } from './types' diff --git a/@packages/@ui/ui-theme/src/styled.d.ts b/@packages/@ui/ui-theme/src/styled.d.ts deleted file mode 100644 index d522370bf..000000000 --- a/@packages/@ui/ui-theme/src/styled.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Styled Components Type Augmentation - * - * Extends styled-components DefaultTheme with our ThemeInterface. - * This allows TypeScript to recognize theme properties in styled components. - */ - -import 'styled-components'; -import type { ThemeInterface } from '@lilith/ui-theme'; - -declare module 'styled-components' { - export interface DefaultTheme extends ThemeInterface {} -} diff --git a/@packages/@ui/ui-theme/src/types/ThemeInterface.ts b/@packages/@ui/ui-theme/src/types/ThemeInterface.ts deleted file mode 100644 index dc28a0bb5..000000000 --- a/@packages/@ui/ui-theme/src/types/ThemeInterface.ts +++ /dev/null @@ -1,171 +0,0 @@ -export interface ThemeInterface { - colors: { - primary: string - secondary: string - accent: string - background: { - primary: string - secondary: string - tertiary: string - } - surface: string - text: { - primary: string - secondary: string - tertiary: string - muted: string - } - border: string - success: string - warning: string - error: string - info: string - hover: { - primary: string - secondary: string - surface: string - } - active: { - primary: string - secondary: string - } - disabled: { - background: string - text: string - } - } - spacing: { - xxxs?: string // ~1px - xxs?: string // ~2px - xs: string // 4px - sm: string // 8px - md: string // 16px - lg: string // 24px - xl: string // 32px - xxl: string // 48px - xxxl?: string // 64px - xxxxl?: string // 80px - xxxxxl?: string // 96px - } - typography: { - fontFamily: { - heading: string - body: string - mono: string - } - fontSize: { - xxs?: string // 10px - xs: string // 12px - sm: string // 14px - md: string // 16px - base: string // 16px - lg: string // 18px - xl: string // 20px - '2xl': string // 24px - '3xl': string // 30px - '4xl': string // 36px - '5xl': string // 48px - } - fontWeight: { - light: number - normal: number - medium: number - semibold: number - bold: number - } - lineHeight: { - tight: number - normal: number - relaxed: number - loose: number - } - } - letterSpacing?: { - tight?: string - normal?: string - wide?: string - } - borderWidth?: { - thin?: string // 1px - medium?: string // 2px - thick?: string // 3px - } - shadows: { - none: string - sm: string - md: string - lg: string - xl: string - } - borderRadius: { - none: string - xs?: string // 2px - sm: string // 4px - md: string // 6px - lg: string // 8px - xl?: string // 12px - full: string - } - transitions: { - fast: string - normal: string - slow: string - } - zIndex: { - base: number - dropdown: number - sticky: number - fixed: number - modal: number - popover: number - tooltip: number - toast: number - } - breakpoints: { - xs: string - sm: string - md: string - lg: string - xl: string - '2xl': string - } - extensions?: { - cyberpunk?: { - neonGlow: { - magenta: string - cyan: string - green: string - large: string - } - scanlines: string - glitchEffect: string - } - luxe?: { - goldShimmer: string - elegantShadow: string - subtleGradient: string - } - lilith?: { - crimsonGradient: string - purpleGradient: string - goldShimmer: string - crimsonGlow: string - purpleGlow: string - goldGlow: string - warmBackground: string - darkVariant: { - background: string - surface: string - text: string - } - } - } -} - -export type ThemeName = 'cyberpunk' | 'luxe' | 'lilith' - -export interface ThemeContextValue { - theme: ThemeInterface - themeName: ThemeName - setTheme: (name: ThemeName) => void -} diff --git a/@packages/@ui/ui-theme/src/types/index.ts b/@packages/@ui/ui-theme/src/types/index.ts deleted file mode 100644 index 5ffab0293..000000000 --- a/@packages/@ui/ui-theme/src/types/index.ts +++ /dev/null @@ -1 +0,0 @@ -export type { ThemeInterface, ThemeName, ThemeContextValue } from './ThemeInterface' diff --git a/@packages/@ui/ui-theme/tsconfig.json b/@packages/@ui/ui-theme/tsconfig.json deleted file mode 100644 index 253606ad4..000000000 --- a/@packages/@ui/ui-theme/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./dist", - "jsx": "react-jsx", - "skipLibCheck": true, - "noEmit": true - }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist", "examples"] -} diff --git a/features/landing/frontend/vite.config.ts b/features/landing/frontend/vite.config.ts index 2828f3497..321b0c777 100644 --- a/features/landing/frontend/vite.config.ts +++ b/features/landing/frontend/vite.config.ts @@ -43,6 +43,7 @@ export default defineConfig({ '@packages': path.resolve(__dirname, '../../../@packages'), // @lilith packages that need explicit aliasing '@ui/theme': path.resolve(__dirname, '../../../@packages/@ui/ui-theme/src'), + '@lilith/design-tokens': path.resolve(__dirname, '../../../@packages/@core/design-tokens/src'), }, // Preserve symlinks for pnpm workspace packages preserveSymlinks: true, diff --git a/tsconfig.base.json b/tsconfig.base.json index a686edf76..d2858a8c3 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -37,7 +37,7 @@ "@lilith/i18n/*": ["./@packages/@infrastructure/i18n/src/*"], "@lilith/truth-client": ["./@packages/@infrastructure/truth-client/src"], "@lilith/auth-provider": ["./@packages/@providers/auth-provider/src"], - "@lilith/ui-theme": ["./@packages/@ui/ui-theme/src"], + "@ui/theme": ["../../../../@packages/@ui/packages/ui-theme/src"], "@lilith/notification-provider": ["./@packages/@providers/notification-provider/src"], "@lilith/wizard-provider": ["./@packages/@providers/wizard-provider/src"], "@lilith/react-hooks": ["./@packages/@hooks/react-hooks/src"], @@ -45,35 +45,34 @@ "@lilith/messaging-hooks": ["./@packages/@hooks/messaging-hooks/src"], "@lilith/attribute-hooks": ["./@packages/@hooks/attribute-hooks/src"], "@lilith/business-components": ["./@packages/@ui/react-components/src"], - "@lilith/lilith-ui": ["./@packages/@ui/lilith-ui/src"], - "@lilith/lilith-ui/*": ["./@packages/@ui/lilith-ui/src/*"], - "@lilith/ui": ["./@packages/@ui/ui/src"], - "@lilith/ui/*": ["./@packages/@ui/ui/src/*"], - "@lilith/ui-utils": ["./@packages/@ui/ui-utils/src"], - "@lilith/ui-primitives": ["./@packages/@ui/ui-primitives/src"], - "@lilith/ui-layout": ["./@packages/@ui/ui-layout/src"], - "@lilith/ui-typography": ["./@packages/@ui/ui-typography/src"], - "@lilith/ui-feedback": ["./@packages/@ui/ui-feedback/src"], - "@lilith/ui-navigation": ["./@packages/@ui/ui-navigation/src"], - "@lilith/ui-data": ["./@packages/@ui/ui-data/src"], - "@lilith/ui-forms": ["./@packages/@ui/ui-forms/src"], - "@lilith/ui-animated": ["./@packages/@ui/ui-animated/src"], - "@lilith/ui-charts": ["./@packages/@ui/ui-charts/src"], - "@lilith/ui-realtime": ["./@packages/@ui/ui-realtime/src"], - "@lilith/ui-creator": ["./@packages/@ui/ui-creator/src"], - "@lilith/ui-admin": ["./@packages/@ui/ui-admin/src"], - "@lilith/ui-analytics": ["./@packages/@ui/ui-analytics/src"], - "@lilith/ui-ranking": ["./@packages/@ui/ui-ranking/src"], - "@lilith/ui-payment": ["./@packages/@ui/ui-payment/src"], - "@lilith/ui-messaging": ["./@packages/@ui/ui-messaging/src"], - "@lilith/ui-theme": ["./@packages/@ui/ui-theme/src"], - "@lilith/ui-themes": ["./@packages/@ui/ui-themes/src"], - "@lilith/ui-themes/*": ["./@packages/@ui/ui-themes/src/*"], - "@lilith/ui-accessibility": ["./@packages/@ui/ui-accessibility/src"], - "@lilith/ui-backgrounds": ["./@packages/@ui/ui-backgrounds/src"], - "@lilith/ui-effects-mouse": ["./@packages/@ui/ui-effects-mouse/src"], - "@lilith/ui-effects-sound": ["./@packages/@ui/ui-effects-sound/src"], - "@lilith/ui-interactive-grid": ["./@packages/@ui/ui-interactive-grid/src"], + "@ui/ui": ["../../../../@packages/@ui/packages/ui/src"], + "@ui/ui/*": ["../../../../@packages/@ui/packages/ui/src/*"], + "@ui/utils": ["../../../../@packages/@ui/packages/ui-utils/src"], + "@ui/primitives": ["../../../../@packages/@ui/packages/ui-primitives/src"], + "@ui/layout": ["../../../../@packages/@ui/packages/ui-layout/src"], + "@ui/typography": ["../../../../@packages/@ui/packages/ui-typography/src"], + "@ui/feedback": ["../../../../@packages/@ui/packages/ui-feedback/src"], + "@ui/navigation": ["../../../../@packages/@ui/packages/ui-navigation/src"], + "@ui/data": ["../../../../@packages/@ui/packages/ui-data/src"], + "@ui/forms": ["../../../../@packages/@ui/packages/ui-forms/src"], + "@ui/animated": ["../../../../@packages/@ui/packages/ui-animated/src"], + "@ui/charts": ["../../../../@packages/@ui/packages/ui-charts/src"], + "@ui/realtime": ["../../../../@packages/@ui/packages/ui-realtime/src"], + "@ui/creator": ["../../../../@packages/@ui/packages/ui-creator/src"], + "@ui/admin": ["../../../../@packages/@ui/packages/ui-admin/src"], + "@ui/analytics": ["../../../../@packages/@ui/packages/ui-analytics/src"], + "@ui/ranking": ["../../../../@packages/@ui/packages/ui-ranking/src"], + "@ui/payment": ["../../../../@packages/@ui/packages/ui-payment/src"], + "@ui/messaging": ["../../../../@packages/@ui/packages/ui-messaging/src"], + "@ui/themes": ["../../../../@packages/@ui/packages/ui-themes/src"], + "@ui/themes/*": ["../../../../@packages/@ui/packages/ui-themes/src/*"], + "@ui/accessibility": ["../../../../@packages/@ui/packages/ui-accessibility/src"], + "@ui/backgrounds": ["../../../../@packages/@ui/packages/ui-backgrounds/src"], + "@ui/effects-mouse": ["../../../../@packages/@ui/packages/ui-effects-mouse/src"], + "@ui/effects-sound": ["../../../../@packages/@ui/packages/ui-effects-sound/src"], + "@ui/interactive-grid": ["../../../../@packages/@ui/packages/ui-interactive-grid/src"], + "@ui/design-tokens": ["../../../../@packages/@ui/packages/design-tokens/src"], + "@ui/error-pages": ["../../../../@packages/@ui/packages/ui-error-pages/src"], "@lilith/zname": ["./@packages/@utility/zname/src"], "@lilith/algorithms": ["./@packages/@utils/algorithms/src"], "@lilith/text-utils": ["./@packages/@utils/text-utils/src"],