├── .gitignore
├── .prettierrc.json
├── README.md
├── app
├── auth
│ └── callback
│ │ └── route.ts
├── components
│ ├── email-combobox.tsx
│ ├── email-empty-view.tsx
│ ├── email-list-column.tsx
│ ├── folder-column.tsx
│ ├── search.tsx
│ └── toolbar.tsx
├── db
│ ├── actions.ts
│ ├── queries.ts
│ └── utils.ts
├── f
│ └── [name]
│ │ ├── new
│ │ ├── email-body.tsx
│ │ └── page.tsx
│ │ └── page.tsx
├── favicon.ico
├── globals.css
├── icons
│ ├── arrow-left.tsx
│ ├── arrow-right.tsx
│ ├── email.tsx
│ ├── flag.tsx
│ ├── folder.tsx
│ ├── inbox.tsx
│ ├── search.tsx
│ ├── send.tsx
│ ├── sent.tsx
│ ├── trash.tsx
│ └── user.tsx
├── layout.tsx
├── login
│ └── page.tsx
├── scripts
│ └── setup.js
└── utils
│ └── supabase
│ ├── index.ts
│ └── middleware.ts
├── middleware.ts
├── next.config.js
├── package.json
├── pnpm-lock.yaml
├── postcss.config.js
├── public
└── github-mark-white.png
├── tailwind.config.ts
└── tsconfig.json
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # local env files
29 | .env*.local
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 | .vscode
--------------------------------------------------------------------------------
/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true
3 | }
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Next.js Email Client
2 |
3 | This is a simple email client built with Next.js and Postgres. It's built to show off some of the features of the App Router, which enable you to build products that:
4 |
5 | - Navigate between routes in a column layout while maintaining scroll position (layouts support)
6 | - Submit forms without JavaScript enabled (progressive enhancement)
7 | - Navigate between routes extremely fast (prefetching and caching)
8 | - Retain your UI position on reload (URL state)
9 |
10 | The first version of the UI was built with [v0](https://v0.dev/t/RPsRRQilTDp).
11 |
12 |
13 |
14 | ## Tech
15 |
16 | - [Next.js](https://nextjs.org/)
17 | - [Vercel Postgres](https://vercel.com/docs/storage/vercel-postgres)
18 | - [Tailwind CSS](https://tailwindcss.com/)
19 | - [TypeScript](https://www.typescriptlang.org/)
20 | - [React Aria Components](https://react-spectrum.adobe.com/react-aria/index.html)
21 |
22 | ## Known Issues
23 |
24 | - [ ] Forward / reply / search aren't hooked up yet
25 | - [ ] Need to add a way to manage folders
26 | - [ ] Need to add a way to manage users
27 | - [ ] Fix to/from to pull sender/recipient everywhere
28 | - [ ] Error handling for form submissions
29 | - [x] Add search
30 |
31 | ## Setup
32 |
33 | In order to run this project locally, you'll need to create a Postgres database and add the connection string to your `.env.local` file.
34 |
35 | Further, you'll need to create the tables and insert some sample data.
36 |
37 | Follow these steps to get started:
38 |
39 | 1. Create a Postgres database
40 | 2. Navigate to the `.env.local` tab in the quickstart section Postgres dashboard
41 | 3. Copy the snippet and paste it into your `.env.local` file
42 | 4. Run `pnpm run setup` to create the tables and insert sample data
43 |
44 | ## Schema
45 |
46 | ```
47 | create table users (
48 | id serial primary key,
49 | first_name varchar(50),
50 | last_name varchar(50),
51 | email varchar(255) unique not null
52 | );
53 |
54 | create table emails (
55 | id serial primary key,
56 | sender_id integer references users(id) on delete cascade,
57 | recipient_id integer references users(id) on delete cascade,
58 | subject varchar(255),
59 | body text,
60 | sent_date timestamp default current_timestamp
61 | );
62 |
63 | create table folders (
64 | id serial primary key,
65 | name varchar(50) not null
66 | );
67 |
68 | create table user_folders (
69 | id serial primary key,
70 | user_id integer references users(id) on delete cascade,
71 | folder_id integer references folders(id) on delete cascade
72 | );
73 |
74 | create table email_folders (
75 | id serial primary key,
76 | email_id integer unique references emails(id) on delete cascade,
77 | folder_id integer references folders(id) on delete cascade
78 | );
79 | ```
80 |
81 | ## Sample Data
82 |
83 | ```
84 | insert into users (first_name, last_name, email)
85 | values ('John', 'Doe', 'john.doe@example.com'),
86 | ('Jane', 'Doe', 'jane.doe@example.com'),
87 | ('Alice', 'Smith', 'alice.smith@example.com'),
88 | ('Bob', 'Johnson', 'bob.johnson@example.com');
89 |
90 | insert into emails (sender_id, recipient_id, subject, body, sent_date)
91 | values (1, 2, 'Meeting Reminder', 'Don''t forget about our meeting tomorrow at 10am.', '2022-01-10 09:00:00'),
92 | (1, 3, 'Hello', 'Just wanted to say hello.', '2022-01-09 08:00:00'),
93 | (2, 1, 'Re: Meeting Reminder', 'I won''t be able to make it.', '2022-01-10 10:00:00'),
94 | (3, 1, 'Re: Hello', 'Hello to you too!', '2022-01-09 09:00:00'),
95 | (4, 1, 'Invitation', 'You are invited to my party.', '2022-01-11 07:00:00'),
96 | (1, 2, 'Work Project', 'Let''s discuss the new work project.', '2022-01-12 07:00:00'),
97 | (1, 4, 'Expenses Report', 'Please find the expenses report attached.', '2022-01-13 07:00:00'),
98 | (4, 1, 'Personal Note', 'Let''s catch up sometime.', '2022-01-14 07:00:00');
99 |
100 |
101 | insert into folders (name)
102 | values ('Inbox'),
103 | ('Flagged'),
104 | ('Sent'),
105 | ('Work'),
106 | ('Expenses'),
107 | ('Personal');
108 |
109 | insert into user_folders (user_id, folder_id)
110 | values (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6),
111 | (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6),
112 | (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6),
113 | (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6);
114 |
115 | insert into email_folders (email_id, folder_id)
116 | values (1, 1),
117 | (2, 1),
118 | (3, 3),
119 | (4, 1),
120 | (5, 1),
121 | (6, 4),
122 | (7, 5),
123 | (8, 6);
124 | ```
125 |
126 | ## Database Relationships
127 |
128 | - Users can send and receive emails (users.id -> emails.sender_id and emails.recipient_id)
129 | - Users can have multiple folders (users.id -> user_folders.user_id)
130 | - Folders can contain multiple emails (folders.id -> email_folders.folder_id)
131 | - An email can be in multiple folders (emails.id -> email_folders.email_id)
132 |
--------------------------------------------------------------------------------
/app/auth/callback/route.ts:
--------------------------------------------------------------------------------
1 | import { createClient } from '../../utils/supabase';
2 | import { NextResponse } from 'next/server';
3 |
4 | export async function GET(request: Request) {
5 | const requestUrl = new URL(request.url);
6 | const code = requestUrl.searchParams.get('code');
7 |
8 | if (code) {
9 | const supabase = createClient();
10 | await supabase.auth.exchangeCodeForSession(code);
11 | }
12 |
13 | // URL to redirect to after sign in process completes
14 | return NextResponse.redirect(requestUrl.origin);
15 | }
16 |
--------------------------------------------------------------------------------
/app/components/email-combobox.tsx:
--------------------------------------------------------------------------------
1 | 'use client';
2 |
3 | import {
4 | Button,
5 | ComboBox,
6 | Input,
7 | Item,
8 | Label,
9 | ListBox,
10 | Popover,
11 | } from 'react-aria-components';
12 | import type { ItemProps } from 'react-aria-components';
13 | import { formatEmailString } from '@/app/db/utils';
14 |
15 | type UserEmail = {
16 | first_name: string;
17 | last_name: string;
18 | email: string;
19 | };
20 |
21 | /**
22 | * Shoutout to the React Spectrum team
23 | * https://react-spectrum.adobe.com/react-aria/ComboBox.html
24 | */
25 | export function EmailInputCombobox({
26 | userEmails,
27 | }: {
28 | userEmails: UserEmail[];
29 | }) {
30 | return (
31 |
32 |
33 |
36 |
37 |
43 |
44 |
45 |
46 |
47 |
48 | {(e) => (
49 |
50 |
51 | {formatEmailString(e, { includeFullEmail: true })}
52 |
53 |
54 | )}
55 |
56 |
57 |
58 |
59 | );
60 | }
61 |
62 | function ListBoxItem(props: ItemProps & { children: React.ReactNode }) {
63 | return (
64 | -
68 |
69 | {props.children}
70 |
71 |
72 | );
73 | }
74 |
--------------------------------------------------------------------------------
/app/components/email-empty-view.tsx:
--------------------------------------------------------------------------------
1 | import { Suspense } from 'react';
2 | import { Toolbar, ToolbarSkeleton } from './toolbar';
3 |
4 | export function EmailEmptyView() {
5 | return (
6 |
7 |
}>
8 |
9 |
10 |
11 | No Email Selected
12 |
13 |
14 | );
15 | }
16 |
--------------------------------------------------------------------------------
/app/components/email-list-column.tsx:
--------------------------------------------------------------------------------
1 | import Link from 'next/link';
2 | import { formatEmailString } from '@/app/db/utils';
3 | import { getEmailsForFolder } from '@/app/db/queries';
4 |
5 | export async function EmailListColumn({
6 | folderName,
7 | searchParams,
8 | }: {
9 | folderName: string;
10 | searchParams: { q?: string; id?: string };
11 | }) {
12 | const emails = await getEmailsForFolder(folderName, searchParams.q);
13 |
14 | function createUrl(id: number) {
15 | const baseUrl = `/f/${folderName.toLowerCase()}`;
16 | const params = new URLSearchParams(searchParams);
17 | params.set('id', id.toString());
18 | return `${baseUrl}?${params.toString()}`;
19 | }
20 |
21 | return (
22 |
23 |
24 | {emails.map((email) => (
25 |
26 | -
27 |
28 |
29 | {folderName === 'sent'
30 | ? formatEmailString(email.recipient)
31 | : formatEmailString(email.sender)}
32 |
33 |
34 | {email.subject}
35 |
36 |
37 | {email.body}
38 |
39 |
40 |
43 |
44 |
45 | ))}
46 |
47 |
48 | );
49 | }
50 |
--------------------------------------------------------------------------------
/app/components/folder-column.tsx:
--------------------------------------------------------------------------------
1 | import Link from 'next/link';
2 | import { getFoldersWithEmailCount } from '@/app/db/queries';
3 | import { FlagIcon } from '@/app/icons/flag';
4 | import { FolderIcon } from '@/app/icons/folder';
5 | import { InboxIcon } from '@/app/icons/inbox';
6 | import { SentIcon } from '@/app/icons/sent';
7 | import { UserIcon } from '@/app/icons/user';
8 | import { createClient } from '../utils/supabase';
9 | import { revalidatePath } from 'next/cache';
10 | import Image from 'next/image';
11 |
12 | export async function FolderColumn() {
13 | const { specialFolders, otherFolders } = await getFoldersWithEmailCount();
14 | const supabase = createClient();
15 |
16 | const {
17 | data: { user },
18 | } = await supabase.auth.getUser();
19 |
20 | const logout = async () => {
21 | 'use server';
22 |
23 | const supabase = createClient();
24 |
25 | const { error } = await supabase.auth.signOut();
26 | if (error) {
27 | console.log(error);
28 | }
29 | revalidatePath('/', 'layout');
30 | };
31 |
32 | return (
33 |
34 |
35 |
59 |
60 |
61 | {otherFolders.map((folder, index) => (
62 |
66 | -
67 |
68 | {folder.name}
69 |
70 |
71 | ))}
72 |
73 |
74 |
75 | {user ? (
76 | <>
77 |
84 |
85 |
86 | {user?.user_metadata.user_name}
87 |
88 |
93 |
94 | >
95 | ) : (
96 | <>
97 |
98 |
99 | Login
100 |
101 | >
102 | )}
103 |
104 |
105 | );
106 | }
107 |
--------------------------------------------------------------------------------
/app/components/search.tsx:
--------------------------------------------------------------------------------
1 | 'use client';
2 |
3 | import { SearchIcon } from '@/app/icons/search';
4 | import { usePathname, useRouter, useSearchParams } from 'next/navigation';
5 | import { useDebouncedCallback } from 'use-debounce';
6 |
7 | export function Search() {
8 | const searchParams = useSearchParams();
9 | const { replace } = useRouter();
10 | const pathname = usePathname();
11 |
12 | const handleSearch = useDebouncedCallback((term) => {
13 | const params = new URLSearchParams(searchParams);
14 | if (term) {
15 | params.set('q', term);
16 | } else {
17 | params.delete('q');
18 | }
19 | replace(`${pathname}?${params.toString()}`);
20 | }, 300);
21 |
22 | return (
23 |
24 |
27 | {
31 | handleSearch(e.target.value);
32 | }}
33 | defaultValue={searchParams.get('q')?.toString()}
34 | />
35 |
36 |
37 | );
38 | }
39 |
--------------------------------------------------------------------------------
/app/components/toolbar.tsx:
--------------------------------------------------------------------------------
1 | 'use client';
2 |
3 | import { useParams, useSearchParams } from 'next/navigation';
4 | import { ArrowLeftIcon } from '@/app/icons/arrow-left';
5 | import { ArrowRightIcon } from '@/app/icons/arrow-right';
6 | import { EmailIcon } from '@/app/icons/email';
7 | import { TrashIcon } from '@/app/icons/trash';
8 | import Link from 'next/link';
9 | import { deleteEmail } from '@/app/db/actions';
10 | import { Search } from './search';
11 |
12 | type Params = {
13 | name: string;
14 | };
15 |
16 | export function Toolbar() {
17 | const params: Params = useParams();
18 | const searchParams = useSearchParams();
19 | const emailId = searchParams.get('id');
20 |
21 | return (
22 |
23 |
24 |
28 |
29 |
30 |
47 |
50 |
53 |
54 |
57 |
58 | );
59 | }
60 |
61 | export function ToolbarSkeleton() {
62 | return (
63 |
64 | );
65 | }
66 |
--------------------------------------------------------------------------------
/app/db/actions.ts:
--------------------------------------------------------------------------------
1 | 'use server';
2 |
3 | import { revalidatePath } from 'next/cache';
4 | import { z } from 'zod';
5 | import { redirect } from 'next/navigation';
6 | import { createClient } from '../utils/supabase';
7 |
8 | const schema = z.object({
9 | subject: z.string(),
10 | recipient_email: z.string().email(),
11 | body: z.string(),
12 | });
13 |
14 | export async function sendEmail(formData: FormData) {
15 | const parsed = schema.parse({
16 | subject: formData.get('subject'),
17 | recipient_email: formData.get('email'),
18 | body: formData.get('body'),
19 | });
20 |
21 | const supabase = createClient();
22 |
23 | const { data: newEmailId, error } = await supabase.rpc('send_email', parsed);
24 |
25 | if (error) {
26 | console.log(error);
27 | }
28 |
29 | revalidatePath('/', 'layout'); // Revalidate all data
30 | redirect(`/f/sent?id=${newEmailId}`);
31 | }
32 |
33 | export async function deleteEmail(folderName: string, emailId: string) {
34 | const supabase = createClient();
35 |
36 | const { error } = await supabase
37 | .from('emails')
38 | .delete()
39 | .match({ id: emailId });
40 |
41 | if (error) {
42 | console.log(error);
43 | }
44 |
45 | revalidatePath('/', 'layout'); // Revalidate all data
46 | redirect(`/f/${folderName}`);
47 | }
48 |
--------------------------------------------------------------------------------
/app/db/queries.ts:
--------------------------------------------------------------------------------
1 | import { toTitleCase } from './utils';
2 | import { createClient } from '../utils/supabase';
3 |
4 | type Folder = {
5 | name: string;
6 | email_count: string;
7 | };
8 |
9 | type UserEmail = {
10 | first_name: string;
11 | last_name: string;
12 | email: string;
13 | };
14 |
15 | type EmailWithSenderAndRecipient = {
16 | id: number;
17 | sender_id: number;
18 | recipient_id: number;
19 | subject: string;
20 | body: string;
21 | sent_date: Date;
22 | sender: UserEmail;
23 | recipient: UserEmail;
24 | };
25 |
26 | export async function getFoldersWithEmailCount() {
27 | const supabase = createClient();
28 |
29 | const { data } = await supabase
30 | .from('folders_with_email_count')
31 | .select()
32 | .returns();
33 |
34 | const specialFoldersOrder = ['Inbox', 'Flagged', 'Sent'];
35 |
36 | const specialFolders = (specialFoldersOrder
37 | .map((name) => data?.find((folder) => folder.name === name))
38 | .filter(Boolean) ?? []) as Folder[];
39 |
40 | const otherFolders = (data?.filter(
41 | (folder) => !specialFoldersOrder.includes(folder.name)
42 | ) ?? []) as Folder[];
43 |
44 | return { specialFolders, otherFolders };
45 | }
46 |
47 | export async function getEmailsForFolder(folderName: string, search?: string) {
48 | const originalFolderName = toTitleCase(decodeURIComponent(folderName));
49 |
50 | const supabase = createClient();
51 |
52 | if (search === undefined) {
53 | const { data } = await supabase
54 | .from('emails_with_folder_and_users')
55 | .select()
56 | .match({ folder_name: originalFolderName })
57 | .order('sent_date', { ascending: false })
58 | .returns();
59 |
60 | return data ?? ([] as EmailWithSenderAndRecipient[]);
61 | }
62 |
63 | const orFilter = [
64 | 'subject',
65 | 'body',
66 | 'recipient->>first_name',
67 | 'recipient->>last_name',
68 | 'recipient->>email',
69 | 'sender->>first_name',
70 | 'sender->>last_name',
71 | 'sender->>email',
72 | ]
73 | .map((filter) => `${filter}.ilike.%${search}%`)
74 | .join(',');
75 |
76 | const { data } = await supabase
77 | .from('emails_with_folder_and_users')
78 | .select()
79 | .match({ folder_name: originalFolderName })
80 | .or(orFilter)
81 | .order('sent_date', { ascending: false })
82 | .returns();
83 |
84 | return data ?? ([] as EmailWithSenderAndRecipient[]);
85 | }
86 |
87 | export async function getEmailInFolder(folderName: string, emailId: string) {
88 | const originalFolderName = toTitleCase(decodeURIComponent(folderName));
89 |
90 | const supabase = createClient();
91 |
92 | const { data } = await supabase
93 | .from('emails_with_folder_and_users')
94 | .select()
95 | .match({ folder_name: originalFolderName, id: emailId })
96 | .order('sent_date', { ascending: false })
97 | .returns()
98 | .single();
99 |
100 | return data as EmailWithSenderAndRecipient;
101 | }
102 |
103 | export async function getAllEmailAddresses() {
104 | const supabase = createClient();
105 |
106 | const { data } = await supabase
107 | .from('users')
108 | .select('first_name, last_name, email');
109 |
110 | return (data ?? []) as UserEmail[];
111 | }
112 |
--------------------------------------------------------------------------------
/app/db/utils.ts:
--------------------------------------------------------------------------------
1 | type UserEmail = {
2 | first_name: string;
3 | last_name: string;
4 | email: string;
5 | };
6 |
7 | export function formatEmailString(
8 | userEmail: UserEmail,
9 | opts: { includeFullEmail: boolean } = { includeFullEmail: false }
10 | ) {
11 | if (userEmail.first_name && userEmail.last_name) {
12 | return `${userEmail.first_name} ${userEmail.last_name} ${
13 | opts.includeFullEmail ? `<${userEmail.email}>` : ''
14 | }`;
15 | }
16 | return userEmail.email;
17 | }
18 |
19 | export function toTitleCase(str: string) {
20 | return str.replace(/\w\S*/g, function (txt: string) {
21 | return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();
22 | });
23 | }
24 |
--------------------------------------------------------------------------------
/app/f/[name]/new/email-body.tsx:
--------------------------------------------------------------------------------
1 | 'use client';
2 |
3 | export function EmailBody() {
4 | const handleKeyDown = (e: React.KeyboardEvent) => {
5 | if (
6 | (e.ctrlKey || e.metaKey) &&
7 | (e.key === 'Enter' || e.key === 'NumpadEnter')
8 | ) {
9 | e.preventDefault();
10 | e.currentTarget.form?.requestSubmit();
11 | }
12 | };
13 |
14 | return (
15 |
16 |
23 |
24 | );
25 | }
26 |
--------------------------------------------------------------------------------
/app/f/[name]/new/page.tsx:
--------------------------------------------------------------------------------
1 | import { EmailInputCombobox } from '@/app/components/email-combobox';
2 | import { sendEmail } from '@/app/db/actions';
3 | import { getAllEmailAddresses } from '@/app/db/queries';
4 | import { SendIcon } from '@/app/icons/send';
5 | import { EmailBody } from './email-body';
6 | import { FolderColumn } from '@/app/components/folder-column';
7 |
8 | export const dynamic = 'force-dynamic';
9 |
10 | export default function Page() {
11 | return (
12 |
13 |
14 |
15 |
16 | );
17 | }
18 |
19 | async function Compose() {
20 | const userEmails = await getAllEmailAddresses();
21 |
22 | return (
23 |
65 | );
66 | }
67 |
--------------------------------------------------------------------------------
/app/f/[name]/page.tsx:
--------------------------------------------------------------------------------
1 | import { getEmailInFolder } from '@/app/db/queries';
2 | import { formatEmailString } from '@/app/db/utils';
3 | import { Toolbar, ToolbarSkeleton } from '@/app/components/toolbar';
4 | import { EmailListColumn } from '@/app/components/email-list-column';
5 | import { FolderColumn } from '@/app/components/folder-column';
6 | import { EmailEmptyView } from '@/app/components/email-empty-view';
7 | import { Suspense } from 'react';
8 |
9 | /**
10 | * v0 by Vercel.
11 | * @see https://v0.dev/t/RPsRRQilTDp
12 | */
13 | export default function EmailPage({
14 | params,
15 | searchParams,
16 | }: {
17 | params: { name: string; id: string };
18 | searchParams: { q?: string; id?: string };
19 | }) {
20 | return (
21 |
22 |
23 |
24 | }>
25 |
29 |
30 |
31 | );
32 | }
33 |
34 | async function SelectedEmailColumn({
35 | folderName,
36 | searchParams,
37 | }: {
38 | folderName: string;
39 | searchParams: { q?: string; id?: string };
40 | }) {
41 | if (!searchParams.id) {
42 | return ;
43 | }
44 |
45 | const email = await getEmailInFolder(folderName, searchParams.id);
46 |
47 | return (
48 |
49 |
}>
50 |
51 |
52 |
53 |
54 |
{email.subject}
55 |
56 | {`From: ${
57 | folderName === 'sent' ? 'Me' : formatEmailString(email.sender)
58 | }`}
59 |
60 |
61 | {`To: ${
62 | folderName === 'sent' ? formatEmailString(email.recipient) : 'Me'
63 | }`}
64 |
65 |
68 |
69 |
72 |
73 |
74 | );
75 | }
76 |
--------------------------------------------------------------------------------
/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dijonmusters/nextjs-supabase-email-client/bd1121f94cfb26f7a42a4efd249e9426fbbb87b1/app/favicon.ico
--------------------------------------------------------------------------------
/app/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/app/icons/arrow-left.tsx:
--------------------------------------------------------------------------------
1 | export function ArrowLeftIcon() {
2 | return (
3 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/app/icons/arrow-right.tsx:
--------------------------------------------------------------------------------
1 | export function ArrowRightIcon() {
2 | return (
3 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/app/icons/email.tsx:
--------------------------------------------------------------------------------
1 | export function EmailIcon() {
2 | return (
3 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/app/icons/flag.tsx:
--------------------------------------------------------------------------------
1 | export function FlagIcon() {
2 | return (
3 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/app/icons/folder.tsx:
--------------------------------------------------------------------------------
1 | export function FolderIcon() {
2 | return (
3 |
17 | );
18 | }
19 |
--------------------------------------------------------------------------------
/app/icons/inbox.tsx:
--------------------------------------------------------------------------------
1 | export function InboxIcon() {
2 | return (
3 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/app/icons/search.tsx:
--------------------------------------------------------------------------------
1 | export function SearchIcon({ className }: { className: string }) {
2 | return (
3 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/app/icons/send.tsx:
--------------------------------------------------------------------------------
1 | export function SendIcon() {
2 | return (
3 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/app/icons/sent.tsx:
--------------------------------------------------------------------------------
1 | export function SentIcon() {
2 | return (
3 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/app/icons/trash.tsx:
--------------------------------------------------------------------------------
1 | export function TrashIcon() {
2 | return (
3 |
19 | );
20 | }
21 |
--------------------------------------------------------------------------------
/app/icons/user.tsx:
--------------------------------------------------------------------------------
1 | export function UserIcon() {
2 | return (
3 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import type { Metadata } from 'next';
2 | import { GeistSans } from 'geist/font/sans';
3 | import './globals.css';
4 |
5 | export const metadata: Metadata = {
6 | title: 'Next.js Mail',
7 | description: 'An email client template using the Next.js App Router.',
8 | };
9 |
10 | export default function RootLayout({
11 | children,
12 | }: {
13 | children: React.ReactNode;
14 | }) {
15 | return (
16 |
20 | {children}
21 |
22 | );
23 | }
24 |
--------------------------------------------------------------------------------
/app/login/page.tsx:
--------------------------------------------------------------------------------
1 | import Image from 'next/image';
2 | import { createClient } from '../utils/supabase';
3 | import { redirect } from 'next/navigation';
4 | import { headers } from 'next/headers';
5 |
6 | export default function LoginForm() {
7 | const signIn = async () => {
8 | 'use server';
9 |
10 | // 1. Create a Supabase client
11 | const supabase = createClient();
12 | const origin = headers().get('origin');
13 | // 2. Sign in with GitHub
14 | const { error, data } = await supabase.auth.signInWithOAuth({
15 | provider: 'github',
16 | options: {
17 | redirectTo: `${origin}/auth/callback`,
18 | },
19 | });
20 |
21 | if (error) {
22 | console.log(error);
23 | } else {
24 | return redirect(data.url);
25 | }
26 | // 3. Redirect to landing page
27 | };
28 |
29 | return (
30 |
45 | );
46 | }
47 |
--------------------------------------------------------------------------------
/app/scripts/setup.js:
--------------------------------------------------------------------------------
1 | const { db } = require("@vercel/postgres");
2 |
3 | async function clear(client) {
4 | try {
5 | const clearResult = await client.sql`
6 | DROP TABLE IF EXISTS email_folders;
7 | DROP TABLE IF EXISTS user_folders;
8 | DROP TABLE IF EXISTS folders;
9 | DROP TABLE IF EXISTS emails;
10 | DROP TABLE IF EXISTS users;
11 | `;
12 | console.log(`Cleared ${clearResult.length} tables`);
13 | return clearResult;
14 | } catch (err) {
15 | console.error("Error clearing tables:", err);
16 | throw err;
17 | }
18 | }
19 |
20 | async function setup(client) {
21 | try {
22 | const migrateResult = await client.sql`
23 | CREATE TABLE users (
24 | id SERIAL PRIMARY KEY,
25 | first_name VARCHAR(50),
26 | last_name VARCHAR(50),
27 | email VARCHAR(255) UNIQUE NOT NULL
28 | );
29 |
30 | CREATE TABLE emails (
31 | id SERIAL PRIMARY KEY,
32 | sender_id INTEGER REFERENCES users(id),
33 | recipient_id INTEGER REFERENCES users(id),
34 | subject VARCHAR(255),
35 | body TEXT,
36 | sent_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
37 | );
38 |
39 | CREATE TABLE folders (
40 | id SERIAL PRIMARY KEY,
41 | name VARCHAR(50) NOT NULL
42 | );
43 |
44 | CREATE TABLE user_folders (
45 | id SERIAL PRIMARY KEY,
46 | user_id INTEGER REFERENCES users(id),
47 | folder_id INTEGER REFERENCES folders(id)
48 | );
49 |
50 | CREATE TABLE email_folders (
51 | id SERIAL PRIMARY KEY,
52 | email_id INTEGER REFERENCES emails(id),
53 | folder_id INTEGER REFERENCES folders(id)
54 | );
55 | `;
56 |
57 | console.log(`Successfully created ${migrateResult.length} tables`);
58 | return migrateResult;
59 | } catch (err) {
60 | console.error("Error creating tables:", err);
61 | throw err;
62 | }
63 | }
64 |
65 | async function seed(client) {
66 | try {
67 | const seedResult = await client.sql`
68 | INSERT INTO users (first_name, last_name, email)
69 | VALUES ('John', 'Doe', 'john.doe@example.com'),
70 | ('Jane', 'Doe', 'jane.doe@example.com'),
71 | ('Alice', 'Smith', 'alice.smith@example.com'),
72 | ('Bob', 'Johnson', 'bob.johnson@example.com');
73 |
74 | INSERT INTO emails (sender_id, recipient_id, subject, body, sent_date)
75 | VALUES (1, 2, 'Meeting Reminder', 'Don''t forget about our meeting tomorrow at 10am.', '2022-01-10 09:00:00'),
76 | (1, 3, 'Hello', 'Just wanted to say hello.', '2022-01-09 08:00:00'),
77 | (2, 1, 'Re: Meeting Reminder', 'I won''t be able to make it.', '2022-01-10 10:00:00'),
78 | (3, 1, 'Re: Hello', 'Hello to you too!', '2022-01-09 09:00:00'),
79 | (4, 1, 'Invitation', 'You are invited to my party.', '2022-01-11 07:00:00'),
80 | (1, 2, 'Work Project', 'Let''s discuss the new work project.', '2022-01-12 07:00:00'),
81 | (1, 4, 'Expenses Report', 'Please find the expenses report attached.', '2022-01-13 07:00:00'),
82 | (4, 1, 'Personal Note', 'Let''s catch up sometime.', '2022-01-14 07:00:00');
83 |
84 | INSERT INTO folders (name)
85 | VALUES ('Inbox'),
86 | ('Flagged'),
87 | ('Sent'),
88 | ('Work'),
89 | ('Expenses'),
90 | ('Personal');
91 |
92 | INSERT INTO user_folders (user_id, folder_id)
93 | VALUES (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6),
94 | (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6),
95 | (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6),
96 | (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6);
97 |
98 | INSERT INTO email_folders (email_id, folder_id)
99 | VALUES (1, 1),
100 | (2, 1),
101 | (3, 3),
102 | (4, 1),
103 | (5, 1),
104 | (6, 4),
105 | (7, 5),
106 | (8, 6);
107 | `;
108 |
109 | console.log("Successfully seeded database");
110 | return seedResult;
111 | } catch (err) {
112 | console.error("Error seeding database:", err);
113 | throw err;
114 | }
115 | }
116 |
117 | async function main() {
118 | const client = await db.connect();
119 |
120 | await clear(client);
121 | await setup(client);
122 | await seed(client);
123 |
124 | await client.end();
125 | }
126 |
127 | main().catch((err) => {
128 | console.error(
129 | "An error occurred while attempting to setup the database:",
130 | err
131 | );
132 | });
133 |
--------------------------------------------------------------------------------
/app/utils/supabase/index.ts:
--------------------------------------------------------------------------------
1 | import { createServerClient, type CookieOptions } from '@supabase/ssr';
2 | import { cookies } from 'next/headers';
3 |
4 | export const createClient = () => {
5 | const cookieStore = cookies();
6 |
7 | return createServerClient(
8 | process.env.NEXT_PUBLIC_SUPABASE_URL!,
9 | process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
10 | {
11 | cookies: {
12 | get(name: string) {
13 | return cookieStore.get(name)?.value;
14 | },
15 | set(name: string, value: string, options: CookieOptions) {
16 | try {
17 | cookieStore.set({ name, value, ...options });
18 | } catch (error) {
19 | // The `set` method was called from a Server Component.
20 | // This can be ignored if you have middleware refreshing
21 | // user sessions.
22 | }
23 | },
24 | remove(name: string, options: CookieOptions) {
25 | try {
26 | cookieStore.set({ name, value: '', ...options });
27 | } catch (error) {
28 | // The `delete` method was called from a Server Component.
29 | // This can be ignored if you have middleware refreshing
30 | // user sessions.
31 | }
32 | },
33 | },
34 | }
35 | );
36 | };
37 |
--------------------------------------------------------------------------------
/app/utils/supabase/middleware.ts:
--------------------------------------------------------------------------------
1 | import { createServerClient, type CookieOptions } from '@supabase/ssr';
2 | import { type NextRequest, NextResponse } from 'next/server';
3 |
4 | export const createClient = (request: NextRequest) => {
5 | // Create an unmodified response
6 | let response = NextResponse.next({
7 | request: {
8 | headers: request.headers,
9 | },
10 | });
11 |
12 | const supabase = createServerClient(
13 | process.env.NEXT_PUBLIC_SUPABASE_URL!,
14 | process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
15 | {
16 | cookies: {
17 | get(name: string) {
18 | return request.cookies.get(name)?.value;
19 | },
20 | set(name: string, value: string, options: CookieOptions) {
21 | // If the cookie is updated, update the cookies for the request and response
22 | request.cookies.set({
23 | name,
24 | value,
25 | ...options,
26 | });
27 | response = NextResponse.next({
28 | request: {
29 | headers: request.headers,
30 | },
31 | });
32 | response.cookies.set({
33 | name,
34 | value,
35 | ...options,
36 | });
37 | },
38 | remove(name: string, options: CookieOptions) {
39 | // If the cookie is removed, update the cookies for the request and response
40 | request.cookies.set({
41 | name,
42 | value: '',
43 | ...options,
44 | });
45 | response = NextResponse.next({
46 | request: {
47 | headers: request.headers,
48 | },
49 | });
50 | response.cookies.set({
51 | name,
52 | value: '',
53 | ...options,
54 | });
55 | },
56 | },
57 | }
58 | );
59 |
60 | return { supabase, response };
61 | };
62 |
--------------------------------------------------------------------------------
/middleware.ts:
--------------------------------------------------------------------------------
1 | import { NextResponse, type NextRequest } from 'next/server';
2 | import { createClient } from './app/utils/supabase/middleware';
3 |
4 | export async function middleware(request: NextRequest) {
5 | const { supabase, response } = createClient(request);
6 | const {
7 | data: { user },
8 | } = await supabase.auth.getUser();
9 |
10 | if (!user) {
11 | return NextResponse.redirect(new URL('/login', request.url));
12 | }
13 | return response;
14 | }
15 |
16 | export const config = {
17 | matcher: [
18 | '/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)',
19 | ],
20 | };
21 |
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | redirects() {
4 | return [
5 | {
6 | source: '/',
7 | destination: '/f/inbox',
8 | permanent: false,
9 | },
10 | ];
11 | },
12 | images: {
13 | remotePatterns: [
14 | {
15 | protocol: 'https',
16 | hostname: 'avatars.githubusercontent.com',
17 | },
18 | ],
19 | },
20 | };
21 |
22 | module.exports = nextConfig;
23 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "dev": "next dev",
5 | "build": "next build",
6 | "start": "next start",
7 | "setup": "node -r dotenv/config ./app/scripts/setup.js dotenv_config_path=.env.local"
8 | },
9 | "dependencies": {
10 | "@supabase/ssr": "^0.1.0",
11 | "@supabase/supabase-js": "^2.38.5",
12 | "@vercel/postgres": "^0.5.1",
13 | "geist": "^1.1.0",
14 | "next": "14.0.1",
15 | "react": "^18.2.0",
16 | "react-aria-components": "1.0.0-beta.2",
17 | "react-dom": "^18.2.0",
18 | "tailwindcss-react-aria-components": "1.0.0-beta.1",
19 | "use-debounce": "^10.0.0",
20 | "zod": "^3.22.4"
21 | },
22 | "devDependencies": {
23 | "@types/node": "^20.9.0",
24 | "@types/react": "^18.2.37",
25 | "@types/react-dom": "^18.2.15",
26 | "autoprefixer": "^10.4.16",
27 | "dotenv": "^16.3.1",
28 | "postcss": "^8.4.31",
29 | "tailwindcss": "^3.3.5",
30 | "typescript": "^5.2.2"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | '@supabase/ssr':
9 | specifier: ^0.1.0
10 | version: 0.1.0(@supabase/supabase-js@2.38.5)
11 | '@supabase/supabase-js':
12 | specifier: ^2.38.5
13 | version: 2.38.5
14 | '@vercel/postgres':
15 | specifier: ^0.5.1
16 | version: 0.5.1
17 | geist:
18 | specifier: ^1.1.0
19 | version: 1.1.0(next@14.0.1)
20 | next:
21 | specifier: 14.0.1
22 | version: 14.0.1(react-dom@18.2.0)(react@18.2.0)
23 | react:
24 | specifier: ^18.2.0
25 | version: 18.2.0
26 | react-aria-components:
27 | specifier: 1.0.0-beta.2
28 | version: 1.0.0-beta.2(react-dom@18.2.0)(react@18.2.0)
29 | react-dom:
30 | specifier: ^18.2.0
31 | version: 18.2.0(react@18.2.0)
32 | tailwindcss-react-aria-components:
33 | specifier: 1.0.0-beta.1
34 | version: 1.0.0-beta.1(tailwindcss@3.3.5)
35 | use-debounce:
36 | specifier: ^10.0.0
37 | version: 10.0.0(react@18.2.0)
38 | zod:
39 | specifier: ^3.22.4
40 | version: 3.22.4
41 |
42 | devDependencies:
43 | '@types/node':
44 | specifier: ^20.9.0
45 | version: 20.9.0
46 | '@types/react':
47 | specifier: ^18.2.37
48 | version: 18.2.37
49 | '@types/react-dom':
50 | specifier: ^18.2.15
51 | version: 18.2.15
52 | autoprefixer:
53 | specifier: ^10.4.16
54 | version: 10.4.16(postcss@8.4.31)
55 | dotenv:
56 | specifier: ^16.3.1
57 | version: 16.3.1
58 | postcss:
59 | specifier: ^8.4.31
60 | version: 8.4.31
61 | tailwindcss:
62 | specifier: ^3.3.5
63 | version: 3.3.5
64 | typescript:
65 | specifier: ^5.2.2
66 | version: 5.2.2
67 |
68 | packages:
69 |
70 | /@alloc/quick-lru@5.2.0:
71 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
72 | engines: {node: '>=10'}
73 |
74 | /@formatjs/ecma402-abstract@1.17.3:
75 | resolution: {integrity: sha512-2Q4hmKQ6CM30mRG/YMdSBW8LXf32BfuOb1FZgG+uVWPC/SQMoiVFz5JaeOukt96v6TZ4ddE+bHCmd611PW38QA==}
76 | dependencies:
77 | '@formatjs/intl-localematcher': 0.5.0
78 | tslib: 2.6.2
79 | dev: false
80 |
81 | /@formatjs/fast-memoize@2.2.0:
82 | resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==}
83 | dependencies:
84 | tslib: 2.6.2
85 | dev: false
86 |
87 | /@formatjs/icu-messageformat-parser@2.7.1:
88 | resolution: {integrity: sha512-ErnXyRdk8AlpGcKskKVYn23aAlWXhI1kt5ek2o3pJwVeMTcrosSESQ8baztdTtJjfQHlB4NBeocfRA5C6DKv2g==}
89 | dependencies:
90 | '@formatjs/ecma402-abstract': 1.17.3
91 | '@formatjs/icu-skeleton-parser': 1.6.3
92 | tslib: 2.6.2
93 | dev: false
94 |
95 | /@formatjs/icu-skeleton-parser@1.6.3:
96 | resolution: {integrity: sha512-Viggz4Pic7oC4uR8z2VroL8H9boiUTTB0TqEsiRb6DHZv7QEcg1BoVQZBkBdLmvxhBS7nwBNrTdbaiW8GOV58Q==}
97 | dependencies:
98 | '@formatjs/ecma402-abstract': 1.17.3
99 | tslib: 2.6.2
100 | dev: false
101 |
102 | /@formatjs/intl-localematcher@0.5.0:
103 | resolution: {integrity: sha512-K1Xpg/8oyfCMxisJQa/fILoeoeyndcM0wcN8QiNG/uM5OAe1BcO1+2yd0gIboDI2tRJEsUi/sSBEYPbgkIdq4A==}
104 | dependencies:
105 | tslib: 2.6.2
106 | dev: false
107 |
108 | /@internationalized/date@3.5.0:
109 | resolution: {integrity: sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ==}
110 | dependencies:
111 | '@swc/helpers': 0.5.3
112 | dev: false
113 |
114 | /@internationalized/message@3.1.1:
115 | resolution: {integrity: sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw==}
116 | dependencies:
117 | '@swc/helpers': 0.5.3
118 | intl-messageformat: 10.5.5
119 | dev: false
120 |
121 | /@internationalized/number@3.3.0:
122 | resolution: {integrity: sha512-PuxgnKE5NJMOGKUcX1QROo8jq7sW7UWLrL5B6Rfe8BdWgU/be04cVvLyCeALD46vvbAv3d1mUvyHav/Q9a237g==}
123 | dependencies:
124 | '@swc/helpers': 0.5.3
125 | dev: false
126 |
127 | /@internationalized/string@3.1.1:
128 | resolution: {integrity: sha512-fvSr6YRoVPgONiVIUhgCmIAlifMVCeej/snPZVzbzRPxGpHl3o1GRe+d/qh92D8KhgOciruDUH8I5mjdfdjzfA==}
129 | dependencies:
130 | '@swc/helpers': 0.5.3
131 | dev: false
132 |
133 | /@jridgewell/gen-mapping@0.3.3:
134 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
135 | engines: {node: '>=6.0.0'}
136 | dependencies:
137 | '@jridgewell/set-array': 1.1.2
138 | '@jridgewell/sourcemap-codec': 1.4.15
139 | '@jridgewell/trace-mapping': 0.3.20
140 |
141 | /@jridgewell/resolve-uri@3.1.1:
142 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
143 | engines: {node: '>=6.0.0'}
144 |
145 | /@jridgewell/set-array@1.1.2:
146 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
147 | engines: {node: '>=6.0.0'}
148 |
149 | /@jridgewell/sourcemap-codec@1.4.15:
150 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
151 |
152 | /@jridgewell/trace-mapping@0.3.20:
153 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
154 | dependencies:
155 | '@jridgewell/resolve-uri': 3.1.1
156 | '@jridgewell/sourcemap-codec': 1.4.15
157 |
158 | /@neondatabase/serverless@0.6.0:
159 | resolution: {integrity: sha512-qXxBRYN0m2v8kVQBfMxbzNGn2xFAhTXFibzQlE++NfJ56Shz3m7+MyBBtXDlEH+3Wfa6lToDXf1MElocY4sJ3w==}
160 | dependencies:
161 | '@types/pg': 8.6.6
162 | dev: false
163 |
164 | /@next/env@14.0.1:
165 | resolution: {integrity: sha512-Ms8ZswqY65/YfcjrlcIwMPD7Rg/dVjdLapMcSHG26W6O67EJDF435ShW4H4LXi1xKO1oRc97tLXUpx8jpLe86A==}
166 | dev: false
167 |
168 | /@next/swc-darwin-arm64@14.0.1:
169 | resolution: {integrity: sha512-JyxnGCS4qT67hdOKQ0CkgFTp+PXub5W1wsGvIq98TNbF3YEIN7iDekYhYsZzc8Ov0pWEsghQt+tANdidITCLaw==}
170 | engines: {node: '>= 10'}
171 | cpu: [arm64]
172 | os: [darwin]
173 | requiresBuild: true
174 | dev: false
175 | optional: true
176 |
177 | /@next/swc-darwin-x64@14.0.1:
178 | resolution: {integrity: sha512-625Z7bb5AyIzswF9hvfZWa+HTwFZw+Jn3lOBNZB87lUS0iuCYDHqk3ujuHCkiyPtSC0xFBtYDLcrZ11mF/ap3w==}
179 | engines: {node: '>= 10'}
180 | cpu: [x64]
181 | os: [darwin]
182 | requiresBuild: true
183 | dev: false
184 | optional: true
185 |
186 | /@next/swc-linux-arm64-gnu@14.0.1:
187 | resolution: {integrity: sha512-iVpn3KG3DprFXzVHM09kvb//4CNNXBQ9NB/pTm8LO+vnnnaObnzFdS5KM+w1okwa32xH0g8EvZIhoB3fI3mS1g==}
188 | engines: {node: '>= 10'}
189 | cpu: [arm64]
190 | os: [linux]
191 | requiresBuild: true
192 | dev: false
193 | optional: true
194 |
195 | /@next/swc-linux-arm64-musl@14.0.1:
196 | resolution: {integrity: sha512-mVsGyMxTLWZXyD5sen6kGOTYVOO67lZjLApIj/JsTEEohDDt1im2nkspzfV5MvhfS7diDw6Rp/xvAQaWZTv1Ww==}
197 | engines: {node: '>= 10'}
198 | cpu: [arm64]
199 | os: [linux]
200 | requiresBuild: true
201 | dev: false
202 | optional: true
203 |
204 | /@next/swc-linux-x64-gnu@14.0.1:
205 | resolution: {integrity: sha512-wMqf90uDWN001NqCM/auRl3+qVVeKfjJdT9XW+RMIOf+rhUzadmYJu++tp2y+hUbb6GTRhT+VjQzcgg/QTD9NQ==}
206 | engines: {node: '>= 10'}
207 | cpu: [x64]
208 | os: [linux]
209 | requiresBuild: true
210 | dev: false
211 | optional: true
212 |
213 | /@next/swc-linux-x64-musl@14.0.1:
214 | resolution: {integrity: sha512-ol1X1e24w4j4QwdeNjfX0f+Nza25n+ymY0T2frTyalVczUmzkVD7QGgPTZMHfR1aLrO69hBs0G3QBYaj22J5GQ==}
215 | engines: {node: '>= 10'}
216 | cpu: [x64]
217 | os: [linux]
218 | requiresBuild: true
219 | dev: false
220 | optional: true
221 |
222 | /@next/swc-win32-arm64-msvc@14.0.1:
223 | resolution: {integrity: sha512-WEmTEeWs6yRUEnUlahTgvZteh5RJc4sEjCQIodJlZZ5/VJwVP8p2L7l6VhzQhT4h7KvLx/Ed4UViBdne6zpIsw==}
224 | engines: {node: '>= 10'}
225 | cpu: [arm64]
226 | os: [win32]
227 | requiresBuild: true
228 | dev: false
229 | optional: true
230 |
231 | /@next/swc-win32-ia32-msvc@14.0.1:
232 | resolution: {integrity: sha512-oFpHphN4ygAgZUKjzga7SoH2VGbEJXZa/KL8bHCAwCjDWle6R1SpiGOdUdA8EJ9YsG1TYWpzY6FTbUA+iAJeww==}
233 | engines: {node: '>= 10'}
234 | cpu: [ia32]
235 | os: [win32]
236 | requiresBuild: true
237 | dev: false
238 | optional: true
239 |
240 | /@next/swc-win32-x64-msvc@14.0.1:
241 | resolution: {integrity: sha512-FFp3nOJ/5qSpeWT0BZQ+YE1pSMk4IMpkME/1DwKBwhg4mJLB9L+6EXuJi4JEwaJdl5iN+UUlmUD3IsR1kx5fAg==}
242 | engines: {node: '>= 10'}
243 | cpu: [x64]
244 | os: [win32]
245 | requiresBuild: true
246 | dev: false
247 | optional: true
248 |
249 | /@nodelib/fs.scandir@2.1.5:
250 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
251 | engines: {node: '>= 8'}
252 | dependencies:
253 | '@nodelib/fs.stat': 2.0.5
254 | run-parallel: 1.2.0
255 |
256 | /@nodelib/fs.stat@2.0.5:
257 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
258 | engines: {node: '>= 8'}
259 |
260 | /@nodelib/fs.walk@1.2.8:
261 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
262 | engines: {node: '>= 8'}
263 | dependencies:
264 | '@nodelib/fs.scandir': 2.1.5
265 | fastq: 1.15.0
266 |
267 | /@react-aria/breadcrumbs@3.5.7(react@18.2.0):
268 | resolution: {integrity: sha512-z+L1gNyWrjZ4Fs0Vo4AkwJicPpEGIestww6r8CiTlt07eo0vCReNmB3oofI6nMJOSu51yef+qqBtFyr0tqBgiw==}
269 | peerDependencies:
270 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
271 | dependencies:
272 | '@react-aria/i18n': 3.8.4(react@18.2.0)
273 | '@react-aria/interactions': 3.19.1(react@18.2.0)
274 | '@react-aria/link': 3.6.1(react@18.2.0)
275 | '@react-aria/utils': 3.21.1(react@18.2.0)
276 | '@react-types/breadcrumbs': 3.7.1(react@18.2.0)
277 | '@react-types/shared': 3.21.0(react@18.2.0)
278 | '@swc/helpers': 0.5.3
279 | react: 18.2.0
280 | dev: false
281 |
282 | /@react-aria/button@3.8.4(react@18.2.0):
283 | resolution: {integrity: sha512-rTGZk5zu+lQNjfij2fwnw2PAgBgzNLi3zbMw1FL5/XwVx+lEH2toeqKLoqULtd7nSxskYuQz56VhmjUok6Qkmg==}
284 | peerDependencies:
285 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
286 | dependencies:
287 | '@react-aria/focus': 3.14.3(react@18.2.0)
288 | '@react-aria/interactions': 3.19.1(react@18.2.0)
289 | '@react-aria/utils': 3.21.1(react@18.2.0)
290 | '@react-stately/toggle': 3.6.3(react@18.2.0)
291 | '@react-types/button': 3.9.0(react@18.2.0)
292 | '@react-types/shared': 3.21.0(react@18.2.0)
293 | '@swc/helpers': 0.5.3
294 | react: 18.2.0
295 | dev: false
296 |
297 | /@react-aria/calendar@3.5.2(react-dom@18.2.0)(react@18.2.0):
298 | resolution: {integrity: sha512-HiyUiY0C2aoHa2252Es/Rj1fh5/tewLf6/3gUr42zKl7lq4IqG9cyW7LVRwA47ow1VGLPZSSqTcVakB7jgr7Zw==}
299 | peerDependencies:
300 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
301 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
302 | dependencies:
303 | '@internationalized/date': 3.5.0
304 | '@react-aria/i18n': 3.8.4(react@18.2.0)
305 | '@react-aria/interactions': 3.19.1(react@18.2.0)
306 | '@react-aria/live-announcer': 3.3.1
307 | '@react-aria/utils': 3.21.1(react@18.2.0)
308 | '@react-stately/calendar': 3.4.1(react@18.2.0)
309 | '@react-types/button': 3.9.0(react@18.2.0)
310 | '@react-types/calendar': 3.4.1(react@18.2.0)
311 | '@react-types/shared': 3.21.0(react@18.2.0)
312 | '@swc/helpers': 0.5.3
313 | react: 18.2.0
314 | react-dom: 18.2.0(react@18.2.0)
315 | dev: false
316 |
317 | /@react-aria/checkbox@3.11.2(react@18.2.0):
318 | resolution: {integrity: sha512-8cgXxpc7IMJ9buw+Rbhr1xc66zNp2ePuFpjw3uWyH7S3IJEd2f5kXUDNWLXQRADJso95UlajRlJQiG4QIObEnA==}
319 | peerDependencies:
320 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
321 | dependencies:
322 | '@react-aria/label': 3.7.2(react@18.2.0)
323 | '@react-aria/toggle': 3.8.2(react@18.2.0)
324 | '@react-aria/utils': 3.21.1(react@18.2.0)
325 | '@react-stately/checkbox': 3.5.1(react@18.2.0)
326 | '@react-stately/toggle': 3.6.3(react@18.2.0)
327 | '@react-types/checkbox': 3.5.2(react@18.2.0)
328 | '@react-types/shared': 3.21.0(react@18.2.0)
329 | '@swc/helpers': 0.5.3
330 | react: 18.2.0
331 | dev: false
332 |
333 | /@react-aria/combobox@3.7.1(react-dom@18.2.0)(react@18.2.0):
334 | resolution: {integrity: sha512-37no1b3sRI9mDh3MpMPWNt0Q8QdoRipnx12Vx5Uvtb0PA23hwOWDquICzs157SoJpXP49/+eH6LiA0uTsqwVuQ==}
335 | peerDependencies:
336 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
337 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
338 | dependencies:
339 | '@react-aria/i18n': 3.8.4(react@18.2.0)
340 | '@react-aria/interactions': 3.19.1(react@18.2.0)
341 | '@react-aria/listbox': 3.11.1(react-dom@18.2.0)(react@18.2.0)
342 | '@react-aria/live-announcer': 3.3.1
343 | '@react-aria/menu': 3.11.1(react-dom@18.2.0)(react@18.2.0)
344 | '@react-aria/overlays': 3.18.1(react-dom@18.2.0)(react@18.2.0)
345 | '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0)
346 | '@react-aria/textfield': 3.12.2(react@18.2.0)
347 | '@react-aria/utils': 3.21.1(react@18.2.0)
348 | '@react-stately/collections': 3.10.2(react@18.2.0)
349 | '@react-stately/combobox': 3.7.1(react@18.2.0)
350 | '@react-stately/layout': 3.13.3(react@18.2.0)
351 | '@react-types/button': 3.9.0(react@18.2.0)
352 | '@react-types/combobox': 3.8.1(react@18.2.0)
353 | '@react-types/shared': 3.21.0(react@18.2.0)
354 | '@swc/helpers': 0.5.3
355 | react: 18.2.0
356 | react-dom: 18.2.0(react@18.2.0)
357 | dev: false
358 |
359 | /@react-aria/datepicker@3.8.1(react-dom@18.2.0)(react@18.2.0):
360 | resolution: {integrity: sha512-q2Z5DYDkic3RWzvg3oysrA2VEebuxtEfqj8PSlNFndZh/pNrA+Tvkaatdk/BoxlsZsfeLof+/tBq6yWeqTDguQ==}
361 | peerDependencies:
362 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
363 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
364 | dependencies:
365 | '@internationalized/date': 3.5.0
366 | '@internationalized/number': 3.3.0
367 | '@internationalized/string': 3.1.1
368 | '@react-aria/focus': 3.14.3(react@18.2.0)
369 | '@react-aria/i18n': 3.8.4(react@18.2.0)
370 | '@react-aria/interactions': 3.19.1(react@18.2.0)
371 | '@react-aria/label': 3.7.2(react@18.2.0)
372 | '@react-aria/spinbutton': 3.5.4(react-dom@18.2.0)(react@18.2.0)
373 | '@react-aria/utils': 3.21.1(react@18.2.0)
374 | '@react-stately/datepicker': 3.8.0(react@18.2.0)
375 | '@react-types/button': 3.9.0(react@18.2.0)
376 | '@react-types/calendar': 3.4.1(react@18.2.0)
377 | '@react-types/datepicker': 3.6.1(react@18.2.0)
378 | '@react-types/dialog': 3.5.6(react@18.2.0)
379 | '@react-types/shared': 3.21.0(react@18.2.0)
380 | '@swc/helpers': 0.5.3
381 | react: 18.2.0
382 | react-dom: 18.2.0(react@18.2.0)
383 | dev: false
384 |
385 | /@react-aria/dialog@3.5.7(react-dom@18.2.0)(react@18.2.0):
386 | resolution: {integrity: sha512-IKeBaIQBl+WYkhytyE0eISW4ApOEvCJZuw9Xq7gjlKFBlF4X6ffo8souv12KpaznK6/fp1vtEXMmy1AfejiT8Q==}
387 | peerDependencies:
388 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
389 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
390 | dependencies:
391 | '@react-aria/focus': 3.14.3(react@18.2.0)
392 | '@react-aria/overlays': 3.18.1(react-dom@18.2.0)(react@18.2.0)
393 | '@react-aria/utils': 3.21.1(react@18.2.0)
394 | '@react-stately/overlays': 3.6.3(react@18.2.0)
395 | '@react-types/dialog': 3.5.6(react@18.2.0)
396 | '@react-types/shared': 3.21.0(react@18.2.0)
397 | '@swc/helpers': 0.5.3
398 | react: 18.2.0
399 | react-dom: 18.2.0(react@18.2.0)
400 | dev: false
401 |
402 | /@react-aria/dnd@3.4.3(react-dom@18.2.0)(react@18.2.0):
403 | resolution: {integrity: sha512-9yiYTQvfT5EUmSsGY3vZlK1xs+xHOFDw5I+c+HyvwqiSu0AIZ4yXqpJVwbarKeZlTOQGCWtb/SOHEdMXfaXKgA==}
404 | peerDependencies:
405 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
406 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
407 | dependencies:
408 | '@internationalized/string': 3.1.1
409 | '@react-aria/i18n': 3.8.4(react@18.2.0)
410 | '@react-aria/interactions': 3.19.1(react@18.2.0)
411 | '@react-aria/live-announcer': 3.3.1
412 | '@react-aria/overlays': 3.18.1(react-dom@18.2.0)(react@18.2.0)
413 | '@react-aria/utils': 3.21.1(react@18.2.0)
414 | '@react-aria/visually-hidden': 3.8.6(react@18.2.0)
415 | '@react-stately/dnd': 3.2.5(react@18.2.0)
416 | '@react-types/button': 3.9.0(react@18.2.0)
417 | '@react-types/shared': 3.21.0(react@18.2.0)
418 | '@swc/helpers': 0.5.3
419 | react: 18.2.0
420 | react-dom: 18.2.0(react@18.2.0)
421 | dev: false
422 |
423 | /@react-aria/focus@3.14.3(react@18.2.0):
424 | resolution: {integrity: sha512-gvO/frZ7SxyfyHJYC+kRsUXnXct8hGHKlG1TwbkzCCXim9XIPKDgRzfNGuFfj0i8ZpR9xmsjOBUkHZny0uekFA==}
425 | peerDependencies:
426 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
427 | dependencies:
428 | '@react-aria/interactions': 3.19.1(react@18.2.0)
429 | '@react-aria/utils': 3.21.1(react@18.2.0)
430 | '@react-types/shared': 3.21.0(react@18.2.0)
431 | '@swc/helpers': 0.5.3
432 | clsx: 1.2.1
433 | react: 18.2.0
434 | dev: false
435 |
436 | /@react-aria/grid@3.8.4(react-dom@18.2.0)(react@18.2.0):
437 | resolution: {integrity: sha512-UxEz98Z6yxVAOq7QSZ9OmSsvMwxJDVl7dVRwUHeqWxNprk9o5GGCLjhMv948XBUEnOvLV2qgtI7UoGzSdliUJA==}
438 | peerDependencies:
439 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
440 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
441 | dependencies:
442 | '@react-aria/focus': 3.14.3(react@18.2.0)
443 | '@react-aria/i18n': 3.8.4(react@18.2.0)
444 | '@react-aria/interactions': 3.19.1(react@18.2.0)
445 | '@react-aria/live-announcer': 3.3.1
446 | '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0)
447 | '@react-aria/utils': 3.21.1(react@18.2.0)
448 | '@react-stately/collections': 3.10.2(react@18.2.0)
449 | '@react-stately/grid': 3.8.2(react@18.2.0)
450 | '@react-stately/selection': 3.14.0(react@18.2.0)
451 | '@react-stately/virtualizer': 3.6.4(react@18.2.0)
452 | '@react-types/checkbox': 3.5.2(react@18.2.0)
453 | '@react-types/grid': 3.2.2(react@18.2.0)
454 | '@react-types/shared': 3.21.0(react@18.2.0)
455 | '@swc/helpers': 0.5.3
456 | react: 18.2.0
457 | react-dom: 18.2.0(react@18.2.0)
458 | dev: false
459 |
460 | /@react-aria/gridlist@3.7.1(react-dom@18.2.0)(react@18.2.0):
461 | resolution: {integrity: sha512-XnU8mTc/KrwHsGayQm0u5aoaDzdZ8DftKSSfyBEqLiCaibKFqMADb987SOY5+IVGEtYkxDRn1Reo52U0Fs4mxg==}
462 | peerDependencies:
463 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
464 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
465 | dependencies:
466 | '@react-aria/focus': 3.14.3(react@18.2.0)
467 | '@react-aria/grid': 3.8.4(react-dom@18.2.0)(react@18.2.0)
468 | '@react-aria/i18n': 3.8.4(react@18.2.0)
469 | '@react-aria/interactions': 3.19.1(react@18.2.0)
470 | '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0)
471 | '@react-aria/utils': 3.21.1(react@18.2.0)
472 | '@react-stately/list': 3.10.0(react@18.2.0)
473 | '@react-types/checkbox': 3.5.2(react@18.2.0)
474 | '@react-types/shared': 3.21.0(react@18.2.0)
475 | '@swc/helpers': 0.5.3
476 | react: 18.2.0
477 | react-dom: 18.2.0(react@18.2.0)
478 | dev: false
479 |
480 | /@react-aria/i18n@3.8.4(react@18.2.0):
481 | resolution: {integrity: sha512-YlTJn7YJlUxds/T5dNtme551qc118NoDQhK+IgGpzcmPQ3xSnwBAQP4Zwc7wCpAU+xEwnNcsGw+L1wJd49He/A==}
482 | peerDependencies:
483 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
484 | dependencies:
485 | '@internationalized/date': 3.5.0
486 | '@internationalized/message': 3.1.1
487 | '@internationalized/number': 3.3.0
488 | '@internationalized/string': 3.1.1
489 | '@react-aria/ssr': 3.8.0(react@18.2.0)
490 | '@react-aria/utils': 3.21.1(react@18.2.0)
491 | '@react-types/shared': 3.21.0(react@18.2.0)
492 | '@swc/helpers': 0.5.3
493 | react: 18.2.0
494 | dev: false
495 |
496 | /@react-aria/interactions@3.19.1(react@18.2.0):
497 | resolution: {integrity: sha512-2QFOvq/rJfMGEezmtYcGcJmfaD16kHKcSTLFrZ8aeBK6hYFddGVZJZk+dXf+G7iNaffa8rMt6uwzVe/malJPBA==}
498 | peerDependencies:
499 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
500 | dependencies:
501 | '@react-aria/ssr': 3.8.0(react@18.2.0)
502 | '@react-aria/utils': 3.21.1(react@18.2.0)
503 | '@react-types/shared': 3.21.0(react@18.2.0)
504 | '@swc/helpers': 0.5.3
505 | react: 18.2.0
506 | dev: false
507 |
508 | /@react-aria/label@3.7.2(react@18.2.0):
509 | resolution: {integrity: sha512-rS0xQy+4RH1+JLESzLZd9H285McjNNf2kKwBhzU0CW3akjlu7gqaMKEJhX9MlpPDIVOUc2oEObGdU3UMmqa8ew==}
510 | peerDependencies:
511 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
512 | dependencies:
513 | '@react-aria/utils': 3.21.1(react@18.2.0)
514 | '@react-types/label': 3.8.1(react@18.2.0)
515 | '@react-types/shared': 3.21.0(react@18.2.0)
516 | '@swc/helpers': 0.5.3
517 | react: 18.2.0
518 | dev: false
519 |
520 | /@react-aria/link@3.6.1(react@18.2.0):
521 | resolution: {integrity: sha512-uVkuNHabxE11Eqeo0d1RA86EckOlfJ2Ld8uN8HnTxiLetXLZYUMBwlZfBJvT3RdwPtTG7jC3OK3BvwiyIJrtZw==}
522 | peerDependencies:
523 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
524 | dependencies:
525 | '@react-aria/focus': 3.14.3(react@18.2.0)
526 | '@react-aria/interactions': 3.19.1(react@18.2.0)
527 | '@react-aria/utils': 3.21.1(react@18.2.0)
528 | '@react-types/link': 3.5.1(react@18.2.0)
529 | '@react-types/shared': 3.21.0(react@18.2.0)
530 | '@swc/helpers': 0.5.3
531 | react: 18.2.0
532 | dev: false
533 |
534 | /@react-aria/listbox@3.11.1(react-dom@18.2.0)(react@18.2.0):
535 | resolution: {integrity: sha512-AkguQaIkqpP5oe++EZqYHowD7FfeQs+yY0QZVSsVPpNExcBug8/GcXvhSclcOxdh6ekZg4Wwcq7K0zhuTSOPzg==}
536 | peerDependencies:
537 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
538 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
539 | dependencies:
540 | '@react-aria/focus': 3.14.3(react@18.2.0)
541 | '@react-aria/interactions': 3.19.1(react@18.2.0)
542 | '@react-aria/label': 3.7.2(react@18.2.0)
543 | '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0)
544 | '@react-aria/utils': 3.21.1(react@18.2.0)
545 | '@react-stately/collections': 3.10.2(react@18.2.0)
546 | '@react-stately/list': 3.10.0(react@18.2.0)
547 | '@react-types/listbox': 3.4.5(react@18.2.0)
548 | '@react-types/shared': 3.21.0(react@18.2.0)
549 | '@swc/helpers': 0.5.3
550 | react: 18.2.0
551 | react-dom: 18.2.0(react@18.2.0)
552 | dev: false
553 |
554 | /@react-aria/live-announcer@3.3.1:
555 | resolution: {integrity: sha512-hsc77U7S16trM86d+peqJCOCQ7/smO1cybgdpOuzXyiwcHQw8RQ4GrXrS37P4Ux/44E9nMZkOwATQRT2aK8+Ew==}
556 | dependencies:
557 | '@swc/helpers': 0.5.3
558 | dev: false
559 |
560 | /@react-aria/menu@3.11.1(react-dom@18.2.0)(react@18.2.0):
561 | resolution: {integrity: sha512-1eVVDrGnSExaL7e8IiaM9ndWTjT23rsnQGUK3p66R1Ojs8Q5rPBuJpP74rsmIpYiKOCr8WyZunjm5Fjv5KfA5Q==}
562 | peerDependencies:
563 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
564 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
565 | dependencies:
566 | '@react-aria/focus': 3.14.3(react@18.2.0)
567 | '@react-aria/i18n': 3.8.4(react@18.2.0)
568 | '@react-aria/interactions': 3.19.1(react@18.2.0)
569 | '@react-aria/overlays': 3.18.1(react-dom@18.2.0)(react@18.2.0)
570 | '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0)
571 | '@react-aria/utils': 3.21.1(react@18.2.0)
572 | '@react-stately/collections': 3.10.2(react@18.2.0)
573 | '@react-stately/menu': 3.5.6(react@18.2.0)
574 | '@react-stately/tree': 3.7.3(react@18.2.0)
575 | '@react-types/button': 3.9.0(react@18.2.0)
576 | '@react-types/menu': 3.9.5(react@18.2.0)
577 | '@react-types/shared': 3.21.0(react@18.2.0)
578 | '@swc/helpers': 0.5.3
579 | react: 18.2.0
580 | react-dom: 18.2.0(react@18.2.0)
581 | dev: false
582 |
583 | /@react-aria/meter@3.4.7(react@18.2.0):
584 | resolution: {integrity: sha512-Cp4d6Pd5K6iphXMS/VZ81YxlboUi0I4WPQ+EYb4fxFBJMXVwMK6N5dnn8kwG0vpIx9m0pkFVxSZhlbrwnvW9KA==}
585 | peerDependencies:
586 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
587 | dependencies:
588 | '@react-aria/progress': 3.4.7(react@18.2.0)
589 | '@react-types/meter': 3.3.5(react@18.2.0)
590 | '@react-types/shared': 3.21.0(react@18.2.0)
591 | '@swc/helpers': 0.5.3
592 | react: 18.2.0
593 | dev: false
594 |
595 | /@react-aria/numberfield@3.9.1(react-dom@18.2.0)(react@18.2.0):
596 | resolution: {integrity: sha512-s9LM5YUzZpbOn5KldUS2JmkDNOA9obVmm8TofICH+z6RnReznp72NLPn0IwblRnocmMOIvGINT55Tz50BmbfNA==}
597 | peerDependencies:
598 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
599 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
600 | dependencies:
601 | '@react-aria/i18n': 3.8.4(react@18.2.0)
602 | '@react-aria/interactions': 3.19.1(react@18.2.0)
603 | '@react-aria/live-announcer': 3.3.1
604 | '@react-aria/spinbutton': 3.5.4(react-dom@18.2.0)(react@18.2.0)
605 | '@react-aria/textfield': 3.12.2(react@18.2.0)
606 | '@react-aria/utils': 3.21.1(react@18.2.0)
607 | '@react-stately/numberfield': 3.6.2(react@18.2.0)
608 | '@react-types/button': 3.9.0(react@18.2.0)
609 | '@react-types/numberfield': 3.6.1(react@18.2.0)
610 | '@react-types/shared': 3.21.0(react@18.2.0)
611 | '@react-types/textfield': 3.8.1(react@18.2.0)
612 | '@swc/helpers': 0.5.3
613 | react: 18.2.0
614 | react-dom: 18.2.0(react@18.2.0)
615 | dev: false
616 |
617 | /@react-aria/overlays@3.18.1(react-dom@18.2.0)(react@18.2.0):
618 | resolution: {integrity: sha512-C74eZbTp3OA/gXy9/+4iPrZiz7g27Zy6Q1+plbg5QTLpsFLBt2Ypy9jTTANNRZfW7a5NW/Bnw9WIRjCdtTBRXw==}
619 | peerDependencies:
620 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
621 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
622 | dependencies:
623 | '@react-aria/focus': 3.14.3(react@18.2.0)
624 | '@react-aria/i18n': 3.8.4(react@18.2.0)
625 | '@react-aria/interactions': 3.19.1(react@18.2.0)
626 | '@react-aria/ssr': 3.8.0(react@18.2.0)
627 | '@react-aria/utils': 3.21.1(react@18.2.0)
628 | '@react-aria/visually-hidden': 3.8.6(react@18.2.0)
629 | '@react-stately/overlays': 3.6.3(react@18.2.0)
630 | '@react-types/button': 3.9.0(react@18.2.0)
631 | '@react-types/overlays': 3.8.3(react@18.2.0)
632 | '@react-types/shared': 3.21.0(react@18.2.0)
633 | '@swc/helpers': 0.5.3
634 | react: 18.2.0
635 | react-dom: 18.2.0(react@18.2.0)
636 | dev: false
637 |
638 | /@react-aria/progress@3.4.7(react@18.2.0):
639 | resolution: {integrity: sha512-wQ+xnzt5bBdbyQ2Qx80HxaFrPZRFKge57tmJWg4qelo7tzmgb3a22tf0Ug4C3gEz/uAv0JQWOtqLKTxjsiVP7g==}
640 | peerDependencies:
641 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
642 | dependencies:
643 | '@react-aria/i18n': 3.8.4(react@18.2.0)
644 | '@react-aria/label': 3.7.2(react@18.2.0)
645 | '@react-aria/utils': 3.21.1(react@18.2.0)
646 | '@react-types/progress': 3.5.0(react@18.2.0)
647 | '@react-types/shared': 3.21.0(react@18.2.0)
648 | '@swc/helpers': 0.5.3
649 | react: 18.2.0
650 | dev: false
651 |
652 | /@react-aria/radio@3.8.2(react@18.2.0):
653 | resolution: {integrity: sha512-j8yyGjboTgoBEQWlnJbQVvegKiUeQEUvU/kZ7ZAdj+eAL3BqfO6FO7yt6WzK7ZIBzjGS9YbesaUa3hwIjDi3LA==}
654 | peerDependencies:
655 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
656 | dependencies:
657 | '@react-aria/focus': 3.14.3(react@18.2.0)
658 | '@react-aria/i18n': 3.8.4(react@18.2.0)
659 | '@react-aria/interactions': 3.19.1(react@18.2.0)
660 | '@react-aria/label': 3.7.2(react@18.2.0)
661 | '@react-aria/utils': 3.21.1(react@18.2.0)
662 | '@react-stately/radio': 3.9.1(react@18.2.0)
663 | '@react-types/radio': 3.5.2(react@18.2.0)
664 | '@react-types/shared': 3.21.0(react@18.2.0)
665 | '@swc/helpers': 0.5.3
666 | react: 18.2.0
667 | dev: false
668 |
669 | /@react-aria/searchfield@3.5.7(react@18.2.0):
670 | resolution: {integrity: sha512-HYjB/QH3AR2E39N6eu+P/DmJMjGweg6LrO1QUbBbKJS+LDorHTN9YNKA4N89gnDDz2IPyycjxtr71hEv0I092A==}
671 | peerDependencies:
672 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
673 | dependencies:
674 | '@react-aria/i18n': 3.8.4(react@18.2.0)
675 | '@react-aria/interactions': 3.19.1(react@18.2.0)
676 | '@react-aria/textfield': 3.12.2(react@18.2.0)
677 | '@react-aria/utils': 3.21.1(react@18.2.0)
678 | '@react-stately/searchfield': 3.4.6(react@18.2.0)
679 | '@react-types/button': 3.9.0(react@18.2.0)
680 | '@react-types/searchfield': 3.5.1(react@18.2.0)
681 | '@react-types/shared': 3.21.0(react@18.2.0)
682 | '@swc/helpers': 0.5.3
683 | react: 18.2.0
684 | dev: false
685 |
686 | /@react-aria/select@3.13.1(react-dom@18.2.0)(react@18.2.0):
687 | resolution: {integrity: sha512-tWWOnMnrV1nlZzdO04Ntvf5GCJ6MPkg8Gwv6y0klDDjt12Qyc7J8INluW5A4eMUdtxCkWdaiEsXjyYBHT14ILQ==}
688 | peerDependencies:
689 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
690 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
691 | dependencies:
692 | '@react-aria/i18n': 3.8.4(react@18.2.0)
693 | '@react-aria/interactions': 3.19.1(react@18.2.0)
694 | '@react-aria/label': 3.7.2(react@18.2.0)
695 | '@react-aria/listbox': 3.11.1(react-dom@18.2.0)(react@18.2.0)
696 | '@react-aria/menu': 3.11.1(react-dom@18.2.0)(react@18.2.0)
697 | '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0)
698 | '@react-aria/utils': 3.21.1(react@18.2.0)
699 | '@react-aria/visually-hidden': 3.8.6(react@18.2.0)
700 | '@react-stately/select': 3.5.5(react@18.2.0)
701 | '@react-types/button': 3.9.0(react@18.2.0)
702 | '@react-types/select': 3.8.4(react@18.2.0)
703 | '@react-types/shared': 3.21.0(react@18.2.0)
704 | '@swc/helpers': 0.5.3
705 | react: 18.2.0
706 | react-dom: 18.2.0(react@18.2.0)
707 | dev: false
708 |
709 | /@react-aria/selection@3.17.1(react-dom@18.2.0)(react@18.2.0):
710 | resolution: {integrity: sha512-g5gkSc/M+zJiVgWbUpKN095ea0D4fxdluH9ZcXxN4AAvcrVfEJyAnMmWOIKRebN8xR0KPfNRnKB7E6jld2tbuQ==}
711 | peerDependencies:
712 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
713 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
714 | dependencies:
715 | '@react-aria/focus': 3.14.3(react@18.2.0)
716 | '@react-aria/i18n': 3.8.4(react@18.2.0)
717 | '@react-aria/interactions': 3.19.1(react@18.2.0)
718 | '@react-aria/utils': 3.21.1(react@18.2.0)
719 | '@react-stately/collections': 3.10.2(react@18.2.0)
720 | '@react-stately/selection': 3.14.0(react@18.2.0)
721 | '@react-types/shared': 3.21.0(react@18.2.0)
722 | '@swc/helpers': 0.5.3
723 | react: 18.2.0
724 | react-dom: 18.2.0(react@18.2.0)
725 | dev: false
726 |
727 | /@react-aria/separator@3.3.7(react@18.2.0):
728 | resolution: {integrity: sha512-5XjDhvGVmGHxxOrXLFCQhOs75v579nPTaSlrKhG/5BjTN3JrByAtuNAw8XZf3HbtiCRZnnL2bKdVbHBjmbuvDw==}
729 | peerDependencies:
730 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
731 | dependencies:
732 | '@react-aria/utils': 3.21.1(react@18.2.0)
733 | '@react-types/shared': 3.21.0(react@18.2.0)
734 | '@swc/helpers': 0.5.3
735 | react: 18.2.0
736 | dev: false
737 |
738 | /@react-aria/slider@3.7.2(react@18.2.0):
739 | resolution: {integrity: sha512-io7yJm2jS0gK1ILE9kjClh9zylKsOLbRy748CyD66LDV0ZIjj2D/uZF6BtfKq7Zhc2OsMvDB9+e2IkrszKe8uw==}
740 | peerDependencies:
741 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
742 | dependencies:
743 | '@react-aria/focus': 3.14.3(react@18.2.0)
744 | '@react-aria/i18n': 3.8.4(react@18.2.0)
745 | '@react-aria/interactions': 3.19.1(react@18.2.0)
746 | '@react-aria/label': 3.7.2(react@18.2.0)
747 | '@react-aria/utils': 3.21.1(react@18.2.0)
748 | '@react-stately/radio': 3.9.1(react@18.2.0)
749 | '@react-stately/slider': 3.4.4(react@18.2.0)
750 | '@react-types/radio': 3.5.2(react@18.2.0)
751 | '@react-types/shared': 3.21.0(react@18.2.0)
752 | '@react-types/slider': 3.6.2(react@18.2.0)
753 | '@swc/helpers': 0.5.3
754 | react: 18.2.0
755 | dev: false
756 |
757 | /@react-aria/spinbutton@3.5.4(react-dom@18.2.0)(react@18.2.0):
758 | resolution: {integrity: sha512-W5dhUOjyBIgd8d4z526fW/HXQ+BdFceeGyvNAXoYBi/1gt3KqN/6CZgskG7OQEufxCOWc9e4A2eWNwvkQVJvWg==}
759 | peerDependencies:
760 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
761 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
762 | dependencies:
763 | '@react-aria/i18n': 3.8.4(react@18.2.0)
764 | '@react-aria/live-announcer': 3.3.1
765 | '@react-aria/utils': 3.21.1(react@18.2.0)
766 | '@react-types/button': 3.9.0(react@18.2.0)
767 | '@react-types/shared': 3.21.0(react@18.2.0)
768 | '@swc/helpers': 0.5.3
769 | react: 18.2.0
770 | react-dom: 18.2.0(react@18.2.0)
771 | dev: false
772 |
773 | /@react-aria/ssr@3.8.0(react@18.2.0):
774 | resolution: {integrity: sha512-Y54xs483rglN5DxbwfCPHxnkvZ+gZ0LbSYmR72LyWPGft8hN/lrl1VRS1EW2SMjnkEWlj+Km2mwvA3kEHDUA0A==}
775 | engines: {node: '>= 12'}
776 | peerDependencies:
777 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
778 | dependencies:
779 | '@swc/helpers': 0.5.3
780 | react: 18.2.0
781 | dev: false
782 |
783 | /@react-aria/switch@3.5.6(react@18.2.0):
784 | resolution: {integrity: sha512-W6H/0TFa72MJY02AatUERt5HKgaDTF8lOaTjNNmS6U6U20+//uvrVCqcBof8OMe4M60mQpkp7Bd6756CJAMX1w==}
785 | peerDependencies:
786 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
787 | dependencies:
788 | '@react-aria/toggle': 3.8.2(react@18.2.0)
789 | '@react-stately/toggle': 3.6.3(react@18.2.0)
790 | '@react-types/switch': 3.4.2(react@18.2.0)
791 | '@swc/helpers': 0.5.3
792 | react: 18.2.0
793 | dev: false
794 |
795 | /@react-aria/table@3.13.1(react-dom@18.2.0)(react@18.2.0):
796 | resolution: {integrity: sha512-TBtCmJsKl3rJW/dCzA0ZxPGb8mN7ndbryLh3u+iV/+GVAVsytvAenOGrq9sLHHWXwQo5RJoO1bkUudvrZrJ5/g==}
797 | peerDependencies:
798 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
799 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
800 | dependencies:
801 | '@react-aria/focus': 3.14.3(react@18.2.0)
802 | '@react-aria/grid': 3.8.4(react-dom@18.2.0)(react@18.2.0)
803 | '@react-aria/i18n': 3.8.4(react@18.2.0)
804 | '@react-aria/interactions': 3.19.1(react@18.2.0)
805 | '@react-aria/live-announcer': 3.3.1
806 | '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0)
807 | '@react-aria/utils': 3.21.1(react@18.2.0)
808 | '@react-aria/visually-hidden': 3.8.6(react@18.2.0)
809 | '@react-stately/collections': 3.10.2(react@18.2.0)
810 | '@react-stately/flags': 3.0.0
811 | '@react-stately/table': 3.11.2(react@18.2.0)
812 | '@react-stately/virtualizer': 3.6.4(react@18.2.0)
813 | '@react-types/checkbox': 3.5.2(react@18.2.0)
814 | '@react-types/grid': 3.2.2(react@18.2.0)
815 | '@react-types/shared': 3.21.0(react@18.2.0)
816 | '@react-types/table': 3.9.0(react@18.2.0)
817 | '@swc/helpers': 0.5.3
818 | react: 18.2.0
819 | react-dom: 18.2.0(react@18.2.0)
820 | dev: false
821 |
822 | /@react-aria/tabs@3.8.1(react-dom@18.2.0)(react@18.2.0):
823 | resolution: {integrity: sha512-3kRd5rYKclmW9lllcANq0oun2d1pZq7Onma95laYfrWtPBZ3YDVKOkujGSqdfSQAFVshWBjl2Q03yyvcRiwzbQ==}
824 | peerDependencies:
825 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
826 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
827 | dependencies:
828 | '@react-aria/focus': 3.14.3(react@18.2.0)
829 | '@react-aria/i18n': 3.8.4(react@18.2.0)
830 | '@react-aria/interactions': 3.19.1(react@18.2.0)
831 | '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0)
832 | '@react-aria/utils': 3.21.1(react@18.2.0)
833 | '@react-stately/list': 3.10.0(react@18.2.0)
834 | '@react-stately/tabs': 3.6.1(react@18.2.0)
835 | '@react-types/shared': 3.21.0(react@18.2.0)
836 | '@react-types/tabs': 3.3.3(react@18.2.0)
837 | '@swc/helpers': 0.5.3
838 | react: 18.2.0
839 | react-dom: 18.2.0(react@18.2.0)
840 | dev: false
841 |
842 | /@react-aria/tag@3.2.1(react-dom@18.2.0)(react@18.2.0):
843 | resolution: {integrity: sha512-i7Mj3IhB91sGp3NS6iNBVh25W+LR2XXpTmtn3OS4R62q3Oalw/1PKqPWqFc73Lb5IWF5rj3eh2yTf+rerWf3dw==}
844 | peerDependencies:
845 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
846 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
847 | dependencies:
848 | '@react-aria/gridlist': 3.7.1(react-dom@18.2.0)(react@18.2.0)
849 | '@react-aria/i18n': 3.8.4(react@18.2.0)
850 | '@react-aria/interactions': 3.19.1(react@18.2.0)
851 | '@react-aria/label': 3.7.2(react@18.2.0)
852 | '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0)
853 | '@react-aria/utils': 3.21.1(react@18.2.0)
854 | '@react-stately/list': 3.10.0(react@18.2.0)
855 | '@react-types/button': 3.9.0(react@18.2.0)
856 | '@react-types/shared': 3.21.0(react@18.2.0)
857 | '@swc/helpers': 0.5.3
858 | react: 18.2.0
859 | react-dom: 18.2.0(react@18.2.0)
860 | dev: false
861 |
862 | /@react-aria/textfield@3.12.2(react@18.2.0):
863 | resolution: {integrity: sha512-wRg8LJjZV6o4S/LRFqxs5waGDTiuIa/CRN+/X37Fu7GeZFeK0IBvWjKPlXLe7gMswaFqRmTKnQCU42mzUdDK1g==}
864 | peerDependencies:
865 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
866 | dependencies:
867 | '@react-aria/focus': 3.14.3(react@18.2.0)
868 | '@react-aria/label': 3.7.2(react@18.2.0)
869 | '@react-aria/utils': 3.21.1(react@18.2.0)
870 | '@react-types/shared': 3.21.0(react@18.2.0)
871 | '@react-types/textfield': 3.8.1(react@18.2.0)
872 | '@swc/helpers': 0.5.3
873 | react: 18.2.0
874 | dev: false
875 |
876 | /@react-aria/toggle@3.8.2(react@18.2.0):
877 | resolution: {integrity: sha512-0+RmlOQtyRmU+Dd9qM9od4DPpITC7jqA+n3aZn732XtCsosz5gPGbhFuLbSdWRZ42FQgqo7pZQWaDRZpJPkipA==}
878 | peerDependencies:
879 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
880 | dependencies:
881 | '@react-aria/focus': 3.14.3(react@18.2.0)
882 | '@react-aria/interactions': 3.19.1(react@18.2.0)
883 | '@react-aria/utils': 3.21.1(react@18.2.0)
884 | '@react-stately/toggle': 3.6.3(react@18.2.0)
885 | '@react-types/checkbox': 3.5.2(react@18.2.0)
886 | '@react-types/shared': 3.21.0(react@18.2.0)
887 | '@react-types/switch': 3.4.2(react@18.2.0)
888 | '@swc/helpers': 0.5.3
889 | react: 18.2.0
890 | dev: false
891 |
892 | /@react-aria/tooltip@3.6.4(react@18.2.0):
893 | resolution: {integrity: sha512-5WCOiRSugzbfEOH+Bjpuf6EsNyynqq5S1uDh/P6J8qiYDjc0xLRJ5dyLdytX7c8MK9Y0pIHi6xb0xR9jDqJXTw==}
894 | peerDependencies:
895 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
896 | dependencies:
897 | '@react-aria/focus': 3.14.3(react@18.2.0)
898 | '@react-aria/interactions': 3.19.1(react@18.2.0)
899 | '@react-aria/utils': 3.21.1(react@18.2.0)
900 | '@react-stately/tooltip': 3.4.5(react@18.2.0)
901 | '@react-types/shared': 3.21.0(react@18.2.0)
902 | '@react-types/tooltip': 3.4.5(react@18.2.0)
903 | '@swc/helpers': 0.5.3
904 | react: 18.2.0
905 | dev: false
906 |
907 | /@react-aria/utils@3.21.1(react@18.2.0):
908 | resolution: {integrity: sha512-tySfyWHXOhd/b6JSrSOl7krngEXN3N6pi1hCAXObRu3+MZlaZOMDf/j18aoteaIF2Jpv8HMWUJUJtQKGmBJGRA==}
909 | peerDependencies:
910 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
911 | dependencies:
912 | '@react-aria/ssr': 3.8.0(react@18.2.0)
913 | '@react-stately/utils': 3.8.0(react@18.2.0)
914 | '@react-types/shared': 3.21.0(react@18.2.0)
915 | '@swc/helpers': 0.5.3
916 | clsx: 1.2.1
917 | react: 18.2.0
918 | dev: false
919 |
920 | /@react-aria/visually-hidden@3.8.6(react@18.2.0):
921 | resolution: {integrity: sha512-6DmS/JLbK9KgU/ClK1WjwOyvpn8HtwYn+uisMLdP7HlCm692peYOkXDR1jqYbHL4GlyLCD0JLI+/xGdVh5aR/w==}
922 | peerDependencies:
923 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
924 | dependencies:
925 | '@react-aria/interactions': 3.19.1(react@18.2.0)
926 | '@react-aria/utils': 3.21.1(react@18.2.0)
927 | '@react-types/shared': 3.21.0(react@18.2.0)
928 | '@swc/helpers': 0.5.3
929 | clsx: 1.2.1
930 | react: 18.2.0
931 | dev: false
932 |
933 | /@react-stately/calendar@3.4.1(react@18.2.0):
934 | resolution: {integrity: sha512-XKCdrXNA7/ukZ842EeDZfLqYUQDv/x5RoAVkzTbp++3U/MLM1XZXsqj+5xVlQfJiWpQzM9L6ySjxzzgepJDeuw==}
935 | peerDependencies:
936 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
937 | dependencies:
938 | '@internationalized/date': 3.5.0
939 | '@react-stately/utils': 3.8.0(react@18.2.0)
940 | '@react-types/calendar': 3.4.1(react@18.2.0)
941 | '@react-types/datepicker': 3.6.1(react@18.2.0)
942 | '@react-types/shared': 3.21.0(react@18.2.0)
943 | '@swc/helpers': 0.5.3
944 | react: 18.2.0
945 | dev: false
946 |
947 | /@react-stately/checkbox@3.5.1(react@18.2.0):
948 | resolution: {integrity: sha512-j+EbHpZgS8J2LbysbVDK3vQAJc7YZHOjHRX20auEzVmulAFKwkRpevo/R5gEL4EpOz4bRyu+BH/jbssHXG+Ezw==}
949 | peerDependencies:
950 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
951 | dependencies:
952 | '@react-stately/toggle': 3.6.3(react@18.2.0)
953 | '@react-stately/utils': 3.8.0(react@18.2.0)
954 | '@react-types/checkbox': 3.5.2(react@18.2.0)
955 | '@react-types/shared': 3.21.0(react@18.2.0)
956 | '@swc/helpers': 0.5.3
957 | react: 18.2.0
958 | dev: false
959 |
960 | /@react-stately/collections@3.10.2(react@18.2.0):
961 | resolution: {integrity: sha512-h+LzCa1gWhVRWVH8uR+ZxsKmFSx7kW3RIlcjWjhfyc59BzXCuojsOJKTTAyPVFP/3kOdJeltw8g/reV1Cw/x6Q==}
962 | peerDependencies:
963 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
964 | dependencies:
965 | '@react-types/shared': 3.21.0(react@18.2.0)
966 | '@swc/helpers': 0.5.3
967 | react: 18.2.0
968 | dev: false
969 |
970 | /@react-stately/combobox@3.7.1(react@18.2.0):
971 | resolution: {integrity: sha512-JMKsbhCgP8HpwRjHLBmJILzyU9WzWykjXyP4QF/ifmkzGRjC/s46+Ieq+WonjVaLNGCoi6XqhYn2x2RyACSbsQ==}
972 | peerDependencies:
973 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
974 | dependencies:
975 | '@react-stately/collections': 3.10.2(react@18.2.0)
976 | '@react-stately/list': 3.10.0(react@18.2.0)
977 | '@react-stately/menu': 3.5.6(react@18.2.0)
978 | '@react-stately/select': 3.5.5(react@18.2.0)
979 | '@react-stately/utils': 3.8.0(react@18.2.0)
980 | '@react-types/combobox': 3.8.1(react@18.2.0)
981 | '@react-types/shared': 3.21.0(react@18.2.0)
982 | '@swc/helpers': 0.5.3
983 | react: 18.2.0
984 | dev: false
985 |
986 | /@react-stately/data@3.10.3(react@18.2.0):
987 | resolution: {integrity: sha512-cC9mxCZU4N9GbdOB4g2/J8+W+860GvBd874to0ObSc/XOR4VbuIsxAFIabW5UwmJV+XaqqK4TUBG0C6YScXeWQ==}
988 | peerDependencies:
989 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
990 | dependencies:
991 | '@react-types/shared': 3.21.0(react@18.2.0)
992 | '@swc/helpers': 0.5.3
993 | react: 18.2.0
994 | dev: false
995 |
996 | /@react-stately/datepicker@3.8.0(react@18.2.0):
997 | resolution: {integrity: sha512-6YDSmkrRafYCWhRHks8Z2tZavM1rqSOy8GY8VYjYMCVTFpRuhPK9TQaFv2BdzZL/vJ6OGThxqoglcEwywZVq2g==}
998 | peerDependencies:
999 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1000 | dependencies:
1001 | '@internationalized/date': 3.5.0
1002 | '@internationalized/string': 3.1.1
1003 | '@react-stately/overlays': 3.6.3(react@18.2.0)
1004 | '@react-stately/utils': 3.8.0(react@18.2.0)
1005 | '@react-types/datepicker': 3.6.1(react@18.2.0)
1006 | '@react-types/shared': 3.21.0(react@18.2.0)
1007 | '@swc/helpers': 0.5.3
1008 | react: 18.2.0
1009 | dev: false
1010 |
1011 | /@react-stately/dnd@3.2.5(react@18.2.0):
1012 | resolution: {integrity: sha512-f9S+ycjAMEaz9HqGxkx4jsqo/ZS8kh0o97rxSKpGFKPZ02UMFWCr9lJI1p3hVGukiMahrmsNtoQXAvMcFAZyQQ==}
1013 | peerDependencies:
1014 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1015 | dependencies:
1016 | '@react-stately/selection': 3.14.0(react@18.2.0)
1017 | '@react-types/shared': 3.21.0(react@18.2.0)
1018 | '@swc/helpers': 0.5.3
1019 | react: 18.2.0
1020 | dev: false
1021 |
1022 | /@react-stately/flags@3.0.0:
1023 | resolution: {integrity: sha512-e3i2ItHbIa0eEwmSXAnPdD7K8syW76JjGe8ENxwFJPW/H1Pu9RJfjkCb/Mq0WSPN/TpxBb54+I9TgrGhbCoZ9w==}
1024 | dependencies:
1025 | '@swc/helpers': 0.4.36
1026 | dev: false
1027 |
1028 | /@react-stately/grid@3.8.2(react@18.2.0):
1029 | resolution: {integrity: sha512-CB5QpYjXFatuXZodj3r0vIiqTysUe6DURZdJu6RKG2Elx19n2k49fKyx7P7CTKD2sPBOMSSX4edWuTzpL8Tl+A==}
1030 | peerDependencies:
1031 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1032 | dependencies:
1033 | '@react-stately/collections': 3.10.2(react@18.2.0)
1034 | '@react-stately/selection': 3.14.0(react@18.2.0)
1035 | '@react-types/grid': 3.2.2(react@18.2.0)
1036 | '@react-types/shared': 3.21.0(react@18.2.0)
1037 | '@swc/helpers': 0.5.3
1038 | react: 18.2.0
1039 | dev: false
1040 |
1041 | /@react-stately/layout@3.13.3(react@18.2.0):
1042 | resolution: {integrity: sha512-AZ2Sm7iSRcRsNATXg7bjbPpZIjV3z7bHAJtICWA1wHieVVSV1FFoyDyiXdDTIOxyuGeytNPaxtGfPpFZia9Wsg==}
1043 | peerDependencies:
1044 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1045 | dependencies:
1046 | '@react-stately/collections': 3.10.2(react@18.2.0)
1047 | '@react-stately/table': 3.11.2(react@18.2.0)
1048 | '@react-stately/virtualizer': 3.6.4(react@18.2.0)
1049 | '@react-types/grid': 3.2.2(react@18.2.0)
1050 | '@react-types/shared': 3.21.0(react@18.2.0)
1051 | '@react-types/table': 3.9.0(react@18.2.0)
1052 | '@swc/helpers': 0.5.3
1053 | react: 18.2.0
1054 | dev: false
1055 |
1056 | /@react-stately/list@3.10.0(react@18.2.0):
1057 | resolution: {integrity: sha512-Yspumiln2fvzoO8AND8jNAIfBu1XPaYioeeDmsB5Vrya2EvOkzEGsauQSNBJ6Vhee1fQqpnmzH1HB0jfIKUfzg==}
1058 | peerDependencies:
1059 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1060 | dependencies:
1061 | '@react-stately/collections': 3.10.2(react@18.2.0)
1062 | '@react-stately/selection': 3.14.0(react@18.2.0)
1063 | '@react-stately/utils': 3.8.0(react@18.2.0)
1064 | '@react-types/shared': 3.21.0(react@18.2.0)
1065 | '@swc/helpers': 0.5.3
1066 | react: 18.2.0
1067 | dev: false
1068 |
1069 | /@react-stately/menu@3.5.6(react@18.2.0):
1070 | resolution: {integrity: sha512-Cm82SVda1qP71Fcz8ohIn3JYKmKCuSUIFr1WsEo/YwDPkX0x9+ev6rmphHTsxDdkCLcYHSTQL6e2KL0wAg50zA==}
1071 | peerDependencies:
1072 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1073 | dependencies:
1074 | '@react-stately/overlays': 3.6.3(react@18.2.0)
1075 | '@react-stately/utils': 3.8.0(react@18.2.0)
1076 | '@react-types/menu': 3.9.5(react@18.2.0)
1077 | '@react-types/shared': 3.21.0(react@18.2.0)
1078 | '@swc/helpers': 0.5.3
1079 | react: 18.2.0
1080 | dev: false
1081 |
1082 | /@react-stately/numberfield@3.6.2(react@18.2.0):
1083 | resolution: {integrity: sha512-li/SO3BU3RGySRNlXhPRKr161GJyNbQe6kjnj+0BFTS/ST9nxCgxFK4llHf+S+I/shNI6+0U2nAjE85QOv4emQ==}
1084 | peerDependencies:
1085 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1086 | dependencies:
1087 | '@internationalized/number': 3.3.0
1088 | '@react-stately/utils': 3.8.0(react@18.2.0)
1089 | '@react-types/numberfield': 3.6.1(react@18.2.0)
1090 | '@react-types/shared': 3.21.0(react@18.2.0)
1091 | '@swc/helpers': 0.5.3
1092 | react: 18.2.0
1093 | dev: false
1094 |
1095 | /@react-stately/overlays@3.6.3(react@18.2.0):
1096 | resolution: {integrity: sha512-K3eIiYAdAGTepYqNf2pVb+lPqLoVudXwmxPhyOSZXzjgpynD6tR3E9QfWQtkMazBuU73PnNX7zkH4l87r2AmTg==}
1097 | peerDependencies:
1098 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1099 | dependencies:
1100 | '@react-stately/utils': 3.8.0(react@18.2.0)
1101 | '@react-types/overlays': 3.8.3(react@18.2.0)
1102 | '@swc/helpers': 0.5.3
1103 | react: 18.2.0
1104 | dev: false
1105 |
1106 | /@react-stately/radio@3.9.1(react@18.2.0):
1107 | resolution: {integrity: sha512-DrQPHiP9pz1uQbBP/NDFdO8uOZigPbvuAWPUNK7Gq6kye5lW+RsS97IUnYJePNTSMvhiAVz/aleBt05Gr/PZmg==}
1108 | peerDependencies:
1109 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1110 | dependencies:
1111 | '@react-stately/utils': 3.8.0(react@18.2.0)
1112 | '@react-types/radio': 3.5.2(react@18.2.0)
1113 | '@react-types/shared': 3.21.0(react@18.2.0)
1114 | '@swc/helpers': 0.5.3
1115 | react: 18.2.0
1116 | dev: false
1117 |
1118 | /@react-stately/searchfield@3.4.6(react@18.2.0):
1119 | resolution: {integrity: sha512-DeVacER0MD35gzQjrYpX/e3k8rjKF82W0OooTkRjeQ2U48femZkQpmp3O+j10foQx2LLaxqt9PSW7QS0Ww1bCA==}
1120 | peerDependencies:
1121 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1122 | dependencies:
1123 | '@react-stately/utils': 3.8.0(react@18.2.0)
1124 | '@react-types/searchfield': 3.5.1(react@18.2.0)
1125 | '@react-types/shared': 3.21.0(react@18.2.0)
1126 | '@swc/helpers': 0.5.3
1127 | react: 18.2.0
1128 | dev: false
1129 |
1130 | /@react-stately/select@3.5.5(react@18.2.0):
1131 | resolution: {integrity: sha512-nDkvFeAZbN7dK/Ty+mk1h4LZYYaoPpkwrG49wa67DTHkCc8Zk2+UEjhKPwOK20th4vfJKHzKjVa0Dtq4DIj0rw==}
1132 | peerDependencies:
1133 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1134 | dependencies:
1135 | '@react-stately/collections': 3.10.2(react@18.2.0)
1136 | '@react-stately/list': 3.10.0(react@18.2.0)
1137 | '@react-stately/menu': 3.5.6(react@18.2.0)
1138 | '@react-stately/selection': 3.14.0(react@18.2.0)
1139 | '@react-stately/utils': 3.8.0(react@18.2.0)
1140 | '@react-types/select': 3.8.4(react@18.2.0)
1141 | '@react-types/shared': 3.21.0(react@18.2.0)
1142 | '@swc/helpers': 0.5.3
1143 | react: 18.2.0
1144 | dev: false
1145 |
1146 | /@react-stately/selection@3.14.0(react@18.2.0):
1147 | resolution: {integrity: sha512-E5rNH+gVGDJQDSnPO30ynu6jZ0Z0++VPUbM5Bu3P/bZ3+TgoTtDDvlONba3fspgSBDfdnHpsuG9eqYnDtEAyYA==}
1148 | peerDependencies:
1149 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1150 | dependencies:
1151 | '@react-stately/collections': 3.10.2(react@18.2.0)
1152 | '@react-stately/utils': 3.8.0(react@18.2.0)
1153 | '@react-types/shared': 3.21.0(react@18.2.0)
1154 | '@swc/helpers': 0.5.3
1155 | react: 18.2.0
1156 | dev: false
1157 |
1158 | /@react-stately/slider@3.4.4(react@18.2.0):
1159 | resolution: {integrity: sha512-tFexbtN50zSo6e1Gi8K9MBfqgOo1eemF/VvFbde3PP9nG+ODcxEIajaYDPlMUuFw5cemJuoKo3+G5NBBn2/AjQ==}
1160 | peerDependencies:
1161 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1162 | dependencies:
1163 | '@react-aria/i18n': 3.8.4(react@18.2.0)
1164 | '@react-aria/utils': 3.21.1(react@18.2.0)
1165 | '@react-stately/utils': 3.8.0(react@18.2.0)
1166 | '@react-types/shared': 3.21.0(react@18.2.0)
1167 | '@react-types/slider': 3.6.2(react@18.2.0)
1168 | '@swc/helpers': 0.5.3
1169 | react: 18.2.0
1170 | dev: false
1171 |
1172 | /@react-stately/table@3.11.2(react@18.2.0):
1173 | resolution: {integrity: sha512-EVgksPAsnEoqeT+5ej4aGJdu9kAu3LCDqQfnmif2P/R1BP5eDU1Kv0N/mV/90Xp546g7kuZ1wS2if/hWDXEA5g==}
1174 | peerDependencies:
1175 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1176 | dependencies:
1177 | '@react-stately/collections': 3.10.2(react@18.2.0)
1178 | '@react-stately/flags': 3.0.0
1179 | '@react-stately/grid': 3.8.2(react@18.2.0)
1180 | '@react-stately/selection': 3.14.0(react@18.2.0)
1181 | '@react-stately/utils': 3.8.0(react@18.2.0)
1182 | '@react-types/grid': 3.2.2(react@18.2.0)
1183 | '@react-types/shared': 3.21.0(react@18.2.0)
1184 | '@react-types/table': 3.9.0(react@18.2.0)
1185 | '@swc/helpers': 0.5.3
1186 | react: 18.2.0
1187 | dev: false
1188 |
1189 | /@react-stately/tabs@3.6.1(react@18.2.0):
1190 | resolution: {integrity: sha512-akGmejEaXg2RMZuWbRZ0W1MLr515e0uV0iVZefKBlcHtD/mK9K9Bo2XxBScf0TIhaPJ6Qa2w2k2+V7RmT7r8Ag==}
1191 | peerDependencies:
1192 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1193 | dependencies:
1194 | '@react-stately/list': 3.10.0(react@18.2.0)
1195 | '@react-stately/utils': 3.8.0(react@18.2.0)
1196 | '@react-types/shared': 3.21.0(react@18.2.0)
1197 | '@react-types/tabs': 3.3.3(react@18.2.0)
1198 | '@swc/helpers': 0.5.3
1199 | react: 18.2.0
1200 | dev: false
1201 |
1202 | /@react-stately/toggle@3.6.3(react@18.2.0):
1203 | resolution: {integrity: sha512-4kIMTjRjtaapFk4NVmBoFDUYfkmyqDaYAmHpRyEIHTDpBYn0xpxZL/MHv9WuLYa4MjJLRp0MeicuWiZ4ai7f6Q==}
1204 | peerDependencies:
1205 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1206 | dependencies:
1207 | '@react-stately/utils': 3.8.0(react@18.2.0)
1208 | '@react-types/checkbox': 3.5.2(react@18.2.0)
1209 | '@react-types/shared': 3.21.0(react@18.2.0)
1210 | '@swc/helpers': 0.5.3
1211 | react: 18.2.0
1212 | dev: false
1213 |
1214 | /@react-stately/tooltip@3.4.5(react@18.2.0):
1215 | resolution: {integrity: sha512-VrwQcjnrNddSulh+Zql8P8cORRnWqSPkHPqQwD/Ly91Rva3gUIy+VwnYeThbGDxRzlUv1wfN+UQraEcrgwSZ/Q==}
1216 | peerDependencies:
1217 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1218 | dependencies:
1219 | '@react-stately/overlays': 3.6.3(react@18.2.0)
1220 | '@react-stately/utils': 3.8.0(react@18.2.0)
1221 | '@react-types/tooltip': 3.4.5(react@18.2.0)
1222 | '@swc/helpers': 0.5.3
1223 | react: 18.2.0
1224 | dev: false
1225 |
1226 | /@react-stately/tree@3.7.3(react@18.2.0):
1227 | resolution: {integrity: sha512-wB/68qetgCYTe7OMqbTFmtWRrEqVdIH2VlACPCsMlECr3lW9TrrbrOwlHIJfLhkxWvY3kSCoKcOJ5KTiJC9LGA==}
1228 | peerDependencies:
1229 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1230 | dependencies:
1231 | '@react-stately/collections': 3.10.2(react@18.2.0)
1232 | '@react-stately/selection': 3.14.0(react@18.2.0)
1233 | '@react-stately/utils': 3.8.0(react@18.2.0)
1234 | '@react-types/shared': 3.21.0(react@18.2.0)
1235 | '@swc/helpers': 0.5.3
1236 | react: 18.2.0
1237 | dev: false
1238 |
1239 | /@react-stately/utils@3.8.0(react@18.2.0):
1240 | resolution: {integrity: sha512-wCIoFDbt/uwNkWIBF+xV+21k8Z8Sj5qGO3uptTcVmjYcZngOaGGyB4NkiuZhmhG70Pkv+yVrRwoC1+4oav9cCg==}
1241 | peerDependencies:
1242 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1243 | dependencies:
1244 | '@swc/helpers': 0.5.3
1245 | react: 18.2.0
1246 | dev: false
1247 |
1248 | /@react-stately/virtualizer@3.6.4(react@18.2.0):
1249 | resolution: {integrity: sha512-lf3+FDRnyLyY1IhLfwA6GuE/9F3nIEc5p245NkUSN1ngKlXI5PvLHNatiVbONC3wt90abkpMK+WMhu2S/B+4lA==}
1250 | peerDependencies:
1251 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1252 | dependencies:
1253 | '@react-aria/utils': 3.21.1(react@18.2.0)
1254 | '@react-types/shared': 3.21.0(react@18.2.0)
1255 | '@swc/helpers': 0.5.3
1256 | react: 18.2.0
1257 | dev: false
1258 |
1259 | /@react-types/breadcrumbs@3.7.1(react@18.2.0):
1260 | resolution: {integrity: sha512-WWC5pQdWkAzJ2hkx4w7f+waDLLvuD9vowKey+bdLoEmKvdaHNLLVUQPEyFm6SQ5+E3pNBWkNx9a+0S9iW6wa+Q==}
1261 | peerDependencies:
1262 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1263 | dependencies:
1264 | '@react-types/link': 3.5.1(react@18.2.0)
1265 | '@react-types/shared': 3.21.0(react@18.2.0)
1266 | react: 18.2.0
1267 | dev: false
1268 |
1269 | /@react-types/button@3.9.0(react@18.2.0):
1270 | resolution: {integrity: sha512-YhbchUDB7yL88ZFA0Zqod6qOMdzCLD5yVRmhWymk0yNLvB7EB1XX4c5sRANalfZSFP0RpCTlkjB05Hzp4+xOYg==}
1271 | peerDependencies:
1272 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1273 | dependencies:
1274 | '@react-types/shared': 3.21.0(react@18.2.0)
1275 | react: 18.2.0
1276 | dev: false
1277 |
1278 | /@react-types/calendar@3.4.1(react@18.2.0):
1279 | resolution: {integrity: sha512-tiCkHi6IQtYcVoAESG79eUBWDXoo8NImo+Mj8WAWpo1lOA3SV1W2PpeXkoRNqtloilQ0aYcmsaJJUhciQG4ndg==}
1280 | peerDependencies:
1281 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1282 | dependencies:
1283 | '@internationalized/date': 3.5.0
1284 | '@react-types/shared': 3.21.0(react@18.2.0)
1285 | react: 18.2.0
1286 | dev: false
1287 |
1288 | /@react-types/checkbox@3.5.2(react@18.2.0):
1289 | resolution: {integrity: sha512-iRQrbY8vRRya3bt3i7sHAifhP/ozfkly1/TItkRK5MNPRNPRDKns55D8ZFkRMj4NSyKQpjVt1zzlBXrnSOxWdQ==}
1290 | peerDependencies:
1291 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1292 | dependencies:
1293 | '@react-types/shared': 3.21.0(react@18.2.0)
1294 | react: 18.2.0
1295 | dev: false
1296 |
1297 | /@react-types/combobox@3.8.1(react@18.2.0):
1298 | resolution: {integrity: sha512-F910tk8K5qE0TksJ9LRGcJIpaPzpsCnFxT6E9oJH3ssK4N8qZL8QfT9tIKo2XWhK9Uxb/tIZOGQwA8Cn7TyZrA==}
1299 | peerDependencies:
1300 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1301 | dependencies:
1302 | '@react-types/shared': 3.21.0(react@18.2.0)
1303 | react: 18.2.0
1304 | dev: false
1305 |
1306 | /@react-types/datepicker@3.6.1(react@18.2.0):
1307 | resolution: {integrity: sha512-/M+0e9hL9w98f5k4EoxeH2UfPsUPoS6fvmFsmwUZJcDiw7wP510XngnDLy9GOHj9xgqagZ20S79cxcEuTq7U6g==}
1308 | peerDependencies:
1309 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1310 | dependencies:
1311 | '@internationalized/date': 3.5.0
1312 | '@react-types/calendar': 3.4.1(react@18.2.0)
1313 | '@react-types/overlays': 3.8.3(react@18.2.0)
1314 | '@react-types/shared': 3.21.0(react@18.2.0)
1315 | react: 18.2.0
1316 | dev: false
1317 |
1318 | /@react-types/dialog@3.5.6(react@18.2.0):
1319 | resolution: {integrity: sha512-lwwaAgoi4xe4eEJxBns+cBIRstIPTKWWddMkp51r7Teeh2uKs1Wki7N+Acb9CfT6JQTQDqtVJm6K76rcqNBVwg==}
1320 | peerDependencies:
1321 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1322 | dependencies:
1323 | '@react-types/overlays': 3.8.3(react@18.2.0)
1324 | '@react-types/shared': 3.21.0(react@18.2.0)
1325 | react: 18.2.0
1326 | dev: false
1327 |
1328 | /@react-types/grid@3.2.2(react@18.2.0):
1329 | resolution: {integrity: sha512-R4USOpn1xfsWVGwZsakRlIdsBA10XNCnAUcRXQTn2JmzLjDCtcln6uYo9IFob080lQuvjkSw3j4zkw7Yo4Qepg==}
1330 | peerDependencies:
1331 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1332 | dependencies:
1333 | '@react-types/shared': 3.21.0(react@18.2.0)
1334 | react: 18.2.0
1335 | dev: false
1336 |
1337 | /@react-types/label@3.8.1(react@18.2.0):
1338 | resolution: {integrity: sha512-fA6zMTF2TmfU7H8JBJi0pNd8t5Ak4gO+ZA3cZBysf8r3EmdAsgr3LLqFaGTnZzPH1Fux6c7ARI3qjVpyNiejZQ==}
1339 | peerDependencies:
1340 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1341 | dependencies:
1342 | '@react-types/shared': 3.21.0(react@18.2.0)
1343 | react: 18.2.0
1344 | dev: false
1345 |
1346 | /@react-types/link@3.5.1(react@18.2.0):
1347 | resolution: {integrity: sha512-hX2KpjB7wSuJw5Pia63+WEgEql53VfVG1Vu2cTUJDxfrgUtawwHtxB8B0K3cs3jBanq69amgAInEx0FfqYY0uQ==}
1348 | peerDependencies:
1349 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1350 | dependencies:
1351 | '@react-aria/interactions': 3.19.1(react@18.2.0)
1352 | '@react-types/shared': 3.21.0(react@18.2.0)
1353 | react: 18.2.0
1354 | dev: false
1355 |
1356 | /@react-types/listbox@3.4.5(react@18.2.0):
1357 | resolution: {integrity: sha512-nuRY3l8h/rBYQWTXWdZz5YJdl6QDDmXpHrnPuX7PxTwbXcwjhoMK+ZkJ0arA8Uv3MPs1OUcT6K6CInsPnG2ARQ==}
1358 | peerDependencies:
1359 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1360 | dependencies:
1361 | '@react-types/shared': 3.21.0(react@18.2.0)
1362 | react: 18.2.0
1363 | dev: false
1364 |
1365 | /@react-types/menu@3.9.5(react@18.2.0):
1366 | resolution: {integrity: sha512-KB5lJM0p9PxwpVlHV9sRdpjh+sqINeHrJgGizy/cQI9bj26nupiEgamSD14dULNI6BFT9DkgKCsobBtE04DDKQ==}
1367 | peerDependencies:
1368 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1369 | dependencies:
1370 | '@react-types/overlays': 3.8.3(react@18.2.0)
1371 | '@react-types/shared': 3.21.0(react@18.2.0)
1372 | react: 18.2.0
1373 | dev: false
1374 |
1375 | /@react-types/meter@3.3.5(react@18.2.0):
1376 | resolution: {integrity: sha512-7kSP/bqkt6ANHUJLJ4OsHOPNwg9ETvWHAKXDYoCqkLYzdhFh0H/8EAW9z4Bh/io0GvR7ePds9s+32iislfSwDg==}
1377 | peerDependencies:
1378 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1379 | dependencies:
1380 | '@react-types/progress': 3.5.0(react@18.2.0)
1381 | '@react-types/shared': 3.21.0(react@18.2.0)
1382 | react: 18.2.0
1383 | dev: false
1384 |
1385 | /@react-types/numberfield@3.6.1(react@18.2.0):
1386 | resolution: {integrity: sha512-jdMCN0mQ7eZkPrCKYkkG+jSjcG2VQ5P7mR9tTaCQeQK1wo+tF/8LWD+6n6dU7hH/qlU9sxVEg3U3kJ9sgNK+Hw==}
1387 | peerDependencies:
1388 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1389 | dependencies:
1390 | '@react-types/shared': 3.21.0(react@18.2.0)
1391 | react: 18.2.0
1392 | dev: false
1393 |
1394 | /@react-types/overlays@3.8.3(react@18.2.0):
1395 | resolution: {integrity: sha512-TrCG2I2+V+TD0PGi3CqfnyU5jEzcelSGgYJQvVxsl5Vv3ri7naBLIsOjF9x66tPxhINLCPUtOze/WYRAexp8aw==}
1396 | peerDependencies:
1397 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1398 | dependencies:
1399 | '@react-types/shared': 3.21.0(react@18.2.0)
1400 | react: 18.2.0
1401 | dev: false
1402 |
1403 | /@react-types/progress@3.5.0(react@18.2.0):
1404 | resolution: {integrity: sha512-c1KLQCfYjdUdkTcPy0ZW31dc2+D86ZiZRHPNOaSYFGJjk9ItbWWi8BQTwlrw6D2l/+0d/YDdUFGaZhHMrY9mBQ==}
1405 | peerDependencies:
1406 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1407 | dependencies:
1408 | '@react-types/shared': 3.21.0(react@18.2.0)
1409 | react: 18.2.0
1410 | dev: false
1411 |
1412 | /@react-types/radio@3.5.2(react@18.2.0):
1413 | resolution: {integrity: sha512-crYQ+97abd5v0Iw9X+Tt+E7KWdm5ckr4g0+Iy8byV1g6MyiBOsNtq9QT99TOzyWJPqqD8T9qZfAOk49wK7KEDg==}
1414 | peerDependencies:
1415 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1416 | dependencies:
1417 | '@react-types/shared': 3.21.0(react@18.2.0)
1418 | react: 18.2.0
1419 | dev: false
1420 |
1421 | /@react-types/searchfield@3.5.1(react@18.2.0):
1422 | resolution: {integrity: sha512-+v9fo50JrZOfFzbdgJsW39hyTFv1gVH458nx82aidYJzQocFJniiAEl0ZhhRzbE8RijyjLleKIAY+klPeFmEaQ==}
1423 | peerDependencies:
1424 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1425 | dependencies:
1426 | '@react-types/shared': 3.21.0(react@18.2.0)
1427 | '@react-types/textfield': 3.8.1(react@18.2.0)
1428 | react: 18.2.0
1429 | dev: false
1430 |
1431 | /@react-types/select@3.8.4(react@18.2.0):
1432 | resolution: {integrity: sha512-jHBaLiAHTcYPz52kuJpypBbR0WAA+YCZHy2HH+W8711HuTqePZCEp6QAWHK9Fw0qwSZQ052jYaWvOsgEZZ6ojQ==}
1433 | peerDependencies:
1434 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1435 | dependencies:
1436 | '@react-types/shared': 3.21.0(react@18.2.0)
1437 | react: 18.2.0
1438 | dev: false
1439 |
1440 | /@react-types/shared@3.21.0(react@18.2.0):
1441 | resolution: {integrity: sha512-wJA2cUF8dP4LkuNUt9Vh2kkfiQb2NLnV2pPXxVnKJZ7d4x2/7VPccN+LYPnH8m0X3+rt50cxWuPKQmjxSsCFOg==}
1442 | peerDependencies:
1443 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1444 | dependencies:
1445 | react: 18.2.0
1446 | dev: false
1447 |
1448 | /@react-types/slider@3.6.2(react@18.2.0):
1449 | resolution: {integrity: sha512-LSvna1gpOvBxOBI5I/CYEtkAshWYwPlxE9F/jCaxCa9Q7E9xZp1hFFGY87iQ1A3vQM5SCa5PFStwOvXO7rA55w==}
1450 | peerDependencies:
1451 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1452 | dependencies:
1453 | '@react-types/shared': 3.21.0(react@18.2.0)
1454 | react: 18.2.0
1455 | dev: false
1456 |
1457 | /@react-types/switch@3.4.2(react@18.2.0):
1458 | resolution: {integrity: sha512-OQWpawikWhF+ET1/kE0/JeJVr6gHjkR72p/idTsT7RUJySBcehhAscbIA8iWzVWJvdFCVF2hG7uzBAJTeDMr9A==}
1459 | peerDependencies:
1460 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1461 | dependencies:
1462 | '@react-types/checkbox': 3.5.2(react@18.2.0)
1463 | '@react-types/shared': 3.21.0(react@18.2.0)
1464 | react: 18.2.0
1465 | dev: false
1466 |
1467 | /@react-types/table@3.9.0(react@18.2.0):
1468 | resolution: {integrity: sha512-WOLxZ3tzLA4gxRxvnsZhnnQDbh4Qe/johpHNk4coSOFOP5W8PbunPacXnbvdPkSx6rqrOIzCnYcZCtgk4gDQmg==}
1469 | peerDependencies:
1470 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1471 | dependencies:
1472 | '@react-types/grid': 3.2.2(react@18.2.0)
1473 | '@react-types/shared': 3.21.0(react@18.2.0)
1474 | react: 18.2.0
1475 | dev: false
1476 |
1477 | /@react-types/tabs@3.3.3(react@18.2.0):
1478 | resolution: {integrity: sha512-Zc4g5TIwJpKS5fiT9m4dypbCr1xqtauL4wqM76fGERCAZy0FwXTH/yjzHJDYKyWFJrQNWtJ0KAhJR/ZqKDVnIw==}
1479 | peerDependencies:
1480 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1481 | dependencies:
1482 | '@react-types/shared': 3.21.0(react@18.2.0)
1483 | react: 18.2.0
1484 | dev: false
1485 |
1486 | /@react-types/textfield@3.8.1(react@18.2.0):
1487 | resolution: {integrity: sha512-p8Xmew9kzJd+tCM7h9LyebZHpv7SH1IE1Nu13hLCOV5cZ/tVVVCwjNGLMv4MtUpSn++H42YLJgAW9Uif+a+RHg==}
1488 | peerDependencies:
1489 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1490 | dependencies:
1491 | '@react-types/shared': 3.21.0(react@18.2.0)
1492 | react: 18.2.0
1493 | dev: false
1494 |
1495 | /@react-types/tooltip@3.4.5(react@18.2.0):
1496 | resolution: {integrity: sha512-pv87Vlu+Pn1Titw199y5aiSuXF/GHX+fBCihi9BeePqtwYm505e/Si01BNh5ejCeXXOS4JIMuXwmGGzGVdGk6Q==}
1497 | peerDependencies:
1498 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
1499 | dependencies:
1500 | '@react-types/overlays': 3.8.3(react@18.2.0)
1501 | '@react-types/shared': 3.21.0(react@18.2.0)
1502 | react: 18.2.0
1503 | dev: false
1504 |
1505 | /@supabase/functions-js@2.1.5:
1506 | resolution: {integrity: sha512-BNzC5XhCzzCaggJ8s53DP+WeHHGT/NfTsx2wUSSGKR2/ikLFQTBCDzMvGz/PxYMqRko/LwncQtKXGOYp1PkPaw==}
1507 | dependencies:
1508 | '@supabase/node-fetch': 2.6.15
1509 | dev: false
1510 |
1511 | /@supabase/gotrue-js@2.57.0:
1512 | resolution: {integrity: sha512-/CcAW40aPKgp9/w9WgXVUQFg1AOdvFR687ONOMjASPBuC6FsNbKlcXp4pc+rwKNtxyxDkBbR+x7zj/8g00r/Og==}
1513 | dependencies:
1514 | '@supabase/node-fetch': 2.6.15
1515 | dev: false
1516 |
1517 | /@supabase/node-fetch@2.6.15:
1518 | resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==}
1519 | engines: {node: 4.x || >=6.0.0}
1520 | dependencies:
1521 | whatwg-url: 5.0.0
1522 | dev: false
1523 |
1524 | /@supabase/postgrest-js@1.9.0:
1525 | resolution: {integrity: sha512-axP6cU69jDrLbfihJKQ6vU27tklD0gzb9idkMN363MtTXeJVt5DQNT3JnJ58JVNBdL74hgm26rAsFNvHk+tnSw==}
1526 | dependencies:
1527 | '@supabase/node-fetch': 2.6.15
1528 | dev: false
1529 |
1530 | /@supabase/realtime-js@2.8.4:
1531 | resolution: {integrity: sha512-5C9slLTGikHnYmAnIBOaPogAgbcNY68vnIyE6GpqIKjHElVb6LIi4clwNcjHSj4z6szuvvzj8T/+ePEgGEGekw==}
1532 | dependencies:
1533 | '@supabase/node-fetch': 2.6.15
1534 | '@types/phoenix': 1.6.4
1535 | '@types/websocket': 1.0.10
1536 | websocket: 1.0.34
1537 | transitivePeerDependencies:
1538 | - supports-color
1539 | dev: false
1540 |
1541 | /@supabase/ssr@0.1.0(@supabase/supabase-js@2.38.5):
1542 | resolution: {integrity: sha512-bIVrkqjAK5G3KjkIMKYKtAOlCgRRplEWjrlyRyXSOYtgDieiOhk2ZyNAPsEOa1By9OZVxuX5eAW1fitdnuxayw==}
1543 | peerDependencies:
1544 | '@supabase/supabase-js': ^2.33.1
1545 | dependencies:
1546 | '@supabase/supabase-js': 2.38.5
1547 | cookie: 0.5.0
1548 | ramda: 0.29.1
1549 | dev: false
1550 |
1551 | /@supabase/storage-js@2.5.4:
1552 | resolution: {integrity: sha512-yspHD19I9uQUgfTh0J94+/r/g6hnhdQmw6Y7OWqr/EbnL6uvicGV1i1UDkkmeUHqfF9Mbt2sLtuxRycYyKv2ew==}
1553 | dependencies:
1554 | '@supabase/node-fetch': 2.6.15
1555 | dev: false
1556 |
1557 | /@supabase/supabase-js@2.38.5:
1558 | resolution: {integrity: sha512-QTXld3AfwAJgeOGyOKsCcT7AjC3jJxN02iHy299Fw+qKX0lJ1tVVhMGlga101C1stUCvgzjcypmMSGiZ2oeKsw==}
1559 | dependencies:
1560 | '@supabase/functions-js': 2.1.5
1561 | '@supabase/gotrue-js': 2.57.0
1562 | '@supabase/node-fetch': 2.6.15
1563 | '@supabase/postgrest-js': 1.9.0
1564 | '@supabase/realtime-js': 2.8.4
1565 | '@supabase/storage-js': 2.5.4
1566 | transitivePeerDependencies:
1567 | - supports-color
1568 | dev: false
1569 |
1570 | /@swc/helpers@0.4.14:
1571 | resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
1572 | dependencies:
1573 | tslib: 2.6.2
1574 | dev: false
1575 |
1576 | /@swc/helpers@0.4.36:
1577 | resolution: {integrity: sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==}
1578 | dependencies:
1579 | legacy-swc-helpers: /@swc/helpers@0.4.14
1580 | tslib: 2.6.2
1581 | dev: false
1582 |
1583 | /@swc/helpers@0.5.2:
1584 | resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==}
1585 | dependencies:
1586 | tslib: 2.6.2
1587 | dev: false
1588 |
1589 | /@swc/helpers@0.5.3:
1590 | resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==}
1591 | dependencies:
1592 | tslib: 2.6.2
1593 | dev: false
1594 |
1595 | /@types/node@20.9.0:
1596 | resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==}
1597 | dependencies:
1598 | undici-types: 5.26.5
1599 |
1600 | /@types/pg@8.6.6:
1601 | resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==}
1602 | dependencies:
1603 | '@types/node': 20.9.0
1604 | pg-protocol: 1.6.0
1605 | pg-types: 2.2.0
1606 | dev: false
1607 |
1608 | /@types/phoenix@1.6.4:
1609 | resolution: {integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==}
1610 | dev: false
1611 |
1612 | /@types/prop-types@15.7.10:
1613 | resolution: {integrity: sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==}
1614 | dev: true
1615 |
1616 | /@types/react-dom@18.2.15:
1617 | resolution: {integrity: sha512-HWMdW+7r7MR5+PZqJF6YFNSCtjz1T0dsvo/f1BV6HkV+6erD/nA7wd9NM00KVG83zf2nJ7uATPO9ttdIPvi3gg==}
1618 | dependencies:
1619 | '@types/react': 18.2.37
1620 | dev: true
1621 |
1622 | /@types/react@18.2.37:
1623 | resolution: {integrity: sha512-RGAYMi2bhRgEXT3f4B92WTohopH6bIXw05FuGlmJEnv/omEn190+QYEIYxIAuIBdKgboYYdVved2p1AxZVQnaw==}
1624 | dependencies:
1625 | '@types/prop-types': 15.7.10
1626 | '@types/scheduler': 0.16.6
1627 | csstype: 3.1.2
1628 | dev: true
1629 |
1630 | /@types/scheduler@0.16.6:
1631 | resolution: {integrity: sha512-Vlktnchmkylvc9SnwwwozTv04L/e1NykF5vgoQ0XTmI8DD+wxfjQuHuvHS3p0r2jz2x2ghPs2h1FVeDirIteWA==}
1632 | dev: true
1633 |
1634 | /@types/websocket@1.0.10:
1635 | resolution: {integrity: sha512-svjGZvPB7EzuYS94cI7a+qhwgGU1y89wUgjT6E2wVUfmAGIvRfT7obBvRtnhXCSsoMdlG4gBFGE7MfkIXZLoww==}
1636 | dependencies:
1637 | '@types/node': 20.9.0
1638 | dev: false
1639 |
1640 | /@vercel/postgres@0.5.1:
1641 | resolution: {integrity: sha512-JKl8QOBIDnifhkxAhIKtY0A5Tb8oWBf2nzZhm0OH7Ffjsl0hGVnDL2w1/FCfpX8xna3JAWM034NGuhZfTFdmiw==}
1642 | engines: {node: '>=14.6'}
1643 | dependencies:
1644 | '@neondatabase/serverless': 0.6.0
1645 | bufferutil: 4.0.8
1646 | utf-8-validate: 6.0.3
1647 | ws: 8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3)
1648 | dev: false
1649 |
1650 | /any-promise@1.3.0:
1651 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
1652 |
1653 | /anymatch@3.1.3:
1654 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
1655 | engines: {node: '>= 8'}
1656 | dependencies:
1657 | normalize-path: 3.0.0
1658 | picomatch: 2.3.1
1659 |
1660 | /arg@5.0.2:
1661 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
1662 |
1663 | /autoprefixer@10.4.16(postcss@8.4.31):
1664 | resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==}
1665 | engines: {node: ^10 || ^12 || >=14}
1666 | hasBin: true
1667 | peerDependencies:
1668 | postcss: ^8.1.0
1669 | dependencies:
1670 | browserslist: 4.22.1
1671 | caniuse-lite: 1.0.30001561
1672 | fraction.js: 4.3.7
1673 | normalize-range: 0.1.2
1674 | picocolors: 1.0.0
1675 | postcss: 8.4.31
1676 | postcss-value-parser: 4.2.0
1677 | dev: true
1678 |
1679 | /balanced-match@1.0.2:
1680 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
1681 |
1682 | /binary-extensions@2.2.0:
1683 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
1684 | engines: {node: '>=8'}
1685 |
1686 | /brace-expansion@1.1.11:
1687 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
1688 | dependencies:
1689 | balanced-match: 1.0.2
1690 | concat-map: 0.0.1
1691 |
1692 | /braces@3.0.2:
1693 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
1694 | engines: {node: '>=8'}
1695 | dependencies:
1696 | fill-range: 7.0.1
1697 |
1698 | /browserslist@4.22.1:
1699 | resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==}
1700 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
1701 | hasBin: true
1702 | dependencies:
1703 | caniuse-lite: 1.0.30001561
1704 | electron-to-chromium: 1.4.578
1705 | node-releases: 2.0.13
1706 | update-browserslist-db: 1.0.13(browserslist@4.22.1)
1707 | dev: true
1708 |
1709 | /bufferutil@4.0.8:
1710 | resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==}
1711 | engines: {node: '>=6.14.2'}
1712 | requiresBuild: true
1713 | dependencies:
1714 | node-gyp-build: 4.6.1
1715 | dev: false
1716 |
1717 | /busboy@1.6.0:
1718 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
1719 | engines: {node: '>=10.16.0'}
1720 | dependencies:
1721 | streamsearch: 1.1.0
1722 | dev: false
1723 |
1724 | /camelcase-css@2.0.1:
1725 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
1726 | engines: {node: '>= 6'}
1727 |
1728 | /caniuse-lite@1.0.30001561:
1729 | resolution: {integrity: sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==}
1730 |
1731 | /chokidar@3.5.3:
1732 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
1733 | engines: {node: '>= 8.10.0'}
1734 | dependencies:
1735 | anymatch: 3.1.3
1736 | braces: 3.0.2
1737 | glob-parent: 5.1.2
1738 | is-binary-path: 2.1.0
1739 | is-glob: 4.0.3
1740 | normalize-path: 3.0.0
1741 | readdirp: 3.6.0
1742 | optionalDependencies:
1743 | fsevents: 2.3.3
1744 |
1745 | /client-only@0.0.1:
1746 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
1747 | dev: false
1748 |
1749 | /clsx@1.2.1:
1750 | resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==}
1751 | engines: {node: '>=6'}
1752 | dev: false
1753 |
1754 | /commander@4.1.1:
1755 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
1756 | engines: {node: '>= 6'}
1757 |
1758 | /concat-map@0.0.1:
1759 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
1760 |
1761 | /cookie@0.5.0:
1762 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
1763 | engines: {node: '>= 0.6'}
1764 | dev: false
1765 |
1766 | /cssesc@3.0.0:
1767 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
1768 | engines: {node: '>=4'}
1769 | hasBin: true
1770 |
1771 | /csstype@3.1.2:
1772 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
1773 | dev: true
1774 |
1775 | /d@1.0.1:
1776 | resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==}
1777 | dependencies:
1778 | es5-ext: 0.10.62
1779 | type: 1.2.0
1780 | dev: false
1781 |
1782 | /debug@2.6.9:
1783 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
1784 | peerDependencies:
1785 | supports-color: '*'
1786 | peerDependenciesMeta:
1787 | supports-color:
1788 | optional: true
1789 | dependencies:
1790 | ms: 2.0.0
1791 | dev: false
1792 |
1793 | /didyoumean@1.2.2:
1794 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
1795 |
1796 | /dlv@1.1.3:
1797 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
1798 |
1799 | /dotenv@16.3.1:
1800 | resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==}
1801 | engines: {node: '>=12'}
1802 | dev: true
1803 |
1804 | /electron-to-chromium@1.4.578:
1805 | resolution: {integrity: sha512-V0ZhSu1BQZKfG0yNEL6Dadzik8E1vAzfpVOapdSiT9F6yapEJ3Bk+4tZ4SMPdWiUchCgnM/ByYtBzp5ntzDMIA==}
1806 | dev: true
1807 |
1808 | /es5-ext@0.10.62:
1809 | resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==}
1810 | engines: {node: '>=0.10'}
1811 | requiresBuild: true
1812 | dependencies:
1813 | es6-iterator: 2.0.3
1814 | es6-symbol: 3.1.3
1815 | next-tick: 1.1.0
1816 | dev: false
1817 |
1818 | /es6-iterator@2.0.3:
1819 | resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==}
1820 | dependencies:
1821 | d: 1.0.1
1822 | es5-ext: 0.10.62
1823 | es6-symbol: 3.1.3
1824 | dev: false
1825 |
1826 | /es6-symbol@3.1.3:
1827 | resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==}
1828 | dependencies:
1829 | d: 1.0.1
1830 | ext: 1.7.0
1831 | dev: false
1832 |
1833 | /escalade@3.1.1:
1834 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1835 | engines: {node: '>=6'}
1836 | dev: true
1837 |
1838 | /ext@1.7.0:
1839 | resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
1840 | dependencies:
1841 | type: 2.7.2
1842 | dev: false
1843 |
1844 | /fast-glob@3.3.2:
1845 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
1846 | engines: {node: '>=8.6.0'}
1847 | dependencies:
1848 | '@nodelib/fs.stat': 2.0.5
1849 | '@nodelib/fs.walk': 1.2.8
1850 | glob-parent: 5.1.2
1851 | merge2: 1.4.1
1852 | micromatch: 4.0.5
1853 |
1854 | /fastq@1.15.0:
1855 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
1856 | dependencies:
1857 | reusify: 1.0.4
1858 |
1859 | /fill-range@7.0.1:
1860 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1861 | engines: {node: '>=8'}
1862 | dependencies:
1863 | to-regex-range: 5.0.1
1864 |
1865 | /fraction.js@4.3.7:
1866 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
1867 | dev: true
1868 |
1869 | /fs.realpath@1.0.0:
1870 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1871 |
1872 | /fsevents@2.3.3:
1873 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1874 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1875 | os: [darwin]
1876 | requiresBuild: true
1877 | optional: true
1878 |
1879 | /function-bind@1.1.2:
1880 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
1881 |
1882 | /geist@1.1.0(next@14.0.1):
1883 | resolution: {integrity: sha512-UwZH+ekwAt1T5XYlviFD+jUXFeRRawDDT8RtpJ//IHTPXlVIO6BCcZ8M0Pxg1K/FT3H8HLn3KJqMsPLHbo1HNg==}
1884 | peerDependencies:
1885 | next: ^13.2 || ^14
1886 | dependencies:
1887 | next: 14.0.1(react-dom@18.2.0)(react@18.2.0)
1888 | dev: false
1889 |
1890 | /glob-parent@5.1.2:
1891 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1892 | engines: {node: '>= 6'}
1893 | dependencies:
1894 | is-glob: 4.0.3
1895 |
1896 | /glob-parent@6.0.2:
1897 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1898 | engines: {node: '>=10.13.0'}
1899 | dependencies:
1900 | is-glob: 4.0.3
1901 |
1902 | /glob-to-regexp@0.4.1:
1903 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
1904 | dev: false
1905 |
1906 | /glob@7.1.6:
1907 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
1908 | dependencies:
1909 | fs.realpath: 1.0.0
1910 | inflight: 1.0.6
1911 | inherits: 2.0.4
1912 | minimatch: 3.1.2
1913 | once: 1.4.0
1914 | path-is-absolute: 1.0.1
1915 |
1916 | /graceful-fs@4.2.11:
1917 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1918 | dev: false
1919 |
1920 | /hasown@2.0.0:
1921 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
1922 | engines: {node: '>= 0.4'}
1923 | dependencies:
1924 | function-bind: 1.1.2
1925 |
1926 | /inflight@1.0.6:
1927 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1928 | dependencies:
1929 | once: 1.4.0
1930 | wrappy: 1.0.2
1931 |
1932 | /inherits@2.0.4:
1933 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1934 |
1935 | /intl-messageformat@10.5.5:
1936 | resolution: {integrity: sha512-sF+cJCfMn+kGcSeGGRcB1UpBH0/+Ko2KByHj2RpL2qIkRvsrnuDl8zufEkvk+GPosk932C6W1Kq24xWaw+2jDA==}
1937 | dependencies:
1938 | '@formatjs/ecma402-abstract': 1.17.3
1939 | '@formatjs/fast-memoize': 2.2.0
1940 | '@formatjs/icu-messageformat-parser': 2.7.1
1941 | tslib: 2.6.2
1942 | dev: false
1943 |
1944 | /is-binary-path@2.1.0:
1945 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1946 | engines: {node: '>=8'}
1947 | dependencies:
1948 | binary-extensions: 2.2.0
1949 |
1950 | /is-core-module@2.13.1:
1951 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
1952 | dependencies:
1953 | hasown: 2.0.0
1954 |
1955 | /is-extglob@2.1.1:
1956 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1957 | engines: {node: '>=0.10.0'}
1958 |
1959 | /is-glob@4.0.3:
1960 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1961 | engines: {node: '>=0.10.0'}
1962 | dependencies:
1963 | is-extglob: 2.1.1
1964 |
1965 | /is-number@7.0.0:
1966 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1967 | engines: {node: '>=0.12.0'}
1968 |
1969 | /is-typedarray@1.0.0:
1970 | resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
1971 | dev: false
1972 |
1973 | /jiti@1.21.0:
1974 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
1975 | hasBin: true
1976 |
1977 | /js-tokens@4.0.0:
1978 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1979 | dev: false
1980 |
1981 | /lilconfig@2.1.0:
1982 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
1983 | engines: {node: '>=10'}
1984 |
1985 | /lines-and-columns@1.2.4:
1986 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1987 |
1988 | /loose-envify@1.4.0:
1989 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1990 | hasBin: true
1991 | dependencies:
1992 | js-tokens: 4.0.0
1993 | dev: false
1994 |
1995 | /merge2@1.4.1:
1996 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1997 | engines: {node: '>= 8'}
1998 |
1999 | /micromatch@4.0.5:
2000 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
2001 | engines: {node: '>=8.6'}
2002 | dependencies:
2003 | braces: 3.0.2
2004 | picomatch: 2.3.1
2005 |
2006 | /minimatch@3.1.2:
2007 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
2008 | dependencies:
2009 | brace-expansion: 1.1.11
2010 |
2011 | /ms@2.0.0:
2012 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
2013 | dev: false
2014 |
2015 | /mz@2.7.0:
2016 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
2017 | dependencies:
2018 | any-promise: 1.3.0
2019 | object-assign: 4.1.1
2020 | thenify-all: 1.6.0
2021 |
2022 | /nanoid@3.3.7:
2023 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
2024 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
2025 | hasBin: true
2026 |
2027 | /next-tick@1.1.0:
2028 | resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
2029 | dev: false
2030 |
2031 | /next@14.0.1(react-dom@18.2.0)(react@18.2.0):
2032 | resolution: {integrity: sha512-s4YaLpE4b0gmb3ggtmpmV+wt+lPRuGtANzojMQ2+gmBpgX9w5fTbjsy6dXByBuENsdCX5pukZH/GxdFgO62+pA==}
2033 | engines: {node: '>=18.17.0'}
2034 | hasBin: true
2035 | peerDependencies:
2036 | '@opentelemetry/api': ^1.1.0
2037 | react: ^18.2.0
2038 | react-dom: ^18.2.0
2039 | sass: ^1.3.0
2040 | peerDependenciesMeta:
2041 | '@opentelemetry/api':
2042 | optional: true
2043 | sass:
2044 | optional: true
2045 | dependencies:
2046 | '@next/env': 14.0.1
2047 | '@swc/helpers': 0.5.2
2048 | busboy: 1.6.0
2049 | caniuse-lite: 1.0.30001561
2050 | postcss: 8.4.31
2051 | react: 18.2.0
2052 | react-dom: 18.2.0(react@18.2.0)
2053 | styled-jsx: 5.1.1(react@18.2.0)
2054 | watchpack: 2.4.0
2055 | optionalDependencies:
2056 | '@next/swc-darwin-arm64': 14.0.1
2057 | '@next/swc-darwin-x64': 14.0.1
2058 | '@next/swc-linux-arm64-gnu': 14.0.1
2059 | '@next/swc-linux-arm64-musl': 14.0.1
2060 | '@next/swc-linux-x64-gnu': 14.0.1
2061 | '@next/swc-linux-x64-musl': 14.0.1
2062 | '@next/swc-win32-arm64-msvc': 14.0.1
2063 | '@next/swc-win32-ia32-msvc': 14.0.1
2064 | '@next/swc-win32-x64-msvc': 14.0.1
2065 | transitivePeerDependencies:
2066 | - '@babel/core'
2067 | - babel-plugin-macros
2068 | dev: false
2069 |
2070 | /node-gyp-build@4.6.1:
2071 | resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==}
2072 | hasBin: true
2073 | dev: false
2074 |
2075 | /node-releases@2.0.13:
2076 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
2077 | dev: true
2078 |
2079 | /normalize-path@3.0.0:
2080 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
2081 | engines: {node: '>=0.10.0'}
2082 |
2083 | /normalize-range@0.1.2:
2084 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
2085 | engines: {node: '>=0.10.0'}
2086 | dev: true
2087 |
2088 | /object-assign@4.1.1:
2089 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
2090 | engines: {node: '>=0.10.0'}
2091 |
2092 | /object-hash@3.0.0:
2093 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
2094 | engines: {node: '>= 6'}
2095 |
2096 | /once@1.4.0:
2097 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
2098 | dependencies:
2099 | wrappy: 1.0.2
2100 |
2101 | /path-is-absolute@1.0.1:
2102 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
2103 | engines: {node: '>=0.10.0'}
2104 |
2105 | /path-parse@1.0.7:
2106 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
2107 |
2108 | /pg-int8@1.0.1:
2109 | resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
2110 | engines: {node: '>=4.0.0'}
2111 | dev: false
2112 |
2113 | /pg-protocol@1.6.0:
2114 | resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==}
2115 | dev: false
2116 |
2117 | /pg-types@2.2.0:
2118 | resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
2119 | engines: {node: '>=4'}
2120 | dependencies:
2121 | pg-int8: 1.0.1
2122 | postgres-array: 2.0.0
2123 | postgres-bytea: 1.0.0
2124 | postgres-date: 1.0.7
2125 | postgres-interval: 1.2.0
2126 | dev: false
2127 |
2128 | /picocolors@1.0.0:
2129 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
2130 |
2131 | /picomatch@2.3.1:
2132 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
2133 | engines: {node: '>=8.6'}
2134 |
2135 | /pify@2.3.0:
2136 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
2137 | engines: {node: '>=0.10.0'}
2138 |
2139 | /pirates@4.0.6:
2140 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
2141 | engines: {node: '>= 6'}
2142 |
2143 | /postcss-import@15.1.0(postcss@8.4.31):
2144 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
2145 | engines: {node: '>=14.0.0'}
2146 | peerDependencies:
2147 | postcss: ^8.0.0
2148 | dependencies:
2149 | postcss: 8.4.31
2150 | postcss-value-parser: 4.2.0
2151 | read-cache: 1.0.0
2152 | resolve: 1.22.8
2153 |
2154 | /postcss-js@4.0.1(postcss@8.4.31):
2155 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
2156 | engines: {node: ^12 || ^14 || >= 16}
2157 | peerDependencies:
2158 | postcss: ^8.4.21
2159 | dependencies:
2160 | camelcase-css: 2.0.1
2161 | postcss: 8.4.31
2162 |
2163 | /postcss-load-config@4.0.1(postcss@8.4.31):
2164 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
2165 | engines: {node: '>= 14'}
2166 | peerDependencies:
2167 | postcss: '>=8.0.9'
2168 | ts-node: '>=9.0.0'
2169 | peerDependenciesMeta:
2170 | postcss:
2171 | optional: true
2172 | ts-node:
2173 | optional: true
2174 | dependencies:
2175 | lilconfig: 2.1.0
2176 | postcss: 8.4.31
2177 | yaml: 2.3.4
2178 |
2179 | /postcss-nested@6.0.1(postcss@8.4.31):
2180 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
2181 | engines: {node: '>=12.0'}
2182 | peerDependencies:
2183 | postcss: ^8.2.14
2184 | dependencies:
2185 | postcss: 8.4.31
2186 | postcss-selector-parser: 6.0.13
2187 |
2188 | /postcss-selector-parser@6.0.13:
2189 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
2190 | engines: {node: '>=4'}
2191 | dependencies:
2192 | cssesc: 3.0.0
2193 | util-deprecate: 1.0.2
2194 |
2195 | /postcss-value-parser@4.2.0:
2196 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
2197 |
2198 | /postcss@8.4.31:
2199 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
2200 | engines: {node: ^10 || ^12 || >=14}
2201 | dependencies:
2202 | nanoid: 3.3.7
2203 | picocolors: 1.0.0
2204 | source-map-js: 1.0.2
2205 |
2206 | /postgres-array@2.0.0:
2207 | resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
2208 | engines: {node: '>=4'}
2209 | dev: false
2210 |
2211 | /postgres-bytea@1.0.0:
2212 | resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==}
2213 | engines: {node: '>=0.10.0'}
2214 | dev: false
2215 |
2216 | /postgres-date@1.0.7:
2217 | resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==}
2218 | engines: {node: '>=0.10.0'}
2219 | dev: false
2220 |
2221 | /postgres-interval@1.2.0:
2222 | resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
2223 | engines: {node: '>=0.10.0'}
2224 | dependencies:
2225 | xtend: 4.0.2
2226 | dev: false
2227 |
2228 | /queue-microtask@1.2.3:
2229 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
2230 |
2231 | /ramda@0.29.1:
2232 | resolution: {integrity: sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==}
2233 | dev: false
2234 |
2235 | /react-aria-components@1.0.0-beta.2(react-dom@18.2.0)(react@18.2.0):
2236 | resolution: {integrity: sha512-XiLpbcOzZlurgsM5B+bdQ77JTgZ50HBmvEr25taicBsv/DiCCqFL9G+J0TDOVqetxAYL8TvZXcm076pxDL7uCQ==}
2237 | peerDependencies:
2238 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
2239 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
2240 | dependencies:
2241 | '@internationalized/date': 3.5.0
2242 | '@react-aria/focus': 3.14.3(react@18.2.0)
2243 | '@react-aria/interactions': 3.19.1(react@18.2.0)
2244 | '@react-aria/utils': 3.21.1(react@18.2.0)
2245 | '@react-stately/table': 3.11.2(react@18.2.0)
2246 | '@react-types/calendar': 3.4.1(react@18.2.0)
2247 | '@react-types/grid': 3.2.2(react@18.2.0)
2248 | '@react-types/shared': 3.21.0(react@18.2.0)
2249 | '@react-types/table': 3.9.0(react@18.2.0)
2250 | '@swc/helpers': 0.5.3
2251 | react: 18.2.0
2252 | react-aria: 3.29.1(react-dom@18.2.0)(react@18.2.0)
2253 | react-dom: 18.2.0(react@18.2.0)
2254 | react-stately: 3.27.1(react@18.2.0)
2255 | use-sync-external-store: 1.2.0(react@18.2.0)
2256 | dev: false
2257 |
2258 | /react-aria@3.29.1(react-dom@18.2.0)(react@18.2.0):
2259 | resolution: {integrity: sha512-dDoaTh5fCaD3kO0kv49pqUUOsXRGuqFX7owQaly/RhWkBw/dlIYkHRVdOatllI/v4h1/Ne40QOXl15aAISozlA==}
2260 | peerDependencies:
2261 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
2262 | react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
2263 | dependencies:
2264 | '@react-aria/breadcrumbs': 3.5.7(react@18.2.0)
2265 | '@react-aria/button': 3.8.4(react@18.2.0)
2266 | '@react-aria/calendar': 3.5.2(react-dom@18.2.0)(react@18.2.0)
2267 | '@react-aria/checkbox': 3.11.2(react@18.2.0)
2268 | '@react-aria/combobox': 3.7.1(react-dom@18.2.0)(react@18.2.0)
2269 | '@react-aria/datepicker': 3.8.1(react-dom@18.2.0)(react@18.2.0)
2270 | '@react-aria/dialog': 3.5.7(react-dom@18.2.0)(react@18.2.0)
2271 | '@react-aria/dnd': 3.4.3(react-dom@18.2.0)(react@18.2.0)
2272 | '@react-aria/focus': 3.14.3(react@18.2.0)
2273 | '@react-aria/gridlist': 3.7.1(react-dom@18.2.0)(react@18.2.0)
2274 | '@react-aria/i18n': 3.8.4(react@18.2.0)
2275 | '@react-aria/interactions': 3.19.1(react@18.2.0)
2276 | '@react-aria/label': 3.7.2(react@18.2.0)
2277 | '@react-aria/link': 3.6.1(react@18.2.0)
2278 | '@react-aria/listbox': 3.11.1(react-dom@18.2.0)(react@18.2.0)
2279 | '@react-aria/menu': 3.11.1(react-dom@18.2.0)(react@18.2.0)
2280 | '@react-aria/meter': 3.4.7(react@18.2.0)
2281 | '@react-aria/numberfield': 3.9.1(react-dom@18.2.0)(react@18.2.0)
2282 | '@react-aria/overlays': 3.18.1(react-dom@18.2.0)(react@18.2.0)
2283 | '@react-aria/progress': 3.4.7(react@18.2.0)
2284 | '@react-aria/radio': 3.8.2(react@18.2.0)
2285 | '@react-aria/searchfield': 3.5.7(react@18.2.0)
2286 | '@react-aria/select': 3.13.1(react-dom@18.2.0)(react@18.2.0)
2287 | '@react-aria/selection': 3.17.1(react-dom@18.2.0)(react@18.2.0)
2288 | '@react-aria/separator': 3.3.7(react@18.2.0)
2289 | '@react-aria/slider': 3.7.2(react@18.2.0)
2290 | '@react-aria/ssr': 3.8.0(react@18.2.0)
2291 | '@react-aria/switch': 3.5.6(react@18.2.0)
2292 | '@react-aria/table': 3.13.1(react-dom@18.2.0)(react@18.2.0)
2293 | '@react-aria/tabs': 3.8.1(react-dom@18.2.0)(react@18.2.0)
2294 | '@react-aria/tag': 3.2.1(react-dom@18.2.0)(react@18.2.0)
2295 | '@react-aria/textfield': 3.12.2(react@18.2.0)
2296 | '@react-aria/tooltip': 3.6.4(react@18.2.0)
2297 | '@react-aria/utils': 3.21.1(react@18.2.0)
2298 | '@react-aria/visually-hidden': 3.8.6(react@18.2.0)
2299 | '@react-types/shared': 3.21.0(react@18.2.0)
2300 | react: 18.2.0
2301 | react-dom: 18.2.0(react@18.2.0)
2302 | dev: false
2303 |
2304 | /react-dom@18.2.0(react@18.2.0):
2305 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
2306 | peerDependencies:
2307 | react: ^18.2.0
2308 | dependencies:
2309 | loose-envify: 1.4.0
2310 | react: 18.2.0
2311 | scheduler: 0.23.0
2312 | dev: false
2313 |
2314 | /react-stately@3.27.1(react@18.2.0):
2315 | resolution: {integrity: sha512-qHhivqOpyATaWwoj3xl3IqqoEnib+dsl2vYlOz92CT5Ntm6lprF7KO+LkxdkS0SnUckdGewFM1NjCmbK7wPJgw==}
2316 | peerDependencies:
2317 | react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0
2318 | dependencies:
2319 | '@react-stately/calendar': 3.4.1(react@18.2.0)
2320 | '@react-stately/checkbox': 3.5.1(react@18.2.0)
2321 | '@react-stately/collections': 3.10.2(react@18.2.0)
2322 | '@react-stately/combobox': 3.7.1(react@18.2.0)
2323 | '@react-stately/data': 3.10.3(react@18.2.0)
2324 | '@react-stately/datepicker': 3.8.0(react@18.2.0)
2325 | '@react-stately/dnd': 3.2.5(react@18.2.0)
2326 | '@react-stately/list': 3.10.0(react@18.2.0)
2327 | '@react-stately/menu': 3.5.6(react@18.2.0)
2328 | '@react-stately/numberfield': 3.6.2(react@18.2.0)
2329 | '@react-stately/overlays': 3.6.3(react@18.2.0)
2330 | '@react-stately/radio': 3.9.1(react@18.2.0)
2331 | '@react-stately/searchfield': 3.4.6(react@18.2.0)
2332 | '@react-stately/select': 3.5.5(react@18.2.0)
2333 | '@react-stately/selection': 3.14.0(react@18.2.0)
2334 | '@react-stately/slider': 3.4.4(react@18.2.0)
2335 | '@react-stately/table': 3.11.2(react@18.2.0)
2336 | '@react-stately/tabs': 3.6.1(react@18.2.0)
2337 | '@react-stately/toggle': 3.6.3(react@18.2.0)
2338 | '@react-stately/tooltip': 3.4.5(react@18.2.0)
2339 | '@react-stately/tree': 3.7.3(react@18.2.0)
2340 | '@react-types/shared': 3.21.0(react@18.2.0)
2341 | react: 18.2.0
2342 | dev: false
2343 |
2344 | /react@18.2.0:
2345 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
2346 | engines: {node: '>=0.10.0'}
2347 | dependencies:
2348 | loose-envify: 1.4.0
2349 | dev: false
2350 |
2351 | /read-cache@1.0.0:
2352 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
2353 | dependencies:
2354 | pify: 2.3.0
2355 |
2356 | /readdirp@3.6.0:
2357 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
2358 | engines: {node: '>=8.10.0'}
2359 | dependencies:
2360 | picomatch: 2.3.1
2361 |
2362 | /resolve@1.22.8:
2363 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
2364 | hasBin: true
2365 | dependencies:
2366 | is-core-module: 2.13.1
2367 | path-parse: 1.0.7
2368 | supports-preserve-symlinks-flag: 1.0.0
2369 |
2370 | /reusify@1.0.4:
2371 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2372 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2373 |
2374 | /run-parallel@1.2.0:
2375 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2376 | dependencies:
2377 | queue-microtask: 1.2.3
2378 |
2379 | /scheduler@0.23.0:
2380 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
2381 | dependencies:
2382 | loose-envify: 1.4.0
2383 | dev: false
2384 |
2385 | /source-map-js@1.0.2:
2386 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
2387 | engines: {node: '>=0.10.0'}
2388 |
2389 | /streamsearch@1.1.0:
2390 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
2391 | engines: {node: '>=10.0.0'}
2392 | dev: false
2393 |
2394 | /styled-jsx@5.1.1(react@18.2.0):
2395 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
2396 | engines: {node: '>= 12.0.0'}
2397 | peerDependencies:
2398 | '@babel/core': '*'
2399 | babel-plugin-macros: '*'
2400 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
2401 | peerDependenciesMeta:
2402 | '@babel/core':
2403 | optional: true
2404 | babel-plugin-macros:
2405 | optional: true
2406 | dependencies:
2407 | client-only: 0.0.1
2408 | react: 18.2.0
2409 | dev: false
2410 |
2411 | /sucrase@3.34.0:
2412 | resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==}
2413 | engines: {node: '>=8'}
2414 | hasBin: true
2415 | dependencies:
2416 | '@jridgewell/gen-mapping': 0.3.3
2417 | commander: 4.1.1
2418 | glob: 7.1.6
2419 | lines-and-columns: 1.2.4
2420 | mz: 2.7.0
2421 | pirates: 4.0.6
2422 | ts-interface-checker: 0.1.13
2423 |
2424 | /supports-preserve-symlinks-flag@1.0.0:
2425 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2426 | engines: {node: '>= 0.4'}
2427 |
2428 | /tailwindcss-react-aria-components@1.0.0-beta.1(tailwindcss@3.3.5):
2429 | resolution: {integrity: sha512-TRh3beZJaVkWYewJWZ6JSoOdJy322gEEaOxNwh2obYkjzjj6XRfVkixZ0W8MaFSOUGcRRMjFEIQwLP2rypXueQ==}
2430 | peerDependencies:
2431 | tailwindcss: '>=3.0.0 || insiders'
2432 | dependencies:
2433 | tailwindcss: 3.3.5
2434 | dev: false
2435 |
2436 | /tailwindcss@3.3.5:
2437 | resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==}
2438 | engines: {node: '>=14.0.0'}
2439 | hasBin: true
2440 | dependencies:
2441 | '@alloc/quick-lru': 5.2.0
2442 | arg: 5.0.2
2443 | chokidar: 3.5.3
2444 | didyoumean: 1.2.2
2445 | dlv: 1.1.3
2446 | fast-glob: 3.3.2
2447 | glob-parent: 6.0.2
2448 | is-glob: 4.0.3
2449 | jiti: 1.21.0
2450 | lilconfig: 2.1.0
2451 | micromatch: 4.0.5
2452 | normalize-path: 3.0.0
2453 | object-hash: 3.0.0
2454 | picocolors: 1.0.0
2455 | postcss: 8.4.31
2456 | postcss-import: 15.1.0(postcss@8.4.31)
2457 | postcss-js: 4.0.1(postcss@8.4.31)
2458 | postcss-load-config: 4.0.1(postcss@8.4.31)
2459 | postcss-nested: 6.0.1(postcss@8.4.31)
2460 | postcss-selector-parser: 6.0.13
2461 | resolve: 1.22.8
2462 | sucrase: 3.34.0
2463 | transitivePeerDependencies:
2464 | - ts-node
2465 |
2466 | /thenify-all@1.6.0:
2467 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
2468 | engines: {node: '>=0.8'}
2469 | dependencies:
2470 | thenify: 3.3.1
2471 |
2472 | /thenify@3.3.1:
2473 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
2474 | dependencies:
2475 | any-promise: 1.3.0
2476 |
2477 | /to-regex-range@5.0.1:
2478 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2479 | engines: {node: '>=8.0'}
2480 | dependencies:
2481 | is-number: 7.0.0
2482 |
2483 | /tr46@0.0.3:
2484 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
2485 | dev: false
2486 |
2487 | /ts-interface-checker@0.1.13:
2488 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
2489 |
2490 | /tslib@2.6.2:
2491 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
2492 | dev: false
2493 |
2494 | /type@1.2.0:
2495 | resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==}
2496 | dev: false
2497 |
2498 | /type@2.7.2:
2499 | resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==}
2500 | dev: false
2501 |
2502 | /typedarray-to-buffer@3.1.5:
2503 | resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
2504 | dependencies:
2505 | is-typedarray: 1.0.0
2506 | dev: false
2507 |
2508 | /typescript@5.2.2:
2509 | resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
2510 | engines: {node: '>=14.17'}
2511 | hasBin: true
2512 | dev: true
2513 |
2514 | /undici-types@5.26.5:
2515 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
2516 |
2517 | /update-browserslist-db@1.0.13(browserslist@4.22.1):
2518 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
2519 | hasBin: true
2520 | peerDependencies:
2521 | browserslist: '>= 4.21.0'
2522 | dependencies:
2523 | browserslist: 4.22.1
2524 | escalade: 3.1.1
2525 | picocolors: 1.0.0
2526 | dev: true
2527 |
2528 | /use-debounce@10.0.0(react@18.2.0):
2529 | resolution: {integrity: sha512-XRjvlvCB46bah9IBXVnq/ACP2lxqXyZj0D9hj4K5OzNroMDpTEBg8Anuh1/UfRTRs7pLhQ+RiNxxwZu9+MVl1A==}
2530 | engines: {node: '>= 16.0.0'}
2531 | peerDependencies:
2532 | react: '>=16.8.0'
2533 | dependencies:
2534 | react: 18.2.0
2535 | dev: false
2536 |
2537 | /use-sync-external-store@1.2.0(react@18.2.0):
2538 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
2539 | peerDependencies:
2540 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
2541 | dependencies:
2542 | react: 18.2.0
2543 | dev: false
2544 |
2545 | /utf-8-validate@5.0.10:
2546 | resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==}
2547 | engines: {node: '>=6.14.2'}
2548 | requiresBuild: true
2549 | dependencies:
2550 | node-gyp-build: 4.6.1
2551 | dev: false
2552 |
2553 | /utf-8-validate@6.0.3:
2554 | resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==}
2555 | engines: {node: '>=6.14.2'}
2556 | requiresBuild: true
2557 | dependencies:
2558 | node-gyp-build: 4.6.1
2559 | dev: false
2560 |
2561 | /util-deprecate@1.0.2:
2562 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
2563 |
2564 | /watchpack@2.4.0:
2565 | resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
2566 | engines: {node: '>=10.13.0'}
2567 | dependencies:
2568 | glob-to-regexp: 0.4.1
2569 | graceful-fs: 4.2.11
2570 | dev: false
2571 |
2572 | /webidl-conversions@3.0.1:
2573 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
2574 | dev: false
2575 |
2576 | /websocket@1.0.34:
2577 | resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==}
2578 | engines: {node: '>=4.0.0'}
2579 | dependencies:
2580 | bufferutil: 4.0.8
2581 | debug: 2.6.9
2582 | es5-ext: 0.10.62
2583 | typedarray-to-buffer: 3.1.5
2584 | utf-8-validate: 5.0.10
2585 | yaeti: 0.0.6
2586 | transitivePeerDependencies:
2587 | - supports-color
2588 | dev: false
2589 |
2590 | /whatwg-url@5.0.0:
2591 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
2592 | dependencies:
2593 | tr46: 0.0.3
2594 | webidl-conversions: 3.0.1
2595 | dev: false
2596 |
2597 | /wrappy@1.0.2:
2598 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2599 |
2600 | /ws@8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3):
2601 | resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==}
2602 | engines: {node: '>=10.0.0'}
2603 | peerDependencies:
2604 | bufferutil: ^4.0.1
2605 | utf-8-validate: '>=5.0.2'
2606 | peerDependenciesMeta:
2607 | bufferutil:
2608 | optional: true
2609 | utf-8-validate:
2610 | optional: true
2611 | dependencies:
2612 | bufferutil: 4.0.8
2613 | utf-8-validate: 6.0.3
2614 | dev: false
2615 |
2616 | /xtend@4.0.2:
2617 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
2618 | engines: {node: '>=0.4'}
2619 | dev: false
2620 |
2621 | /yaeti@0.0.6:
2622 | resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==}
2623 | engines: {node: '>=0.10.32'}
2624 | dev: false
2625 |
2626 | /yaml@2.3.4:
2627 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
2628 | engines: {node: '>= 14'}
2629 |
2630 | /zod@3.22.4:
2631 | resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
2632 | dev: false
2633 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/public/github-mark-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dijonmusters/nextjs-supabase-email-client/bd1121f94cfb26f7a42a4efd249e9426fbbb87b1/public/github-mark-white.png
--------------------------------------------------------------------------------
/tailwind.config.ts:
--------------------------------------------------------------------------------
1 | import type { Config } from 'tailwindcss';
2 |
3 | const config: Config = {
4 | content: [
5 | './components/**/*.{js,ts,jsx,tsx,mdx}',
6 | './app/**/*.{js,ts,jsx,tsx,mdx}',
7 | ],
8 | theme: {
9 | extend: {},
10 | },
11 | plugins: [require('tailwindcss-react-aria-components')],
12 | };
13 | export default config;
14 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "noEmit": true,
9 | "esModuleInterop": true,
10 | "module": "esnext",
11 | "moduleResolution": "bundler",
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "jsx": "preserve",
15 | "incremental": true,
16 | "baseUrl": ".",
17 | "plugins": [
18 | {
19 | "name": "next"
20 | }
21 | ],
22 | "paths": {
23 | "@/*": ["./*"]
24 | }
25 | },
26 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
27 | "exclude": ["node_modules"]
28 | }
29 |
--------------------------------------------------------------------------------