fix: unify theme system - fix theme switching persistence

- Unified localStorage key to 'theme-preference' across all components
- Fixed header.tsx using wrong localStorage key ('theme' instead of 'theme-preference')
- Added localStorage hybrid persistence for instant theme changes
- Removed router.refresh() which was causing stale data revert
- Replaced Blue theme with Sepia
- Consolidated auth() calls to prevent race conditions
- Updated UserSettingsData types to include all themes
This commit is contained in:
2026-01-18 22:33:41 +01:00
parent ef60dafd73
commit ddb67ba9e5
306 changed files with 59580 additions and 6063 deletions

View File

@@ -124,17 +124,160 @@ exports.Prisma.NoteScalarFieldEnum = {
title: 'title',
content: 'content',
color: 'color',
isPinned: 'isPinned',
isArchived: 'isArchived',
type: 'type',
checkItems: 'checkItems',
labels: 'labels',
images: 'images',
isPinned: 'isPinned',
isArchived: 'isArchived',
links: 'links',
reminder: 'reminder',
isReminderDone: 'isReminderDone',
reminderRecurrence: 'reminderRecurrence',
reminderLocation: 'reminderLocation',
isMarkdown: 'isMarkdown',
size: 'size',
embedding: 'embedding',
sharedWith: 'sharedWith',
userId: 'userId',
order: 'order',
notebookId: 'notebookId',
createdAt: 'createdAt',
updatedAt: 'updatedAt',
autoGenerated: 'autoGenerated',
aiProvider: 'aiProvider',
aiConfidence: 'aiConfidence',
language: 'language',
languageConfidence: 'languageConfidence',
lastAiAnalysis: 'lastAiAnalysis'
};
exports.Prisma.NotebookScalarFieldEnum = {
id: 'id',
name: 'name',
icon: 'icon',
color: 'color',
order: 'order',
userId: 'userId',
createdAt: 'createdAt',
updatedAt: 'updatedAt'
};
exports.Prisma.LabelScalarFieldEnum = {
id: 'id',
name: 'name',
color: 'color',
notebookId: 'notebookId',
userId: 'userId',
createdAt: 'createdAt',
updatedAt: 'updatedAt'
};
exports.Prisma.UserScalarFieldEnum = {
id: 'id',
name: 'name',
email: 'email',
emailVerified: 'emailVerified',
password: 'password',
role: 'role',
image: 'image',
theme: 'theme',
resetToken: 'resetToken',
resetTokenExpiry: 'resetTokenExpiry',
createdAt: 'createdAt',
updatedAt: 'updatedAt'
};
exports.Prisma.AccountScalarFieldEnum = {
userId: 'userId',
type: 'type',
provider: 'provider',
providerAccountId: 'providerAccountId',
refresh_token: 'refresh_token',
access_token: 'access_token',
expires_at: 'expires_at',
token_type: 'token_type',
scope: 'scope',
id_token: 'id_token',
session_state: 'session_state',
createdAt: 'createdAt',
updatedAt: 'updatedAt'
};
exports.Prisma.SessionScalarFieldEnum = {
sessionToken: 'sessionToken',
userId: 'userId',
expires: 'expires',
createdAt: 'createdAt',
updatedAt: 'updatedAt'
};
exports.Prisma.VerificationTokenScalarFieldEnum = {
identifier: 'identifier',
token: 'token',
expires: 'expires'
};
exports.Prisma.NoteShareScalarFieldEnum = {
id: 'id',
noteId: 'noteId',
userId: 'userId',
sharedBy: 'sharedBy',
status: 'status',
permission: 'permission',
notifiedAt: 'notifiedAt',
respondedAt: 'respondedAt',
createdAt: 'createdAt',
updatedAt: 'updatedAt'
};
exports.Prisma.SystemConfigScalarFieldEnum = {
key: 'key',
value: 'value'
};
exports.Prisma.AiFeedbackScalarFieldEnum = {
id: 'id',
noteId: 'noteId',
userId: 'userId',
feedbackType: 'feedbackType',
feature: 'feature',
originalContent: 'originalContent',
correctedContent: 'correctedContent',
metadata: 'metadata',
createdAt: 'createdAt'
};
exports.Prisma.MemoryEchoInsightScalarFieldEnum = {
id: 'id',
userId: 'userId',
note1Id: 'note1Id',
note2Id: 'note2Id',
similarityScore: 'similarityScore',
insight: 'insight',
insightDate: 'insightDate',
viewed: 'viewed',
feedback: 'feedback',
dismissed: 'dismissed'
};
exports.Prisma.UserAISettingsScalarFieldEnum = {
userId: 'userId',
titleSuggestions: 'titleSuggestions',
semanticSearch: 'semanticSearch',
paragraphRefactor: 'paragraphRefactor',
memoryEcho: 'memoryEcho',
memoryEchoFrequency: 'memoryEchoFrequency',
aiProvider: 'aiProvider',
preferredLanguage: 'preferredLanguage',
fontSize: 'fontSize',
demoMode: 'demoMode',
showRecentNotes: 'showRecentNotes',
emailNotifications: 'emailNotifications',
desktopNotifications: 'desktopNotifications',
anonymousAnalytics: 'anonymousAnalytics'
};
exports.Prisma.SortOrder = {
asc: 'asc',
desc: 'desc'
@@ -147,7 +290,18 @@ exports.Prisma.NullsOrder = {
exports.Prisma.ModelName = {
Note: 'Note'
Note: 'Note',
Notebook: 'Notebook',
Label: 'Label',
User: 'User',
Account: 'Account',
Session: 'Session',
VerificationToken: 'VerificationToken',
NoteShare: 'NoteShare',
SystemConfig: 'SystemConfig',
AiFeedback: 'AiFeedback',
MemoryEchoInsight: 'MemoryEchoInsight',
UserAISettings: 'UserAISettings'
};
/**