# Theme Configuration Contracts # # Type contracts for theme configuration with support for inheritance and variants. { # Theme metadata Metadata = { name | String | doc "Theme name (e.g., 'Default', 'Dark', 'Corporate')", description | String | doc "Theme description", version | String | default = "1.0.0", author | String | default = "Rustelo Contributors", extends | String | doc "Parent theme to inherit from (e.g., 'default')" | optional, .. }, # Color palette Colors = { # Primary brand colors primary | String | doc "Primary brand color", primary_hover | String | doc "Primary hover state", secondary | String | doc "Secondary color", secondary_hover | String | doc "Secondary hover state", accent | String | doc "Accent color", # Semantic colors success | String | doc "Success state color", warning | String | doc "Warning state color", error | String | doc "Error state color", info | String | doc "Info state color", # Surface colors surface | String | doc "Background surface color", surface_dark | String | doc "Dark surface color", surface_hover | String | doc "Surface hover state", surface_hover_dark | String | doc "Dark surface hover state", # Text colors text | String | doc "Primary text color", text_dark | String | doc "Dark text color", text_secondary | String | doc "Secondary text color", text_secondary_dark | String | doc "Dark secondary text color", # Border colors border | String | doc "Border color", border_dark | String | doc "Dark border color", .. }, # Typography settings Typography = { font_family_sans | String | default = "Inter, ui-sans-serif, system-ui, sans-serif", font_family_mono | String | default = "JetBrains Mono, ui-monospace, monospace", font_size_xs | String | default = "0.75rem", font_size_sm | String | default = "0.875rem", font_size_base | String | default = "1rem", font_size_lg | String | default = "1.125rem", font_size_xl | String | default = "1.25rem", font_size_2xl | String | default = "1.5rem", font_size_3xl | String | default = "1.875rem", line_height_tight | String | default = "1.25", line_height_normal | String | default = "1.5", line_height_relaxed | String | default = "1.75", .. }, # Spacing scale Spacing = { xs | String | default = "0.25rem", sm | String | default = "0.5rem", md | String | default = "1rem", lg | String | default = "1.5rem", xl | String | default = "2rem", "2xl" | String | default = "2.5rem", "3xl" | String | default = "3rem", .. }, # Border radius values Radius = { sm | String | default = "0.25rem", md | String | default = "0.375rem", lg | String | default = "0.5rem", xl | String | default = "0.75rem", "2xl" | String | default = "1rem", full | String | default = "9999px", .. }, # Shadow definitions Shadows = { sm | String | optional, base | String | optional, md | String | optional, lg | String | optional, xl | String | optional, .. }, # Component-specific settings Components = { button | Dyn | optional, card | Dyn | optional, input | Dyn | optional, navbar | Dyn | optional, footer | Dyn | optional, .. }, # Asset paths Assets = { logo_light | String | optional, logo_dark | String | optional, logo_icon | String | optional, favicon | String | optional, favicon_dark | String | optional, logo_alt | String | optional, logo_href | String | optional, logo_show_in_nav | Bool | optional, logo_show_in_footer | Bool | optional, logo_width | String | optional, logo_height | String | optional, .. }, # Animations Animations = { duration_fast | String | optional, duration_normal | String | optional, duration_slow | String | optional, easing | String | optional, .. }, # Responsive breakpoints Breakpoints = { sm | String | optional, md | String | optional, lg | String | optional, xl | String | optional, "2xl" | String | optional, .. }, # Root theme configuration ThemeFile = { metadata | Metadata, colors | Colors, typography | Typography | optional, spacing | Spacing | optional, radius | Radius | optional, shadows | Shadows | optional, components | Components | optional, assets | Assets | optional, animations | Animations | optional, breakpoints | Breakpoints | optional, .. }, }