From c3ccde9e7e211545367dfedd1c8eeeaf1a0e3739 Mon Sep 17 00:00:00 2001 From: Sayan650 Date: Wed, 22 Jan 2025 02:30:09 +0530 Subject: [PATCH 1/2] landing page components added --- client/package-lock.json | 211 +++++++++++++ client/package.json | 2 + client/src/app/(auth)/layout.tsx | 15 + client/src/app/(auth)/reset-password/page.tsx | 45 +++ client/src/app/(auth)/signin/page.tsx | 82 +++++ client/src/app/(auth)/signup/page.tsx | 104 +++++++ client/src/app/(default)/layout.tsx | 31 ++ client/src/app/(default)/page.tsx | 25 ++ .../css/additional-styles/custom-fonts.css | 31 ++ .../src/app/css/additional-styles/theme.css | 82 +++++ .../additional-styles/utility-patterns.css | 55 ++++ client/src/app/css/style.css | 7 + client/src/app/layout.tsx | 58 +++- client/src/app/page.tsx | 101 ------- client/src/components/cta.tsx | 56 ++++ client/src/components/features.tsx | 195 ++++++++++++ client/src/components/hero-home.tsx | 66 ++++ client/src/components/modal-video.tsx | 137 +++++++++ client/src/components/page-illustration.tsx | 55 ++++ client/src/components/spotlight.tsx | 77 +++++ client/src/components/testimonials.tsx | 282 ++++++++++++++++++ client/src/components/ui/footer.tsx | 270 +++++++++++++++++ client/src/components/ui/header.tsx | 39 +++ client/src/components/ui/logo.tsx | 11 + client/src/components/workflows.tsx | 176 +++++++++++ client/src/public/favicon.ico | Bin 0 -> 25931 bytes client/src/public/fonts/nacelle-italic.woff2 | Bin 0 -> 31632 bytes client/src/public/fonts/nacelle-regular.woff2 | Bin 0 -> 28772 bytes .../src/public/fonts/nacelle-semibold.woff2 | Bin 0 -> 28404 bytes .../public/fonts/nacelle-semibolditalic.woff2 | Bin 0 -> 31436 bytes .../src/public/images/blurred-shape-gray.svg | 1 + client/src/public/images/blurred-shape.svg | 1 + client/src/public/images/client-logo-01.svg | 1 + client/src/public/images/client-logo-02.svg | 1 + client/src/public/images/client-logo-03.svg | 1 + client/src/public/images/client-logo-04.svg | 1 + client/src/public/images/client-logo-05.svg | 1 + client/src/public/images/client-logo-06.svg | 1 + client/src/public/images/client-logo-07.svg | 1 + client/src/public/images/client-logo-08.svg | 1 + client/src/public/images/client-logo-09.svg | 1 + client/src/public/images/features.png | Bin 0 -> 99396 bytes .../src/public/images/footer-illustration.svg | 1 + client/src/public/images/hero-image-01.jpg | Bin 0 -> 130451 bytes client/src/public/images/logo.svg | 1 + .../src/public/images/page-illustration.svg | 1 + .../public/images/secondary-illustration.svg | 1 + client/src/public/images/testimonial-01.jpg | Bin 0 -> 2568 bytes client/src/public/images/testimonial-02.jpg | Bin 0 -> 2397 bytes client/src/public/images/testimonial-03.jpg | Bin 0 -> 2936 bytes client/src/public/images/testimonial-04.jpg | Bin 0 -> 2706 bytes client/src/public/images/testimonial-05.jpg | Bin 0 -> 2663 bytes client/src/public/images/testimonial-06.jpg | Bin 0 -> 2936 bytes client/src/public/images/testimonial-07.jpg | Bin 0 -> 2008 bytes client/src/public/images/testimonial-08.jpg | Bin 0 -> 2318 bytes client/src/public/images/testimonial-09.jpg | Bin 0 -> 2806 bytes client/src/public/images/workflow-01.png | Bin 0 -> 38137 bytes client/src/public/images/workflow-02.png | Bin 0 -> 37796 bytes client/src/public/images/workflow-03.png | Bin 0 -> 43977 bytes client/src/public/videos/video.mp4 | Bin 0 -> 2790943 bytes client/src/utils/useMasonry.tsx | 67 +++++ client/src/utils/useMousePosition.tsx | 27 ++ package-lock.json | 6 + 63 files changed, 2212 insertions(+), 116 deletions(-) create mode 100644 client/src/app/(auth)/layout.tsx create mode 100644 client/src/app/(auth)/reset-password/page.tsx create mode 100644 client/src/app/(auth)/signin/page.tsx create mode 100644 client/src/app/(auth)/signup/page.tsx create mode 100644 client/src/app/(default)/layout.tsx create mode 100644 client/src/app/(default)/page.tsx create mode 100644 client/src/app/css/additional-styles/custom-fonts.css create mode 100644 client/src/app/css/additional-styles/theme.css create mode 100644 client/src/app/css/additional-styles/utility-patterns.css create mode 100644 client/src/app/css/style.css delete mode 100644 client/src/app/page.tsx create mode 100644 client/src/components/cta.tsx create mode 100644 client/src/components/features.tsx create mode 100755 client/src/components/hero-home.tsx create mode 100644 client/src/components/modal-video.tsx create mode 100644 client/src/components/page-illustration.tsx create mode 100644 client/src/components/spotlight.tsx create mode 100644 client/src/components/testimonials.tsx create mode 100644 client/src/components/ui/footer.tsx create mode 100644 client/src/components/ui/header.tsx create mode 100644 client/src/components/ui/logo.tsx create mode 100644 client/src/components/workflows.tsx create mode 100644 client/src/public/favicon.ico create mode 100644 client/src/public/fonts/nacelle-italic.woff2 create mode 100644 client/src/public/fonts/nacelle-regular.woff2 create mode 100644 client/src/public/fonts/nacelle-semibold.woff2 create mode 100644 client/src/public/fonts/nacelle-semibolditalic.woff2 create mode 100644 client/src/public/images/blurred-shape-gray.svg create mode 100644 client/src/public/images/blurred-shape.svg create mode 100644 client/src/public/images/client-logo-01.svg create mode 100644 client/src/public/images/client-logo-02.svg create mode 100644 client/src/public/images/client-logo-03.svg create mode 100644 client/src/public/images/client-logo-04.svg create mode 100644 client/src/public/images/client-logo-05.svg create mode 100644 client/src/public/images/client-logo-06.svg create mode 100644 client/src/public/images/client-logo-07.svg create mode 100644 client/src/public/images/client-logo-08.svg create mode 100644 client/src/public/images/client-logo-09.svg create mode 100644 client/src/public/images/features.png create mode 100644 client/src/public/images/footer-illustration.svg create mode 100644 client/src/public/images/hero-image-01.jpg create mode 100644 client/src/public/images/logo.svg create mode 100644 client/src/public/images/page-illustration.svg create mode 100644 client/src/public/images/secondary-illustration.svg create mode 100644 client/src/public/images/testimonial-01.jpg create mode 100644 client/src/public/images/testimonial-02.jpg create mode 100644 client/src/public/images/testimonial-03.jpg create mode 100644 client/src/public/images/testimonial-04.jpg create mode 100644 client/src/public/images/testimonial-05.jpg create mode 100644 client/src/public/images/testimonial-06.jpg create mode 100644 client/src/public/images/testimonial-07.jpg create mode 100644 client/src/public/images/testimonial-08.jpg create mode 100644 client/src/public/images/testimonial-09.jpg create mode 100644 client/src/public/images/workflow-01.png create mode 100644 client/src/public/images/workflow-02.png create mode 100644 client/src/public/images/workflow-03.png create mode 100644 client/src/public/videos/video.mp4 create mode 100644 client/src/utils/useMasonry.tsx create mode 100644 client/src/utils/useMousePosition.tsx create mode 100644 package-lock.json diff --git a/client/package-lock.json b/client/package-lock.json index 4af85ce..ed294d1 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -8,6 +8,8 @@ "name": "client", "version": "0.1.0", "dependencies": { + "@headlessui/react": "^2.1.3", + "aos": "^3.0.0-beta.6", "next": "14.2.23", "react": "^18", "react-dom": "^18" @@ -99,6 +101,72 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.28", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", + "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", + "dependencies": { + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.8", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==" + }, + "node_modules/@headlessui/react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.0.tgz", + "integrity": "sha512-RzCEg+LXsuI7mHiSomsu/gBJSjpupm6A1qIZ5sWjd7JhARNlMiSA4kKfJpCKwU9tE+zMRterhhrP74PvfJrpXQ==", + "dependencies": { + "@floating-ui/react": "^0.26.16", + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@tanstack/react-virtual": "^3.8.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -456,6 +524,86 @@ "node": ">=14" } }, + "node_modules/@react-aria/focus": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.19.1.tgz", + "integrity": "sha512-bix9Bu1Ue7RPcYmjwcjhB14BMu2qzfJ3tMQLqDc9pweJA66nOw8DThy3IfVr8Z7j2PHktOLf9kcbiZpydKHqzg==", + "dependencies": { + "@react-aria/interactions": "^3.23.0", + "@react-aria/utils": "^3.27.0", + "@react-types/shared": "^3.27.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.23.0.tgz", + "integrity": "sha512-0qR1atBIWrb7FzQ+Tmr3s8uH5mQdyRH78n0krYaG8tng9+u1JlSi8DGRSaC9ezKyNB84m7vHT207xnHXGeJ3Fg==", + "dependencies": { + "@react-aria/ssr": "^3.9.7", + "@react-aria/utils": "^3.27.0", + "@react-types/shared": "^3.27.0", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.7.tgz", + "integrity": "sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.27.0.tgz", + "integrity": "sha512-p681OtApnKOdbeN8ITfnnYqfdHS0z7GE+4l8EXlfLnr70Rp/9xicBO6d2rU+V/B3JujDw2gPWxYKEnEeh0CGCw==", + "dependencies": { + "@react-aria/ssr": "^3.9.7", + "@react-stately/utils": "^3.10.5", + "@react-types/shared": "^3.27.0", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-stately/utils": { + "version": "3.10.5", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.5.tgz", + "integrity": "sha512-iMQSGcpaecghDIh3mZEpZfoFH3ExBwTtuBEcvZ2XnGzCgQjeYXcMdIUwAfVQLXFTdHUHGF6Gu6/dFrYsCzySBQ==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/shared": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.27.0.tgz", + "integrity": "sha512-gvznmLhi6JPEf0bsq7SwRYTHAKKq/wcmKqFez9sRdbED+SPMUmK5omfZ6w3EwUFQHbYUa4zPBYedQ7Knv70RMw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -486,6 +634,31 @@ "tslib": "^2.4.0" } }, + "node_modules/@tanstack/react-virtual": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.11.2.tgz", + "integrity": "sha512-OuFzMXPF4+xZgx8UzJha0AieuMihhhaWG0tCqpp6tDzlFwOmNBPYMuLOtMJ1Tr4pXLHmgjcWhG6RlknY2oNTdQ==", + "dependencies": { + "@tanstack/virtual-core": "3.11.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.11.2.tgz", + "integrity": "sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -844,6 +1017,16 @@ "node": ">= 8" } }, + "node_modules/aos": { + "version": "3.0.0-beta.6", + "resolved": "https://registry.npmjs.org/aos/-/aos-3.0.0-beta.6.tgz", + "integrity": "sha512-VLWrpq8bfAWcetynVHMMrqdC+89Qq/Ym6UBJbHB4crIwp3RR8uq1dNGgsFzoDl03S43rlVMK+na3r5+oUCZsYw==", + "dependencies": { + "classlist-polyfill": "^1.2.0", + "lodash.debounce": "^4.0.8", + "lodash.throttle": "^4.1.1" + } + }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -1268,12 +1451,25 @@ "node": ">= 6" } }, + "node_modules/classlist-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz", + "integrity": "sha512-GzIjNdcEtH4ieA2S8NmrSxv7DfEV5fmixQeyTmqmRmRJPGpRBaSnA2a0VrCjyT8iW8JjEdMbKzDotAJf+ajgaQ==" + }, "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==", "license": "MIT" }, + "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", @@ -3373,6 +3569,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -3380,6 +3581,11 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4908,6 +5114,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, "node_modules/tailwindcss": { "version": "3.4.17", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", diff --git a/client/package.json b/client/package.json index a7a845e..beb97e0 100644 --- a/client/package.json +++ b/client/package.json @@ -9,8 +9,10 @@ "lint": "next lint" }, "dependencies": { + "@headlessui/react": "^2.1.3", "react": "^18", "react-dom": "^18", + "aos": "^3.0.0-beta.6", "next": "14.2.23" }, "devDependencies": { diff --git a/client/src/app/(auth)/layout.tsx b/client/src/app/(auth)/layout.tsx new file mode 100644 index 0000000..cbf25ea --- /dev/null +++ b/client/src/app/(auth)/layout.tsx @@ -0,0 +1,15 @@ +import PageIllustration from "@/components/page-illustration"; + +export default function AuthLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( +
+ + + {children} +
+ ); +} diff --git a/client/src/app/(auth)/reset-password/page.tsx b/client/src/app/(auth)/reset-password/page.tsx new file mode 100644 index 0000000..7e51243 --- /dev/null +++ b/client/src/app/(auth)/reset-password/page.tsx @@ -0,0 +1,45 @@ +export const metadata = { + title: "Reset Password - Open PRO", + description: "Page description", +}; + +import Link from "next/link"; + +export default function ResetPassword() { + return ( +
+
+
+ {/* Section header */} +
+

+ Reset your password +

+
+ {/* Contact form */} +
+
+ + +
+
+ +
+
+
+
+
+ ); +} diff --git a/client/src/app/(auth)/signin/page.tsx b/client/src/app/(auth)/signin/page.tsx new file mode 100644 index 0000000..62d5307 --- /dev/null +++ b/client/src/app/(auth)/signin/page.tsx @@ -0,0 +1,82 @@ +export const metadata = { + title: "Sign In - Open PRO", + description: "Page description", +}; + +import Link from "next/link"; + +export default function SignIn() { + return ( +
+
+
+ {/* Section header */} +
+

+ Welcome back +

+
+ {/* Contact form */} +
+
+
+ + +
+
+
+ + + Forgot? + +
+ +
+
+
+ +
+ or +
+ +
+
+ {/* Bottom link */} +
+ Don't you have an account?{" "} + + Sign Up + +
+
+
+
+ ); +} diff --git a/client/src/app/(auth)/signup/page.tsx b/client/src/app/(auth)/signup/page.tsx new file mode 100644 index 0000000..8708750 --- /dev/null +++ b/client/src/app/(auth)/signup/page.tsx @@ -0,0 +1,104 @@ +export const metadata = { + title: "Sign Up - Open PRO", + description: "Page description", +}; + +import Link from "next/link"; + +export default function SignUp() { + return ( +
+
+
+ {/* Section header */} +
+

+ Create an account +

+
+ {/* Contact form */} +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+ or +
+ +
+
+ {/* Bottom link */} +
+ Already have an account?{" "} + + Sign in + +
+
+
+
+ ); +} diff --git a/client/src/app/(default)/layout.tsx b/client/src/app/(default)/layout.tsx new file mode 100644 index 0000000..b3731b2 --- /dev/null +++ b/client/src/app/(default)/layout.tsx @@ -0,0 +1,31 @@ +"use client"; + +import { useEffect } from "react"; + +import AOS from "aos"; +import "aos/dist/aos.css"; + +import Footer from "@/components/ui/footer"; + +export default function DefaultLayout({ + children, +}: { + children: React.ReactNode; +}) { + useEffect(() => { + AOS.init({ + once: true, + disable: "phone", + duration: 600, + easing: "ease-out-sine", + }); + }); + + return ( + <> +
{children}
+ +