From 015028240c968503863c7129c1f91c3848df3955 Mon Sep 17 00:00:00 2001
From: neon <18559658+neonsolstice@users.noreply.github.com>
Date: Thu, 8 Jan 2026 11:29:28 -0600
Subject: [PATCH] feat: library background patterns with settings picker
---
client/src/assets/main.css | 35 +++++++++++++++++-
.../features/settings/AppearanceSettings.vue | 36 ++++++++++++++++++-
client/src/stores/theme.ts | 29 ++++++++++++++-
client/src/views/HomeView.vue | 7 ++--
server/src/db/migrations/meta/_journal.json | 2 +-
5 files changed, 103 insertions(+), 6 deletions(-)
diff --git a/client/src/assets/main.css b/client/src/assets/main.css
index 830c89f09..c63984157 100644
--- a/client/src/assets/main.css
+++ b/client/src/assets/main.css
@@ -331,11 +331,44 @@ html.radius-rounded {
--shadow-2xl: var(--elevation-2xl);
}
-.dot-grid {
+.pattern-dots {
background-image: radial-gradient(circle, var(--dot-color) 1px, transparent 1px);
background-size: 24px 24px;
}
+.pattern-grid {
+ background-image: linear-gradient(var(--dot-color) 1px, transparent 1px), linear-gradient(90deg, var(--dot-color) 1px, transparent 1px);
+ background-size: 32px 32px;
+}
+
+.pattern-cross {
+ background-image: radial-gradient(circle, var(--dot-color) 1px, transparent 1px), radial-gradient(circle, var(--dot-color) 1px, transparent 1px);
+ background-size: 24px 24px;
+ background-position:
+ 0 0,
+ 12px 12px;
+}
+
+.pattern-gradient {
+ background-image: radial-gradient(ellipse 70% 55% at 0% 0%, color-mix(in oklch, var(--primary) 20%, transparent), transparent 65%);
+}
+
+.pattern-aurora {
+ background-image:
+ radial-gradient(ellipse 60% 45% at 0% 50%, color-mix(in oklch, var(--primary) 15%, transparent), transparent 100%),
+ radial-gradient(ellipse 50% 40% at 100% 50%, color-mix(in oklch, var(--primary) 10%, transparent), transparent 100%),
+ radial-gradient(ellipse 40% 35% at 50% 0%, color-mix(in oklch, var(--primary) 8%, transparent), transparent 100%);
+}
+
+.pattern-rings {
+ background-image: repeating-radial-gradient(circle at 50% 50%, transparent 0, transparent 28px, var(--dot-color) 29px, transparent 30px);
+}
+
+.pattern-noise {
+ background-image: url("data:image/svg+xml,");
+ background-size: 200px 200px;
+}
+
.glow-wrapper {
background-image:
url('/topbar.png'), radial-gradient(50% 50% at center -25px, color-mix(in oklch, var(--primary) 35%, transparent) 0%, transparent 100%);
diff --git a/client/src/features/settings/AppearanceSettings.vue b/client/src/features/settings/AppearanceSettings.vue
index 86e166cf6..d9c94083b 100644
--- a/client/src/features/settings/AppearanceSettings.vue
+++ b/client/src/features/settings/AppearanceSettings.vue
@@ -1,5 +1,5 @@