first commit
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
import { Placeholder } from "@/components/Placeholder";
|
||||
import { Hash } from "lucide-react";
|
||||
|
||||
export default function BrowsePage() {
|
||||
return (
|
||||
<Placeholder
|
||||
eyebrow="Messaging"
|
||||
title="Browse channels"
|
||||
subtitle="Discover and join channels"
|
||||
icon={<Hash size={26} />}
|
||||
body="A channel directory with search, categories and one-click join. Gated by the `channelBrowser` feature flag."
|
||||
/>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import { ChannelView } from "@/components/message/ChannelView";
|
||||
|
||||
export default async function ChannelPage({ params }: { params: Promise<{ id: string }> }) {
|
||||
const { id } = await params;
|
||||
return <ChannelView channelId={id} />;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export default function DmsPage() {
|
||||
redirect("/c/d_liam");
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import { Placeholder } from "@/components/Placeholder";
|
||||
import { Send } from "lucide-react";
|
||||
|
||||
export default function DraftsPage() {
|
||||
return (
|
||||
<Placeholder
|
||||
eyebrow="Messaging"
|
||||
title="Drafts & sent"
|
||||
subtitle="Unsent drafts and scheduled messages"
|
||||
icon={<Send size={24} />}
|
||||
body="Scheduled sends from the composer land here until they're delivered. Gated by the `drafts` and `scheduledSend` feature flags."
|
||||
/>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { InboxView } from "@/components/inbox/InboxView";
|
||||
|
||||
export default function InboxPage() {
|
||||
return <InboxView />;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { AppShell } from "@/components/AppShell";
|
||||
|
||||
export default function AppLayout({ children }: { children: React.ReactNode }) {
|
||||
return <AppShell>{children}</AppShell>;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
"use client";
|
||||
|
||||
import { useEffect } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useChannels, useSdk } from "@lynkd/messaging-inbox-sdk";
|
||||
|
||||
/** Land on the first available channel (works for both mock + live IIOS ids). */
|
||||
export default function HomePage() {
|
||||
const router = useRouter();
|
||||
const { loading } = useSdk();
|
||||
const { starred, channels, dms } = useChannels();
|
||||
|
||||
useEffect(() => {
|
||||
if (loading) return;
|
||||
const first = starred[0] ?? channels[0] ?? dms[0];
|
||||
if (first) router.replace(`/c/${first.id}`);
|
||||
}, [loading, starred, channels, dms, router]);
|
||||
|
||||
return (
|
||||
<div className="flex flex-1 items-center justify-center text-muted">
|
||||
<div className="flex flex-col items-center gap-3">
|
||||
<div className="brand-mark h-10 w-10 animate-pulse rounded-card" />
|
||||
<span className="text-[13px]">Opening your workspace…</span>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { SavedView } from "@/components/saved/SavedView";
|
||||
|
||||
export default function SavedPage() {
|
||||
return <SavedView />;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import { SupportView } from "@/components/support/SupportView";
|
||||
|
||||
export default async function SupportTicketPage({ params }: { params: Promise<{ id: string }> }) {
|
||||
const { id } = await params;
|
||||
return <SupportView initialTicketId={id} />;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { SupportView } from "@/components/support/SupportView";
|
||||
|
||||
export default function SupportPage() {
|
||||
return <SupportView />;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
import { ThreadsView } from "@/components/threads/ThreadsView";
|
||||
|
||||
export default function ThreadsPage() {
|
||||
return <ThreadsView />;
|
||||
}
|
||||
Reference in New Issue
Block a user