From 200f139db81753df0c63b7c6d9e3bf41013c20cd Mon Sep 17 00:00:00 2001 From: Aded-oyin Date: Sat, 20 Jul 2024 19:50:08 +0100 Subject: [PATCH 01/12] feat: create-verification-success-page --- app/components/success_page/Contact.tsx | 55 +++++ app/components/success_page/Hero.tsx | 22 ++ app/components/success_page/Navbar.tsx | 29 +++ app/components/success_page/Success.tsx | 17 ++ app/routes/_index.tsx | 38 +--- package-lock.json | 259 +++++++++++++----------- package.json | 3 +- 7 files changed, 266 insertions(+), 157 deletions(-) create mode 100644 app/components/success_page/Contact.tsx create mode 100644 app/components/success_page/Hero.tsx create mode 100644 app/components/success_page/Navbar.tsx create mode 100644 app/components/success_page/Success.tsx diff --git a/app/components/success_page/Contact.tsx b/app/components/success_page/Contact.tsx new file mode 100644 index 00000000..de34d996 --- /dev/null +++ b/app/components/success_page/Contact.tsx @@ -0,0 +1,55 @@ + + +const Contact = () => { + return ( +
+
+
+
+
BoilerPlate
+
    +
  • Logo subject details and address
  • +
+
+
+
Navigation
+
    +
  • Home
  • +
  • About us
  • +
  • Career
  • +
  • Feature updates
  • +
  • Blog
  • +
+
+
+
Support
+
    +
  • Help Center
  • +
  • FAQ
  • +
  • Waiting list
  • +
  • Pricing Experience
  • +
  • Contact Us
  • +
+
+
+
Legal
+
    +
  • Privacy Policy
  • +
  • Terms and conditions
  • +
+
+
+
SignUp For Newsletter
+
+ + +
+
+
+
+ +
+ ) +} + +export default Contact \ No newline at end of file diff --git a/app/components/success_page/Hero.tsx b/app/components/success_page/Hero.tsx new file mode 100644 index 00000000..70fd1f5e --- /dev/null +++ b/app/components/success_page/Hero.tsx @@ -0,0 +1,22 @@ + + +const Hero = () => { + return ( +
+
+
+

Email Verified Successfully

+
+
+

Verification Successful

+
+

Your verification was successful, you can now proceed to reset your password

+ +
+
+ ) +} + +export default Hero \ No newline at end of file diff --git a/app/components/success_page/Navbar.tsx b/app/components/success_page/Navbar.tsx new file mode 100644 index 00000000..6cb9d189 --- /dev/null +++ b/app/components/success_page/Navbar.tsx @@ -0,0 +1,29 @@ + + +const Navbar = () => { + return ( +
+ +
+

HNG Boilerplate

+
    +
  • Pricing
  • +
  • Home
  • +
  • Career
  • +
+ +
+ + +
+
+ +
+ ) +} + +export default Navbar \ No newline at end of file diff --git a/app/components/success_page/Success.tsx b/app/components/success_page/Success.tsx new file mode 100644 index 00000000..7f3f5f4d --- /dev/null +++ b/app/components/success_page/Success.tsx @@ -0,0 +1,17 @@ + +import Contact from "./Contact" +import Hero from "./Hero" +import Navbar from "./Navbar" + + +const Success = () => { + return ( +
+ + + +
+ ) +} + +export default Success \ No newline at end of file diff --git a/app/routes/_index.tsx b/app/routes/_index.tsx index 5b445663..ac1616ee 100644 --- a/app/routes/_index.tsx +++ b/app/routes/_index.tsx @@ -1,5 +1,6 @@ import type { MetaFunction } from "@remix-run/node"; -import { Button } from "~/components/ui/button"; +import Success from "~/components/success_page/Success"; + export const meta: MetaFunction = () => { return [ @@ -11,40 +12,7 @@ export const meta: MetaFunction = () => { export default function Index() { return (
-

Welcome to Remix

- +
); } diff --git a/package-lock.json b/package-lock.json index 26a0bbb3..b9d1ae04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,12 +6,20 @@ "": { "name": "hng_boilerplate_remix", "dependencies": { + "@radix-ui/react-slot": "^1.1.0", + "@remix-run/css-bundle": "^2.10.3", "@remix-run/node": "^2.10.3", "@remix-run/react": "^2.10.3", "@remix-run/serve": "^2.10.3", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", "isbot": "^4.1.0", + "lucide-react": "^0.408.0", + "pnpm": "^9.5.0", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "tailwind-merge": "^2.4.0", + "tailwindcss-animate": "^1.0.7" }, "devDependencies": { "@remix-run/dev": "^2.10.3", @@ -40,7 +48,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" }, @@ -1202,7 +1209,6 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -1219,7 +1225,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, "engines": { "node": ">=12" }, @@ -1231,7 +1236,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1246,7 +1250,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1260,7 +1263,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -1269,7 +1271,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -1277,14 +1278,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1329,7 +1328,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" @@ -1342,7 +1340,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" } @@ -1351,7 +1348,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" @@ -1434,12 +1430,50 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, "optional": true, "engines": { "node": ">=14" } }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@remix-run/css-bundle": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@remix-run/css-bundle/-/css-bundle-2.10.3.tgz", + "integrity": "sha512-FWTHe0kphAoK85kY92BaLuwNjyn9t2Gd1/MebR1lEzG2dDm80tThJ2tpZMCOn1zPFAaLOGn3fXnywYMYDzyBfg==", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@remix-run/dev": { "version": "2.10.3", "resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-2.10.3.tgz", @@ -2004,13 +2038,13 @@ "version": "15.7.12", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", - "dev": true + "devOptional": true }, "node_modules/@types/react": { "version": "18.3.3", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", - "dev": true, + "devOptional": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -2391,7 +2425,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -2400,7 +2433,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2414,8 +2446,7 @@ "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", @@ -2432,8 +2463,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", @@ -2723,8 +2753,7 @@ "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/base64-js": { "version": "1.5.1", @@ -2827,7 +2856,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -2993,7 +3021,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" } @@ -3116,6 +3143,25 @@ "node": ">=10" } }, + "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/class-variance-authority/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/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -3158,11 +3204,18 @@ "node": ">=0.8" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3173,8 +3226,7 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/comma-separated-tokens": { "version": "2.0.3", @@ -3190,7 +3242,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" } @@ -3318,7 +3369,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3332,7 +3382,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3359,7 +3408,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" }, @@ -3371,7 +3419,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true + "devOptional": true }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -3609,8 +3657,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/diff": { "version": "5.2.0", @@ -3636,8 +3683,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", @@ -3708,8 +3754,7 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/ee-first": { "version": "1.1.1", @@ -3725,8 +3770,7 @@ "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/encodeurl": { "version": "1.0.2", @@ -4798,7 +4842,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -4826,7 +4869,6 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -4945,7 +4987,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", - "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -4961,7 +5002,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, "engines": { "node": ">=14" }, @@ -5185,7 +5225,6 @@ "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -5738,7 +5777,6 @@ "version": "2.15.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", - "dev": true, "dependencies": { "hasown": "^2.0.2" }, @@ -5819,7 +5857,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -6122,8 +6159,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/iterator.prototype": { "version": "1.1.2", @@ -6142,7 +6178,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -6163,7 +6198,6 @@ "version": "1.21.6", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", - "dev": true, "bin": { "jiti": "bin/jiti.js" } @@ -6316,7 +6350,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", - "dev": true, "engines": { "node": ">=14" }, @@ -6327,8 +6360,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/loader-utils": { "version": "3.3.1", @@ -6440,6 +6472,14 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide-react": { + "version": "0.408.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.408.0.tgz", + "integrity": "sha512-8kETAAeWmOvtGIr7HPHm51DXoxlfkNncQ5FZWXR+abX8saQwMYXANWIkUstaYtcKSo/imOe/q+tVFA8ANzdSVA==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/markdown-extensions": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", @@ -6677,7 +6717,6 @@ "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" } @@ -7306,7 +7345,6 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -7366,7 +7404,6 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7390,7 +7427,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -7618,7 +7654,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", @@ -7629,7 +7664,6 @@ "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, "funding": [ { "type": "github", @@ -7762,7 +7796,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" } @@ -7771,7 +7804,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" } @@ -8030,8 +8062,7 @@ "node_modules/package-json-from-dist": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" }, "node_modules/pako": { "version": "0.2.9", @@ -8110,7 +8141,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -8118,14 +8148,12 @@ "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-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -8140,8 +8168,7 @@ "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "node_modules/path-to-regexp": { "version": "0.1.7", @@ -8188,8 +8215,7 @@ "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -8218,7 +8244,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" } @@ -8227,7 +8252,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" } @@ -8243,6 +8267,21 @@ "pathe": "^1.1.2" } }, + "node_modules/pnpm": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/pnpm/-/pnpm-9.5.0.tgz", + "integrity": "sha512-FAA2gwEkYY1iSiGHtQ0EKJ1aCH8ybJ7fwMzXM9dsT1LDoxPU/BSHlKKp2BVTAWAE5nQujPhQZwJopzh/wiDJAw==", + "bin": { + "pnpm": "bin/pnpm.cjs", + "pnpx": "bin/pnpx.cjs" + }, + "engines": { + "node": ">=18.12" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", @@ -8255,7 +8294,6 @@ "version": "8.4.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", - "dev": true, "funding": [ { "type": "opencollective", @@ -8295,7 +8333,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", @@ -8312,7 +8349,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" }, @@ -8331,7 +8367,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -8444,7 +8479,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" }, @@ -8463,7 +8497,6 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", - "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -8475,8 +8508,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", @@ -8632,7 +8664,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", @@ -8750,7 +8781,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" } @@ -8924,7 +8954,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", @@ -8990,7 +9019,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" @@ -9094,7 +9122,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", @@ -9290,7 +9317,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -9302,7 +9328,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -9351,7 +9376,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9497,7 +9521,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -9515,7 +9538,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9528,14 +9550,12 @@ "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/string-width/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, "engines": { "node": ">=12" }, @@ -9547,7 +9567,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -9671,7 +9690,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -9684,7 +9702,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -9735,7 +9752,6 @@ "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -9769,7 +9785,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" }, @@ -9777,11 +9792,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tailwind-merge": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.4.0.tgz", + "integrity": "sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, "node_modules/tailwindcss": { "version": "3.4.6", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.6.tgz", "integrity": "sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA==", - "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -9814,11 +9837,18 @@ "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/tailwindcss/node_modules/glob-parent": { "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" }, @@ -9830,7 +9860,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" } @@ -9954,7 +9983,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" } @@ -9963,7 +9991,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" }, @@ -10080,8 +10107,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/tsconfck": { "version": "3.1.1", @@ -10510,8 +10536,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/utils-merge": { "version": "1.0.1", @@ -11216,7 +11241,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -11234,7 +11258,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -11250,14 +11273,12 @@ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/wrap-ansi-cjs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -11271,7 +11292,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, "engines": { "node": ">=12" }, @@ -11283,7 +11303,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, "engines": { "node": ">=12" }, @@ -11295,7 +11314,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -11352,7 +11370,6 @@ "version": "2.4.5", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", - "dev": true, "bin": { "yaml": "bin.mjs" }, diff --git a/package.json b/package.json index 2cca5f68..77674b2b 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "clsx": "^2.1.1", "isbot": "^4.1.0", "lucide-react": "^0.408.0", + "pnpm": "^9.5.0", "react": "^18.2.0", "react-dom": "^18.2.0", "tailwind-merge": "^2.4.0", @@ -47,4 +48,4 @@ "engines": { "node": ">=20.0.0" } -} \ No newline at end of file +} From ffe4013e8850cf8f104b55bacba480ff2d0faee6 Mon Sep 17 00:00:00 2001 From: Aded-oyin Date: Sat, 20 Jul 2024 23:36:24 +0100 Subject: [PATCH 02/12] feat: create-verification-success-page --- app/components/success_page/Contact.tsx | 38 ++++++++++++++----------- app/components/success_page/Navbar.tsx | 6 ++-- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/app/components/success_page/Contact.tsx b/app/components/success_page/Contact.tsx index de34d996..99b12ec6 100644 --- a/app/components/success_page/Contact.tsx +++ b/app/components/success_page/Contact.tsx @@ -3,39 +3,40 @@ const Contact = () => { return (
+
BoilerPlate
-
Navigation
+
Legal
-
Support
+
Navigation
-
Legal
+
Support
@@ -46,6 +47,11 @@ const Contact = () => {
+
+
+

2024 All Rights Reserved

+

Privacy Policy Terms of Use

+
diff --git a/app/components/success_page/Navbar.tsx b/app/components/success_page/Navbar.tsx index 6cb9d189..79e6b0db 100644 --- a/app/components/success_page/Navbar.tsx +++ b/app/components/success_page/Navbar.tsx @@ -7,9 +7,9 @@ const Navbar = () => {

HNG Boilerplate

From 385848b8609a14cb06a8874e0f9875ac6d6061bd Mon Sep 17 00:00:00 2001 From: Aded-oyin Date: Sun, 21 Jul 2024 18:52:34 +0100 Subject: [PATCH 03/12] feat: resolve-merge-conflicts --- app/components/success_page/Contact.tsx | 2 +- app/components/ui/card/card-platform.tsx | 79 ++++++++++++ app/components/ui/otp/OtpAuth.tsx | 150 +++++++++++++++++++++++ app/routes/_index.tsx | 87 ++++++++++++- app/types/otpauth.tsx | 11 ++ 5 files changed, 325 insertions(+), 4 deletions(-) create mode 100644 app/components/ui/card/card-platform.tsx create mode 100644 app/components/ui/otp/OtpAuth.tsx create mode 100644 app/types/otpauth.tsx diff --git a/app/components/success_page/Contact.tsx b/app/components/success_page/Contact.tsx index 99b12ec6..7149dfad 100644 --- a/app/components/success_page/Contact.tsx +++ b/app/components/success_page/Contact.tsx @@ -48,7 +48,7 @@ const Contact = () => {
-
+

2024 All Rights Reserved

Privacy Policy Terms of Use

diff --git a/app/components/ui/card/card-platform.tsx b/app/components/ui/card/card-platform.tsx new file mode 100644 index 00000000..cded1b95 --- /dev/null +++ b/app/components/ui/card/card-platform.tsx @@ -0,0 +1,79 @@ +import { useState } from "react"; + +import { cn } from "~/lib/utils/cn"; + +type PlatformCardProperties = { + /** + * Displaying the platform name or title. + */ + heading: string; + + /** + * Displaying the platform logo or icon. + */ + logo: string; + /** + * Providing a brief overview of the platform. + */ + description: string; + /** + * Additional class names for customizing the container style. + */ + containerClassName?: string; +}; + +/** + * A card component that displays platform details including a heading, logo, description, and a toggle switch. + * The toggle switch allows admins to activate or deactivate the platform. + * + * @param {PlatformCardProps} props - The properties for the component. + * @returns The CardPlatform component. + */ + +export default function CardPlatform({ + heading, + logo, + description, + containerClassName, +}: PlatformCardProperties) { + const [isActivated, setIsActivated] = useState(false); + + const toggleSwitchHandler = () => setIsActivated((previous) => !previous); + + return ( +
+
+
+ {heading} +
+ +
+
+

+ {heading} +

+

{description}

+
+
+ ); +} \ No newline at end of file diff --git a/app/components/ui/otp/OtpAuth.tsx b/app/components/ui/otp/OtpAuth.tsx new file mode 100644 index 00000000..d72047fe --- /dev/null +++ b/app/components/ui/otp/OtpAuth.tsx @@ -0,0 +1,150 @@ +import { Link } from "@remix-run/react"; +import { + useRef, + useState, + type ChangeEvent, + type FC, + type KeyboardEventHandler, + type MouseEventHandler, +} from "react"; +import { twMerge } from "tailwind-merge"; + +import { Input, OtpAuthProperties } from "~/types/otpauth"; +import { Button } from "../button"; + +const OtpAuth: FC = ({ + isModalOpen = false, + inputs = [], + setIsModalOpen, + handleSubmit, +}) => { + const [inputValues, setInputValues] = useState(inputs); + const inputReferences = useRef<(HTMLInputElement | null)[]>([]); + + const handleChange = + (index: number) => (event: ChangeEvent) => { + const value = event.target.value; + if (/^\d?$/.test(value)) { + const newInputs = [...inputValues]; + newInputs[index].value = value; + + setInputValues(newInputs); + if (value && index < inputReferences.current.length - 1) { + inputReferences.current[index + 1]?.focus(); + } + } + }; + + const handleClose: MouseEventHandler = () => { + if (setIsModalOpen) { + setIsModalOpen(false); + } + }; + + const handleSubmitForm: MouseEventHandler = () => { + if (handleSubmit) { + handleSubmit(inputValues); + } + }; + + const handleKeyDown: KeyboardEventHandler = (event) => { + if (event.key === "Escape" && setIsModalOpen) { + setIsModalOpen(false); + } + }; + + const modalClass = twMerge( + "animate-in fade-in zoom-in duration-300", + isModalOpen ? "visible opacity-100" : "invisible opacity-0", + ); + + const modalContentClass = twMerge( + "fixed top-[50%] left-[50%] max-h-[85vh] delay-150 animate-in fade-in zoom-in duration-300 w-[95%] sm:max-w-[470px] translate-x-[-50%] translate-y-[-50%] rounded-[6px] bg-white p-[25px] shadow-[hsl(206_22%_7%_/_35%)_0px_10px_38px_-10px,_hsl(206_22%_7%_/_20%)_0px_10px_20px_-15px] focus:outline-none ", + isModalOpen ? "opacity-100 scale-100" : "opacity-0 scale-95", + ); + + return ( +
+
+
+
+

+ Sign up +

+
+

Choose your sign-up method:

+
    +
  • Use the temporary sign-in code sent to your mail or
  • +
  • Continue with email and password
  • +
+
+ +

+ Please paste (or type) your 6-digit code:{" "} +

+ +
+ {inputValues.map((input, index) => { + return ( + (inputReferences.current[index] = element)} + name={input.name} + value={input.value} + onChange={handleChange(index)} + key={index} + className={`fomt-medium inline-flex min-h-[40px] min-w-[40px] rounded-md text-center text-lg text-primary outline-none sm:h-[60px] sm:w-[60px] ${ + input.value ? "border-[#EF4444]" : "border-border" + } border`} + id={input.name} + inputMode="numeric" + pattern="[0-9]*" + tabIndex={index} + /> + ); + })} +
+ {inputValues.every((input) => input.value.length === 1) && ( +
+ +
+ )} +
+
+

+ Would you rather use email and password? +

+ + Continue with email and password + +
+

+ We would process your data as set forth in our + + {" "} + Terms of Use, Privacy Policy + + and{" "} + + Data Processing Agreement + +

+
+
+
+
+ ); +}; + +export default OtpAuth; \ No newline at end of file diff --git a/app/routes/_index.tsx b/app/routes/_index.tsx index ac1616ee..0ddc402e 100644 --- a/app/routes/_index.tsx +++ b/app/routes/_index.tsx @@ -1,6 +1,14 @@ import type { MetaFunction } from "@remix-run/node"; + import Success from "~/components/success_page/Success"; +import { Link } from "@remix-run/react"; +import { useState } from "react"; + +import { Button } from "~/components/ui/button"; +import CardPlatform from "~/components/ui/card/card-platform"; +import OtpAuth from "~/components/ui/otp/OtpAuth"; +import { Input } from "~/types/otpauth"; export const meta: MetaFunction = () => { return [ @@ -9,10 +17,83 @@ export const meta: MetaFunction = () => { ]; }; +const handleSubmit = (values: Input[]) => { + console.log({ values }); +}; + export default function Index() { + const [openModal, setOpenModal] = useState(false); + return ( -
- -
+ +
+ +

Welcome to Remix

+ + setOpenModal(!openModal)} + inputs={[ + { name: "input1", value: "" }, + { name: "input1", value: "" }, + { name: "input1", value: "" }, + { name: "input1", value: "" }, + { name: "input1", value: "" }, + { name: "input1", value: "" }, + ]} + handleSubmit={handleSubmit} + /> +
); } diff --git a/app/types/otpauth.tsx b/app/types/otpauth.tsx new file mode 100644 index 00000000..be5aab85 --- /dev/null +++ b/app/types/otpauth.tsx @@ -0,0 +1,11 @@ +export type Input = { + name: string; + value: string; + }; + + export type OtpAuthProperties = { + setIsModalOpen?: (isOpen: boolean) => void; + handleSubmit?: (values: Input[]) => void; + isModalOpen?: boolean; + inputs?: Input[]; + }; \ No newline at end of file From b3a0c31509b363f57f621b4553131a68741e016d Mon Sep 17 00:00:00 2001 From: Aded-oyin Date: Mon, 22 Jul 2024 13:28:54 +0100 Subject: [PATCH 04/12] feat: resolve-merge-conflicts --- app/components/success_page/Contact.tsx | 2 +- app/components/ui/card/card-platform.tsx | 79 ------------ app/components/ui/otp/OtpAuth.tsx | 150 ----------------------- app/routes/_index.tsx | 78 ------------ 4 files changed, 1 insertion(+), 308 deletions(-) delete mode 100644 app/components/ui/card/card-platform.tsx delete mode 100644 app/components/ui/otp/OtpAuth.tsx diff --git a/app/components/success_page/Contact.tsx b/app/components/success_page/Contact.tsx index 7149dfad..63e854c8 100644 --- a/app/components/success_page/Contact.tsx +++ b/app/components/success_page/Contact.tsx @@ -5,7 +5,7 @@ const Contact = () => {
-
+
BoilerPlate
    diff --git a/app/components/ui/card/card-platform.tsx b/app/components/ui/card/card-platform.tsx deleted file mode 100644 index cded1b95..00000000 --- a/app/components/ui/card/card-platform.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { useState } from "react"; - -import { cn } from "~/lib/utils/cn"; - -type PlatformCardProperties = { - /** - * Displaying the platform name or title. - */ - heading: string; - - /** - * Displaying the platform logo or icon. - */ - logo: string; - /** - * Providing a brief overview of the platform. - */ - description: string; - /** - * Additional class names for customizing the container style. - */ - containerClassName?: string; -}; - -/** - * A card component that displays platform details including a heading, logo, description, and a toggle switch. - * The toggle switch allows admins to activate or deactivate the platform. - * - * @param {PlatformCardProps} props - The properties for the component. - * @returns The CardPlatform component. - */ - -export default function CardPlatform({ - heading, - logo, - description, - containerClassName, -}: PlatformCardProperties) { - const [isActivated, setIsActivated] = useState(false); - - const toggleSwitchHandler = () => setIsActivated((previous) => !previous); - - return ( -
    -
    -
    - {heading} -
    - -
    -
    -

    - {heading} -

    -

    {description}

    -
    -
    - ); -} \ No newline at end of file diff --git a/app/components/ui/otp/OtpAuth.tsx b/app/components/ui/otp/OtpAuth.tsx deleted file mode 100644 index d72047fe..00000000 --- a/app/components/ui/otp/OtpAuth.tsx +++ /dev/null @@ -1,150 +0,0 @@ -import { Link } from "@remix-run/react"; -import { - useRef, - useState, - type ChangeEvent, - type FC, - type KeyboardEventHandler, - type MouseEventHandler, -} from "react"; -import { twMerge } from "tailwind-merge"; - -import { Input, OtpAuthProperties } from "~/types/otpauth"; -import { Button } from "../button"; - -const OtpAuth: FC = ({ - isModalOpen = false, - inputs = [], - setIsModalOpen, - handleSubmit, -}) => { - const [inputValues, setInputValues] = useState(inputs); - const inputReferences = useRef<(HTMLInputElement | null)[]>([]); - - const handleChange = - (index: number) => (event: ChangeEvent) => { - const value = event.target.value; - if (/^\d?$/.test(value)) { - const newInputs = [...inputValues]; - newInputs[index].value = value; - - setInputValues(newInputs); - if (value && index < inputReferences.current.length - 1) { - inputReferences.current[index + 1]?.focus(); - } - } - }; - - const handleClose: MouseEventHandler = () => { - if (setIsModalOpen) { - setIsModalOpen(false); - } - }; - - const handleSubmitForm: MouseEventHandler = () => { - if (handleSubmit) { - handleSubmit(inputValues); - } - }; - - const handleKeyDown: KeyboardEventHandler = (event) => { - if (event.key === "Escape" && setIsModalOpen) { - setIsModalOpen(false); - } - }; - - const modalClass = twMerge( - "animate-in fade-in zoom-in duration-300", - isModalOpen ? "visible opacity-100" : "invisible opacity-0", - ); - - const modalContentClass = twMerge( - "fixed top-[50%] left-[50%] max-h-[85vh] delay-150 animate-in fade-in zoom-in duration-300 w-[95%] sm:max-w-[470px] translate-x-[-50%] translate-y-[-50%] rounded-[6px] bg-white p-[25px] shadow-[hsl(206_22%_7%_/_35%)_0px_10px_38px_-10px,_hsl(206_22%_7%_/_20%)_0px_10px_20px_-15px] focus:outline-none ", - isModalOpen ? "opacity-100 scale-100" : "opacity-0 scale-95", - ); - - return ( -
    -
    -
    -
    -

    - Sign up -

    -
    -

    Choose your sign-up method:

    -
      -
    • Use the temporary sign-in code sent to your mail or
    • -
    • Continue with email and password
    • -
    -
    - -

    - Please paste (or type) your 6-digit code:{" "} -

    - -
    - {inputValues.map((input, index) => { - return ( - (inputReferences.current[index] = element)} - name={input.name} - value={input.value} - onChange={handleChange(index)} - key={index} - className={`fomt-medium inline-flex min-h-[40px] min-w-[40px] rounded-md text-center text-lg text-primary outline-none sm:h-[60px] sm:w-[60px] ${ - input.value ? "border-[#EF4444]" : "border-border" - } border`} - id={input.name} - inputMode="numeric" - pattern="[0-9]*" - tabIndex={index} - /> - ); - })} -
    - {inputValues.every((input) => input.value.length === 1) && ( -
    - -
    - )} -
    -
    -

    - Would you rather use email and password? -

    - - Continue with email and password - -
    -

    - We would process your data as set forth in our - - {" "} - Terms of Use, Privacy Policy - - and{" "} - - Data Processing Agreement - -

    -
    -
    -
    -
    - ); -}; - -export default OtpAuth; \ No newline at end of file diff --git a/app/routes/_index.tsx b/app/routes/_index.tsx index 0ddc402e..4566b942 100644 --- a/app/routes/_index.tsx +++ b/app/routes/_index.tsx @@ -2,14 +2,6 @@ import type { MetaFunction } from "@remix-run/node"; import Success from "~/components/success_page/Success"; -import { Link } from "@remix-run/react"; -import { useState } from "react"; - -import { Button } from "~/components/ui/button"; -import CardPlatform from "~/components/ui/card/card-platform"; -import OtpAuth from "~/components/ui/otp/OtpAuth"; -import { Input } from "~/types/otpauth"; - export const meta: MetaFunction = () => { return [ { title: "New Remix App" }, @@ -17,83 +9,13 @@ export const meta: MetaFunction = () => { ]; }; -const handleSubmit = (values: Input[]) => { - console.log({ values }); -}; export default function Index() { - const [openModal, setOpenModal] = useState(false); return (
    -

    Welcome to Remix

    - - setOpenModal(!openModal)} - inputs={[ - { name: "input1", value: "" }, - { name: "input1", value: "" }, - { name: "input1", value: "" }, - { name: "input1", value: "" }, - { name: "input1", value: "" }, - { name: "input1", value: "" }, - ]} - handleSubmit={handleSubmit} - />
    ); } From 65128b80a0e880a3fe857aca0dfaf3ca4448c4a8 Mon Sep 17 00:00:00 2001 From: Aded-oyin Date: Mon, 22 Jul 2024 15:01:06 +0100 Subject: [PATCH 05/12] feat:update-success-message --- app/components/success_page/Hero.tsx | 44 ++++++++++++++++++---------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/app/components/success_page/Hero.tsx b/app/components/success_page/Hero.tsx index 70fd1f5e..a4e25c42 100644 --- a/app/components/success_page/Hero.tsx +++ b/app/components/success_page/Hero.tsx @@ -1,22 +1,36 @@ - +import { useState } from 'react'; const Hero = () => { + const [showMessage, setShowMessage] = useState(true); + + const handleCloseMessage = () => { + setShowMessage(false); + }; + return (
    -
    -
    -

    Email Verified Successfully

    -
    -
    -

    Verification Successful

    -
    -

    Your verification was successful, you can now proceed to reset your password

    - -
    +
    + )} +
    +

    Verification Successful

    +
    +

    Your verification was successful, you can now proceed to reset your password

    + +
- ) -} + ); +}; -export default Hero \ No newline at end of file +export default Hero; From 8579c1564d2eb1c18db4b40137cf55179c2afa6d Mon Sep 17 00:00:00 2001 From: Aded-oyin Date: Mon, 22 Jul 2024 15:26:27 +0100 Subject: [PATCH 06/12] feat: resolve-merge-conflicts --- app/types/otpauth.tsx | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 app/types/otpauth.tsx diff --git a/app/types/otpauth.tsx b/app/types/otpauth.tsx deleted file mode 100644 index be5aab85..00000000 --- a/app/types/otpauth.tsx +++ /dev/null @@ -1,11 +0,0 @@ -export type Input = { - name: string; - value: string; - }; - - export type OtpAuthProperties = { - setIsModalOpen?: (isOpen: boolean) => void; - handleSubmit?: (values: Input[]) => void; - isModalOpen?: boolean; - inputs?: Input[]; - }; \ No newline at end of file From 2f10c1d25448e1002a269882ff569fe9bf0d5938 Mon Sep 17 00:00:00 2001 From: Aded-oyin Date: Mon, 22 Jul 2024 15:39:31 +0100 Subject: [PATCH 07/12] feat: resolve-merge-conflicts --- app/routes/_index.tsx | 39 +++++++++++++++++++++++++++++++++++++-- package.json | 1 - 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/app/routes/_index.tsx b/app/routes/_index.tsx index 4566b942..10a1d9be 100644 --- a/app/routes/_index.tsx +++ b/app/routes/_index.tsx @@ -2,6 +2,8 @@ import type { MetaFunction } from "@remix-run/node"; import Success from "~/components/success_page/Success"; +import { Button } from "~/components/ui/button"; + export const meta: MetaFunction = () => { return [ { title: "New Remix App" }, @@ -9,13 +11,46 @@ export const meta: MetaFunction = () => { ]; }; - export default function Index() { return (
-
+

Welcome to Remix

+ +
); } diff --git a/package.json b/package.json index 77674b2b..054414bb 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,6 @@ "clsx": "^2.1.1", "isbot": "^4.1.0", "lucide-react": "^0.408.0", - "pnpm": "^9.5.0", "react": "^18.2.0", "react-dom": "^18.2.0", "tailwind-merge": "^2.4.0", From 4c07eb9a8e0eed60577be895d87b3912f4f135ea Mon Sep 17 00:00:00 2001 From: Aded-oyin Date: Mon, 22 Jul 2024 15:45:07 +0100 Subject: [PATCH 08/12] feat: resolve-merge-conflicts --- app/routes/_index.tsx | 6 ------ package.json | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/app/routes/_index.tsx b/app/routes/_index.tsx index 10a1d9be..2f8c6ce6 100644 --- a/app/routes/_index.tsx +++ b/app/routes/_index.tsx @@ -1,7 +1,4 @@ import type { MetaFunction } from "@remix-run/node"; - -import Success from "~/components/success_page/Success"; - import { Button } from "~/components/ui/button"; export const meta: MetaFunction = () => { @@ -12,11 +9,8 @@ export const meta: MetaFunction = () => { }; export default function Index() { - return ( -
-

Welcome to Remix