# llimphi-widget-dock-rail *Read this in English: [README.md](README.md).* Rail vertical de **dientes** para sidebars acoplables. Cada diente es una pestaña vertical: una **barra de acento** de 3px pegada al borde interno (encendida cuando el item está activo) + un **icono** centrado. Los dientes apilan en una columna redondeada que se pinta como una franja flotante al borde del centro — el patrón del dock de cosmos, ahora reutilizable. Render-only y agnóstico del `Msg`: el item se identifica por un `u64` opaco. El clic (en el *press*, para no pelear con el arrastre) activa vía `on_activate(id)`; el diente es **arrastrable** con su `id` como payload, y el rail entero es **drop target** (`on_drop(payload)`) — así una app puede mover un diente de un sidebar a otro soltándolo sobre el rail opuesto. El icono lo dibuja el caller (`make_icon`), que recibe el color ya resuelto según el estado activo/inactivo. Opcionalmente un diente lleva un **distintivo** ("bubble number") en su esquina externa: `dock_rail_view_badged` toma `make_badge(id)` que devuelve un `DockBadge` (chip con número o punto de estado, reusando `llimphi_widget_badge`). Como se deriva del `id`, basta cambiar el modelo y re-pintar para que el contador cambie en vivo. ```ignore let items = [DockRailItem { id: 0, active: true }, DockRailItem { id: 1, active: false }]; dock_rail_view( &items, 44.0, &DockRailPalette::from_theme(&theme), |id, size, color| my_icon_view(id, size, color), |id| Msg::DockActivate(side, id), move |payload| Some(Msg::DockDrop(side, payload)), ) ``` --- Parte de **llimphi** — ver [llimphi](../../LEEME.md).