diff --git a/app/[locale]/_components/hero-promo-card.tsx b/app/[locale]/_components/hero-promo-card.tsx
new file mode 100644
index 0000000..0b16009
--- /dev/null
+++ b/app/[locale]/_components/hero-promo-card.tsx
@@ -0,0 +1,33 @@
+import Image from "next/image";
+import React from "react";
+
+import { BorderBeam } from "@/components/ui/border-beam";
+import { Link } from "@/navigation";
+import { useTranslations } from "next-intl";
+
+export const HeroPromoCard = () => {
+ const t = useTranslations("festival");
+
+ return (
+
+
+
+
+
+ Festival Chooselife 2024
+
+
{t("cardSubTitle")}
+
+
+ );
+};
diff --git a/app/[locale]/festival/_components/festival-tabs.tsx b/app/[locale]/festival/_components/festival-tabs.tsx
new file mode 100644
index 0000000..bfadde1
--- /dev/null
+++ b/app/[locale]/festival/_components/festival-tabs.tsx
@@ -0,0 +1,56 @@
+import { cookies } from "next/headers";
+import React from "react";
+
+import { getHighline } from "@/app/actions/getHighline";
+import { Ranking } from "@/components/Ranking";
+import { TabsContent } from "@/components/ui/tabs";
+import { useSupabaseServer } from "@/utils/supabase/server";
+
+import { Highline } from "../../_components/Highline";
+
+export const FestivalTabs = async () => {
+ const cookieStore = cookies();
+ const supabase = useSupabaseServer(cookieStore);
+
+ const { data: sectors } = await supabase
+ .from("sector")
+ .select("*, highline(id)");
+
+ const highline_ids = sectors?.flatMap((sector) =>
+ sector.highline.map((high) => high.id)
+ );
+
+ const { data: highlines } = await getHighline({
+ id: sectors?.flatMap((sector) => sector.highline.map((high) => high.id)),
+ });
+
+ return (
+ <>
+
+
+
+
+ {sectors?.map((sector) => (
+
+ {sector.name}
+
+ {sector.highline.map((high) => {
+ const highline = highlines?.find((h) => h.id === high.id);
+ return highline ? (
+
+ ) : null;
+ })}
+
+
+ ))}
+
+ >
+ );
+};
diff --git a/app/[locale]/festival/_components/timeline.tsx b/app/[locale]/festival/_components/timeline.tsx
new file mode 100644
index 0000000..c943f54
--- /dev/null
+++ b/app/[locale]/festival/_components/timeline.tsx
@@ -0,0 +1,118 @@
+import { ClockIcon } from "lucide-react";
+import React from "react";
+
+export const timeline = () => {};
+
+// import { AvatarImage, AvatarFallback, Avatar } from "@/components/ui/avatar"
+
+export const Timeline = () => {
+ return (
+
+
+
+
+
+
Ínicio de festival
+
+
+ 9:00 AM
+
+
+
+ Abertura oficila das vias de Highline
+
+
+
+
+
+
Oficina de resgate
+
+
+ 11:00 AM
+
+
+
+ Ministrada por ..., você vai aprender tudo sobre resgate
+
+
+ {/*
*/}
+
+
Pessoa XXX
+
+ Highliner
+
+
+
+
+
+
+
+
Panel Discussion
+
+
+ 2:00 PM
+
+
+
+ Join our panel of experts for an insightful discussion on the future
+ of the industry.
+
+
+ {/*
+
+ JS
+ */}
+
+
Jane Smith
+
+ Industry Analyst
+
+
+
+
+
+
+
+
Networking Reception
+
+
+ 5:00 PM
+
+
+
+ Join us for drinks and hors oeuvres to network with other attendees.
+
+
+ {/*
*/}
+
+
Globex Corporation
+
+ Gold Sponsor
+
+
+
+
+
+
+ );
+};
diff --git a/app/[locale]/festival/page.tsx b/app/[locale]/festival/page.tsx
new file mode 100644
index 0000000..8b3ace7
--- /dev/null
+++ b/app/[locale]/festival/page.tsx
@@ -0,0 +1,56 @@
+import Image from "next/image";
+import { useTranslations } from "next-intl";
+import { Suspense } from "react";
+
+import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
+
+import { FestivalTabs } from "./_components/festival-tabs";
+
+type Props = {
+ params: { locale: string; username: string };
+ searchParams: { [key: string]: string | undefined };
+};
+
+export default function Festival({
+ params: { username },
+ searchParams,
+}: Props) {
+ const t = useTranslations("festival");
+
+ return (
+
+
+
+
+
+
+
+ Festival Chooselife
+
+
+ {t("pageSubTitle")}
+
+
+
+
+ {/* Schedule */}
+ Ranking
+ Highlines
+
+ {/*
+ foo
+ */}
+ loading...}>
+
+
+
+
+
+
+ );
+}
diff --git a/app/[locale]/page.tsx b/app/[locale]/page.tsx
index fcb6f07..7948af2 100644
--- a/app/[locale]/page.tsx
+++ b/app/[locale]/page.tsx
@@ -9,6 +9,7 @@ import { getHighline } from "@/app/actions/getHighline";
import CreateHighline from "@/components/CreateHighline";
import MapToggle from "@/components/Map/MapToggle";
+import { HeroPromoCard } from "./_components/hero-promo-card";
import { HighlineList } from "./_components/HighlineList";
import Search from "./_components/search";
@@ -74,6 +75,7 @@ export default async function Home({
) : (
<>