Add dark mode. So easy.
This commit is contained in:
		@@ -16,6 +16,8 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@auth/drizzle-adapter": "^1.4.2",
 | 
					    "@auth/drizzle-adapter": "^1.4.2",
 | 
				
			||||||
 | 
					    "@radix-ui/react-dropdown-menu": "^2.1.1",
 | 
				
			||||||
 | 
					    "@radix-ui/react-slot": "^1.1.0",
 | 
				
			||||||
    "@t3-oss/env-nextjs": "^0.10.1",
 | 
					    "@t3-oss/env-nextjs": "^0.10.1",
 | 
				
			||||||
    "@types/jsonwebtoken": "^9.0.6",
 | 
					    "@types/jsonwebtoken": "^9.0.6",
 | 
				
			||||||
    "class-variance-authority": "^0.7.0",
 | 
					    "class-variance-authority": "^0.7.0",
 | 
				
			||||||
@@ -27,6 +29,7 @@
 | 
				
			|||||||
    "lucide-react": "^0.424.0",
 | 
					    "lucide-react": "^0.424.0",
 | 
				
			||||||
    "next": "^14.2.5",
 | 
					    "next": "^14.2.5",
 | 
				
			||||||
    "next-auth": "5.0.0-beta.20",
 | 
					    "next-auth": "5.0.0-beta.20",
 | 
				
			||||||
 | 
					    "next-themes": "^0.3.0",
 | 
				
			||||||
    "postgres": "^3.4.4",
 | 
					    "postgres": "^3.4.4",
 | 
				
			||||||
    "react": "^18.3.1",
 | 
					    "react": "^18.3.1",
 | 
				
			||||||
    "react-dom": "^18.3.1",
 | 
					    "react-dom": "^18.3.1",
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										660
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										660
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							@@ -11,6 +11,12 @@ importers:
 | 
				
			|||||||
      '@auth/drizzle-adapter':
 | 
					      '@auth/drizzle-adapter':
 | 
				
			||||||
        specifier: ^1.4.2
 | 
					        specifier: ^1.4.2
 | 
				
			||||||
        version: 1.4.2
 | 
					        version: 1.4.2
 | 
				
			||||||
 | 
					      '@radix-ui/react-dropdown-menu':
 | 
				
			||||||
 | 
					        specifier: ^2.1.1
 | 
				
			||||||
 | 
					        version: 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-slot':
 | 
				
			||||||
 | 
					        specifier: ^1.1.0
 | 
				
			||||||
 | 
					        version: 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
      '@t3-oss/env-nextjs':
 | 
					      '@t3-oss/env-nextjs':
 | 
				
			||||||
        specifier: ^0.10.1
 | 
					        specifier: ^0.10.1
 | 
				
			||||||
        version: 0.10.1(typescript@5.5.4)(zod@3.23.8)
 | 
					        version: 0.10.1(typescript@5.5.4)(zod@3.23.8)
 | 
				
			||||||
@@ -44,6 +50,9 @@ importers:
 | 
				
			|||||||
      next-auth:
 | 
					      next-auth:
 | 
				
			||||||
        specifier: 5.0.0-beta.20
 | 
					        specifier: 5.0.0-beta.20
 | 
				
			||||||
        version: 5.0.0-beta.20(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
 | 
					        version: 5.0.0-beta.20(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      next-themes:
 | 
				
			||||||
 | 
					        specifier: ^0.3.0
 | 
				
			||||||
 | 
					        version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
      postgres:
 | 
					      postgres:
 | 
				
			||||||
        specifier: ^3.4.4
 | 
					        specifier: ^3.4.4
 | 
				
			||||||
        version: 3.4.4
 | 
					        version: 3.4.4
 | 
				
			||||||
@@ -574,6 +583,21 @@ packages:
 | 
				
			|||||||
    resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
 | 
					    resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
 | 
				
			||||||
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
					    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@floating-ui/core@1.6.7':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@floating-ui/dom@1.6.10':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@floating-ui/react-dom@2.1.1':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      react: '>=16.8.0'
 | 
				
			||||||
 | 
					      react-dom: '>=16.8.0'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@floating-ui/utils@0.2.7':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  '@humanwhocodes/config-array@0.11.14':
 | 
					  '@humanwhocodes/config-array@0.11.14':
 | 
				
			||||||
    resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
 | 
					    resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
 | 
				
			||||||
    engines: {node: '>=10.10.0'}
 | 
					    engines: {node: '>=10.10.0'}
 | 
				
			||||||
@@ -691,6 +715,263 @@ packages:
 | 
				
			|||||||
    resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
 | 
					    resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
 | 
				
			||||||
    engines: {node: '>=14'}
 | 
					    engines: {node: '>=14'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/primitive@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-arrow@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      '@types/react-dom': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					      react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					      '@types/react-dom':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-collection@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      '@types/react-dom': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					      react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					      '@types/react-dom':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-compose-refs@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-context@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-direction@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-dismissable-layer@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      '@types/react-dom': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					      react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					      '@types/react-dom':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-dropdown-menu@2.1.1':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      '@types/react-dom': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					      react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					      '@types/react-dom':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-focus-guards@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-focus-scope@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      '@types/react-dom': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					      react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					      '@types/react-dom':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-id@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-menu@2.1.1':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      '@types/react-dom': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					      react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					      '@types/react-dom':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-popper@1.2.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      '@types/react-dom': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					      react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					      '@types/react-dom':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-portal@1.1.1':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      '@types/react-dom': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					      react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					      '@types/react-dom':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-presence@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      '@types/react-dom': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					      react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					      '@types/react-dom':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-primitive@2.0.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      '@types/react-dom': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					      react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					      '@types/react-dom':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-roving-focus@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      '@types/react-dom': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					      react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					      '@types/react-dom':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-slot@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-use-callback-ref@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-use-controllable-state@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-use-escape-keydown@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-use-layout-effect@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-use-rect@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-use-size@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': '*'
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/rect@1.1.0':
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  '@rushstack/eslint-patch@1.10.4':
 | 
					  '@rushstack/eslint-patch@1.10.4':
 | 
				
			||||||
    resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==}
 | 
					    resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -901,6 +1182,10 @@ packages:
 | 
				
			|||||||
  argparse@2.0.1:
 | 
					  argparse@2.0.1:
 | 
				
			||||||
    resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
 | 
					    resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  aria-hidden@1.2.4:
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==}
 | 
				
			||||||
 | 
					    engines: {node: '>=10'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  aria-query@5.1.3:
 | 
					  aria-query@5.1.3:
 | 
				
			||||||
    resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==}
 | 
					    resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1114,6 +1399,9 @@ packages:
 | 
				
			|||||||
    resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
 | 
					    resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
 | 
				
			||||||
    engines: {node: '>= 0.4'}
 | 
					    engines: {node: '>= 0.4'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  detect-node-es@1.1.0:
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  didyoumean@1.2.2:
 | 
					  didyoumean@1.2.2:
 | 
				
			||||||
    resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
 | 
					    resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1508,6 +1796,10 @@ packages:
 | 
				
			|||||||
    resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
 | 
					    resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
 | 
				
			||||||
    engines: {node: '>= 0.4'}
 | 
					    engines: {node: '>= 0.4'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  get-nonce@1.0.1:
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
 | 
				
			||||||
 | 
					    engines: {node: '>=6'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get-symbol-description@1.0.2:
 | 
					  get-symbol-description@1.0.2:
 | 
				
			||||||
    resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
 | 
					    resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
 | 
				
			||||||
    engines: {node: '>= 0.4'}
 | 
					    engines: {node: '>= 0.4'}
 | 
				
			||||||
@@ -1617,6 +1909,9 @@ packages:
 | 
				
			|||||||
    resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
 | 
					    resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
 | 
				
			||||||
    engines: {node: '>= 0.4'}
 | 
					    engines: {node: '>= 0.4'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  invariant@2.2.4:
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  is-arguments@1.1.1:
 | 
					  is-arguments@1.1.1:
 | 
				
			||||||
    resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
 | 
					    resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
 | 
				
			||||||
    engines: {node: '>= 0.4'}
 | 
					    engines: {node: '>= 0.4'}
 | 
				
			||||||
@@ -1935,6 +2230,12 @@ packages:
 | 
				
			|||||||
      nodemailer:
 | 
					      nodemailer:
 | 
				
			||||||
        optional: true
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  next-themes@0.3.0:
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      react: ^16.8 || ^17 || ^18
 | 
				
			||||||
 | 
					      react-dom: ^16.8 || ^17 || ^18
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  next-tick@1.1.0:
 | 
					  next-tick@1.1.0:
 | 
				
			||||||
    resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
 | 
					    resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2256,6 +2557,36 @@ packages:
 | 
				
			|||||||
  react-is@16.13.1:
 | 
					  react-is@16.13.1:
 | 
				
			||||||
    resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
 | 
					    resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  react-remove-scroll-bar@2.3.6:
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==}
 | 
				
			||||||
 | 
					    engines: {node: '>=10'}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
 | 
				
			||||||
 | 
					      react: ^16.8.0 || ^17.0.0 || ^18.0.0
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  react-remove-scroll@2.5.7:
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==}
 | 
				
			||||||
 | 
					    engines: {node: '>=10'}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
 | 
				
			||||||
 | 
					      react: ^16.8.0 || ^17.0.0 || ^18.0.0
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  react-style-singleton@2.2.1:
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
 | 
				
			||||||
 | 
					    engines: {node: '>=10'}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
 | 
				
			||||||
 | 
					      react: ^16.8.0 || ^17.0.0 || ^18.0.0
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  react@18.3.1:
 | 
					  react@18.3.1:
 | 
				
			||||||
    resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
 | 
					    resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
 | 
				
			||||||
    engines: {node: '>=0.10.0'}
 | 
					    engines: {node: '>=0.10.0'}
 | 
				
			||||||
@@ -2560,6 +2891,26 @@ packages:
 | 
				
			|||||||
  uri-js@4.4.1:
 | 
					  uri-js@4.4.1:
 | 
				
			||||||
    resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
 | 
					    resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  use-callback-ref@1.3.2:
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==}
 | 
				
			||||||
 | 
					    engines: {node: '>=10'}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
 | 
				
			||||||
 | 
					      react: ^16.8.0 || ^17.0.0 || ^18.0.0
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  use-sidecar@1.1.2:
 | 
				
			||||||
 | 
					    resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
 | 
				
			||||||
 | 
					    engines: {node: '>=10'}
 | 
				
			||||||
 | 
					    peerDependencies:
 | 
				
			||||||
 | 
					      '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0
 | 
				
			||||||
 | 
					      react: ^16.8.0 || ^17.0.0 || ^18.0.0
 | 
				
			||||||
 | 
					    peerDependenciesMeta:
 | 
				
			||||||
 | 
					      '@types/react':
 | 
				
			||||||
 | 
					        optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  util-deprecate@1.0.2:
 | 
					  util-deprecate@1.0.2:
 | 
				
			||||||
    resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
 | 
					    resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2887,6 +3238,23 @@ snapshots:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  '@eslint/js@8.57.0': {}
 | 
					  '@eslint/js@8.57.0': {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@floating-ui/core@1.6.7':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@floating-ui/utils': 0.2.7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@floating-ui/dom@1.6.10':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@floating-ui/core': 1.6.7
 | 
				
			||||||
 | 
					      '@floating-ui/utils': 0.2.7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@floating-ui/react-dom@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@floating-ui/dom': 1.6.10
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@floating-ui/utils@0.2.7': {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  '@humanwhocodes/config-array@0.11.14':
 | 
					  '@humanwhocodes/config-array@0.11.14':
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      '@humanwhocodes/object-schema': 2.0.3
 | 
					      '@humanwhocodes/object-schema': 2.0.3
 | 
				
			||||||
@@ -2980,6 +3348,238 @@ snapshots:
 | 
				
			|||||||
  '@pkgjs/parseargs@0.11.0':
 | 
					  '@pkgjs/parseargs@0.11.0':
 | 
				
			||||||
    optional: true
 | 
					    optional: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/primitive@1.1.0': {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					      '@types/react-dom': 18.3.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					      '@types/react-dom': 18.3.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-direction@1.1.0(@types/react@18.3.3)(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/primitive': 1.1.0
 | 
				
			||||||
 | 
					      '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					      '@types/react-dom': 18.3.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-dropdown-menu@2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/primitive': 1.1.0
 | 
				
			||||||
 | 
					      '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-menu': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					      '@types/react-dom': 18.3.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.3)(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					      '@types/react-dom': 18.3.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-menu@2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/primitive': 1.1.0
 | 
				
			||||||
 | 
					      '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      aria-hidden: 1.2.4
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					      react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					      '@types/react-dom': 18.3.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/rect': 1.1.0
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					      '@types/react-dom': 18.3.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					      '@types/react-dom': 18.3.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					      '@types/react-dom': 18.3.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					      '@types/react-dom': 18.3.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/primitive': 1.1.0
 | 
				
			||||||
 | 
					      '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					      '@types/react-dom': 18.3.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.3)(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.3)(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.3)(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.3)(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/rect': 1.1.0
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/react-use-size@1.1.0(@types/react@18.3.3)(react@18.3.1)':
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  '@radix-ui/rect@1.1.0': {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  '@rushstack/eslint-patch@1.10.4': {}
 | 
					  '@rushstack/eslint-patch@1.10.4': {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  '@swc/counter@0.1.3': {}
 | 
					  '@swc/counter@0.1.3': {}
 | 
				
			||||||
@@ -3205,6 +3805,10 @@ snapshots:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  argparse@2.0.1: {}
 | 
					  argparse@2.0.1: {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  aria-hidden@1.2.4:
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      tslib: 2.6.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  aria-query@5.1.3:
 | 
					  aria-query@5.1.3:
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      deep-equal: 2.2.3
 | 
					      deep-equal: 2.2.3
 | 
				
			||||||
@@ -3459,6 +4063,8 @@ snapshots:
 | 
				
			|||||||
      has-property-descriptors: 1.0.2
 | 
					      has-property-descriptors: 1.0.2
 | 
				
			||||||
      object-keys: 1.1.1
 | 
					      object-keys: 1.1.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  detect-node-es@1.1.0: {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  didyoumean@1.2.2: {}
 | 
					  didyoumean@1.2.2: {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  diff@4.0.2: {}
 | 
					  diff@4.0.2: {}
 | 
				
			||||||
@@ -4041,6 +4647,8 @@ snapshots:
 | 
				
			|||||||
      has-symbols: 1.0.3
 | 
					      has-symbols: 1.0.3
 | 
				
			||||||
      hasown: 2.0.2
 | 
					      hasown: 2.0.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  get-nonce@1.0.1: {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get-symbol-description@1.0.2:
 | 
					  get-symbol-description@1.0.2:
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      call-bind: 1.0.7
 | 
					      call-bind: 1.0.7
 | 
				
			||||||
@@ -4168,6 +4776,10 @@ snapshots:
 | 
				
			|||||||
      hasown: 2.0.2
 | 
					      hasown: 2.0.2
 | 
				
			||||||
      side-channel: 1.0.6
 | 
					      side-channel: 1.0.6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  invariant@2.2.4:
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      loose-envify: 1.4.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  is-arguments@1.1.1:
 | 
					  is-arguments@1.1.1:
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      call-bind: 1.0.7
 | 
					      call-bind: 1.0.7
 | 
				
			||||||
@@ -4471,6 +5083,11 @@ snapshots:
 | 
				
			|||||||
      next: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
					      next: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
 | 
				
			||||||
      react: 18.3.1
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  next-themes@0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-dom: 18.3.1(react@18.3.1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  next-tick@1.1.0: {}
 | 
					  next-tick@1.1.0: {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
 | 
					  next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
 | 
				
			||||||
@@ -4736,6 +5353,34 @@ snapshots:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  react-is@16.13.1: {}
 | 
					  react-is@16.13.1: {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1):
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      tslib: 2.6.3
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1):
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      tslib: 2.6.3
 | 
				
			||||||
 | 
					      use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					      use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1)
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1):
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      get-nonce: 1.0.1
 | 
				
			||||||
 | 
					      invariant: 2.2.4
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      tslib: 2.6.3
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  react@18.3.1:
 | 
					  react@18.3.1:
 | 
				
			||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      loose-envify: 1.4.0
 | 
					      loose-envify: 1.4.0
 | 
				
			||||||
@@ -5105,6 +5750,21 @@ snapshots:
 | 
				
			|||||||
    dependencies:
 | 
					    dependencies:
 | 
				
			||||||
      punycode: 2.3.1
 | 
					      punycode: 2.3.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1):
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      tslib: 2.6.3
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1):
 | 
				
			||||||
 | 
					    dependencies:
 | 
				
			||||||
 | 
					      detect-node-es: 1.1.0
 | 
				
			||||||
 | 
					      react: 18.3.1
 | 
				
			||||||
 | 
					      tslib: 2.6.3
 | 
				
			||||||
 | 
					    optionalDependencies:
 | 
				
			||||||
 | 
					      '@types/react': 18.3.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  util-deprecate@1.0.2: {}
 | 
					  util-deprecate@1.0.2: {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  v8-compile-cache-lib@3.0.1: {}
 | 
					  v8-compile-cache-lib@3.0.1: {}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,7 @@ import "~/styles/globals.css";
 | 
				
			|||||||
import { Inter as FontSans } from "next/font/google";
 | 
					import { Inter as FontSans } from "next/font/google";
 | 
				
			||||||
import { cn } from "~/lib/utils"
 | 
					import { cn } from "~/lib/utils"
 | 
				
			||||||
import { SessionProvider } from "next-auth/react";
 | 
					import { SessionProvider } from "next-auth/react";
 | 
				
			||||||
 | 
					import Theme_Provider from "~/components/theme/theme_provider"
 | 
				
			||||||
import { type Metadata } from "next";
 | 
					import { type Metadata } from "next";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const metadata: Metadata = {
 | 
					export const metadata: Metadata = {
 | 
				
			||||||
@@ -25,9 +26,16 @@ export default function RootLayout({
 | 
				
			|||||||
          "min-h-screen bg-background font-sans antialiased",
 | 
					          "min-h-screen bg-background font-sans antialiased",
 | 
				
			||||||
          fontSans.variable)}
 | 
					          fontSans.variable)}
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <SessionProvider>
 | 
					        <Theme_Provider
 | 
				
			||||||
        {children}
 | 
					          attribute="class"
 | 
				
			||||||
        </SessionProvider>
 | 
					          defaultTheme="system"
 | 
				
			||||||
 | 
					          enableSystem={true}
 | 
				
			||||||
 | 
					          disableTransitionOnChange={true}
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          <SessionProvider>
 | 
				
			||||||
 | 
					          {children}
 | 
				
			||||||
 | 
					          </SessionProvider>
 | 
				
			||||||
 | 
					        </Theme_Provider>
 | 
				
			||||||
      </body>
 | 
					      </body>
 | 
				
			||||||
    </html>
 | 
					    </html>
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,37 +1,10 @@
 | 
				
			|||||||
import Link from "next/link";
 | 
					import Theme_Toggle from "~/components/theme/theme_toggle"
 | 
				
			||||||
 | 
					//import Link from "next/link";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default function HomePage() {
 | 
					export default function HomePage() {
 | 
				
			||||||
  return (
 | 
					  return (
 | 
				
			||||||
    <main className="flex min-h-screen flex-col items-center justify-center bg-gradient-to-b from-[#2e026d] to-[#15162c] text-white">
 | 
					    <main className="min-h-screen">
 | 
				
			||||||
      <div className="container flex flex-col items-center justify-center gap-12 px-4 py-16">
 | 
					      <Theme_Toggle />
 | 
				
			||||||
        <h1 className="text-5xl font-extrabold tracking-tight text-white sm:text-[5rem]">
 | 
					 | 
				
			||||||
          Create <span className="text-[hsl(280,100%,70%)]">T3</span> App
 | 
					 | 
				
			||||||
        </h1>
 | 
					 | 
				
			||||||
        <div className="grid grid-cols-1 gap-4 sm:grid-cols-2 md:gap-8">
 | 
					 | 
				
			||||||
          <Link
 | 
					 | 
				
			||||||
            className="flex max-w-xs flex-col gap-4 rounded-xl bg-white/10 p-4 text-white hover:bg-white/20"
 | 
					 | 
				
			||||||
            href="https://create.t3.gg/en/usage/first-steps"
 | 
					 | 
				
			||||||
            target="_blank"
 | 
					 | 
				
			||||||
          >
 | 
					 | 
				
			||||||
            <h3 className="text-2xl font-bold">First Steps →</h3>
 | 
					 | 
				
			||||||
            <div className="text-lg">
 | 
					 | 
				
			||||||
              Just the basics - Everything you need to know to set up your
 | 
					 | 
				
			||||||
              database and authentication.
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
          </Link>
 | 
					 | 
				
			||||||
          <Link
 | 
					 | 
				
			||||||
            className="flex max-w-xs flex-col gap-4 rounded-xl bg-white/10 p-4 text-white hover:bg-white/20"
 | 
					 | 
				
			||||||
            href="https://create.t3.gg/en/introduction"
 | 
					 | 
				
			||||||
            target="_blank"
 | 
					 | 
				
			||||||
          >
 | 
					 | 
				
			||||||
            <h3 className="text-2xl font-bold">Documentation →</h3>
 | 
					 | 
				
			||||||
            <div className="text-lg">
 | 
					 | 
				
			||||||
              Learn more about Create T3 App, the libraries it uses, and how to
 | 
					 | 
				
			||||||
              deploy it.
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
          </Link>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
    </main>
 | 
					    </main>
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								src/components/theme/theme_provider.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/components/theme/theme_provider.tsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					"use client"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as React from "react"
 | 
				
			||||||
 | 
					import { ThemeProvider as NextThemesProvider } from "next-themes"
 | 
				
			||||||
 | 
					import { type ThemeProviderProps } from "next-themes/dist/types"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default function Theme_Provider({ children, ...props }: ThemeProviderProps) {
 | 
				
			||||||
 | 
					  return (
 | 
				
			||||||
 | 
					    <div className="w-full justify-end items-end p-3 flex flex-col">
 | 
				
			||||||
 | 
					      <NextThemesProvider {...props}>{children}</NextThemesProvider>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										37
									
								
								src/components/theme/theme_toggle.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/components/theme/theme_toggle.tsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					"use client"
 | 
				
			||||||
 | 
					import * as React from "react"
 | 
				
			||||||
 | 
					import { Moon, Sun } from "lucide-react"
 | 
				
			||||||
 | 
					import { useTheme } from "next-themes"
 | 
				
			||||||
 | 
					import { Button } from "~/components/ui/button"
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  DropdownMenu,
 | 
				
			||||||
 | 
					  DropdownMenuContent,
 | 
				
			||||||
 | 
					  DropdownMenuItem,
 | 
				
			||||||
 | 
					  DropdownMenuTrigger,
 | 
				
			||||||
 | 
					} from "~/components/ui/dropdown-menu"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default function Theme_Toggle() {
 | 
				
			||||||
 | 
					  const { setTheme } = useTheme()
 | 
				
			||||||
 | 
					  return (
 | 
				
			||||||
 | 
					    <DropdownMenu>
 | 
				
			||||||
 | 
					      <DropdownMenuTrigger asChild>
 | 
				
			||||||
 | 
					        <Button variant="outline" size="icon">
 | 
				
			||||||
 | 
					          <Sun className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
 | 
				
			||||||
 | 
					          <Moon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
 | 
				
			||||||
 | 
					          <span className="sr-only">Toggle theme</span>
 | 
				
			||||||
 | 
					        </Button>
 | 
				
			||||||
 | 
					      </DropdownMenuTrigger>
 | 
				
			||||||
 | 
					      <DropdownMenuContent align="end">
 | 
				
			||||||
 | 
					        <DropdownMenuItem onClick={() => setTheme("light")}>
 | 
				
			||||||
 | 
					          Light
 | 
				
			||||||
 | 
					        </DropdownMenuItem>
 | 
				
			||||||
 | 
					        <DropdownMenuItem onClick={() => setTheme("dark")}>
 | 
				
			||||||
 | 
					          Dark
 | 
				
			||||||
 | 
					        </DropdownMenuItem>
 | 
				
			||||||
 | 
					        <DropdownMenuItem onClick={() => setTheme("system")}>
 | 
				
			||||||
 | 
					          System
 | 
				
			||||||
 | 
					        </DropdownMenuItem>
 | 
				
			||||||
 | 
					      </DropdownMenuContent>
 | 
				
			||||||
 | 
					    </DropdownMenu>
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										56
									
								
								src/components/ui/button.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								src/components/ui/button.tsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					import * as React from "react"
 | 
				
			||||||
 | 
					import { Slot } from "@radix-ui/react-slot"
 | 
				
			||||||
 | 
					import { cva, type VariantProps } from "class-variance-authority"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { cn } from "~/lib/utils"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const buttonVariants = cva(
 | 
				
			||||||
 | 
					  "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    variants: {
 | 
				
			||||||
 | 
					      variant: {
 | 
				
			||||||
 | 
					        default: "bg-primary text-primary-foreground hover:bg-primary/90",
 | 
				
			||||||
 | 
					        destructive:
 | 
				
			||||||
 | 
					          "bg-destructive text-destructive-foreground hover:bg-destructive/90",
 | 
				
			||||||
 | 
					        outline:
 | 
				
			||||||
 | 
					          "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
 | 
				
			||||||
 | 
					        secondary:
 | 
				
			||||||
 | 
					          "bg-secondary text-secondary-foreground hover:bg-secondary/80",
 | 
				
			||||||
 | 
					        ghost: "hover:bg-accent hover:text-accent-foreground",
 | 
				
			||||||
 | 
					        link: "text-primary underline-offset-4 hover:underline",
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      size: {
 | 
				
			||||||
 | 
					        default: "h-10 px-4 py-2",
 | 
				
			||||||
 | 
					        sm: "h-9 rounded-md px-3",
 | 
				
			||||||
 | 
					        lg: "h-11 rounded-md px-8",
 | 
				
			||||||
 | 
					        icon: "h-10 w-10",
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    defaultVariants: {
 | 
				
			||||||
 | 
					      variant: "default",
 | 
				
			||||||
 | 
					      size: "default",
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface ButtonProps
 | 
				
			||||||
 | 
					  extends React.ButtonHTMLAttributes<HTMLButtonElement>,
 | 
				
			||||||
 | 
					    VariantProps<typeof buttonVariants> {
 | 
				
			||||||
 | 
					  asChild?: boolean
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
 | 
				
			||||||
 | 
					  ({ className, variant, size, asChild = false, ...props }, ref) => {
 | 
				
			||||||
 | 
					    const Comp = asChild ? Slot : "button"
 | 
				
			||||||
 | 
					    return (
 | 
				
			||||||
 | 
					      <Comp
 | 
				
			||||||
 | 
					        className={cn(buttonVariants({ variant, size, className }))}
 | 
				
			||||||
 | 
					        ref={ref}
 | 
				
			||||||
 | 
					        {...props}
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					Button.displayName = "Button"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export { Button, buttonVariants }
 | 
				
			||||||
							
								
								
									
										200
									
								
								src/components/ui/dropdown-menu.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										200
									
								
								src/components/ui/dropdown-menu.tsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,200 @@
 | 
				
			|||||||
 | 
					"use client"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as React from "react"
 | 
				
			||||||
 | 
					import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
 | 
				
			||||||
 | 
					import { Check, ChevronRight, Circle } from "lucide-react"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { cn } from "~/lib/utils"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenu = DropdownMenuPrimitive.Root
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuGroup = DropdownMenuPrimitive.Group
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuPortal = DropdownMenuPrimitive.Portal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuSub = DropdownMenuPrimitive.Sub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuSubTrigger = React.forwardRef<
 | 
				
			||||||
 | 
					  React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,
 | 
				
			||||||
 | 
					  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {
 | 
				
			||||||
 | 
					    inset?: boolean
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					>(({ className, inset, children, ...props }, ref) => (
 | 
				
			||||||
 | 
					  <DropdownMenuPrimitive.SubTrigger
 | 
				
			||||||
 | 
					    ref={ref}
 | 
				
			||||||
 | 
					    className={cn(
 | 
				
			||||||
 | 
					      "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",
 | 
				
			||||||
 | 
					      inset && "pl-8",
 | 
				
			||||||
 | 
					      className
 | 
				
			||||||
 | 
					    )}
 | 
				
			||||||
 | 
					    {...props}
 | 
				
			||||||
 | 
					  >
 | 
				
			||||||
 | 
					    {children}
 | 
				
			||||||
 | 
					    <ChevronRight className="ml-auto h-4 w-4" />
 | 
				
			||||||
 | 
					  </DropdownMenuPrimitive.SubTrigger>
 | 
				
			||||||
 | 
					))
 | 
				
			||||||
 | 
					DropdownMenuSubTrigger.displayName =
 | 
				
			||||||
 | 
					  DropdownMenuPrimitive.SubTrigger.displayName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuSubContent = React.forwardRef<
 | 
				
			||||||
 | 
					  React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,
 | 
				
			||||||
 | 
					  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>
 | 
				
			||||||
 | 
					>(({ className, ...props }, ref) => (
 | 
				
			||||||
 | 
					  <DropdownMenuPrimitive.SubContent
 | 
				
			||||||
 | 
					    ref={ref}
 | 
				
			||||||
 | 
					    className={cn(
 | 
				
			||||||
 | 
					      "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
 | 
				
			||||||
 | 
					      className
 | 
				
			||||||
 | 
					    )}
 | 
				
			||||||
 | 
					    {...props}
 | 
				
			||||||
 | 
					  />
 | 
				
			||||||
 | 
					))
 | 
				
			||||||
 | 
					DropdownMenuSubContent.displayName =
 | 
				
			||||||
 | 
					  DropdownMenuPrimitive.SubContent.displayName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuContent = React.forwardRef<
 | 
				
			||||||
 | 
					  React.ElementRef<typeof DropdownMenuPrimitive.Content>,
 | 
				
			||||||
 | 
					  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>
 | 
				
			||||||
 | 
					>(({ className, sideOffset = 4, ...props }, ref) => (
 | 
				
			||||||
 | 
					  <DropdownMenuPrimitive.Portal>
 | 
				
			||||||
 | 
					    <DropdownMenuPrimitive.Content
 | 
				
			||||||
 | 
					      ref={ref}
 | 
				
			||||||
 | 
					      sideOffset={sideOffset}
 | 
				
			||||||
 | 
					      className={cn(
 | 
				
			||||||
 | 
					        "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
 | 
				
			||||||
 | 
					        className
 | 
				
			||||||
 | 
					      )}
 | 
				
			||||||
 | 
					      {...props}
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
 | 
					  </DropdownMenuPrimitive.Portal>
 | 
				
			||||||
 | 
					))
 | 
				
			||||||
 | 
					DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuItem = React.forwardRef<
 | 
				
			||||||
 | 
					  React.ElementRef<typeof DropdownMenuPrimitive.Item>,
 | 
				
			||||||
 | 
					  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {
 | 
				
			||||||
 | 
					    inset?: boolean
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					>(({ className, inset, ...props }, ref) => (
 | 
				
			||||||
 | 
					  <DropdownMenuPrimitive.Item
 | 
				
			||||||
 | 
					    ref={ref}
 | 
				
			||||||
 | 
					    className={cn(
 | 
				
			||||||
 | 
					      "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
 | 
				
			||||||
 | 
					      inset && "pl-8",
 | 
				
			||||||
 | 
					      className
 | 
				
			||||||
 | 
					    )}
 | 
				
			||||||
 | 
					    {...props}
 | 
				
			||||||
 | 
					  />
 | 
				
			||||||
 | 
					))
 | 
				
			||||||
 | 
					DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuCheckboxItem = React.forwardRef<
 | 
				
			||||||
 | 
					  React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,
 | 
				
			||||||
 | 
					  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>
 | 
				
			||||||
 | 
					>(({ className, children, checked, ...props }, ref) => (
 | 
				
			||||||
 | 
					  <DropdownMenuPrimitive.CheckboxItem
 | 
				
			||||||
 | 
					    ref={ref}
 | 
				
			||||||
 | 
					    className={cn(
 | 
				
			||||||
 | 
					      "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
 | 
				
			||||||
 | 
					      className
 | 
				
			||||||
 | 
					    )}
 | 
				
			||||||
 | 
					    checked={checked}
 | 
				
			||||||
 | 
					    {...props}
 | 
				
			||||||
 | 
					  >
 | 
				
			||||||
 | 
					    <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
 | 
				
			||||||
 | 
					      <DropdownMenuPrimitive.ItemIndicator>
 | 
				
			||||||
 | 
					        <Check className="h-4 w-4" />
 | 
				
			||||||
 | 
					      </DropdownMenuPrimitive.ItemIndicator>
 | 
				
			||||||
 | 
					    </span>
 | 
				
			||||||
 | 
					    {children}
 | 
				
			||||||
 | 
					  </DropdownMenuPrimitive.CheckboxItem>
 | 
				
			||||||
 | 
					))
 | 
				
			||||||
 | 
					DropdownMenuCheckboxItem.displayName =
 | 
				
			||||||
 | 
					  DropdownMenuPrimitive.CheckboxItem.displayName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuRadioItem = React.forwardRef<
 | 
				
			||||||
 | 
					  React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,
 | 
				
			||||||
 | 
					  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>
 | 
				
			||||||
 | 
					>(({ className, children, ...props }, ref) => (
 | 
				
			||||||
 | 
					  <DropdownMenuPrimitive.RadioItem
 | 
				
			||||||
 | 
					    ref={ref}
 | 
				
			||||||
 | 
					    className={cn(
 | 
				
			||||||
 | 
					      "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
 | 
				
			||||||
 | 
					      className
 | 
				
			||||||
 | 
					    )}
 | 
				
			||||||
 | 
					    {...props}
 | 
				
			||||||
 | 
					  >
 | 
				
			||||||
 | 
					    <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
 | 
				
			||||||
 | 
					      <DropdownMenuPrimitive.ItemIndicator>
 | 
				
			||||||
 | 
					        <Circle className="h-2 w-2 fill-current" />
 | 
				
			||||||
 | 
					      </DropdownMenuPrimitive.ItemIndicator>
 | 
				
			||||||
 | 
					    </span>
 | 
				
			||||||
 | 
					    {children}
 | 
				
			||||||
 | 
					  </DropdownMenuPrimitive.RadioItem>
 | 
				
			||||||
 | 
					))
 | 
				
			||||||
 | 
					DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuLabel = React.forwardRef<
 | 
				
			||||||
 | 
					  React.ElementRef<typeof DropdownMenuPrimitive.Label>,
 | 
				
			||||||
 | 
					  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
 | 
				
			||||||
 | 
					    inset?: boolean
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					>(({ className, inset, ...props }, ref) => (
 | 
				
			||||||
 | 
					  <DropdownMenuPrimitive.Label
 | 
				
			||||||
 | 
					    ref={ref}
 | 
				
			||||||
 | 
					    className={cn(
 | 
				
			||||||
 | 
					      "px-2 py-1.5 text-sm font-semibold",
 | 
				
			||||||
 | 
					      inset && "pl-8",
 | 
				
			||||||
 | 
					      className
 | 
				
			||||||
 | 
					    )}
 | 
				
			||||||
 | 
					    {...props}
 | 
				
			||||||
 | 
					  />
 | 
				
			||||||
 | 
					))
 | 
				
			||||||
 | 
					DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuSeparator = React.forwardRef<
 | 
				
			||||||
 | 
					  React.ElementRef<typeof DropdownMenuPrimitive.Separator>,
 | 
				
			||||||
 | 
					  React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>
 | 
				
			||||||
 | 
					>(({ className, ...props }, ref) => (
 | 
				
			||||||
 | 
					  <DropdownMenuPrimitive.Separator
 | 
				
			||||||
 | 
					    ref={ref}
 | 
				
			||||||
 | 
					    className={cn("-mx-1 my-1 h-px bg-muted", className)}
 | 
				
			||||||
 | 
					    {...props}
 | 
				
			||||||
 | 
					  />
 | 
				
			||||||
 | 
					))
 | 
				
			||||||
 | 
					DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DropdownMenuShortcut = ({
 | 
				
			||||||
 | 
					  className,
 | 
				
			||||||
 | 
					  ...props
 | 
				
			||||||
 | 
					}: React.HTMLAttributes<HTMLSpanElement>) => {
 | 
				
			||||||
 | 
					  return (
 | 
				
			||||||
 | 
					    <span
 | 
				
			||||||
 | 
					      className={cn("ml-auto text-xs tracking-widest opacity-60", className)}
 | 
				
			||||||
 | 
					      {...props}
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					DropdownMenuShortcut.displayName = "DropdownMenuShortcut"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export {
 | 
				
			||||||
 | 
					  DropdownMenu,
 | 
				
			||||||
 | 
					  DropdownMenuTrigger,
 | 
				
			||||||
 | 
					  DropdownMenuContent,
 | 
				
			||||||
 | 
					  DropdownMenuItem,
 | 
				
			||||||
 | 
					  DropdownMenuCheckboxItem,
 | 
				
			||||||
 | 
					  DropdownMenuRadioItem,
 | 
				
			||||||
 | 
					  DropdownMenuLabel,
 | 
				
			||||||
 | 
					  DropdownMenuSeparator,
 | 
				
			||||||
 | 
					  DropdownMenuShortcut,
 | 
				
			||||||
 | 
					  DropdownMenuGroup,
 | 
				
			||||||
 | 
					  DropdownMenuPortal,
 | 
				
			||||||
 | 
					  DropdownMenuSub,
 | 
				
			||||||
 | 
					  DropdownMenuSubContent,
 | 
				
			||||||
 | 
					  DropdownMenuSubTrigger,
 | 
				
			||||||
 | 
					  DropdownMenuRadioGroup,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -66,4 +66,4 @@
 | 
				
			|||||||
  body {
 | 
					  body {
 | 
				
			||||||
    @apply bg-background text-foreground;
 | 
					    @apply bg-background text-foreground;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user