Skip to main content

Crate llimphi_theme

Crate llimphi_theme 

Source
Expand description

llimphi-theme — paleta compartida entre apps Llimphi.

Define un set de slots semánticos (bg_app, fg_text, accent, etc.) que cada widget mapea a su propio Palette específico vía Palette::from_theme(&theme). El analógo Llimphi al nahual-theme GPUI, pero con colores peniko::Color y sin macros de Background / gradiente — Llimphi pinta colores sólidos por ahora.

Disponer del Theme en un crate aparte permite:

  1. Consistencia visual: las apps comparten paleta sin redefinirla.
  2. Temas intercambiables: Theme::dark() vs Theme::light() (o más adelante, sobreescritos por config del usuario).
  3. Widgets desacoplados: cada widget acepta su Palette (no el Theme entero), así un consumidor que sólo necesita un botón con colores no-temáticos puede construir su ButtonPalette a mano.

Modules§

alpha
Valores de opacidad alfa (0–255) para capas semánticas. Usar siempre que se quiera transparencia coherente. El widget que improvisa su propio alpha rompe la firma visual.
elevation
Tokens de elevación — sombras escalonadas. Como Shadow vive en llimphi-compositor (y llimphi-theme no depende de él para quedarse leaf), cada nivel se expone como (alpha_u8, blur_px, dy_px). Los widgets construyen su Shadow puenteándolo: Shadow { color: Color::from_rgba8(0,0,0, a), blur, dy, dx: 0.0, spread: 0.0 }. Escala perceptual logarítmica: cada nivel ~×2 de blur.
motion
Duraciones canónicas (segundo nivel: rítmico, no nervioso, no soporífero). Los widgets eligen MICRO para tintes de hover/focus que sólo necesitan suavizar el “salto”, FAST para microinteracciones completas (chip que pulsa), NORMAL para transiciones principales (toast entrar, modal abrir), SLOW para énfasis o entradas dramáticas (splash de boot, hero shared-element).
radius
Radios de esquina canónicos. La elegancia se construye en escalera: XS para chips e inputs, SM para botones, MD para paneles, LG para superficies grandes (toast, modal, card destacada).

Structs§

Theme
Paleta de la app. Slots semánticos que cubren los casos comunes (fondo, texto, hover, foco, acento). Los widgets reusables toman su Palette específico desde acá vía Palette::from_theme(&theme).

Constants§

ENTITY_PALETTE
Paleta sobria de 8 tonos para colorear entidades por hash (avatares de contactos, etiquetas de calendario…). Tonos apagados que conviven con cualquier Theme. Usada vía stable_color.

Functions§

stable_color
Color estable derivado de una semilla: hash FNV-1a del texto → índice en ENTITY_PALETTE. La misma semilla da siempre el mismo color, sin estado. Para avatares (por correo), etiquetas, badges de entidad, etc.

Type Aliases§

Color
A convenient alias for the color type used for Brush.