├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── app ├── api │ └── (auth) │ │ ├── signin │ │ └── page.tsx │ │ └── signup │ │ └── page.tsx ├── favicon.ico ├── globals.css ├── layout.tsx └── page.tsx ├── components.json ├── components ├── framework-rotation.tsx ├── theme-provider.tsx └── ui │ ├── button.tsx │ ├── dropdown-menu.tsx │ └── input.tsx ├── config └── site.ts ├── lib └── utils.ts ├── next.config.js ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── public ├── next.svg └── vercel.svg ├── tailwind.config.ts ├── tsconfig.json └── utils ├── assets.ts ├── data.ts └── tailwind.ts /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.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 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env*.local 29 | 30 | # vercel 31 | .vercel 32 | 33 | # typescript 34 | *.tsbuildinfo 35 | next-env.d.ts 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

"Launch" Landing Page

2 | 3 |

project-image

4 | 5 |

A beautifully designed & Animated "Coming Soon" landing page.

6 | 7 |

🚀 Demo

8 | 9 | [https://crm.xypeui.com/](https://crm.xypeui.com/) 10 | 11 |

Project Screenshots:

12 | 13 | project-screenshot 14 | 15 |

🧐 Features

16 | 17 | Here're some of the project's best features: 18 | 19 | - Beautifully styled UI 20 | - Lightweight 21 | - Animated 22 | 23 |

🛠️ Installation Steps:

24 | 25 |

1. Install all dependencies

26 | 27 | ``` 28 | pnpm i 29 | ``` 30 | 31 |

🍰 Contribution Guidelines:

32 | 33 | Please credit me if you use this! 34 | 35 |

💻 Built with

36 | 37 | Technologies used in the project: 38 | 39 | - NextJS 13 40 | - TailwindCSS 41 | - shadcn-ui 42 | 43 |

🛡️ License:

44 | 45 | This project is licensed under the Creative Commons Regulation. 46 | -------------------------------------------------------------------------------- /app/api/(auth)/signin/page.tsx: -------------------------------------------------------------------------------- 1 | import { Input } from "@/components/ui/input"; 2 | 3 | const SignInPage = () => { 4 | return ( 5 |
6 |
7 |
8 |
9 |

10 | Keep it special 11 |

12 |

13 | Capture your personal memory in unique way, anywhere. 14 |

15 |
16 |
17 | 18 | 25 | 26 | 27 | 28 | 29 | 36 | 37 | 38 | 39 | 40 | 47 | 48 | 49 | 50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |

58 | 59 | 65 | 71 | 72 |

73 |
74 | 75 | f 76 | 77 | 78 | G+ 79 | 80 | 81 | in 82 | 83 |
84 |

or use email your account

85 |
86 |
87 | 94 |
95 |
96 | 103 |
104 |
105 | Forgot your password? 106 |
107 |
108 | 111 |
112 | 113 |
114 | 115 | 122 | 123 | 124 | 125 | 126 | 133 | 134 | 135 | 136 | 137 | 144 | 145 | 146 | 147 |
148 |
149 |
150 |
151 |
152 | ); 153 | }; 154 | 155 | export default SignInPage; 156 | -------------------------------------------------------------------------------- /app/api/(auth)/signup/page.tsx: -------------------------------------------------------------------------------- 1 | const SignUpPage = () => { 2 | return ( 3 |
4 |

Sign Up

5 |
6 | ); 7 | }; 8 | 9 | export default SignUpPage; 10 | -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1w6ts/launch-landing-page/90607f16d15c8fd608e76553b954dcd969dc00a4/app/favicon.ico -------------------------------------------------------------------------------- /app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | body { 6 | background: #13131e; 7 | color: #ffffff; 8 | } 9 | 10 | @layer base { 11 | :root { 12 | --background: #13131e; 13 | --foreground: 222.2 84% 4.9%; 14 | 15 | --card: 0 0% 100%; 16 | --card-foreground: 222.2 84% 4.9%; 17 | 18 | --popover: 0 0% 100%; 19 | --popover-foreground: 222.2 84% 4.9%; 20 | 21 | --primary: 222.2 47.4% 11.2%; 22 | --primary-foreground: 210 40% 98%; 23 | 24 | --secondary: 210 40% 96.1%; 25 | --secondary-foreground: 222.2 47.4% 11.2%; 26 | 27 | --muted: 210 40% 96.1%; 28 | --muted-foreground: 215.4 16.3% 46.9%; 29 | 30 | --accent: 210 40% 96.1%; 31 | --accent-foreground: 222.2 47.4% 11.2%; 32 | 33 | --destructive: 0 84.2% 60.2%; 34 | --destructive-foreground: 210 40% 98%; 35 | 36 | --border: 214.3 31.8% 91.4%; 37 | --input: 214.3 31.8% 91.4%; 38 | --ring: 222.2 84% 4.9%; 39 | 40 | --radius: 0.5rem; 41 | } 42 | 43 | .dark { 44 | --background: #13131e; 45 | --foreground: #fff; 46 | 47 | --card: 222.2 84% 4.9%; 48 | --card-foreground: 210 40% 98%; 49 | 50 | --popover: 222.2 84% 4.9%; 51 | --popover-foreground: 210 40% 98%; 52 | 53 | --primary: 210 40% 98%; 54 | --primary-foreground: 222.2 47.4% 11.2%; 55 | 56 | --secondary: 217.2 32.6% 17.5%; 57 | --secondary-foreground: 210 40% 98%; 58 | 59 | --muted: 217.2 32.6% 17.5%; 60 | --muted-foreground: 215 20.2% 65.1%; 61 | 62 | --accent: 217.2 32.6% 17.5%; 63 | --accent-foreground: 210 40% 98%; 64 | 65 | --destructive: 0 62.8% 30.6%; 66 | --destructive-foreground: 210 40% 98%; 67 | 68 | --border: 217.2 32.6% 17.5%; 69 | --input: 217.2 32.6% 17.5%; 70 | --ring: 212.7 26.8% 83.9%; 71 | } 72 | } 73 | 74 | @layer base { 75 | * { 76 | @apply border-border; 77 | } 78 | body { 79 | @apply bg-background text-foreground; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /app/layout.tsx: -------------------------------------------------------------------------------- 1 | import { ThemeProvider } from "@/components/theme-provider"; 2 | import "./globals.css"; 3 | import type { Metadata } from "next"; 4 | import { Inter } from "next/font/google"; 5 | import { Toaster } from "react-hot-toast"; 6 | import { siteConfig } from "@/config/site"; 7 | 8 | const inter = Inter({ subsets: ["latin"] }); 9 | 10 | export const metadata: Metadata = { 11 | title: siteConfig.name, 12 | description: siteConfig.description, 13 | }; 14 | 15 | export default function RootLayout({ 16 | children, 17 | }: { 18 | children: React.ReactNode; 19 | }) { 20 | return ( 21 | 22 | 23 | 24 | 30 | {children} 31 | 32 | 33 | 34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /app/page.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import Image from "next/image"; 4 | import { assets } from "@/utils/assets"; 5 | import { type Framework, frameworks } from "@/utils/data"; 6 | import { useState, useEffect } from "react"; 7 | import { cn } from "@/utils/tailwind"; 8 | import { FrameworkRotation } from "@/components/framework-rotation"; 9 | import Link from "next/link"; 10 | import { Button } from "@/components/ui/button"; 11 | import { Input } from "@/components/ui/input"; 12 | import { toast } from "react-hot-toast"; 13 | 14 | export default function Home() { 15 | const [currentFramework, setCurrentFramework] = useState( 16 | frameworks[0] 17 | ); 18 | 19 | const [showBackground, setShowBackground] = useState(false); 20 | 21 | useEffect(() => { 22 | let currentIndex = 0; 23 | const rotateFrameworks = () => { 24 | setCurrentFramework(frameworks[currentIndex]); 25 | currentIndex = (currentIndex + 1) % frameworks.length; 26 | }; 27 | const intervalId = setInterval(rotateFrameworks, 2000); 28 | return () => clearInterval(intervalId); 29 | }, []); 30 | 31 | useEffect(() => { 32 | setShowBackground(true); 33 | }, []); 34 | 35 | return ( 36 |
37 |
49 | gradient-bg 57 |
64 |
70 | 71 |
72 |
73 |

76 | Build{" "} 77 | 86 | scalable 87 | {" "} 88 | CRM apps with{" "} 89 | 90 |

91 | 92 |

93 | 94 | Join us for the launch event by{" "} 95 | 96 | 105 | 106 | xypeui 107 | 108 | 109 |

110 |
111 | 112 | 138 |
139 |
140 |
141 |
142 | ); 143 | } 144 | -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "default", 4 | "rsc": true, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.ts", 8 | "css": "app/globals.css", 9 | "baseColor": "slate", 10 | "cssVariables": true 11 | }, 12 | "aliases": { 13 | "components": "@/components", 14 | "utils": "@/lib/utils" 15 | } 16 | } -------------------------------------------------------------------------------- /components/framework-rotation.tsx: -------------------------------------------------------------------------------- 1 | import Image from "next/image"; 2 | import { assets } from "@/utils/assets"; 3 | import { Framework, frameworks } from "@/utils/data"; 4 | import { cn } from "@/utils/tailwind"; 5 | 6 | type AssetKey = keyof typeof assets; 7 | 8 | export const FrameworkRotation = ({ 9 | currentFramework, 10 | }: { 11 | currentFramework: Framework; 12 | }) => { 13 | return ( 14 |
15 | {frameworks.map((name, index) => ( 16 | frameworks.indexOf(currentFramework as Framework) 24 | ? "opacity-0 -translate-y-2" 25 | : "opacity-0 translate-y-2" 26 | )} 27 | alt="Framework logo" 28 | width="80" 29 | height="80" 30 | /> 31 | ))} 32 |
33 | ); 34 | }; 35 | -------------------------------------------------------------------------------- /components/theme-provider.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as React from "react"; 4 | import { ThemeProvider as NextThemesProvider } from "next-themes"; 5 | import { type ThemeProviderProps } from "next-themes/dist/types"; 6 | 7 | export function ThemeProvider({ children, ...props }: ThemeProviderProps) { 8 | return {children}; 9 | } 10 | -------------------------------------------------------------------------------- /components/ui/button.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | import { Slot } from "@radix-ui/react-slot" 3 | import { cva, type VariantProps } from "class-variance-authority" 4 | 5 | import { cn } from "@/lib/utils" 6 | 7 | const buttonVariants = cva( 8 | "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", 9 | { 10 | variants: { 11 | variant: { 12 | default: "bg-primary text-primary-foreground hover:bg-primary/90", 13 | destructive: 14 | "bg-destructive text-destructive-foreground hover:bg-destructive/90", 15 | outline: 16 | "border border-input bg-background hover:bg-accent hover:text-accent-foreground", 17 | secondary: 18 | "bg-secondary text-secondary-foreground hover:bg-secondary/80", 19 | ghost: "hover:bg-accent hover:text-accent-foreground", 20 | link: "text-primary underline-offset-4 hover:underline", 21 | }, 22 | size: { 23 | default: "h-10 px-4 py-2", 24 | sm: "h-9 rounded-md px-3", 25 | lg: "h-11 rounded-md px-8", 26 | icon: "h-10 w-10", 27 | }, 28 | }, 29 | defaultVariants: { 30 | variant: "default", 31 | size: "default", 32 | }, 33 | } 34 | ) 35 | 36 | export interface ButtonProps 37 | extends React.ButtonHTMLAttributes, 38 | VariantProps { 39 | asChild?: boolean 40 | } 41 | 42 | const Button = React.forwardRef( 43 | ({ className, variant, size, asChild = false, ...props }, ref) => { 44 | const Comp = asChild ? Slot : "button" 45 | return ( 46 | 51 | ) 52 | } 53 | ) 54 | Button.displayName = "Button" 55 | 56 | export { Button, buttonVariants } 57 | -------------------------------------------------------------------------------- /components/ui/dropdown-menu.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import * as React from "react" 4 | import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" 5 | import { Check, ChevronRight, Circle } from "lucide-react" 6 | 7 | import { cn } from "@/lib/utils" 8 | 9 | const DropdownMenu = DropdownMenuPrimitive.Root 10 | 11 | const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger 12 | 13 | const DropdownMenuGroup = DropdownMenuPrimitive.Group 14 | 15 | const DropdownMenuPortal = DropdownMenuPrimitive.Portal 16 | 17 | const DropdownMenuSub = DropdownMenuPrimitive.Sub 18 | 19 | const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup 20 | 21 | const DropdownMenuSubTrigger = React.forwardRef< 22 | React.ElementRef, 23 | React.ComponentPropsWithoutRef & { 24 | inset?: boolean 25 | } 26 | >(({ className, inset, children, ...props }, ref) => ( 27 | 36 | {children} 37 | 38 | 39 | )) 40 | DropdownMenuSubTrigger.displayName = 41 | DropdownMenuPrimitive.SubTrigger.displayName 42 | 43 | const DropdownMenuSubContent = React.forwardRef< 44 | React.ElementRef, 45 | React.ComponentPropsWithoutRef 46 | >(({ className, ...props }, ref) => ( 47 | 55 | )) 56 | DropdownMenuSubContent.displayName = 57 | DropdownMenuPrimitive.SubContent.displayName 58 | 59 | const DropdownMenuContent = React.forwardRef< 60 | React.ElementRef, 61 | React.ComponentPropsWithoutRef 62 | >(({ className, sideOffset = 4, ...props }, ref) => ( 63 | 64 | 73 | 74 | )) 75 | DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName 76 | 77 | const DropdownMenuItem = React.forwardRef< 78 | React.ElementRef, 79 | React.ComponentPropsWithoutRef & { 80 | inset?: boolean 81 | } 82 | >(({ className, inset, ...props }, ref) => ( 83 | 92 | )) 93 | DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName 94 | 95 | const DropdownMenuCheckboxItem = React.forwardRef< 96 | React.ElementRef, 97 | React.ComponentPropsWithoutRef 98 | >(({ className, children, checked, ...props }, ref) => ( 99 | 108 | 109 | 110 | 111 | 112 | 113 | {children} 114 | 115 | )) 116 | DropdownMenuCheckboxItem.displayName = 117 | DropdownMenuPrimitive.CheckboxItem.displayName 118 | 119 | const DropdownMenuRadioItem = React.forwardRef< 120 | React.ElementRef, 121 | React.ComponentPropsWithoutRef 122 | >(({ className, children, ...props }, ref) => ( 123 | 131 | 132 | 133 | 134 | 135 | 136 | {children} 137 | 138 | )) 139 | DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName 140 | 141 | const DropdownMenuLabel = React.forwardRef< 142 | React.ElementRef, 143 | React.ComponentPropsWithoutRef & { 144 | inset?: boolean 145 | } 146 | >(({ className, inset, ...props }, ref) => ( 147 | 156 | )) 157 | DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName 158 | 159 | const DropdownMenuSeparator = React.forwardRef< 160 | React.ElementRef, 161 | React.ComponentPropsWithoutRef 162 | >(({ className, ...props }, ref) => ( 163 | 168 | )) 169 | DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName 170 | 171 | const DropdownMenuShortcut = ({ 172 | className, 173 | ...props 174 | }: React.HTMLAttributes) => { 175 | return ( 176 | 180 | ) 181 | } 182 | DropdownMenuShortcut.displayName = "DropdownMenuShortcut" 183 | 184 | export { 185 | DropdownMenu, 186 | DropdownMenuTrigger, 187 | DropdownMenuContent, 188 | DropdownMenuItem, 189 | DropdownMenuCheckboxItem, 190 | DropdownMenuRadioItem, 191 | DropdownMenuLabel, 192 | DropdownMenuSeparator, 193 | DropdownMenuShortcut, 194 | DropdownMenuGroup, 195 | DropdownMenuPortal, 196 | DropdownMenuSub, 197 | DropdownMenuSubContent, 198 | DropdownMenuSubTrigger, 199 | DropdownMenuRadioGroup, 200 | } 201 | -------------------------------------------------------------------------------- /components/ui/input.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { cn } from "@/lib/utils" 4 | 5 | export interface InputProps 6 | extends React.InputHTMLAttributes {} 7 | 8 | const Input = React.forwardRef( 9 | ({ className, type, ...props }, ref) => { 10 | return ( 11 | 20 | ) 21 | } 22 | ) 23 | Input.displayName = "Input" 24 | 25 | export { Input } 26 | -------------------------------------------------------------------------------- /config/site.ts: -------------------------------------------------------------------------------- 1 | export const siteConfig = { 2 | name: "xype/crm - Launching soon!", 3 | description: "Build scalable CRM apps with xype/crm's API and Components", 4 | keywords: "CRM, website, best", 5 | url: "https://crm.xypeui.com", 6 | }; 7 | -------------------------------------------------------------------------------- /lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { type ClassValue, clsx } from "clsx" 2 | import { twMerge } from "tailwind-merge" 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)) 6 | } 7 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | images: { 4 | domains: ["localhost", "cdn.builder.io"], 5 | dangerouslyAllowSVG: true, 6 | }, 7 | }; 8 | 9 | module.exports = nextConfig; 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xype", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@radix-ui/react-dropdown-menu": "^2.0.6", 13 | "@radix-ui/react-slot": "^1.0.2", 14 | "class-variance-authority": "^0.7.0", 15 | "clsx": "^2.0.0", 16 | "lucide-react": "^0.279.0", 17 | "next": "latest", 18 | "next-themes": "^0.2.1", 19 | "react": "latest", 20 | "react-dom": "latest", 21 | "react-hot-toast": "^2.4.1", 22 | "tailwind-merge": "^1.14.0", 23 | "tailwindcss-animate": "^1.0.7" 24 | }, 25 | "devDependencies": { 26 | "@types/node": "latest", 27 | "@types/react": "latest", 28 | "@types/react-dom": "latest", 29 | "autoprefixer": "latest", 30 | "postcss": "latest", 31 | "tailwindcss": "latest", 32 | "typescript": "latest" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@radix-ui/react-dropdown-menu': 9 | specifier: ^2.0.6 10 | version: 2.0.6(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 11 | '@radix-ui/react-slot': 12 | specifier: ^1.0.2 13 | version: 1.0.2(@types/react@18.2.23)(react@18.2.0) 14 | class-variance-authority: 15 | specifier: ^0.7.0 16 | version: 0.7.0 17 | clsx: 18 | specifier: ^2.0.0 19 | version: 2.0.0 20 | lucide-react: 21 | specifier: ^0.279.0 22 | version: 0.279.0(react@18.2.0) 23 | next: 24 | specifier: latest 25 | version: 13.5.3(react-dom@18.2.0)(react@18.2.0) 26 | next-themes: 27 | specifier: ^0.2.1 28 | version: 0.2.1(next@13.5.3)(react-dom@18.2.0)(react@18.2.0) 29 | react: 30 | specifier: latest 31 | version: 18.2.0 32 | react-dom: 33 | specifier: latest 34 | version: 18.2.0(react@18.2.0) 35 | react-hot-toast: 36 | specifier: ^2.4.1 37 | version: 2.4.1(csstype@3.1.2)(react-dom@18.2.0)(react@18.2.0) 38 | tailwind-merge: 39 | specifier: ^1.14.0 40 | version: 1.14.0 41 | tailwindcss-animate: 42 | specifier: ^1.0.7 43 | version: 1.0.7(tailwindcss@3.3.3) 44 | 45 | devDependencies: 46 | '@types/node': 47 | specifier: latest 48 | version: 20.7.0 49 | '@types/react': 50 | specifier: latest 51 | version: 18.2.23 52 | '@types/react-dom': 53 | specifier: latest 54 | version: 18.2.8 55 | autoprefixer: 56 | specifier: latest 57 | version: 10.4.16(postcss@8.4.30) 58 | postcss: 59 | specifier: latest 60 | version: 8.4.30 61 | tailwindcss: 62 | specifier: latest 63 | version: 3.3.3 64 | typescript: 65 | specifier: latest 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 | /@babel/runtime@7.23.1: 75 | resolution: {integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==} 76 | engines: {node: '>=6.9.0'} 77 | dependencies: 78 | regenerator-runtime: 0.14.0 79 | dev: false 80 | 81 | /@floating-ui/core@1.5.0: 82 | resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} 83 | dependencies: 84 | '@floating-ui/utils': 0.1.4 85 | dev: false 86 | 87 | /@floating-ui/dom@1.5.3: 88 | resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} 89 | dependencies: 90 | '@floating-ui/core': 1.5.0 91 | '@floating-ui/utils': 0.1.4 92 | dev: false 93 | 94 | /@floating-ui/react-dom@2.0.2(react-dom@18.2.0)(react@18.2.0): 95 | resolution: {integrity: sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==} 96 | peerDependencies: 97 | react: '>=16.8.0' 98 | react-dom: '>=16.8.0' 99 | dependencies: 100 | '@floating-ui/dom': 1.5.3 101 | react: 18.2.0 102 | react-dom: 18.2.0(react@18.2.0) 103 | dev: false 104 | 105 | /@floating-ui/utils@0.1.4: 106 | resolution: {integrity: sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA==} 107 | dev: false 108 | 109 | /@jridgewell/gen-mapping@0.3.3: 110 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 111 | engines: {node: '>=6.0.0'} 112 | dependencies: 113 | '@jridgewell/set-array': 1.1.2 114 | '@jridgewell/sourcemap-codec': 1.4.15 115 | '@jridgewell/trace-mapping': 0.3.19 116 | 117 | /@jridgewell/resolve-uri@3.1.1: 118 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 119 | engines: {node: '>=6.0.0'} 120 | 121 | /@jridgewell/set-array@1.1.2: 122 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 123 | engines: {node: '>=6.0.0'} 124 | 125 | /@jridgewell/sourcemap-codec@1.4.15: 126 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 127 | 128 | /@jridgewell/trace-mapping@0.3.19: 129 | resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} 130 | dependencies: 131 | '@jridgewell/resolve-uri': 3.1.1 132 | '@jridgewell/sourcemap-codec': 1.4.15 133 | 134 | /@next/env@13.5.3: 135 | resolution: {integrity: sha512-X4te86vsbjsB7iO4usY9jLPtZ827Mbx+WcwNBGUOIuswuTAKQtzsuoxc/6KLxCMvogKG795MhrR1LDhYgDvasg==} 136 | dev: false 137 | 138 | /@next/swc-darwin-arm64@13.5.3: 139 | resolution: {integrity: sha512-6hiYNJxJmyYvvKGrVThzo4nTcqvqUTA/JvKim7Auaj33NexDqSNwN5YrrQu+QhZJCIpv2tULSHt+lf+rUflLSw==} 140 | engines: {node: '>= 10'} 141 | cpu: [arm64] 142 | os: [darwin] 143 | requiresBuild: true 144 | dev: false 145 | optional: true 146 | 147 | /@next/swc-darwin-x64@13.5.3: 148 | resolution: {integrity: sha512-UpBKxu2ob9scbpJyEq/xPgpdrgBgN3aLYlxyGqlYX5/KnwpJpFuIHU2lx8upQQ7L+MEmz+fA1XSgesoK92ppwQ==} 149 | engines: {node: '>= 10'} 150 | cpu: [x64] 151 | os: [darwin] 152 | requiresBuild: true 153 | dev: false 154 | optional: true 155 | 156 | /@next/swc-linux-arm64-gnu@13.5.3: 157 | resolution: {integrity: sha512-5AzM7Yx1Ky+oLY6pHs7tjONTF22JirDPd5Jw/3/NazJ73uGB05NqhGhB4SbeCchg7SlVYVBeRMrMSZwJwq/xoA==} 158 | engines: {node: '>= 10'} 159 | cpu: [arm64] 160 | os: [linux] 161 | requiresBuild: true 162 | dev: false 163 | optional: true 164 | 165 | /@next/swc-linux-arm64-musl@13.5.3: 166 | resolution: {integrity: sha512-A/C1shbyUhj7wRtokmn73eBksjTM7fFQoY2v/0rTM5wehpkjQRLOXI8WJsag2uLhnZ4ii5OzR1rFPwoD9cvOgA==} 167 | engines: {node: '>= 10'} 168 | cpu: [arm64] 169 | os: [linux] 170 | requiresBuild: true 171 | dev: false 172 | optional: true 173 | 174 | /@next/swc-linux-x64-gnu@13.5.3: 175 | resolution: {integrity: sha512-FubPuw/Boz8tKkk+5eOuDHOpk36F80rbgxlx4+xty/U71e3wZZxVYHfZXmf0IRToBn1Crb8WvLM9OYj/Ur815g==} 176 | engines: {node: '>= 10'} 177 | cpu: [x64] 178 | os: [linux] 179 | requiresBuild: true 180 | dev: false 181 | optional: true 182 | 183 | /@next/swc-linux-x64-musl@13.5.3: 184 | resolution: {integrity: sha512-DPw8nFuM1uEpbX47tM3wiXIR0Qa+atSzs9Q3peY1urkhofx44o7E1svnq+a5Q0r8lAcssLrwiM+OyJJgV/oj7g==} 185 | engines: {node: '>= 10'} 186 | cpu: [x64] 187 | os: [linux] 188 | requiresBuild: true 189 | dev: false 190 | optional: true 191 | 192 | /@next/swc-win32-arm64-msvc@13.5.3: 193 | resolution: {integrity: sha512-zBPSP8cHL51Gub/YV8UUePW7AVGukp2D8JU93IHbVDu2qmhFAn9LWXiOOLKplZQKxnIPUkJTQAJDCWBWU4UWUA==} 194 | engines: {node: '>= 10'} 195 | cpu: [arm64] 196 | os: [win32] 197 | requiresBuild: true 198 | dev: false 199 | optional: true 200 | 201 | /@next/swc-win32-ia32-msvc@13.5.3: 202 | resolution: {integrity: sha512-ONcL/lYyGUj4W37D4I2I450SZtSenmFAvapkJQNIJhrPMhzDU/AdfLkW98NvH1D2+7FXwe7yclf3+B7v28uzBQ==} 203 | engines: {node: '>= 10'} 204 | cpu: [ia32] 205 | os: [win32] 206 | requiresBuild: true 207 | dev: false 208 | optional: true 209 | 210 | /@next/swc-win32-x64-msvc@13.5.3: 211 | resolution: {integrity: sha512-2Vz2tYWaLqJvLcWbbTlJ5k9AN6JD7a5CN2pAeIzpbecK8ZF/yobA39cXtv6e+Z8c5UJuVOmaTldEAIxvsIux/Q==} 212 | engines: {node: '>= 10'} 213 | cpu: [x64] 214 | os: [win32] 215 | requiresBuild: true 216 | dev: false 217 | optional: true 218 | 219 | /@nodelib/fs.scandir@2.1.5: 220 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 221 | engines: {node: '>= 8'} 222 | dependencies: 223 | '@nodelib/fs.stat': 2.0.5 224 | run-parallel: 1.2.0 225 | 226 | /@nodelib/fs.stat@2.0.5: 227 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 228 | engines: {node: '>= 8'} 229 | 230 | /@nodelib/fs.walk@1.2.8: 231 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 232 | engines: {node: '>= 8'} 233 | dependencies: 234 | '@nodelib/fs.scandir': 2.1.5 235 | fastq: 1.15.0 236 | 237 | /@radix-ui/primitive@1.0.1: 238 | resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} 239 | dependencies: 240 | '@babel/runtime': 7.23.1 241 | dev: false 242 | 243 | /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0): 244 | resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} 245 | peerDependencies: 246 | '@types/react': '*' 247 | '@types/react-dom': '*' 248 | react: ^16.8 || ^17.0 || ^18.0 249 | react-dom: ^16.8 || ^17.0 || ^18.0 250 | peerDependenciesMeta: 251 | '@types/react': 252 | optional: true 253 | '@types/react-dom': 254 | optional: true 255 | dependencies: 256 | '@babel/runtime': 7.23.1 257 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 258 | '@types/react': 18.2.23 259 | '@types/react-dom': 18.2.8 260 | react: 18.2.0 261 | react-dom: 18.2.0(react@18.2.0) 262 | dev: false 263 | 264 | /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0): 265 | resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} 266 | peerDependencies: 267 | '@types/react': '*' 268 | '@types/react-dom': '*' 269 | react: ^16.8 || ^17.0 || ^18.0 270 | react-dom: ^16.8 || ^17.0 || ^18.0 271 | peerDependenciesMeta: 272 | '@types/react': 273 | optional: true 274 | '@types/react-dom': 275 | optional: true 276 | dependencies: 277 | '@babel/runtime': 7.23.1 278 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.23)(react@18.2.0) 279 | '@radix-ui/react-context': 1.0.1(@types/react@18.2.23)(react@18.2.0) 280 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 281 | '@radix-ui/react-slot': 1.0.2(@types/react@18.2.23)(react@18.2.0) 282 | '@types/react': 18.2.23 283 | '@types/react-dom': 18.2.8 284 | react: 18.2.0 285 | react-dom: 18.2.0(react@18.2.0) 286 | dev: false 287 | 288 | /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.23)(react@18.2.0): 289 | resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} 290 | peerDependencies: 291 | '@types/react': '*' 292 | react: ^16.8 || ^17.0 || ^18.0 293 | peerDependenciesMeta: 294 | '@types/react': 295 | optional: true 296 | dependencies: 297 | '@babel/runtime': 7.23.1 298 | '@types/react': 18.2.23 299 | react: 18.2.0 300 | dev: false 301 | 302 | /@radix-ui/react-context@1.0.1(@types/react@18.2.23)(react@18.2.0): 303 | resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} 304 | peerDependencies: 305 | '@types/react': '*' 306 | react: ^16.8 || ^17.0 || ^18.0 307 | peerDependenciesMeta: 308 | '@types/react': 309 | optional: true 310 | dependencies: 311 | '@babel/runtime': 7.23.1 312 | '@types/react': 18.2.23 313 | react: 18.2.0 314 | dev: false 315 | 316 | /@radix-ui/react-direction@1.0.1(@types/react@18.2.23)(react@18.2.0): 317 | resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} 318 | peerDependencies: 319 | '@types/react': '*' 320 | react: ^16.8 || ^17.0 || ^18.0 321 | peerDependenciesMeta: 322 | '@types/react': 323 | optional: true 324 | dependencies: 325 | '@babel/runtime': 7.23.1 326 | '@types/react': 18.2.23 327 | react: 18.2.0 328 | dev: false 329 | 330 | /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0): 331 | resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} 332 | peerDependencies: 333 | '@types/react': '*' 334 | '@types/react-dom': '*' 335 | react: ^16.8 || ^17.0 || ^18.0 336 | react-dom: ^16.8 || ^17.0 || ^18.0 337 | peerDependenciesMeta: 338 | '@types/react': 339 | optional: true 340 | '@types/react-dom': 341 | optional: true 342 | dependencies: 343 | '@babel/runtime': 7.23.1 344 | '@radix-ui/primitive': 1.0.1 345 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.23)(react@18.2.0) 346 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 347 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.23)(react@18.2.0) 348 | '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.23)(react@18.2.0) 349 | '@types/react': 18.2.23 350 | '@types/react-dom': 18.2.8 351 | react: 18.2.0 352 | react-dom: 18.2.0(react@18.2.0) 353 | dev: false 354 | 355 | /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0): 356 | resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} 357 | peerDependencies: 358 | '@types/react': '*' 359 | '@types/react-dom': '*' 360 | react: ^16.8 || ^17.0 || ^18.0 361 | react-dom: ^16.8 || ^17.0 || ^18.0 362 | peerDependenciesMeta: 363 | '@types/react': 364 | optional: true 365 | '@types/react-dom': 366 | optional: true 367 | dependencies: 368 | '@babel/runtime': 7.23.1 369 | '@radix-ui/primitive': 1.0.1 370 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.23)(react@18.2.0) 371 | '@radix-ui/react-context': 1.0.1(@types/react@18.2.23)(react@18.2.0) 372 | '@radix-ui/react-id': 1.0.1(@types/react@18.2.23)(react@18.2.0) 373 | '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 374 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 375 | '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.23)(react@18.2.0) 376 | '@types/react': 18.2.23 377 | '@types/react-dom': 18.2.8 378 | react: 18.2.0 379 | react-dom: 18.2.0(react@18.2.0) 380 | dev: false 381 | 382 | /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.23)(react@18.2.0): 383 | resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} 384 | peerDependencies: 385 | '@types/react': '*' 386 | react: ^16.8 || ^17.0 || ^18.0 387 | peerDependenciesMeta: 388 | '@types/react': 389 | optional: true 390 | dependencies: 391 | '@babel/runtime': 7.23.1 392 | '@types/react': 18.2.23 393 | react: 18.2.0 394 | dev: false 395 | 396 | /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0): 397 | resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} 398 | peerDependencies: 399 | '@types/react': '*' 400 | '@types/react-dom': '*' 401 | react: ^16.8 || ^17.0 || ^18.0 402 | react-dom: ^16.8 || ^17.0 || ^18.0 403 | peerDependenciesMeta: 404 | '@types/react': 405 | optional: true 406 | '@types/react-dom': 407 | optional: true 408 | dependencies: 409 | '@babel/runtime': 7.23.1 410 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.23)(react@18.2.0) 411 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 412 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.23)(react@18.2.0) 413 | '@types/react': 18.2.23 414 | '@types/react-dom': 18.2.8 415 | react: 18.2.0 416 | react-dom: 18.2.0(react@18.2.0) 417 | dev: false 418 | 419 | /@radix-ui/react-id@1.0.1(@types/react@18.2.23)(react@18.2.0): 420 | resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} 421 | peerDependencies: 422 | '@types/react': '*' 423 | react: ^16.8 || ^17.0 || ^18.0 424 | peerDependenciesMeta: 425 | '@types/react': 426 | optional: true 427 | dependencies: 428 | '@babel/runtime': 7.23.1 429 | '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.23)(react@18.2.0) 430 | '@types/react': 18.2.23 431 | react: 18.2.0 432 | dev: false 433 | 434 | /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0): 435 | resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} 436 | peerDependencies: 437 | '@types/react': '*' 438 | '@types/react-dom': '*' 439 | react: ^16.8 || ^17.0 || ^18.0 440 | react-dom: ^16.8 || ^17.0 || ^18.0 441 | peerDependenciesMeta: 442 | '@types/react': 443 | optional: true 444 | '@types/react-dom': 445 | optional: true 446 | dependencies: 447 | '@babel/runtime': 7.23.1 448 | '@radix-ui/primitive': 1.0.1 449 | '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 450 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.23)(react@18.2.0) 451 | '@radix-ui/react-context': 1.0.1(@types/react@18.2.23)(react@18.2.0) 452 | '@radix-ui/react-direction': 1.0.1(@types/react@18.2.23)(react@18.2.0) 453 | '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 454 | '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.23)(react@18.2.0) 455 | '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 456 | '@radix-ui/react-id': 1.0.1(@types/react@18.2.23)(react@18.2.0) 457 | '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 458 | '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 459 | '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 460 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 461 | '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 462 | '@radix-ui/react-slot': 1.0.2(@types/react@18.2.23)(react@18.2.0) 463 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.23)(react@18.2.0) 464 | '@types/react': 18.2.23 465 | '@types/react-dom': 18.2.8 466 | aria-hidden: 1.2.3 467 | react: 18.2.0 468 | react-dom: 18.2.0(react@18.2.0) 469 | react-remove-scroll: 2.5.5(@types/react@18.2.23)(react@18.2.0) 470 | dev: false 471 | 472 | /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0): 473 | resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} 474 | peerDependencies: 475 | '@types/react': '*' 476 | '@types/react-dom': '*' 477 | react: ^16.8 || ^17.0 || ^18.0 478 | react-dom: ^16.8 || ^17.0 || ^18.0 479 | peerDependenciesMeta: 480 | '@types/react': 481 | optional: true 482 | '@types/react-dom': 483 | optional: true 484 | dependencies: 485 | '@babel/runtime': 7.23.1 486 | '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) 487 | '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 488 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.23)(react@18.2.0) 489 | '@radix-ui/react-context': 1.0.1(@types/react@18.2.23)(react@18.2.0) 490 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 491 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.23)(react@18.2.0) 492 | '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.23)(react@18.2.0) 493 | '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.23)(react@18.2.0) 494 | '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.23)(react@18.2.0) 495 | '@radix-ui/rect': 1.0.1 496 | '@types/react': 18.2.23 497 | '@types/react-dom': 18.2.8 498 | react: 18.2.0 499 | react-dom: 18.2.0(react@18.2.0) 500 | dev: false 501 | 502 | /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0): 503 | resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} 504 | peerDependencies: 505 | '@types/react': '*' 506 | '@types/react-dom': '*' 507 | react: ^16.8 || ^17.0 || ^18.0 508 | react-dom: ^16.8 || ^17.0 || ^18.0 509 | peerDependenciesMeta: 510 | '@types/react': 511 | optional: true 512 | '@types/react-dom': 513 | optional: true 514 | dependencies: 515 | '@babel/runtime': 7.23.1 516 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 517 | '@types/react': 18.2.23 518 | '@types/react-dom': 18.2.8 519 | react: 18.2.0 520 | react-dom: 18.2.0(react@18.2.0) 521 | dev: false 522 | 523 | /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0): 524 | resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} 525 | peerDependencies: 526 | '@types/react': '*' 527 | '@types/react-dom': '*' 528 | react: ^16.8 || ^17.0 || ^18.0 529 | react-dom: ^16.8 || ^17.0 || ^18.0 530 | peerDependenciesMeta: 531 | '@types/react': 532 | optional: true 533 | '@types/react-dom': 534 | optional: true 535 | dependencies: 536 | '@babel/runtime': 7.23.1 537 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.23)(react@18.2.0) 538 | '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.23)(react@18.2.0) 539 | '@types/react': 18.2.23 540 | '@types/react-dom': 18.2.8 541 | react: 18.2.0 542 | react-dom: 18.2.0(react@18.2.0) 543 | dev: false 544 | 545 | /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0): 546 | resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} 547 | peerDependencies: 548 | '@types/react': '*' 549 | '@types/react-dom': '*' 550 | react: ^16.8 || ^17.0 || ^18.0 551 | react-dom: ^16.8 || ^17.0 || ^18.0 552 | peerDependenciesMeta: 553 | '@types/react': 554 | optional: true 555 | '@types/react-dom': 556 | optional: true 557 | dependencies: 558 | '@babel/runtime': 7.23.1 559 | '@radix-ui/react-slot': 1.0.2(@types/react@18.2.23)(react@18.2.0) 560 | '@types/react': 18.2.23 561 | '@types/react-dom': 18.2.8 562 | react: 18.2.0 563 | react-dom: 18.2.0(react@18.2.0) 564 | dev: false 565 | 566 | /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0): 567 | resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} 568 | peerDependencies: 569 | '@types/react': '*' 570 | '@types/react-dom': '*' 571 | react: ^16.8 || ^17.0 || ^18.0 572 | react-dom: ^16.8 || ^17.0 || ^18.0 573 | peerDependenciesMeta: 574 | '@types/react': 575 | optional: true 576 | '@types/react-dom': 577 | optional: true 578 | dependencies: 579 | '@babel/runtime': 7.23.1 580 | '@radix-ui/primitive': 1.0.1 581 | '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 582 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.23)(react@18.2.0) 583 | '@radix-ui/react-context': 1.0.1(@types/react@18.2.23)(react@18.2.0) 584 | '@radix-ui/react-direction': 1.0.1(@types/react@18.2.23)(react@18.2.0) 585 | '@radix-ui/react-id': 1.0.1(@types/react@18.2.23)(react@18.2.0) 586 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.8)(@types/react@18.2.23)(react-dom@18.2.0)(react@18.2.0) 587 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.23)(react@18.2.0) 588 | '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.23)(react@18.2.0) 589 | '@types/react': 18.2.23 590 | '@types/react-dom': 18.2.8 591 | react: 18.2.0 592 | react-dom: 18.2.0(react@18.2.0) 593 | dev: false 594 | 595 | /@radix-ui/react-slot@1.0.2(@types/react@18.2.23)(react@18.2.0): 596 | resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} 597 | peerDependencies: 598 | '@types/react': '*' 599 | react: ^16.8 || ^17.0 || ^18.0 600 | peerDependenciesMeta: 601 | '@types/react': 602 | optional: true 603 | dependencies: 604 | '@babel/runtime': 7.23.1 605 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.23)(react@18.2.0) 606 | '@types/react': 18.2.23 607 | react: 18.2.0 608 | dev: false 609 | 610 | /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.23)(react@18.2.0): 611 | resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} 612 | peerDependencies: 613 | '@types/react': '*' 614 | react: ^16.8 || ^17.0 || ^18.0 615 | peerDependenciesMeta: 616 | '@types/react': 617 | optional: true 618 | dependencies: 619 | '@babel/runtime': 7.23.1 620 | '@types/react': 18.2.23 621 | react: 18.2.0 622 | dev: false 623 | 624 | /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.23)(react@18.2.0): 625 | resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} 626 | peerDependencies: 627 | '@types/react': '*' 628 | react: ^16.8 || ^17.0 || ^18.0 629 | peerDependenciesMeta: 630 | '@types/react': 631 | optional: true 632 | dependencies: 633 | '@babel/runtime': 7.23.1 634 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.23)(react@18.2.0) 635 | '@types/react': 18.2.23 636 | react: 18.2.0 637 | dev: false 638 | 639 | /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.23)(react@18.2.0): 640 | resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} 641 | peerDependencies: 642 | '@types/react': '*' 643 | react: ^16.8 || ^17.0 || ^18.0 644 | peerDependenciesMeta: 645 | '@types/react': 646 | optional: true 647 | dependencies: 648 | '@babel/runtime': 7.23.1 649 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.23)(react@18.2.0) 650 | '@types/react': 18.2.23 651 | react: 18.2.0 652 | dev: false 653 | 654 | /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.23)(react@18.2.0): 655 | resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} 656 | peerDependencies: 657 | '@types/react': '*' 658 | react: ^16.8 || ^17.0 || ^18.0 659 | peerDependenciesMeta: 660 | '@types/react': 661 | optional: true 662 | dependencies: 663 | '@babel/runtime': 7.23.1 664 | '@types/react': 18.2.23 665 | react: 18.2.0 666 | dev: false 667 | 668 | /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.23)(react@18.2.0): 669 | resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} 670 | peerDependencies: 671 | '@types/react': '*' 672 | react: ^16.8 || ^17.0 || ^18.0 673 | peerDependenciesMeta: 674 | '@types/react': 675 | optional: true 676 | dependencies: 677 | '@babel/runtime': 7.23.1 678 | '@radix-ui/rect': 1.0.1 679 | '@types/react': 18.2.23 680 | react: 18.2.0 681 | dev: false 682 | 683 | /@radix-ui/react-use-size@1.0.1(@types/react@18.2.23)(react@18.2.0): 684 | resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} 685 | peerDependencies: 686 | '@types/react': '*' 687 | react: ^16.8 || ^17.0 || ^18.0 688 | peerDependenciesMeta: 689 | '@types/react': 690 | optional: true 691 | dependencies: 692 | '@babel/runtime': 7.23.1 693 | '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.23)(react@18.2.0) 694 | '@types/react': 18.2.23 695 | react: 18.2.0 696 | dev: false 697 | 698 | /@radix-ui/rect@1.0.1: 699 | resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} 700 | dependencies: 701 | '@babel/runtime': 7.23.1 702 | dev: false 703 | 704 | /@swc/helpers@0.5.2: 705 | resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} 706 | dependencies: 707 | tslib: 2.6.2 708 | dev: false 709 | 710 | /@types/node@20.7.0: 711 | resolution: {integrity: sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg==} 712 | dev: true 713 | 714 | /@types/prop-types@15.7.7: 715 | resolution: {integrity: sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog==} 716 | 717 | /@types/react-dom@18.2.8: 718 | resolution: {integrity: sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw==} 719 | dependencies: 720 | '@types/react': 18.2.23 721 | 722 | /@types/react@18.2.23: 723 | resolution: {integrity: sha512-qHLW6n1q2+7KyBEYnrZpcsAmU/iiCh9WGCKgXvMxx89+TYdJWRjZohVIo9XTcoLhfX3+/hP0Pbulu3bCZQ9PSA==} 724 | dependencies: 725 | '@types/prop-types': 15.7.7 726 | '@types/scheduler': 0.16.4 727 | csstype: 3.1.2 728 | 729 | /@types/scheduler@0.16.4: 730 | resolution: {integrity: sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==} 731 | 732 | /any-promise@1.3.0: 733 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 734 | 735 | /anymatch@3.1.3: 736 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 737 | engines: {node: '>= 8'} 738 | dependencies: 739 | normalize-path: 3.0.0 740 | picomatch: 2.3.1 741 | 742 | /arg@5.0.2: 743 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 744 | 745 | /aria-hidden@1.2.3: 746 | resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} 747 | engines: {node: '>=10'} 748 | dependencies: 749 | tslib: 2.6.2 750 | dev: false 751 | 752 | /autoprefixer@10.4.16(postcss@8.4.30): 753 | resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} 754 | engines: {node: ^10 || ^12 || >=14} 755 | hasBin: true 756 | peerDependencies: 757 | postcss: ^8.1.0 758 | dependencies: 759 | browserslist: 4.22.0 760 | caniuse-lite: 1.0.30001540 761 | fraction.js: 4.3.6 762 | normalize-range: 0.1.2 763 | picocolors: 1.0.0 764 | postcss: 8.4.30 765 | postcss-value-parser: 4.2.0 766 | dev: true 767 | 768 | /balanced-match@1.0.2: 769 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 770 | 771 | /binary-extensions@2.2.0: 772 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 773 | engines: {node: '>=8'} 774 | 775 | /brace-expansion@1.1.11: 776 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 777 | dependencies: 778 | balanced-match: 1.0.2 779 | concat-map: 0.0.1 780 | 781 | /braces@3.0.2: 782 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 783 | engines: {node: '>=8'} 784 | dependencies: 785 | fill-range: 7.0.1 786 | 787 | /browserslist@4.22.0: 788 | resolution: {integrity: sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA==} 789 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 790 | hasBin: true 791 | dependencies: 792 | caniuse-lite: 1.0.30001540 793 | electron-to-chromium: 1.4.531 794 | node-releases: 2.0.13 795 | update-browserslist-db: 1.0.13(browserslist@4.22.0) 796 | dev: true 797 | 798 | /busboy@1.6.0: 799 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 800 | engines: {node: '>=10.16.0'} 801 | dependencies: 802 | streamsearch: 1.1.0 803 | dev: false 804 | 805 | /camelcase-css@2.0.1: 806 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 807 | engines: {node: '>= 6'} 808 | 809 | /caniuse-lite@1.0.30001540: 810 | resolution: {integrity: sha512-9JL38jscuTJBTcuETxm8QLsFr/F6v0CYYTEU6r5+qSM98P2Q0Hmu0eG1dTG5GBUmywU3UlcVOUSIJYY47rdFSw==} 811 | 812 | /chokidar@3.5.3: 813 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 814 | engines: {node: '>= 8.10.0'} 815 | dependencies: 816 | anymatch: 3.1.3 817 | braces: 3.0.2 818 | glob-parent: 5.1.2 819 | is-binary-path: 2.1.0 820 | is-glob: 4.0.3 821 | normalize-path: 3.0.0 822 | readdirp: 3.6.0 823 | optionalDependencies: 824 | fsevents: 2.3.3 825 | 826 | /class-variance-authority@0.7.0: 827 | resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} 828 | dependencies: 829 | clsx: 2.0.0 830 | dev: false 831 | 832 | /client-only@0.0.1: 833 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 834 | dev: false 835 | 836 | /clsx@2.0.0: 837 | resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} 838 | engines: {node: '>=6'} 839 | dev: false 840 | 841 | /commander@4.1.1: 842 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 843 | engines: {node: '>= 6'} 844 | 845 | /concat-map@0.0.1: 846 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 847 | 848 | /cssesc@3.0.0: 849 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 850 | engines: {node: '>=4'} 851 | hasBin: true 852 | 853 | /csstype@3.1.2: 854 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 855 | 856 | /detect-node-es@1.1.0: 857 | resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} 858 | dev: false 859 | 860 | /didyoumean@1.2.2: 861 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 862 | 863 | /dlv@1.1.3: 864 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 865 | 866 | /electron-to-chromium@1.4.531: 867 | resolution: {integrity: sha512-H6gi5E41Rn3/mhKlPaT1aIMg/71hTAqn0gYEllSuw9igNWtvQwu185jiCZoZD29n7Zukgh7GVZ3zGf0XvkhqjQ==} 868 | dev: true 869 | 870 | /escalade@3.1.1: 871 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 872 | engines: {node: '>=6'} 873 | dev: true 874 | 875 | /fast-glob@3.3.1: 876 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} 877 | engines: {node: '>=8.6.0'} 878 | dependencies: 879 | '@nodelib/fs.stat': 2.0.5 880 | '@nodelib/fs.walk': 1.2.8 881 | glob-parent: 5.1.2 882 | merge2: 1.4.1 883 | micromatch: 4.0.5 884 | 885 | /fastq@1.15.0: 886 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 887 | dependencies: 888 | reusify: 1.0.4 889 | 890 | /fill-range@7.0.1: 891 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 892 | engines: {node: '>=8'} 893 | dependencies: 894 | to-regex-range: 5.0.1 895 | 896 | /fraction.js@4.3.6: 897 | resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} 898 | dev: true 899 | 900 | /fs.realpath@1.0.0: 901 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 902 | 903 | /fsevents@2.3.3: 904 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 905 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 906 | os: [darwin] 907 | requiresBuild: true 908 | optional: true 909 | 910 | /function-bind@1.1.1: 911 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 912 | 913 | /get-nonce@1.0.1: 914 | resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} 915 | engines: {node: '>=6'} 916 | dev: false 917 | 918 | /glob-parent@5.1.2: 919 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 920 | engines: {node: '>= 6'} 921 | dependencies: 922 | is-glob: 4.0.3 923 | 924 | /glob-parent@6.0.2: 925 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 926 | engines: {node: '>=10.13.0'} 927 | dependencies: 928 | is-glob: 4.0.3 929 | 930 | /glob-to-regexp@0.4.1: 931 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 932 | dev: false 933 | 934 | /glob@7.1.6: 935 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 936 | dependencies: 937 | fs.realpath: 1.0.0 938 | inflight: 1.0.6 939 | inherits: 2.0.4 940 | minimatch: 3.1.2 941 | once: 1.4.0 942 | path-is-absolute: 1.0.1 943 | 944 | /goober@2.1.13(csstype@3.1.2): 945 | resolution: {integrity: sha512-jFj3BQeleOoy7t93E9rZ2de+ScC4lQICLwiAQmKMg9F6roKGaLSHoCDYKkWlSafg138jejvq/mTdvmnwDQgqoQ==} 946 | peerDependencies: 947 | csstype: ^3.0.10 948 | dependencies: 949 | csstype: 3.1.2 950 | dev: false 951 | 952 | /graceful-fs@4.2.11: 953 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 954 | dev: false 955 | 956 | /has@1.0.3: 957 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 958 | engines: {node: '>= 0.4.0'} 959 | dependencies: 960 | function-bind: 1.1.1 961 | 962 | /inflight@1.0.6: 963 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 964 | dependencies: 965 | once: 1.4.0 966 | wrappy: 1.0.2 967 | 968 | /inherits@2.0.4: 969 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 970 | 971 | /invariant@2.2.4: 972 | resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} 973 | dependencies: 974 | loose-envify: 1.4.0 975 | dev: false 976 | 977 | /is-binary-path@2.1.0: 978 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 979 | engines: {node: '>=8'} 980 | dependencies: 981 | binary-extensions: 2.2.0 982 | 983 | /is-core-module@2.13.0: 984 | resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} 985 | dependencies: 986 | has: 1.0.3 987 | 988 | /is-extglob@2.1.1: 989 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 990 | engines: {node: '>=0.10.0'} 991 | 992 | /is-glob@4.0.3: 993 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 994 | engines: {node: '>=0.10.0'} 995 | dependencies: 996 | is-extglob: 2.1.1 997 | 998 | /is-number@7.0.0: 999 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1000 | engines: {node: '>=0.12.0'} 1001 | 1002 | /jiti@1.20.0: 1003 | resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} 1004 | hasBin: true 1005 | 1006 | /js-tokens@4.0.0: 1007 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1008 | dev: false 1009 | 1010 | /lilconfig@2.1.0: 1011 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1012 | engines: {node: '>=10'} 1013 | 1014 | /lines-and-columns@1.2.4: 1015 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1016 | 1017 | /loose-envify@1.4.0: 1018 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1019 | hasBin: true 1020 | dependencies: 1021 | js-tokens: 4.0.0 1022 | dev: false 1023 | 1024 | /lucide-react@0.279.0(react@18.2.0): 1025 | resolution: {integrity: sha512-LJ8g66+Bxc3t3x9vKTeK3wn3xucrOQGfJ9ou9GsBwCt2offsrT2BB90XrTrIzE1noYYDe2O8jZaRHi6sAHXNxw==} 1026 | peerDependencies: 1027 | react: ^16.5.1 || ^17.0.0 || ^18.0.0 1028 | dependencies: 1029 | react: 18.2.0 1030 | dev: false 1031 | 1032 | /merge2@1.4.1: 1033 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1034 | engines: {node: '>= 8'} 1035 | 1036 | /micromatch@4.0.5: 1037 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1038 | engines: {node: '>=8.6'} 1039 | dependencies: 1040 | braces: 3.0.2 1041 | picomatch: 2.3.1 1042 | 1043 | /minimatch@3.1.2: 1044 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1045 | dependencies: 1046 | brace-expansion: 1.1.11 1047 | 1048 | /mz@2.7.0: 1049 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1050 | dependencies: 1051 | any-promise: 1.3.0 1052 | object-assign: 4.1.1 1053 | thenify-all: 1.6.0 1054 | 1055 | /nanoid@3.3.6: 1056 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1057 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1058 | hasBin: true 1059 | 1060 | /next-themes@0.2.1(next@13.5.3)(react-dom@18.2.0)(react@18.2.0): 1061 | resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} 1062 | peerDependencies: 1063 | next: '*' 1064 | react: '*' 1065 | react-dom: '*' 1066 | dependencies: 1067 | next: 13.5.3(react-dom@18.2.0)(react@18.2.0) 1068 | react: 18.2.0 1069 | react-dom: 18.2.0(react@18.2.0) 1070 | dev: false 1071 | 1072 | /next@13.5.3(react-dom@18.2.0)(react@18.2.0): 1073 | resolution: {integrity: sha512-4Nt4HRLYDW/yRpJ/QR2t1v63UOMS55A38dnWv3UDOWGezuY0ZyFO1ABNbD7mulVzs9qVhgy2+ppjdsANpKP1mg==} 1074 | engines: {node: '>=16.14.0'} 1075 | hasBin: true 1076 | peerDependencies: 1077 | '@opentelemetry/api': ^1.1.0 1078 | react: ^18.2.0 1079 | react-dom: ^18.2.0 1080 | sass: ^1.3.0 1081 | peerDependenciesMeta: 1082 | '@opentelemetry/api': 1083 | optional: true 1084 | sass: 1085 | optional: true 1086 | dependencies: 1087 | '@next/env': 13.5.3 1088 | '@swc/helpers': 0.5.2 1089 | busboy: 1.6.0 1090 | caniuse-lite: 1.0.30001540 1091 | postcss: 8.4.14 1092 | react: 18.2.0 1093 | react-dom: 18.2.0(react@18.2.0) 1094 | styled-jsx: 5.1.1(react@18.2.0) 1095 | watchpack: 2.4.0 1096 | zod: 3.21.4 1097 | optionalDependencies: 1098 | '@next/swc-darwin-arm64': 13.5.3 1099 | '@next/swc-darwin-x64': 13.5.3 1100 | '@next/swc-linux-arm64-gnu': 13.5.3 1101 | '@next/swc-linux-arm64-musl': 13.5.3 1102 | '@next/swc-linux-x64-gnu': 13.5.3 1103 | '@next/swc-linux-x64-musl': 13.5.3 1104 | '@next/swc-win32-arm64-msvc': 13.5.3 1105 | '@next/swc-win32-ia32-msvc': 13.5.3 1106 | '@next/swc-win32-x64-msvc': 13.5.3 1107 | transitivePeerDependencies: 1108 | - '@babel/core' 1109 | - babel-plugin-macros 1110 | dev: false 1111 | 1112 | /node-releases@2.0.13: 1113 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} 1114 | dev: true 1115 | 1116 | /normalize-path@3.0.0: 1117 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1118 | engines: {node: '>=0.10.0'} 1119 | 1120 | /normalize-range@0.1.2: 1121 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1122 | engines: {node: '>=0.10.0'} 1123 | dev: true 1124 | 1125 | /object-assign@4.1.1: 1126 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1127 | engines: {node: '>=0.10.0'} 1128 | 1129 | /object-hash@3.0.0: 1130 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1131 | engines: {node: '>= 6'} 1132 | 1133 | /once@1.4.0: 1134 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1135 | dependencies: 1136 | wrappy: 1.0.2 1137 | 1138 | /path-is-absolute@1.0.1: 1139 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1140 | engines: {node: '>=0.10.0'} 1141 | 1142 | /path-parse@1.0.7: 1143 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1144 | 1145 | /picocolors@1.0.0: 1146 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1147 | 1148 | /picomatch@2.3.1: 1149 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1150 | engines: {node: '>=8.6'} 1151 | 1152 | /pify@2.3.0: 1153 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1154 | engines: {node: '>=0.10.0'} 1155 | 1156 | /pirates@4.0.6: 1157 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1158 | engines: {node: '>= 6'} 1159 | 1160 | /postcss-import@15.1.0(postcss@8.4.30): 1161 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 1162 | engines: {node: '>=14.0.0'} 1163 | peerDependencies: 1164 | postcss: ^8.0.0 1165 | dependencies: 1166 | postcss: 8.4.30 1167 | postcss-value-parser: 4.2.0 1168 | read-cache: 1.0.0 1169 | resolve: 1.22.6 1170 | 1171 | /postcss-js@4.0.1(postcss@8.4.30): 1172 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 1173 | engines: {node: ^12 || ^14 || >= 16} 1174 | peerDependencies: 1175 | postcss: ^8.4.21 1176 | dependencies: 1177 | camelcase-css: 2.0.1 1178 | postcss: 8.4.30 1179 | 1180 | /postcss-load-config@4.0.1(postcss@8.4.30): 1181 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} 1182 | engines: {node: '>= 14'} 1183 | peerDependencies: 1184 | postcss: '>=8.0.9' 1185 | ts-node: '>=9.0.0' 1186 | peerDependenciesMeta: 1187 | postcss: 1188 | optional: true 1189 | ts-node: 1190 | optional: true 1191 | dependencies: 1192 | lilconfig: 2.1.0 1193 | postcss: 8.4.30 1194 | yaml: 2.3.2 1195 | 1196 | /postcss-nested@6.0.1(postcss@8.4.30): 1197 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 1198 | engines: {node: '>=12.0'} 1199 | peerDependencies: 1200 | postcss: ^8.2.14 1201 | dependencies: 1202 | postcss: 8.4.30 1203 | postcss-selector-parser: 6.0.13 1204 | 1205 | /postcss-selector-parser@6.0.13: 1206 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} 1207 | engines: {node: '>=4'} 1208 | dependencies: 1209 | cssesc: 3.0.0 1210 | util-deprecate: 1.0.2 1211 | 1212 | /postcss-value-parser@4.2.0: 1213 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1214 | 1215 | /postcss@8.4.14: 1216 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} 1217 | engines: {node: ^10 || ^12 || >=14} 1218 | dependencies: 1219 | nanoid: 3.3.6 1220 | picocolors: 1.0.0 1221 | source-map-js: 1.0.2 1222 | dev: false 1223 | 1224 | /postcss@8.4.30: 1225 | resolution: {integrity: sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==} 1226 | engines: {node: ^10 || ^12 || >=14} 1227 | dependencies: 1228 | nanoid: 3.3.6 1229 | picocolors: 1.0.0 1230 | source-map-js: 1.0.2 1231 | 1232 | /queue-microtask@1.2.3: 1233 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1234 | 1235 | /react-dom@18.2.0(react@18.2.0): 1236 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 1237 | peerDependencies: 1238 | react: ^18.2.0 1239 | dependencies: 1240 | loose-envify: 1.4.0 1241 | react: 18.2.0 1242 | scheduler: 0.23.0 1243 | dev: false 1244 | 1245 | /react-hot-toast@2.4.1(csstype@3.1.2)(react-dom@18.2.0)(react@18.2.0): 1246 | resolution: {integrity: sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==} 1247 | engines: {node: '>=10'} 1248 | peerDependencies: 1249 | react: '>=16' 1250 | react-dom: '>=16' 1251 | dependencies: 1252 | goober: 2.1.13(csstype@3.1.2) 1253 | react: 18.2.0 1254 | react-dom: 18.2.0(react@18.2.0) 1255 | transitivePeerDependencies: 1256 | - csstype 1257 | dev: false 1258 | 1259 | /react-remove-scroll-bar@2.3.4(@types/react@18.2.23)(react@18.2.0): 1260 | resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} 1261 | engines: {node: '>=10'} 1262 | peerDependencies: 1263 | '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 1264 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1265 | peerDependenciesMeta: 1266 | '@types/react': 1267 | optional: true 1268 | dependencies: 1269 | '@types/react': 18.2.23 1270 | react: 18.2.0 1271 | react-style-singleton: 2.2.1(@types/react@18.2.23)(react@18.2.0) 1272 | tslib: 2.6.2 1273 | dev: false 1274 | 1275 | /react-remove-scroll@2.5.5(@types/react@18.2.23)(react@18.2.0): 1276 | resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} 1277 | engines: {node: '>=10'} 1278 | peerDependencies: 1279 | '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 1280 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1281 | peerDependenciesMeta: 1282 | '@types/react': 1283 | optional: true 1284 | dependencies: 1285 | '@types/react': 18.2.23 1286 | react: 18.2.0 1287 | react-remove-scroll-bar: 2.3.4(@types/react@18.2.23)(react@18.2.0) 1288 | react-style-singleton: 2.2.1(@types/react@18.2.23)(react@18.2.0) 1289 | tslib: 2.6.2 1290 | use-callback-ref: 1.3.0(@types/react@18.2.23)(react@18.2.0) 1291 | use-sidecar: 1.1.2(@types/react@18.2.23)(react@18.2.0) 1292 | dev: false 1293 | 1294 | /react-style-singleton@2.2.1(@types/react@18.2.23)(react@18.2.0): 1295 | resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} 1296 | engines: {node: '>=10'} 1297 | peerDependencies: 1298 | '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 1299 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1300 | peerDependenciesMeta: 1301 | '@types/react': 1302 | optional: true 1303 | dependencies: 1304 | '@types/react': 18.2.23 1305 | get-nonce: 1.0.1 1306 | invariant: 2.2.4 1307 | react: 18.2.0 1308 | tslib: 2.6.2 1309 | dev: false 1310 | 1311 | /react@18.2.0: 1312 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 1313 | engines: {node: '>=0.10.0'} 1314 | dependencies: 1315 | loose-envify: 1.4.0 1316 | dev: false 1317 | 1318 | /read-cache@1.0.0: 1319 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 1320 | dependencies: 1321 | pify: 2.3.0 1322 | 1323 | /readdirp@3.6.0: 1324 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1325 | engines: {node: '>=8.10.0'} 1326 | dependencies: 1327 | picomatch: 2.3.1 1328 | 1329 | /regenerator-runtime@0.14.0: 1330 | resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} 1331 | dev: false 1332 | 1333 | /resolve@1.22.6: 1334 | resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} 1335 | hasBin: true 1336 | dependencies: 1337 | is-core-module: 2.13.0 1338 | path-parse: 1.0.7 1339 | supports-preserve-symlinks-flag: 1.0.0 1340 | 1341 | /reusify@1.0.4: 1342 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1343 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1344 | 1345 | /run-parallel@1.2.0: 1346 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1347 | dependencies: 1348 | queue-microtask: 1.2.3 1349 | 1350 | /scheduler@0.23.0: 1351 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 1352 | dependencies: 1353 | loose-envify: 1.4.0 1354 | dev: false 1355 | 1356 | /source-map-js@1.0.2: 1357 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1358 | engines: {node: '>=0.10.0'} 1359 | 1360 | /streamsearch@1.1.0: 1361 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1362 | engines: {node: '>=10.0.0'} 1363 | dev: false 1364 | 1365 | /styled-jsx@5.1.1(react@18.2.0): 1366 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 1367 | engines: {node: '>= 12.0.0'} 1368 | peerDependencies: 1369 | '@babel/core': '*' 1370 | babel-plugin-macros: '*' 1371 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 1372 | peerDependenciesMeta: 1373 | '@babel/core': 1374 | optional: true 1375 | babel-plugin-macros: 1376 | optional: true 1377 | dependencies: 1378 | client-only: 0.0.1 1379 | react: 18.2.0 1380 | dev: false 1381 | 1382 | /sucrase@3.34.0: 1383 | resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} 1384 | engines: {node: '>=8'} 1385 | hasBin: true 1386 | dependencies: 1387 | '@jridgewell/gen-mapping': 0.3.3 1388 | commander: 4.1.1 1389 | glob: 7.1.6 1390 | lines-and-columns: 1.2.4 1391 | mz: 2.7.0 1392 | pirates: 4.0.6 1393 | ts-interface-checker: 0.1.13 1394 | 1395 | /supports-preserve-symlinks-flag@1.0.0: 1396 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1397 | engines: {node: '>= 0.4'} 1398 | 1399 | /tailwind-merge@1.14.0: 1400 | resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==} 1401 | dev: false 1402 | 1403 | /tailwindcss-animate@1.0.7(tailwindcss@3.3.3): 1404 | resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} 1405 | peerDependencies: 1406 | tailwindcss: '>=3.0.0 || insiders' 1407 | dependencies: 1408 | tailwindcss: 3.3.3 1409 | dev: false 1410 | 1411 | /tailwindcss@3.3.3: 1412 | resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} 1413 | engines: {node: '>=14.0.0'} 1414 | hasBin: true 1415 | dependencies: 1416 | '@alloc/quick-lru': 5.2.0 1417 | arg: 5.0.2 1418 | chokidar: 3.5.3 1419 | didyoumean: 1.2.2 1420 | dlv: 1.1.3 1421 | fast-glob: 3.3.1 1422 | glob-parent: 6.0.2 1423 | is-glob: 4.0.3 1424 | jiti: 1.20.0 1425 | lilconfig: 2.1.0 1426 | micromatch: 4.0.5 1427 | normalize-path: 3.0.0 1428 | object-hash: 3.0.0 1429 | picocolors: 1.0.0 1430 | postcss: 8.4.30 1431 | postcss-import: 15.1.0(postcss@8.4.30) 1432 | postcss-js: 4.0.1(postcss@8.4.30) 1433 | postcss-load-config: 4.0.1(postcss@8.4.30) 1434 | postcss-nested: 6.0.1(postcss@8.4.30) 1435 | postcss-selector-parser: 6.0.13 1436 | resolve: 1.22.6 1437 | sucrase: 3.34.0 1438 | transitivePeerDependencies: 1439 | - ts-node 1440 | 1441 | /thenify-all@1.6.0: 1442 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1443 | engines: {node: '>=0.8'} 1444 | dependencies: 1445 | thenify: 3.3.1 1446 | 1447 | /thenify@3.3.1: 1448 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1449 | dependencies: 1450 | any-promise: 1.3.0 1451 | 1452 | /to-regex-range@5.0.1: 1453 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1454 | engines: {node: '>=8.0'} 1455 | dependencies: 1456 | is-number: 7.0.0 1457 | 1458 | /ts-interface-checker@0.1.13: 1459 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1460 | 1461 | /tslib@2.6.2: 1462 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 1463 | dev: false 1464 | 1465 | /typescript@5.2.2: 1466 | resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} 1467 | engines: {node: '>=14.17'} 1468 | hasBin: true 1469 | dev: true 1470 | 1471 | /update-browserslist-db@1.0.13(browserslist@4.22.0): 1472 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 1473 | hasBin: true 1474 | peerDependencies: 1475 | browserslist: '>= 4.21.0' 1476 | dependencies: 1477 | browserslist: 4.22.0 1478 | escalade: 3.1.1 1479 | picocolors: 1.0.0 1480 | dev: true 1481 | 1482 | /use-callback-ref@1.3.0(@types/react@18.2.23)(react@18.2.0): 1483 | resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} 1484 | engines: {node: '>=10'} 1485 | peerDependencies: 1486 | '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 1487 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1488 | peerDependenciesMeta: 1489 | '@types/react': 1490 | optional: true 1491 | dependencies: 1492 | '@types/react': 18.2.23 1493 | react: 18.2.0 1494 | tslib: 2.6.2 1495 | dev: false 1496 | 1497 | /use-sidecar@1.1.2(@types/react@18.2.23)(react@18.2.0): 1498 | resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} 1499 | engines: {node: '>=10'} 1500 | peerDependencies: 1501 | '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 1502 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 1503 | peerDependenciesMeta: 1504 | '@types/react': 1505 | optional: true 1506 | dependencies: 1507 | '@types/react': 18.2.23 1508 | detect-node-es: 1.1.0 1509 | react: 18.2.0 1510 | tslib: 2.6.2 1511 | dev: false 1512 | 1513 | /util-deprecate@1.0.2: 1514 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1515 | 1516 | /watchpack@2.4.0: 1517 | resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} 1518 | engines: {node: '>=10.13.0'} 1519 | dependencies: 1520 | glob-to-regexp: 0.4.1 1521 | graceful-fs: 4.2.11 1522 | dev: false 1523 | 1524 | /wrappy@1.0.2: 1525 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1526 | 1527 | /yaml@2.3.2: 1528 | resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} 1529 | engines: {node: '>= 14'} 1530 | 1531 | /zod@3.21.4: 1532 | resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} 1533 | dev: false 1534 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | darkMode: ["class"], 4 | content: [ 5 | './pages/**/*.{ts,tsx}', 6 | './components/**/*.{ts,tsx}', 7 | './app/**/*.{ts,tsx}', 8 | './src/**/*.{ts,tsx}', 9 | ], 10 | theme: { 11 | container: { 12 | center: true, 13 | padding: "2rem", 14 | screens: { 15 | "2xl": "1400px", 16 | }, 17 | }, 18 | extend: { 19 | colors: { 20 | border: "hsl(var(--border))", 21 | input: "hsl(var(--input))", 22 | ring: "hsl(var(--ring))", 23 | background: "hsl(var(--background))", 24 | foreground: "hsl(var(--foreground))", 25 | primary: { 26 | DEFAULT: "hsl(var(--primary))", 27 | foreground: "hsl(var(--primary-foreground))", 28 | }, 29 | secondary: { 30 | DEFAULT: "hsl(var(--secondary))", 31 | foreground: "hsl(var(--secondary-foreground))", 32 | }, 33 | destructive: { 34 | DEFAULT: "hsl(var(--destructive))", 35 | foreground: "hsl(var(--destructive-foreground))", 36 | }, 37 | muted: { 38 | DEFAULT: "hsl(var(--muted))", 39 | foreground: "hsl(var(--muted-foreground))", 40 | }, 41 | accent: { 42 | DEFAULT: "hsl(var(--accent))", 43 | foreground: "hsl(var(--accent-foreground))", 44 | }, 45 | popover: { 46 | DEFAULT: "hsl(var(--popover))", 47 | foreground: "hsl(var(--popover-foreground))", 48 | }, 49 | card: { 50 | DEFAULT: "hsl(var(--card))", 51 | foreground: "hsl(var(--card-foreground))", 52 | }, 53 | }, 54 | borderRadius: { 55 | lg: "var(--radius)", 56 | md: "calc(var(--radius) - 2px)", 57 | sm: "calc(var(--radius) - 4px)", 58 | }, 59 | keyframes: { 60 | "accordion-down": { 61 | from: { height: 0 }, 62 | to: { height: "var(--radix-accordion-content-height)" }, 63 | }, 64 | "accordion-up": { 65 | from: { height: "var(--radix-accordion-content-height)" }, 66 | to: { height: 0 }, 67 | }, 68 | }, 69 | animation: { 70 | "accordion-down": "accordion-down 0.2s ease-out", 71 | "accordion-up": "accordion-up 0.2s ease-out", 72 | }, 73 | }, 74 | }, 75 | plugins: [require("tailwindcss-animate")], 76 | } -------------------------------------------------------------------------------- /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 | "plugins": [ 17 | { 18 | "name": "next" 19 | } 20 | ], 21 | "paths": { 22 | "@/*": ["./*"] 23 | } 24 | }, 25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 26 | "exclude": ["node_modules"] 27 | } 28 | -------------------------------------------------------------------------------- /utils/assets.ts: -------------------------------------------------------------------------------- 1 | export const assets = { 2 | gradient: 3 | "https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F266e05dba3864799b4715cf4bfd8aa2a", 4 | square: 5 | "https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F8997f779f33b430bb22ca667d1b73ade", 6 | react: 7 | "https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F95c70a06f779481a957c2b384e3a270d", 8 | svelte: 9 | "https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Ffbe9dfb6bb09448ba4fe5feb4bb0e53e?format=webp", 10 | tailwind: 11 | "https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F8d0b6724f6f6496dbf124bfc3af2a0b0?format=webp", 12 | vue: "https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F73a54a19443e48fab077e6f21687cd20?format=webp", 13 | qwik: "https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fddb7b5acc2d747f198e8ed90dc245f1a", 14 | }; 15 | -------------------------------------------------------------------------------- /utils/data.ts: -------------------------------------------------------------------------------- 1 | export const frameworks = [ 2 | "react", 3 | "qwik", 4 | "svelte", 5 | "vue", 6 | "tailwind", 7 | ] as const; 8 | 9 | export type Framework = (typeof frameworks)[number]; 10 | -------------------------------------------------------------------------------- /utils/tailwind.ts: -------------------------------------------------------------------------------- 1 | import { type ClassValue, clsx } from "clsx"; 2 | import { twMerge } from "tailwind-merge"; 3 | 4 | export function cn(...classes: ClassValue[]) { 5 | return twMerge(clsx(...classes)); 6 | } 7 | --------------------------------------------------------------------------------