diff --git a/app/dashboard/hackathon/intro/page.tsx b/app/dashboard/hackathon/intro/page.tsx new file mode 100644 index 0000000..9910877 --- /dev/null +++ b/app/dashboard/hackathon/intro/page.tsx @@ -0,0 +1,301 @@ +"use client"; + +import Image from "next/image"; +import { Calendar, MapPin, ChevronRight } from "lucide-react"; +import { Button } from "@/components/ui/button"; +import { Badge } from "@/components/ui/badge"; +import BannerCTA from "@/components/BannerCTA"; + +export default function SeminarPage() { + const agendaItems = [ + { + title: "9 April 2025", + rundown: [ + { + time: "7:00 AM - 7:30 PM", + title: "Opening & Introduction", + description: + "Welcome Participants, Introduce The Speakers, And Outline The Goals Of The Workshop.", + }, + { + time: "9:00 AM - 10:30 AM", + title: + "Workshop Session: A Dive Into Machine Learning And Sentiment Analysis", + description: + "Learn The Fundamentals Of Sentiment Analysis, From Setting Up The Environment To Preprocessing Text, Tokenizing, And Building A Classification Model. This Session Provides A Hands-On Introduction To Machine Learning Workflows For Analyzing Text Sentiment. ✓", + }, + { + time: "9:00 AM - 6:00 PM", + title: + "Workshop Session: A Dive Into Machine Learning And Sentiment Analysis", + description: + "Learn The Fundamentals Of Sentiment Analysis, From Setting Up The Environment To Preprocessing Text, Tokenizing, And Building A Classification Model. This Session Provides A Hands-On Introduction To Machine Learning Workflows For Analyzing Text Sentiment. ✓", + }, + { + time: "1:30 PM - 2:45 PM", + title: "Closing & Feedback", + description: + "Summarize Key Learnings, Share Resources For Further Learning, And Collect Participant Feedback.", + }, + ], + }, + { + title: "9 April 2025", + rundown: [ + { + time: "7:00 AM - 7:30 PM", + title: "Opening & Introduction", + description: + "Welcome Participants, Introduce The Speakers, And Outline The Goals Of The Workshop.", + }, + { + time: "9:00 AM - 10:30 AM", + title: + "Workshop Session: A Dive Into Machine Learning And Sentiment Analysis", + description: + "Learn The Fundamentals Of Sentiment Analysis, From Setting Up The Environment To Preprocessing Text, Tokenizing, And Building A Classification Model. This Session Provides A Hands-On Introduction To Machine Learning Workflows For Analyzing Text Sentiment. ✓", + }, + { + time: "9:00 AM - 6:00 PM", + title: + "Workshop Session: A Dive Into Machine Learning And Sentiment Analysis", + description: + "Learn The Fundamentals Of Sentiment Analysis, From Setting Up The Environment To Preprocessing Text, Tokenizing, And Building A Classification Model. This Session Provides A Hands-On Introduction To Machine Learning Workflows For Analyzing Text Sentiment. ✓", + }, + ], + }, + ]; + + const speakers = [ + { + name: "Matt Renner", + title: "President, Global Revenue", + company: "Google Cloud", + image: "/assets/dummy-circle.png", + }, + { + name: "Matt Renner", + title: "President, Global Revenue", + company: "Google Cloud", + image: "/assets/dummy-circle.png", + }, + { + name: "Matt Renner", + title: "President, Global Revenue", + company: "Google Cloud", + image: "/assets/dummy-circle.png", + }, + ]; + + const handleRegisterClick = () => { + // Add your registration logic here + console.log("Register button clicked"); + // You could redirect to registration page, open a modal, etc. + }; + + return ( +
+
+ {/* Header */} +
+
+

+ Seminar: Menyelami Pembelajaran Mesin dan Analisis Sentimen +

+
+ + February 27, 2021 09:00-13:00 CST +
+
+ + Ruang Auditorium D402 Kampus D +
+ +
+
+ Robot mascot +
+
+ +
+ {/* Key Themes */} +
+

+ Key Themes +

+
+ + AI + + + Cloud + + + Data AI + + + Gemini + + + Google Cloud Next + + + Machine Learning + + + Vertex AI + +
+
+ + {/* About this event */} +
+

+ About this event +

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et + massa mi. Aliquam in hendrerit urna. Pellentesque sit amet sapien + fringilla, mattis ligula consectetur, ultrices mauris. Maecenas + vitae mattis tellus. Nullam quis imperdiet augue. Vestibulum + auctor ornare leo, non suscipit magna interdum eu. Curabitur + pellentesque nibh nibh, at maximus ante fermentum sit amet. + Pellentesque commodo lacus at sodales sodales. Quisque sagittis + orci ut diam condimentum, vel euismod erat placerat. In iaculis + arcu erat, eget tempus orci facilisis id. +

+
+
+ + {/* Agenda */} +
+
+

+ Agenda +

+

+ A first look at what's coming. Find out when to pick up your + badge, attend sessions, join parties, and more. +

+
+ + {/* Map through agendaItems to create agenda cards */} + {agendaItems.map((agenda, agendaIndex) => ( +
+ {/* Gradient border using pseudo-element */} +
+ + {/* Content container with white background */} +
+

+ {agenda.title} +

+
+ + {/* Map through rundown items */} + {agenda.rundown.map((session, sessionIndex) => ( +
+
+ {session.time} +
+

+ {session.title} +

+

+ {session.description} +

+
+ ))} +
+
+ ))} +
+ + {/* GDC Speakers */} +
+

+ GDC speakers +

+
+ {speakers.map((speaker, i) => ( +
+
+ {`${speaker.name}`} +
+

{speaker.name}

+

+ {speaker.title} +

+

+ {speaker.company} +

+
+ ))} +
+
+ + {/* Replace the banner div with the BannerCTA component */} + +
+
+ ); +} diff --git a/components/BannerCTA.tsx b/components/BannerCTA.tsx new file mode 100644 index 0000000..89c0fb5 --- /dev/null +++ b/components/BannerCTA.tsx @@ -0,0 +1,51 @@ +"use client"; + +import Image from "next/image"; +import { ChevronRight } from "lucide-react"; +import { Button } from "@/components/ui/button"; + +interface BannerCTAProps { + title: string; + description: string; + buttonText: string; + imageSrc: string; + imageAlt: string; + onButtonClick: () => void; +} + +export default function BannerCTA({ + title, + description, + buttonText = "Register now", + imageSrc, + imageAlt = "Code Week", + onButtonClick, +}: BannerCTAProps) { + return ( +
+
+

+ {title} +

+

+ {description} +

+ +
+
+ {imageAlt} +
+
+ ); +} \ No newline at end of file diff --git a/components/app-sidebar.tsx b/components/app-sidebar.tsx index c77d09a..7dd7774 100644 --- a/components/app-sidebar.tsx +++ b/components/app-sidebar.tsx @@ -51,11 +51,15 @@ const data = { ], navMain: [ { - title: "Hackaton", + title: "Hackathon", url: "#", icon: SquareTerminal, isActive: true, items: [ + { + title: "Intro", + url: "/dashboard/hackathon/intro", + }, { title: "Tahap 1 Proposal", url: "#", diff --git a/components/ui/button.tsx b/components/ui/button.tsx index a12e1db..171c7f8 100644 --- a/components/ui/button.tsx +++ b/components/ui/button.tsx @@ -5,12 +5,12 @@ import { cva, type VariantProps } from "class-variance-authority"; import { cn } from "@/lib/utils"; const buttonVariants = cva( - "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xl text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", { variants: { variant: { default: - "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90", + "bg-[#4084f3] hover:bg-[#1a73e8] text-white", destructive: "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40", outline: diff --git a/public/assets/dummy-circle.png b/public/assets/dummy-circle.png new file mode 100644 index 0000000..21a6c49 Binary files /dev/null and b/public/assets/dummy-circle.png differ