@@ -6,13 +6,16 @@ import {
6
6
} from '~/components/ui/Dialog'
7
7
import { useButtonStore } from '~/app/providers/button-store-Providers'
8
8
import { ImageType } from '~/types'
9
- import { Image , Tabs , Tab , Card , CardHeader , Table , TableHeader , TableColumn , TableBody , TableRow , TableCell } from '@nextui-org/react'
10
- import { Aperture , Camera } from 'lucide-react'
9
+ import { Image , Tabs , Tab , Card , CardHeader , Table , TableHeader , TableColumn , TableBody , TableRow , TableCell , Button } from '@nextui-org/react'
10
+ import { Aperture , Camera , Image as ImageIcon , Languages , CalendarDays , X , SunMedium , MoonStar } from 'lucide-react'
11
+ import * as React from 'react'
12
+ import { useTheme } from 'next-themes'
11
13
12
14
export default function MasonryItem ( ) {
13
15
const { MasonryView, MasonryViewData, setMasonryView, setMasonryViewData } = useButtonStore (
14
16
( state ) => state ,
15
17
)
18
+ const { theme, setTheme } = useTheme ( )
16
19
17
20
return (
18
21
< Dialog
@@ -26,8 +29,36 @@ export default function MasonryItem() {
26
29
} }
27
30
>
28
31
< DialogContent className = "flex flex-col" >
29
- < div >
30
- < p > { MasonryViewData . detail } </ p >
32
+ < div className = "flex items-center" >
33
+ < div className = "flex-1" >
34
+ < p > { MasonryViewData . detail } </ p >
35
+ </ div >
36
+ < div className = "flex items-center space-x-4" >
37
+ < Button
38
+ isIconOnly
39
+ variant = "shadow"
40
+ size = "sm"
41
+ aria-label = "切换主题"
42
+ className = "bg-white dark:bg-gray-800"
43
+ onClick = { ( ) => setTheme ( theme === 'light' ? 'dark' : 'light' ) }
44
+ >
45
+ { theme === 'light' ? < SunMedium size = { 20 } /> : < MoonStar size = { 20 } /> }
46
+ </ Button >
47
+ < Button
48
+ isIconOnly
49
+ variant = "shadow"
50
+ size = "sm"
51
+ aria-label = "关闭"
52
+ className = "bg-white dark:bg-gray-800"
53
+ onClick = { ( ) => {
54
+ setMasonryView ( false )
55
+ setMasonryViewData ( { } as ImageType )
56
+ } }
57
+ >
58
+ < X size = { 20 } />
59
+ < span className = "sr-only" > Close</ span >
60
+ </ Button >
61
+ </ div >
31
62
</ div >
32
63
< div className = "h-full flex flex-col space-y-2 md:grid md:gap-2 md:grid-cols-3 xl:gap-4" >
33
64
< div className = "md:col-span-2 md:flex md:justify-center md:max-h-[90vh]" >
@@ -44,32 +75,47 @@ export default function MasonryItem() {
44
75
< Tab
45
76
key = "detail"
46
77
title = {
47
- < div className = "flex items-center space-x-2" >
48
- < Aperture />
78
+ < div className = "flex items-center space-x-2 select-none " >
79
+ < ImageIcon />
49
80
< span > 详情</ span >
50
81
</ div >
51
82
}
52
83
>
53
84
< div className = "flex flex-col space-y-2" >
54
85
< Card className = "py-4" shadow = "sm" >
55
86
< CardHeader className = "pb-0 pt-2 px-4 flex-col items-start" >
56
- < p className = "text-tiny uppercase font-bold" > 相机</ p >
87
+ < div className = "flex items-center space-x-1" >
88
+ < Camera size = { 20 } />
89
+ < p className = "text-tiny uppercase font-bold select-none" > 相机</ p >
90
+ </ div >
57
91
< h4 className = "font-bold text-large" > { MasonryViewData ?. exif ?. model || 'N&A' } </ h4 >
58
92
</ CardHeader >
59
93
</ Card >
60
94
< Card className = "py-4" shadow = "sm" >
61
95
< CardHeader className = "pb-0 pt-2 px-4 flex-col items-start" >
62
- < p className = "text-tiny uppercase font-bold" > 相片描述</ p >
96
+ < div className = "flex items-center space-x-1" >
97
+ < Languages size = { 20 } />
98
+ < p className = "text-tiny uppercase font-bold select-none" > 相片描述</ p >
99
+ </ div >
63
100
< h4 className = "font-bold text-large" > { MasonryViewData . detail || 'N&A' } </ h4 >
64
101
</ CardHeader >
65
102
</ Card >
103
+ < Card className = "py-4" shadow = "sm" >
104
+ < CardHeader className = "pb-0 pt-2 px-4 flex-col items-start" >
105
+ < div className = "flex items-center space-x-1" >
106
+ < CalendarDays size = { 20 } />
107
+ < p className = "text-tiny uppercase font-bold select-none" > 拍摄时间</ p >
108
+ </ div >
109
+ < h4 className = "font-bold text-large" > { MasonryViewData ?. exif ?. data_time || 'N&A' } </ h4 >
110
+ </ CardHeader >
111
+ </ Card >
66
112
</ div >
67
113
</ Tab >
68
114
< Tab
69
115
key = "exif"
70
116
title = {
71
- < div className = "flex items-center space-x-2" >
72
- < Camera />
117
+ < div className = "flex items-center space-x-2 select-none " >
118
+ < Aperture />
73
119
< span > Exif</ span >
74
120
</ div >
75
121
}
0 commit comments