Openstatus www.openstatus.dev

chore: add shadcn and font

Co-authored-by: Thibault Le Ouay <thibaultleouay@users.noreply.github.com>

mxkaske cd99a2e6 cf830445

+376 -54
+6
apps/web/package.json
··· 11 11 "dependencies": { 12 12 "@clerk/nextjs": "^4.21.3", 13 13 "@t3-oss/env-nextjs": "^0.4.1", 14 + "@radix-ui/react-slot": "^1.0.2", 15 + "class-variance-authority": "^0.6.0", 16 + "clsx": "^1.2.1", 17 + "lucide-react": "^0.244.0", 14 18 "next": "13.4.6", 15 19 "react": "18.2.0", 16 20 "react-dom": "18.2.0", 21 + "tailwind-merge": "^1.13.2", 22 + "tailwindcss-animate": "^1.0.6", 17 23 "ui": "workspace:*", 18 24 "zod": "^3.21.4" 19 25 },
+11 -1
apps/web/src/app/layout.tsx
··· 1 + import "@/styles/globals.css"; 1 2 import { ClerkProvider } from "@clerk/nextjs"; 3 + import { Inter } from "next/font/google"; 4 + import LocalFont from "next/font/local"; 5 + 6 + const inter = Inter({ subsets: ["latin"] }); 7 + 8 + const calSans = LocalFont({ 9 + src: "../public/fonts/CalSans-SemiBold.ttf", 10 + variable: "--font-calsans", 11 + }); 2 12 3 13 export default function RootLayout({ 4 14 children, ··· 8 18 return ( 9 19 <ClerkProvider> 10 20 <html lang="en"> 11 - <body>{children}</body> 21 + <body className={`${inter.className} ${calSans.variable}`}>{children}</body> 12 22 </html> 13 23 </ClerkProvider> 14 24 );
+1 -1
apps/web/src/components/home/hero.tsx
··· 24 24 </div> 25 25 </div> 26 26 <div className="text-center"> 27 - <h1 className="text-4xl font-bold tracking-tight text-gray-900 sm:text-6xl"> 27 + <h1 className="text-4xl font-bold tracking-tight text-gray-900 sm:text-6xl font-cal"> 28 28 Data to enrich your online business 29 29 </h1> 30 30 <p className="mt-6 text-lg leading-8 text-gray-600">
+36
apps/web/src/components/ui/badge.tsx
··· 1 + import * as React from "react" 2 + import { cva, type VariantProps } from "class-variance-authority" 3 + 4 + import { cn } from "@/lib/utils" 5 + 6 + const badgeVariants = cva( 7 + "inline-flex items-center border rounded-full px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", 8 + { 9 + variants: { 10 + variant: { 11 + default: 12 + "bg-primary hover:bg-primary/80 border-transparent text-primary-foreground", 13 + secondary: 14 + "bg-secondary hover:bg-secondary/80 border-transparent text-secondary-foreground", 15 + destructive: 16 + "bg-destructive hover:bg-destructive/80 border-transparent text-destructive-foreground", 17 + outline: "text-foreground", 18 + }, 19 + }, 20 + defaultVariants: { 21 + variant: "default", 22 + }, 23 + } 24 + ) 25 + 26 + export interface BadgeProps 27 + extends React.HTMLAttributes<HTMLDivElement>, 28 + VariantProps<typeof badgeVariants> {} 29 + 30 + function Badge({ className, variant, ...props }: BadgeProps) { 31 + return ( 32 + <div className={cn(badgeVariants({ variant }), className)} {...props} /> 33 + ) 34 + } 35 + 36 + export { Badge, badgeVariants }
+55
apps/web/src/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 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background", 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 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: "underline-offset-4 hover:underline text-primary", 21 + }, 22 + size: { 23 + default: "h-10 py-2 px-4", 24 + sm: "h-9 px-3 rounded-md", 25 + lg: "h-11 px-8 rounded-md", 26 + }, 27 + }, 28 + defaultVariants: { 29 + variant: "default", 30 + size: "default", 31 + }, 32 + } 33 + ) 34 + 35 + export interface ButtonProps 36 + extends React.ButtonHTMLAttributes<HTMLButtonElement>, 37 + VariantProps<typeof buttonVariants> { 38 + asChild?: boolean 39 + } 40 + 41 + const Button = React.forwardRef<HTMLButtonElement, ButtonProps>( 42 + ({ className, variant, size, asChild = false, ...props }, ref) => { 43 + const Comp = asChild ? Slot : "button" 44 + return ( 45 + <Comp 46 + className={cn(buttonVariants({ variant, size, className }))} 47 + ref={ref} 48 + {...props} 49 + /> 50 + ) 51 + } 52 + ) 53 + Button.displayName = "Button" 54 + 55 + export { Button, buttonVariants }
+25
apps/web/src/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<HTMLInputElement> {} 7 + 8 + const Input = React.forwardRef<HTMLInputElement, InputProps>( 9 + ({ className, type, ...props }, ref) => { 10 + return ( 11 + <input 12 + type={type} 13 + className={cn( 14 + "flex h-10 w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", 15 + className 16 + )} 17 + ref={ref} 18 + {...props} 19 + /> 20 + ) 21 + } 22 + ) 23 + Input.displayName = "Input" 24 + 25 + export { Input }
+6
apps/web/src/lib/utils.ts
··· 1 + import { clsx, type ClassValue } from "clsx"; 2 + import { twMerge } from "tailwind-merge"; 3 + 4 + export function cn(...inputs: ClassValue[]) { 5 + return twMerge(clsx(inputs)); 6 + }
apps/web/src/public/fonts/CalSans-SemiBold.ttf

This is a binary file and will not be displayed.

+79 -1
apps/web/src/styles/globals.css
··· 1 1 @tailwind base; 2 2 @tailwind components; 3 - @tailwind utilities; 3 + @tailwind utilities; 4 + 5 + @layer base { 6 + :root { 7 + --background: 0 0% 100%; 8 + --foreground: 222.2 47.4% 11.2%; 9 + 10 + --muted: 210 40% 96.1%; 11 + --muted-foreground: 215.4 16.3% 46.9%; 12 + 13 + --popover: 0 0% 100%; 14 + --popover-foreground: 222.2 47.4% 11.2%; 15 + 16 + --card: 0 0% 100%; 17 + --card-foreground: 222.2 47.4% 11.2%; 18 + 19 + --border: 214.3 31.8% 91.4%; 20 + --input: 214.3 31.8% 91.4%; 21 + 22 + --primary: 222.2 47.4% 11.2%; 23 + --primary-foreground: 210 40% 98%; 24 + 25 + --secondary: 210 40% 96.1%; 26 + --secondary-foreground: 222.2 47.4% 11.2%; 27 + 28 + --accent: 210 40% 96.1%; 29 + --accent-foreground: 222.2 47.4% 11.2%; 30 + 31 + --destructive: 0 100% 50%; 32 + --destructive-foreground: 210 40% 98%; 33 + 34 + --ring: 215 20.2% 65.1%; 35 + 36 + --radius: 0.5rem; 37 + } 38 + 39 + .dark { 40 + --background: 224 71% 4%; 41 + --foreground: 213 31% 91%; 42 + 43 + --muted: 223 47% 11%; 44 + --muted-foreground: 215.4 16.3% 56.9%; 45 + 46 + --popover: 224 71% 4%; 47 + --popover-foreground: 215 20.2% 65.1%; 48 + 49 + --card: 224 71% 4%; 50 + --card-foreground: 213 31% 91%; 51 + 52 + --border: 216 34% 17%; 53 + --input: 216 34% 17%; 54 + 55 + --primary: 210 40% 98%; 56 + --primary-foreground: 222.2 47.4% 1.2%; 57 + 58 + --secondary: 222.2 47.4% 11.2%; 59 + --secondary-foreground: 210 40% 98%; 60 + 61 + --accent: 216 34% 17%; 62 + --accent-foreground: 210 40% 98%; 63 + 64 + --destructive: 0 63% 31%; 65 + --destructive-foreground: 210 40% 98%; 66 + 67 + --ring: 216 34% 17%; 68 + 69 + --radius: 0.5rem; 70 + } 71 + } 72 + 73 + @layer base { 74 + * { 75 + @apply border-border; 76 + } 77 + body { 78 + @apply bg-background text-foreground; 79 + font-feature-settings: "rlig" 1, "calt" 1; 80 + } 81 + }
+72 -3
apps/web/tailwind.config.ts
··· 1 + const { fontFamily } = require("tailwindcss/defaultTheme"); 2 + 1 3 /** @type {import('tailwindcss').Config} */ 2 4 module.exports = { 3 - content: ["./src/**/*.{js,ts,jsx,tsx}"], 5 + darkMode: ["class"], 6 + content: ["src/**/*.{ts,tsx}"], 4 7 theme: { 5 - extend: {}, 8 + container: { 9 + center: true, 10 + padding: "2rem", 11 + screens: { 12 + "2xl": "1400px", 13 + }, 14 + }, 15 + extend: { 16 + colors: { 17 + border: "hsl(var(--border))", 18 + input: "hsl(var(--input))", 19 + ring: "hsl(var(--ring))", 20 + background: "hsl(var(--background))", 21 + foreground: "hsl(var(--foreground))", 22 + primary: { 23 + DEFAULT: "hsl(var(--primary))", 24 + foreground: "hsl(var(--primary-foreground))", 25 + }, 26 + secondary: { 27 + DEFAULT: "hsl(var(--secondary))", 28 + foreground: "hsl(var(--secondary-foreground))", 29 + }, 30 + destructive: { 31 + DEFAULT: "hsl(var(--destructive))", 32 + foreground: "hsl(var(--destructive-foreground))", 33 + }, 34 + muted: { 35 + DEFAULT: "hsl(var(--muted))", 36 + foreground: "hsl(var(--muted-foreground))", 37 + }, 38 + accent: { 39 + DEFAULT: "hsl(var(--accent))", 40 + foreground: "hsl(var(--accent-foreground))", 41 + }, 42 + popover: { 43 + DEFAULT: "hsl(var(--popover))", 44 + foreground: "hsl(var(--popover-foreground))", 45 + }, 46 + card: { 47 + DEFAULT: "hsl(var(--card))", 48 + foreground: "hsl(var(--card-foreground))", 49 + }, 50 + }, 51 + borderRadius: { 52 + lg: `var(--radius)`, 53 + md: `calc(var(--radius) - 2px)`, 54 + sm: "calc(var(--radius) - 4px)", 55 + }, 56 + fontFamily: { 57 + sans: ["var(--font-sans)", ...fontFamily.sans], 58 + cal: ["var(--font-calsans)"], 59 + }, 60 + keyframes: { 61 + "accordion-down": { 62 + from: { height: 0 }, 63 + to: { height: "var(--radix-accordion-content-height)" }, 64 + }, 65 + "accordion-up": { 66 + from: { height: "var(--radix-accordion-content-height)" }, 67 + to: { height: 0 }, 68 + }, 69 + }, 70 + animation: { 71 + "accordion-down": "accordion-down 0.2s ease-out", 72 + "accordion-up": "accordion-up 0.2s ease-out", 73 + }, 74 + }, 6 75 }, 7 - plugins: [], 76 + plugins: [require("tailwindcss-animate")], 8 77 };
+1 -1
apps/web/tsconfig.json
··· 3 3 "compilerOptions": { 4 4 "baseUrl": ".", 5 5 "paths": { 6 - "~/*": ["./src/*"] 6 + "@/*": ["./src/*"] 7 7 }, 8 8 "plugins": [{ "name": "next" }] 9 9 },
+84 -47
pnpm-lock.yaml
··· 66 66 '@clerk/nextjs': 67 67 specifier: ^4.21.3 68 68 version: 4.21.3(next@13.4.6)(react-dom@18.2.0)(react@18.2.0) 69 + '@radix-ui/react-slot': 70 + specifier: ^1.0.2 71 + version: 1.0.2(@types/react@18.2.12)(react@18.2.0) 69 72 '@t3-oss/env-nextjs': 70 73 specifier: ^0.4.1 71 74 version: 0.4.1(typescript@5.1.3)(zod@3.21.4) 75 + class-variance-authority: 76 + specifier: ^0.6.0 77 + version: 0.6.0(typescript@5.1.3) 78 + clsx: 79 + specifier: ^1.2.1 80 + version: 1.2.1 81 + lucide-react: 82 + specifier: ^0.244.0 83 + version: 0.244.0(react@18.2.0) 72 84 next: 73 85 specifier: 13.4.6 74 86 version: 13.4.6(react-dom@18.2.0)(react@18.2.0) ··· 78 90 react-dom: 79 91 specifier: 18.2.0 80 92 version: 18.2.0(react@18.2.0) 93 + tailwind-merge: 94 + specifier: ^1.13.2 95 + version: 1.13.2 96 + tailwindcss-animate: 97 + specifier: ^1.0.6 98 + version: 1.0.6(tailwindcss@3.3.2) 81 99 ui: 82 100 specifier: workspace:* 83 101 version: link:../../packages/ui ··· 159 177 /@alloc/quick-lru@5.2.0: 160 178 resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 161 179 engines: {node: '>=10'} 162 - dev: true 163 180 164 181 /@babel/runtime-corejs3@7.22.5: 165 182 resolution: {integrity: sha512-TNPDN6aBFaUox2Lu+H/Y1dKKQgr4ucz/FGyCz67RVYLsBpVpUFf1dDngzg+Od8aqbrqwyztkaZjtWCZEUOT8zA==} ··· 318 335 '@jridgewell/set-array': 1.1.2 319 336 '@jridgewell/sourcemap-codec': 1.4.15 320 337 '@jridgewell/trace-mapping': 0.3.9 321 - dev: true 322 338 323 339 /@jridgewell/resolve-uri@3.1.1: 324 340 resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 325 341 engines: {node: '>=6.0.0'} 326 - dev: true 327 342 328 343 /@jridgewell/set-array@1.1.2: 329 344 resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 330 345 engines: {node: '>=6.0.0'} 331 - dev: true 332 346 333 347 /@jridgewell/sourcemap-codec@1.4.15: 334 348 resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 335 - dev: true 336 349 337 350 /@jridgewell/trace-mapping@0.3.9: 338 351 resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 339 352 dependencies: 340 353 '@jridgewell/resolve-uri': 3.1.1 341 354 '@jridgewell/sourcemap-codec': 1.4.15 342 - dev: true 343 355 344 356 /@next/env@13.4.6: 345 357 resolution: {integrity: sha512-nqUxEtvDqFhmV1/awSg0K2XHNwkftNaiUqCYO9e6+MYmqNObpKVl7OgMkGaQ2SZnFx5YqF0t60ZJTlyJIDAijg==} ··· 488 500 tslib: 2.5.3 489 501 dev: false 490 502 503 + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.12)(react@18.2.0): 504 + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} 505 + peerDependencies: 506 + '@types/react': '*' 507 + react: ^16.8 || ^17.0 || ^18.0 508 + peerDependenciesMeta: 509 + '@types/react': 510 + optional: true 511 + dependencies: 512 + '@babel/runtime': 7.22.5 513 + '@types/react': 18.2.12 514 + react: 18.2.0 515 + dev: false 516 + 517 + /@radix-ui/react-slot@1.0.2(@types/react@18.2.12)(react@18.2.0): 518 + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} 519 + peerDependencies: 520 + '@types/react': '*' 521 + react: ^16.8 || ^17.0 || ^18.0 522 + peerDependenciesMeta: 523 + '@types/react': 524 + optional: true 525 + dependencies: 526 + '@babel/runtime': 7.22.5 527 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.12)(react@18.2.0) 528 + '@types/react': 18.2.12 529 + react: 18.2.0 530 + dev: false 531 + 491 532 /@rushstack/eslint-patch@1.3.2: 492 533 resolution: {integrity: sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==} 493 534 dev: false ··· 646 687 647 688 /@types/prop-types@15.7.5: 648 689 resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 649 - dev: true 650 690 651 691 /@types/qs@6.9.7: 652 692 resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} ··· 668 708 '@types/prop-types': 15.7.5 669 709 '@types/scheduler': 0.16.3 670 710 csstype: 3.1.2 671 - dev: true 672 711 673 712 /@types/scheduler@0.16.3: 674 713 resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} 675 - dev: true 676 714 677 715 /@types/send@0.17.1: 678 716 resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} ··· 815 853 816 854 /any-promise@1.3.0: 817 855 resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 818 - dev: true 819 856 820 857 /anymatch@3.1.3: 821 858 resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} ··· 823 860 dependencies: 824 861 normalize-path: 3.0.0 825 862 picomatch: 2.3.1 826 - dev: true 827 863 828 864 /arg@4.1.3: 829 865 resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} ··· 831 867 832 868 /arg@5.0.2: 833 869 resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 834 - dev: true 835 870 836 871 /argparse@2.0.1: 837 872 resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} ··· 958 993 /binary-extensions@2.2.0: 959 994 resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 960 995 engines: {node: '>=8'} 961 - dev: true 962 996 963 997 /bl@4.1.0: 964 998 resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} ··· 1052 1086 /camelcase-css@2.0.1: 1053 1087 resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 1054 1088 engines: {node: '>= 6'} 1055 - dev: true 1056 1089 1057 1090 /camelcase-keys@6.2.2: 1058 1091 resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} ··· 1127 1160 readdirp: 3.6.0 1128 1161 optionalDependencies: 1129 1162 fsevents: 2.3.2 1130 - dev: true 1163 + 1164 + /class-variance-authority@0.6.0(typescript@5.1.3): 1165 + resolution: {integrity: sha512-qdRDgfjx3GRb9fpwpSvn+YaidnT7IUJNe4wt5/SWwM+PmUwJUhQRk/8zAyNro0PmVfmen2635UboTjIBXXxy5A==} 1166 + peerDependencies: 1167 + typescript: '>= 4.5.5 < 6' 1168 + peerDependenciesMeta: 1169 + typescript: 1170 + optional: true 1171 + dependencies: 1172 + clsx: 1.2.1 1173 + typescript: 5.1.3 1174 + dev: false 1131 1175 1132 1176 /clean-stack@2.2.0: 1133 1177 resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} ··· 1160 1204 engines: {node: '>=0.8'} 1161 1205 dev: true 1162 1206 1207 + /clsx@1.2.1: 1208 + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} 1209 + engines: {node: '>=6'} 1210 + dev: false 1211 + 1163 1212 /color-convert@1.9.3: 1164 1213 resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1165 1214 dependencies: ··· 1194 1243 /commander@4.1.1: 1195 1244 resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1196 1245 engines: {node: '>= 6'} 1197 - dev: true 1198 1246 1199 1247 /concat-map@0.0.1: 1200 1248 resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} ··· 1232 1280 resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1233 1281 engines: {node: '>=4'} 1234 1282 hasBin: true 1235 - dev: true 1236 1283 1237 1284 /csstype@3.1.1: 1238 1285 resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} ··· 1240 1287 1241 1288 /csstype@3.1.2: 1242 1289 resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 1243 - dev: true 1244 1290 1245 1291 /damerau-levenshtein@1.0.8: 1246 1292 resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} ··· 1344 1390 1345 1391 /didyoumean@1.2.2: 1346 1392 resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1347 - dev: true 1348 1393 1349 1394 /diff@4.0.2: 1350 1395 resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} ··· 1359 1404 1360 1405 /dlv@1.1.3: 1361 1406 resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1362 - dev: true 1363 1407 1364 1408 /doctrine@2.1.0: 1365 1409 resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} ··· 1912 1956 engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1913 1957 os: [darwin] 1914 1958 requiresBuild: true 1915 - dev: true 1916 1959 optional: true 1917 1960 1918 1961 /function-bind@1.1.1: ··· 1985 2028 minimatch: 3.1.2 1986 2029 once: 1.4.0 1987 2030 path-is-absolute: 1.0.1 1988 - dev: true 1989 2031 1990 2032 /glob@7.1.7: 1991 2033 resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} ··· 2254 2296 engines: {node: '>=8'} 2255 2297 dependencies: 2256 2298 binary-extensions: 2.2.0 2257 - dev: true 2258 2299 2259 2300 /is-boolean-object@1.1.2: 2260 2301 resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} ··· 2436 2477 /jiti@1.18.2: 2437 2478 resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} 2438 2479 hasBin: true 2439 - dev: true 2440 2480 2441 2481 /js-cookie@3.0.1: 2442 2482 resolution: {integrity: sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==} ··· 2501 2541 /lilconfig@2.1.0: 2502 2542 resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 2503 2543 engines: {node: '>=10'} 2504 - dev: true 2505 2544 2506 2545 /lines-and-columns@1.2.4: 2507 2546 resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2508 - dev: true 2509 2547 2510 2548 /locate-path@6.0.0: 2511 2549 resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} ··· 2559 2597 dependencies: 2560 2598 yallist: 4.0.0 2561 2599 2600 + /lucide-react@0.244.0(react@18.2.0): 2601 + resolution: {integrity: sha512-PeDVbx5PlIRrVvdxiuSxPfBo7sK5qrL3LbvvRoGVNiHYRAkBm/48lKqoioxcmp0bgsyJs9lMw7CdtGFvnMJbVg==} 2602 + peerDependencies: 2603 + react: ^16.5.1 || ^17.0.0 || ^18.0.0 2604 + dependencies: 2605 + react: 18.2.0 2606 + dev: false 2607 + 2562 2608 /make-error@1.3.6: 2563 2609 resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 2564 2610 dev: true ··· 2643 2689 any-promise: 1.3.0 2644 2690 object-assign: 4.1.1 2645 2691 thenify-all: 1.6.0 2646 - dev: true 2647 2692 2648 2693 /nanoid@3.3.6: 2649 2694 resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} ··· 2741 2786 /normalize-path@3.0.0: 2742 2787 resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2743 2788 engines: {node: '>=0.10.0'} 2744 - dev: true 2745 2789 2746 2790 /normalize-range@0.1.2: 2747 2791 resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} ··· 2769 2813 /object-hash@3.0.0: 2770 2814 resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 2771 2815 engines: {node: '>= 6'} 2772 - dev: true 2773 2816 2774 2817 /object-inspect@1.12.3: 2775 2818 resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} ··· 2965 3008 /pify@2.3.0: 2966 3009 resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 2967 3010 engines: {node: '>=0.10.0'} 2968 - dev: true 2969 3011 2970 3012 /pirates@4.0.5: 2971 3013 resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} 2972 3014 engines: {node: '>= 6'} 2973 - dev: true 2974 3015 2975 3016 /postcss-import@15.1.0(postcss@8.4.24): 2976 3017 resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} ··· 2982 3023 postcss-value-parser: 4.2.0 2983 3024 read-cache: 1.0.0 2984 3025 resolve: 1.22.2 2985 - dev: true 2986 3026 2987 3027 /postcss-js@4.0.1(postcss@8.4.24): 2988 3028 resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} ··· 2992 3032 dependencies: 2993 3033 camelcase-css: 2.0.1 2994 3034 postcss: 8.4.24 2995 - dev: true 2996 3035 2997 3036 /postcss-load-config@4.0.1(postcss@8.4.24): 2998 3037 resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} ··· 3009 3048 lilconfig: 2.1.0 3010 3049 postcss: 8.4.24 3011 3050 yaml: 2.3.1 3012 - dev: true 3013 3051 3014 3052 /postcss-nested@6.0.1(postcss@8.4.24): 3015 3053 resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} ··· 3019 3057 dependencies: 3020 3058 postcss: 8.4.24 3021 3059 postcss-selector-parser: 6.0.13 3022 - dev: true 3023 3060 3024 3061 /postcss-selector-parser@6.0.13: 3025 3062 resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} ··· 3027 3064 dependencies: 3028 3065 cssesc: 3.0.0 3029 3066 util-deprecate: 1.0.2 3030 - dev: true 3031 3067 3032 3068 /postcss-value-parser@4.2.0: 3033 3069 resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 3034 - dev: true 3035 3070 3036 3071 /postcss@8.4.14: 3037 3072 resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} ··· 3049 3084 nanoid: 3.3.6 3050 3085 picocolors: 1.0.0 3051 3086 source-map-js: 1.0.2 3052 - dev: true 3053 3087 3054 3088 /prelude-ls@1.2.1: 3055 3089 resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} ··· 3126 3160 resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 3127 3161 dependencies: 3128 3162 pify: 2.3.0 3129 - dev: true 3130 3163 3131 3164 /readable-stream@3.6.2: 3132 3165 resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} ··· 3142 3175 engines: {node: '>=8.10.0'} 3143 3176 dependencies: 3144 3177 picomatch: 2.3.1 3145 - dev: true 3146 3178 3147 3179 /regenerator-runtime@0.13.11: 3148 3180 resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} ··· 3470 3502 mz: 2.7.0 3471 3503 pirates: 4.0.5 3472 3504 ts-interface-checker: 0.1.13 3473 - dev: true 3474 3505 3475 3506 /supports-color@5.5.0: 3476 3507 resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} ··· 3512 3543 tslib: 2.5.3 3513 3544 dev: false 3514 3545 3546 + /tailwind-merge@1.13.2: 3547 + resolution: {integrity: sha512-R2/nULkdg1VR/EL4RXg4dEohdoxNUJGLMnWIQnPKL+O9Twu7Cn3Rxi4dlXkDzZrEGtR+G+psSXFouWlpTyLhCQ==} 3548 + dev: false 3549 + 3550 + /tailwindcss-animate@1.0.6(tailwindcss@3.3.2): 3551 + resolution: {integrity: sha512-4WigSGMvbl3gCCact62ZvOngA+PRqhAn7si3TQ3/ZuPuQZcIEtVap+ENSXbzWhpojKB8CpvnIsrwBu8/RnHtuw==} 3552 + peerDependencies: 3553 + tailwindcss: '>=3.0.0 || insiders' 3554 + dependencies: 3555 + tailwindcss: 3.3.2 3556 + dev: false 3557 + 3515 3558 /tailwindcss@3.3.2: 3516 3559 resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} 3517 3560 engines: {node: '>=14.0.0'} ··· 3542 3585 sucrase: 3.32.0 3543 3586 transitivePeerDependencies: 3544 3587 - ts-node 3545 - dev: true 3546 3588 3547 3589 /tapable@2.2.1: 3548 3590 resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} ··· 3557 3599 engines: {node: '>=0.8'} 3558 3600 dependencies: 3559 3601 thenify: 3.3.1 3560 - dev: true 3561 3602 3562 3603 /thenify@3.3.1: 3563 3604 resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 3564 3605 dependencies: 3565 3606 any-promise: 1.3.0 3566 - dev: true 3567 3607 3568 3608 /through@2.3.8: 3569 3609 resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} ··· 3612 3652 3613 3653 /ts-interface-checker@0.1.13: 3614 3654 resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 3615 - dev: true 3616 3655 3617 3656 /ts-node@10.9.1(@types/node@20.3.1)(typescript@5.1.3): 3618 3657 resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} ··· 3830 3869 3831 3870 /util-deprecate@1.0.2: 3832 3871 resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3833 - dev: true 3834 3872 3835 3873 /v8-compile-cache-lib@3.0.1: 3836 3874 resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} ··· 3922 3960 /yaml@2.3.1: 3923 3961 resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} 3924 3962 engines: {node: '>= 14'} 3925 - dev: true 3926 3963 3927 3964 /yn@3.1.1: 3928 3965 resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}