diff --git a/plugins/obsidian-theme-luna/package.json b/plugins/obsidian-theme-luna/package.json deleted file mode 100644 index 492239c..0000000 --- a/plugins/obsidian-theme-luna/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "@meowarex/obsidian", - "description": "A dark OLED-friendly theme for Tidal Luna.", - "author": { - "name": "meowarex", - "url": "https://github.com/meowarex", - "avatarUrl": "https://avatars.githubusercontent.com/u/90243579" - }, - "main": "./src/index.ts", - "type": "module" -} diff --git a/plugins/obsidian-theme-luna/src/Settings.tsx b/plugins/obsidian-theme-luna/src/Settings.tsx deleted file mode 100644 index a15139c..0000000 --- a/plugins/obsidian-theme-luna/src/Settings.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { ReactiveStore } from "@luna/core"; -import { LunaSettings, LunaSwitchSetting } from "@luna/ui"; -import React from "react"; - -export const settings = await ReactiveStore.getPluginStorage("Obsidian", { - qualityColorMatchedSeekBar: true, - oledFriendlyButtons: true, - lightMode: false, -}); - -export const Settings = () => { - const [qualityColorMatchedSeekBar, setQualityColorMatchedSeekBar] = - React.useState(settings.qualityColorMatchedSeekBar); - const [oledFriendlyButtons, setOledFriendlyButtons] = React.useState( - settings.oledFriendlyButtons, - ); - const [lightMode, setLightMode] = React.useState(settings.lightMode); - - return ( - - { - console.log( - "Quality Color Matched Seek Bar:", - checked ? "enabled" : "disabled", - ); - setQualityColorMatchedSeekBar( - (settings.qualityColorMatchedSeekBar = checked), - ); - // Update styles immediately when setting changes - if ((window as any).updateObsidianStyles) { - (window as any).updateObsidianStyles(); - } - }} - /> - { - console.log( - "OLED Friendly Buttons:", - checked ? "enabled" : "disabled", - ); - setOledFriendlyButtons((settings.oledFriendlyButtons = checked)); - // Update styles immediately when setting changes - if ((window as any).updateObsidianStyles) { - (window as any).updateObsidianStyles(); - } - }} - /> - { - console.log("Light Mode:", checked ? "enabled" : "disabled"); - setLightMode((settings.lightMode = checked)); - // Update styles immediately when setting changes - if ((window as any).updateObsidianStyles) { - (window as any).updateObsidianStyles(); - } - }} - /> - - ); -}; diff --git a/plugins/obsidian-theme-luna/src/dark-theme.css b/plugins/obsidian-theme-luna/src/dark-theme.css deleted file mode 100644 index 43976f6..0000000 --- a/plugins/obsidian-theme-luna/src/dark-theme.css +++ /dev/null @@ -1,346 +0,0 @@ -/* Rounded corners for various elements */ -[class*="_thumbnail_"], -[class*="_imageWrapper_"], -[class*="_coverImage_"], -[class*="_overlayIconWrapperAlbum_"], -[class*="_playButton_"] { - border-radius: 5px !important; -} - -::-webkit-scrollbar { - display: none; -} - -:root { - --wave-color-solid-accent-fill: white; - --wave-color-solid-rainbow-yellow-fill: white; - --wave-color-solid-contrast-fill: white; - --wave-color-solid-base-brighter: black; - --wave-text-body-medium: white !important; - --track-vibrant-color: white !important; - --wave-color-opacity-contrast-fill-ultra-thin: #fffafa1a !important; - --wave-color-solid-rainbow-yellow-darkest: #fffafa1a !important; - --wave-color-solid-accent-dark: rgb(128, 128, 128); -} - -/* Credits to https://github.com/surfbryce for the fonts */ -@font-face { - font-family: "AbyssFont"; - font-weight: 400; - src: url("https://excel.lexploits.top/extra/tidal/LyricsRegular.woff2") - format("woff2"); -} - -@font-face { - font-family: "AbyssFont"; - font-weight: 500; - src: url("https://excel.lexploits.top/extra/tidal/LyricsMedium.woff2") - format("woff2"); -} - -@font-face { - font-family: "AbyssFont"; - font-weight: 600; - src: url("https://excel.lexploits.top/extra/tidal/LyricsSemibold.woff2") - format("woff2"); -} - -@font-face { - font-family: "AbyssFont"; - font-weight: 700; - src: url("https://excel.lexploits.top/extra/tidal/LyricsBold.woff2") - format("woff2"); -} - -[class^="followingButton"], -[title="Unfollow"], -[title="Follow"], -[title="Unfollow"] > span, -[title="Follow"] > span { - background-color: var(--wave-color-solid-rainbow-yellow-fill) !important; - color: var(--wave-color-solid-base-brighter); -} - -[class^="_wave-badge-color-max"] { - color: black !important; - background-color: var(--wave-color-solid-accent-fill); - border-radius: 3px; -} - -[data-test="main-layout-sidebar-wrapper"] { - border-right: rgb(25, 25, 25) 1px solid; -} - -[class^="_wave-badge"] { - background-color: var(--wave-color-solid-accent-fill); - border-radius: 4px; - color: black; -} - -[class^="_progressBarWrapper"] { - color: var(--wave-color-solid-accent-fill) !important; -} - -[class^="_sidebarItem"] > span { - color: var(--wave-color-solid-accent-dark); -} - -[data-test="main-layout-header"] { - border-left: 0 !important; -} - -[class^="_sidebarItem"]:hover span { - color: var(--wave-color-solid-contrast-fill); -} - -[class^="_sidebarItem"] [class^="active"] > span { - color: var(--wave-color-solid-accent-dark) !important; -} - -[class^="_active"] { - color: var(--wave-color-solid-accent-fill) !important; -} - -[class^="ReactVirtualized__Grid"] { - border-radius: 10px; - margin: 5px; -} - -[data-test="media-table"] > div > div > div { - border: 1px solid rgb(25, 25, 25) !important; -} - -[class^="ReactVirtualized__Grid__innerScrollContainer"] { - border: none; - margin: 5px; -} - -[class^="button"] > span { - color: black; -} - -[class^="_explicitBadge"] { - color: var(--wave-color-solid-accent-fill); -} - -[class^="viewAllButton"] { - border-radius: 4px; - display: grid; - place-items: center; -} - -[data-test="current-media-imagery"] { - border: 0 !important; - margin: none; -} - -[class^="_imageBorder"] { - display: none; -} - -[class^="_headerButtons"] > button, -[class^="_headerButtons"] > button > span, -[data-test="toggle-picture-in-picture"] { - background-color: var(--wave-color-solid-accent-fill) !important; - color: black; -} - -[class^="_container"] > [class^="_navigationArrows"] { - color: black; - background-color: var(--wave-color-solid-accent-fill) !important; - border-radius: 4px; -} - -[class^="_buttons"] > button > span { - color: black !important; -} - -[class^="_container"] > button { - border: 0px none; -} - -[data-test="feed-sidebar"] { - margin-top: 10px; -} - -[data-test="footer-player"] { - width: calc(100% - 20px); - bottom: 10px; - left: 10px; - border: 1px solid rgb(25, 25, 25); - border-radius: 4px !important; - position: absolute !important; -} - -[class^="_tooltipContainer"] > button { - background-color: var(--wave-color-solid-accent-fill); - color: black; -} - -[class^="_tooltipContainer"] > button:hover { - background-color: lightgray !important; -} - -[class^="_tableRow"]:hover > *, -[data-test-is-playing="true"] > * { - color: var(--wave-color-solid-accent-fill) !important; -} - -[class^="_tableRow"] > *, -[data-test-is-playing="false"] > * { - color: lightgray !important; -} - -[class*="coverColumn"] { - padding-left: 5px !important; -} - -[class^="actionList"] { - background-color: transparent; - margin: 0px; - border-radius: 5px; -} - -button[data-test="request-fullscreen"], -button[data-test="close-now-playing"], -button[data-test="play-all"], -button[data-test="shuffle-all"] { - color: black; - background-color: var(--wave-color-solid-accent-fill); - border-radius: 12px; -} - -button[data-test="request-fullscreen"]:hover, -button[data-test="close-now-playing"]:hover { - color: black; - background-color: lightgray !important; -} - -.neptune-switch-checkbox:checked + .neptune-switch { - background-color: rgba(255, 255, 255, 0.1); -} - -[data-test="navigation-arrows"] > button { - background-color: var(--wave-color-solid-accent-fill) !important; - color: black !important; - border-radius: 5px; -} - -[data-test="navigation-arrows"] > button:disabled { - background-color: lightgray !important; - opacity: 1; -} - -[data-test="main-layout-header"], -[data-test="feed-sidebar"], -[data-test="stream-metadata"], -[data-test="footer-player"] { - background-color: rgba(0, 0, 0, 0.8) !important; - backdrop-filter: blur(10px); - border: 1px solid var(--wave-color-opacity-contrast-fill-ultra-thin) !important; -} - -[data-wave-color="textUrl"] { - color: var(--wave-color-solid-accent-fill); -} - -[class^="_smallHeader"] { - margin-top: 7.5px; -} - -[data-test="play-all"] > div > *, -[data-test="shuffle-all"] > div > *, -[data-test="play-all"], -[data-test="shuffle-all"] { - color: var(--wave-color-solid-accent-fill) !important; - background-color: transparent !important; -} - -[class^="__NEPTUNE_PAGE"], -[data-test="main"], -.mainContent { - margin-top: 5vh !important; -} - -[data-test="button-desktop-release-notes"], -[data-test="button-release-notes"] { - background-color: white; -} - -[data-test="button-desktop-release-notes"]:hover, -[data-test="button-release-notes"]:hover { - background-color: lightgray !important; - transition: none !important; -} - -#playQueueSidebar { - top: 50px !important; - border: 1px solid var(--wave-color-opacity-contrast-fill-ultra-thin); - margin: 2px; - margin-right: -14px !important; - background-color: rgba(0, 0, 0, 0.8) !important; - backdrop-filter: blur(10px); -} - -[class^="_bottomGradient"] { - visibility: hidden; -} - -[data-test="settings-page"] { - padding-bottom: 60px !important; -} - -[data-test="query-suggestions"], -[data-test="recent-searches-container"] { - background-color: rgba(0, 0, 0, 0.6); - backdrop-filter: blur(10px); -} - -[data-test="contextmenu"] { - border: 1px solid var(--wave-color-opacity-contrast-fill-ultra-thin) !important; -} - -[class^="_dataContainer_"]::before { - background-image: var(--img); - filter: blur(10px) brightness(0.4); -} - - -/* Fixes the new Sticky Header Tidal added.. in the shittest jankiest way possible */ -[class*="_stickyHeader"] { - background: transparent !important; - backdrop-filter: blur(50px); - background-color: transparent !important; - width: fit-content !important; - padding-right: 3.5% !important; - -webkit-mask-image: - linear-gradient(to bottom, black 60%, transparent), - linear-gradient(to right, black 85%, transparent) !important; - mask-image: - linear-gradient(to bottom, black 60%, transparent), - linear-gradient(to right, black 85%, transparent) !important; - -webkit-mask-composite: source-in !important; - mask-composite: intersect !important; - /* border-radius: 3px 0 0 0 !important; */ - padding-bottom: 5px !important; -} - -[class*="_playQueueItems"]{ - border-radius: 2.5px 0 0 0 !important; -} - -[data-test="playqueue-sticky-clear-active-items"] { - visibility: collapse !important; - width: 0px !important; -} - -[data-test="playqueue-sticky-clear-source-items"] { - visibility: collapse !important; - width: 0px !important; -} - - -/* Remove the background color from the small header */ -[class*="_smallHeader"]::before { - background-color: transparent !important; -} \ No newline at end of file diff --git a/plugins/obsidian-theme-luna/src/index.ts b/plugins/obsidian-theme-luna/src/index.ts deleted file mode 100644 index 54a9da1..0000000 --- a/plugins/obsidian-theme-luna/src/index.ts +++ /dev/null @@ -1,165 +0,0 @@ -import { type LunaUnload, Tracer } from "@luna/core"; -import { StyleTag, observePromise, PlayState } from "@luna/lib"; -import { settings, Settings } from "./Settings"; - -// Import CSS files directly using Luna's file:// syntax - Took me a while to figure out <3 -import darkTheme from "file://dark-theme.css?minify"; -import oledFriendlyTheme from "file://oled-friendly.css?minify"; -import lightTheme from "file://light-theme.css?minify"; - -export const { trace } = Tracer("[Obsidian]"); -export { Settings }; - -// called when plugin is unloaded. -// clean up resources -export const unloads = new Set(); - -// StyleTag instance for theme management -const themeStyleTag = new StyleTag("Obsidian", unloads); - -// Quality color mapping -const QUALITY_COLORS = { - MAX: "#FED330", // Max/HiFi - HIGH: "#31FFEE", // High - LOW: "#FFFFFE", // Low -}; - -// Function to get quality color based on audio quality -const getQualityColor = (audioQuality: string): string => { - const quality = audioQuality?.toUpperCase(); - if (quality?.includes("HI_RES_LOSSLESS")) { - return QUALITY_COLORS.MAX; - } else if (quality?.includes("LOSSLESS")) { - return QUALITY_COLORS.HIGH; - } else if (quality?.includes("HIGH")) { - return QUALITY_COLORS.HIGH; - } else if (quality?.includes("LOW")) { - return QUALITY_COLORS.LOW; - } - return QUALITY_COLORS.LOW; -}; - -// Interval tracking for quality monitoring -let qualityMonitoringIntervalId: number | null = null; - -// Function to Reset Seek Bar Color (if setting gets disabled while playing) -const resetSeekBarColor = async (): Promise => { - try { - const progressBarWrapper = await observePromise( - unloads, - `[class^="_progressBarWrapper"]`, - ); - if (!progressBarWrapper) return; - progressBarWrapper.style.removeProperty("color"); - progressBarWrapper - .querySelectorAll('[class*="progress"], [class*="bar"]') - .forEach((el) => { - if (el instanceof HTMLElement) el.style.removeProperty("color"); - }); - } catch (error) { - trace.msg.err(`Failed to reset seek bar color: ${error}`); - } -}; - -// Function to apply quality-based seek bar coloring (if enabled) -const applyQualityColors = async (): Promise => { - if (!settings.qualityColorMatchedSeekBar) return; - try { - const progressBarWrapper = await observePromise( - unloads, - `[class^="_progressBarWrapper"]`, - ); - if (!progressBarWrapper) return; - const audioQuality = PlayState.playbackContext?.actualAudioQuality; - if (!audioQuality) return; - const qualityColor = getQualityColor(audioQuality); - progressBarWrapper.style.setProperty("color", qualityColor, "important"); - progressBarWrapper - .querySelectorAll('[class*="progress"], [class*="bar"]') - .forEach((el) => { - if (el instanceof HTMLElement) - el.style.setProperty("color", qualityColor, "important"); - }); - //trace.msg.log(`Applied quality color ${qualityColor}`); - } catch (error) { - trace.msg.err(`Failed to apply quality colors: ${error}`); - } -}; - -// Function to monitor track changes using track ID -const setupQualityMonitoring = (): void => { - if (qualityMonitoringIntervalId != null) return; - let lastTrackId: string | null = null; - qualityMonitoringIntervalId = window.setInterval(() => { - if (!settings.qualityColorMatchedSeekBar) return; - const currentTrackId = PlayState.playbackContext?.actualProductId; - if (currentTrackId && currentTrackId !== lastTrackId) { - lastTrackId = currentTrackId; - applyQualityColors(); - } - }, 250); - - // Initial color application (if a track is already loaded) - const currentTrackId = PlayState.playbackContext?.actualProductId; - if (settings.qualityColorMatchedSeekBar && currentTrackId) { - lastTrackId = currentTrackId; - applyQualityColors(); - } -}; - -const stopQualityMonitoring = (): void => { - if (qualityMonitoringIntervalId != null) { - window.clearInterval(qualityMonitoringIntervalId); - qualityMonitoringIntervalId = null; - } -}; - -// Function to apply theme styles based on current settings -const applyThemeStyles = (): void => { - // Choose the appropriate CSS file based on settings - let selectedStyle: string; - - if (settings.lightMode) { - // Light mode - (OLED friendly doesn't apply to light theme) - selectedStyle = lightTheme; - } else { - // Dark mode - selectedStyle = settings.oledFriendlyButtons - ? oledFriendlyTheme - : darkTheme; - } - - // Remove SeekBar coloring if Quality Color Matched Seek Bar is enabled - // This allows our manual coloring to take precedence - if (settings.qualityColorMatchedSeekBar) { - selectedStyle = selectedStyle.replace( - /\[class\^="_progressBarWrapper"\]\s*\{[^}]*\}/g, - "", - ); - setupQualityMonitoring(); - } else { - // If disabling, reset the seek bar color and stop monitoring - resetSeekBarColor(); - stopQualityMonitoring(); - } - - // Apply the selected theme using StyleTag - themeStyleTag.css = selectedStyle; -}; - -// Make this function available globally so Settings can call it -declare global { - interface Window { - updateObsidianStyles?: () => void; - } -} - -window.updateObsidianStyles = applyThemeStyles; - -// Apply the Obsidian theme initially -applyThemeStyles(); - -// Ensure interval is cleared on unload -unloads.add(() => { - stopQualityMonitoring(); -}); diff --git a/plugins/obsidian-theme-luna/src/light-theme.css b/plugins/obsidian-theme-luna/src/light-theme.css deleted file mode 100644 index c14ffad..0000000 --- a/plugins/obsidian-theme-luna/src/light-theme.css +++ /dev/null @@ -1,467 +0,0 @@ -/* Rounded corners for various elements */ -[class*="_thumbnail_"], -[class*="_imageWrapper_"], -[class*="_coverImage_"], -[class*="_overlayIconWrapperAlbum_"], -[class*="_playButton_"] { - border-radius: 5px !important; -} - -::-webkit-scrollbar { - display: none; -} - -:root { - --wave-color-solid-accent-fill: #666666; - --wave-color-solid-rainbow-yellow-fill: #666666; - --wave-color-solid-contrast-fill: #666666; - --wave-color-solid-base-brighter: #666666; - --wave-text-body-medium: #333333 !important; - --track-vibrant-color: #666666 !important; - --wave-color-opacity-contrast-fill-ultra-thin: #c0c0c0 !important; - --wave-color-solid-rainbow-yellow-darkest: #c0c0c0 !important; - --wave-color-solid-accent-dark: #555555; -} - -/* Credits to https://github.com/surfbryce for the fonts */ -@font-face { - font-family: "AbyssFont"; - font-weight: 400; - src: url("https://excel.lexploits.top/extra/tidal/LyricsRegular.woff2") - format("woff2"); -} - -@font-face { - font-family: "AbyssFont"; - font-weight: 500; - src: url("https://excel.lexploits.top/extra/tidal/LyricsMedium.woff2") - format("woff2"); -} - -@font-face { - font-family: "AbyssFont"; - font-weight: 600; - src: url("https://excel.lexploits.top/extra/tidal/LyricsSemibold.woff2") - format("woff2"); -} - -@font-face { - font-family: "AbyssFont"; - font-weight: 700; - src: url("https://excel.lexploits.top/extra/tidal/LyricsBold.woff2") - format("woff2"); -} - -[class^="followingButton"], -[title="Unfollow"], -[title="Follow"], -[title="Unfollow"] > span, -[title="Follow"] > span { - background-color: var(--wave-color-solid-rainbow-yellow-fill) !important; - color: var(--wave-color-solid-base-brighter); -} - -[class^="_wave-badge-color-max"] { - color: #333333 !important; - background-color: var(--wave-color-solid-accent-fill); - border-radius: 3px; -} - -[data-test="main-layout-sidebar-wrapper"] { - border-right: rgb(230, 230, 230) 1px solid; - background-color: rgba(250, 250, 250, 0.95) !important; -} - -[class^="_wave-badge"] { - background-color: var(--wave-color-solid-accent-fill); - border-radius: 4px; - color: #333333; -} - -[class^="_progressBarWrapper"] { - color: var(--wave-color-solid-accent-fill) !important; -} - -[class^="_sidebarItem"] > span { - color: #666666; -} - -[data-test="main-layout-header"] { - border-left: 0 !important; -} - -[class^="_sidebarItem"]:hover span { - color: #333333; -} - -[class^="_sidebarItem"] [class^="active"] > span { - color: #333333 !important; -} - -/* Sidebar icons and text - ensure grey colors */ -[data-test="main-layout-sidebar-wrapper"] svg, -[data-test="main-layout-sidebar-wrapper"] path, -[class^="_sidebarItem"] svg, -[class^="_sidebarItem"] path { - fill: #666666 !important; - color: #666666 !important; -} - -[data-test="main-layout-sidebar-wrapper"] span, -[class^="_sidebarItem"] span { - color: #666666 !important; -} - -[class^="_active"] { - color: var(--wave-color-solid-accent-fill) !important; -} - -[class^="ReactVirtualized__Grid"] { - border-radius: 10px; - margin: 5px; -} - -[data-test="media-table"] > div > div > div { - border: 1px solid rgb(230, 230, 230) !important; -} - -[class^="ReactVirtualized__Grid__innerScrollContainer"] { - border: none; - margin: 5px; -} - -[class^="button"] > span { - color: #333333; -} - -[class^="_explicitBadge"] { - color: var(--wave-color-solid-accent-fill); -} - -[class^="viewAllButton"] { - border-radius: 4px; - display: grid; - place-items: center; -} - -[data-test="current-media-imagery"] { - border: 0 !important; - margin: 0; -} - -[class^="_imageBorder"] { - display: none; -} - -[class^="_headerButtons"] > button, -[class^="_headerButtons"] > button > span, -[data-test="toggle-picture-in-picture"] { - background-color: var(--wave-color-solid-accent-fill) !important; - color: #333333; -} - -[class^="_container"] > [class^="_navigationArrows"] { - color: #333333; - background-color: var(--wave-color-solid-accent-fill) !important; - border-radius: 4px; -} - -[class^="_buttons"] > button > span { - color: #333333 !important; -} - -[class^="_container"] > button { - border: 0px none; -} - -[data-test="feed-sidebar"] { - margin-top: 10px; -} - -[data-test="footer-player"] { - width: calc(100% - 20px); - bottom: 10px; - left: 10px; - border: 1px solid rgba(200, 200, 200, 0.7); - border-radius: 4px !important; - position: absolute !important; -} - -[class^="_tooltipContainer"] > button { - background-color: var(--wave-color-solid-accent-fill); - color: #333333; -} - -[class^="_tooltipContainer"] > button:hover { - background-color: #555555 !important; -} - -[class^="_tableRow"]:hover > *, -[data-test-is-playing="true"] > * { - color: #333333 !important; -} - -[class^="_tableRow"] > *, -[data-test-is-playing="false"] > * { - color: #333333 !important; -} - -/* Track list text - ensure all text is dark */ -[data-test="media-table"] *, -[class^="_trackTitle"], -[class^="_artistName"], -[class^="_albumTitle"], -[class^="_tableCell"] *, -[class^="_tableCellContent"] * { - color: #333333 !important; -} - -[class*="coverColumn"] { - padding-left: 5px !important; -} - -[class^="actionList"] { - background-color: transparent; - margin: 0px; - border-radius: 5px; -} - -button[data-test="request-fullscreen"], -button[data-test="close-now-playing"], -button[data-test="play-all"], -button[data-test="shuffle-all"] { - color: #333333; - background-color: var(--wave-color-solid-accent-fill); - border-radius: 12px; -} - -button[data-test="request-fullscreen"]:hover, -button[data-test="close-now-playing"]:hover { - color: #333333; - background-color: #aaaaaa !important; -} - -.neptune-switch-checkbox:checked + .neptune-switch { - background-color: rgba(0, 0, 0, 0.1); -} - -[data-test="navigation-arrows"] > button { - background-color: var(--wave-color-solid-accent-fill) !important; - color: #333333 !important; - border-radius: 5px; -} - -[data-test="navigation-arrows"] > button:disabled { - background-color: #cccccc !important; - opacity: 1; -} - -[data-test="main-layout-header"] { - background-color: rgba(235, 235, 235, 0.95) !important; - backdrop-filter: blur(10px); - border: 1px solid var(--wave-color-opacity-contrast-fill-ultra-thin) !important; -} - -[data-test="feed-sidebar"] { - background-color: rgba(225, 225, 225, 0.9) !important; - backdrop-filter: blur(10px); - border: 1px solid var(--wave-color-opacity-contrast-fill-ultra-thin) !important; -} - -[data-test="stream-metadata"] { - background-color: rgba(230, 230, 230, 0.92) !important; - backdrop-filter: blur(10px); - border: 1px solid var(--wave-color-opacity-contrast-fill-ultra-thin) !important; -} - -[data-test="footer-player"] { - background-color: rgba(255, 255, 255, 0.6) !important; - backdrop-filter: blur(15px); - border: 1px solid rgba(200, 200, 200, 0.7) !important; -} - -[data-wave-color="textUrl"] { - color: var(--wave-color-solid-accent-fill); -} - -[class^="_smallHeader"] { - margin-top: 7.5px; -} - -/* Button styling using proper light theme approach */ -:root { - --button-light: #d9d9d9 !important; - --button-medium: #cbcbcb !important; -} - -/*buttons*/ -._activeTab_f47dafa { - background: #0000001c; -} - -/*canvas nav buttons*/ -.viewAllButton--Nb87U, -.css-7l8ggf { - background: #e0e0e0; -} - -.viewAllButton--Nb87U:hover, -.css-7l8ggf:hover { - background: #cbcbcb; -} - -/*tracks page*/ -.variantPrimary--pjymy, -._button_3357ce6 { - background-color: var(--button-light); -} - -._button_f1c7fcb { - background: var(--wave-color-solid-base-brighter); -} - -._button_84b8ffe { - background-color: var(--wave-color-solid-base-brighter); -} - -._button_84b8ffe:hover { - background-color: var(--wave-color-solid-base-brightest); -} - -.button--_0I_t { - background-color: var(--button-light); -} - -.button--_0I_t:hover { - background-color: var(--wave-color-opacity-contrast-fill-regular); -} - -._button_94c5125 { - background: var(--wave-color-solid-base-brighter); -} - -.primary--NLSX4 { - background-color: #d5d5d5; -} - -.primary--NLSX4:hover { - background-color: var(--wave-color-opacity-contrast-fill-regular) !important; -} - -.primary--NLSX4:disabled { - background-color: #e7e7e8; -} - -.primary--NLSX4:disabled:hover { - background-color: #e7e7e8; -} - -[class^="__NEPTUNE_PAGE"], -[data-test="main"], -.mainContent { - margin-top: 5vh !important; -} - -[data-test="button-desktop-release-notes"], -[data-test="button-release-notes"] { - background-color: #333333; -} - -[data-test="button-desktop-release-notes"]:hover, -[data-test="button-release-notes"]:hover { - background-color: #555555 !important; - transition: none !important; -} - -#playQueueSidebar { - top: 50px !important; - border: 1px solid var(--wave-color-opacity-contrast-fill-ultra-thin); - margin: 2px; - margin-right: -14px !important; - background-color: rgba(220, 220, 220, 0.9) !important; - backdrop-filter: blur(10px); -} - -[class^="_bottomGradient"] { - visibility: hidden; -} - -[data-test="settings-page"] { - padding-bottom: 60px !important; -} - -[data-test="query-suggestions"], -[data-test="recent-searches-container"] { - background-color: rgba(227, 227, 227, 0.85); - backdrop-filter: blur(10px); -} - -[data-test="contextmenu"] { - border: 1px solid var(--wave-color-opacity-contrast-fill-ultra-thin) !important; -} - -[class^="_dataContainer_"]::before { - background-image: var(--img); - filter: blur(10px) brightness(1.2); -} - -/* Player bar text colors - fix white text issues */ -[data-test="footer-player"] * { - color: #333333 !important; -} - -[data-test="footer-player"] [class*="trackTitle"], -[data-test="footer-player"] [class*="artistName"], -[data-test="footer-player"] [class*="trackInfo"], -[data-test="footer-player"] [class*="duration"], -[data-test="footer-player"] [class*="time"], -[data-test="footer-player"] [class*="timestamp"] { - color: #333333 !important; -} - -/* Main page background */ -body, -[data-test="main"], -[class^="__NEPTUNE_PAGE"] { - background-color: #f5f5f5 !important; -} - - -/* Fixes the new Sticky Header Tidal added.. in the shittest jankiest way possible */ -[class*="_stickyHeader"] { - background: transparent !important; - backdrop-filter: blur(50px); - background-color: transparent !important; - width: fit-content !important; - padding-right: 3.5% !important; - -webkit-mask-image: - linear-gradient(to bottom, black 60%, transparent), - linear-gradient(to right, black 85%, transparent) !important; - mask-image: - linear-gradient(to bottom, black 60%, transparent), - linear-gradient(to right, black 85%, transparent) !important; - -webkit-mask-composite: source-in !important; - mask-composite: intersect !important; - /* border-radius: 3px 0 0 0 !important; */ - padding-bottom: 5px !important; -} - -[class*="_playQueueItems"]{ - border-radius: 2.5px 0 0 0 !important; -} - -[data-test="playqueue-sticky-clear-active-items"] { - visibility: collapse !important; - width: 0px !important; -} - -[data-test="playqueue-sticky-clear-source-items"] { - visibility: collapse !important; - width: 0px !important; -} - - -/* Remove the background color from the small header */ -[class*="_smallHeader"]::before { - background-color: transparent !important; -} \ No newline at end of file diff --git a/plugins/obsidian-theme-luna/src/oled-friendly.css b/plugins/obsidian-theme-luna/src/oled-friendly.css deleted file mode 100644 index fd822fd..0000000 --- a/plugins/obsidian-theme-luna/src/oled-friendly.css +++ /dev/null @@ -1,262 +0,0 @@ -/* Rounded corners for various elements */ -[class*="_thumbnail_"], -[class*="_imageWrapper_"], -[class*="_coverImage_"], -[class*="_overlayIconWrapperAlbum_"], -[class*="_playButton_"] { - border-radius: 5px !important; -} - -::-webkit-scrollbar { - display: none; -} - -:root { - --wave-color-solid-accent-fill: white; - --wave-color-solid-rainbow-yellow-fill: white; - --wave-color-solid-contrast-fill: white; - --wave-color-solid-base-brighter: black; - --wave-text-body-medium: white !important; - --track-vibrant-color: white !important; - --wave-color-opacity-contrast-fill-ultra-thin: #fffafa1a !important; - --wave-color-solid-rainbow-yellow-darkest: #fffafa1a !important; - --wave-color-solid-accent-dark: rgb(128, 128, 128); -} - -/* Credits to https://github.com/surfbryce for the fonts */ -@font-face { - font-family: "AbyssFont"; - font-weight: 400; - src: url("https://excel.lexploits.top/extra/tidal/LyricsRegular.woff2") - format("woff2"); -} - -@font-face { - font-family: "AbyssFont"; - font-weight: 500; - src: url("https://excel.lexploits.top/extra/tidal/LyricsMedium.woff2") - format("woff2"); -} - -@font-face { - font-family: "AbyssFont"; - font-weight: 600; - src: url("https://excel.lexploits.top/extra/tidal/LyricsSemibold.woff2") - format("woff2"); -} - -@font-face { - font-family: "AbyssFont"; - font-weight: 700; - src: url("https://excel.lexploits.top/extra/tidal/LyricsBold.woff2") - format("woff2"); -} - -[class^="followingButton"], -[title="Unfollow"], -[title="Follow"], -[title="Unfollow"] > span, -[title="Follow"] > span { - background-color: var(--wave-color-solid-rainbow-yellow-fill) !important; - color: var(--wave-color-solid-base-brighter); -} - -[class^="_wave-badge-color-max"] { - color: black !important; - background-color: var(--wave-color-solid-accent-fill); - border-radius: 3px; -} - -[data-test="main-layout-sidebar-wrapper"] { - border-right: rgb(25, 25, 25) 1px solid; -} - -[class^="_wave-badge"] { - background-color: var(--wave-color-solid-accent-fill); - border-radius: 4px; - color: black; -} - -[class^="_progressBarWrapper"] { - color: var(--wave-color-solid-accent-fill) !important; -} - -[class^="_sidebarItem"] > span { - color: var(--wave-color-solid-accent-dark); -} - -[data-test="main-layout-header"] { - border-left: 0 !important; -} - -[class^="_sidebarItem"]:hover span { - color: var(--wave-color-solid-contrast-fill); -} - -[class^="_sidebarItem"] [class^="active"] > span { - color: var(--wave-color-solid-accent-dark) !important; -} - -[class^="_active"] { - color: var(--wave-color-solid-accent-fill) !important; -} - -[class^="ReactVirtualized__Grid"] { - border-radius: 10px; - margin: 5px; -} - -[data-test="media-table"] > div > div { - border-radius: 8px; - border: 1px solid rgb(25, 25, 25) !important; -} - -[class^="ReactVirtualized__Grid__innerScrollContainer"] { - border: none; - margin: 5px; -} - -[class^="_explicitBadge"] { - color: var(--wave-color-solid-accent-fill); -} - -[data-test="current-media-imagery"] { - border: 0 !important; - margin: 0; -} - -[class^="_imageBorder"] { - display: none; -} - -[data-test="feed-sidebar"] { - margin-top: 10px; -} - -[data-test="footer-player"] { - width: calc(100% - 20px); - bottom: 10px; - left: 10px; - border: 1px solid rgb(25, 25, 25); - border-radius: 4px !important; - position: absolute !important; -} - -[class^="_tableRow"]:hover > *, -[data-test-is-playing="true"] > * { - color: var(--wave-color-solid-accent-fill) !important; -} - -[class^="_tableRow"] > *, -[data-test-is-playing="false"] > * { - color: lightgray !important; -} - -[class*="coverColumn"] { - padding-left: 5px !important; -} - -[class^="actionList"] { - background-color: transparent; - margin: 0px; - border-radius: 5px; -} - -.neptune-switch-checkbox:checked + .neptune-switch { - background-color: rgba(255, 255, 255, 0.1); -} - -[data-test="main-layout-header"], -[data-test="feed-sidebar"], -[data-test="stream-metadata"], -[data-test="footer-player"] { - background-color: rgba(0, 0, 0, 0.8) !important; - backdrop-filter: blur(10px); - border: 1px solid var(--wave-color-opacity-contrast-fill-ultra-thin) !important; -} - -[data-wave-color="textUrl"] { - color: var(--wave-color-solid-accent-fill); -} - -[class^="_smallHeader"] { - margin-top: 7.5px; -} - -[class^="__NEPTUNE_PAGE"], -[data-test="main"], -.mainContent { - margin-top: 5vh !important; -} - -#playQueueSidebar { - top: 50px !important; - border: 1px solid var(--wave-color-opacity-contrast-fill-ultra-thin); - margin: 2px; - margin-right: -14px !important; - background-color: rgba(0, 0, 0, 0.8) !important; - backdrop-filter: blur(10px); -} - -[class^="_bottomGradient"] { - visibility: hidden; -} - -[data-test="settings-page"] { - padding-bottom: 60px !important; -} - -[data-test="query-suggestions"], -[data-test="recent-searches-container"] { - background-color: rgba(0, 0, 0, 0.6); - backdrop-filter: blur(10px); -} - -[data-test="contextmenu"] { - border: 1px solid var(--wave-color-opacity-contrast-fill-ultra-thin) !important; -} - -[class^="_dataContainer_"]::before { - background-image: var(--img); - filter: blur(10px) brightness(0.4); -} - - -/* Fixes the new Sticky Header Tidal added.. in the shittest jankiest way possible */ -[class*="_stickyHeader"] { - background: transparent !important; - backdrop-filter: blur(50px); - background-color: transparent !important; - width: fit-content !important; - padding-right: 3.5% !important; - -webkit-mask-image: - linear-gradient(to bottom, black 60%, transparent), - linear-gradient(to right, black 85%, transparent) !important; - mask-image: - linear-gradient(to bottom, black 60%, transparent), - linear-gradient(to right, black 85%, transparent) !important; - -webkit-mask-composite: source-in !important; - mask-composite: intersect !important; - /* border-radius: 3px 0 0 0 !important; */ - padding-bottom: 5px !important; -} - -[class*="_playQueueItems"]{ - border-radius: 2.5px 0 0 0 !important; -} - -[data-test="playqueue-sticky-clear-active-items"] { - visibility: collapse !important; - width: 0px !important; -} - -[data-test="playqueue-sticky-clear-source-items"] { - visibility: collapse !important; - width: 0px !important; -} - - -/* Remove the background color from the small header */ -[class*="_smallHeader"]::before { - background-color: transparent !important; -} \ No newline at end of file diff --git a/plugins/radiant-lyrics-luna/src/floating-player-bar.css b/plugins/radiant-lyrics-luna/src/floating-player-bar.css index b64aad8..d7a983b 100644 --- a/plugins/radiant-lyrics-luna/src/floating-player-bar.css +++ b/plugins/radiant-lyrics-luna/src/floating-player-bar.css @@ -1,6 +1,6 @@ /* Floating Rounded Player Bar from Obsidian <3 */ -/* MARKER: Floating Player Bar CSS*/ +/* MARKER: Floating Player Bar CSS */ [data-test="footer-player"] { position: absolute !important;