diff --git a/src/components/ResponsiveDate.tsx b/src/components/ResponsiveDate.tsx index f393d77c..353a5416 100644 --- a/src/components/ResponsiveDate.tsx +++ b/src/components/ResponsiveDate.tsx @@ -1,20 +1,30 @@ import { formatDate } from '@/utility/date'; +import { clsx } from 'clsx/lite'; export default function ResponsiveDate({ date, + className, }: { date: Date + className?: string }) { return ( - <> - {/* Mobile */} - - {formatDate(date, true)} + + {/* Small */} + + {formatDate(date, 'short')} - {/* Desktop */} + {/* Medium */} + + {formatDate(date, 'medium')} + + {/* Large */} {formatDate(date)} - + ); } diff --git a/src/components/ShareButton.tsx b/src/components/ShareButton.tsx index b0af3664..4cf46b84 100644 --- a/src/components/ShareButton.tsx +++ b/src/components/ShareButton.tsx @@ -21,6 +21,8 @@ export default function ShareButton({ className={clsx( className, dim ? 'text-dim' : 'text-medium', + '-mx-0.5 translate-x-0.5', + 'sm:mx-0 sm:translate-x-0', )} icon={} spinnerColor="dim" diff --git a/src/photo/PhotoDate.tsx b/src/photo/PhotoDate.tsx index c2a9ea24..3a96a2a4 100644 --- a/src/photo/PhotoDate.tsx +++ b/src/photo/PhotoDate.tsx @@ -4,14 +4,16 @@ import { useMemo } from 'react'; export default function PhotoDate({ photo: { takenAtNaive }, + className, }: { photo: Photo + className?: string }) { const date = useMemo(() => { const date = new Date(takenAtNaive); return isNaN(date.getTime()) ? new Date() : date; }, [takenAtNaive]); return ( - + ); } diff --git a/src/photo/PhotoLarge.tsx b/src/photo/PhotoLarge.tsx index a745b8ab..ab1bb249 100644 --- a/src/photo/PhotoLarge.tsx +++ b/src/photo/PhotoLarge.tsx @@ -25,6 +25,7 @@ import AdminPhotoMenuClient from '@/admin/AdminPhotoMenuClient'; import { RevalidatePhoto } from './InfinitePhotoScroll'; import { useRef } from 'react'; import useOnVisible from '@/utility/useOnVisible'; +import PhotoDate from './PhotoDate'; export default function PhotoLarge({ photo, @@ -161,14 +162,13 @@ export default function PhotoLarge({ />} }
-
- {photo.takenAtNaiveFormatted} -
+ - format(date, short ? DATE_STRING_FORMAT_SHORT : DATE_STRING_FORMAT); +type Length = 'short' | 'medium' | 'long'; -export const formatDateFromPostgresString = (date: string, short?: boolean) => - formatDate(parse(date, DATE_STRING_FORMAT_POSTGRES, new Date()), short); +export const formatDate = (date: Date, length: Length = 'long') => { + switch (length) { + case 'short': + return format(date, DATE_STRING_FORMAT_SHORT); + case 'medium': + return format(date, DATE_STRING_FORMAT_MEDIUM); + default: + return format(date, DATE_STRING_FORMAT); + } +}; + +export const formatDateFromPostgresString = (date: string, length?: Length) => + formatDate(parse(date, DATE_STRING_FORMAT_POSTGRES, new Date()), length); export const formatDateForPostgres = (date: Date) => date.toISOString().replace(