|
1 | 1 | import React from 'react'; |
2 | 2 | import Label from './Label'; |
| 3 | +import { Star } from '@phosphor-icons/react'; |
3 | 4 |
|
4 | 5 | const LogMetadata = ({ metadata }) => { |
5 | 6 | if (!metadata) { |
6 | 7 | return null; |
7 | 8 | } |
8 | 9 |
|
| 10 | + const renderStars = (rating) => { |
| 11 | + const stars = []; |
| 12 | + for (let i = 0; i < 5; i++) { |
| 13 | + if (i < rating) { |
| 14 | + stars.push(<Star key={i} size={16} weight="fill" className="text-yellow-400" />); |
| 15 | + } else { |
| 16 | + stars.push(<Star key={i} size={16} weight="fill" className="text-gray-500" />); |
| 17 | + } |
| 18 | + } |
| 19 | + return <div className="flex ml-1 mt-1">{stars}</div>; |
| 20 | + }; |
| 21 | + |
9 | 22 | return ( |
10 | 23 | <aside className="sticky top-24"> |
11 | 24 | <div className="p-6 bg-gray-800/50 rounded-lg border border-gray-700/50"> |
12 | 25 | <h3 className="text-lg font-semibold text-gray-100 mb-4 border-b pb-2 border-gray-500">About Log</h3> |
13 | 26 | <div className="space-y-4"> |
14 | 27 | <div> |
15 | 28 | <Label>Title</Label> |
16 | | - <p className="text-gray-300">{metadata.title}</p> |
| 29 | + <p className="text-gray-300 ml-1 mt-1">{metadata.title}</p> |
17 | 30 | </div> |
18 | 31 | <div> |
19 | 32 | <Label>Category</Label> |
20 | | - <p className="text-gray-300">{metadata.category}</p> |
| 33 | + <p className="text-gray-300 ml-1 mt-1">{metadata.category}</p> |
21 | 34 | </div> |
22 | 35 | {metadata.author && ( |
23 | 36 | <div> |
24 | 37 | <Label>Author</Label> |
25 | | - <p className="text-gray-300">{metadata.author}</p> |
| 38 | + <p className="text-gray-300 ml-1 mt-1">{metadata.author}</p> |
26 | 39 | </div> |
27 | 40 | )} |
28 | 41 | {metadata.director && ( |
29 | 42 | <div> |
30 | 43 | <Label>Director</Label> |
31 | | - <p className="text-gray-300">{metadata.director}</p> |
| 44 | + <p className="text-gray-300 ml-1 mt-1">{metadata.director}</p> |
32 | 45 | </div> |
33 | 46 | )} |
34 | 47 | {metadata.platform && ( |
35 | 48 | <div> |
36 | 49 | <Label>Platform</Label> |
37 | | - <p className="text-gray-300">{metadata.platform}</p> |
| 50 | + <p className="text-gray-300 ml-1 mt-1">{metadata.platform}</p> |
38 | 51 | </div> |
39 | 52 | )} |
40 | 53 | {metadata.source && ( |
41 | 54 | <div> |
42 | 55 | <Label>Source</Label> |
43 | | - <p className="text-gray-300">{metadata.source}</p> |
| 56 | + <p className="text-gray-300 ml-1 mt-1">{metadata.source}</p> |
44 | 57 | </div> |
45 | 58 | )} |
46 | 59 | {metadata.artist && ( |
47 | 60 | <div> |
48 | 61 | <Label>Artist</Label> |
49 | | - <p className="text-gray-300">{metadata.artist}</p> |
| 62 | + <p className="text-gray-300 ml-1 mt-1">{metadata.artist}</p> |
50 | 63 | </div> |
51 | 64 | )} |
52 | 65 | {metadata.year && ( |
53 | 66 | <div> |
54 | 67 | <Label>Year</Label> |
55 | | - <p className="text-gray-300">{metadata.year}</p> |
| 68 | + <p className="text-gray-300 ml-1 mt-1">{metadata.year}</p> |
56 | 69 | </div> |
57 | 70 | )} |
58 | 71 | {metadata.creator && ( |
59 | 72 | <div> |
60 | 73 | <Label>Creator</Label> |
61 | | - <p className="text-gray-300">{metadata.creator}</p> |
| 74 | + <p className="text-gray-300 ml-1 mt-1">{metadata.creator}</p> |
62 | 75 | </div> |
63 | 76 | )} |
64 | 77 | <div> |
65 | 78 | <Label>Date</Label> |
66 | | - <p className="text-gray-300">{metadata.date}</p> |
67 | | - </div> |
68 | | - <div> |
69 | | - <Label>Rating</Label> |
70 | | - <p className="text-gray-300">{metadata.rating}/5</p> |
| 79 | + <p className="text-gray-300 ml-1 mt-1">{metadata.date}</p> |
71 | 80 | </div> |
| 81 | + {metadata.rating !== undefined && metadata.rating !== null && ( |
| 82 | + <div> |
| 83 | + <Label>Rating</Label> |
| 84 | + {renderStars(metadata.rating)} |
| 85 | + </div> |
| 86 | + )} |
72 | 87 | {metadata.link && ( |
73 | 88 | <div> |
74 | 89 | <Label>Link</Label> |
75 | | - <p className="text-gray-300"><a href={metadata.link} target="_blank" rel="noopener noreferrer" className="text-indigo-400 hover:text-indigo-300">View</a></p> |
| 90 | + <p className="text-gray-300 ml-1 mt-1"><a href={metadata.link} target="_blank" rel="noopener noreferrer" className="text-indigo-400 hover:text-indigo-300">View</a></p> |
76 | 91 | </div> |
77 | 92 | )} |
78 | 93 | </div> |
|
0 commit comments