diff --git a/app/page.tsx b/app/page.tsx
index f0df315..9a0d815 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,5 +1,6 @@
import ContributionsTable from "@/components/contributions-table/table";
import Toolbar from "@/components/filters/toolbar";
+import CtaBanner from "@/components/cta-banner";
import { title } from "@/components/primitives";
import { queryDatabase } from "@/lib/notion";
import { SearchParams } from "@/types/filters";
@@ -31,7 +32,8 @@ export default async function Home({ searchParams }: IHomeProps) {
Find Collaborations,
Collect Kudos
-
+
+
{
+ const [isClientReady, setIsClientReady] = useState(false);
+ const [isVisible, setIsVisible] = useState(true);
+
+ const localStorageKey = "ctaBannerClosed";
+ const handleClose = () => {
+ setIsVisible(false);
+ localStorage.setItem(localStorageKey, "true");
+ };
+
+ useEffect(() => {
+ const isBannerClosed = localStorage.getItem(localStorageKey) === "true";
+ setIsClientReady(true);
+ setIsVisible(!isBannerClosed);
+ }, []);
+
+ if (!isClientReady) {
+ return (
+
+
+
+ );
+ }
+
+ if (!isVisible) {
+ return null;
+ }
+
+ return (
+
+
+
+ Maintaining a project? Reach +1000 builders on the #1 Polkadot
+ ecosystem contribution hub
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default CtaBanner;
diff --git a/components/navbar.tsx b/components/navbar.tsx
index 23103e3..f863030 100644
--- a/components/navbar.tsx
+++ b/components/navbar.tsx
@@ -55,6 +55,21 @@ export const Navbar = () => {
+
+
+
+
+
+
+
);
diff --git a/data/config.ts b/data/config.ts
index 8540434..b1c2f09 100644
--- a/data/config.ts
+++ b/data/config.ts
@@ -7,6 +7,7 @@ export const SITE_CONFIG = {
twitter: "https://twitter.com/kudos_ink",
bugReport:
"https://github.com/kudos-ink/portal/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=",
+ includeProject: "https://github.com/kudos-ink/portal/issues",
},
};
diff --git a/package.json b/package.json
index 7f7ad4a..56f0c96 100644
--- a/package.json
+++ b/package.json
@@ -13,12 +13,14 @@
"@nextui-org/autocomplete": "^2.0.9",
"@nextui-org/button": "2.0.26",
"@nextui-org/checkbox": "^2.0.25",
+ "@nextui-org/card": "^2.0.24",
"@nextui-org/chip": "^2.0.25",
"@nextui-org/dropdown": "^2.1.16",
"@nextui-org/image": "^2.0.24",
"@nextui-org/link": "2.0.26",
"@nextui-org/navbar": "2.0.27",
"@nextui-org/select": "^2.1.20",
+ "@nextui-org/skeleton": "^2.0.24",
"@nextui-org/slider": "^2.2.5",
"@nextui-org/spinner": "^2.0.24",
"@nextui-org/system": "2.0.15",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 67c45a0..2f18d90 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -11,6 +11,9 @@ dependencies:
'@nextui-org/button':
specifier: 2.0.26
version: 2.0.26(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.17)(framer-motion@10.16.16)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.1.19)
+ '@nextui-org/card':
+ specifier: ^2.0.24
+ version: 2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.17)(framer-motion@10.16.16)(react-dom@18.2.0)(react@18.2.0)
'@nextui-org/checkbox':
specifier: ^2.0.25
version: 2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.17)(react-dom@18.2.0)(react@18.2.0)
@@ -32,6 +35,9 @@ dependencies:
'@nextui-org/select':
specifier: ^2.1.20
version: 2.1.20(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.17)(@types/react@18.2.45)(framer-motion@10.16.16)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.1.19)
+ '@nextui-org/skeleton':
+ specifier: ^2.0.24
+ version: 2.0.24(@nextui-org/theme@2.1.17)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.1.19)
'@nextui-org/slider':
specifier: ^2.2.5
version: 2.2.5(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.17)(framer-motion@10.16.16)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.1.19)
@@ -502,6 +508,31 @@ packages:
- tailwind-variants
dev: false
+ /@nextui-org/card@2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.17)(framer-motion@10.16.16)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-16uAS0i6+EO+u8aqtmaCXatjovsyuTq51JwCLBlB67OldfgXoYcYl3GaE2VoZdEwxVu1G/qypDfXv29k46nZuA==}
+ peerDependencies:
+ '@nextui-org/system': '>=2.0.0'
+ '@nextui-org/theme': '>=2.1.0'
+ framer-motion: '>=4.0.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/ripple': 2.0.24(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.17)(framer-motion@10.16.16)(react-dom@18.2.0)(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system': 2.0.15(@nextui-org/theme@2.1.17)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.1.19)
+ '@nextui-org/theme': 2.1.17(tailwindcss@3.4.0)
+ '@nextui-org/use-aria-button': 2.0.6(react@18.2.0)
+ '@react-aria/button': 3.9.1(react@18.2.0)
+ '@react-aria/focus': 3.16.0(react@18.2.0)
+ '@react-aria/interactions': 3.20.1(react@18.2.0)
+ '@react-aria/utils': 3.23.0(react@18.2.0)
+ '@react-types/shared': 3.22.0(react@18.2.0)
+ framer-motion: 10.16.16(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
/@nextui-org/checkbox@2.0.25(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.17)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-X6WkwPbZlDvioEcXF6HhKH21wD6OK+3+FSroKkzMPQLJrj2KYUIYGbiuw9rT9aCtdjbT+6HUCv+FA8/cBQr7cA==}
peerDependencies:
@@ -902,6 +933,23 @@ packages:
react: 18.2.0
dev: false
+ /@nextui-org/skeleton@2.0.24(@nextui-org/theme@2.1.17)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.1.19):
+ resolution: {integrity: sha512-bsb+lYugSfQV3RHrEHLbHhkkeslaxybnnT4z485Y/GBYTENOiHIOnWFWntfxCbjZ6vCewGlfgnphj6zeqlk20g==}
+ peerDependencies:
+ '@nextui-org/theme': '>=2.1.0'
+ react: '>=18'
+ react-dom: '>=18'
+ dependencies:
+ '@nextui-org/react-utils': 2.0.10(react@18.2.0)
+ '@nextui-org/shared-utils': 2.0.4(react@18.2.0)
+ '@nextui-org/system-rsc': 2.0.11(@nextui-org/theme@2.1.17)(react@18.2.0)(tailwind-variants@0.1.19)
+ '@nextui-org/theme': 2.1.17(tailwindcss@3.4.0)
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ transitivePeerDependencies:
+ - tailwind-variants
+ dev: false
+
/@nextui-org/slider@2.2.5(@nextui-org/system@2.0.15)(@nextui-org/theme@2.1.17)(framer-motion@10.16.16)(react-dom@18.2.0)(react@18.2.0)(tailwind-variants@0.1.19):
resolution: {integrity: sha512-dC6HHMmtn2WvxDmbY/Dq51XJjQ7cAnjZsuYVIvhwIiCLDG8QnEIhmYN0DQp/6oeZsCHnyMHC4DmtgOiJL0eXrQ==}
peerDependencies: