Rustelo/resources/nickel/themes/contracts.ncl
Jesús Pérez f1010e9d07
chore: update
2026-07-18 20:16:16 +01:00

187 lines
4.6 KiB
Text

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