refactor(ui): co-locate TooltipPortal and tooltipAttrs as shared primitives in src/ui

This commit is contained in:
Psychotoxical
2026-06-29 22:35:14 +02:00
parent a18f8fc857
commit 146727e980
15 changed files with 13 additions and 13 deletions
+1 -1
View File
@@ -22,7 +22,7 @@ import GlobalConfirmModal from '../components/GlobalConfirmModal';
import ThemeMigrationNotice from '../components/ThemeMigrationNotice';
import OrbitAccountPicker from '../components/OrbitAccountPicker';
import OrbitHelpModal from '../components/OrbitHelpModal';
import TooltipPortal from '../components/TooltipPortal';
import TooltipPortal from '@/ui/TooltipPortal';
import OverlayScrollArea from '../components/OverlayScrollArea';
import {
APP_MAIN_SCROLL_VIEWPORT_ID,
+1 -1
View File
@@ -30,7 +30,7 @@ vi.mock('../i18n', () => ({
}));
vi.mock('../components/MiniPlayer', () => ({ default: () => <div data-testid="mini-player" /> }));
vi.mock('../components/GlobalConfirmModal', () => ({ default: () => <div data-testid="confirm-modal" /> }));
vi.mock('../components/TooltipPortal', () => ({ default: () => <div data-testid="tooltip-portal" /> }));
vi.mock('@/ui/TooltipPortal', () => ({ default: () => <div data-testid="tooltip-portal" /> }));
vi.mock('../components/FpsOverlay', () => ({ default: () => <div data-testid="fps-overlay" /> }));
vi.mock('../contexts/DragDropContext', () => ({
DragDropProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
+1 -1
View File
@@ -2,7 +2,7 @@ import { useEffect } from 'react';
import { DragDropProvider } from '../contexts/DragDropContext';
import MiniPlayer from '../components/MiniPlayer';
import GlobalConfirmModal from '../components/GlobalConfirmModal';
import TooltipPortal from '../components/TooltipPortal';
import TooltipPortal from '@/ui/TooltipPortal';
import FpsOverlay from '../components/FpsOverlay';
import { useThemeStore } from '../store/themeStore';
import { useFontStore } from '../store/fontStore';
+1 -1
View File
@@ -18,7 +18,7 @@ import { formatLongDuration } from '../utils/format/formatDuration';
import { formatMb } from '../utils/format/formatBytes';
import { sanitizeHtml } from '../utils/sanitizeHtml';
import { OpenArtistRefInline } from './OpenArtistRefInline';
import { tooltipAttrs } from './tooltipAttrs';
import { tooltipAttrs } from '@/ui/tooltipAttrs';
import { offlineActionPolicy, type OfflineActionPolicy } from '../utils/offline/offlineActionPolicy';
import { deriveAlbumGenreTags } from '../utils/library/genreTags';
import { genreColor } from '../utils/library/genreColor';
+1 -1
View File
@@ -5,7 +5,7 @@ import { createPortal } from 'react-dom';
import { Check, Filter, X } from 'lucide-react';
import { useTranslation } from 'react-i18next';
import FilterQuickClear from './FilterQuickClear';
import { tooltipAttrs } from './tooltipAttrs';
import { tooltipAttrs } from '@/ui/tooltipAttrs';
type GenreRow = GenreFilterOption;
+1 -1
View File
@@ -11,7 +11,7 @@ import { useDragDrop } from '../contexts/DragDropContext';
import { useOrbitSongRowBehavior } from '../hooks/useOrbitSongRowBehavior';
import { formatTrackTime } from '../utils/format/formatDuration';
import { resolveTrackArtistRefs } from '../utils/playback/trackArtistRefs';
import { tooltipAttrs } from './tooltipAttrs';
import { tooltipAttrs } from '@/ui/tooltipAttrs';
interface Props {
song: SubsonicSong;
+1 -1
View File
@@ -1,7 +1,7 @@
import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
import { createPortal } from 'react-dom';
import { ArrowDownUp, Check } from 'lucide-react';
import { tooltipAttrs } from './tooltipAttrs';
import { tooltipAttrs } from '@/ui/tooltipAttrs';
export interface SortOption<V extends string> {
value: V;
+1 -1
View File
@@ -3,7 +3,7 @@ import { createPortal } from 'react-dom';
import { CalendarRange, X } from 'lucide-react';
import { useTranslation } from 'react-i18next';
import FilterQuickClear from './FilterQuickClear';
import { tooltipAttrs } from './tooltipAttrs';
import { tooltipAttrs } from '@/ui/tooltipAttrs';
import {
ALBUM_YEAR_MAX,
ALBUM_YEAR_MIN,
@@ -21,7 +21,7 @@ import type { CoverArtRef } from '../../cover/types';
import LastfmIcon from '../LastfmIcon';
import WikipediaIcon from '../WikipediaIcon';
import StarRating from '../StarRating';
import { tooltipAttrs } from '../tooltipAttrs';
import { tooltipAttrs } from '@/ui/tooltipAttrs';
import { offlineActionPolicy, type OfflineActionPolicy } from '../../utils/offline/offlineActionPolicy';
interface Props {
+1 -1
View File
@@ -40,7 +40,7 @@ import { ServerCapabilityHeaderBadge } from './ServerCapabilityHeaderBadge';
import { useListReorderDnd } from '../../hooks/useListReorderDnd';
import { applyListReorderById, type ListReorderDropTarget } from '../../utils/componentHelpers/listReorder';
import { ReorderGripHandle } from './ReorderGripHandle';
import { tooltipAttrs } from '../tooltipAttrs';
import { tooltipAttrs } from '@/ui/tooltipAttrs';
const AUDIOMUSE_NV_PLUGIN_URL = 'https://github.com/NeptuneHub/AudioMuse-AI-NV-plugin';
+1 -1
View File
@@ -11,7 +11,7 @@ import ArtistRow from '../components/ArtistRow';
import PagedSongList from '../components/PagedSongList';
import CustomSelect from '../components/CustomSelect';
import StarFilterButton from '../components/StarFilterButton';
import { tooltipAttrs } from '../components/tooltipAttrs';
import { tooltipAttrs } from '@/ui/tooltipAttrs';
import { APP_MAIN_SCROLL_VIEWPORT_ID } from '../constants/appScroll';
import { useAuthStore } from '../store/authStore';
import { usePlayerStore } from '../store/playerStore';
@@ -1,7 +1,7 @@
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
import { act, fireEvent, screen } from '@testing-library/react';
import { renderWithProviders } from '@/test/helpers/renderWithProviders';
import TooltipPortal from './TooltipPortal';
import TooltipPortal from '@/ui/TooltipPortal';
function Fixture() {
return (
@@ -1,5 +1,5 @@
import { describe, it, expect } from 'vitest';
import { tooltipAttrs } from './tooltipAttrs';
import { tooltipAttrs } from '@/ui/tooltipAttrs';
describe('tooltipAttrs', () => {
it('pairs data-tooltip with a matching aria-label', () => {