Skip to content

Commit c790749

Browse files
Shadow-MMNMiracle Nnaji
andauthored
feat: implement Coming Soon page and consolidate placeholder routes (#412)
* feat: implement Coming Soon page and consolidate placeholder routes - Create reusable ComingSoon component with roadmap feature listing - Add /coming-soon route (App Router) - Redirect defunct sidebar and landing routes to Coming Soon - Replace placeholder pages with centralized ComingSoon component - Ensure clean, typed, and accessible implementation * refactor(ui): redesign ComingSoon section with abstract editorial layout - Replaced bordered card grid with gradient feature blocks - Removed SaaS-style badge chips and standard dashboard styling - Introduced oversized low-opacity icon backgrounds - Updated motion animations to subtle scale transitions - Increased spacing and typography for a more landing-page aesthetic - Reduced structural similarity to previous UI implementation * refactor(coming-soon): add stable feature IDs and replace index-based keys - Added `id` property to Feature type - Assigned unique stable IDs to each feature entry - Replaced index-based React keys with feature.id - Preserved index only for animation delay logic - Improved reconciliation stability for reordering and filtering --------- Co-authored-by: Miracle Nnaji <nnajimakuochukwu4@example.com>
1 parent 193bf5f commit c790749

13 files changed

Lines changed: 184 additions & 6 deletions

File tree

app/(landing)/bounties/page.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import React from 'react';
1+
import { redirect } from 'next/navigation';
22
import { Metadata } from 'next';
33
import { generatePageMetadata } from '@/lib/metadata';
44

55
export const metadata: Metadata = generatePageMetadata('grants');
66

77
const GrantPage = () => {
8+
redirect('/coming-soon');
89
return (
910
<div className='mx-auto mt-10 max-w-[1440px] px-5 py-5 text-center text-4xl font-bold text-white md:px-[50px] lg:px-[100px]'>
1011
Bounties Page

app/(landing)/contact/page.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import React from 'react';
1+
import { redirect } from 'next/navigation';
22
import { Metadata } from 'next';
33
import { generatePageMetadata } from '@/lib/metadata';
44

55
export const metadata: Metadata = generatePageMetadata('contact');
66

77
const ContactPage = () => {
8+
redirect('/coming-soon');
89
return (
910
<div className='mx-auto mt-10 max-w-[1440px] px-5 py-5 text-center text-4xl font-bold text-white md:px-[50px] lg:px-[100px]'>
1011
Contact Page

app/(landing)/grants/page.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import React from 'react';
1+
import { redirect } from 'next/navigation';
22
import { Metadata } from 'next';
33
import { generatePageMetadata } from '@/lib/metadata';
44

55
export const metadata: Metadata = generatePageMetadata('grants');
66

77
const GrantPage = () => {
8+
redirect('/coming-soon');
89
return (
910
<div className='mx-auto mt-10 max-w-[1440px] px-5 py-5 text-center text-4xl font-bold text-white md:px-[50px] lg:px-[100px]'>
1011
Grant Page

app/(landing)/organizations/[id]/grants/page.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
import { redirect } from 'next/navigation';
12
import { AuthGuard } from '@/components/auth';
23
import Loading from '@/components/Loading';
34

45
export default function GrantsPage() {
6+
redirect('/coming-soon');
57
return (
68
<AuthGuard redirectTo='/auth?mode=signin' fallback={<Loading />}>
79
<div className='min-h-screen bg-black text-white'>
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import React from 'react';
2-
1+
import { redirect } from 'next/navigation';
32
const Page = () => {
4-
return <div>Projects</div>;
3+
redirect('/coming-soon');
54
};
65

76
export default Page;

app/coming-soon/page.tsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import ComingSoon from '@/components/ComingSoon';
2+
import { Footer, Navbar } from '@/components/landing-page';
3+
import React from 'react';
4+
5+
const page = () => {
6+
return (
7+
<>
8+
<Navbar />
9+
<main className='min-h-[calc(100vh-56px)] flex-1'>
10+
<ComingSoon />
11+
</main>
12+
<Footer />
13+
</>
14+
);
15+
};
16+
17+
export default page;

app/me/analytics/page.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { redirect } from 'next/navigation';
2+
3+
const page = () => {
4+
redirect('/coming-soon');
5+
};
6+
7+
export default page;

app/me/hackathons/page.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { redirect } from 'next/navigation';
2+
3+
const page = () => {
4+
redirect('/coming-soon');
5+
};
6+
7+
export default page;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { redirect } from 'next/navigation';
2+
3+
const page = () => {
4+
redirect('/coming-soon');
5+
};
6+
7+
export default page;

app/me/notifications/page.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { redirect } from 'next/navigation';
2+
3+
const page = () => {
4+
redirect('/coming-soon');
5+
};
6+
7+
export default page;

0 commit comments

Comments
 (0)