mirror of
https://github.com/Dictionarry-Hub/profilarr.git
synced 2026-06-16 09:18:45 -04:00
refactor: rename theme to Ashruvarsha, add Rajdhani and Space Mono fonts
This commit is contained in:
@@ -922,14 +922,14 @@ and are tracked in issue #298:
|
||||
|
||||
### Available themes
|
||||
|
||||
| Theme | Mode | Selector | Description |
|
||||
| ------------- | ----- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| System | auto | (none) | Follows device `prefers-color-scheme` |
|
||||
| Default Light | light | `.light` / `:root` | Clean neutral palette, DM Sans / Geist Mono |
|
||||
| Default Dark | dark | `.dark` | Semi-transparent surfaces on dark background |
|
||||
| Retro | light | `.theme-retro` | Win98 / Napster: silver-grey, navy accent, square corners, inset bevels, Tahoma / Courier New, Clippy help button |
|
||||
| Classic | dark | `.theme-classic` | Profilarr v1: deep charcoal (#111827), gray-800 surfaces, blue-600 accent, tighter radius (8px cards, 6px controls), card shadows, Schibsted Grotesk / Fira Code |
|
||||
| Vesper | dark | `.theme-vesper` | Twilight indigo (#161122), violet-purple surfaces, amber-gold accent (the evening star), soft card shadows, slightly larger card radius, IBM Plex Sans / IBM Plex Mono |
|
||||
| Tannhauser | dark | `.theme-tannhauser` | Cyberpunk sprawl (#0b0e14), cyan circuit-trace borders, hot magenta accent, neon-glow card shadows, sharp corners (6px cards, 4px controls), Inter / JetBrains Mono |
|
||||
| Theme | Mode | Selector | Description |
|
||||
| ------------- | ----- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| System | auto | (none) | Follows device `prefers-color-scheme` |
|
||||
| Default Light | light | `.light` / `:root` | Clean neutral palette, DM Sans / Geist Mono |
|
||||
| Default Dark | dark | `.dark` | Semi-transparent surfaces on dark background |
|
||||
| Retro | light | `.theme-retro` | Win98 / Napster: silver-grey, navy accent, square corners, inset bevels, Tahoma / Courier New, Clippy help button |
|
||||
| Classic | dark | `.theme-classic` | Profilarr v1: deep charcoal (#111827), gray-800 surfaces, blue-600 accent, tighter radius (8px cards, 6px controls), card shadows, Schibsted Grotesk / Fira Code |
|
||||
| Vesper | dark | `.theme-vesper` | Twilight indigo (#161122), violet-purple surfaces, amber-gold accent (the evening star), soft card shadows, slightly larger card radius, IBM Plex Sans / IBM Plex Mono |
|
||||
| Ashruvarsha | dark | `.theme-ashruvarsha` | Cyberpunk sprawl (#0b0e14), cyan circuit-trace borders, hot magenta accent, neon-glow card shadows, sharp corners (6px cards, 4px controls), Rajdhani / Space Mono |
|
||||
|
||||
Planned: user-loadable custom theme files.
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
@import './styles/themes/retro.css';
|
||||
@import './styles/themes/classic.css';
|
||||
@import './styles/themes/vesper.css';
|
||||
@import './styles/themes/tannhauser.css';
|
||||
@import './styles/themes/ashruvarsha.css';
|
||||
@import './styles/prose.css';
|
||||
@import './styles/scrollbar.css';
|
||||
@import './styles/transitions.css';
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
retro: { cls: 'theme-retro', scheme: 'light' },
|
||||
classic: { cls: 'theme-classic', scheme: 'dark' },
|
||||
vesper: { cls: 'theme-vesper', scheme: 'dark' },
|
||||
tannhauser: { cls: 'theme-tannhauser', scheme: 'dark' }
|
||||
ashruvarsha: { cls: 'theme-ashruvarsha', scheme: 'dark' }
|
||||
};
|
||||
var mapped = themeMap[stored];
|
||||
if (mapped) {
|
||||
|
||||
@@ -10,8 +10,8 @@ import { browser } from '$app/environment';
|
||||
import { themePreference } from '$stores/theme.ts';
|
||||
import { getThemeDefinition } from '$lib/client/themes/registry.ts';
|
||||
|
||||
export type SansFont = 'auto' | 'dm-sans' | 'inter' | 'ibm-plex-sans';
|
||||
export type MonoFont = 'auto' | 'geist-mono' | 'jetbrains-mono' | 'ibm-plex-mono';
|
||||
export type SansFont = 'auto' | 'dm-sans' | 'inter' | 'ibm-plex-sans' | 'rajdhani';
|
||||
export type MonoFont = 'auto' | 'geist-mono' | 'jetbrains-mono' | 'ibm-plex-mono' | 'space-mono';
|
||||
|
||||
export interface FontSettings {
|
||||
sans: SansFont;
|
||||
@@ -23,25 +23,29 @@ const STORAGE_KEY = 'fontSettings';
|
||||
const sansFontStacks: Record<Exclude<SansFont, 'auto'>, string> = {
|
||||
'dm-sans': "'DM Sans', ui-sans-serif, system-ui, sans-serif",
|
||||
inter: "'Inter', ui-sans-serif, system-ui, sans-serif",
|
||||
'ibm-plex-sans': "'IBM Plex Sans', ui-sans-serif, system-ui, sans-serif"
|
||||
'ibm-plex-sans': "'IBM Plex Sans', ui-sans-serif, system-ui, sans-serif",
|
||||
rajdhani: "'Rajdhani', ui-sans-serif, system-ui, sans-serif"
|
||||
};
|
||||
|
||||
const monoFontStacks: Record<Exclude<MonoFont, 'auto'>, string> = {
|
||||
'geist-mono': "'Geist Mono', ui-monospace, monospace",
|
||||
'jetbrains-mono': "'JetBrains Mono', ui-monospace, monospace",
|
||||
'ibm-plex-mono': "'IBM Plex Mono', ui-monospace, monospace"
|
||||
'ibm-plex-mono': "'IBM Plex Mono', ui-monospace, monospace",
|
||||
'space-mono': "'Space Mono', ui-monospace, monospace"
|
||||
};
|
||||
|
||||
const allSansOptions: { value: Exclude<SansFont, 'auto'>; label: string }[] = [
|
||||
{ value: 'dm-sans', label: 'DM Sans' },
|
||||
{ value: 'inter', label: 'Inter' },
|
||||
{ value: 'ibm-plex-sans', label: 'IBM Plex Sans' }
|
||||
{ value: 'ibm-plex-sans', label: 'IBM Plex Sans' },
|
||||
{ value: 'rajdhani', label: 'Rajdhani' }
|
||||
];
|
||||
|
||||
const allMonoOptions: { value: Exclude<MonoFont, 'auto'>; label: string }[] = [
|
||||
{ value: 'geist-mono', label: 'Geist Mono' },
|
||||
{ value: 'jetbrains-mono', label: 'JetBrains Mono' },
|
||||
{ value: 'ibm-plex-mono', label: 'IBM Plex Mono' }
|
||||
{ value: 'ibm-plex-mono', label: 'IBM Plex Mono' },
|
||||
{ value: 'space-mono', label: 'Space Mono' }
|
||||
];
|
||||
|
||||
function applyFonts(settings: FontSettings) {
|
||||
|
||||
@@ -8,7 +8,7 @@ export type ThemePreference =
|
||||
| 'retro'
|
||||
| 'classic'
|
||||
| 'vesper'
|
||||
| 'tannhauser';
|
||||
| 'ashruvarsha';
|
||||
export type ThemeMode = 'light' | 'dark';
|
||||
|
||||
export interface ThemeDefinition {
|
||||
@@ -89,15 +89,15 @@ export const themeDefinitions: ThemeDefinition[] = [
|
||||
defaultMono: 'ibm-plex-mono'
|
||||
},
|
||||
{
|
||||
value: 'tannhauser',
|
||||
label: 'Tannhauser',
|
||||
shortLabel: 'Tannhauser',
|
||||
description: 'C-beams glittering in the dark',
|
||||
value: 'ashruvarsha',
|
||||
label: 'Ashruvarsha',
|
||||
shortLabel: 'Ashruvarsha',
|
||||
description: 'Tears in rain',
|
||||
icon: Zap,
|
||||
className: 'theme-tannhauser',
|
||||
className: 'theme-ashruvarsha',
|
||||
mode: 'dark',
|
||||
defaultSans: 'inter',
|
||||
defaultMono: 'jetbrains-mono'
|
||||
defaultSans: 'rajdhani',
|
||||
defaultMono: 'space-mono'
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
@@ -78,8 +78,8 @@
|
||||
let quip = '';
|
||||
|
||||
$: isRetro = $themePreference === 'retro';
|
||||
$: isTannhauser = $themePreference === 'tannhauser';
|
||||
$: activeQuips = isTannhauser ? joiQuips : isRetro ? clippyQuips : parrotQuips;
|
||||
$: isAshruvarsha = $themePreference === 'ashruvarsha';
|
||||
$: activeQuips = isAshruvarsha ? joiQuips : isRetro ? clippyQuips : parrotQuips;
|
||||
|
||||
function pickQuip() {
|
||||
quip = activeQuips[Math.floor(Math.random() * activeQuips.length)];
|
||||
@@ -107,7 +107,7 @@
|
||||
on:click|stopPropagation
|
||||
>
|
||||
{#if open}
|
||||
{#if isTannhauser}
|
||||
{#if isAshruvarsha}
|
||||
<!-- Joi holographic popup -->
|
||||
<div
|
||||
transition:fly={{ y: isFab ? 8 : -8, duration: 200 }}
|
||||
@@ -233,7 +233,7 @@
|
||||
{/if}
|
||||
|
||||
{#if isFab}
|
||||
{#if isTannhauser}
|
||||
{#if isAshruvarsha}
|
||||
<!-- Holographic Bot projection -->
|
||||
<div
|
||||
class="joi-fab cursor-pointer"
|
||||
@@ -272,7 +272,7 @@
|
||||
</button>
|
||||
{/if}
|
||||
{:else}
|
||||
{#if isTannhauser}
|
||||
{#if isAshruvarsha}
|
||||
<!-- Joi navbar variant: compact holographic button -->
|
||||
<button
|
||||
class="joi-nav-btn flex h-9 w-9 cursor-pointer items-center justify-center rounded-sm border border-[rgb(0_210_230_/_0.25)] bg-transparent text-[#00d4ee] transition-all hover:border-[rgb(0_210_230_/_0.5)] hover:text-[#f72585] hover:shadow-[0_0_12px_rgb(0_210_230_/_0.15)]"
|
||||
@@ -397,7 +397,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
/* ===== Joi / Tannhauser theme ===== */
|
||||
/* ===== Joi / Ashruvarsha theme ===== */
|
||||
|
||||
/* ===== Joi holographic Bot ===== */
|
||||
|
||||
|
||||
@@ -61,3 +61,43 @@
|
||||
font-display: swap;
|
||||
src: url('/fonts/IBMPlexMono-Bold.woff2') format('woff2');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Rajdhani';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('/fonts/Rajdhani-Regular.woff2') format('woff2');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Rajdhani';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
src: url('/fonts/Rajdhani-SemiBold.woff2') format('woff2');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Rajdhani';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url('/fonts/Rajdhani-Bold.woff2') format('woff2');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Space Mono';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
src: url('/fonts/SpaceMono-Regular.woff2') format('woff2');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Space Mono';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-display: swap;
|
||||
src: url('/fonts/SpaceMono-Bold.woff2') format('woff2');
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
/*
|
||||
* Tannhauser
|
||||
* Ashruvarsha (अश्रुवर्ष)
|
||||
*
|
||||
* "I've watched C-beams glitter in the dark near the Tannhauser Gate."
|
||||
* Sanskrit: ashru (tear) + varsha (rain). Tears in rain.
|
||||
*
|
||||
* "I've watched C-beams glitter in the dark near the Tannhauser Gate.
|
||||
* All those moments will be lost in time, like tears in rain."
|
||||
*
|
||||
* The grid never sleeps. Somewhere in the sprawl, your instances are
|
||||
* running -- Radarr nodes pulling feeds, Sonarr scrapers indexing,
|
||||
@@ -20,14 +23,14 @@
|
||||
* light.
|
||||
*
|
||||
* Sharp corners. Industrial spacing. Everything built for function,
|
||||
* not comfort. Inter is clean, dense, corporate-precise -- the font
|
||||
* of megacorp interfaces. JetBrains Mono has ligatures for reading
|
||||
* config at 3am.
|
||||
* not comfort. Rajdhani is geometric with Devanagari roots -- the
|
||||
* script of the language this theme is named in. Space Mono is
|
||||
* retro-futuristic, the monospace of a replicant's terminal.
|
||||
*/
|
||||
|
||||
.theme-tannhauser {
|
||||
--theme-font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif;
|
||||
--theme-font-mono: 'JetBrains Mono', ui-monospace, monospace;
|
||||
.theme-ashruvarsha {
|
||||
--theme-font-sans: 'Rajdhani', ui-sans-serif, system-ui, sans-serif;
|
||||
--theme-font-mono: 'Space Mono', ui-monospace, monospace;
|
||||
|
||||
/* The dark between streetlights */
|
||||
--theme-bg: #0b0e14;
|
||||
BIN
static/fonts/Rajdhani-Bold.woff2
Normal file
BIN
static/fonts/Rajdhani-Bold.woff2
Normal file
Binary file not shown.
BIN
static/fonts/Rajdhani-Regular.woff2
Normal file
BIN
static/fonts/Rajdhani-Regular.woff2
Normal file
Binary file not shown.
BIN
static/fonts/Rajdhani-SemiBold.woff2
Normal file
BIN
static/fonts/Rajdhani-SemiBold.woff2
Normal file
Binary file not shown.
BIN
static/fonts/SpaceMono-Bold.woff2
Normal file
BIN
static/fonts/SpaceMono-Bold.woff2
Normal file
Binary file not shown.
BIN
static/fonts/SpaceMono-Regular.woff2
Normal file
BIN
static/fonts/SpaceMono-Regular.woff2
Normal file
Binary file not shown.
Reference in New Issue
Block a user