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) => (
+
+
+
+
+
+ ))}
-
+ {/* 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) => (
+
+
+
+ ))}
+
+ )}
+
+ {/* 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",