{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "commitment-banner", "title": "Commitment Banner", "description": "Bandeau engagements ESF / France Montagnes. Composite (peer dep @valraiso/ublo-astro pour Astro.locals.lang).", "dependencies": [ "@valraiso/ublo-astro" ], "files": [ { "path": "registry/valraiso/commitment-banner/commitment-banner.astro", "content": "---\nimport title from \"./data/title.json\";\nimport links from \"./data/links.json\";\nimport styles from \"./commitment-banner.module.css\";\n\n/**\n * CommitmentBanner — bandeau « engagements ESF / France Montagnes ».\n *\n * Composite : utilise `Astro.locals.lang` (fourni par @valraiso/ublo-astro)\n * comme valeur par défaut, surchargeable via la prop `lang`.\n *\n * Personnalisation :\n * - `class` : classe(s) ajoutée(s) au conteneur.\n * - `mode=\"dark\"` : variante sombre.\n * - variables CSS : --banner-* (voir commitment-banner.module.css).\n */\ntype Lang = keyof typeof title;\n\ninterface Props {\n /** Langue d'affichage. Défaut : Astro.locals.lang puis \"fr\". */\n lang?: string;\n /** Classe(s) CSS additionnelle(s) sur le conteneur. */\n class?: string;\n /** \"dark\" pour la variante sombre. */\n mode?: string;\n}\n\nconst localeLang = (Astro.locals as { lang?: string } | undefined)?.lang;\nconst { lang = localeLang ?? \"fr\", class: className, mode } = Astro.props;\nconst hasContent = (lang as Lang) in title;\n---\n\n{\n hasContent && (\n