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: