diff --git a/dashboard/src/app/application/page.tsx b/dashboard/src/app/(inside)/application/page.tsx similarity index 100% rename from dashboard/src/app/application/page.tsx rename to dashboard/src/app/(inside)/application/page.tsx diff --git a/dashboard/src/app/(inside)/layout.tsx b/dashboard/src/app/(inside)/layout.tsx new file mode 100644 index 0000000..5c8f890 --- /dev/null +++ b/dashboard/src/app/(inside)/layout.tsx @@ -0,0 +1,37 @@ +import '../globals.css'; +import { Toaster } from '@/components/ui/sonner'; +import React from 'react'; +import { SidebarInset, SidebarProvider, SidebarTrigger } from '@/components/ui/sidebar'; +import { AppSidebar } from '@/components/app-sidebar'; +import { Separator } from '@/components/ui/separator'; +import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList } from '@/components/ui/breadcrumb'; + +export default function InsideLayout({ children }: Readonly<{ children: React.ReactNode }>) { + return ( + + + +
+ + + { + // TODO: implement dynamic Breadcrumbs + } + + + + + Ory Dashboard + + + + +
+
+ {children} +
+
+ +
+ ); +} diff --git a/dashboard/src/app/page.tsx b/dashboard/src/app/(inside)/page.tsx similarity index 100% rename from dashboard/src/app/page.tsx rename to dashboard/src/app/(inside)/page.tsx diff --git a/dashboard/src/app/user/[id]/page.tsx b/dashboard/src/app/(inside)/user/[id]/page.tsx similarity index 100% rename from dashboard/src/app/user/[id]/page.tsx rename to dashboard/src/app/(inside)/user/[id]/page.tsx diff --git a/dashboard/src/app/user/action.ts b/dashboard/src/app/(inside)/user/action.ts similarity index 100% rename from dashboard/src/app/user/action.ts rename to dashboard/src/app/(inside)/user/action.ts diff --git a/dashboard/src/app/user/data-table.tsx b/dashboard/src/app/(inside)/user/data-table.tsx similarity index 99% rename from dashboard/src/app/user/data-table.tsx rename to dashboard/src/app/(inside)/user/data-table.tsx index 5819331..6476d7f 100644 --- a/dashboard/src/app/user/data-table.tsx +++ b/dashboard/src/app/(inside)/user/data-table.tsx @@ -6,7 +6,7 @@ import { DataTable } from '@/components/ui/data-table'; import { CircleCheck, CircleX, Copy, MoreHorizontal, Trash, UserCheck, UserMinus, UserPen, UserX } from 'lucide-react'; import { HoverCard, HoverCardContent, HoverCardTrigger } from '@/components/ui/hover-card'; import React, { useEffect, useRef, useState } from 'react'; -import { FetchIdentityPageProps } from '@/app/user/page'; +import { FetchIdentityPageProps } from '@/app/(inside)/user/page'; import { Spinner } from '@/components/ui/spinner'; import { DropdownMenu, @@ -29,7 +29,7 @@ import { AlertDialogHeader, AlertDialogTitle, } from '@/components/ui/alert-dialog'; -import { blockIdentity, deleteIdentity, deleteIdentitySessions, unblockIdentity } from '@/app/user/action'; +import { blockIdentity, deleteIdentity, deleteIdentitySessions, unblockIdentity } from '@/app/(inside)/user/action'; interface IdentityDataTableProps { data: Identity[]; diff --git a/dashboard/src/app/user/page.tsx b/dashboard/src/app/(inside)/user/page.tsx similarity index 97% rename from dashboard/src/app/user/page.tsx rename to dashboard/src/app/(inside)/user/page.tsx index 6fe3108..f02c636 100644 --- a/dashboard/src/app/user/page.tsx +++ b/dashboard/src/app/(inside)/user/page.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { IdentityDataTable } from '@/app/user/data-table'; +import { IdentityDataTable } from '@/app/(inside)/user/data-table'; import { getIdentityApi } from '@/ory/sdk/server'; import { SearchInput } from '@/components/search-input'; diff --git a/dashboard/src/app/(outside)/unauthorised/page.tsx b/dashboard/src/app/(outside)/unauthorised/page.tsx new file mode 100644 index 0000000..dcd45fb --- /dev/null +++ b/dashboard/src/app/(outside)/unauthorised/page.tsx @@ -0,0 +1,11 @@ +import { ErrorDisplay } from '@/components/error'; + +export default async function UnauthorizedPage() { + return ( +
+ +
+ ); +} diff --git a/dashboard/src/app/layout.tsx b/dashboard/src/app/layout.tsx index 8fda46d..6c716cf 100644 --- a/dashboard/src/app/layout.tsx +++ b/dashboard/src/app/layout.tsx @@ -2,13 +2,8 @@ import type { Viewport } from 'next'; import { Inter } from 'next/font/google'; import './globals.css'; import { cn } from '@/lib/utils'; -import { Toaster } from '@/components/ui/sonner'; import React from 'react'; import { ThemeProvider } from 'next-themes'; -import { SidebarInset, SidebarProvider, SidebarTrigger } from '@/components/ui/sidebar'; -import { AppSidebar } from '@/components/app-sidebar'; -import { Separator } from '@/components/ui/separator'; -import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList } from '@/components/ui/breadcrumb'; const inter = Inter({ subsets: ['latin'] }); @@ -56,31 +51,7 @@ export default function RootLayout({ children }: Readonly<{ children: React.Reac enableSystem disableTransitionOnChange > - - - -
- - - { - // TODO: implement dynamic Breadcrumbs - } - - - - - Ory Dashboard - - - - -
-
- {children} -
-
- -
+ {children} diff --git a/dashboard/src/components/error.tsx b/dashboard/src/components/error.tsx index e264180..246431d 100644 --- a/dashboard/src/components/error.tsx +++ b/dashboard/src/components/error.tsx @@ -5,9 +5,9 @@ interface ErrorDisplayProps { export async function ErrorDisplay({ title, message }: ErrorDisplayProps) { return ( -
+ <>

{title}

{message}

-
+ ); } \ No newline at end of file