Add tenant branding & theming system with admin UI
Tenant admins can now customize their workspace appearance: page/nav backgrounds (solid, gradient, or image), column/card colors, borders, text, opacity with glass blur, card corner radius, and accent colors. Light and dark mode are configured separately. Theme CSS is injected server-side via transformPageChunk to prevent FOUC. Includes avatar components, account page updates, and pre-existing type error fixes (Buffer, async onMount, InputJsonValue). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -22,6 +22,7 @@ model Tenant {
|
||||
tags Tag[]
|
||||
categories Category[]
|
||||
boardTemplates BoardTemplate[]
|
||||
theme TenantTheme?
|
||||
|
||||
@@map("tenants")
|
||||
}
|
||||
@@ -329,3 +330,59 @@ model BoardTemplate {
|
||||
|
||||
@@map("board_templates")
|
||||
}
|
||||
|
||||
// ─── Tenant Branding & Theming ───────────────────────────────
|
||||
|
||||
model TenantTheme {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
tenantId String @unique @map("tenant_id") @db.Uuid
|
||||
|
||||
// Light mode
|
||||
lightPageBg String? @map("light_page_bg")
|
||||
lightPageBgImage String? @map("light_page_bg_image")
|
||||
lightNavBg String? @map("light_nav_bg")
|
||||
lightNavBgImage String? @map("light_nav_bg_image")
|
||||
lightColumnBg String? @map("light_column_bg")
|
||||
lightColumnBorder String? @map("light_column_border")
|
||||
lightColumnText String? @map("light_column_text")
|
||||
lightColumnOpacity Float? @map("light_column_opacity")
|
||||
lightCardBg String? @map("light_card_bg")
|
||||
lightCardBorder String? @map("light_card_border")
|
||||
lightCardText String? @map("light_card_text")
|
||||
lightCardOpacity Float? @map("light_card_opacity")
|
||||
lightCardRadius String? @map("light_card_radius")
|
||||
lightPrimary String? @map("light_primary")
|
||||
lightPrimaryHover String? @map("light_primary_hover")
|
||||
lightDanger String? @map("light_danger")
|
||||
lightDangerHover String? @map("light_danger_hover")
|
||||
lightSuccess String? @map("light_success")
|
||||
lightWarning String? @map("light_warning")
|
||||
|
||||
// Dark mode
|
||||
darkPageBg String? @map("dark_page_bg")
|
||||
darkPageBgImage String? @map("dark_page_bg_image")
|
||||
darkNavBg String? @map("dark_nav_bg")
|
||||
darkNavBgImage String? @map("dark_nav_bg_image")
|
||||
darkColumnBg String? @map("dark_column_bg")
|
||||
darkColumnBorder String? @map("dark_column_border")
|
||||
darkColumnText String? @map("dark_column_text")
|
||||
darkColumnOpacity Float? @map("dark_column_opacity")
|
||||
darkCardBg String? @map("dark_card_bg")
|
||||
darkCardBorder String? @map("dark_card_border")
|
||||
darkCardText String? @map("dark_card_text")
|
||||
darkCardOpacity Float? @map("dark_card_opacity")
|
||||
darkCardRadius String? @map("dark_card_radius")
|
||||
darkPrimary String? @map("dark_primary")
|
||||
darkPrimaryHover String? @map("dark_primary_hover")
|
||||
darkDanger String? @map("dark_danger")
|
||||
darkDangerHover String? @map("dark_danger_hover")
|
||||
darkSuccess String? @map("dark_success")
|
||||
darkWarning String? @map("dark_warning")
|
||||
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@map("tenant_themes")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user