File tree Expand file tree Collapse file tree 7 files changed +437
-48
lines changed
Expand file tree Collapse file tree 7 files changed +437
-48
lines changed Original file line number Diff line number Diff line change 1+ 'use client' // Error boundaries must be Client Components
2+
3+ import { useEffect } from 'react'
4+
5+ export default function Error ( {
6+ error,
7+ reset,
8+ } : {
9+ error : Error & { digest ?: string }
10+ reset : ( ) => void
11+ } ) {
12+ useEffect ( ( ) => {
13+ // Log the error to an error reporting service
14+ console . error ( error )
15+ } , [ error ] )
16+
17+ return (
18+ < div >
19+ < h2 > Something went wrong!</ h2 >
20+ < button
21+ onClick = {
22+ // Attempt to recover by trying to re-render the segment
23+ ( ) => reset ( )
24+ }
25+ >
26+ Try again
27+ </ button >
28+ </ div >
29+ )
30+ }
Original file line number Diff line number Diff line change 1+ import { Button } from '@/components/ui/button'
2+ import { Input } from '@/components/ui/input'
3+ import { createLibrary } from '@/lib/api/library'
4+
5+ import {
6+ Breadcrumb ,
7+ BreadcrumbItem ,
8+ BreadcrumbLink ,
9+ BreadcrumbList ,
10+ BreadcrumbPage ,
11+ BreadcrumbSeparator ,
12+ } from '@/components/ui/breadcrumb'
13+ import Link from 'next/link'
14+ import { redirect } from 'next/navigation'
15+
16+ export default function NewLibrary ( ) {
17+ async function create ( formData : FormData ) {
18+ 'use server'
19+
20+ const name = formData . get ( 'name' ) as string
21+
22+ await createLibrary ( {
23+ name,
24+ } )
25+
26+ redirect ( '/libraries' )
27+ }
28+
29+ return (
30+ < div className = "space-y-4" >
31+ < h1 className = "text-2xl font-semibold" > Create Library</ h1 >
32+ < Breadcrumb >
33+ < BreadcrumbList >
34+ < BreadcrumbItem >
35+ < Link href = "/" passHref legacyBehavior >
36+ < BreadcrumbLink > Home</ BreadcrumbLink >
37+ </ Link >
38+ </ BreadcrumbItem >
39+ < BreadcrumbSeparator />
40+ < BreadcrumbItem >
41+ < Link href = "/libraries" passHref legacyBehavior >
42+ < BreadcrumbLink > Libraries</ BreadcrumbLink >
43+ </ Link >
44+ </ BreadcrumbItem >
45+ < BreadcrumbSeparator />
46+ < BreadcrumbItem >
47+ < BreadcrumbPage > Create a Library</ BreadcrumbPage >
48+ </ BreadcrumbItem >
49+ </ BreadcrumbList >
50+ </ Breadcrumb >
51+
52+ < form action = { create } className = "space-y-4 md:max-w-[40%]" >
53+ < Input name = "name" placeholder = "Name" required />
54+ < Button type = "submit" > Create</ Button >
55+ </ form >
56+ </ div >
57+ )
58+ }
Original file line number Diff line number Diff line change 66 BreadcrumbPage ,
77 BreadcrumbSeparator ,
88} from '@/components/ui/breadcrumb'
9+ import { Button } from '@/components/ui/button'
910import {
1011 Pagination ,
1112 PaginationContent ,
@@ -58,20 +59,25 @@ export default async function Libraries({
5859 return (
5960 < div >
6061 < h1 className = "text-2xl font-semibold" > Libraries</ h1 >
61- < Breadcrumb >
62- < BreadcrumbList >
63- < BreadcrumbItem >
64- < Link href = "/" passHref legacyBehavior >
65- < BreadcrumbLink > Home</ BreadcrumbLink >
66- </ Link >
67- </ BreadcrumbItem >
68- < BreadcrumbSeparator />
62+ < div className = "flex justify-between items-center" >
63+ < Breadcrumb >
64+ < BreadcrumbList >
65+ < BreadcrumbItem >
66+ < Link href = "/" passHref legacyBehavior >
67+ < BreadcrumbLink > Home</ BreadcrumbLink >
68+ </ Link >
69+ </ BreadcrumbItem >
70+ < BreadcrumbSeparator />
6971
70- < BreadcrumbItem >
71- < BreadcrumbPage > Libraries</ BreadcrumbPage >
72- </ BreadcrumbItem >
73- </ BreadcrumbList >
74- </ Breadcrumb >
72+ < BreadcrumbItem >
73+ < BreadcrumbPage > Libraries</ BreadcrumbPage >
74+ </ BreadcrumbItem >
75+ </ BreadcrumbList >
76+ </ Breadcrumb >
77+ < Button asChild >
78+ < Link href = "/libraries/new" > Create a Library</ Link >
79+ </ Button >
80+ </ div >
7581
7682 < Table >
7783 { /* <TableCaption>List of books available in the library.</TableCaption> */ }
You can’t perform that action at this time.
0 commit comments