From 3c377694af078d7674a6a8c5e96b22eaf795c452 Mon Sep 17 00:00:00 2001 From: Suvan Gowri Shanker <118198968+greeenboi@users.noreply.github.com> Date: Tue, 6 Feb 2024 18:26:47 +0000 Subject: [PATCH 1/5] first commit to teams page --- app/team/page.tsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app/team/page.tsx b/app/team/page.tsx index a38e664..c6a17a0 100644 --- a/app/team/page.tsx +++ b/app/team/page.tsx @@ -2,9 +2,14 @@ import Link from "next/link"; export default function Page() { return ( -
-

Page

- Home -
+
+
+ {/* Add a hero image section here */} +
+
+ +
+ +
); } From 34800fcbb75f428844a1ee728cac9c9db903d9f2 Mon Sep 17 00:00:00 2001 From: greeenboi Date: Wed, 7 Feb 2024 00:04:36 +0530 Subject: [PATCH 2/5] first commit to teams page --- app/supabase.config.ts | 0 app/team/page.tsx | 4 +- components/ui/card.tsx | 79 ++++++++++++++++++++++++++ package-lock.json | 124 ++++++++++++++++++++++++++++++++++++++++- package.json | 1 + 5 files changed, 203 insertions(+), 5 deletions(-) create mode 100644 app/supabase.config.ts create mode 100644 components/ui/card.tsx diff --git a/app/supabase.config.ts b/app/supabase.config.ts new file mode 100644 index 0000000..e69de29 diff --git a/app/team/page.tsx b/app/team/page.tsx index c6a17a0..53cbc18 100644 --- a/app/team/page.tsx +++ b/app/team/page.tsx @@ -2,11 +2,11 @@ import Link from "next/link"; export default function Page() { return ( -
+
{/* Add a hero image section here */}
-
+
diff --git a/components/ui/card.tsx b/components/ui/card.tsx new file mode 100644 index 0000000..afa13ec --- /dev/null +++ b/components/ui/card.tsx @@ -0,0 +1,79 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Card = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +Card.displayName = "Card" + +const CardHeader = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardHeader.displayName = "CardHeader" + +const CardTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +CardTitle.displayName = "CardTitle" + +const CardDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +CardDescription.displayName = "CardDescription" + +const CardContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)) +CardContent.displayName = "CardContent" + +const CardFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardFooter.displayName = "CardFooter" + +export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } diff --git a/package-lock.json b/package-lock.json index 70923d0..3a9a84d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "founder_new_website", "version": "0.1.0", "dependencies": { + "@supabase/supabase-js": "^2.39.3", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "lucide-react": "^0.323.0", @@ -289,6 +290,73 @@ "node": ">=14" } }, + "node_modules/@supabase/functions-js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.2.0.tgz", + "integrity": "sha512-lAmxD/mZ8vk2mg1CmXQWzK5mOHk7kDxAnxoyqUj2BVPvacEZ52P8nFkInEuSMqx6P6FKy64selW1Vyhui9racA==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/gotrue-js": { + "version": "2.62.2", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.62.2.tgz", + "integrity": "sha512-AP6e6W9rQXFTEJ7sTTNYQrNf0LCcnt1hUW+RIgUK+Uh3jbWvcIST7wAlYyNZiMlS9+PYyymWQ+Ykz/rOYSO0+A==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/node-fetch": { + "version": "2.6.15", + "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz", + "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.9.2.tgz", + "integrity": "sha512-I6yHo8CC9cxhOo6DouDMy9uOfW7hjdsnCxZiaJuIVZm1dBGTFiQPgfMa9zXCamEWzNyWRjZvupAUuX+tqcl5Sw==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.9.3.tgz", + "integrity": "sha512-lAp50s2n3FhGJFq+wTSXLNIDPw5Y0Wxrgt44eM5nLSA3jZNUUP3Oq2Ccd1CbZdVntPCWLZvJaU//pAd2NE+QnQ==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14", + "@types/phoenix": "^1.5.4", + "@types/ws": "^8.5.10", + "ws": "^8.14.2" + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.5.tgz", + "integrity": "sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.39.3", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.39.3.tgz", + "integrity": "sha512-NoltJSaJNKDJNutO5sJPAAi5RIWrn1z2XH+ig1+cHDojT6BTN7TvZPNa3Kq3gFQWfO5H1N9El/bCTZJ3iFW2kQ==", + "dependencies": { + "@supabase/functions-js": "^2.1.5", + "@supabase/gotrue-js": "^2.60.0", + "@supabase/node-fetch": "^2.6.14", + "@supabase/postgrest-js": "^1.9.0", + "@supabase/realtime-js": "^2.9.3", + "@supabase/storage-js": "^2.5.4" + } + }, "node_modules/@swc/helpers": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", @@ -301,11 +369,15 @@ "version": "20.11.16", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz", "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==", - "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, + "node_modules/@types/phoenix": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.4.tgz", + "integrity": "sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==" + }, "node_modules/@types/prop-types": { "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", @@ -338,6 +410,14 @@ "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", "dev": true }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", @@ -1726,6 +1806,11 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -1752,8 +1837,7 @@ "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/update-browserslist-db": { "version": "1.0.13", @@ -1790,6 +1874,20 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -1888,6 +1986,26 @@ "node": ">=8" } }, + "node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/yaml": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", diff --git a/package.json b/package.json index cd1108e..b02df9c 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "lint": "next lint" }, "dependencies": { + "@supabase/supabase-js": "^2.39.3", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "lucide-react": "^0.323.0", From 6e34af02869b60dbc87f738e77f1c4f8f6752ce5 Mon Sep 17 00:00:00 2001 From: greeenboi Date: Wed, 7 Feb 2024 00:48:15 +0530 Subject: [PATCH 3/5] added supabase config --- app/globals.css | 4 +++- app/layout.tsx | 13 +++++++------ app/supabase.config.ts | 6 ++++++ components/ui/sonner.tsx | 31 +++++++++++++++++++++++++++++++ next.config.mjs | 11 ++++++++++- package-lock.json | 21 +++++++++++++++++++++ package.json | 2 ++ tailwind.config.ts | 3 +++ 8 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 components/ui/sonner.tsx diff --git a/app/globals.css b/app/globals.css index 6a75725..b4a1963 100644 --- a/app/globals.css +++ b/app/globals.css @@ -73,4 +73,6 @@ body { @apply bg-background text-foreground; } -} \ No newline at end of file +} + +@import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap') \ No newline at end of file diff --git a/app/layout.tsx b/app/layout.tsx index 3314e47..e62ea9d 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,13 +1,11 @@ -import type { Metadata } from "next"; +'use client' import { Inter } from "next/font/google"; import "./globals.css"; +import { Toaster } from "@/components/ui/sonner" const inter = Inter({ subsets: ["latin"] }); -export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", -}; + export default function RootLayout({ children, @@ -16,7 +14,10 @@ export default function RootLayout({ }>) { return ( - {children} + + {children} + + ); } diff --git a/app/supabase.config.ts b/app/supabase.config.ts index e69de29..0a69cc7 100644 --- a/app/supabase.config.ts +++ b/app/supabase.config.ts @@ -0,0 +1,6 @@ +import { createClient } from "@supabase/supabase-js"; + +const SUPABASE_URL = process.env.NEXT_PUBLIC_SUPABASE_PROJECT_URL; +const SUPABASE_ANON_KEY = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY; + +export const supabase = createClient(SUPABASE_URL || '', SUPABASE_ANON_KEY || ''); diff --git a/components/ui/sonner.tsx b/components/ui/sonner.tsx new file mode 100644 index 0000000..452f4d9 --- /dev/null +++ b/components/ui/sonner.tsx @@ -0,0 +1,31 @@ +"use client" + +import { useTheme } from "next-themes" +import { Toaster as Sonner } from "sonner" + +type ToasterProps = React.ComponentProps + +const Toaster = ({ ...props }: ToasterProps) => { + const { theme = "system" } = useTheme() + + return ( + + ) +} + +export { Toaster } diff --git a/next.config.mjs b/next.config.mjs index 4678774..0033652 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,4 +1,13 @@ /** @type {import('next').NextConfig} */ -const nextConfig = {}; +const nextConfig = { + images: { + remotePatterns: [ + { + protocol: 'https', + hostname: 'eedplvopkhwuhhquagfw.supabase.co', + }, + ], + }, +}; export default nextConfig; diff --git a/package-lock.json b/package-lock.json index 3a9a84d..b720ea2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,8 +13,10 @@ "clsx": "^2.1.0", "lucide-react": "^0.323.0", "next": "14.1.0", + "next-themes": "^0.2.1", "react": "^18", "react-dom": "^18", + "sonner": "^1.4.0", "tailwind-merge": "^2.2.1", "tailwindcss-animate": "^1.0.7" }, @@ -1147,6 +1149,16 @@ } } }, + "node_modules/next-themes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", + "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==", + "peerDependencies": { + "next": "*", + "react": "*", + "react-dom": "*" + } + }, "node_modules/next/node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -1562,6 +1574,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/sonner": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.4.0.tgz", + "integrity": "sha512-nvkTsIuOmi9e5Wz5If8ldasJjZNVfwiXYijBi2dbijvTQnQppvMcXTFNxL/NUFWlI2yJ1JX7TREDsg+gYm9WyA==", + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", diff --git a/package.json b/package.json index b02df9c..72e2a54 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,10 @@ "clsx": "^2.1.0", "lucide-react": "^0.323.0", "next": "14.1.0", + "next-themes": "^0.2.1", "react": "^18", "react-dom": "^18", + "sonner": "^1.4.0", "tailwind-merge": "^2.2.1", "tailwindcss-animate": "^1.0.7" }, diff --git a/tailwind.config.ts b/tailwind.config.ts index 84287e8..9c45add 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -18,6 +18,9 @@ const config = { }, }, extend: { + fontFamily: { + sans: ["Lato", "sans-serif"], + }, colors: { border: "hsl(var(--border))", input: "hsl(var(--input))", From ff8746481060a7f8f04a5e8fc623512a05ded723 Mon Sep 17 00:00:00 2001 From: greeenboi Date: Wed, 7 Feb 2024 00:48:41 +0530 Subject: [PATCH 4/5] added function to fetch team members from db --- app/team/page.tsx | 53 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/app/team/page.tsx b/app/team/page.tsx index 53cbc18..ec8817d 100644 --- a/app/team/page.tsx +++ b/app/team/page.tsx @@ -1,15 +1,62 @@ -import Link from "next/link"; +'use client' +import { useEffect, useState } from "react"; +import { supabase } from "../supabase.config"; +import { toast } from "sonner" +import { Card } from "@/components/ui/card"; +import Image from "next/image"; + +interface TeamData { + name: string; + rollno: string; + image: string; + position: string; + tagline: string; +} export default function Page() { + + const [teamData, setTeamData] = useState(); + + useEffect(() => { + const fetchData = async () => { + const { data , error } = await supabase + .from('team') + .select(`name, rollno, image, position, tagline`) + .returns(); + + if (error) { + console.log('Error fetching data:', error); + toast.error('Error fetching data'); + return; + } + else { + console.log('Data fetched successfully:', data); + setTeamData(data ); + toast.success('Data fetched successfully'); + } + }; + + fetchData(); + }, []); + return ( -
+
+ {/* Navbar */}
{/* Add a hero image section here */}
+

Our Team

+ {teamData && teamData.map((teamMember) => ( + + {teamMember.name} +

+

+
+ ))}
- + {/* footer */}
); } From ded2f333f511fcbd9c1276c1060aca5cd27f68af Mon Sep 17 00:00:00 2001 From: greeenboi Date: Sat, 10 Feb 2024 01:34:56 +0530 Subject: [PATCH 5/5] gallery is done --- app/gallery/page.tsx | 72 +++++++++++++++++++-- app/globals.css | 2 +- components/spinner/spinner.tsx | 43 +++++++++++++ components/ui/progress.tsx | 28 +++++++++ package-lock.json | 110 +++++++++++++++++++++++++++++++-- package.json | 1 + 6 files changed, 245 insertions(+), 11 deletions(-) create mode 100644 components/spinner/spinner.tsx create mode 100644 components/ui/progress.tsx diff --git a/app/gallery/page.tsx b/app/gallery/page.tsx index a38e664..60395ae 100644 --- a/app/gallery/page.tsx +++ b/app/gallery/page.tsx @@ -1,10 +1,72 @@ -import Link from "next/link"; +'use client' + +import { useEffect, useState } from "react"; +import { supabase } from "../supabase.config"; +import { Card } from "@/components/ui/card"; +import Image from "next/image"; +import { Progress } from "@/components/ui/progress"; +import { toast } from "sonner"; +import Spinner from "@/components/spinner/spinner"; + export default function Page() { + const [images, setImages] = useState(['']); + const [loading, setLoading] = useState(false); + const [progress, setProgress] = useState(13) + useEffect(() => { + async function listFiles() { + setLoading(true); + let { data, error } = await supabase.storage.from('gallery').list('our past events') + setProgress(50); + if (error) { + console.error('Error listing files:', error) + setProgress(99); + toast.error('Error listing files'); + return + } + if (data) { + // console.log(data); + let newImages = []; + for (let file of data) { + if (file.name.endsWith('.png') || file.name.endsWith('.jpg') || file.name.endsWith('.JPG') || file.name.endsWith('.jpeg')) { + const { data: publicURL } = supabase.storage.from('gallery').getPublicUrl(`our past events/${file.name}`); + + if (error) { + console.error('Error getting public URL:', error); + continue; + } + + // console.log(publicURL); + newImages.push(publicURL.publicUrl); + } + } + setProgress(100); + setLoading(false); + setImages(newImages); + } + } + listFiles(); + + }, []) + return ( -
-

Page

- Home -
+
+ {/* Navbar */} +
+

Gallery

+ {loading ? ( + + ) : ( +
+ {images.slice(1).map((imageURL, index) => ( + + Gallery Image + + ))} +
+ )} +
+ {/* footer */} +
); } diff --git a/app/globals.css b/app/globals.css index b4a1963..92123f4 100644 --- a/app/globals.css +++ b/app/globals.css @@ -75,4 +75,4 @@ } } -@import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap') \ No newline at end of file +@import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap') diff --git a/components/spinner/spinner.tsx b/components/spinner/spinner.tsx new file mode 100644 index 0000000..596d472 --- /dev/null +++ b/components/spinner/spinner.tsx @@ -0,0 +1,43 @@ +import React from 'react'; + +const Spinner = () => ( + + + + +); + +export default Spinner; \ No newline at end of file diff --git a/components/ui/progress.tsx b/components/ui/progress.tsx new file mode 100644 index 0000000..5c87ea4 --- /dev/null +++ b/components/ui/progress.tsx @@ -0,0 +1,28 @@ +"use client" + +import * as React from "react" +import * as ProgressPrimitive from "@radix-ui/react-progress" + +import { cn } from "@/lib/utils" + +const Progress = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, value, ...props }, ref) => ( + + + +)) +Progress.displayName = ProgressPrimitive.Root.displayName + +export { Progress } diff --git a/package-lock.json b/package-lock.json index b720ea2..c81dbfc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "founder_new_website", "version": "0.1.0", "dependencies": { + "@radix-ui/react-progress": "^1.0.3", "@supabase/supabase-js": "^2.39.3", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", @@ -292,6 +293,105 @@ "node": ">=14" } }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.0.3.tgz", + "integrity": "sha512-5G6Om/tYSxjSeEdrb1VfKkfZfn/1IlPWd731h2RfPuSbIfNUgfqAwbKfJCg/PP6nuUCTrYzalwHSpSinoWoCag==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@supabase/functions-js": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.2.0.tgz", @@ -384,13 +484,13 @@ "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", - "dev": true + "devOptional": true }, "node_modules/@types/react": { "version": "18.2.54", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.54.tgz", "integrity": "sha512-039k+vrVJymDoe2y+HLk3O3oI3sa+C8KNjuDKofqrIJK26ramnqLNj9VJTaxAzFGMvpW/79HrrAJapHzpQ9fGQ==", - "dev": true, + "devOptional": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -401,7 +501,7 @@ "version": "18.2.18", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", - "dev": true, + "devOptional": true, "dependencies": { "@types/react": "*" } @@ -410,7 +510,7 @@ "version": "0.16.8", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "dev": true + "devOptional": true }, "node_modules/@types/ws": { "version": "8.5.10", @@ -724,7 +824,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/didyoumean": { "version": "1.2.2", diff --git a/package.json b/package.json index 72e2a54..d711659 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "lint": "next lint" }, "dependencies": { + "@radix-ui/react-progress": "^1.0.3", "@supabase/supabase-js": "^2.39.3", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0",