From 222a73785f203a7e059c4f69de4a6dc861c3f091 Mon Sep 17 00:00:00 2001 From: Kapelo256 <105801565+Kapelo256@users.noreply.github.com> Date: Thu, 25 Jul 2024 21:41:11 -0400 Subject: [PATCH] 1st commit --- README.md | 2 + next.config.mjs | 10 +- package-lock.json | 271 ++++++++++++++++++++++++ package.json | 1 + public/login.png | Bin 0 -> 3360 bytes public/noCover.png | Bin 0 -> 33560 bytes src/app/globals.css | 10 +- src/app/layout.tsx | 25 ++- src/app/page.tsx | 22 +- src/app/profile/[id]/page.tsx | 56 +++++ src/app/settings/page.tsx | 7 + src/app/sign-in/[[...sign-in]]/page.tsx | 8 + src/app/sign-up/[[...sign-up]]/page.tsx | 8 + src/components/Ad.tsx | 52 +++++ src/components/AddPost.tsx | 55 +++++ src/components/Birthdays.tsx | 41 ++++ src/components/Comments.tsx | 82 +++++++ src/components/Feed.tsx | 15 ++ src/components/FriendRequests.tsx | 103 +++++++++ src/components/LeftMenu.tsx | 67 ++++++ src/components/MobileMenu.tsx | 43 ++++ src/components/Navbar.tsx | 65 ++++++ src/components/Post.tsx | 90 ++++++++ src/components/ProfileCard.tsx | 55 +++++ src/components/RightMenu.tsx | 23 ++ src/components/Stories.tsx | 46 ++++ src/components/UserInfoCard.tsx | 58 +++++ src/components/UserMediaCard.tsx | 53 +++++ src/middleware.ts | 16 ++ 29 files changed, 1277 insertions(+), 7 deletions(-) create mode 100644 README.md create mode 100644 public/login.png create mode 100644 public/noCover.png create mode 100644 src/app/profile/[id]/page.tsx create mode 100644 src/app/settings/page.tsx create mode 100644 src/app/sign-in/[[...sign-in]]/page.tsx create mode 100644 src/app/sign-up/[[...sign-up]]/page.tsx create mode 100644 src/components/Ad.tsx create mode 100644 src/components/AddPost.tsx create mode 100644 src/components/Birthdays.tsx create mode 100644 src/components/Comments.tsx create mode 100644 src/components/Feed.tsx create mode 100644 src/components/FriendRequests.tsx create mode 100644 src/components/LeftMenu.tsx create mode 100644 src/components/MobileMenu.tsx create mode 100644 src/components/Navbar.tsx create mode 100644 src/components/Post.tsx create mode 100644 src/components/ProfileCard.tsx create mode 100644 src/components/RightMenu.tsx create mode 100644 src/components/Stories.tsx create mode 100644 src/components/UserInfoCard.tsx create mode 100644 src/components/UserMediaCard.tsx create mode 100644 src/middleware.ts diff --git a/README.md b/README.md new file mode 100644 index 00000000..5ec42a65 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Snippets +VSCode Snippets For Web Developers \ No newline at end of file diff --git a/next.config.mjs b/next.config.mjs index 7ef6aac0..48405961 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -2,7 +2,15 @@ const nextConfig = { experimental: { reactCompiler: true, - ppr: 'incremental' + ppr: "incremental", + }, + images: { + remotePatterns: [ + { + protocol: "https", + hostname: "images.pexels.com", + }, + ], }, }; diff --git a/package-lock.json b/package-lock.json index c9cc8cb7..ba7c40a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "soci-start", "version": "0.1.0", "dependencies": { + "@clerk/nextjs": "^5.2.6", "babel-plugin-react-compiler": "^0.0.0-experimental-938cd9a-20240601", "next": "15.0.0-rc.0", "react": "19.0.0-rc-f994737d14-20240522", @@ -95,6 +96,129 @@ "node": ">=6.9.0" } }, + "node_modules/@clerk/backend": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@clerk/backend/-/backend-1.4.1.tgz", + "integrity": "sha512-cERP/71pIGZvA7WtJaMCrTf33pu4H6NI89LJXXBcUnMTj8YJy7XAGURKi8jzFTUAeMiQXjV7NESzkEzRWtgCGw==", + "license": "MIT", + "dependencies": { + "@clerk/shared": "2.4.0", + "@clerk/types": "4.9.0", + "cookie": "0.5.0", + "snakecase-keys": "5.4.4", + "tslib": "2.4.1" + }, + "engines": { + "node": ">=18.17.0" + } + }, + "node_modules/@clerk/backend/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@clerk/clerk-react": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-5.2.9.tgz", + "integrity": "sha512-OL2MYVH4SX718gFTUukpy/0jHQUSqAaAxO3sp61WcUrt5T/Djczg4tfTCWoW688kWmqVsinU9+PxlOKNLKrUhA==", + "license": "MIT", + "dependencies": { + "@clerk/shared": "2.4.0", + "@clerk/types": "4.9.0", + "tslib": "2.4.1" + }, + "engines": { + "node": ">=18.17.0" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-beta", + "react-dom": ">=18 || >=19.0.0-beta" + } + }, + "node_modules/@clerk/clerk-react/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@clerk/nextjs": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@clerk/nextjs/-/nextjs-5.2.6.tgz", + "integrity": "sha512-xfNkAG4nyJc2I0dfTYe7ofbeA/m6dAlElb8awO6oYqVqxvUnXwkXqoJdKQHAjCTfsMJZEaeNWQi3/OPfEqUghQ==", + "license": "MIT", + "dependencies": { + "@clerk/backend": "1.4.1", + "@clerk/clerk-react": "5.2.9", + "@clerk/shared": "2.4.0", + "@clerk/types": "4.9.0", + "crypto-js": "4.2.0", + "path-to-regexp": "6.2.2", + "server-only": "0.0.1", + "tslib": "2.4.1" + }, + "engines": { + "node": ">=18.17.0" + }, + "peerDependencies": { + "next": "^13.5.4 || ^14.0.3 || >=15.0.0-rc", + "react": ">=18 || >=19.0.0-beta", + "react-dom": ">=18 || >=19.0.0-beta" + } + }, + "node_modules/@clerk/nextjs/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "license": "0BSD" + }, + "node_modules/@clerk/shared": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-2.4.0.tgz", + "integrity": "sha512-2UI0OeRB8IIliiALydLTQjYYj3qhPNb/LU9/3tfBbz/PNbCEZkd18AuYKB9N3zIm2MIHbOSMLt7SoZJKsRB8+A==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@clerk/types": "4.9.0", + "glob-to-regexp": "0.4.1", + "js-cookie": "3.0.5", + "std-env": "^3.7.0", + "swr": "^2.2.0" + }, + "engines": { + "node": ">=18.17.0" + }, + "peerDependencies": { + "react": ">=18 || >=19.0.0-beta", + "react-dom": ">=18 || >=19.0.0-beta" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@clerk/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.9.0.tgz", + "integrity": "sha512-t+PDtVItnwit8u+YefMBVfJVdENdRAndMiIwGGJgnZ7+DyPjOwqomVy3VmcyycUdkdHcnx16UKm3a0rh2JQG/w==", + "license": "MIT", + "dependencies": { + "csstype": "3.1.1" + }, + "engines": { + "node": ">=18.17.0" + } + }, + "node_modules/@clerk/types/node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "license": "MIT" + }, "node_modules/@emnapi/runtime": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", @@ -1802,6 +1926,15 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1817,6 +1950,12 @@ "node": ">= 8" } }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -2019,6 +2158,16 @@ "node": ">=6.0.0" } }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -2963,6 +3112,12 @@ "node": ">=10.13.0" } }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -3695,6 +3850,15 @@ "jiti": "bin/jiti.js" } }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -3878,6 +4042,15 @@ "loose-envify": "cli.js" } }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/lru-cache": { "version": "10.2.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", @@ -3888,6 +4061,18 @@ "node": "14 || >=16.14" } }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4072,6 +4257,16 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -4353,6 +4548,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "license": "MIT" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -4939,6 +5140,12 @@ "node": ">=10" } }, + "node_modules/server-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", + "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==", + "license": "MIT" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -5089,6 +5296,42 @@ "node": ">=8" } }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/snakecase-keys": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-5.4.4.tgz", + "integrity": "sha512-YTywJG93yxwHLgrYLZjlC75moVEX04LZM4FHfihjHe1FCXm+QaLOFfSf535aXOAd0ArVQMWUAe8ZPm4VtWyXaA==", + "license": "MIT", + "dependencies": { + "map-obj": "^4.1.0", + "snake-case": "^3.0.4", + "type-fest": "^2.5.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/snakecase-keys/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -5107,6 +5350,12 @@ "node": ">=0.10.0" } }, + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "license": "MIT" + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -5385,6 +5634,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/swr": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.2.5.tgz", + "integrity": "sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==", + "license": "MIT", + "dependencies": { + "client-only": "^0.0.1", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/tailwindcss": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", @@ -5683,6 +5945,15 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "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 9cb8d864..54052566 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "lint": "next lint" }, "dependencies": { + "@clerk/nextjs": "^5.2.6", "babel-plugin-react-compiler": "^0.0.0-experimental-938cd9a-20240601", "next": "15.0.0-rc.0", "react": "19.0.0-rc-f994737d14-20240522", diff --git a/public/login.png b/public/login.png new file mode 100644 index 0000000000000000000000000000000000000000..b634d021ab6d69cc65f146b1e5633ab48d88d6a6 GIT binary patch literal 3360 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 { return ( - - {children} - + + + +
+ +
+
+ {children} +
+ + +
); -} \ No newline at end of file +} diff --git a/src/app/page.tsx b/src/app/page.tsx index 3d365a49..e2cc0b18 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,26 @@ +import AddPost from "@/components/AddPost" +import Feed from "@/components/Feed" +import LeftMenu from "@/components/LeftMenu" +import RightMenu from "@/components/RightMenu" +import Stories from "@/components/Stories" + const Homepage = () => { return ( -
Homepage
+
+
+ +
+
+
+ + + +
+
+
+ +
+
) } diff --git a/src/app/profile/[id]/page.tsx b/src/app/profile/[id]/page.tsx new file mode 100644 index 00000000..248bc5ad --- /dev/null +++ b/src/app/profile/[id]/page.tsx @@ -0,0 +1,56 @@ +import Feed from "@/components/Feed"; +import LeftMenu from "@/components/LeftMenu"; +import RightMenu from "@/components/RightMenu"; +import Image from "next/image"; + +const ProfilePage = () => { + return ( +
+
+ +
+
+
+
+
+ + +
+

Elva Weaver

+
+
+ 123 + Posts +
+
+ 1.2K + Followers +
+
+ 13K + Following +
+
+
+ +
+
+
+ +
+
+ ); +}; + +export default ProfilePage; diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx new file mode 100644 index 00000000..149eb16b --- /dev/null +++ b/src/app/settings/page.tsx @@ -0,0 +1,7 @@ +const Settings = () => { + return ( +
Settings
+ ) +} + +export default Settings \ No newline at end of file diff --git a/src/app/sign-in/[[...sign-in]]/page.tsx b/src/app/sign-in/[[...sign-in]]/page.tsx new file mode 100644 index 00000000..31c6eff4 --- /dev/null +++ b/src/app/sign-in/[[...sign-in]]/page.tsx @@ -0,0 +1,8 @@ +import { SignIn } from "@clerk/nextjs"; + +export default function Page() { + return ( +
+ +
+)} \ No newline at end of file diff --git a/src/app/sign-up/[[...sign-up]]/page.tsx b/src/app/sign-up/[[...sign-up]]/page.tsx new file mode 100644 index 00000000..f12e909f --- /dev/null +++ b/src/app/sign-up/[[...sign-up]]/page.tsx @@ -0,0 +1,8 @@ +import { SignUp } from "@clerk/nextjs"; + +export default function Page() { + return ( +
+ +
+ )} \ No newline at end of file diff --git a/src/components/Ad.tsx b/src/components/Ad.tsx new file mode 100644 index 00000000..1bdb5d98 --- /dev/null +++ b/src/components/Ad.tsx @@ -0,0 +1,52 @@ +import Image from "next/image"; + +const Ad = ({ size }: { size: "sm" | "md" | "lg" }) => { + return ( +
+ {/* TOP */} +
+ Sponsored Ads + +
+ {/* BOTTOM */} +
+
+ +
+
+ + BigChef Lounger +
+

+ {size === "sm" + ? "Lorem 20 Lorem 20 Lorem 20 Lorem 20 Lorem 20 Lorem 20 Lorem 20" + : size === "md" + ? "Lorem 20 Lorem 20 Lorem 20 Lorem 20 Lorem 20 Lorem 20 Lorem 20" + : "Lorem 20 Lorem 20 Lorem 20 Lorem 20 Lorem 20 Lorem 20 Lorem 20"} +

+ +
+
+ ); +}; + +export default Ad; diff --git a/src/components/AddPost.tsx b/src/components/AddPost.tsx new file mode 100644 index 00000000..5ab5006d --- /dev/null +++ b/src/components/AddPost.tsx @@ -0,0 +1,55 @@ +import Image from "next/image"; +import React from "react"; + +const AddPost = () => { + return ( +
+ {/* AVATAR */} + + {/* POST */} +
+ {/* INPUT */} +
+ + +
+ {/* POST OPTIONS */} +
+
+ + Photo +
+
+ + Video +
+
+ + Poll +
+
+ + Event +
+
+
+
+ ); +}; + +export default AddPost; diff --git a/src/components/Birthdays.tsx b/src/components/Birthdays.tsx new file mode 100644 index 00000000..140f9bf1 --- /dev/null +++ b/src/components/Birthdays.tsx @@ -0,0 +1,41 @@ +import Image from "next/image"; +import Link from "next/link"; + +const Birthdays = () => { + return ( +
+ {/* TOP */} +
+ Birthdays +
+ {/* USER */} +
+
+ + Wayne Burton +
+
+ +
+
+ {/* UPCOMING */} +
+ + + Upcoming Birthdays + See other 16 have upcoming birthdays + +
+
+ ); +}; + +export default Birthdays; diff --git a/src/components/Comments.tsx b/src/components/Comments.tsx new file mode 100644 index 00000000..54c37bdd --- /dev/null +++ b/src/components/Comments.tsx @@ -0,0 +1,82 @@ +import Image from "next/image"; +import React from "react"; + +const Comments = () => { + return ( +
+ {/* WRITE */} +
+
+ +
+ + +
+
+
+ {/* COMMENTS*/} +
+ {/* COMMENTS*/} +
+ {/* AVATAR */} + + {/* DESC */} +
+ Bernice Spencer +

+ Lorem ipsum dolor, sit amet consectetur adipisicing elit. Hic + optio doloremque ratione perferendis dolor nemo quo nihil esse + sequi doloribus? +

+
+
+ + | + 123 Likes +
+
Reply
+
+
+ {/* ICON */} + +
+
+
+ ); +}; + +export default Comments; diff --git a/src/components/Feed.tsx b/src/components/Feed.tsx new file mode 100644 index 00000000..f4af6ae0 --- /dev/null +++ b/src/components/Feed.tsx @@ -0,0 +1,15 @@ +import React from 'react' +import Post from './Post' + +const Feed = () => { + return ( +
+ + + + +
+ ) +} + +export default Feed \ No newline at end of file diff --git a/src/components/FriendRequests.tsx b/src/components/FriendRequests.tsx new file mode 100644 index 00000000..c6e46674 --- /dev/null +++ b/src/components/FriendRequests.tsx @@ -0,0 +1,103 @@ +import Image from "next/image"; +import Link from "next/link"; + +const FriendRequests = () => { + return ( +
+ {/* TOP */} +
+ Friend Requests + + See all + +
+ {/* USER */} +
+
+ + Wayne Burton +
+
+ + +
+
+
+
+ + Wayne Burton +
+
+ + +
+
+
+
+ + Wayne Burton +
+
+ + +
+
+
+ ); +}; + +export default FriendRequests; diff --git a/src/components/LeftMenu.tsx b/src/components/LeftMenu.tsx new file mode 100644 index 00000000..021b001d --- /dev/null +++ b/src/components/LeftMenu.tsx @@ -0,0 +1,67 @@ +import Link from "next/link" +import ProfileCard from "./ProfileCard" +import Image from "next/image" +import Ad from "./Ad" + +const LeftMenu = ({type}: {type:"home" | "profile"}) => { + return ( +
+ {type === "home" && } +
+ + + My Posts + +
+ + + Activity + +
+ + + Marketplace + +
+ + + Events + +
+ + + Albums + +
+ + + Videos + +
+ + + News + +
+ + + Courses + +
+ + + Lists + +
+ + + Settings + +
+
+ +
+ ) +} + +export default LeftMenu \ No newline at end of file diff --git a/src/components/MobileMenu.tsx b/src/components/MobileMenu.tsx new file mode 100644 index 00000000..3e7743d4 --- /dev/null +++ b/src/components/MobileMenu.tsx @@ -0,0 +1,43 @@ +"use client"; + +import Link from "next/link"; +import { useState } from "react"; + +const MobileMenu = () => { + const [isOpen, setIsopen] = useState(false); + return ( +
+
setIsopen((prev) => !prev)} + > +
+
+
+
+ {isOpen && ( +
+ Home + Friends + Groups + Stories + Login +
+ )} +
+ ); +}; + +export default MobileMenu; diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx new file mode 100644 index 00000000..13c791bb --- /dev/null +++ b/src/components/Navbar.tsx @@ -0,0 +1,65 @@ +import Link from 'next/link' +import MobileMenu from './MobileMenu' +import Image from 'next/image' +import { ClerkLoaded, ClerkLoading, SignedIn, SignedOut, SignIn, UserButton } from '@clerk/nextjs' + +const Navbar = () => { + return ( +
+ {/* LEFT */} +
+ + LAMASOCIAL + +
+ {/* center */} +
+ {/* LINKS */} +
+ + Homepage + Homepage + + + Friends + Friends + + + Stories + Stories + +
+
+ + +
+
+ {/* right */} +
+ +
+ + + +
+ +
+
+ +
+ +
+ +
+ + Login/Register +
+
+
+ +
+
+ ) +} + +export default Navbar \ No newline at end of file diff --git a/src/components/Post.tsx b/src/components/Post.tsx new file mode 100644 index 00000000..65983aa4 --- /dev/null +++ b/src/components/Post.tsx @@ -0,0 +1,90 @@ +import Image from "next/image"; +import React from "react"; +import Comments from "./Comments"; + +const Feed = () => { + return ( +
+ {/* USER */} +
+
+ + Kamel Kapelo +
+ +
+ {/* DESC */} +
+
+ +
+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Recusandae + quis temporibus esse a provident voluptatum explicabo modi rerum + voluptate. Blanditiis non iusto temporibus id? Dolorum dolor ipsa + dolore adipisci tempore. +

+
+ {/* INTERACTION */} +
+
+
+ + | + + 123 Likes + +
+
+ + | + + 123 Comments + +
+
+
+
+ + | + + 123 Shares + +
+
+
+ +
+ ); +}; + +export default Feed; diff --git a/src/components/ProfileCard.tsx b/src/components/ProfileCard.tsx new file mode 100644 index 00000000..2baa3662 --- /dev/null +++ b/src/components/ProfileCard.tsx @@ -0,0 +1,55 @@ +import Image from "next/image"; + +const ProfileCard = () => { + return ( +
+
+ + +
+
+ Edward Gabriel May +
+
+ + + +
+ 500 Followers +
+ +
+
+ ); +}; + +export default ProfileCard; diff --git a/src/components/RightMenu.tsx b/src/components/RightMenu.tsx new file mode 100644 index 00000000..926e7faf --- /dev/null +++ b/src/components/RightMenu.tsx @@ -0,0 +1,23 @@ +import Ad from "./Ad" +import Birthdays from "./Birthdays" +import FriendRequests from "./FriendRequests" +import UserInfoCard from "./UserInfoCard" +import UserMediaCard from "./UserMediaCard" + +const RightMenu = ({userId}: {userId?: string }) => { + return ( +
+ {userId ? ( + <> + + + + ) : null} + + + +
+ ) +} + +export default RightMenu \ No newline at end of file diff --git a/src/components/Stories.tsx b/src/components/Stories.tsx new file mode 100644 index 00000000..8cee4e7b --- /dev/null +++ b/src/components/Stories.tsx @@ -0,0 +1,46 @@ +import Image from 'next/image' +import React from 'react' + +const Stories = () => { + return ( +
+
+ {/* STORY */} +
+ + Ricky +
+
+ + Ricky +
+
+ + Ricky +
+
+ + Ricky +
+
+ + Ricky +
+
+ + Ricky +
+
+ + Ricky +
+
+ + Ricky +
+
+
+ ) +} + +export default Stories \ No newline at end of file diff --git a/src/components/UserInfoCard.tsx b/src/components/UserInfoCard.tsx new file mode 100644 index 00000000..c84c94bb --- /dev/null +++ b/src/components/UserInfoCard.tsx @@ -0,0 +1,58 @@ +import Image from "next/image"; +import Link from "next/link"; + +const UserInfoCard = ({ userId }: { userId: string }) => { + return ( +
+ {/* TOP */} +
+ User Information + + See all + +
+ {/* BOTTOM */} +
+
+ Loyd Fleming + @jonathan +
+

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Cum,

+
+ + + Living in Denver + +
+
+ + + Went to Edgar High School + +
+
+ + + Work at Apple Inc. + +
+
+
+ + + lama.dev + +
+
+ + Joined November 2024 +
+
+ + Block User +
+
+ ); +}; + +export default UserInfoCard; diff --git a/src/components/UserMediaCard.tsx b/src/components/UserMediaCard.tsx new file mode 100644 index 00000000..9af70cba --- /dev/null +++ b/src/components/UserMediaCard.tsx @@ -0,0 +1,53 @@ +import Image from "next/image"; +import Link from "next/link"; + +const UserMediaCard = ({ userId }: { userId: string }) => { + return ( +
+ {/* TOP */} +
+ User Media + + See all + +
+ {/* BOTTOM */} +
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+ ); +}; + +export default UserMediaCard; diff --git a/src/middleware.ts b/src/middleware.ts new file mode 100644 index 00000000..49991a8e --- /dev/null +++ b/src/middleware.ts @@ -0,0 +1,16 @@ +import { auth, clerkMiddleware, createRouteMatcher } from "@clerk/nextjs/server"; + +const isProtectedRoute = createRouteMatcher(["/settings(.*)"]); + +export default clerkMiddleware((auth, req) => { + if(isProtectedRoute(req)) auth().protect(); +}); + +export const config = { + matcher: [ + // Skip Next.js internals and all static files, unless found in search params + '/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)', + // Always run for API routes + '/(api|trpc)(.*)', + ], +}; \ No newline at end of file