From 6801a264ce0e61019c7fead2831b8b3eb74fcc4b Mon Sep 17 00:00:00 2001 From: "Roe, Elliot Benjamin" Date: Sat, 11 Nov 2023 12:33:09 -0500 Subject: [PATCH 1/4] Add new icons, button component, and global styles --- app/favicon.ico | Bin 25931 -> 15406 bytes app/globals.css | 91 ++++++++++--- app/page.tsx | 117 ++--------------- components.json | 16 +++ components/ui/button.tsx | 56 ++++++++ lib/utils.ts | 6 + package-lock.json | 211 +++++++++++++++--------------- package.json | 14 +- public/android-chrome-192x192.png | Bin 0 -> 13324 bytes public/android-chrome-512x512.png | Bin 0 -> 52566 bytes public/apple-touch-icon.png | Bin 0 -> 11891 bytes public/favicon-16x16.png | Bin 0 -> 571 bytes public/favicon-32x32.png | Bin 0 -> 1258 bytes public/logo-background.svg | 41 ++++++ public/logo.svg | 30 +++++ public/site.webmanifest | 1 + tailwind.config.ts | 84 ++++++++++-- 17 files changed, 420 insertions(+), 247 deletions(-) create mode 100644 components.json create mode 100644 components/ui/button.tsx create mode 100644 lib/utils.ts create mode 100644 public/android-chrome-192x192.png create mode 100644 public/android-chrome-512x512.png create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon-16x16.png create mode 100644 public/favicon-32x32.png create mode 100644 public/logo-background.svg create mode 100644 public/logo.svg create mode 100644 public/site.webmanifest diff --git a/app/favicon.ico b/app/favicon.ico index 718d6fea4835ec2d246af9800eddb7ffb276240c..38f3b7fc2f3a0b76666f91e2de054d9cf082579d 100644 GIT binary patch literal 15406 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 LrJugUA?W`A8`#=m diff --git a/app/globals.css b/app/globals.css index fd81e88..e54234f 100644 --- a/app/globals.css +++ b/app/globals.css @@ -1,27 +1,76 @@ @tailwind base; @tailwind components; @tailwind utilities; - -:root { - --foreground-rgb: 0, 0, 0; - --background-start-rgb: 214, 219, 220; - --background-end-rgb: 255, 255, 255; -} - -@media (prefers-color-scheme: dark) { + +@layer base { :root { - --foreground-rgb: 255, 255, 255; - --background-start-rgb: 0, 0, 0; - --background-end-rgb: 0, 0, 0; + --background: #ffffff; + --foreground: #BDD3DE; + + --card: #ffffff; + --card-foreground: #BDD3DE; + + --popover: #ffffff; + --popover-foreground: #BDD3DE; + + --primary: #BDD3DE; + --primary-foreground: #2B3A42; + + --secondary: #3F5866; + --secondary-foreground: #BDD3DE; + + --muted: #3F5866; + --muted-foreground: #d7b94b; + + --accent: #FF9000; + --accent-foreground: #BDD3DE; + + --destructive: #ff6c47; + --destructive-foreground: #2B3A42; + + --border: #e9ebf6; + --input: #e9ebf6; + --ring: #BDD3DE; + + --radius: 0.5rem; + } + + .dark { + --background: #BDD3DE; + --foreground: #3F5866; + + --card: #BDD3DE; + --card-foreground: #3F5866; + + --popover: #BDD3DE; + --popover-foreground: #3F5866; + + --primary: #3F5866; + --primary-foreground: #BDD3DE; + + --secondary: #dbe5f0; + --secondary-foreground: #3F5866; + + --muted: #dbe5f0; + --muted-foreground: #d780a6; + + --accent: #dbe5f0; + --accent-foreground: #3F5866; + + --destructive: #ff9e4f; + --destructive-foreground: #3F5866; + + --border: #dbe5f0; + --input: #dbe5f0; + --ring: #d652a8; } } - -body { - color: rgb(var(--foreground-rgb)); - background: linear-gradient( - to bottom, - transparent, - rgb(var(--background-end-rgb)) - ) - rgb(var(--background-start-rgb)); -} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} \ No newline at end of file diff --git a/app/page.tsx b/app/page.tsx index 7a8286b..13b2a12 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -2,112 +2,17 @@ import Image from 'next/image' export default function Home() { return ( -
-
-

- Get started by editing  - app/page.tsx -

- -
- -
- Next.js Logo -
- - +
+ Prompt Ed logo +

+ Prompt Ed Coming Soon 🚀 +

) } diff --git a/components.json b/components.json new file mode 100644 index 0000000..379cd70 --- /dev/null +++ b/components.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "app/globals.css", + "baseColor": "slate", + "cssVariables": true + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils" + } +} \ No newline at end of file diff --git a/components/ui/button.tsx b/components/ui/button.tsx new file mode 100644 index 0000000..ac8e0c9 --- /dev/null +++ b/components/ui/button.tsx @@ -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 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, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/lib/utils.ts b/lib/utils.ts new file mode 100644 index 0000000..ec79801 --- /dev/null +++ b/lib/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/package-lock.json b/package-lock.json index 6055a30..f14774f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,15 @@ "name": "nextjs", "version": "0.1.0", "dependencies": { + "@radix-ui/react-slot": "^1.0.2", + "class-variance-authority": "^0.7.0", + "clsx": "^2.0.0", + "lucide-react": "^0.292.0", "next": "14.0.0", "react": "^18", - "react-dom": "^18" + "react-dom": "^18", + "tailwind-merge": "^2.0.0", + "tailwindcss-animate": "^1.0.7" }, "devDependencies": { "@types/node": "^20", @@ -37,7 +43,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, "engines": { "node": ">=10" }, @@ -49,7 +54,6 @@ "version": "7.23.2", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", - "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -150,7 +154,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -164,7 +167,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -173,7 +175,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -181,14 +182,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.20", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -347,7 +346,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -360,7 +358,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -369,7 +366,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -378,6 +374,41 @@ "node": ">= 8" } }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@rushstack/eslint-patch": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz", @@ -411,13 +442,13 @@ "version": "15.7.9", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.9.tgz", "integrity": "sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==", - "dev": true + "devOptional": true }, "node_modules/@types/react": { "version": "18.2.33", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.33.tgz", "integrity": "sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg==", - "dev": true, + "devOptional": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -437,7 +468,7 @@ "version": "0.16.5", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.5.tgz", "integrity": "sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==", - "dev": true + "devOptional": true }, "node_modules/@typescript-eslint/parser": { "version": "6.9.0", @@ -611,14 +642,12 @@ "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -630,8 +659,7 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, "node_modules/argparse": { "version": "2.0.1", @@ -863,14 +891,12 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, "engines": { "node": ">=8" } @@ -879,7 +905,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -889,7 +914,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -967,7 +991,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, "engines": { "node": ">= 6" } @@ -1011,7 +1034,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "funding": [ { "type": "individual", @@ -1038,7 +1060,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -1046,11 +1067,30 @@ "node": ">= 6" } }, + "node_modules/class-variance-authority": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", + "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "dependencies": { + "clsx": "2.0.0" + }, + "funding": { + "url": "https://joebell.co.uk" + } + }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, + "node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1073,7 +1113,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, "engines": { "node": ">= 6" } @@ -1081,8 +1120,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -1102,7 +1140,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "bin": { "cssesc": "bin/cssesc" }, @@ -1114,7 +1151,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true + "devOptional": true }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -1188,8 +1225,7 @@ "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, "node_modules/dir-glob": { "version": "3.0.1", @@ -1206,8 +1242,7 @@ "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, "node_modules/doctrine": { "version": "3.0.0", @@ -1811,7 +1846,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1827,7 +1861,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -1851,7 +1884,6 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -1872,7 +1904,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1941,14 +1972,12 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -1962,7 +1991,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2061,7 +2089,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -2229,7 +2256,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -2275,7 +2301,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -2284,8 +2309,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/internal-slot": { "version": "1.0.6", @@ -2346,7 +2370,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -2386,7 +2409,6 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, "dependencies": { "hasown": "^2.0.0" }, @@ -2413,7 +2435,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2449,7 +2470,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -2482,7 +2502,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -2656,7 +2675,6 @@ "version": "1.20.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", - "dev": true, "bin": { "jiti": "bin/jiti.js" } @@ -2764,7 +2782,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, "engines": { "node": ">=10" } @@ -2772,8 +2789,7 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/locate-path": { "version": "6.0.0", @@ -2819,11 +2835,18 @@ "node": ">=10" } }, + "node_modules/lucide-react": { + "version": "0.292.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.292.0.tgz", + "integrity": "sha512-rRgUkpEHWpa5VCT66YscInCQmQuPCB1RFRzkkxMxg4b+jaL0V12E3riWWR2Sh5OIiUhCwGW/ZExuEO4Az32E6Q==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -2832,7 +2855,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -2845,7 +2867,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2872,7 +2893,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -2957,7 +2977,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2975,7 +2994,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2984,7 +3002,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, "engines": { "node": ">= 6" } @@ -3102,7 +3119,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -3179,7 +3195,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3196,8 +3211,7 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-type": { "version": "4.0.0", @@ -3217,7 +3231,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -3229,7 +3242,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3238,7 +3250,6 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, "engines": { "node": ">= 6" } @@ -3274,7 +3285,6 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -3291,7 +3301,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, "dependencies": { "camelcase-css": "^2.0.1" }, @@ -3310,7 +3319,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", - "dev": true, "dependencies": { "lilconfig": "^2.0.5", "yaml": "^2.1.1" @@ -3339,7 +3347,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.11" }, @@ -3358,7 +3365,6 @@ "version": "6.0.13", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3370,8 +3376,7 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -3406,7 +3411,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -3455,7 +3459,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, "dependencies": { "pify": "^2.3.0" } @@ -3464,7 +3467,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -3495,8 +3497,7 @@ "node_modules/regenerator-runtime": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "dev": true + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", @@ -3519,7 +3520,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -3554,7 +3554,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -3579,7 +3578,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -3866,7 +3864,6 @@ "version": "3.34.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -3888,7 +3885,6 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3920,7 +3916,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -3928,11 +3923,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tailwind-merge": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.0.0.tgz", + "integrity": "sha512-WO8qghn9yhsldLSg80au+3/gY9E4hFxIvQ3qOmlpXnqpDKoMruKfi/56BbbMg6fHTQJ9QD3cc79PoWqlaQE4rw==", + "dependencies": { + "@babel/runtime": "^7.23.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, "node_modules/tailwindcss": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.5.tgz", "integrity": "sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==", - "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -3965,6 +3971,14 @@ "node": ">=14.0.0" } }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -3984,7 +3998,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, "dependencies": { "any-promise": "^1.0.0" } @@ -3993,7 +4006,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -4005,7 +4017,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -4028,8 +4039,7 @@ "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, "node_modules/tsconfig-paths": { "version": "3.14.2", @@ -4213,8 +4223,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/watchpack": { "version": "2.4.0", @@ -4322,8 +4331,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/yallist": { "version": "4.0.0", @@ -4335,7 +4343,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", - "dev": true, "engines": { "node": ">= 14" } diff --git a/package.json b/package.json index a7eea1d..cc831ec 100644 --- a/package.json +++ b/package.json @@ -9,19 +9,25 @@ "lint": "next lint" }, "dependencies": { + "@radix-ui/react-slot": "^1.0.2", + "class-variance-authority": "^0.7.0", + "clsx": "^2.0.0", + "lucide-react": "^0.292.0", + "next": "14.0.0", "react": "^18", "react-dom": "^18", - "next": "14.0.0" + "tailwind-merge": "^2.0.0", + "tailwindcss-animate": "^1.0.7" }, "devDependencies": { - "typescript": "^5", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", "autoprefixer": "^10", + "eslint": "^8", + "eslint-config-next": "14.0.0", "postcss": "^8", "tailwindcss": "^3", - "eslint": "^8", - "eslint-config-next": "14.0.0" + "typescript": "^5" } } diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..168ff3c7c3348a42308d21405976f1ce720f862a GIT binary patch literal 13324 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

_Gai+mm6Az*eLxE;c$2L1Shgfx6< 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 literal 0 HcmV?d00001 diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba89c37ad5b26fb7db5c07890daf2e23393be7b GIT binary patch literal 11891 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 JPDHLkV1ium6Tbie literal 0 HcmV?d00001 diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..e86df01bb374bd3c905811b951090ee0dde304a3 GIT binary patch literal 1258 zcmVPx(q)9|UR9HvFmw!xKRTRg+_m#f>;*}06jDl?CREZtOms!c+}U`;r^n6#oO)V^o2qH;)IiB86SUk0AB9|s4PSDdSJ8&;Eg7& zKtQPc$bW=u2OeF$KV(Isb*!R&V?6k9C36nlAjFx!tM)Q9LP!tUY19ohG z2{v280)!gC@Q51+zqpYW;ZO*{fDZvw01*ufT62b(Rk!bCM1QX zF%|Gb&l_M87RaNK$g{Hu`o@&PfZk{VZ!&{$I;N7kdNp2od0Pw-INZn#%twIJ=@4&A ziYWq8Fu(vLR-OPM9E)D&x_qo%n}JPr8>0hwJRW>{;Lwd6kR(j{y-Yz^We15=*SDZm zR+i(z>MC?Qo%p5w4BR8bZ1>gI-#}q;$!&*FO~PO>h`syvgUS@LJd1#Lj47GotKK0%ha#LyhdZRaQ`(KzN4r4mj)e2$SMA~zlH<@QK8vg;-(!6t zmK8AqitA`7`7!ts9{3*t&hAE;*aS1L?xUypAUyVkn@)>lnGv8!Zh0DoaXk_3jyN`>KkoxA zzc=@n1;Ba!KuPCQuo>lu4rI=NbLHP4AS`LUsyfR8uypK39lt^!%H|g%a22}7HZ1I48V&6NY-E;Yl{ zwhN`{03WAm7Xx{FaLut*Q&9C$s;0&HufX{2Mr7I~q*yiV5&~z%_Yj5r=oK*cC{=xy zt6sxxyI>t^Mp4?_NEN|+(2|AD^(R3|grQ_XuRZ3$gf)&yH~8jfkZEwk5#@R4%H4zE zH0|)S!DP9k8RzMN{_+nb1M42DWl#|`n;dK6U+^zBaUo~3& U7AfogO8@`>07*qoM6N<$g6j@h5C8xG literal 0 HcmV?d00001 diff --git a/public/logo-background.svg b/public/logo-background.svg new file mode 100644 index 0000000..c450864 --- /dev/null +++ b/public/logo-background.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/logo.svg b/public/logo.svg new file mode 100644 index 0000000..de2a04a --- /dev/null +++ b/public/logo.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/site.webmanifest b/public/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/public/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/tailwind.config.ts b/tailwind.config.ts index c7ead80..afe48c2 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -1,20 +1,76 @@ -import type { Config } from 'tailwindcss' - -const config: Config = { +/** @type {import('tailwindcss').Config} */ +module.exports = { + darkMode: ["class"], content: [ - './pages/**/*.{js,ts,jsx,tsx,mdx}', - './components/**/*.{js,ts,jsx,tsx,mdx}', - './app/**/*.{js,ts,jsx,tsx,mdx}', - ], + './pages/**/*.{ts,tsx}', + './components/**/*.{ts,tsx}', + './app/**/*.{ts,tsx}', + './src/**/*.{ts,tsx}', + ], theme: { + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, + }, extend: { - backgroundImage: { - 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', - 'gradient-conic': - 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', + colors: { + border: "var(--border)", + input: "var(--input)", + ring: "var(--ring)", + background: "var(--background)", + foreground: "var(--foreground)", + primary: { + DEFAULT: "var(--primary)", + foreground: "var(--primary-foreground)", + }, + secondary: { + DEFAULT: "var(--secondary)", + foreground: "var(--secondary-foreground)", + }, + destructive: { + DEFAULT: "var(--destructive)", + foreground: "var(--destructive-foreground)", + }, + muted: { + DEFAULT: "var(--muted)", + foreground: "var(--muted-foreground)", + }, + accent: { + DEFAULT: "var(--accent)", + foreground: "var(--accent-foreground)", + }, + popover: { + DEFAULT: "var(--popover)", + foreground: "var(--popover-foreground)", + }, + card: { + DEFAULT: "var(--card)", + foreground: "var(--card-foreground)", + }, + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, + keyframes: { + "accordion-down": { + from: { height: 0 }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: 0 }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", }, }, }, - plugins: [], -} -export default config + plugins: [require("tailwindcss-animate")], +} \ No newline at end of file From e19e9dfe6a4a1302acde763c996a9cec577b6ff0 Mon Sep 17 00:00:00 2001 From: "Roe, Elliot Benjamin" Date: Sat, 11 Nov 2023 14:04:09 -0500 Subject: [PATCH 2/4] Created buildable and drag and drop prompt box --- app/globals.css | 8 +-- app/layout.tsx | 11 ++-- app/page.tsx | 21 +++----- app/providers.tsx | 17 ++++++ components/buildable.tsx | 108 ++++++++++++++++++++++++++++++++++++++ components/prompt-box.tsx | 71 +++++++++++++++++++++++++ components/ui/input.tsx | 25 +++++++++ package-lock.json | 96 ++++++++++++++++++++++++++++++--- package.json | 3 ++ 9 files changed, 334 insertions(+), 26 deletions(-) create mode 100644 app/providers.tsx create mode 100644 components/buildable.tsx create mode 100644 components/prompt-box.tsx create mode 100644 components/ui/input.tsx diff --git a/app/globals.css b/app/globals.css index e54234f..cb3ae6d 100644 --- a/app/globals.css +++ b/app/globals.css @@ -4,8 +4,8 @@ @layer base { :root { - --background: #ffffff; - --foreground: #BDD3DE; + --background: #F0F0DF; + --foreground: #2B3A42; --card: #ffffff; --card-foreground: #BDD3DE; @@ -28,8 +28,8 @@ --destructive: #ff6c47; --destructive-foreground: #2B3A42; - --border: #e9ebf6; - --input: #e9ebf6; + --border: #BDD3DE; + --input: #BDD3DE; --ring: #BDD3DE; --radius: 0.5rem; diff --git a/app/layout.tsx b/app/layout.tsx index 40e027f..b4ea59c 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,12 +1,13 @@ import type { Metadata } from 'next' +import Providers from './providers' import { Inter } from 'next/font/google' import './globals.css' const inter = Inter({ subsets: ['latin'] }) export const metadata: Metadata = { - title: 'Create Next App', - description: 'Generated by create next app', + title: 'Prompt Ed', + description: 'A game to learn how to engineer prompts', } export default function RootLayout({ @@ -16,7 +17,11 @@ export default function RootLayout({ }) { return ( - {children} + + + {children} + + ) } diff --git a/app/page.tsx b/app/page.tsx index 13b2a12..ff8da07 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,18 +1,13 @@ -import Image from 'next/image' +import { PromptBox } from "@/components/prompt-box" +import { Input } from "@/components/ui/input" export default function Home() { return ( -

- Prompt Ed logo -

- Prompt Ed Coming Soon 🚀 -

+
+ +
Hello 1
+
Hello 2
+
) -} +} \ No newline at end of file diff --git a/app/providers.tsx b/app/providers.tsx new file mode 100644 index 0000000..37d46b1 --- /dev/null +++ b/app/providers.tsx @@ -0,0 +1,17 @@ +'use client' + +import { DndProvider } from 'react-dnd' +import { HTML5Backend } from 'react-dnd-html5-backend' + +import React, { useState } from 'react' + +type ProvidersProps = { + children: React.ReactNode, +} + +export default function Providers({ children }: ProvidersProps) { + + return ( + {children} + ) +} \ No newline at end of file diff --git a/components/buildable.tsx b/components/buildable.tsx new file mode 100644 index 0000000..706b12a --- /dev/null +++ b/components/buildable.tsx @@ -0,0 +1,108 @@ +// Configured Drag and drop wrapper +import type { Identifier, XYCoord } from 'dnd-core' +import type { FC } from 'react' +import React, { useRef } from 'react' +import { useDrag, useDrop } from 'react-dnd' + +export type BuildableType = 'free_input' | 'tag' + +export const BuildableTypes: { [key: string]: BuildableType } = { + FREE_INPUT: 'free_input', + TAG: 'tag', + } + +export interface BuildableProps { + id: any, + index: number, + type: BuildableType, + moveCard: (dragIndex: number, hoverIndex: number) => void + children?: React.ReactNode +} + +interface DragItem { + index: number + id: string + type: string +} + +export const Buildable: FC = ({ id, type, index, moveCard, children }) => { + const ref = useRef(null) + const [{ handlerId }, drop] = useDrop< + DragItem, + void, + { handlerId: Identifier | null } + >({ + accept: type, + collect(monitor) { + return { + handlerId: monitor.getHandlerId(), + } + }, + hover(item: DragItem, monitor) { + if (!ref.current) { + return + } + const dragIndex = item.index + const hoverIndex = index + + // Don't replace items with themselves + if (dragIndex === hoverIndex) { + return + } + + // Determine rectangle on screen + const hoverBoundingRect = ref.current?.getBoundingClientRect() + + // Get vertical middle + const hoverMiddleY = + (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2 + + // Determine mouse position + const clientOffset = monitor.getClientOffset() + + // Get pixels to the top + const hoverClientX = (clientOffset as XYCoord).x - hoverBoundingRect.left + + // Only perform the move when the mouse has crossed half of the items height + // When dragging downwards, only move when the cursor is below 50% + // When dragging upwards, only move when the cursor is above 50% + + // Dragging downwards + if (dragIndex < hoverIndex && hoverClientX < hoverMiddleY) { + return + } + + // Dragging upwards + if (dragIndex > hoverIndex && hoverClientX > hoverMiddleY) { + return + } + + // Time to actually perform the action + moveCard(dragIndex, hoverIndex) + + // Note: we're mutating the monitor item here! + // Generally it's better to avoid mutations, + // but it's good here for the sake of performance + // to avoid expensive index searches. + item.index = hoverIndex + }, + }) + + const [{ isDragging }, drag] = useDrag({ + type: type, + item: () => { + return { id, index } + }, + collect: (monitor: any) => ({ + isDragging: monitor.isDragging(), + }), + }) + + const opacity = isDragging ? 0 : 1 + drag(drop(ref)) + return ( +
+ {children} +
+ ) +} diff --git a/components/prompt-box.tsx b/components/prompt-box.tsx new file mode 100644 index 0000000..63801b7 --- /dev/null +++ b/components/prompt-box.tsx @@ -0,0 +1,71 @@ +"use client" + +import update from 'immutability-helper' +import type { FC } from 'react' +import React, { useCallback, useState } from 'react' + +import { Buildable, BuildableType, BuildableTypes } from './buildable' + +export interface BuildableElement { + id: number + component: React.ReactNode +} + +export interface PromtBoxState { + buildables: BuildableElement[] +} + +type PromptBoxProps = { + className?: string + children?: React.ReactNode[] | React.ReactNode +} + + +export const PromptBox: FC = ({ className, children }) => { + //Validate children prop + const childrenArray = React.Children.toArray(children) + + // Convert children to buildables + const [buildables, setBuildables] = useState( + childrenArray.map((child, index) => { + return { + id: index, + component: child, + } + } + )) + + const moveBuildable = useCallback((dragIndex: number, hoverIndex: number) => { + setBuildables((prevBuildables: BuildableElement[]) => + update(prevBuildables, { + $splice: [ + [dragIndex, 1], + [hoverIndex, 0, prevBuildables[dragIndex] as BuildableElement], + ], + }), + ) + }, []) + + const renderBuildable = useCallback( + (buildableComponent: BuildableElement, index: number) => { + return ( + + {buildableComponent.component} + + ) + }, + [], + ) + + return ( + <> +
{buildables.map((card, i) => renderBuildable(card, i))}
+ + ) +} diff --git a/components/ui/input.tsx b/components/ui/input.tsx new file mode 100644 index 0000000..677d05f --- /dev/null +++ b/components/ui/input.tsx @@ -0,0 +1,25 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +export interface InputProps + extends React.InputHTMLAttributes {} + +const Input = React.forwardRef( + ({ className, type, ...props }, ref) => { + return ( + + ) + } +) +Input.displayName = "Input" + +export { Input } diff --git a/package-lock.json b/package-lock.json index f14774f..111d2a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,9 +11,12 @@ "@radix-ui/react-slot": "^1.0.2", "class-variance-authority": "^0.7.0", "clsx": "^2.0.0", + "immutability-helper": "^3.1.1", "lucide-react": "^0.292.0", "next": "14.0.0", "react": "^18", + "react-dnd": "^16.0.1", + "react-dnd-html5-backend": "^16.0.1", "react-dom": "^18", "tailwind-merge": "^2.0.0", "tailwindcss-animate": "^1.0.7" @@ -409,6 +412,21 @@ } } }, + "node_modules/@react-dnd/asap": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-5.0.2.tgz", + "integrity": "sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==" + }, + "node_modules/@react-dnd/invariant": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-4.0.2.tgz", + "integrity": "sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==" + }, + "node_modules/@react-dnd/shallowequal": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-4.0.2.tgz", + "integrity": "sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==" + }, "node_modules/@rushstack/eslint-patch": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz", @@ -433,7 +451,7 @@ "version": "20.8.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.9.tgz", "integrity": "sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg==", - "dev": true, + "devOptional": true, "dependencies": { "undici-types": "~5.26.4" } @@ -1244,6 +1262,16 @@ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, + "node_modules/dnd-core": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-16.0.1.tgz", + "integrity": "sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==", + "dependencies": { + "@react-dnd/asap": "^5.0.1", + "@react-dnd/invariant": "^4.0.1", + "redux": "^4.2.0" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -1839,8 +1867,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { "version": "3.3.1", @@ -2263,6 +2290,14 @@ "node": ">= 0.4" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, "node_modules/ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", @@ -2272,6 +2307,11 @@ "node": ">= 4" } }, + "node_modules/immutability-helper": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-3.1.1.tgz", + "integrity": "sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ==" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -3437,6 +3477,43 @@ "node": ">=0.10.0" } }, + "node_modules/react-dnd": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-16.0.1.tgz", + "integrity": "sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==", + "dependencies": { + "@react-dnd/invariant": "^4.0.1", + "@react-dnd/shallowequal": "^4.0.1", + "dnd-core": "^16.0.1", + "fast-deep-equal": "^3.1.3", + "hoist-non-react-statics": "^3.3.2" + }, + "peerDependencies": { + "@types/hoist-non-react-statics": ">= 3.3.1", + "@types/node": ">= 12", + "@types/react": ">= 16", + "react": ">= 16.14" + }, + "peerDependenciesMeta": { + "@types/hoist-non-react-statics": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-dnd-html5-backend": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-16.0.1.tgz", + "integrity": "sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==", + "dependencies": { + "dnd-core": "^16.0.1" + } + }, "node_modules/react-dom": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", @@ -3452,8 +3529,7 @@ "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/read-cache": { "version": "1.0.0", @@ -3474,6 +3550,14 @@ "node": ">=8.10.0" } }, + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dependencies": { + "@babel/runtime": "^7.9.2" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", @@ -4179,7 +4263,7 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "devOptional": true }, "node_modules/update-browserslist-db": { "version": "1.0.13", diff --git a/package.json b/package.json index cc831ec..5f2cb4c 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,12 @@ "@radix-ui/react-slot": "^1.0.2", "class-variance-authority": "^0.7.0", "clsx": "^2.0.0", + "immutability-helper": "^3.1.1", "lucide-react": "^0.292.0", "next": "14.0.0", "react": "^18", + "react-dnd": "^16.0.1", + "react-dnd-html5-backend": "^16.0.1", "react-dom": "^18", "tailwind-merge": "^2.0.0", "tailwindcss-animate": "^1.0.7" From 7d41c0271121d805c74d27c055555f36e6ef25af Mon Sep 17 00:00:00 2001 From: "Roe, Elliot Benjamin" Date: Sat, 11 Nov 2023 15:15:34 -0500 Subject: [PATCH 3/4] Added new buildable components and prompt bar nice --- app/globals.css | 6 +- app/page.tsx | 30 +- components/dragable-input.tsx | 14 + components/dragable-tag.tsx | 32 ++ components/ui/button.tsx | 1 + components/ui/select.tsx | 121 +++++++ package-lock.json | 647 +++++++++++++++++++++++++++++++++- package.json | 2 + 8 files changed, 843 insertions(+), 10 deletions(-) create mode 100644 components/dragable-input.tsx create mode 100644 components/dragable-tag.tsx create mode 100644 components/ui/select.tsx diff --git a/app/globals.css b/app/globals.css index cb3ae6d..0cf72ba 100644 --- a/app/globals.css +++ b/app/globals.css @@ -11,7 +11,7 @@ --card-foreground: #BDD3DE; --popover: #ffffff; - --popover-foreground: #BDD3DE; + --popover-foreground: #2B3A42; --primary: #BDD3DE; --primary-foreground: #2B3A42; @@ -23,12 +23,12 @@ --muted-foreground: #d7b94b; --accent: #FF9000; - --accent-foreground: #BDD3DE; + --accent-foreground: #2B3A42; --destructive: #ff6c47; --destructive-foreground: #2B3A42; - --border: #BDD3DE; + --border: #2B3A42; --input: #BDD3DE; --ring: #BDD3DE; diff --git a/app/page.tsx b/app/page.tsx index ff8da07..5aae685 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,13 +1,31 @@ +import { DragableInput } from "@/components/dragable-input" +import { DragableTag } from "@/components/dragable-tag" import { PromptBox } from "@/components/prompt-box" -import { Input } from "@/components/ui/input" +import { Button } from "@/components/ui/button" +import { LightningBoltIcon } from "@radix-ui/react-icons" +import Image from "next/image" export default function Home() { return ( -
- -
Hello 1
-
Hello 2
-
+
+

Let's build something awesome!

+
+ Logo + + + + + +
) } \ No newline at end of file diff --git a/components/dragable-input.tsx b/components/dragable-input.tsx new file mode 100644 index 0000000..c4e2dfa --- /dev/null +++ b/components/dragable-input.tsx @@ -0,0 +1,14 @@ +import { FC } from "react" +import { Input } from "./ui/input" +import { DragHandleDots2Icon } from '@radix-ui/react-icons' + +type DragableInputProps = { +} + +export const DragableInput: FC = ({ }) => { + const size = 20 + return
+ + +
+} \ No newline at end of file diff --git a/components/dragable-tag.tsx b/components/dragable-tag.tsx new file mode 100644 index 0000000..2a9f949 --- /dev/null +++ b/components/dragable-tag.tsx @@ -0,0 +1,32 @@ +import { FC } from "react" +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, + } from "@/components/ui/select" + +import { DragHandleDots2Icon } from '@radix-ui/react-icons' + +type DragableTagProps = { + placeholder?: string + selectOptions: string[] +} + +export const DragableTag: FC = ({ placeholder, selectOptions }) => { + const size = 20 + return
+ + +
+} \ No newline at end of file diff --git a/components/ui/button.tsx b/components/ui/button.tsx index ac8e0c9..27ec398 100644 --- a/components/ui/button.tsx +++ b/components/ui/button.tsx @@ -10,6 +10,7 @@ const buttonVariants = cva( variants: { variant: { default: "bg-primary text-primary-foreground hover:bg-primary/90", + accent: "bg-accent text-primary-foreground hover:bg-primary/90", destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90", outline: diff --git a/components/ui/select.tsx b/components/ui/select.tsx new file mode 100644 index 0000000..dabb6e4 --- /dev/null +++ b/components/ui/select.tsx @@ -0,0 +1,121 @@ +"use client" + +import * as React from "react" +import * as SelectPrimitive from "@radix-ui/react-select" +import { Check, ChevronDown } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Select = SelectPrimitive.Root + +const SelectGroup = SelectPrimitive.Group + +const SelectValue = SelectPrimitive.Value + +const SelectTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + {children} + + + + +)) +SelectTrigger.displayName = SelectPrimitive.Trigger.displayName + +const SelectContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, position = "popper", ...props }, ref) => ( + + + + {children} + + + +)) +SelectContent.displayName = SelectPrimitive.Content.displayName + +const SelectLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SelectLabel.displayName = SelectPrimitive.Label.displayName + +const SelectItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + + {children} + +)) +SelectItem.displayName = SelectPrimitive.Item.displayName + +const SelectSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SelectSeparator.displayName = SelectPrimitive.Separator.displayName + +export { + Select, + SelectGroup, + SelectValue, + SelectTrigger, + SelectContent, + SelectLabel, + SelectItem, + SelectSeparator, +} diff --git a/package-lock.json b/package-lock.json index 111d2a3..b87a761 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,8 @@ "name": "nextjs", "version": "0.1.0", "dependencies": { + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-slot": "^1.0.2", "class-variance-authority": "^0.7.0", "clsx": "^2.0.0", @@ -120,6 +122,40 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz", + "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==", + "dependencies": { + "@floating-ui/dom": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.13", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", @@ -377,6 +413,71 @@ "node": ">= 8" } }, + "node_modules/@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-compose-refs": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", @@ -394,6 +495,256 @@ } } }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", + "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", + "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", + "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-icons": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", + "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x" + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", + "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", + "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.0.0.tgz", + "integrity": "sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.5", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.4", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.3", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-slot": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", @@ -412,6 +763,160 @@ } } }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, "node_modules/@react-dnd/asap": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-5.0.2.tgz", @@ -477,7 +982,7 @@ "version": "18.2.14", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.14.tgz", "integrity": "sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==", - "dev": true, + "devOptional": true, "dependencies": { "@types/react": "*" } @@ -685,6 +1190,17 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/aria-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/aria-query": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", @@ -1240,6 +1756,11 @@ "node": ">=6" } }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -2064,6 +2585,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -2365,6 +2894,14 @@ "node": ">= 0.4" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -3531,6 +4068,73 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "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 + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "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 + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "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 + } + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -4304,6 +4908,47 @@ "punycode": "^2.1.0" } }, + "node_modules/use-callback-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "dependencies": { + "tslib": "^2.0.0" + }, + "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 + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "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 + } + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index 5f2cb4c..407fa85 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,8 @@ "lint": "next lint" }, "dependencies": { + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-slot": "^1.0.2", "class-variance-authority": "^0.7.0", "clsx": "^2.0.0", From 37bf8dff3f4ca4ec504edabf6eca56d68b9fe02d Mon Sep 17 00:00:00 2001 From: "Roe, Elliot Benjamin" Date: Sat, 11 Nov 2023 15:18:03 -0500 Subject: [PATCH 4/4] error fix --- app/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/page.tsx b/app/page.tsx index 5aae685..2dc1107 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -8,7 +8,7 @@ import Image from "next/image" export default function Home() { return (
-

Let's build something awesome!

+

{"Let's build something awesome!"}