11import { cn } from "@/lib/utils" ;
2- import { ReactNode } from "react" ;
3- import { format , parseISO } from "date-fns" ;
2+ import { parseISO , differenceInDays , format } from 'date-fns' ;
3+ import * as Tooltip from "@radix-ui/react-tooltip" ;
4+ import { HiHashtag } from "react-icons/hi" ;
5+ import Link from "next/link" ;
46
57type DateTagProps = {
68 date : string ;
9+ lastEdited : string ;
710}
811
9- export function DateTag ( { date } : DateTagProps ) {
12+ export function DateTag ( { date, lastEdited } : DateTagProps ) {
13+ const parsedDate = parseISO ( date ) ;
14+ const parsedLastEdited = parseISO ( lastEdited ) ;
15+ const daysDifference = differenceInDays ( parsedLastEdited , parsedDate ) ;
16+
17+ if ( daysDifference > 1 ) {
18+ return (
19+ < Tooltip . Provider >
20+ < Tooltip . Root >
21+ < Tooltip . Trigger asChild >
22+ < div className = { "bg-accent_color/50 dark:bg-accent_color-dark/70 rounded-md" } >
23+ < div className = { "text-xs py-1 px-2" } suppressHydrationWarning = { true } >
24+ Posted on { format ( parsedDate , 'LLLL d, yyyy' ) } (Edited)
25+ </ div >
26+ </ div >
27+ </ Tooltip . Trigger >
28+ < Tooltip . Portal >
29+ < Tooltip . Content
30+ className = "bg-accent_color/50 dark:bg-accent_color-dark/70 rounded-md"
31+ sideOffset = { 5 }
32+ suppressHydrationWarning = { true }
33+ side = { "right" }
34+ >
35+ < div className = { "text-xs py-1 px-2" } suppressHydrationWarning = { true } >
36+ Last edited on { format ( parsedLastEdited , 'LLLL d, yyyy' ) }
37+ </ div >
38+ < Tooltip . Arrow className = "fill-accent_color/50 dark:fill-accent_color-dark/70" />
39+ </ Tooltip . Content >
40+ </ Tooltip . Portal >
41+ </ Tooltip . Root >
42+ </ Tooltip . Provider >
43+ )
44+ }
45+
1046 return (
1147 < div className = { "bg-accent_color/50 dark:bg-accent_color-dark/70 rounded-md" } >
1248 < div className = { "text-xs py-1 px-2" } suppressHydrationWarning = { true } >
13- Posted on { format ( parseISO ( date ) , 'LLLL d, yyyy' ) }
49+ Posted on { format ( parsedDate , 'LLLL d, yyyy' ) }
1450 </ div >
1551 </ div >
16- )
52+ ) ;
1753}
1854
1955export function NoTag ( ) {
@@ -28,16 +64,20 @@ export function NoTag() {
2864}
2965
3066type TagProps = {
31- children : ReactNode ;
67+ tag : string ;
3268} ;
3369
34- export function Tag ( { children } : TagProps ) {
70+ export function Tag ( { tag } : TagProps ) {
3571 return (
36- < div className = { cn (
37- "inline-flex text-xs rounded-md mr-2 items-center" ,
38- "bg-secondary_color/50 dark:bg-secondary_color-dark/70"
39- ) } >
40- { children }
41- </ div >
42- )
72+ < Link href = { `/tags/${ tag } ` } >
73+ < div className = { cn (
74+ "inline-flex text-xs rounded-md mr-2 items-center" ,
75+ "bg-secondary_color/50 dark:bg-secondary_color-dark/70" ,
76+ "hover:scale-125 duration-500"
77+ ) } >
78+ < HiHashtag className = { "w-3 h-3 ml-1" } />
79+ < div className = { "text-xs py-1 px-1" } > { tag } </ div >
80+ </ div >
81+ </ Link >
82+ ) ;
4383}
0 commit comments