diff --git a/package-lock.json b/package-lock.json
index e4895e6..5909f97 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -36,6 +36,7 @@
"@studio-freight/react-lenis": "^0.0.47",
"@tabler/icons-react": "^3.2.0",
"@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
+ "@tanstack/react-table": "^8.16.0",
"@vercel/analytics": "^1.2.2",
"@vercel/speed-insights": "^1.0.10",
"class-variance-authority": "^0.7.0",
@@ -51,6 +52,7 @@
"preline": "^2.1.0",
"razorpay": "^2.9.3",
"react": "^18",
+ "react-csv": "^2.2.2",
"react-dom": "^18",
"react-hook-form": "^7.51.3",
"react-icons": "^5.1.0",
@@ -70,6 +72,7 @@
"@types/node": "^20",
"@types/nodemailer": "^6.4.14",
"@types/react": "^18.3.1",
+ "@types/react-csv": "^1.1.10",
"@types/react-dom": "^18",
"@types/shortid": "^0.0.32",
"autoprefixer": "^10.4.19",
@@ -2917,6 +2920,37 @@
"node": ">=4"
}
},
+ "node_modules/@tanstack/react-table": {
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.16.0.tgz",
+ "integrity": "sha512-rKRjnt8ostqN2fercRVOIH/dq7MAmOENCMvVlKx6P9Iokhh6woBGnIZEkqsY/vEJf1jN3TqLOb34xQGLVRuhAg==",
+ "dependencies": {
+ "@tanstack/table-core": "8.16.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
+ "node_modules/@tanstack/table-core": {
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.16.0.tgz",
+ "integrity": "sha512-dCG8vQGk4js5v88/k83tTedWOwjGnIyONrKpHpfmSJB8jwFHl8GSu1sBBxbtACVAPtAQgwNxl0rw1d3RqRM1Tg==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ }
+ },
"node_modules/@ts-morph/common": {
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.19.0.tgz",
@@ -3041,6 +3075,15 @@
"csstype": "^3.0.2"
}
},
+ "node_modules/@types/react-csv": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/@types/react-csv/-/react-csv-1.1.10.tgz",
+ "integrity": "sha512-PESAyASL7Nfi/IyBR3ufd8qZkyoS+7jOylKmJxRZUZLFASLo4NZaRsJ8rNP8pCcbIziADyWBbLPD1nPddhsL4g==",
+ "dev": true,
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/@types/react-dom": {
"version": "18.2.22",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.22.tgz",
@@ -8161,6 +8204,11 @@
"react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
+ "node_modules/react-csv": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/react-csv/-/react-csv-2.2.2.tgz",
+ "integrity": "sha512-RG5hOcZKZFigIGE8LxIEV/OgS1vigFQT4EkaHeKgyuCbUAu9Nbd/1RYq++bJcJJ9VOqO/n9TZRADsXNDR4VEpw=="
+ },
"node_modules/react-dom": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
diff --git a/package.json b/package.json
index c426c41..649ee15 100644
--- a/package.json
+++ b/package.json
@@ -38,6 +38,7 @@
"@studio-freight/react-lenis": "^0.0.47",
"@tabler/icons-react": "^3.2.0",
"@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
+ "@tanstack/react-table": "^8.16.0",
"@vercel/analytics": "^1.2.2",
"@vercel/speed-insights": "^1.0.10",
"class-variance-authority": "^0.7.0",
@@ -53,6 +54,7 @@
"preline": "^2.1.0",
"razorpay": "^2.9.3",
"react": "^18",
+ "react-csv": "^2.2.2",
"react-dom": "^18",
"react-hook-form": "^7.51.3",
"react-icons": "^5.1.0",
@@ -72,6 +74,7 @@
"@types/node": "^20",
"@types/nodemailer": "^6.4.14",
"@types/react": "^18.3.1",
+ "@types/react-csv": "^1.1.10",
"@types/react-dom": "^18",
"@types/shortid": "^0.0.32",
"autoprefixer": "^10.4.19",
diff --git a/src/app/(content)/layout.tsx b/src/app/(content)/layout.tsx
new file mode 100644
index 0000000..8de6bc4
--- /dev/null
+++ b/src/app/(content)/layout.tsx
@@ -0,0 +1,21 @@
+import Glow from "@/components/shared/glow";
+import { StarsCanvas } from "@/components/ui/Stars";
+import Footer from "@/components/widgets/Footer";
+import { Header } from "@/components/widgets/Header";
+import React from "react";
+
+function ContentLayout({ children }: { children: React.ReactNode }) {
+ return (
+ <>
+