From 39d2a25d01cf8282958dfb484a1e01163e113b70 Mon Sep 17 00:00:00 2001 From: mikiher Date: Thu, 13 Mar 2025 10:05:50 +0200 Subject: [PATCH 01/15] add excplict @config directive --- client/assets/tailwind.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/assets/tailwind.css b/client/assets/tailwind.css index bd6213e1..c4afed89 100644 --- a/client/assets/tailwind.css +++ b/client/assets/tailwind.css @@ -1,3 +1,5 @@ +@config "../tailwind.config.js" + @tailwind base; @tailwind components; @tailwind utilities; \ No newline at end of file From d60ccff5e8c1a4ed0f8a58b0c9db3ffe0e395f3d Mon Sep 17 00:00:00 2001 From: mikiher Date: Thu, 13 Mar 2025 10:14:11 +0200 Subject: [PATCH 02/15] Add misisng semicolon --- client/assets/tailwind.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/assets/tailwind.css b/client/assets/tailwind.css index c4afed89..3cf071af 100644 --- a/client/assets/tailwind.css +++ b/client/assets/tailwind.css @@ -1,4 +1,4 @@ -@config "../tailwind.config.js" +@config "../tailwind.config.js"; @tailwind base; @tailwind components; From 30db5d50fb8b2b4f4ec2646edee5612b5faf3008 Mon Sep 17 00:00:00 2001 From: mikiher Date: Sun, 16 Mar 2025 16:41:37 +0200 Subject: [PATCH 03/15] Tailwind V4 migration initial commit --- client/assets/fonts.css | 2 +- client/assets/tailwind.css | 22 +- client/components/app/Appbar.vue | 14 +- .../components/app/BookShelfCategorized.vue | 4 +- client/components/app/BookShelfRow.vue | 2 +- client/components/app/BookShelfToolbar.vue | 38 +- client/components/app/ConfigSideNav.vue | 6 +- client/components/app/LazyBookshelf.vue | 8 +- .../components/app/MediaPlayerContainer.vue | 2 +- client/components/app/SettingsContent.vue | 4 +- client/components/app/SideRail.vue | 26 +- client/components/cards/AuthorCard.vue | 5 +- client/components/cards/AuthorSearchCard.vue | 4 +- client/components/cards/BookMatchCard.vue | 10 +- client/components/cards/GenreSearchCard.vue | 2 +- client/components/cards/GroupCard.vue | 4 +- client/components/cards/ItemSearchCard.vue | 2 +- .../components/cards/ItemTaskRunningCard.vue | 4 +- client/components/cards/ItemUploadCard.vue | 16 +- client/components/cards/LazyAlbumCard.vue | 6 +- client/components/cards/LazyBookCard.vue | 28 +- .../components/cards/LazyCollectionCard.vue | 10 +- client/components/cards/LazyPlaylistCard.vue | 10 +- client/components/cards/LazySeriesCard.vue | 12 +- client/components/cards/NarratorCard.vue | 2 +- .../components/cards/NarratorSearchCard.vue | 2 +- client/components/cards/NotificationCard.vue | 10 +- .../cards/PodcastFeedSummaryCard.vue | 6 +- client/components/cards/SeriesSearchCard.vue | 2 +- client/components/cards/TagSearchCard.vue | 2 +- .../components/content/LibraryItemDetails.vue | 24 +- client/components/controls/FilterSelect.vue | 4 +- client/components/controls/GlobalSearch.vue | 2 +- .../controls/LibraryFilterSelect.vue | 4 +- .../components/controls/LibrarySortSelect.vue | 4 +- .../controls/PlaybackSpeedControl.vue | 2 +- client/components/controls/SortSelect.vue | 6 +- client/components/controls/VolumeControl.vue | 4 +- client/components/covers/BookCover.vue | 4 +- client/components/covers/CollectionCover.vue | 20 +- client/components/covers/GroupCover.vue | 2 +- client/components/covers/PlaylistCover.vue | 12 +- client/components/covers/PreviewCover.vue | 6 +- client/components/modals/AccountModal.vue | 6 +- .../modals/AddCustomMetadataProviderModal.vue | 4 +- .../components/modals/AudioFileDataModal.vue | 4 +- .../modals/BatchQuickMatchModel.vue | 6 +- client/components/modals/BookmarksModal.vue | 6 +- client/components/modals/ChaptersModal.vue | 2 +- client/components/modals/Dialog.vue | 6 +- .../modals/EditSeriesInputInnerModal.vue | 4 +- .../modals/ListeningSessionModal.vue | 6 +- client/components/modals/Modal.vue | 10 +- client/components/modals/ShareModal.vue | 8 +- client/components/modals/SleepTimerModal.vue | 2 +- client/components/modals/UploadImageModal.vue | 6 +- .../components/modals/authors/EditModal.vue | 12 +- .../modals/bookmarks/BookmarkItem.vue | 12 +- .../components/modals/changelog/ViewModal.vue | 2 + .../modals/collections/AddCreateModal.vue | 8 +- .../modals/collections/CollectionItem.vue | 8 +- .../modals/collections/EditModal.vue | 14 +- .../modals/emails/EReaderDeviceModal.vue | 4 +- .../modals/emails/UserEReaderDeviceModal.vue | 4 +- client/components/modals/item/EditModal.vue | 4 +- client/components/modals/item/tabs/Cover.vue | 24 +- .../components/modals/item/tabs/Details.vue | 8 +- client/components/modals/item/tabs/Match.vue | 86 +- .../components/modals/item/tabs/Schedule.vue | 6 +- client/components/modals/item/tabs/Tools.vue | 4 +- .../modals/libraries/EditLibrary.vue | 8 +- .../components/modals/libraries/EditModal.vue | 2 +- .../modals/libraries/LazyFolderChooser.vue | 12 +- .../libraries/LibraryScannerSettings.vue | 2 +- .../modals/libraries/LibraryTools.vue | 2 +- .../notification/NotificationEditModal.vue | 4 +- .../components/modals/player/QueueItemRow.vue | 14 +- .../modals/player/QueueItemsModal.vue | 2 +- .../modals/playlists/AddCreateModal.vue | 8 +- .../components/modals/playlists/EditModal.vue | 8 +- .../modals/playlists/UserPlaylistItem.vue | 8 +- .../components/modals/podcast/EditEpisode.vue | 4 +- .../components/modals/podcast/EpisodeFeed.vue | 12 +- client/components/modals/podcast/NewModal.vue | 4 +- .../modals/podcast/OpmlFeedsModal.vue | 4 +- .../modals/podcast/RemoveEpisode.vue | 2 +- .../components/modals/podcast/ViewEpisode.vue | 6 +- .../modals/podcast/tabs/EpisodeMatch.vue | 2 +- .../modals/rssfeed/OpenCloseModal.vue | 12 +- .../modals/rssfeed/ViewFeedModal.vue | 8 +- .../player/PlayerPlaybackControls.vue | 6 +- client/components/player/PlayerTrackBar.vue | 6 +- client/components/player/PlayerUi.vue | 8 +- client/components/prompt/Confirm.vue | 14 +- client/components/prompt/Dialog.vue | 6 +- client/components/readers/ComicReader.vue | 4 +- client/components/readers/MobiReader.vue | 4 +- client/components/readers/PdfReader.vue | 6 +- .../components/stats/DailyListeningChart.vue | 2 +- client/components/stats/Heatmap.vue | 10 +- client/components/stats/PreviewIcons.vue | 10 +- .../components/stats/YearInReviewBanner.vue | 16 +- client/components/tables/BackupsTable.vue | 14 +- client/components/tables/ChaptersTable.vue | 4 +- .../tables/CollectionBooksTable.vue | 6 +- .../tables/CustomMetadataProviderTable.vue | 2 +- client/components/tables/EbookFilesTable.vue | 6 +- .../components/tables/LibraryFilesTable.vue | 6 +- .../components/tables/PlaylistItemsTable.vue | 6 +- client/components/tables/TracksTable.vue | 8 +- .../components/tables/UploadedFilesTable.vue | 2 +- client/components/tables/UsersTable.vue | 6 +- .../tables/collection/BookTableRow.vue | 10 +- .../components/tables/library/LibraryItem.vue | 16 +- .../tables/playlist/ItemTableRow.vue | 8 +- .../tables/podcast/DownloadQueueTable.vue | 2 +- .../tables/podcast/LazyEpisodeRow.vue | 6 +- .../tables/podcast/LazyEpisodesTable.vue | 10 +- client/components/ui/Btn.vue | 15 +- client/components/ui/Checkbox.vue | 2 +- client/components/ui/ContextMenuDropdown.vue | 4 +- client/components/ui/Dropdown.vue | 6 +- client/components/ui/EditableText.vue | 8 +- client/components/ui/FileInput.vue | 4 +- client/components/ui/IconBtn.vue | 4 +- client/components/ui/InputDropdown.vue | 6 +- client/components/ui/LibrariesDropdown.vue | 12 +- client/components/ui/MediaIconPicker.vue | 8 +- client/components/ui/MultiSelect.vue | 8 +- client/components/ui/MultiSelectDropdown.vue | 6 +- .../components/ui/MultiSelectQueryInput.vue | 8 +- client/components/ui/QueryInput.vue | 6 +- client/components/ui/SelectInput.vue | 6 +- client/components/ui/TextInput.vue | 4 +- client/components/ui/TextInputWithLabel.vue | 2 +- client/components/ui/TextareaInput.vue | 2 +- client/components/ui/TimePicker.vue | 2 +- client/components/ui/ToggleBtns.vue | 2 +- client/components/ui/ToggleSwitch.vue | 2 +- client/components/ui/Tooltip.vue | 2 +- client/components/widgets/Alert.vue | 15 +- client/components/widgets/BookDetailsEdit.vue | 12 +- .../widgets/CronExpressionBuilder.vue | 6 +- client/components/widgets/ItemSlider.vue | 6 +- .../components/widgets/NotificationWidget.vue | 2 +- client/components/widgets/OnlineIndicator.vue | 4 +- .../components/widgets/PodcastDetailsEdit.vue | 6 +- .../widgets/RssFeedMetadataBuilder.vue | 8 +- client/mixins/bookshelfCardsHelpers.js | 2 +- client/nuxt.config.js | 2 +- client/package-lock.json | 1590 +++++++++++------ client/package.json | 6 +- client/pages/account.vue | 10 +- client/pages/audiobook/_id/chapters.vue | 50 +- client/pages/audiobook/_id/edit.vue | 20 +- client/pages/audiobook/_id/manage.vue | 36 +- client/pages/author/_id.vue | 8 +- client/pages/batch/index.vue | 14 +- client/pages/collection/_id.vue | 12 +- client/pages/config.vue | 16 +- client/pages/config/authentication.vue | 4 +- client/pages/config/backups.vue | 8 +- client/pages/config/email.vue | 6 +- client/pages/config/index.vue | 30 +- .../custom-metadata-providers.vue | 6 +- .../config/item-metadata-utils/genres.vue | 8 +- .../config/item-metadata-utils/index.vue | 6 +- .../pages/config/item-metadata-utils/tags.vue | 8 +- client/pages/config/libraries.vue | 6 +- client/pages/config/log.vue | 7 +- client/pages/config/notifications.vue | 4 +- client/pages/config/rss-feeds.vue | 6 +- client/pages/config/sessions.vue | 26 +- client/pages/config/stats.vue | 18 +- client/pages/config/users/_id/index.vue | 20 +- client/pages/config/users/_id/sessions.vue | 14 +- client/pages/config/users/index.vue | 4 +- client/pages/item/_id/index.vue | 22 +- client/pages/library/_library/narrators.vue | 2 +- .../_library/podcast/download-queue.vue | 4 +- .../pages/library/_library/podcast/latest.vue | 8 +- .../pages/library/_library/podcast/search.vue | 10 +- client/pages/library/_library/stats.vue | 18 +- client/pages/login.vue | 16 +- client/pages/playlist/_id.vue | 8 +- client/pages/upload/index.vue | 16 +- 186 files changed, 1858 insertions(+), 1324 deletions(-) diff --git a/client/assets/fonts.css b/client/assets/fonts.css index c568ffa6..76d44b57 100644 --- a/client/assets/fonts.css +++ b/client/assets/fonts.css @@ -6,7 +6,7 @@ } .material-symbols { - font-family: 'Material Symbols Rounded'; + font-family: 'Material Symbols Rounded' !important; font-weight: normal; font-style: normal; line-height: 1; diff --git a/client/assets/tailwind.css b/client/assets/tailwind.css index 3cf071af..b43c15ce 100644 --- a/client/assets/tailwind.css +++ b/client/assets/tailwind.css @@ -1,5 +1,21 @@ +@import 'tailwindcss'; + @config "../tailwind.config.js"; -@tailwind base; -@tailwind components; -@tailwind utilities; \ No newline at end of file +/* + The default border color has changed to `currentColor` in Tailwind CSS v4, + so we've added these compatibility styles to make sure everything still + looks the same as it did with Tailwind CSS v3. + + If we ever want to remove these styles, we need to add an explicit border + color utility to any element that depends on these defaults. +*/ +@layer base { + *, + ::after, + ::before, + ::backdrop, + ::file-selector-button { + border-color: var(--color-gray-200, currentColor); + } +} \ No newline at end of file diff --git a/client/components/app/Appbar.vue b/client/components/app/Appbar.vue index bb452526..d2c45f41 100644 --- a/client/components/app/Appbar.vue +++ b/client/components/app/Appbar.vue @@ -13,10 +13,10 @@ -
+
- cast + cast
@@ -42,7 +42,7 @@ - + @@ -53,8 +53,8 @@

{{ $getString('MessageItemsSelected', [numMediaItemsSelected]) }}

-
- +
+ play_arrow {{ $strings.ButtonPlay }} @@ -66,11 +66,11 @@ - + diff --git a/client/components/app/BookShelfCategorized.vue b/client/components/app/BookShelfCategorized.vue index 94b2e4ba..8c680462 100644 --- a/client/components/app/BookShelfCategorized.vue +++ b/client/components/app/BookShelfCategorized.vue @@ -6,8 +6,8 @@

{{ $getString('MessageXLibraryIsEmpty', [libraryName]) }}

- {{ $strings.ButtonConfigureScanner }} - {{ $strings.ButtonScanLibrary }} + {{ $strings.ButtonConfigureScanner }} + {{ $strings.ButtonScanLibrary }}
diff --git a/client/components/app/BookShelfRow.vue b/client/components/app/BookShelfRow.vue index 97d64d86..082f9fe3 100644 --- a/client/components/app/BookShelfRow.vue +++ b/client/components/app/BookShelfRow.vue @@ -36,7 +36,7 @@
-
+

{{ $strings[shelf.labelStringKey] }}

diff --git a/client/components/app/BookShelfToolbar.vue b/client/components/app/BookShelfToolbar.vue index 74157b18..01ab4fa7 100644 --- a/client/components/app/BookShelfToolbar.vue +++ b/client/components/app/BookShelfToolbar.vue @@ -1,36 +1,36 @@