MingruiZhang commited on
Commit
1006c22
1 Parent(s): cef4233

feat: Internal page for looking at messages (#115)

Browse files

![image](https://github.com/landing-ai/vision-agent-ui/assets/5669963/b5a8111e-29c8-4874-af40-5eae42f1c040)

app/internal/page.tsx ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { DatePicker } from '@/components/DatePicker';
2
+ import Loading from '@/components/ui/Loading';
3
+ import { isValidDate } from '@/lib/utils';
4
+ import { format } from 'date-fns';
5
+ import { redirect } from 'next/navigation';
6
+ import { Suspense } from 'react';
7
+ import InternalServer from './server';
8
+ import { sessionUser } from '@/auth';
9
+
10
+ export interface pageProps {
11
+ searchParams?: { [key: string]: string | string[] | undefined };
12
+ }
13
+
14
+ export default async function page({ searchParams }: pageProps) {
15
+ const { isAdmin } = await sessionUser();
16
+ if (!isAdmin) {
17
+ redirect('/');
18
+ }
19
+ const date = searchParams?.date as string;
20
+
21
+ if (!date || !isValidDate(date)) {
22
+ const today = new Date();
23
+ // default to today
24
+ redirect(`/internal?date=${format(today, 'yyyy-MM-dd')}`);
25
+ }
26
+
27
+ return (
28
+ <Suspense
29
+ fallback={
30
+ <div className="h-screen w-screen flex justify-center items-center">
31
+ <Loading />
32
+ </div>
33
+ }
34
+ >
35
+ <div className="w-[1600px] max-w-full mx-auto flex flex-col space-y-4 items-center">
36
+ <DatePicker
37
+ date={date}
38
+ setDate={async newDate => {
39
+ 'use server';
40
+ redirect(`/internal?date=${newDate}`);
41
+ }}
42
+ />
43
+ <InternalServer date={date} />
44
+ </div>
45
+ </Suspense>
46
+ );
47
+ }
app/internal/server.tsx ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Card } from '@/components/ui/Card';
2
+ import Img from '@/components/ui/Img';
3
+ import { dbInternalGetAllMessageByDate } from '@/lib/db/functions';
4
+ import { Dialog, DialogContent, DialogTrigger } from '@/components/ui/Dialog';
5
+ import { Button } from '@/components/ui/Button';
6
+ import { IconArrowUpRight } from '@/components/ui/Icons';
7
+ import MessageGrid from '@/components/internal/MessageGrid';
8
+
9
+ export interface InternalServerProps {
10
+ date: string;
11
+ }
12
+
13
+ export default async function InternalServer({ date }: InternalServerProps) {
14
+ const messages = await dbInternalGetAllMessageByDate(date);
15
+ return <MessageGrid messages={messages} />;
16
+ }
components/DatePicker.tsx ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use client';
2
+
3
+ import { useState } from 'react';
4
+ import { format } from 'date-fns';
5
+ import { Calendar as CalendarIcon } from 'lucide-react';
6
+
7
+ import { cn } from '@/lib/utils';
8
+ import { Button } from '@/components/ui/Button';
9
+ import { Calendar } from '@/components/ui/calendar';
10
+ import {
11
+ Popover,
12
+ PopoverContent,
13
+ PopoverTrigger,
14
+ } from '@/components/ui/popover';
15
+
16
+ type DatePickerProps = {
17
+ date: string;
18
+ setDate: (date?: string) => Promise<void>;
19
+ };
20
+
21
+ export function DatePicker({ date, setDate }: DatePickerProps) {
22
+ const [calendarOpen, setCalendarOpen] = useState(false);
23
+
24
+ return (
25
+ <Popover open={calendarOpen} onOpenChange={setCalendarOpen}>
26
+ <PopoverTrigger asChild>
27
+ <Button
28
+ variant={'outline'}
29
+ className={cn(
30
+ 'w-[280px] justify-start text-left font-normal',
31
+ !date && 'text-muted-foreground',
32
+ )}
33
+ >
34
+ <CalendarIcon className="mr-2 size-4" />
35
+ {date ? format(date, 'PPP') : <span>Pick a date</span>}
36
+ </Button>
37
+ </PopoverTrigger>
38
+ <PopoverContent className="w-auto p-0">
39
+ <Calendar
40
+ mode="single"
41
+ selected={new Date(date)}
42
+ onSelect={async newDate => {
43
+ if (newDate) {
44
+ await setDate(format(newDate, 'yyyy-MM-dd'));
45
+ setCalendarOpen(false);
46
+ }
47
+ }}
48
+ initialFocus
49
+ />
50
+ </PopoverContent>
51
+ </Popover>
52
+ );
53
+ }
components/chat/ChatMessage.tsx CHANGED
@@ -83,7 +83,7 @@ export const ChatMessage: React.FC<ChatMessageProps> = ({
83
  (response ? getParsedStreamLogs(response) : []),
84
  result,
85
  ),
86
- [response, wipAssistantMessage, responseBody],
87
  );
88
  return (
89
  <div
 
83
  (response ? getParsedStreamLogs(response) : []),
84
  result,
85
  ),
86
+ [wipAssistantMessage, responseBody, response, result],
87
  );
88
  return (
89
  <div
components/internal/MessageGrid.tsx ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use client';
2
+
3
+ import { Message } from '@prisma/client';
4
+ import React from 'react';
5
+ import { Card } from '@/components/ui/Card';
6
+ import Img from '@/components/ui/Img';
7
+ import { Dialog, DialogContent, DialogTrigger } from '@/components/ui/Dialog';
8
+ import { Button } from '@/components/ui/Button';
9
+ import { IconArrowUpRight } from '@/components/ui/Icons';
10
+ import { FixedSizeGrid } from 'react-window';
11
+ import { useRouter } from 'next/navigation';
12
+ import Link from 'next/link';
13
+
14
+ export interface MessageGridProps {
15
+ messages: Pick<Message, 'chatId' | 'id' | 'mediaUrl' | 'prompt'>[];
16
+ }
17
+
18
+ const MessageGrid: React.FC<MessageGridProps> = ({ messages }) => {
19
+ return (
20
+ <FixedSizeGrid
21
+ columnCount={2}
22
+ columnWidth={590}
23
+ height={1200}
24
+ rowCount={Math.round(messages.length / 2 + 1)}
25
+ rowHeight={120}
26
+ width={1200}
27
+ >
28
+ {({ columnIndex, rowIndex, style }) => {
29
+ const messageIndex = rowIndex * 2 + columnIndex;
30
+ if (messageIndex > messages.length - 1) return null;
31
+
32
+ const message = messages[rowIndex * 2 + columnIndex];
33
+ const { mediaUrl, prompt, id, chatId } = message;
34
+ return (
35
+ <div style={style} className="p-2 relative">
36
+ <Card className="relative flex size-full" key={id}>
37
+ <div className="h-full w-48 min-w-48 relative">
38
+ <Dialog>
39
+ <DialogTrigger asChild>
40
+ <Img
41
+ src={mediaUrl}
42
+ alt={prompt}
43
+ className="object-cover size-full cursor-pointer"
44
+ />
45
+ </DialogTrigger>
46
+ <DialogContent className="max-w-5xl">
47
+ <>
48
+ {mediaUrl?.endsWith('.mp4') ? (
49
+ <video
50
+ src={mediaUrl}
51
+ controls
52
+ width={1200}
53
+ height={800}
54
+ />
55
+ ) : (
56
+ <Img
57
+ src={mediaUrl}
58
+ alt={prompt}
59
+ quality={100}
60
+ width={1200}
61
+ height={800}
62
+ />
63
+ )}
64
+ </>
65
+ </DialogContent>
66
+ </Dialog>
67
+ </div>
68
+ <div className="m-2 grow-1 flex flex-col overflow-hidden">
69
+ <p className="text-sm">{prompt}</p>
70
+ </div>
71
+ <Link
72
+ className="size-6 absolute right-1 bottom-1"
73
+ href={`/chat/${chatId}`}
74
+ target="_blank"
75
+ >
76
+ <IconArrowUpRight className="size-3" />
77
+ </Link>
78
+ </Card>
79
+ </div>
80
+ );
81
+ }}
82
+ </FixedSizeGrid>
83
+ );
84
+ };
85
+
86
+ export default MessageGrid;
components/ui/calendar.tsx ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import { ChevronLeftIcon, ChevronRightIcon } from '@radix-ui/react-icons';
5
+ import { DayPicker } from 'react-day-picker';
6
+
7
+ import { cn } from '@/lib/utils';
8
+ import { buttonVariants } from '@/components/ui/Button';
9
+
10
+ export type CalendarProps = React.ComponentProps<typeof DayPicker>;
11
+
12
+ function Calendar({
13
+ className,
14
+ classNames,
15
+ showOutsideDays = true,
16
+ ...props
17
+ }: CalendarProps) {
18
+ return (
19
+ <DayPicker
20
+ showOutsideDays={showOutsideDays}
21
+ className={cn('p-3', className)}
22
+ classNames={{
23
+ months: 'flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0',
24
+ month: 'space-y-4',
25
+ caption: 'flex justify-center pt-1 relative items-center',
26
+ caption_label: 'text-sm font-medium',
27
+ nav: 'space-x-1 flex items-center',
28
+ nav_button: cn(
29
+ buttonVariants({ variant: 'outline' }),
30
+ 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100',
31
+ ),
32
+ nav_button_previous: 'absolute left-1',
33
+ nav_button_next: 'absolute right-1',
34
+ table: 'w-full border-collapse space-y-1',
35
+ head_row: 'flex',
36
+ head_cell:
37
+ 'text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]',
38
+ row: 'flex w-full mt-2',
39
+ cell: cn(
40
+ 'relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md',
41
+ props.mode === 'range'
42
+ ? '[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md'
43
+ : '[&:has([aria-selected])]:rounded-md',
44
+ ),
45
+ day: cn(
46
+ buttonVariants({ variant: 'ghost' }),
47
+ 'h-8 w-8 p-0 font-normal aria-selected:opacity-100',
48
+ ),
49
+ day_range_start: 'day-range-start',
50
+ day_range_end: 'day-range-end',
51
+ day_selected:
52
+ 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground',
53
+ day_today: 'bg-accent text-accent-foreground',
54
+ day_outside:
55
+ 'day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30',
56
+ day_disabled: 'text-muted-foreground opacity-50',
57
+ day_range_middle:
58
+ 'aria-selected:bg-accent aria-selected:text-accent-foreground',
59
+ day_hidden: 'invisible',
60
+ ...classNames,
61
+ }}
62
+ components={{
63
+ IconLeft: ({ ...props }) => <ChevronLeftIcon className="h-4 w-4" />,
64
+ IconRight: ({ ...props }) => <ChevronRightIcon className="h-4 w-4" />,
65
+ }}
66
+ {...props}
67
+ />
68
+ );
69
+ }
70
+ Calendar.displayName = 'Calendar';
71
+
72
+ export { Calendar };
components/ui/popover.tsx ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as PopoverPrimitive from "@radix-ui/react-popover"
5
+
6
+ import { cn } from "@/lib/utils"
7
+
8
+ const Popover = PopoverPrimitive.Root
9
+
10
+ const PopoverTrigger = PopoverPrimitive.Trigger
11
+
12
+ const PopoverAnchor = PopoverPrimitive.Anchor
13
+
14
+ const PopoverContent = React.forwardRef<
15
+ React.ElementRef<typeof PopoverPrimitive.Content>,
16
+ React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>
17
+ >(({ className, align = "center", sideOffset = 4, ...props }, ref) => (
18
+ <PopoverPrimitive.Portal>
19
+ <PopoverPrimitive.Content
20
+ ref={ref}
21
+ align={align}
22
+ sideOffset={sideOffset}
23
+ className={cn(
24
+ "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
25
+ className
26
+ )}
27
+ {...props}
28
+ />
29
+ </PopoverPrimitive.Portal>
30
+ ))
31
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName
32
+
33
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }
lib/db/functions.ts CHANGED
@@ -9,6 +9,7 @@ import {
9
  } from '../types';
10
  import { revalidatePath } from 'next/cache';
11
  import { Chat } from '@prisma/client';
 
12
 
13
  async function getUserConnect() {
14
  const { id: userId } = await sessionUser();
@@ -209,3 +210,32 @@ export async function dbDeleteChat(chatId: string) {
209
 
210
  return;
211
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  } from '../types';
10
  import { revalidatePath } from 'next/cache';
11
  import { Chat } from '@prisma/client';
12
+ import { isValidDate } from '../utils';
13
 
14
  async function getUserConnect() {
15
  const { id: userId } = await sessionUser();
 
210
 
211
  return;
212
  }
213
+
214
+ /**
215
+ * Retrieves all messages from the database based on a given date.
216
+ * @param date - The date in the format 'YYYY-MM-DD'.
217
+ * @returns A promise that resolves to an array of messages.
218
+ * @throws Error if the provided date is not valid.
219
+ */
220
+ export async function dbInternalGetAllMessageByDate(date: string) {
221
+ // date must be in the format 'YYYY-MM-DD'
222
+ if (!isValidDate(date)) {
223
+ throw Error('Not valid date');
224
+ }
225
+
226
+ return prisma.message.findMany({
227
+ select: {
228
+ id: true,
229
+ chatId: true,
230
+ prompt: true,
231
+ mediaUrl: true,
232
+ result: true,
233
+ },
234
+ where: {
235
+ createdAt: {
236
+ gte: new Date(date + 'T00:00:00Z'),
237
+ lt: new Date(date + 'T23:59:59Z'),
238
+ },
239
+ },
240
+ });
241
+ }
lib/utils.ts CHANGED
@@ -32,3 +32,41 @@ export async function fetcher<JSON = any>(
32
 
33
  return res.json();
34
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
 
33
  return res.json();
34
  }
35
+
36
+ /**
37
+ * Checks if a given string represents a valid date in the format "YYYY-MM-DD".
38
+ * @param dateString - The string to be validated as a date.
39
+ * @returns A boolean indicating whether the input string is a valid date.
40
+ */
41
+ export function isValidDate(dateString: string) {
42
+ // Check if the format is correct using regex
43
+ const regex = /^\d{4}-\d{2}-\d{2}$/;
44
+ if (!dateString.match(regex)) {
45
+ return false;
46
+ }
47
+
48
+ // Parse the date parts to integers
49
+ const parts = dateString.split('-');
50
+ const year = parseInt(parts[0], 10);
51
+ const month = parseInt(parts[1], 10);
52
+ const day = parseInt(parts[2], 10);
53
+
54
+ // Check if the date parts are valid
55
+ if (year < 1000 || year > 9999 || month === 0 || month > 12) {
56
+ return false;
57
+ }
58
+
59
+ // Create a date object from the parsed parts
60
+ const date = new Date(year, month - 1, day);
61
+
62
+ // Check if the date object matches the input date
63
+ if (
64
+ date.getFullYear() !== year ||
65
+ date.getMonth() + 1 !== month ||
66
+ date.getDate() !== day
67
+ ) {
68
+ return false;
69
+ }
70
+
71
+ return true;
72
+ }
package.json CHANGED
@@ -22,6 +22,7 @@
22
  "@radix-ui/react-dialog": "^1.0.5",
23
  "@radix-ui/react-dropdown-menu": "^2.0.6",
24
  "@radix-ui/react-icons": "^1.3.0",
 
25
  "@radix-ui/react-select": "^2.0.0",
26
  "@radix-ui/react-separator": "^1.0.3",
27
  "@radix-ui/react-slot": "^1.0.2",
@@ -50,6 +51,7 @@
50
  "prisma": "^5.14.0",
51
  "prisma-json-types-generator": "^3.0.4",
52
  "react": "^18.2.0",
 
53
  "react-dom": "^18.2.0",
54
  "react-dropzone": "^14.2.3",
55
  "react-hot-toast": "^2.4.1",
 
22
  "@radix-ui/react-dialog": "^1.0.5",
23
  "@radix-ui/react-dropdown-menu": "^2.0.6",
24
  "@radix-ui/react-icons": "^1.3.0",
25
+ "@radix-ui/react-popover": "^1.1.0",
26
  "@radix-ui/react-select": "^2.0.0",
27
  "@radix-ui/react-separator": "^1.0.3",
28
  "@radix-ui/react-slot": "^1.0.2",
 
51
  "prisma": "^5.14.0",
52
  "prisma-json-types-generator": "^3.0.4",
53
  "react": "^18.2.0",
54
+ "react-day-picker": "^8.10.1",
55
  "react-dom": "^18.2.0",
56
  "react-dropzone": "^14.2.3",
57
  "react-hot-toast": "^2.4.1",
pnpm-lock.yaml CHANGED
@@ -29,6 +29,9 @@ importers:
29
  '@radix-ui/react-icons':
30
  specifier: ^1.3.0
31
  version: 1.3.0(react@18.2.0)
 
 
 
32
  '@radix-ui/react-select':
33
  specifier: ^2.0.0
34
  version: 2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
@@ -113,6 +116,9 @@ importers:
113
  react:
114
  specifier: ^18.2.0
115
  version: 18.2.0
 
 
 
116
  react-dom:
117
  specifier: ^18.2.0
118
  version: 18.2.0(react@18.2.0)
@@ -774,6 +780,9 @@ packages:
774
  '@radix-ui/primitive@1.0.1':
775
  resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==}
776
 
 
 
 
777
  '@radix-ui/react-arrow@1.0.3':
778
  resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==}
779
  peerDependencies:
@@ -787,6 +796,19 @@ packages:
787
  '@types/react-dom':
788
  optional: true
789
 
 
 
 
 
 
 
 
 
 
 
 
 
 
790
  '@radix-ui/react-collection@1.0.3':
791
  resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==}
792
  peerDependencies:
@@ -809,6 +831,15 @@ packages:
809
  '@types/react':
810
  optional: true
811
 
 
 
 
 
 
 
 
 
 
812
  '@radix-ui/react-context@1.0.1':
813
  resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==}
814
  peerDependencies:
@@ -818,6 +849,15 @@ packages:
818
  '@types/react':
819
  optional: true
820
 
 
 
 
 
 
 
 
 
 
821
  '@radix-ui/react-dialog@1.0.5':
822
  resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==}
823
  peerDependencies:
@@ -853,6 +893,19 @@ packages:
853
  '@types/react-dom':
854
  optional: true
855
 
 
 
 
 
 
 
 
 
 
 
 
 
 
856
  '@radix-ui/react-dropdown-menu@2.0.6':
857
  resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==}
858
  peerDependencies:
@@ -875,6 +928,15 @@ packages:
875
  '@types/react':
876
  optional: true
877
 
 
 
 
 
 
 
 
 
 
878
  '@radix-ui/react-focus-scope@1.0.4':
879
  resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==}
880
  peerDependencies:
@@ -888,6 +950,19 @@ packages:
888
  '@types/react-dom':
889
  optional: true
890
 
 
 
 
 
 
 
 
 
 
 
 
 
 
891
  '@radix-ui/react-icons@1.3.0':
892
  resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==}
893
  peerDependencies:
@@ -902,6 +977,15 @@ packages:
902
  '@types/react':
903
  optional: true
904
 
 
 
 
 
 
 
 
 
 
905
  '@radix-ui/react-menu@2.0.6':
906
  resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==}
907
  peerDependencies:
@@ -915,6 +999,19 @@ packages:
915
  '@types/react-dom':
916
  optional: true
917
 
 
 
 
 
 
 
 
 
 
 
 
 
 
918
  '@radix-ui/react-popper@1.1.3':
919
  resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==}
920
  peerDependencies:
@@ -928,6 +1025,19 @@ packages:
928
  '@types/react-dom':
929
  optional: true
930
 
 
 
 
 
 
 
 
 
 
 
 
 
 
931
  '@radix-ui/react-portal@1.0.4':
932
  resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==}
933
  peerDependencies:
@@ -941,6 +1051,19 @@ packages:
941
  '@types/react-dom':
942
  optional: true
943
 
 
 
 
 
 
 
 
 
 
 
 
 
 
944
  '@radix-ui/react-presence@1.0.1':
945
  resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==}
946
  peerDependencies:
@@ -954,6 +1077,19 @@ packages:
954
  '@types/react-dom':
955
  optional: true
956
 
 
 
 
 
 
 
 
 
 
 
 
 
 
957
  '@radix-ui/react-primitive@1.0.3':
958
  resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==}
959
  peerDependencies:
@@ -967,6 +1103,19 @@ packages:
967
  '@types/react-dom':
968
  optional: true
969
 
 
 
 
 
 
 
 
 
 
 
 
 
 
970
  '@radix-ui/react-roving-focus@1.0.4':
971
  resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==}
972
  peerDependencies:
@@ -1015,6 +1164,15 @@ packages:
1015
  '@types/react':
1016
  optional: true
1017
 
 
 
 
 
 
 
 
 
 
1018
  '@radix-ui/react-switch@1.0.3':
1019
  resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==}
1020
  peerDependencies:
@@ -1050,6 +1208,15 @@ packages:
1050
  '@types/react':
1051
  optional: true
1052
 
 
 
 
 
 
 
 
 
 
1053
  '@radix-ui/react-use-controllable-state@1.0.1':
1054
  resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==}
1055
  peerDependencies:
@@ -1059,6 +1226,15 @@ packages:
1059
  '@types/react':
1060
  optional: true
1061
 
 
 
 
 
 
 
 
 
 
1062
  '@radix-ui/react-use-escape-keydown@1.0.3':
1063
  resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==}
1064
  peerDependencies:
@@ -1068,6 +1244,15 @@ packages:
1068
  '@types/react':
1069
  optional: true
1070
 
 
 
 
 
 
 
 
 
 
1071
  '@radix-ui/react-use-layout-effect@1.0.1':
1072
  resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==}
1073
  peerDependencies:
@@ -1077,6 +1262,15 @@ packages:
1077
  '@types/react':
1078
  optional: true
1079
 
 
 
 
 
 
 
 
 
 
1080
  '@radix-ui/react-use-previous@1.0.1':
1081
  resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==}
1082
  peerDependencies:
@@ -1095,6 +1289,15 @@ packages:
1095
  '@types/react':
1096
  optional: true
1097
 
 
 
 
 
 
 
 
 
 
1098
  '@radix-ui/react-use-size@1.0.1':
1099
  resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==}
1100
  peerDependencies:
@@ -1104,6 +1307,15 @@ packages:
1104
  '@types/react':
1105
  optional: true
1106
 
 
 
 
 
 
 
 
 
 
1107
  '@radix-ui/react-visually-hidden@1.0.3':
1108
  resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==}
1109
  peerDependencies:
@@ -1120,6 +1332,9 @@ packages:
1120
  '@radix-ui/rect@1.0.1':
1121
  resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==}
1122
 
 
 
 
1123
  '@rajesh896/video-thumbnails-generator@2.3.9':
1124
  resolution: {integrity: sha512-tV775KsZpyhaXMG/z+APNBL8bpGSaYgvCmELC7k3z0n6rGcFhsDhFFqJkmguiVR83bNLWth8wdFOGkpsBS3Jzw==}
1125
 
@@ -3258,6 +3473,12 @@ packages:
3258
  resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
3259
  engines: {node: '>=10'}
3260
 
 
 
 
 
 
 
3261
  react-dom@18.2.0:
3262
  resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
3263
  peerDependencies:
@@ -3317,6 +3538,16 @@ packages:
3317
  '@types/react':
3318
  optional: true
3319
 
 
 
 
 
 
 
 
 
 
 
3320
  react-style-singleton@2.2.1:
3321
  resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
3322
  engines: {node: '>=10'}
@@ -4860,6 +5091,8 @@ snapshots:
4860
  dependencies:
4861
  '@babel/runtime': 7.24.4
4862
 
 
 
4863
  '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
4864
  dependencies:
4865
  '@babel/runtime': 7.24.4
@@ -4870,6 +5103,15 @@ snapshots:
4870
  '@types/react': 18.2.79
4871
  '@types/react-dom': 18.2.25
4872
 
 
 
 
 
 
 
 
 
 
4873
  '@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
4874
  dependencies:
4875
  '@babel/runtime': 7.24.4
@@ -4890,6 +5132,12 @@ snapshots:
4890
  optionalDependencies:
4891
  '@types/react': 18.2.79
4892
 
 
 
 
 
 
 
4893
  '@radix-ui/react-context@1.0.1(@types/react@18.2.79)(react@18.2.0)':
4894
  dependencies:
4895
  '@babel/runtime': 7.24.4
@@ -4897,6 +5145,12 @@ snapshots:
4897
  optionalDependencies:
4898
  '@types/react': 18.2.79
4899
 
 
 
 
 
 
 
4900
  '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
4901
  dependencies:
4902
  '@babel/runtime': 7.24.4
@@ -4941,6 +5195,19 @@ snapshots:
4941
  '@types/react': 18.2.79
4942
  '@types/react-dom': 18.2.25
4943
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4944
  '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
4945
  dependencies:
4946
  '@babel/runtime': 7.24.4
@@ -4964,6 +5231,12 @@ snapshots:
4964
  optionalDependencies:
4965
  '@types/react': 18.2.79
4966
 
 
 
 
 
 
 
4967
  '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
4968
  dependencies:
4969
  '@babel/runtime': 7.24.4
@@ -4976,6 +5249,17 @@ snapshots:
4976
  '@types/react': 18.2.79
4977
  '@types/react-dom': 18.2.25
4978
 
 
 
 
 
 
 
 
 
 
 
 
4979
  '@radix-ui/react-icons@1.3.0(react@18.2.0)':
4980
  dependencies:
4981
  react: 18.2.0
@@ -4988,6 +5272,13 @@ snapshots:
4988
  optionalDependencies:
4989
  '@types/react': 18.2.79
4990
 
 
 
 
 
 
 
 
4991
  '@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
4992
  dependencies:
4993
  '@babel/runtime': 7.24.4
@@ -5015,6 +5306,29 @@ snapshots:
5015
  '@types/react': 18.2.79
5016
  '@types/react-dom': 18.2.25
5017
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5018
  '@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5019
  dependencies:
5020
  '@babel/runtime': 7.24.4
@@ -5034,6 +5348,24 @@ snapshots:
5034
  '@types/react': 18.2.79
5035
  '@types/react-dom': 18.2.25
5036
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5037
  '@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5038
  dependencies:
5039
  '@babel/runtime': 7.24.4
@@ -5044,6 +5376,15 @@ snapshots:
5044
  '@types/react': 18.2.79
5045
  '@types/react-dom': 18.2.25
5046
 
 
 
 
 
 
 
 
 
 
5047
  '@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5048
  dependencies:
5049
  '@babel/runtime': 7.24.4
@@ -5055,6 +5396,16 @@ snapshots:
5055
  '@types/react': 18.2.79
5056
  '@types/react-dom': 18.2.25
5057
 
 
 
 
 
 
 
 
 
 
 
5058
  '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5059
  dependencies:
5060
  '@babel/runtime': 7.24.4
@@ -5065,6 +5416,15 @@ snapshots:
5065
  '@types/react': 18.2.79
5066
  '@types/react-dom': 18.2.25
5067
 
 
 
 
 
 
 
 
 
 
5068
  '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5069
  dependencies:
5070
  '@babel/runtime': 7.24.4
@@ -5131,6 +5491,13 @@ snapshots:
5131
  optionalDependencies:
5132
  '@types/react': 18.2.79
5133
 
 
 
 
 
 
 
 
5134
  '@radix-ui/react-switch@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5135
  dependencies:
5136
  '@babel/runtime': 7.24.4
@@ -5175,6 +5542,12 @@ snapshots:
5175
  optionalDependencies:
5176
  '@types/react': 18.2.79
5177
 
 
 
 
 
 
 
5178
  '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.79)(react@18.2.0)':
5179
  dependencies:
5180
  '@babel/runtime': 7.24.4
@@ -5183,6 +5556,13 @@ snapshots:
5183
  optionalDependencies:
5184
  '@types/react': 18.2.79
5185
 
 
 
 
 
 
 
 
5186
  '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.79)(react@18.2.0)':
5187
  dependencies:
5188
  '@babel/runtime': 7.24.4
@@ -5191,6 +5571,13 @@ snapshots:
5191
  optionalDependencies:
5192
  '@types/react': 18.2.79
5193
 
 
 
 
 
 
 
 
5194
  '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.79)(react@18.2.0)':
5195
  dependencies:
5196
  '@babel/runtime': 7.24.4
@@ -5198,6 +5585,12 @@ snapshots:
5198
  optionalDependencies:
5199
  '@types/react': 18.2.79
5200
 
 
 
 
 
 
 
5201
  '@radix-ui/react-use-previous@1.0.1(@types/react@18.2.79)(react@18.2.0)':
5202
  dependencies:
5203
  '@babel/runtime': 7.24.4
@@ -5213,6 +5606,13 @@ snapshots:
5213
  optionalDependencies:
5214
  '@types/react': 18.2.79
5215
 
 
 
 
 
 
 
 
5216
  '@radix-ui/react-use-size@1.0.1(@types/react@18.2.79)(react@18.2.0)':
5217
  dependencies:
5218
  '@babel/runtime': 7.24.4
@@ -5221,6 +5621,13 @@ snapshots:
5221
  optionalDependencies:
5222
  '@types/react': 18.2.79
5223
 
 
 
 
 
 
 
 
5224
  '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5225
  dependencies:
5226
  '@babel/runtime': 7.24.4
@@ -5235,6 +5642,8 @@ snapshots:
5235
  dependencies:
5236
  '@babel/runtime': 7.24.4
5237
 
 
 
5238
  '@rajesh896/video-thumbnails-generator@2.3.9': {}
5239
 
5240
  '@rushstack/eslint-patch@1.10.2': {}
@@ -7862,6 +8271,11 @@ snapshots:
7862
 
7863
  quick-lru@5.1.1: {}
7864
 
 
 
 
 
 
7865
  react-dom@18.2.0(react@18.2.0):
7866
  dependencies:
7867
  loose-envify: 1.4.0
@@ -7934,6 +8348,17 @@ snapshots:
7934
  optionalDependencies:
7935
  '@types/react': 18.2.79
7936
 
 
 
 
 
 
 
 
 
 
 
 
7937
  react-style-singleton@2.2.1(@types/react@18.2.79)(react@18.2.0):
7938
  dependencies:
7939
  get-nonce: 1.0.1
 
29
  '@radix-ui/react-icons':
30
  specifier: ^1.3.0
31
  version: 1.3.0(react@18.2.0)
32
+ '@radix-ui/react-popover':
33
+ specifier: ^1.1.0
34
+ version: 1.1.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
35
  '@radix-ui/react-select':
36
  specifier: ^2.0.0
37
  version: 2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
 
116
  react:
117
  specifier: ^18.2.0
118
  version: 18.2.0
119
+ react-day-picker:
120
+ specifier: ^8.10.1
121
+ version: 8.10.1(date-fns@3.6.0)(react@18.2.0)
122
  react-dom:
123
  specifier: ^18.2.0
124
  version: 18.2.0(react@18.2.0)
 
780
  '@radix-ui/primitive@1.0.1':
781
  resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==}
782
 
783
+ '@radix-ui/primitive@1.1.0':
784
+ resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==}
785
+
786
  '@radix-ui/react-arrow@1.0.3':
787
  resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==}
788
  peerDependencies:
 
796
  '@types/react-dom':
797
  optional: true
798
 
799
+ '@radix-ui/react-arrow@1.1.0':
800
+ resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==}
801
+ peerDependencies:
802
+ '@types/react': '*'
803
+ '@types/react-dom': '*'
804
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
805
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
806
+ peerDependenciesMeta:
807
+ '@types/react':
808
+ optional: true
809
+ '@types/react-dom':
810
+ optional: true
811
+
812
  '@radix-ui/react-collection@1.0.3':
813
  resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==}
814
  peerDependencies:
 
831
  '@types/react':
832
  optional: true
833
 
834
+ '@radix-ui/react-compose-refs@1.1.0':
835
+ resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==}
836
+ peerDependencies:
837
+ '@types/react': '*'
838
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
839
+ peerDependenciesMeta:
840
+ '@types/react':
841
+ optional: true
842
+
843
  '@radix-ui/react-context@1.0.1':
844
  resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==}
845
  peerDependencies:
 
849
  '@types/react':
850
  optional: true
851
 
852
+ '@radix-ui/react-context@1.1.0':
853
+ resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==}
854
+ peerDependencies:
855
+ '@types/react': '*'
856
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
857
+ peerDependenciesMeta:
858
+ '@types/react':
859
+ optional: true
860
+
861
  '@radix-ui/react-dialog@1.0.5':
862
  resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==}
863
  peerDependencies:
 
893
  '@types/react-dom':
894
  optional: true
895
 
896
+ '@radix-ui/react-dismissable-layer@1.1.0':
897
+ resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==}
898
+ peerDependencies:
899
+ '@types/react': '*'
900
+ '@types/react-dom': '*'
901
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
902
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
903
+ peerDependenciesMeta:
904
+ '@types/react':
905
+ optional: true
906
+ '@types/react-dom':
907
+ optional: true
908
+
909
  '@radix-ui/react-dropdown-menu@2.0.6':
910
  resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==}
911
  peerDependencies:
 
928
  '@types/react':
929
  optional: true
930
 
931
+ '@radix-ui/react-focus-guards@1.1.0':
932
+ resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==}
933
+ peerDependencies:
934
+ '@types/react': '*'
935
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
936
+ peerDependenciesMeta:
937
+ '@types/react':
938
+ optional: true
939
+
940
  '@radix-ui/react-focus-scope@1.0.4':
941
  resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==}
942
  peerDependencies:
 
950
  '@types/react-dom':
951
  optional: true
952
 
953
+ '@radix-ui/react-focus-scope@1.1.0':
954
+ resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==}
955
+ peerDependencies:
956
+ '@types/react': '*'
957
+ '@types/react-dom': '*'
958
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
959
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
960
+ peerDependenciesMeta:
961
+ '@types/react':
962
+ optional: true
963
+ '@types/react-dom':
964
+ optional: true
965
+
966
  '@radix-ui/react-icons@1.3.0':
967
  resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==}
968
  peerDependencies:
 
977
  '@types/react':
978
  optional: true
979
 
980
+ '@radix-ui/react-id@1.1.0':
981
+ resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==}
982
+ peerDependencies:
983
+ '@types/react': '*'
984
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
985
+ peerDependenciesMeta:
986
+ '@types/react':
987
+ optional: true
988
+
989
  '@radix-ui/react-menu@2.0.6':
990
  resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==}
991
  peerDependencies:
 
999
  '@types/react-dom':
1000
  optional: true
1001
 
1002
+ '@radix-ui/react-popover@1.1.0':
1003
+ resolution: {integrity: sha512-2wdgj6eKNVoFNFtYv2xwkzhIJPlJ5L2aV0eKTZHi5dUVrGy+MhgoV8IyyeFpkZQrwwFzbFlnWl1bwyjVBCNapQ==}
1004
+ peerDependencies:
1005
+ '@types/react': '*'
1006
+ '@types/react-dom': '*'
1007
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1008
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1009
+ peerDependenciesMeta:
1010
+ '@types/react':
1011
+ optional: true
1012
+ '@types/react-dom':
1013
+ optional: true
1014
+
1015
  '@radix-ui/react-popper@1.1.3':
1016
  resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==}
1017
  peerDependencies:
 
1025
  '@types/react-dom':
1026
  optional: true
1027
 
1028
+ '@radix-ui/react-popper@1.2.0':
1029
+ resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==}
1030
+ peerDependencies:
1031
+ '@types/react': '*'
1032
+ '@types/react-dom': '*'
1033
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1034
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1035
+ peerDependenciesMeta:
1036
+ '@types/react':
1037
+ optional: true
1038
+ '@types/react-dom':
1039
+ optional: true
1040
+
1041
  '@radix-ui/react-portal@1.0.4':
1042
  resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==}
1043
  peerDependencies:
 
1051
  '@types/react-dom':
1052
  optional: true
1053
 
1054
+ '@radix-ui/react-portal@1.1.0':
1055
+ resolution: {integrity: sha512-0tXZ5O6qAVvuN9SWP0X+zadHf9hzHiMf/vxOU+kXO+fbtS8lS57MXa6EmikDxk9s/Bmkk80+dcxgbvisIyeqxg==}
1056
+ peerDependencies:
1057
+ '@types/react': '*'
1058
+ '@types/react-dom': '*'
1059
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1060
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1061
+ peerDependenciesMeta:
1062
+ '@types/react':
1063
+ optional: true
1064
+ '@types/react-dom':
1065
+ optional: true
1066
+
1067
  '@radix-ui/react-presence@1.0.1':
1068
  resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==}
1069
  peerDependencies:
 
1077
  '@types/react-dom':
1078
  optional: true
1079
 
1080
+ '@radix-ui/react-presence@1.1.0':
1081
+ resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==}
1082
+ peerDependencies:
1083
+ '@types/react': '*'
1084
+ '@types/react-dom': '*'
1085
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1086
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1087
+ peerDependenciesMeta:
1088
+ '@types/react':
1089
+ optional: true
1090
+ '@types/react-dom':
1091
+ optional: true
1092
+
1093
  '@radix-ui/react-primitive@1.0.3':
1094
  resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==}
1095
  peerDependencies:
 
1103
  '@types/react-dom':
1104
  optional: true
1105
 
1106
+ '@radix-ui/react-primitive@2.0.0':
1107
+ resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==}
1108
+ peerDependencies:
1109
+ '@types/react': '*'
1110
+ '@types/react-dom': '*'
1111
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1112
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1113
+ peerDependenciesMeta:
1114
+ '@types/react':
1115
+ optional: true
1116
+ '@types/react-dom':
1117
+ optional: true
1118
+
1119
  '@radix-ui/react-roving-focus@1.0.4':
1120
  resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==}
1121
  peerDependencies:
 
1164
  '@types/react':
1165
  optional: true
1166
 
1167
+ '@radix-ui/react-slot@1.1.0':
1168
+ resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==}
1169
+ peerDependencies:
1170
+ '@types/react': '*'
1171
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1172
+ peerDependenciesMeta:
1173
+ '@types/react':
1174
+ optional: true
1175
+
1176
  '@radix-ui/react-switch@1.0.3':
1177
  resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==}
1178
  peerDependencies:
 
1208
  '@types/react':
1209
  optional: true
1210
 
1211
+ '@radix-ui/react-use-callback-ref@1.1.0':
1212
+ resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==}
1213
+ peerDependencies:
1214
+ '@types/react': '*'
1215
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1216
+ peerDependenciesMeta:
1217
+ '@types/react':
1218
+ optional: true
1219
+
1220
  '@radix-ui/react-use-controllable-state@1.0.1':
1221
  resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==}
1222
  peerDependencies:
 
1226
  '@types/react':
1227
  optional: true
1228
 
1229
+ '@radix-ui/react-use-controllable-state@1.1.0':
1230
+ resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
1231
+ peerDependencies:
1232
+ '@types/react': '*'
1233
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1234
+ peerDependenciesMeta:
1235
+ '@types/react':
1236
+ optional: true
1237
+
1238
  '@radix-ui/react-use-escape-keydown@1.0.3':
1239
  resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==}
1240
  peerDependencies:
 
1244
  '@types/react':
1245
  optional: true
1246
 
1247
+ '@radix-ui/react-use-escape-keydown@1.1.0':
1248
+ resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==}
1249
+ peerDependencies:
1250
+ '@types/react': '*'
1251
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1252
+ peerDependenciesMeta:
1253
+ '@types/react':
1254
+ optional: true
1255
+
1256
  '@radix-ui/react-use-layout-effect@1.0.1':
1257
  resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==}
1258
  peerDependencies:
 
1262
  '@types/react':
1263
  optional: true
1264
 
1265
+ '@radix-ui/react-use-layout-effect@1.1.0':
1266
+ resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==}
1267
+ peerDependencies:
1268
+ '@types/react': '*'
1269
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1270
+ peerDependenciesMeta:
1271
+ '@types/react':
1272
+ optional: true
1273
+
1274
  '@radix-ui/react-use-previous@1.0.1':
1275
  resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==}
1276
  peerDependencies:
 
1289
  '@types/react':
1290
  optional: true
1291
 
1292
+ '@radix-ui/react-use-rect@1.1.0':
1293
+ resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==}
1294
+ peerDependencies:
1295
+ '@types/react': '*'
1296
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1297
+ peerDependenciesMeta:
1298
+ '@types/react':
1299
+ optional: true
1300
+
1301
  '@radix-ui/react-use-size@1.0.1':
1302
  resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==}
1303
  peerDependencies:
 
1307
  '@types/react':
1308
  optional: true
1309
 
1310
+ '@radix-ui/react-use-size@1.1.0':
1311
+ resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==}
1312
+ peerDependencies:
1313
+ '@types/react': '*'
1314
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1315
+ peerDependenciesMeta:
1316
+ '@types/react':
1317
+ optional: true
1318
+
1319
  '@radix-ui/react-visually-hidden@1.0.3':
1320
  resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==}
1321
  peerDependencies:
 
1332
  '@radix-ui/rect@1.0.1':
1333
  resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==}
1334
 
1335
+ '@radix-ui/rect@1.1.0':
1336
+ resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
1337
+
1338
  '@rajesh896/video-thumbnails-generator@2.3.9':
1339
  resolution: {integrity: sha512-tV775KsZpyhaXMG/z+APNBL8bpGSaYgvCmELC7k3z0n6rGcFhsDhFFqJkmguiVR83bNLWth8wdFOGkpsBS3Jzw==}
1340
 
 
3473
  resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
3474
  engines: {node: '>=10'}
3475
 
3476
+ react-day-picker@8.10.1:
3477
+ resolution: {integrity: sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==}
3478
+ peerDependencies:
3479
+ date-fns: ^2.28.0 || ^3.0.0
3480
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
3481
+
3482
  react-dom@18.2.0:
3483
  resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
3484
  peerDependencies:
 
3538
  '@types/react':
3539
  optional: true
3540
 
3541
+ react-remove-scroll@2.5.7:
3542
+ resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==}
3543
+ engines: {node: '>=10'}
3544
+ peerDependencies:
3545
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
3546
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
3547
+ peerDependenciesMeta:
3548
+ '@types/react':
3549
+ optional: true
3550
+
3551
  react-style-singleton@2.2.1:
3552
  resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
3553
  engines: {node: '>=10'}
 
5091
  dependencies:
5092
  '@babel/runtime': 7.24.4
5093
 
5094
+ '@radix-ui/primitive@1.1.0': {}
5095
+
5096
  '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5097
  dependencies:
5098
  '@babel/runtime': 7.24.4
 
5103
  '@types/react': 18.2.79
5104
  '@types/react-dom': 18.2.25
5105
 
5106
+ '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5107
+ dependencies:
5108
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5109
+ react: 18.2.0
5110
+ react-dom: 18.2.0(react@18.2.0)
5111
+ optionalDependencies:
5112
+ '@types/react': 18.2.79
5113
+ '@types/react-dom': 18.2.25
5114
+
5115
  '@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5116
  dependencies:
5117
  '@babel/runtime': 7.24.4
 
5132
  optionalDependencies:
5133
  '@types/react': 18.2.79
5134
 
5135
+ '@radix-ui/react-compose-refs@1.1.0(@types/react@18.2.79)(react@18.2.0)':
5136
+ dependencies:
5137
+ react: 18.2.0
5138
+ optionalDependencies:
5139
+ '@types/react': 18.2.79
5140
+
5141
  '@radix-ui/react-context@1.0.1(@types/react@18.2.79)(react@18.2.0)':
5142
  dependencies:
5143
  '@babel/runtime': 7.24.4
 
5145
  optionalDependencies:
5146
  '@types/react': 18.2.79
5147
 
5148
+ '@radix-ui/react-context@1.1.0(@types/react@18.2.79)(react@18.2.0)':
5149
+ dependencies:
5150
+ react: 18.2.0
5151
+ optionalDependencies:
5152
+ '@types/react': 18.2.79
5153
+
5154
  '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5155
  dependencies:
5156
  '@babel/runtime': 7.24.4
 
5195
  '@types/react': 18.2.79
5196
  '@types/react-dom': 18.2.25
5197
 
5198
+ '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5199
+ dependencies:
5200
+ '@radix-ui/primitive': 1.1.0
5201
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5202
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5203
+ '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5204
+ '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5205
+ react: 18.2.0
5206
+ react-dom: 18.2.0(react@18.2.0)
5207
+ optionalDependencies:
5208
+ '@types/react': 18.2.79
5209
+ '@types/react-dom': 18.2.25
5210
+
5211
  '@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5212
  dependencies:
5213
  '@babel/runtime': 7.24.4
 
5231
  optionalDependencies:
5232
  '@types/react': 18.2.79
5233
 
5234
+ '@radix-ui/react-focus-guards@1.1.0(@types/react@18.2.79)(react@18.2.0)':
5235
+ dependencies:
5236
+ react: 18.2.0
5237
+ optionalDependencies:
5238
+ '@types/react': 18.2.79
5239
+
5240
  '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5241
  dependencies:
5242
  '@babel/runtime': 7.24.4
 
5249
  '@types/react': 18.2.79
5250
  '@types/react-dom': 18.2.25
5251
 
5252
+ '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5253
+ dependencies:
5254
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5255
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5256
+ '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5257
+ react: 18.2.0
5258
+ react-dom: 18.2.0(react@18.2.0)
5259
+ optionalDependencies:
5260
+ '@types/react': 18.2.79
5261
+ '@types/react-dom': 18.2.25
5262
+
5263
  '@radix-ui/react-icons@1.3.0(react@18.2.0)':
5264
  dependencies:
5265
  react: 18.2.0
 
5272
  optionalDependencies:
5273
  '@types/react': 18.2.79
5274
 
5275
+ '@radix-ui/react-id@1.1.0(@types/react@18.2.79)(react@18.2.0)':
5276
+ dependencies:
5277
+ '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5278
+ react: 18.2.0
5279
+ optionalDependencies:
5280
+ '@types/react': 18.2.79
5281
+
5282
  '@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5283
  dependencies:
5284
  '@babel/runtime': 7.24.4
 
5306
  '@types/react': 18.2.79
5307
  '@types/react-dom': 18.2.25
5308
 
5309
+ '@radix-ui/react-popover@1.1.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5310
+ dependencies:
5311
+ '@radix-ui/primitive': 1.1.0
5312
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5313
+ '@radix-ui/react-context': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5314
+ '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5315
+ '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5316
+ '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5317
+ '@radix-ui/react-id': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5318
+ '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5319
+ '@radix-ui/react-portal': 1.1.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5320
+ '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5321
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5322
+ '@radix-ui/react-slot': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5323
+ '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5324
+ aria-hidden: 1.2.4
5325
+ react: 18.2.0
5326
+ react-dom: 18.2.0(react@18.2.0)
5327
+ react-remove-scroll: 2.5.7(@types/react@18.2.79)(react@18.2.0)
5328
+ optionalDependencies:
5329
+ '@types/react': 18.2.79
5330
+ '@types/react-dom': 18.2.25
5331
+
5332
  '@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5333
  dependencies:
5334
  '@babel/runtime': 7.24.4
 
5348
  '@types/react': 18.2.79
5349
  '@types/react-dom': 18.2.25
5350
 
5351
+ '@radix-ui/react-popper@1.2.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5352
+ dependencies:
5353
+ '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5354
+ '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5355
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5356
+ '@radix-ui/react-context': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5357
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5358
+ '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5359
+ '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5360
+ '@radix-ui/react-use-rect': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5361
+ '@radix-ui/react-use-size': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5362
+ '@radix-ui/rect': 1.1.0
5363
+ react: 18.2.0
5364
+ react-dom: 18.2.0(react@18.2.0)
5365
+ optionalDependencies:
5366
+ '@types/react': 18.2.79
5367
+ '@types/react-dom': 18.2.25
5368
+
5369
  '@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5370
  dependencies:
5371
  '@babel/runtime': 7.24.4
 
5376
  '@types/react': 18.2.79
5377
  '@types/react-dom': 18.2.25
5378
 
5379
+ '@radix-ui/react-portal@1.1.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5380
+ dependencies:
5381
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
5382
+ react: 18.2.0
5383
+ react-dom: 18.2.0(react@18.2.0)
5384
+ optionalDependencies:
5385
+ '@types/react': 18.2.79
5386
+ '@types/react-dom': 18.2.25
5387
+
5388
  '@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5389
  dependencies:
5390
  '@babel/runtime': 7.24.4
 
5396
  '@types/react': 18.2.79
5397
  '@types/react-dom': 18.2.25
5398
 
5399
+ '@radix-ui/react-presence@1.1.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5400
+ dependencies:
5401
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5402
+ '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5403
+ react: 18.2.0
5404
+ react-dom: 18.2.0(react@18.2.0)
5405
+ optionalDependencies:
5406
+ '@types/react': 18.2.79
5407
+ '@types/react-dom': 18.2.25
5408
+
5409
  '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5410
  dependencies:
5411
  '@babel/runtime': 7.24.4
 
5416
  '@types/react': 18.2.79
5417
  '@types/react-dom': 18.2.25
5418
 
5419
+ '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5420
+ dependencies:
5421
+ '@radix-ui/react-slot': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5422
+ react: 18.2.0
5423
+ react-dom: 18.2.0(react@18.2.0)
5424
+ optionalDependencies:
5425
+ '@types/react': 18.2.79
5426
+ '@types/react-dom': 18.2.25
5427
+
5428
  '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5429
  dependencies:
5430
  '@babel/runtime': 7.24.4
 
5491
  optionalDependencies:
5492
  '@types/react': 18.2.79
5493
 
5494
+ '@radix-ui/react-slot@1.1.0(@types/react@18.2.79)(react@18.2.0)':
5495
+ dependencies:
5496
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5497
+ react: 18.2.0
5498
+ optionalDependencies:
5499
+ '@types/react': 18.2.79
5500
+
5501
  '@radix-ui/react-switch@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5502
  dependencies:
5503
  '@babel/runtime': 7.24.4
 
5542
  optionalDependencies:
5543
  '@types/react': 18.2.79
5544
 
5545
+ '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.2.79)(react@18.2.0)':
5546
+ dependencies:
5547
+ react: 18.2.0
5548
+ optionalDependencies:
5549
+ '@types/react': 18.2.79
5550
+
5551
  '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.79)(react@18.2.0)':
5552
  dependencies:
5553
  '@babel/runtime': 7.24.4
 
5556
  optionalDependencies:
5557
  '@types/react': 18.2.79
5558
 
5559
+ '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.2.79)(react@18.2.0)':
5560
+ dependencies:
5561
+ '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5562
+ react: 18.2.0
5563
+ optionalDependencies:
5564
+ '@types/react': 18.2.79
5565
+
5566
  '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.79)(react@18.2.0)':
5567
  dependencies:
5568
  '@babel/runtime': 7.24.4
 
5571
  optionalDependencies:
5572
  '@types/react': 18.2.79
5573
 
5574
+ '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.2.79)(react@18.2.0)':
5575
+ dependencies:
5576
+ '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5577
+ react: 18.2.0
5578
+ optionalDependencies:
5579
+ '@types/react': 18.2.79
5580
+
5581
  '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.79)(react@18.2.0)':
5582
  dependencies:
5583
  '@babel/runtime': 7.24.4
 
5585
  optionalDependencies:
5586
  '@types/react': 18.2.79
5587
 
5588
+ '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.2.79)(react@18.2.0)':
5589
+ dependencies:
5590
+ react: 18.2.0
5591
+ optionalDependencies:
5592
+ '@types/react': 18.2.79
5593
+
5594
  '@radix-ui/react-use-previous@1.0.1(@types/react@18.2.79)(react@18.2.0)':
5595
  dependencies:
5596
  '@babel/runtime': 7.24.4
 
5606
  optionalDependencies:
5607
  '@types/react': 18.2.79
5608
 
5609
+ '@radix-ui/react-use-rect@1.1.0(@types/react@18.2.79)(react@18.2.0)':
5610
+ dependencies:
5611
+ '@radix-ui/rect': 1.1.0
5612
+ react: 18.2.0
5613
+ optionalDependencies:
5614
+ '@types/react': 18.2.79
5615
+
5616
  '@radix-ui/react-use-size@1.0.1(@types/react@18.2.79)(react@18.2.0)':
5617
  dependencies:
5618
  '@babel/runtime': 7.24.4
 
5621
  optionalDependencies:
5622
  '@types/react': 18.2.79
5623
 
5624
+ '@radix-ui/react-use-size@1.1.0(@types/react@18.2.79)(react@18.2.0)':
5625
+ dependencies:
5626
+ '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.79)(react@18.2.0)
5627
+ react: 18.2.0
5628
+ optionalDependencies:
5629
+ '@types/react': 18.2.79
5630
+
5631
  '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.25)(@types/react@18.2.79)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
5632
  dependencies:
5633
  '@babel/runtime': 7.24.4
 
5642
  dependencies:
5643
  '@babel/runtime': 7.24.4
5644
 
5645
+ '@radix-ui/rect@1.1.0': {}
5646
+
5647
  '@rajesh896/video-thumbnails-generator@2.3.9': {}
5648
 
5649
  '@rushstack/eslint-patch@1.10.2': {}
 
8271
 
8272
  quick-lru@5.1.1: {}
8273
 
8274
+ react-day-picker@8.10.1(date-fns@3.6.0)(react@18.2.0):
8275
+ dependencies:
8276
+ date-fns: 3.6.0
8277
+ react: 18.2.0
8278
+
8279
  react-dom@18.2.0(react@18.2.0):
8280
  dependencies:
8281
  loose-envify: 1.4.0
 
8348
  optionalDependencies:
8349
  '@types/react': 18.2.79
8350
 
8351
+ react-remove-scroll@2.5.7(@types/react@18.2.79)(react@18.2.0):
8352
+ dependencies:
8353
+ react: 18.2.0
8354
+ react-remove-scroll-bar: 2.3.6(@types/react@18.2.79)(react@18.2.0)
8355
+ react-style-singleton: 2.2.1(@types/react@18.2.79)(react@18.2.0)
8356
+ tslib: 2.6.2
8357
+ use-callback-ref: 1.3.2(@types/react@18.2.79)(react@18.2.0)
8358
+ use-sidecar: 1.1.2(@types/react@18.2.79)(react@18.2.0)
8359
+ optionalDependencies:
8360
+ '@types/react': 18.2.79
8361
+
8362
  react-style-singleton@2.2.1(@types/react@18.2.79)(react@18.2.0):
8363
  dependencies:
8364
  get-nonce: 1.0.1