diff --git a/app/creator/(home)/page.tsx b/app/creator/(home)/page.tsx
index 2a183f6..e0856a0 100644
--- a/app/creator/(home)/page.tsx
+++ b/app/creator/(home)/page.tsx
@@ -1,7 +1,17 @@
-export default function CreatorPage() {
- return (
-
-
Creator
-
- )
-}
\ No newline at end of file
+import { Home_Banner } from "@/components/Home_Banner";
+import Recent_Creation from "@/components/Recent_Creation";
+
+
+const CreatorPage: React.FC = () => {
+ return (
+
+
+
+
+ );
+};
+
+
+
+
+export default CreatorPage;
diff --git a/app/creator/reader/page.tsx b/app/creator/reader/page.tsx
new file mode 100644
index 0000000..89cc3de
--- /dev/null
+++ b/app/creator/reader/page.tsx
@@ -0,0 +1,186 @@
+"use client"
+
+import { Setting2 } from 'iconsax-react';
+import Image from 'next/image';
+import React, { useState, useEffect, useRef } from 'react';
+import Link from 'next/link';
+import HoverCards from '@/components/cards/HoverCards';
+
+interface Page {
+ id: number;
+ content: React.ReactNode;
+ videoSrc: string;
+}
+
+export default function Reader() {
+ const [currentPageIndex, setCurrentPageIndex] = useState(0);
+ const [transitioning, setTransitioning] = useState(false);
+ const videoRefs = useRef<(HTMLVideoElement | null)[]>([]);
+
+ // Content structured to match your design
+ const pages: Page[] = [
+ {
+ id: 1,
+ videoSrc: "/videos/background1.mp4",
+ content: (
+ <>
+ BRUTAL
+
+
Through the rain, flickering neon lights spell out of and illuminate an entrance to nightclub.
+
A stunning light show cascades across a dance floor crowded by partiers and adorned by dozens of video monitors.
+
WADE HARPER, an anxious businessman dressed in a black suit, follows two burly bouncers up a flight of stairs toward the at the back of the warehouse.
+
+ >
+ )
+ },
+ {
+ id: 2,
+ videoSrc: "/videos/background2.mp4",
+ content: (
+ <>
+ BRUTAL
+
+
"Wade Harper! What is up, old friend! It's been too long, man!" exclaims HANDSOME TWIN #1.
+
HANDSOME TWIN #2, more anxious and pushy, quickly interjects, "So do you have it for us?"
+
Wade reaches into his breast pocket.
+
"Yes, I do."
+
Wade considers the in his hand and fiddles with the device. The twins smile widely with delight.
+
+ >
+ )
+ },
+ {
+ id: 3,
+ videoSrc: "/videos/background3.mp4",
+ content: (
+ <>
+ BRUTAL
+
+
Man, yes! Didn't I tell you not to question this man! I knew he was going to come through for us!" Handsome Twin #1 gloats.
+
Handsome Twin #2 sighs in satisfaction. " " he says, his tense demeanor turning to relief.
+
Wade hands the device to Handsome Twin #2.
+
"You will find all of the credentials you need on the drive. The shipment will arrive at the tomorrow night," Wade explains.
+
+ >
+ )
+ }
+ ];
+
+ // Add this function to validate video sources
+ const isValidVideoSrc = (src: string): boolean => {
+ return Boolean(src && src.length > 0);
+ };
+
+ useEffect(() => {
+ // Start playing the current video when the page changes
+ if (videoRefs.current[currentPageIndex]) {
+ videoRefs.current.forEach((video, index) => {
+ if (index === currentPageIndex && video) {
+ video.currentTime = 0;
+ video.play().catch(err => console.error("Error playing video:", err));
+ } else if (video) {
+ video.pause();
+ }
+ });
+ }
+ }, [currentPageIndex]);
+
+ const handleNextPage = () => {
+ if (transitioning) return;
+
+ setTransitioning(true);
+
+ if (currentPageIndex < pages.length - 1) {
+ setCurrentPageIndex(prev => prev + 1);
+ } else {
+ setCurrentPageIndex(0);
+ }
+
+ setTimeout(() => {
+ setTransitioning(false);
+ }, 1000);
+ };
+
+ return (
+
+ {/* NavBar */}
+
+ {/* Logo */}
+
+
+
+ Wodey
+
+
+
+ {/* Brutal Logo - Center */}
+
+
+
+
+ {/* Settings */}
+
+
+
+ {/* Video Sections */}
+
+ {pages.map((page, index) => (
+
+ {/* Background Video */}
+
+
+ {/* Dark Overlay */}
+
+
+ {/* Content */}
+
+
+ ))}
+
+
+ {/* Navigation Button - Down Arrow */}
+
+
+ );
+}
diff --git a/app/globals.css b/app/globals.css
index 7a19fbc..da3eaa3 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -123,6 +123,172 @@
}
+.hero_img {
+ background-color: #010313D9;
+ background-image: url("/images/89f1cacd4041e59eb162ffcb0f8080dc179fe415.png");
+ background-repeat: no-repeat;
+ background-size: cover;
+ background-position: center center;
+ background-blend-mode: multiply;
+ height: 170px;
+ width: 1045px;
+ border-radius: 10px;
+ padding: 8px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding-left: 40px;
+ padding-right: 40px;
+}
+
+.hero_text {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ color: #ffffff;
+ width: 476px;
+ text-align: left;
+}
+
+.hero_text h3 {
+ font-size: 20px;
+ font-weight: 700;
+ line-height: 30px;
+ font-family: sans-serif;
+ margin: 0;
+}
+
+.hero_text p {
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 21px;
+ font-family: Arial, Helvetica, sans-serif;
+}
+
+.hero_img {
+ background-color: #010313D9;
+ background-image: url("/images/89f1cacd4041e59eb162ffcb0f8080dc179fe415.png");
+ background-repeat: no-repeat;
+ background-size: cover;
+ background-position: center center;
+ background-blend-mode: multiply;
+ height: 170px;
+ width: 100%;
+ border-radius: 10px;
+ padding: 8px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding-left: 40px;
+ padding-right: 40px;
+}
+
+.hero_text {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ color: #ffffff;
+ width: 476px;
+ text-align: left;
+}
+
+.hero_text h3 {
+ font-size: 20px;
+ font-weight: 700;
+ line-height: 30px;
+ font-family: sans-serif;
+ margin: 0;
+}
+
+.hero_text p {
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 21px;
+ font-family: Arial, Helvetica, sans-serif;
+ margin: 0;
+}
+
+.hero_text button {
+ background-color: #ffffff;
+ color: #010313;
+ border: none;
+ border-radius: 5px;
+ width: 146.04px;
+ padding: 5px 10px;
+ cursor: pointer;
+ font-size: 14px;
+ font-weight: bold;
+ text-align: center;
+}
+
+.hero_cards {
+ display: flex;
+ gap: 20px;
+}
+
+.card_1 {
+ background-image: url("/images/37934e37222a44601017b84963a414627d8e095f.png");
+ background-size: cover;
+ background-position: center center;
+ width: 91px;
+ height: 130px;
+ border-radius: 2px;
+}
+
+.card_2 {
+ background-image: url("/images/230f1945d640ae4c0325f23dcb3365b59ae08277.png");
+ background-size: cover;
+ background-position: center center;
+ width: 91px;
+ height: 130px;
+ border-radius: 2px;
+}
+
+.card_3 {
+ background-image: url("/images/baca21cebac9b0ae0463e371575f760ea5e79016.png");
+ background-size: cover;
+ background-position: center center;
+ width: 91px;
+ height: 130px;
+ border-radius: 2px;
+}
+
+.recent_container {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ height: 237px;
+ margin-top: 30px;
+}
+
+.recent_title {
+ display: flex;
+ width: 100%;
+ justify-content: space-between;
+ align-items: center;
+}
+
+.recent_icon {
+ cursor: pointer;
+ border: 1px solid #868585;
+ padding: 5px;
+ border-radius: 5px;
+ font-size: 30px;
+}
+
+.recent_card {
+ width: 100%;
+ height: 150px;
+ background-color: #ffffff;
+ border-radius: 10px;
+}
+.card_img {
+ width: 145px;
+ height: 110px;
+ border-radius: 5px;
+}
+
+
/* custom css */
.no-scrollbar::-webkit-scrollbar {
diff --git a/app/marketplace/advertizers/page.tsx b/app/marketplace/advertizers/page.tsx
new file mode 100644
index 0000000..31d331a
--- /dev/null
+++ b/app/marketplace/advertizers/page.tsx
@@ -0,0 +1,87 @@
+"use client";
+import Image from "next/image";
+import React, { useState } from "react";
+
+const categories = [
+ "All advertising",
+ "Commissioned",
+ "Discount Ads",
+ "Brands Ads",
+ "Ebooks",
+ "Author ads",
+ "Artist Ads",
+ "Last Month ads",
+ "Upcoming ads",
+];
+
+const images = [
+ "/images/Airbnb_1.png",
+ "/images/Airbnb_2.png",
+ "/images/Airbnb_3.png",
+ "/images/Amazon_AWS.png",
+ "/images/Amazon_echo.png",
+ "/images/Element.png",
+ "/images/Huawei.png",
+ "/images/Netflix.png",
+ "/images/Qonto.png",
+ "/images/Samsung.png",
+];
+
+const Page: React.FC = () => {
+ const [selectedCategory, setSelectedCategory] = useState(
+ categories[0]
+ );
+ const handleCategoryClick = (category: string) => {
+ setSelectedCategory(category);
+ };
+ return (
+
+
+
+
+
+
+ {categories.map((category) => (
+
+ ))}
+
+
+
+ {images.map((image, index) => (
+
+
+
+
+ ))}
+
+
+ );
+};
+
+export default Page;
diff --git a/components/Home_Banner.tsx b/components/Home_Banner.tsx
new file mode 100644
index 0000000..ed7c7a3
--- /dev/null
+++ b/components/Home_Banner.tsx
@@ -0,0 +1,21 @@
+import React from "react";
+
+export const Home_Banner: React.FC = () => {
+ return (
+
+
+
Bring Your Story to Life
+
+ Start creating your own ebook today — share your voice, inspire
+ readers, and publish to the world in just a few clicks.
+
+
+
+
+
+ );
+};
diff --git a/components/Recent_Card.tsx b/components/Recent_Card.tsx
new file mode 100644
index 0000000..97e58d9
--- /dev/null
+++ b/components/Recent_Card.tsx
@@ -0,0 +1,31 @@
+import Image from "next/image";
+import React from "react";
+
+interface RecentCardProps {
+ image: string;
+ title: string;
+ tag: string;
+ description: string;
+}
+
+const Recent_Card: React.FC = ({ image, title, tag, description }) => {
+ return (
+
+
+
+
+
{title}
+
+ {tag} {description}
+
+
+ );
+};
+
+export default Recent_Card;
diff --git a/components/Recent_Creation.tsx b/components/Recent_Creation.tsx
new file mode 100644
index 0000000..0fe942c
--- /dev/null
+++ b/components/Recent_Creation.tsx
@@ -0,0 +1,67 @@
+import Image from "next/image";
+import React from "react";
+import { FaSlidersH } from "react-icons/fa";
+import Recent_Card from "./Recent_Card";
+import {
+ ContextMenu,
+ ContextMenuContent,
+ ContextMenuItem,
+ ContextMenuTrigger,
+} from "@/components/ui/context-menu"
+import Link from "next/link";
+
+
+
+const Recent_Creation: React.FC = () => {
+ return (
+
+
+
Recent creations
+
+
+
+
+
+
+
+
+ View as Reader
+ Continue editing
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Recent_Creation;
diff --git a/components/cards/HoverCards.tsx b/components/cards/HoverCards.tsx
new file mode 100644
index 0000000..8e96747
--- /dev/null
+++ b/components/cards/HoverCards.tsx
@@ -0,0 +1,61 @@
+'use client'
+
+import React from 'react'
+import Image from 'next/image'
+import Link from 'next/link'
+import {
+ HoverCard,
+ HoverCardContent,
+ HoverCardTrigger,
+} from "@/components/ui/hover-card"
+
+export interface HoverCardsProps {
+ triggerText: string
+ videourl: string
+ description: string
+ linkText?: string
+ link?: string
+}
+
+export default function HoverCards({
+ triggerText,
+ videourl,
+ description,
+ link = '#',
+ linkText = 'Purchase & Read More'
+}: HoverCardsProps) {
+ return (
+
+
+ {triggerText}
+
+
+
+
+
+
+
+
+
+
+ {description}
+
+
+
+
+ {linkText}
+
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/components/ui/context-menu.tsx b/components/ui/context-menu.tsx
new file mode 100644
index 0000000..e29ad05
--- /dev/null
+++ b/components/ui/context-menu.tsx
@@ -0,0 +1,252 @@
+"use client"
+
+import * as React from "react"
+import * as ContextMenuPrimitive from "@radix-ui/react-context-menu"
+import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
+
+import { cn } from "@/lib/utils"
+
+function ContextMenu({
+ ...props
+}: React.ComponentProps) {
+ return
+}
+
+function ContextMenuTrigger({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function ContextMenuGroup({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function ContextMenuPortal({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function ContextMenuSub({
+ ...props
+}: React.ComponentProps) {
+ return
+}
+
+function ContextMenuRadioGroup({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function ContextMenuSubTrigger({
+ className,
+ inset,
+ children,
+ ...props
+}: React.ComponentProps & {
+ inset?: boolean
+}) {
+ return (
+
+ {children}
+
+
+ )
+}
+
+function ContextMenuSubContent({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function ContextMenuContent({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+
+
+ )
+}
+
+function ContextMenuItem({
+ className,
+ inset,
+ variant = "default",
+ ...props
+}: React.ComponentProps & {
+ inset?: boolean
+ variant?: "default" | "destructive"
+}) {
+ return (
+
+ )
+}
+
+function ContextMenuCheckboxItem({
+ className,
+ children,
+ checked,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+
+
+
+
+
+ {children}
+
+ )
+}
+
+function ContextMenuRadioItem({
+ className,
+ children,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+
+
+
+
+
+ {children}
+
+ )
+}
+
+function ContextMenuLabel({
+ className,
+ inset,
+ ...props
+}: React.ComponentProps & {
+ inset?: boolean
+}) {
+ return (
+
+ )
+}
+
+function ContextMenuSeparator({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function ContextMenuShortcut({
+ className,
+ ...props
+}: React.ComponentProps<"span">) {
+ return (
+
+ )
+}
+
+export {
+ ContextMenu,
+ ContextMenuTrigger,
+ ContextMenuContent,
+ ContextMenuItem,
+ ContextMenuCheckboxItem,
+ ContextMenuRadioItem,
+ ContextMenuLabel,
+ ContextMenuSeparator,
+ ContextMenuShortcut,
+ ContextMenuGroup,
+ ContextMenuPortal,
+ ContextMenuSub,
+ ContextMenuSubContent,
+ ContextMenuSubTrigger,
+ ContextMenuRadioGroup,
+}
diff --git a/components/ui/hover-card.tsx b/components/ui/hover-card.tsx
new file mode 100644
index 0000000..e754186
--- /dev/null
+++ b/components/ui/hover-card.tsx
@@ -0,0 +1,44 @@
+"use client"
+
+import * as React from "react"
+import * as HoverCardPrimitive from "@radix-ui/react-hover-card"
+
+import { cn } from "@/lib/utils"
+
+function HoverCard({
+ ...props
+}: React.ComponentProps) {
+ return
+}
+
+function HoverCardTrigger({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function HoverCardContent({
+ className,
+ align = "center",
+ sideOffset = 4,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+
+
+ )
+}
+
+export { HoverCard, HoverCardTrigger, HoverCardContent }
diff --git a/package.json b/package.json
index 372180c..b06ecc8 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,8 @@
},
"dependencies": {
"@radix-ui/react-avatar": "^1.1.7",
+ "@radix-ui/react-context-menu": "^2.2.12",
+ "@radix-ui/react-hover-card": "^1.1.11",
"@radix-ui/react-checkbox": "^1.2.3",
"@radix-ui/react-slot": "^1.2.0",
"@radix-ui/react-tabs": "^1.1.9",
@@ -20,6 +22,7 @@
"next": "15.3.1",
"react": "^19.0.0",
"react-dom": "^19.0.0",
+ "react-icons": "^5.5.0",
"tailwind-merge": "^3.2.0"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2dbf547..83ab977 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -11,6 +11,12 @@ importers:
'@radix-ui/react-avatar':
specifier: ^1.1.7
version: 1.1.7(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-context-menu':
+ specifier: ^2.2.12
+ version: 2.2.12(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-hover-card':
+ specifier: ^1.1.11
+ version: 1.1.11(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@radix-ui/react-checkbox':
specifier: ^1.2.3
version: 1.2.3(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -41,6 +47,9 @@ importers:
react-dom:
specifier: ^19.0.0
version: 19.1.0(react@19.1.0)
+ react-icons:
+ specifier: ^5.5.0
+ version: 5.5.0(react@19.1.0)
tailwind-merge:
specifier: ^3.2.0
version: 3.2.0
@@ -129,6 +138,21 @@ packages:
resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@floating-ui/core@1.6.9':
+ resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==}
+
+ '@floating-ui/dom@1.6.13':
+ resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==}
+
+ '@floating-ui/react-dom@2.1.2':
+ resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+
+ '@floating-ui/utils@0.2.9':
+ resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
+
'@humanfs/core@0.19.1':
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
engines: {node: '>=18.18.0'}
@@ -335,6 +359,19 @@ packages:
'@radix-ui/primitive@1.1.2':
resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==}
+ '@radix-ui/react-arrow@1.1.4':
+ resolution: {integrity: sha512-qz+fxrqgNxG0dYew5l7qR3c7wdgRu1XVUHGnGYX7rg5HM4p9SWaRmJwfgR3J0SgyUKayLmzQIun+N6rWRgiRKw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-avatar@1.1.7':
resolution: {integrity: sha512-V7ODUt4mUoJTe3VUxZw6nfURxaPALVqmDQh501YmaQsk3D8AZQrOPRnfKn4H7JGDLBc0KqLhT94H79nV88ppNg==}
peerDependencies:
@@ -383,6 +420,19 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-context-menu@2.2.12':
+ resolution: {integrity: sha512-5UFKuTMX8F2/KjHvyqu9IYT8bEtDSCJwwIx1PghBo4jh9S6jJVsceq9xIjqsOVcxsynGwV5eaqPE3n/Cu+DrSA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-context@1.1.2':
resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==}
peerDependencies:
@@ -401,6 +451,54 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-dismissable-layer@1.1.7':
+ resolution: {integrity: sha512-j5+WBUdhccJsmH5/H0K6RncjDtoALSEr6jbkaZu+bjw6hOPOhHycr6vEUujl+HBK8kjUfWcoCJXxP6e4lUlMZw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-focus-guards@1.1.2':
+ resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/react-focus-scope@1.1.4':
+ resolution: {integrity: sha512-r2annK27lIW5w9Ho5NyQgqs0MmgZSTIKXWpVCJaLC1q2kZrZkcqnmHkCHMEmv8XLvsLlurKMPT+kbKkRkm/xVA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-hover-card@1.1.11':
+ resolution: {integrity: sha512-q9h9grUpGZKR3MNhtVCLVnPGmx1YnzBgGR+O40mhSNGsUnkR+LChVH8c7FB0mkS+oudhd8KAkZGTJPJCjdAPIg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-id@1.1.1':
resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==}
peerDependencies:
@@ -410,6 +508,45 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-menu@2.1.12':
+ resolution: {integrity: sha512-+qYq6LfbiGo97Zz9fioX83HCiIYYFNs8zAsVCMQrIakoNYylIzWuoD/anAD3UzvvR6cnswmfRFJFq/zYYq/k7Q==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-popper@1.2.4':
+ resolution: {integrity: sha512-3p2Rgm/a1cK0r/UVkx5F/K9v/EplfjAeIFCGOPYPO4lZ0jtg4iSQXt/YGTSLWaf4x7NG6Z4+uKFcylcTZjeqDA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-portal@1.1.6':
+ resolution: {integrity: sha512-XmsIl2z1n/TsYFLIdYam2rmFwf9OC/Sh2avkbmVMDuBZIe7hSpM0cYnWPAo7nHOVx8zTuwDZGByfcqLdnzp3Vw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-presence@1.1.4':
resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==}
peerDependencies:
@@ -498,6 +635,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-use-escape-keydown@1.1.1':
+ resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-use-is-hydrated@0.1.0':
resolution: {integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==}
peerDependencies:
@@ -516,6 +662,27 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-use-rect@1.1.1':
+ resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/react-use-size@1.1.1':
+ resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/rect@1.1.1':
+ resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
+
'@radix-ui/react-use-previous@1.1.1':
resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==}
peerDependencies:
@@ -809,6 +976,10 @@ packages:
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ aria-hidden@1.2.4:
+ resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==}
+ engines: {node: '>=10'}
+
aria-query@5.3.2:
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
engines: {node: '>= 0.4'}
@@ -985,6 +1156,9 @@ packages:
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
engines: {node: '>=8'}
+ detect-node-es@1.1.0:
+ resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
+
doctrine@2.1.0:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
@@ -1217,6 +1391,10 @@ packages:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
+ get-nonce@1.0.1:
+ resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
+ engines: {node: '>=6'}
+
get-proto@1.0.1:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
@@ -1700,9 +1878,44 @@ packages:
peerDependencies:
react: ^19.1.0
+ react-icons@5.5.0:
+ resolution: {integrity: sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==}
+ peerDependencies:
+ react: '*'
+
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+ react-remove-scroll-bar@2.3.8:
+ resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ react-remove-scroll@2.6.3:
+ resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ react-style-singleton@2.2.3:
+ resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
react@19.1.0:
resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==}
engines: {node: '>=0.10.0'}
@@ -1939,6 +2152,26 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ use-callback-ref@1.3.3:
+ resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ use-sidecar@1.1.3:
+ resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
use-sync-external-store@1.5.0:
resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==}
peerDependencies:
@@ -2037,6 +2270,23 @@ snapshots:
'@eslint/core': 0.13.0
levn: 0.4.1
+ '@floating-ui/core@1.6.9':
+ dependencies:
+ '@floating-ui/utils': 0.2.9
+
+ '@floating-ui/dom@1.6.13':
+ dependencies:
+ '@floating-ui/core': 1.6.9
+ '@floating-ui/utils': 0.2.9
+
+ '@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@floating-ui/dom': 1.6.13
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+
+ '@floating-ui/utils@0.2.9': {}
+
'@humanfs/core@0.19.1': {}
'@humanfs/node@0.16.6':
@@ -2181,6 +2431,15 @@ snapshots:
'@radix-ui/primitive@1.1.2': {}
+ '@radix-ui/react-arrow@1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ optionalDependencies:
+ '@types/react': 19.1.2
+ '@types/react-dom': 19.1.2(@types/react@19.1.2)
+
'@radix-ui/react-avatar@1.1.7(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
'@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0)
@@ -2228,6 +2487,20 @@ snapshots:
optionalDependencies:
'@types/react': 19.1.2
+ '@radix-ui/react-context-menu@2.2.12(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.2
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-menu': 2.1.12(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0)
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ optionalDependencies:
+ '@types/react': 19.1.2
+ '@types/react-dom': 19.1.2(@types/react@19.1.2)
+
'@radix-ui/react-context@1.1.2(@types/react@19.1.2)(react@19.1.0)':
dependencies:
react: 19.1.0
@@ -2240,6 +2513,53 @@ snapshots:
optionalDependencies:
'@types/react': 19.1.2
+ '@radix-ui/react-dismissable-layer@1.1.7(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.2
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ optionalDependencies:
+ '@types/react': 19.1.2
+ '@types/react-dom': 19.1.2(@types/react@19.1.2)
+
+ '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.2)(react@19.1.0)':
+ dependencies:
+ react: 19.1.0
+ optionalDependencies:
+ '@types/react': 19.1.2
+
+ '@radix-ui/react-focus-scope@1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ optionalDependencies:
+ '@types/react': 19.1.2
+ '@types/react-dom': 19.1.2(@types/react@19.1.2)
+
+ '@radix-ui/react-hover-card@1.1.11(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.2
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-dismissable-layer': 1.1.7(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-popper': 1.2.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-portal': 1.1.6(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.2)(react@19.1.0)
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ optionalDependencies:
+ '@types/react': 19.1.2
+ '@types/react-dom': 19.1.2(@types/react@19.1.2)
+
'@radix-ui/react-id@1.1.1(@types/react@19.1.2)(react@19.1.0)':
dependencies:
'@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0)
@@ -2247,6 +2567,60 @@ snapshots:
optionalDependencies:
'@types/react': 19.1.2
+ '@radix-ui/react-menu@2.1.12(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.2
+ '@radix-ui/react-collection': 1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-dismissable-layer': 1.1.7(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-focus-scope': 1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-popper': 1.2.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-portal': 1.1.6(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-roving-focus': 1.1.7(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-slot': 1.2.0(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ aria-hidden: 1.2.4
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ react-remove-scroll: 2.6.3(@types/react@19.1.2)(react@19.1.0)
+ optionalDependencies:
+ '@types/react': 19.1.2
+ '@types/react-dom': 19.1.2(@types/react@19.1.2)
+
+ '@radix-ui/react-popper@1.2.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-arrow': 1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ '@radix-ui/rect': 1.1.1
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ optionalDependencies:
+ '@types/react': 19.1.2
+ '@types/react-dom': 19.1.2(@types/react@19.1.2)
+
+ '@radix-ui/react-portal@1.1.6(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ react: 19.1.0
+ react-dom: 19.1.0(react@19.1.0)
+ optionalDependencies:
+ '@types/react': 19.1.2
+ '@types/react-dom': 19.1.2(@types/react@19.1.2)
+
'@radix-ui/react-presence@1.1.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.2)(react@19.1.0)
@@ -2327,6 +2701,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.1.2
+ '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.2)(react@19.1.0)':
+ dependencies:
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ react: 19.1.0
+ optionalDependencies:
+ '@types/react': 19.1.2
+
'@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.1.2)(react@19.1.0)':
dependencies:
react: 19.1.0
@@ -2340,6 +2721,22 @@ snapshots:
optionalDependencies:
'@types/react': 19.1.2
+ '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.2)(react@19.1.0)':
+ dependencies:
+ '@radix-ui/rect': 1.1.1
+ react: 19.1.0
+ optionalDependencies:
+ '@types/react': 19.1.2
+
+ '@radix-ui/react-use-size@1.1.1(@types/react@19.1.2)(react@19.1.0)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.2)(react@19.1.0)
+ react: 19.1.0
+ optionalDependencies:
+ '@types/react': 19.1.2
+
+ '@radix-ui/rect@1.1.1': {}
+
'@radix-ui/react-use-previous@1.1.1(@types/react@19.1.2)(react@19.1.0)':
dependencies:
react: 19.1.0
@@ -2601,6 +2998,10 @@ snapshots:
argparse@2.0.1: {}
+ aria-hidden@1.2.4:
+ dependencies:
+ tslib: 2.8.1
+
aria-query@5.3.2: {}
array-buffer-byte-length@1.0.2:
@@ -2805,6 +3206,8 @@ snapshots:
detect-libc@2.0.4: {}
+ detect-node-es@1.1.0: {}
+
doctrine@2.1.0:
dependencies:
esutils: 2.0.3
@@ -3199,6 +3602,8 @@ snapshots:
hasown: 2.0.2
math-intrinsics: 1.1.0
+ get-nonce@1.0.1: {}
+
get-proto@1.0.1:
dependencies:
dunder-proto: 1.0.1
@@ -3665,8 +4070,39 @@ snapshots:
react: 19.1.0
scheduler: 0.26.0
+ react-icons@5.5.0(react@19.1.0):
+ dependencies:
+ react: 19.1.0
+
react-is@16.13.1: {}
+ react-remove-scroll-bar@2.3.8(@types/react@19.1.2)(react@19.1.0):
+ dependencies:
+ react: 19.1.0
+ react-style-singleton: 2.2.3(@types/react@19.1.2)(react@19.1.0)
+ tslib: 2.8.1
+ optionalDependencies:
+ '@types/react': 19.1.2
+
+ react-remove-scroll@2.6.3(@types/react@19.1.2)(react@19.1.0):
+ dependencies:
+ react: 19.1.0
+ react-remove-scroll-bar: 2.3.8(@types/react@19.1.2)(react@19.1.0)
+ react-style-singleton: 2.2.3(@types/react@19.1.2)(react@19.1.0)
+ tslib: 2.8.1
+ use-callback-ref: 1.3.3(@types/react@19.1.2)(react@19.1.0)
+ use-sidecar: 1.1.3(@types/react@19.1.2)(react@19.1.0)
+ optionalDependencies:
+ '@types/react': 19.1.2
+
+ react-style-singleton@2.2.3(@types/react@19.1.2)(react@19.1.0):
+ dependencies:
+ get-nonce: 1.0.1
+ react: 19.1.0
+ tslib: 2.8.1
+ optionalDependencies:
+ '@types/react': 19.1.2
+
react@19.1.0: {}
reflect.getprototypeof@1.0.10:
@@ -4000,6 +4436,21 @@ snapshots:
dependencies:
punycode: 2.3.1
+ use-callback-ref@1.3.3(@types/react@19.1.2)(react@19.1.0):
+ dependencies:
+ react: 19.1.0
+ tslib: 2.8.1
+ optionalDependencies:
+ '@types/react': 19.1.2
+
+ use-sidecar@1.1.3(@types/react@19.1.2)(react@19.1.0):
+ dependencies:
+ detect-node-es: 1.1.0
+ react: 19.1.0
+ tslib: 2.8.1
+ optionalDependencies:
+ '@types/react': 19.1.2
+
use-sync-external-store@1.5.0(react@19.1.0):
dependencies:
react: 19.1.0
diff --git a/public/images/230f1945d640ae4c0325f23dcb3365b59ae08277.png b/public/images/230f1945d640ae4c0325f23dcb3365b59ae08277.png
new file mode 100644
index 0000000..82aec81
Binary files /dev/null and b/public/images/230f1945d640ae4c0325f23dcb3365b59ae08277.png differ
diff --git a/public/images/292c2c8f2ea3276c44dc6ade84e687b9cae3d267.png b/public/images/292c2c8f2ea3276c44dc6ade84e687b9cae3d267.png
new file mode 100644
index 0000000..af6e5ff
Binary files /dev/null and b/public/images/292c2c8f2ea3276c44dc6ade84e687b9cae3d267.png differ
diff --git a/public/images/37934e37222a44601017b84963a414627d8e095f.png b/public/images/37934e37222a44601017b84963a414627d8e095f.png
new file mode 100644
index 0000000..8b58521
Binary files /dev/null and b/public/images/37934e37222a44601017b84963a414627d8e095f.png differ
diff --git a/public/images/89f1cacd4041e59eb162ffcb0f8080dc179fe415.png b/public/images/89f1cacd4041e59eb162ffcb0f8080dc179fe415.png
new file mode 100644
index 0000000..338032f
Binary files /dev/null and b/public/images/89f1cacd4041e59eb162ffcb0f8080dc179fe415.png differ
diff --git a/public/images/96c1b745b59fe1512c73f653d7b5e7be3ee54e58.png b/public/images/96c1b745b59fe1512c73f653d7b5e7be3ee54e58.png
new file mode 100644
index 0000000..d017c56
Binary files /dev/null and b/public/images/96c1b745b59fe1512c73f653d7b5e7be3ee54e58.png differ
diff --git a/public/images/Airbnb_1.png b/public/images/Airbnb_1.png
new file mode 100644
index 0000000..f5e9714
Binary files /dev/null and b/public/images/Airbnb_1.png differ
diff --git a/public/images/Airbnb_2.png b/public/images/Airbnb_2.png
new file mode 100644
index 0000000..6bafb96
Binary files /dev/null and b/public/images/Airbnb_2.png differ
diff --git a/public/images/Airbnb_3.png b/public/images/Airbnb_3.png
new file mode 100644
index 0000000..5399f7e
Binary files /dev/null and b/public/images/Airbnb_3.png differ
diff --git a/public/images/Amazon_AWS.png b/public/images/Amazon_AWS.png
new file mode 100644
index 0000000..c231e63
Binary files /dev/null and b/public/images/Amazon_AWS.png differ
diff --git a/public/images/Amazon_echo.png b/public/images/Amazon_echo.png
new file mode 100644
index 0000000..76a6a92
Binary files /dev/null and b/public/images/Amazon_echo.png differ
diff --git a/public/images/Banner.png b/public/images/Banner.png
new file mode 100644
index 0000000..6e6ec38
Binary files /dev/null and b/public/images/Banner.png differ
diff --git a/public/images/Element.png b/public/images/Element.png
new file mode 100644
index 0000000..4732ad4
Binary files /dev/null and b/public/images/Element.png differ
diff --git a/public/images/Huawei.png b/public/images/Huawei.png
new file mode 100644
index 0000000..1f098eb
Binary files /dev/null and b/public/images/Huawei.png differ
diff --git a/public/images/Netflix.png b/public/images/Netflix.png
new file mode 100644
index 0000000..874905b
Binary files /dev/null and b/public/images/Netflix.png differ
diff --git a/public/images/Qonto.png b/public/images/Qonto.png
new file mode 100644
index 0000000..3a2360e
Binary files /dev/null and b/public/images/Qonto.png differ
diff --git a/public/images/Samsung.png b/public/images/Samsung.png
new file mode 100644
index 0000000..e9785cd
Binary files /dev/null and b/public/images/Samsung.png differ
diff --git a/public/images/aa31529b95af9b43380b88b11692b0a6f7999878.png b/public/images/aa31529b95af9b43380b88b11692b0a6f7999878.png
new file mode 100644
index 0000000..f316d79
Binary files /dev/null and b/public/images/aa31529b95af9b43380b88b11692b0a6f7999878.png differ
diff --git a/public/images/baca21cebac9b0ae0463e371575f760ea5e79016.png b/public/images/baca21cebac9b0ae0463e371575f760ea5e79016.png
new file mode 100644
index 0000000..43330d8
Binary files /dev/null and b/public/images/baca21cebac9b0ae0463e371575f760ea5e79016.png differ
diff --git a/public/images/brutal.png b/public/images/brutal.png
new file mode 100644
index 0000000..b33bfd7
Binary files /dev/null and b/public/images/brutal.png differ
diff --git a/public/images/card1.png b/public/images/card1.png
new file mode 100644
index 0000000..ff69fc7
Binary files /dev/null and b/public/images/card1.png differ
diff --git a/public/images/d3cf3b09c1fd3dc0d6a997a7a479337fdf8caa69.png b/public/images/d3cf3b09c1fd3dc0d6a997a7a479337fdf8caa69.png
new file mode 100644
index 0000000..89a5020
Binary files /dev/null and b/public/images/d3cf3b09c1fd3dc0d6a997a7a479337fdf8caa69.png differ
diff --git a/public/images/d5d8f9fe19a7aed7bf6545a64634eeb37a6b895a.png b/public/images/d5d8f9fe19a7aed7bf6545a64634eeb37a6b895a.png
new file mode 100644
index 0000000..43c4890
Binary files /dev/null and b/public/images/d5d8f9fe19a7aed7bf6545a64634eeb37a6b895a.png differ
diff --git a/public/images/fallback-background.png b/public/images/fallback-background.png
new file mode 100644
index 0000000..dc4a910
Binary files /dev/null and b/public/images/fallback-background.png differ
diff --git a/public/images/logo2.png b/public/images/logo2.png
new file mode 100644
index 0000000..cbb31fe
Binary files /dev/null and b/public/images/logo2.png differ
diff --git a/public/videos/background1.mp4 b/public/videos/background1.mp4
new file mode 100644
index 0000000..9ae6b53
Binary files /dev/null and b/public/videos/background1.mp4 differ
diff --git a/public/videos/background2.mp4 b/public/videos/background2.mp4
new file mode 100644
index 0000000..6bfd901
Binary files /dev/null and b/public/videos/background2.mp4 differ
diff --git a/public/videos/background3.mp4 b/public/videos/background3.mp4
new file mode 100644
index 0000000..bd5187e
Binary files /dev/null and b/public/videos/background3.mp4 differ
diff --git a/public/videos/man.mp4 b/public/videos/man.mp4
new file mode 100644
index 0000000..0a7fbc9
Binary files /dev/null and b/public/videos/man.mp4 differ
diff --git a/public/videos/trend.mp4 b/public/videos/trend.mp4
new file mode 100644
index 0000000..63611df
Binary files /dev/null and b/public/videos/trend.mp4 differ
diff --git a/public/videos/usb.mp4 b/public/videos/usb.mp4
new file mode 100644
index 0000000..84d1fbe
Binary files /dev/null and b/public/videos/usb.mp4 differ