diff --git a/public/Twitch_logo.svg b/public/Twitch_logo.svg new file mode 100644 index 0000000..0553bcc --- /dev/null +++ b/public/Twitch_logo.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/public/simnord1.png b/public/simnord1.png new file mode 100644 index 0000000..28e82ac Binary files /dev/null and b/public/simnord1.png differ diff --git a/src/components/BentoDemo.tsx b/src/components/BentoDemo.tsx deleted file mode 100644 index 6d3808f..0000000 --- a/src/components/BentoDemo.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { - BellIcon, - CalendarIcon, - FileTextIcon, - GlobeIcon, - InputIcon, -} from "@radix-ui/react-icons"; - -import { BentoCard, BentoGrid } from "@/components/magicui/bento-grid"; - -const features = [ - { - Icon: FileTextIcon, - name: "Save your files", - description: "We automatically save your files as you type.", - href: "/", - cta: "Learn more", - background: , - className: "lg:row-start-1 lg:row-end-4 lg:col-start-2 lg:col-end-3", - }, - { - Icon: InputIcon, - name: "Full text search", - description: "Search through all your files in one place.", - href: "/", - cta: "Learn more", - background: , - className: "lg:col-start-1 lg:col-end-2 lg:row-start-1 lg:row-end-3", - }, - { - Icon: GlobeIcon, - name: "Multilingual", - description: "Supports 100+ languages and counting.", - href: "/", - cta: "Learn more", - background: , - className: "lg:col-start-1 lg:col-end-2 lg:row-start-3 lg:row-end-4", - }, - { - Icon: CalendarIcon, - name: "Calendar", - description: "Use the calendar to filter your files by date.", - href: "/", - cta: "Learn more", - background: , - className: "lg:col-start-3 lg:col-end-3 lg:row-start-1 lg:row-end-2", - }, - { - Icon: BellIcon, - name: "Notifications", - description: - "Get notified when someone shares a file or mentions you in a comment.", - href: "/", - cta: "Learn more", - background: , - className: "lg:col-start-3 lg:col-end-3 lg:row-start-2 lg:row-end-4", - }, -]; - -export async function BentoDemo() { - return ( - - {features.map((feature) => ( - - ))} - - ); -} diff --git a/src/components/DotPatternDemo.tsx b/src/components/DotPatternDemo.tsx deleted file mode 100644 index d5888de..0000000 --- a/src/components/DotPatternDemo.tsx +++ /dev/null @@ -1,26 +0,0 @@ -"use client"; - -import { cn } from "@/lib/utils"; -import DotPattern from "@/components/magicui/dot-pattern"; - -const DotPatternDemo = () => { - return ( -
-

- Dot Pattern -

- -
- ); -}; - -export { DotPatternDemo }; diff --git a/src/components/Flight.tsx b/src/components/Flight.tsx deleted file mode 100644 index c6f24ed..0000000 --- a/src/components/Flight.tsx +++ /dev/null @@ -1,30 +0,0 @@ -interface FlightProps { - flight_number: string, - departure: string, - arrival: string, - departure_time: string, - arrival_time: string, - departure_short: string, - arrival_short: string, - time_hours: number, - time_minutes: number, -} - -const Flight = (props: FlightProps) => { - return ( -
-
-
{props.time_hours} hour
{props.time_minutes} Miniutes
-
{props.flight_number}
-
{props.departure}
-
{props.departure_short}: {props.departure_time}
-
-
Departs On time
-
{props.arrival}
-
{props.arrival_short}: {props.arrival_time}
-
-
- ); -}; - -export { Flight }; diff --git a/src/components/GlobeDemo.tsx b/src/components/GlobeDemo.tsx deleted file mode 100644 index 4c80ae3..0000000 --- a/src/components/GlobeDemo.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import Globe from "@/components/magicui/globe"; - -export function GlobeDemo() { - return ( -
- -
-
- ); -} \ No newline at end of file diff --git a/src/components/magicui/animated-beam.tsx b/src/components/magicui/animated-beam.tsx deleted file mode 100644 index 0f58d93..0000000 --- a/src/components/magicui/animated-beam.tsx +++ /dev/null @@ -1,188 +0,0 @@ -"use client"; - -import { type RefObject, useEffect, useId, useState } from "react"; -import { motion } from "framer-motion"; - -import { cn } from "@/lib/utils"; - -export interface AnimatedBeamProps { - className?: string; - containerRef: RefObject; // Container ref - fromRef: RefObject; - toRef: RefObject; - curvature?: number; - reverse?: boolean; - pathColor?: string; - pathWidth?: number; - pathOpacity?: number; - gradientStartColor?: string; - gradientStopColor?: string; - delay?: number; - duration?: number; - startXOffset?: number; - startYOffset?: number; - endXOffset?: number; - endYOffset?: number; -} - -export const AnimatedBeam: React.FC = ({ - className, - containerRef, - fromRef, - toRef, - curvature = 0, - reverse = false, // Include the reverse prop - duration = Math.random() * 3 + 4, - delay = 0, - pathColor = "gray", - pathWidth = 2, - pathOpacity = 0.2, - gradientStartColor = "#ffaa40", - gradientStopColor = "#9c40ff", - startXOffset = 0, - startYOffset = 0, - endXOffset = 0, - endYOffset = 0, -}) => { - const id = useId(); - const [pathD, setPathD] = useState(""); - const [svgDimensions, setSvgDimensions] = useState({ width: 0, height: 0 }); - - // Calculate the gradient coordinates based on the reverse prop - const gradientCoordinates = reverse - ? { - x1: ["90%", "-10%"], - x2: ["100%", "0%"], - y1: ["0%", "0%"], - y2: ["0%", "0%"], - } - : { - x1: ["10%", "110%"], - x2: ["0%", "100%"], - y1: ["0%", "0%"], - y2: ["0%", "0%"], - }; - - useEffect(() => { - const updatePath = () => { - if (containerRef.current && fromRef.current && toRef.current) { - const containerRect = containerRef.current.getBoundingClientRect(); - const rectA = fromRef.current.getBoundingClientRect(); - const rectB = toRef.current.getBoundingClientRect(); - - const svgWidth = containerRect.width; - const svgHeight = containerRect.height; - setSvgDimensions({ width: svgWidth, height: svgHeight }); - - const startX = - rectA.left - containerRect.left + rectA.width / 2 + startXOffset; - const startY = - rectA.top - containerRect.top + rectA.height / 2 + startYOffset; - const endX = - rectB.left - containerRect.left + rectB.width / 2 + endXOffset; - const endY = - rectB.top - containerRect.top + rectB.height / 2 + endYOffset; - - const controlY = startY - curvature; - const d = `M ${startX},${startY} Q ${ - (startX + endX) / 2 - },${controlY} ${endX},${endY}`; - setPathD(d); - } - }; - - // Initialize ResizeObserver - const resizeObserver = new ResizeObserver((entries) => { - // For all entries, recalculate the path - for (let entry of entries) { - updatePath(); - } - }); - - // Observe the container element - if (containerRef.current) { - resizeObserver.observe(containerRef.current); - } - - // Call the updatePath initially to set the initial path - updatePath(); - - // Clean up the observer on component unmount - return () => { - resizeObserver.disconnect(); - }; - }, [ - containerRef, - fromRef, - toRef, - curvature, - startXOffset, - startYOffset, - endXOffset, - endYOffset, - ]); - - return ( - - - - - - - - - - - - - ); -}; diff --git a/src/components/magicui/bento-grid.tsx b/src/components/magicui/bento-grid.tsx deleted file mode 100644 index 342a957..0000000 --- a/src/components/magicui/bento-grid.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { ReactNode } from "react"; -import { ArrowRightIcon } from "@radix-ui/react-icons"; - -import { cn } from "@/lib/utils"; -import { Button } from "@/components/ui/button"; - -const BentoGrid = ({ - children, - className, -}: { - children: ReactNode; - className?: string; -}) => { - return ( -
- {children} -
- ); -}; - -const BentoCard = ({ - name, - className, - background, - Icon, - description, - href, - cta, -}: { - name: string; - className: string; - background: ReactNode; - Icon: any; - description: string; - href: string; - cta: string; -}) => ( -
-
{background}
-
- -

- {name} -

-

{description}

-
- - -
-
-); - -export { BentoCard, BentoGrid }; diff --git a/src/components/magicui/blur-in.tsx b/src/components/magicui/blur-in.tsx deleted file mode 100644 index 2a2dd0a..0000000 --- a/src/components/magicui/blur-in.tsx +++ /dev/null @@ -1,39 +0,0 @@ -"use client"; - -import { motion } from "framer-motion"; - -import { cn } from "@/lib/utils"; - -interface BlurIntProps { - word: string; - className?: string; - variant?: { - hidden: { filter: string; opacity: number }; - visible: { filter: string; opacity: number }; - }; - duration?: number; -} -const BlurIn = ({ word, className, variant, duration = 1 }: BlurIntProps) => { - const defaultVariants = { - hidden: { filter: "blur(10px)", opacity: 0 }, - visible: { filter: "blur(0px)", opacity: 1 }, - }; - const combinedVariants = variant || defaultVariants; - - return ( - - {word} - - ); -}; - -export default BlurIn; diff --git a/src/components/magicui/dot-pattern.tsx b/src/components/magicui/dot-pattern.tsx deleted file mode 100644 index ea42a5e..0000000 --- a/src/components/magicui/dot-pattern.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { useId } from "react"; - -import { cn } from "@/lib/utils"; - -interface DotPatternProps { - width?: any; - height?: any; - x?: any; - y?: any; - cx?: any; - cy?: any; - cr?: any; - className?: string; - [key: string]: any; -} -export function DotPattern({ - width = 16, - height = 16, - x = 0, - y = 0, - cx = 1, - cy = 1, - cr = 1, - className, - ...props -}: DotPatternProps) { - const id = useId(); - - return ( - - ); -} - -export default DotPattern; diff --git a/src/components/magicui/globe.tsx b/src/components/magicui/globe.tsx deleted file mode 100644 index dc6b60a..0000000 --- a/src/components/magicui/globe.tsx +++ /dev/null @@ -1,129 +0,0 @@ -"use client"; - -import { useCallback, useEffect, useRef } from "react"; -import createGlobe, { type COBEOptions } from "cobe"; -import { useSpring } from "react-spring"; - -import { cn } from "@/lib/utils"; - -const GLOBE_CONFIG: COBEOptions = { - width: 1200, - height: 1200, - onRender: () => {}, - devicePixelRatio: 2, - phi: 0, - theta: 0.3, - dark: 0, - diffuse: 0.4, - mapSamples: 16000, - mapBrightness: 1.2, - baseColor: [1, 1, 1], - markerColor: [251 / 255, 100 / 255, 21 / 255], - glowColor: [1, 1, 1], - markers: [ - { location: [14.5995, 120.9842], size: 0.03 }, - { location: [19.076, 72.8777], size: 0.1 }, - { location: [23.8103, 90.4125], size: 0.05 }, - { location: [30.0444, 31.2357], size: 0.07 }, - { location: [39.9042, 116.4074], size: 0.08 }, - { location: [-23.5505, -46.6333], size: 0.1 }, - { location: [19.4326, -99.1332], size: 0.1 }, - { location: [40.7128, -74.006], size: 0.1 }, - { location: [34.6937, 135.5022], size: 0.05 }, - { location: [41.0082, 28.9784], size: 0.06 }, - ], -}; - -export default function Globe({ - className, - config = GLOBE_CONFIG, -}: { - className?: string; - config?: COBEOptions; -}) { - let phi = 0; - let width = 0; - const canvasRef = useRef(null); - const pointerInteracting = useRef(null); - const pointerInteractionMovement = useRef(0); - const [{ r }, api] = useSpring(() => ({ - r: 0, - config: { - mass: 1, - tension: 280, - friction: 40, - precision: 0.001, - }, - })); - - const updatePointerInteraction = (value: any) => { - pointerInteracting.current = value; - canvasRef.current!.style.cursor = value ? "grabbing" : "grab"; - }; - - const updateMovement = (clientX: any) => { - if (pointerInteracting.current !== null) { - const delta = clientX - pointerInteracting.current; - pointerInteractionMovement.current = delta; - api.start({ r: delta / 200 }); - } - }; - - const onRender = useCallback( - (state: Record) => { - if (!pointerInteracting.current) phi += 0.005; - state.phi = phi + r.get(); - state.width = width * 2; - state.height = width * 2; - }, - [pointerInteracting, phi, r], - ); - - const onResize = () => { - if (canvasRef.current) { - width = canvasRef.current.offsetWidth; - } - }; - - useEffect(() => { - window.addEventListener("resize", onResize); - onResize(); - - const globe = createGlobe(canvasRef.current!, { - ...config, - width: width * 2, - height: width * 2, - onRender, - }); - - setTimeout(() => (canvasRef.current!.style.opacity = "1")); - return () => globe.destroy(); - }, []); - - return ( -
- - updatePointerInteraction( - e.clientX - pointerInteractionMovement.current, - ) - } - onPointerUp={() => updatePointerInteraction(null)} - onPointerOut={() => updatePointerInteraction(null)} - onMouseMove={(e) => updateMovement(e.clientX)} - onTouchMove={(e) => - e.touches[0] && updateMovement(e.touches[0].clientX) - } - /> -
- ); -} diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx deleted file mode 100644 index 0ba4277..0000000 --- a/src/components/ui/button.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import * as React from "react" -import { Slot } from "@radix-ui/react-slot" -import { cva, type VariantProps } from "class-variance-authority" - -import { cn } from "@/lib/utils" - -const buttonVariants = cva( - "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", - { - variants: { - variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90", - destructive: - "bg-destructive text-destructive-foreground hover:bg-destructive/90", - outline: - "border border-input bg-background hover:bg-accent hover:text-accent-foreground", - secondary: - "bg-secondary text-secondary-foreground hover:bg-secondary/80", - ghost: "hover:bg-accent hover:text-accent-foreground", - link: "text-primary underline-offset-4 hover:underline", - }, - size: { - default: "h-10 px-4 py-2", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - icon: "h-10 w-10", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, - } -) - -export interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { - asChild?: boolean -} - -const Button = React.forwardRef( - ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : "button" - return ( - - ) - } -) -Button.displayName = "Button" - -export { Button, buttonVariants } diff --git a/src/layout/index.astro b/src/layout/index.astro deleted file mode 100644 index f4fde1d..0000000 --- a/src/layout/index.astro +++ /dev/null @@ -1,21 +0,0 @@ ---- -import { ViewTransitions } from "astro:transitions"; -import '@/globals.css' ---- - - - - - - - - - - - Copenhagen Live - - - - - - diff --git a/src/lib/utils.ts b/src/lib/utils.ts deleted file mode 100644 index d084cca..0000000 --- a/src/lib/utils.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { type ClassValue, clsx } from "clsx" -import { twMerge } from "tailwind-merge" - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)) -} diff --git a/src/pages/index.astro b/src/pages/index.astro index b076919..7efbdcc 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,192 +1,73 @@ --- -import Layout from "../layout/index.astro"; -import { Flight } from "../components/Flight"; +import { ViewTransitions } from "astro:transitions"; +import '../globals.css' --- - - - -
- -