diff --git a/src/app/admin/pages/[id]/page.tsx b/src/app/admin/pages/[id]/page.tsx index cf03f15..9ccee7e 100644 --- a/src/app/admin/pages/[id]/page.tsx +++ b/src/app/admin/pages/[id]/page.tsx @@ -7,6 +7,7 @@ import { useState, useEffect, useCallback } from 'react' import { useRouter, useParams } from 'next/navigation' +import { ArrowSquareOut } from '@phosphor-icons/react' import { AdminLayout } from '@/components/admin/admin-layout' import { ErrorAlert } from '@/components/error-alert' import { PageForm } from '@/components/admin/pages/page-form' @@ -157,9 +158,22 @@ export default function AdminPageEditorPage() { return (
-

- {isCreateMode ? 'Create Page' : 'Edit Page'} -

+
+

+ {isCreateMode ? 'Create Page' : 'Edit Page'} +

+ {!isCreateMode && form.slug && ( + + + )} +
{error && setError(null)} />} diff --git a/src/components/admin/pages/page-row.test.tsx b/src/components/admin/pages/page-row.test.tsx index 110021f..5036a22 100644 --- a/src/components/admin/pages/page-row.test.tsx +++ b/src/components/admin/pages/page-row.test.tsx @@ -66,12 +66,19 @@ describe('PageRow', () => { expect(screen.getByText('Draft')).toBeInTheDocument() }) - it('renders edit link to admin page editor', () => { + it('makes the whole card a link to the edit page', () => { render() const editLink = screen.getByRole('link', { name: /edit about this community/i }) expect(editLink).toHaveAttribute('href', '/admin/pages/page-about') }) + it('renders view link that opens public page in new tab', () => { + render() + const viewLink = screen.getByRole('link', { name: /view about this community/i }) + expect(viewLink).toHaveAttribute('href', '/p/about') + expect(viewLink).toHaveAttribute('target', '_blank') + }) + it('renders delete button', () => { render() expect(screen.getByRole('button', { name: /delete about this community/i })).toBeInTheDocument() diff --git a/src/components/admin/pages/page-row.tsx b/src/components/admin/pages/page-row.tsx index d95e95e..d772e20 100644 --- a/src/components/admin/pages/page-row.tsx +++ b/src/components/admin/pages/page-row.tsx @@ -4,7 +4,7 @@ */ import Link from 'next/link' -import { PencilSimple, TrashSimple } from '@phosphor-icons/react' +import { ArrowSquareOut, TrashSimple } from '@phosphor-icons/react' import { cn } from '@/lib/utils' import type { PageTreeNode, PageStatus } from '@/lib/api/types' @@ -30,17 +30,22 @@ export function PageRow({ page, depth, onDelete }: PageRowProps) {
0 && 'ml-6' )} > +

{page.title}

/p/{page.slug}

-
+
{STATUS_LABELS[page.status]} - -