{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "collapsible", "title": "Collapsible", "description": "Conteneur repliable avec dégradé de fondu et bouton afficher/masquer i18n.", "registryDependencies": [ "@valraiso/icon" ], "files": [ { "path": "registry/valraiso/collapsible/collapsible.astro", "content": "---\nimport Icon from \"../icon/icon.astro\";\nimport styles from \"./collapsible.module.css\";\n\n/**\n * Collapsible — zone de contenu tronquée en hauteur, dépliable via un bouton.\n *\n * Affiche le slot dans une hauteur limitée ; si le contenu déborde, un bouton\n * « Afficher / Masquer » avec dégradé permet de déplier. En mode CMS (événement\n * `ublo-mode-changed`), le contenu est toujours affiché en entier.\n *\n * Personnalisation :\n * - `height` : hauteur tronquée en px (défaut 320).\n * - `gradientColor` : couleur du dégradé de fondu (défaut \"#fff\").\n * - `lang` : langue du libellé du bouton (défaut Astro.locals.lang ?? \"en\").\n * - `class` : classe(s) ajoutée(s) au conteneur racine.\n * - variables CSS : --ads-collapsible-* (voir collapsible.module.css).\n */\ninterface Props {\n height?: number;\n gradientColor?: string;\n lang?: string;\n class?: string;\n}\n\nconst i18n = {\n fr: {\n open: \"Afficher\",\n close: \"Masquer\",\n },\n en: {\n open: \"Open\",\n close: \"Close\",\n },\n es: {\n open: \"Abrir\",\n close: \"Cerrar\",\n },\n ca: {\n open: \"Veure\",\n close: \"Amagar\",\n },\n};\n\nconst localeLang = (Astro.locals as { lang?: string } | undefined)?.lang;\nconst {\n height = 320,\n gradientColor = \"#fff\",\n lang = localeLang ?? \"en\",\n class: className,\n} = Astro.props;\n\nconst messages = i18n[lang as keyof typeof i18n] ?? i18n.en;\nconst message = messages.open;\n---\n\n