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;