From de3c7de7e5449e51b86f6f70ad83465ae424176b Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sat, 29 Nov 2025 20:31:21 -0800 Subject: [PATCH] update get info modal design --- .../context-menu/actions/get-info-action.tsx | 3 ++ .../components/item-details-modal.tsx | 48 +++++++++++++------ 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/renderer/features/context-menu/actions/get-info-action.tsx b/src/renderer/features/context-menu/actions/get-info-action.tsx index 665a83136..bb3e651d5 100644 --- a/src/renderer/features/context-menu/actions/get-info-action.tsx +++ b/src/renderer/features/context-menu/actions/get-info-action.tsx @@ -24,6 +24,9 @@ export const GetInfoAction = ({ disabled, item }: GetInfoActionProps) => { openModal({ children: , size: 'lg', + styles: { + body: { paddingBottom: 'var(--theme-spacing-xl)' }, + }, title: item.name || t('page.contextMenu.showDetails', { postProcess: 'sentenceCase' }), }); }, [item, server, t]); diff --git a/src/renderer/features/item-details/components/item-details-modal.tsx b/src/renderer/features/item-details/components/item-details-modal.tsx index b18f805ab..fc732c6a2 100644 --- a/src/renderer/features/item-details/components/item-details-modal.tsx +++ b/src/renderer/features/item-details/components/item-details-modal.tsx @@ -1,10 +1,9 @@ +import { TFunction } from 'i18next'; import { ReactNode } from 'react'; -import { TFunction, useTranslation } from 'react-i18next'; -import { generatePath } from 'react-router'; -import { Link } from 'react-router'; +import { useTranslation } from 'react-i18next'; +import { generatePath, Link } from 'react-router'; import { SongPath } from '/@/renderer/features/item-details/components/song-path'; -import { useGenreRoute } from '/@/renderer/hooks/use-genre-route'; import { AppRoute } from '/@/renderer/router/routes'; import { formatDurationString, formatSizeString } from '/@/renderer/utils'; import { formatDateRelative, formatRating } from '/@/renderer/utils/format'; @@ -17,11 +16,12 @@ import { Separator } from '/@/shared/components/separator/separator'; import { Spoiler } from '/@/shared/components/spoiler/spoiler'; import { Table } from '/@/shared/components/table/table'; import { Text } from '/@/shared/components/text/text'; -import { Artist, ExplicitStatus } from '/@/shared/types/domain-types'; import { Album, AlbumArtist, AnyLibraryItem, + Artist, + ExplicitStatus, LibraryItem, Playlist, RelatedArtist, @@ -36,10 +36,14 @@ type ItemDetailRow = { key?: keyof T; label: string; postprocess?: string[]; - render?: (item: T, t: TFunction) => ReactNode; + render?: (item: T, t: TFunction<'translation'>) => ReactNode; }; -const handleRow = (t: TFunction, item: T, rule: ItemDetailRow) => { +const handleRow = ( + t: TFunction<'translation'>, + item: T, + rule: ItemDetailRow, +) => { let value: ReactNode; if (rule.render) { @@ -68,7 +72,7 @@ const formatArtists = (artists: null | RelatedArtist[] | undefined) => {artist.id ? ( item.comment ? {replaceURLWithHTMLLinks(item.comment)} : null; const FormatGenre = (item: Album | AlbumArtist | Playlist | Song) => { - const genreRoute = useGenreRoute(); - if (!item.genres?.length) { return null; } @@ -105,11 +107,15 @@ const FormatGenre = (item: Album | AlbumArtist | Playlist | Song) => { {index > 0 && } {genre.name || '—'} @@ -264,7 +270,7 @@ const SongPropertyMapping: ItemDetailRow[] = [ song.album && ( { } return ( - +
{body}
);