ryOS UI Design & Styling The 4 Themes Theme ID Key Traits System 7 system7 Black/white, square corners, Chicago font, dotted patterns macOS Aqua macosx Pinstripes, traffic lights, glossy buttons, Lucida Grande Windows XP xp Blue gradients, Luna style, soft shadows, Tahoma Windows 98 win98 Gray 3D bevels, classic blue title bars, MS Sans Serif Essential Utilities import { cn } from "@/lib/utils" ; import { useTheme } from "@/contexts/ThemeContext" ; const { osTheme } = useTheme ( ) ; // Theme-conditional classes className = { cn ( "base-classes" , osTheme === "macosx" && "aqua-specific" , osTheme === "system7" && "system7-specific" ) } OS-Aware Tailwind Classes className = "bg-os-window-bg" // Window background className = "border-os-window" // Window border className = "rounded-os" // Theme-appropriate radius className = "font-os-ui" // UI font stack className = "font-os-mono" // Monospace font className = "shadow-os-window" // Window shadow className = "h-os-titlebar" // Title bar height CSS Variables Access via var(--name) : --os-font-ui , --os-font-mono --os-color-window-bg , --os-color-window-border --os-color-titlebar-active-bg , --os-color-titlebar-inactive-bg --os-color-button-face , --os-color-button-highlight , --os-color-button-shadow --os-color-selection-bg , --os-color-selection-text --os-metrics-border-width , --os-metrics-radius --os-metrics-titlebar-height , --os-metrics-menubar-height Theme-Specific Styling System 7 < div className = { cn ( "border-2 border-black bg-white rounded-none" , "font-chicago text-black" , "shadow-[2px_2px_0px_0px_rgba(0,0,0,0.5)]" ) }
macOS Aqua < div className = { cn ( "bg-[#E8E8E8] border border-black/30" , "rounded-lg font-lucida-grande" , "shadow-[0_3px_10px_rgba(0,0,0,0.3)]" ) }
< button className = " aqua-button primary "
OK </ button
</ div
Windows XP < div className = { cn ( "bg-[#ECE9D8] border-[3px] border-[#0054E3]" , "rounded-[0.5rem] font-tahoma" , "shadow-[0_4px_8px_rgba(0,0,0,0.25)]" ) }
Windows 98 < div className = { cn ( "bg-[#C0C0C0] border-2 rounded-none font-ms-sans-serif" , "border-t-white border-l-white" , "border-b-[#808080] border-r-[#808080]" ) }
Theme Specifications System 7 ( system7 ) Property Value Fonts Chicago, Monaco (mono) Window BG
FFFFFF
Border 2px solid #000000 Radius 0px Selection Black bg, white text Shadow 2px 2px 0px 0px rgba(0,0,0,0.5) macOS Aqua ( macosx ) Property Value Fonts Lucida Grande, Monaco (mono) Window BG
E8E8E8
Border 0.5px solid rgba(0,0,0,0.3) Radius 0.45rem (8px) Selection
3875D7
bg, white text Shadow 0 3px 10px rgba(0,0,0,0.3) Traffic Lights Red
FF5F57
, Yellow
FEBC2E
, Green
28C840
Windows XP ( xp ) Property Value Fonts Tahoma, Consolas (mono) Window BG
ECE9D8
Border 3px solid #0054E3 Radius 0.5rem (8px) Selection
316AC5
bg, white text Shadow 0 4px 8px rgba(0,0,0,0.25) Title Bar Blue gradient
0A246A
→
0054E3
Windows 98 ( win98 ) Property Value Fonts MS Sans Serif, Fixedsys (mono) Window BG
C0C0C0
Raised Bevel border: 2px solid; border-color: #FFF #808080 #808080 #FFF Sunken Bevel border: 2px solid; border-color: #808080 #FFF #FFF #808080 Radius 0px Selection
000080
bg, white text Title Bar Gradient
000080
→
1084D0
Component Patterns Theme-Adaptive Button import { Button } from "@/components/ui/button" ; < Button variant = " default "
Standard </ Button
< Button variant = " retro "
Retro Style </ Button
< Button variant = " aqua "
Aqua (macOS) </ Button
Aqua Buttons (CSS classes) < button className = " aqua-button "
Default </ button
< button className = " aqua-button primary "
Primary (pulsing) </ button
< button className = " aqua-button secondary "
Secondary </ button
Win98 3D Button < button className = { cn ( "px-4 py-1 bg-[#C0C0C0]" , "border-2 border-t-white border-l-white" , "border-b-[#808080] border-r-[#808080]" , "active:border-t-[#808080] active:border-l-[#808080]" , "active:border-b-white active:border-r-white" ) }
Glassmorphism < div className = " bg-white/80 backdrop-blur-lg rounded-lg "
< div className = " bg-black/40 backdrop-blur-xl text-white "
Theme-Aware Panel < div className = { cn ( "p-4 bg-os-window-bg border-os-window rounded-os" , osTheme === "system7" && "border-2 border-black" , osTheme === "macosx" && "shadow-md" , osTheme === "win98" && "border-2 border-t-white border-l-white border-b-[#808080] border-r-[#808080]" ) }
Custom Components Component Usage AudioBars Frequency visualization PlaybackBars Equalizer animation VolumeBar Horizontal volume indicator Dial Circular dial control (sm/md/lg) RightClickMenu Context menu wrapper Dial Example import { Dial } from "@/components/ui/dial" ; < Dial value = { 50 } onChange = { setValue } size = " md " label = " Volume " /> Window Materials Mode Use Case default Standard opaque windows transparent Semi-transparent (iPod, Photo Booth) notitlebar Immersive with floating controls (Videos) Best Practices Always search for existing patterns before creating new styles or components Always use cn() for conditional class merging Use OS-aware classes ( bg-os- , border-os- ) when available Check theme with useTheme() for complex conditional rendering Prefer CSS variables over hardcoded colors Test all 4 themes when adding styled components x