Skip to content

Commit d34fdfb

Browse files
gary-van-woerkensGary van Woerkens
andauthored
feat: add footer partners (#77)
* feat: add footer partners * use fr.cx on classes * add target _blank to logo links --------- Co-authored-by: Gary van Woerkens <gvanwoerkens@gary-big-mac.local>
1 parent 9abbd76 commit d34fdfb

File tree

2 files changed

+106
-1
lines changed

2 files changed

+106
-1
lines changed

src/Footer.tsx

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export type FooterProps = {
2222
cookiesManagementLinkProps?: RegisteredLinkProps;
2323
homeLinkProps: RegisteredLinkProps & { title: string };
2424
bottomItems?: FooterProps.BottomItem[];
25+
partnersLogos?: FooterProps.PartnersLogos;
2526
operatorLogo?: {
2627
orientation: "horizontal" | "vertical";
2728
/**
@@ -79,6 +80,19 @@ export namespace FooterProps {
7980
>;
8081
};
8182
}
83+
84+
export type PartnersLogos = {
85+
main: PartnersLogos.Logo;
86+
sub?: PartnersLogos.Logo[];
87+
};
88+
89+
export namespace PartnersLogos {
90+
export type Logo = {
91+
alt: string;
92+
href: string;
93+
imgUrl: string;
94+
};
95+
}
8296
}
8397

8498
/** @see <https://react-dsfr-components.etalab.studio/?path=/docs/components-footer> */
@@ -97,6 +111,7 @@ export const Footer = memo(
97111
personalDataLinkProps,
98112
cookiesManagementLinkProps,
99113
bottomItems = [],
114+
partnersLogos,
100115
operatorLogo,
101116
license,
102117
style,
@@ -205,6 +220,53 @@ export const Footer = memo(
205220
</ul>
206221
</div>
207222
</div>
223+
{partnersLogos && (
224+
<div className={fr.cx("fr-footer__partners")}>
225+
<h4 className={fr.cx("fr-footer__partners-title")}>
226+
{t("our partners")}
227+
</h4>
228+
<div className={fr.cx("fr-footer__partners-logos")}>
229+
<div className={fr.cx("fr-footer__partners-main")}>
230+
<a
231+
target="_blank"
232+
href={partnersLogos.main.href}
233+
className={fr.cx("fr-footer__partners-link")}
234+
>
235+
<img
236+
alt={partnersLogos.main.alt}
237+
style={{ height: "5.625rem" }}
238+
src={partnersLogos.main.imgUrl}
239+
className={fr.cx("fr-footer__logo")}
240+
/>
241+
</a>
242+
</div>
243+
{partnersLogos.sub && (
244+
<div className={fr.cx("fr-footer__partners-sub")}>
245+
<ul>
246+
{partnersLogos.sub.map(logo => (
247+
<li>
248+
<a
249+
target="_blank"
250+
href={logo.href}
251+
className={fr.cx(
252+
"fr-footer__partners-link"
253+
)}
254+
>
255+
<img
256+
alt={logo.alt}
257+
src={logo.imgUrl}
258+
style={{ height: "5.625rem" }}
259+
className={fr.cx("fr-footer__logo")}
260+
/>
261+
</a>
262+
</li>
263+
))}
264+
</ul>
265+
</div>
266+
)}
267+
</div>
268+
</div>
269+
)}
208270
<div className={cx(fr.cx("fr-footer__bottom"), classes.bottom)}>
209271
<ul className={cx(fr.cx("fr-footer__bottom-list"), classes.bottomList)}>
210272
{[
@@ -329,7 +391,8 @@ const { useTranslation, addFooterTranslations } = createComponentI18nApi({
329391
"personal data": "Données personnelles",
330392
"cookies management": "Gestion des cookies",
331393
"license mention": "Sauf mention contraire, tous les contenus de ce site sont sous",
332-
"etalab license": "licence etalab-2.0"
394+
"etalab license": "licence etalab-2.0",
395+
"our partners": "Nos partenaires"
333396
/* spell-checker: enable */
334397
}
335398
});

stories/Footer.stories.tsx

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,3 +183,45 @@ export const WithCustomLicense = getStory({
183183
</>
184184
)
185185
});
186+
187+
export const WithPartners = getStory({
188+
"brandTop": (
189+
<>
190+
INTITULE
191+
<br />
192+
OFFICIEL
193+
</>
194+
),
195+
"accessibility": "fully compliant",
196+
"contentDescription": `
197+
Ce message est à remplacer par les informations de votre site.
198+
199+
Comme exemple de contenu, vous pouvez indiquer les informations
200+
suivantes : Le site officiel d’information administrative pour les entreprises.
201+
Retrouvez toutes les informations et démarches administratives nécessaires à la création,
202+
à la gestion et au développement de votre entreprise.
203+
`,
204+
"homeLinkProps": {
205+
"href": "/",
206+
"title": "Accueil - Nom de l’entité (ministère, secrétariat d‘état, gouvernement)"
207+
},
208+
"partnersLogos": {
209+
"main": {
210+
"href": "#",
211+
"imgUrl": placeholder_16x9ImgUrl,
212+
"alt": "[À MODIFIER - texte alternatif de l’image]"
213+
},
214+
"sub": [
215+
{
216+
"href": "#",
217+
"imgUrl": placeholder_16x9ImgUrl,
218+
"alt": "[À MODIFIER - texte alternatif de l’image]"
219+
},
220+
{
221+
"href": "#",
222+
"imgUrl": placeholder_16x9ImgUrl,
223+
"alt": "[À MODIFIER - texte alternatif de l’image]"
224+
}
225+
]
226+
}
227+
});

0 commit comments

Comments
 (0)