Compare commits

..

No commits in common. 'e69ef0cb017de8903f5661c55297bc168f2e644c' and '1bceeeb2f615ebc52066121a5f5234096bd0c06b' have entirely different histories.

@ -0,0 +1,16 @@
# v0.0.13
## Features
## Enhancements
- Track durations will now be updated using MusicBrainz data where possible, if the duration was not provided by the request. (#27)
- You can now search and merge items by their ID! Just preface the id with `id:`. E.g. `id:123` (#26)
- Hovering over any "hours listened" statistic will now also show the minutes listened.
- An experiemental ARM docker image has been added. (#51)
## Fixes
- Navigating from one page directly to another and then changing the image via drag-and-drop now works as expected. (#25)
- Fixed a bug that caused updated usernames with uppercase letters to create login failures.
## Updates
- Migrations are now embedded to allow for a community AUR package. (#37)

@ -53,9 +53,7 @@ function getStoredCustomTheme(): Theme | undefined {
export function ThemeProvider({ children }: { children: ReactNode }) { export function ThemeProvider({ children }: { children: ReactNode }) {
let defaultTheme = useAppContext().defaultTheme; let defaultTheme = useAppContext().defaultTheme;
let initialTheme = localStorage.getItem("theme") ?? defaultTheme; let initialTheme = localStorage.getItem("theme") ?? defaultTheme;
const [themeName, setThemeName] = useState( const [themeName, setThemeName] = useState(initialTheme);
themes[initialTheme] ? initialTheme : defaultTheme
);
const [currentTheme, setCurrentTheme] = useState<Theme>(() => { const [currentTheme, setCurrentTheme] = useState<Theme>(() => {
if (initialTheme === "custom") { if (initialTheme === "custom") {
const customTheme = getStoredCustomTheme(); const customTheme = getStoredCustomTheme();
@ -80,8 +78,6 @@ export function ThemeProvider({ children }: { children: ReactNode }) {
if (foundTheme) { if (foundTheme) {
localStorage.setItem("theme", newThemeName); localStorage.setItem("theme", newThemeName);
setCurrentTheme(foundTheme); setCurrentTheme(foundTheme);
} else {
setTheme(defaultTheme);
} }
} }
}; };

@ -1,24 +1,26 @@
import { globalStyle } from "@vanilla-extract/css"; import { globalStyle } from "@vanilla-extract/css"
import { themeVars } from "./vars.css"; import { themeVars } from "./vars.css"
export type Theme = { export type Theme = {
bg: string; bg: string
bgSecondary: string; bgSecondary: string
bgTertiary: string; bgTertiary: string
fg: string; fg: string
fgSecondary: string; fgSecondary: string
fgTertiary: string; fgTertiary: string
primary: string; primary: string
primaryDim: string; primaryDim: string
accent: string; accent: string
accentDim: string; accentDim: string
error: string; error: string
warning: string; warning: string
info: string; info: string
success: string; success: string
}; }
export const THEME_KEYS = ["--color"]; export const THEME_KEYS = [
'--color'
]
export const themes: Record<string, Theme> = { export const themes: Record<string, Theme> = {
yuu: { yuu: {
@ -149,21 +151,21 @@ export const themes: Record<string, Theme> = {
success: "#28A745", success: "#28A745",
info: "#17A2B8", info: "#17A2B8",
}, },
rosebud: { asuka: {
bg: "#260d19", bg: "#3B1212",
bgSecondary: "#3A1325", bgSecondary: "#471B1B",
bgTertiary: "#45182D", bgTertiary: "#020202",
fg: "#F3CAD8", fg: "#F1E9E6",
fgSecondary: "#C88B99", fgSecondary: "#CCB6AE",
fgTertiary: "#B2677D", fgTertiary: "#9F8176",
primary: "#d76fa2", primary: "#F1E9E6",
primaryDim: "#b06687", primaryDim: "#CCB6AE",
accent: "#e79cb8", accent: "#41CE41",
accentDim: "#c27d8c", accentDim: "#3BA03B",
error: "#e84b73", error: "#DC143C",
warning: "#f2b38c", warning: "#FFD700",
success: "#6FC4A6", success: "#32CD32",
info: "#6BAEDC", info: "#1E90FF",
}, },
urim: { urim: {
bg: "#101713", bg: "#101713",
@ -212,13 +214,13 @@ export const themes: Record<string, Theme> = {
warning: "#FFC107", warning: "#FFC107",
success: "#28A745", success: "#28A745",
info: "#17A2B8", info: "#17A2B8",
}, }
}; };
export default themes; export default themes
Object.entries(themes).forEach(([name, theme]) => { Object.entries(themes).forEach(([name, theme]) => {
const selector = `[data-theme="${name}"]`; const selector = `[data-theme="${name}"]`
globalStyle(selector, { globalStyle(selector, {
vars: { vars: {
@ -236,6 +238,6 @@ Object.entries(themes).forEach(([name, theme]) => {
[themeVars.warning]: theme.warning, [themeVars.warning]: theme.warning,
[themeVars.success]: theme.success, [themeVars.success]: theme.success,
[themeVars.info]: theme.info, [themeVars.info]: theme.info,
}, }
}); })
}); })

Loading…
Cancel
Save