Skip to content

Commit 2dbbdea

Browse files
committed
introduce third slot to footer
1 parent 64230cf commit 2dbbdea

2 files changed

Lines changed: 59 additions & 44 deletions

File tree

packages/ui-components/src/Containers/Footer/index.module.css

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,24 @@
99
border-neutral-200
1010
bg-white
1111
py-4
12+
text-neutral-500
1213
sm:px-8
13-
md:flex-row
1414
md:justify-between
1515
md:py-5
1616
dark:border-neutral-900
1717
dark:bg-neutral-950;
1818

19+
.row {
20+
@apply flex
21+
flex-col
22+
items-center
23+
gap-6
24+
md:flex-row
25+
md:justify-between
26+
md:gap-0
27+
md:self-stretch;
28+
}
29+
1930
.sectionPrimary {
2031
@apply flex
2132
flex-wrap
@@ -43,4 +54,27 @@
4354
gap-1;
4455
}
4556
}
57+
58+
.legal {
59+
@apply flex
60+
flex-col
61+
gap-2
62+
px-4
63+
text-center
64+
text-xs
65+
text-balance
66+
md:px-14;
67+
68+
p {
69+
@apply text-center
70+
text-sm
71+
text-neutral-800
72+
dark:text-neutral-500;
73+
}
74+
75+
a {
76+
@apply text-green-600
77+
dark:text-green-400;
78+
}
79+
}
4680
}

packages/ui-components/src/Containers/Footer/index.tsx

Lines changed: 24 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import classNames from 'classnames';
2+
13
import NavItem from '#ui/Containers/NavBar/NavItem';
24
import {
35
Bluesky,
@@ -38,6 +40,7 @@ type Navigation = {
3840
type ExtraNavigationSlots = {
3941
primary?: ReactNode;
4042
secondary?: ReactNode;
43+
legal?: ReactNode;
4144
};
4245

4346
type FooterProps = {
@@ -53,56 +56,34 @@ const Footer: FC<FooterProps> = ({
5356
navigation,
5457
slots,
5558
}) => {
56-
const openJSlink = navigation.footerLinks.at(-1)!;
57-
5859
return (
5960
<footer className={styles.footer}>
60-
<div className={styles.sectionPrimary}>
61-
{slots?.primary}
62-
63-
{navigation.footerLinks.slice(0, -1).map(item => (
64-
<NavItem
65-
key={item.link}
66-
type="footer"
67-
href={item.link}
68-
as={as}
69-
pathname={pathname}
70-
>
71-
{item.text}
72-
</NavItem>
73-
))}
74-
</div>
75-
76-
<div className={styles.sectionSecondary}>
77-
{slots?.secondary}
61+
<div className={styles.row}>
62+
<div className={styles.sectionPrimary}>{slots?.primary}</div>
7863

79-
<NavItem
80-
type="footer"
81-
href={openJSlink.link}
82-
as={as}
83-
pathname={pathname}
84-
>
85-
&copy; {openJSlink.text}
86-
</NavItem>
64+
<div className={styles.sectionSecondary}>
65+
{slots?.secondary}
8766

88-
<div className={styles.social}>
89-
{navigation.socialLinks.map(link => {
90-
const SocialIcon = footerSocialIcons[link.icon];
67+
<div className={styles.social}>
68+
{navigation.socialLinks.map(link => {
69+
const SocialIcon = footerSocialIcons[link.icon];
9170

92-
return (
93-
<NavItem
94-
key={link.icon}
95-
href={link.link}
96-
type="footer"
97-
as={as}
98-
pathname={pathname}
99-
>
100-
<SocialIcon width={20} height={20} aria-label={link.link} />
101-
</NavItem>
102-
);
103-
})}
71+
return (
72+
<NavItem
73+
key={link.icon}
74+
href={link.link}
75+
type="footer"
76+
as={as}
77+
pathname={pathname}
78+
>
79+
<SocialIcon width={20} height={20} aria-label={link.link} />
80+
</NavItem>
81+
);
82+
})}
83+
</div>
10484
</div>
10585
</div>
86+
<div className={classNames(styles.row, styles.legal)}>{slots?.legal}</div>
10687
</footer>
10788
);
10889
};

0 commit comments

Comments
 (0)