Componentes Astro en @chimi/design-system/components/ — los que cualquier web del Chimiverse importa para no reinventar header, footer, logo o theme. Acá el inventario, la API y dónde se usan.
Nueve componentes .astro que las webs (blog, techconf, recall-for-papers, simple-pdf-converter, simple-scrum-poker) importan directamente. Cambiar uno acá cambia el comportamiento en toda la red — sin tocar ningún site.
Brand: las marcas (logo, sello, favicon, mark). Layout: la estructura de cada página (header, footer, social). Theme: la lógica que pinta dark/light desde el primer paint.
Cuatro componentes para el mismo símbolo, según el contexto. El glyph solo (BrandMark), el favicon redondo, el sello con texto perimetral, el lockup horizontal con CODE®. Comparten el mate, no la silueta.
El glyph del mate solo, sin marco. Usa currentColor — adapta su color al texto que lo rodea.
// Glyph chico, hereda color del texto <BrandMark size={22} /> // Tinted como brand teal — wrap en un span con color <span style="color: var(--chimi-color-accent-primary)"> <BrandMark size={32} ariaLabel="Chimichurri" /> </span>
Mate dentro de un squircle blanco. Para favicon del browser, PWA icon, fallback de OG.
// Browser tab — colores default <BrandFavicon size={32} /> // OG image custom — disco charcoal, mate lemon <BrandFavicon size={120} discColor="#1C1C1C" markColor="#F9D71C" ariaLabel="Chimichurri Code" />
El sello: mate al centro, texto perimetral “Chimichurri Code · By Nicolás Patarino · 2024”. Para avatares, stamps, stickers.
// Default — texto charcoal, mate teal <BrandLogoCircle size={200} /> // Avatar oscuro — texto ivory, mate teal <BrandLogoCircle size={120} textColor="#F5EFE0" markColor="#02B5B9" ariaLabel="Chimichurri Code" />
Mate + “CODE®” horizontal. Single-color via currentColor — el wrapper decide el color.
// Wrap en algo que defina color <a href="/" style="color: var(--chimi-color-accent-primary)"> <BrandLogoWordmark size={180} ariaLabel="Inicio" /> </a>
Tres componentes que las cinco webs comparten: el header sticky con backdrop-blur, el footer con strip del Chimiverse, y los iconos de redes. Cambiar uno acá actualiza las cinco webs en el siguiente deploy.
Top nav sticky con brand, links, redes y toggle de tema. Backdrop-blur y border hairline. Mobile colapsa con burger.
// blog/src/layouts/Layout.astro <SiteHeader brand={{ label: "Chimi", emText: "·", byline: "Code" }} links={[ { href: "/posts", label: "Posts" }, { href: "/podcast", label: "Podcast" }, { href: "/tags", label: "Tags" }, { href: "/about", label: "Sobre" }, ]} socials={[{ icon: "github", href: "...", label: "GitHub" }]} themeToggle={true} />
Dos componentes lógicos: ThemeBootstrap es un script inline que aplica el tema antes de que el navegador pinte (sin flash). ThemeIcons es el sun/moon que el toggle del header usa. Ambos viven en el head.
Lee localStorage["chimi-theme"] y aplica data-theme="light" al <html> antes del primer paint. Sin él, las webs en modo claro tienen un FOUC oscuro de 100–200ms.
Cómo se usa: renderlo dentro del <head> de cada layout, antes de cualquier <link> o <style>. Es is:inline — corre síncrono.
Sun y moon como SVGs. SiteHeader los renderiza dentro del botón del toggle y los muestra/oculta según el tema activo (sun visible cuando estás en dark, moon cuando estás en light).
API: icon: "sun" | "moon", size: number (default 18). Hereda currentColor.
No es un componente, pero vive en la misma carpeta. Exporta ECOSYSTEM_SITES (lista canónica de webs del Chimiverse) y los tipos SocialLink, EcosystemSite que SiteHeader y SiteFooter consumen.
Cómo se usa: import { ecosystemLinksExcluding } from "@chimi/design-system/components/ecosystem". Devuelve los otros sitios (no el actual) para el strip del footer.
@chimi/design-systemCada web del Chimiverse declara "@chimi/design-system": "*" en sus dependencies y los importa así: import SiteHeader from "@chimi/design-system/components/SiteHeader.astro".
Los componentes son source-imported, no compilados. Astro los procesa en el build de cada web — eso significa que un cambio en este monorepo aparece sin republish (es workspace).
SocialIcons
SVG inline para youtube, twitter, linkedin, github. Heredan
currentColory se rotan dentro del nav y del footer.Props
"youtube" | "twitter" | "linkedin" | "github"Notas
aria-hidden="true"— el wrapper<a>aporta el aria-label.