Compare commits
1 commit
29c1252633
...
8e3606bd38
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8e3606bd38 |
Binary file not shown.
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 9.4 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 1.6 MiB |
|
|
@ -243,7 +243,7 @@ export default function LandingPage(
|
||||||
</>
|
</>
|
||||||
</NewSection>
|
</NewSection>
|
||||||
|
|
||||||
<NewSection id="details">
|
<NewSection id="faq">
|
||||||
<>
|
<>
|
||||||
<div>
|
<div>
|
||||||
<Heading>{t.details.title}</Heading>
|
<Heading>{t.details.title}</Heading>
|
||||||
|
|
|
||||||
|
|
@ -14,17 +14,18 @@ export function NavContainer({ children, title, }: { children: React.ReactNode,
|
||||||
<div className="container mx-auto px-4">
|
<div className="container mx-auto px-4">
|
||||||
<div className="flex items-center justify-between h-16">
|
<div className="flex items-center justify-between h-16">
|
||||||
<div className="flex gap-4">
|
<div className="flex gap-4">
|
||||||
|
<LanguageSelector />
|
||||||
<Link href="/" className="text-xl font-bold tracking-tighter hover:text-primary transition-colors">
|
<Link href="/" className="text-xl font-bold tracking-tighter hover:text-primary transition-colors">
|
||||||
<h1>{title}</h1>
|
<h1>{title}</h1>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
{children}
|
{children}
|
||||||
<LanguageSelector />
|
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="icon"
|
size="icon"
|
||||||
onClick={() => setTheme(theme === "dark" ? "light" : "dark")}
|
onClick={() => setTheme(theme === "dark" ? "light" : "dark")}
|
||||||
|
className="ml-4"
|
||||||
>
|
>
|
||||||
{theme === "dark" ? (
|
{theme === "dark" ? (
|
||||||
<SunIcon className="h-5 w-5" />
|
<SunIcon className="h-5 w-5" />
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,6 @@
|
||||||
import { Lang } from "@/i18n/locales";
|
import { Lang } from "@/i18n/locales";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { useParams, usePathname } from "next/navigation";
|
import { useParams, usePathname } from "next/navigation";
|
||||||
import { Button } from "./button";
|
|
||||||
import { LanguagesIcon } from "lucide-react";
|
|
||||||
|
|
||||||
|
|
||||||
export const LanguageSelector = () => {
|
export const LanguageSelector = () => {
|
||||||
|
|
@ -17,22 +15,10 @@ export const LanguageSelector = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const lang = params?.locale || 'pl';
|
const lang = params?.locale || 'pl';
|
||||||
const otherLang = replacements[lang];
|
const changedLang = pathname.replace(`/${lang}`, `/${replacements[lang]}`)
|
||||||
const changedLang = pathname.replace(`/${lang}`, `/${otherLang}`)
|
|
||||||
|
|
||||||
return (<>
|
if (lang === 'pl') return (<>
|
||||||
<Button
|
<Link suppressHydrationWarning className="pt-1" href={changedLang}>🇬🇧</Link></>);
|
||||||
variant="ghost"
|
if (lang === 'en') return (<>
|
||||||
size="icon"
|
<Link suppressHydrationWarning className="pt-1" href={changedLang}>🇵🇱</Link></>);
|
||||||
className="md:ml-6 w-15"
|
|
||||||
>
|
|
||||||
<Link
|
|
||||||
href={changedLang}
|
|
||||||
className="flex space-x-2 items-center"
|
|
||||||
>
|
|
||||||
<LanguagesIcon className="h-5 w-5 mr-1" />
|
|
||||||
<span>{otherLang.toUpperCase()}</span>
|
|
||||||
</Link>
|
|
||||||
</Button>
|
|
||||||
</>);
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,3 @@
|
||||||
.z-max {
|
.z-max {
|
||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
}
|
}
|
||||||
|
|
||||||
section {
|
|
||||||
scroll-margin-top: calc(var(--spacing) * 16 + var(--spacing) * 4);
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,11 @@ import { Sections } from "@/i18n/translations";
|
||||||
import { useLayoutEffect, useRef } from "react";
|
import { useLayoutEffect, useRef } from "react";
|
||||||
|
|
||||||
export const linksOrder: Array<Sections> = [
|
export const linksOrder: Array<Sections> = [
|
||||||
|
"details",
|
||||||
|
"title",
|
||||||
"about",
|
"about",
|
||||||
"tickets",
|
"tickets",
|
||||||
"cfp",
|
"cfp",
|
||||||
"details",
|
|
||||||
"contact"
|
"contact"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ const pl = {
|
||||||
tickets: {
|
tickets: {
|
||||||
title: "Bilety",
|
title: "Bilety",
|
||||||
status: `Rusza sprzedaż pierwszej puli biletów na Cebula Camp 2025: Reaktywacja!
|
status: `Rusza sprzedaż pierwszej puli biletów na Cebula Camp 2025: Reaktywacja!
|
||||||
Od 20 kwietnia 2025 r. będzie można kupić bilet. Każdy z sześciu polskich Hackerspaceów ma voucher, który pozwala na zakup biletów. Skontaktuj się więc z najbliższym HS i zarezerwuj swój bilet jak najszybciej!
|
Od 20 kwietnia 2025 r. będzie można kupić bilet. Każdy z sześciu polskich Hackerspaceów ma voucher, który pozwala im kupić bilety. Skontaktuj się więc z najbliższym HS i zarezerwuj swój bilet jak najszybciej!
|
||||||
|
|
||||||
W miejscu, gdzie będzie nasz Camp, mamy do dyspozycji przestrzeń, którą wykorzystamy jako małe pole namiotowe. Jeżeli chcesz nocować w swoim namiocie, przy zakupie biletu dodaj „nocleg na polu namiotowym” jako dodatek do biletu. Nie pobieramy za to żadnych dodatkowych opłat, ale liczba miejsc jest ograniczona, a pula wspólna dla wszystkich.`,
|
W miejscu, gdzie będzie nasz Camp, mamy do dyspozycji przestrzeń, którą wykorzystamy jako małe pole namiotowe. Jeżeli chcesz nocować w swoim namiocie, przy zakupie biletu dodaj „nocleg na polu namiotowym” jako dodatek do biletu. Nie pobieramy za to żadnych dodatkowych opłat, ale liczba miejsc jest ograniczona, a pula wspólna dla wszystkich.`,
|
||||||
link: "Kup bilet tutaj",
|
link: "Kup bilet tutaj",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue