From d3e30eaa9f68545906d7c2a8d621edd13ea6cb36 Mon Sep 17 00:00:00 2001 From: sasha-astiadi Date: Sun, 14 Sep 2025 16:39:05 +0200 Subject: [PATCH] add --- package-lock.json | 19 ++++++++++++ package.json | 1 + src/app/(main)/page.tsx | 6 ++-- src/components/GridStats.tsx | 0 src/components/NavLinks.tsx | 11 ++++--- src/components/ui/Button.tsx | 59 ++++++++++++++++++++++++++++++++++++ 6 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 src/components/GridStats.tsx create mode 100644 src/components/ui/Button.tsx diff --git a/package-lock.json b/package-lock.json index d4824bc..53892f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "next": "^14.0.4", "popmotion": "^11.0.5", "react": "^18.2.0", + "react-countup": "^6.5.3", "react-dom": "^18.2.0", "react-icons": "^5.5.0", "react-type-animation": "^3.2.0", @@ -5156,6 +5157,12 @@ "node": ">=10" } }, + "node_modules/countup.js": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.9.0.tgz", + "integrity": "sha512-llqrvyXztRFPp6+i8jx25phHWcVWhrHO4Nlt0uAOSKHB8778zzQswa4MU3qKBvkXfJKftRYFJuVHez67lyKdHg==", + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -11817,6 +11824,18 @@ "react-dom": ">=16.8.0" } }, + "node_modules/react-countup": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/react-countup/-/react-countup-6.5.3.tgz", + "integrity": "sha512-udnqVQitxC7QWADSPDOxVWULkLvKUWrDapn5i53HE4DPRVgs+Y5rr4bo25qEl8jSh+0l2cToJgGMx+clxPM3+w==", + "license": "MIT", + "dependencies": { + "countup.js": "^2.8.0" + }, + "peerDependencies": { + "react": ">= 16.3.0" + } + }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", diff --git a/package.json b/package.json index 3385f6c..bb05e2e 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "next": "^14.0.4", "popmotion": "^11.0.5", "react": "^18.2.0", + "react-countup": "^6.5.3", "react-dom": "^18.2.0", "react-icons": "^5.5.0", "react-type-animation": "^3.2.0", diff --git a/src/app/(main)/page.tsx b/src/app/(main)/page.tsx index 5b914e3..14dd795 100644 --- a/src/app/(main)/page.tsx +++ b/src/app/(main)/page.tsx @@ -17,12 +17,12 @@ export default function Home() {
-
- -
+
+ +
diff --git a/src/components/GridStats.tsx b/src/components/GridStats.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/NavLinks.tsx b/src/components/NavLinks.tsx index 31eca5d..dcec93c 100644 --- a/src/components/NavLinks.tsx +++ b/src/components/NavLinks.tsx @@ -9,10 +9,13 @@ export function NavLinks() { let timeoutRef = useRef(null) return [ - ['About', '/#about'], - ['Benefits', '/#benefits'], - ['Features', '/#features'], - ['Use Cases', '/#usecases'], + ['About', '/#home-about'], + ['Marketplace', '/#companies'], + ['Technology', '/#stack-section'], + ['How it works', '/#steps'], + ['Use Cases', '/#clickable-gallery'], + ['Coming Soon', '/#use-cases'], + ['Get Started', '/#call-to-action'], ['FAQs', '/#faqs'], ].map(([label, href], index) => ( , 'color'> + | (Omit, 'color'> & { + href?: undefined + }) + ) + +export function Button({ className, ...props }: ButtonProps) { + props.variant ??= 'solid' + if (props.variant === 'solid') { + props.color ??= 'primary' + } else { + props.color ??= 'gray' + } + + let variantClass: string | undefined; + if (props.variant === 'outline') { + variantClass = variantStyles.outline[props.color as keyof typeof variantStyles.outline]; + } else if (props.variant === 'solid') { + variantClass = variantStyles.solid[props.color as keyof typeof variantStyles.solid]; + } + + className = clsx( + baseStyles[props.variant], + variantClass, + className, + ) + + return typeof props.href === 'undefined' ? ( +