# 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,

    ..
  },
}
