[package]
name = "llimphi-compositor"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
publish.workspace = true
repository.workspace = true
description = "llimphi-compositor — el núcleo declarativo de Llimphi sin winit: el árbol `View<Msg>`, el mount sobre taffy, el paint a `vello::Scene` y el hit-test. No depende de llimphi-hal ni de una surface concreta, así que la misma composición sirve sobre winit (llimphi-ui) o, a futuro, sobre el framebuffer del kernel wawa. `wgpu` entra sólo por la firma de `GpuPaintFn` (tipos, no windowing)."

[dependencies]
llimphi-layout = { path = "../llimphi-layout", version = "0.1.0" }
llimphi-text = { path = "../llimphi-text", version = "0.1.0" }
vello = { workspace = true }
# Sólo para los tipos de la firma de GpuPaintFn (Device/Queue/Encoder/View).
# wgpu NO depende de winit — el compositor sigue libre de windowing.
wgpu = { workspace = true }

[dev-dependencies]
# Volcado headless del paint a PNG (llvmpipe) para VER sombra/gradiente/borde
# sin levantar ventana. Sólo capas inferiores — no llimphi-ui (sin ciclo).
llimphi-hal = { path = "../llimphi-hal" }
llimphi-raster = { path = "../llimphi-raster" }
llimphi-theme = { path = "../llimphi-theme" }
png = { workspace = true }
pollster = { workspace = true }
# Widgets REALES para el showreel: el `View<Msg>` que devuelven es el mismo
# tipo (`llimphi_compositor::View`, re-exportado por llimphi-ui), así que
# montan con el mount/paint/measure de este mismo crate. Dev-only → sin ciclo
# en el grafo normal (llimphi-ui depende de este crate, no al revés).
llimphi-widget-switch = { path = "../widgets/switch" }
llimphi-widget-slider = { path = "../widgets/slider" }
llimphi-widget-progress = { path = "../widgets/progress" }
llimphi-widget-button = { path = "../widgets/button" }
llimphi-widget-segmented = { path = "../widgets/segmented" }
