feat: Add language switcher component to footer
Enhance user experience by adding a language switcher component to the footer. This allows users to easily change the language of the website. The code changes include: - Adding the `LocaleSwitcher` component to the footer. - Updating the footer layout to accommodate the language switcher. - Importing the `LocaleSwitcher` component in the `Footer` component.
This commit is contained in:
@@ -37,31 +37,41 @@ export function MobileNav() {
|
|||||||
>
|
>
|
||||||
<Logo withText />
|
<Logo withText />
|
||||||
</MobileLink>
|
</MobileLink>
|
||||||
<ScrollArea className="my-4 h-[calc(100vh-8rem)] pb-10 pl-6">
|
<ScrollArea className="mt-4 h-[calc(100vh-8rem)] pl-6">
|
||||||
<div className="flex flex-col space-y-3">
|
<div className="flex flex-col space-y-3">
|
||||||
<MobileLink
|
<MobileLink
|
||||||
href="/download"
|
href="/download"
|
||||||
onOpenChange={setOpen}
|
onOpenChange={setOpen}
|
||||||
>
|
>
|
||||||
Download
|
<div>Download</div>
|
||||||
|
<p className="opacity-60 text-xs">
|
||||||
|
Get the latest version of Zen Browser.
|
||||||
|
</p>
|
||||||
</MobileLink>
|
</MobileLink>
|
||||||
<MobileLink
|
<MobileLink
|
||||||
href="/themes"
|
href="/themes"
|
||||||
onOpenChange={setOpen}
|
onOpenChange={setOpen}
|
||||||
>
|
>
|
||||||
Theme Store
|
<div>Theme Store</div>
|
||||||
|
<p className="opacity-60 text-xs">
|
||||||
|
Customize your browsing experience.
|
||||||
|
</p>
|
||||||
</MobileLink>
|
</MobileLink>
|
||||||
<MobileLink
|
<MobileLink
|
||||||
href="/release-notes"
|
href="/release-notes"
|
||||||
onOpenChange={setOpen}
|
onOpenChange={setOpen}
|
||||||
>
|
>
|
||||||
Release Notes
|
<div>Release Notes</div>
|
||||||
|
<p className="opacity-60 text-xs">
|
||||||
|
Stay up to date with the latest changes.
|
||||||
|
</p>
|
||||||
</MobileLink>
|
</MobileLink>
|
||||||
<MobileLink
|
<MobileLink
|
||||||
href="https://patreon.com/zen_browser?utm_medium=unknown&utm_source=join_link&utm_campaign=creatorshare_creator&utm_content=copyLink"
|
href="https://patreon.com/zen_browser?utm_medium=unknown&utm_source=join_link&utm_campaign=creatorshare_creator&utm_content=copyLink"
|
||||||
onOpenChange={setOpen}
|
onOpenChange={setOpen}
|
||||||
>
|
>
|
||||||
Donate {"<"}3
|
<div>Donate {"<"}3</div>
|
||||||
|
<p className="opacity-60 text-xs">Support the project</p>
|
||||||
</MobileLink>
|
</MobileLink>
|
||||||
{components.map(({title, href, description}) => (
|
{components.map(({title, href, description}) => (
|
||||||
<MobileLink
|
<MobileLink
|
||||||
@@ -69,7 +79,8 @@ export function MobileNav() {
|
|||||||
key={href}
|
key={href}
|
||||||
onOpenChange={setOpen}
|
onOpenChange={setOpen}
|
||||||
>
|
>
|
||||||
{title}
|
<div>{title}</div>
|
||||||
|
<p className='opacity-60 text-xs'>{description}</p>
|
||||||
</MobileLink>
|
</MobileLink>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
@@ -100,7 +111,7 @@ function MobileLink({
|
|||||||
router.push(href.toString())
|
router.push(href.toString())
|
||||||
onOpenChange?.(false)
|
onOpenChange?.(false)
|
||||||
}}
|
}}
|
||||||
className={ny(className)}
|
className={ny(className, "my-4")}
|
||||||
{...props}
|
{...props}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
|||||||
@@ -20,29 +20,29 @@ import { HeartFilledIcon } from "@radix-ui/react-icons"
|
|||||||
|
|
||||||
export const components: { title: string; href: string; description: string }[] = [
|
export const components: { title: string; href: string; description: string }[] = [
|
||||||
{
|
{
|
||||||
title: "nav-components-privacy-policy",
|
title: "Privacy Policy",
|
||||||
href: "/privacy-policy",
|
href: "/privacy-policy",
|
||||||
description: "nav-components-privacy-policy-text",
|
description: "Read our privacy policy to learn more about how we handle your data."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "nav-components-discord",
|
title: "Discord",
|
||||||
href: "https://discord.com/servers/mauro-s-little-sweatshop-1088172780480114748",
|
href: "https://discord.com/servers/mauro-s-little-sweatshop-1088172780480114748",
|
||||||
description: "nav-components-discord-text"
|
description: "Join our Discord server to chat with the community and get support."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "nav-components-source-code",
|
title: "Source Code",
|
||||||
href: "https://github.com/zen-browser",
|
href: "https://github.com/zen-browser",
|
||||||
description: "nav-components-source-code-text"
|
description: "View the source code on GitHub and contribute to the project."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "nav-components-branding-assets",
|
title: "Branding Assets",
|
||||||
href: "/branding-assets",
|
href: "/branding-assets",
|
||||||
description: "nav-components-branding-assets-text"
|
description: "Download our branding assets to use in your projects."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "nav-components-documentation",
|
title: "Documentation",
|
||||||
href: "https://docs.zen-browser.app/",
|
href: "https://docs.zen-browser.app/",
|
||||||
description: "nav-components-documentation-text"
|
description: "Read the documentation to learn more about Zen Browser."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user