This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,119 @@
|
|||||||
|
{
|
||||||
|
"theme": {
|
||||||
|
"id": "luminous",
|
||||||
|
"name": "Luminous",
|
||||||
|
"description": "Deep Glass / Glassmorphism 2.0 — blue-teal-amber palette with specular highlights, 3D bevel/emboss borders, refraction effects, and ultra-frosted translucent surfaces inspired by iOS & HarmonyOS",
|
||||||
|
"type": "dual",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"modes": {
|
||||||
|
"dark": {
|
||||||
|
"colors": {
|
||||||
|
"background": "hsl(215, 30%, 6%)",
|
||||||
|
"foreground": "hsl(210, 30%, 96%)",
|
||||||
|
"card": "hsl(215, 25%, 10%)",
|
||||||
|
"cardForeground": "hsl(210, 30%, 96%)",
|
||||||
|
"popover": "hsl(215, 25%, 10%)",
|
||||||
|
"popoverForeground": "hsl(210, 30%, 96%)",
|
||||||
|
"primary": "hsl(210, 75%, 55%)",
|
||||||
|
"primaryForeground": "hsl(0, 0%, 100%)",
|
||||||
|
"secondary": "hsl(185, 70%, 45%)",
|
||||||
|
"secondaryForeground": "hsl(0, 0%, 100%)",
|
||||||
|
"muted": "hsl(215, 15%, 14%)",
|
||||||
|
"mutedForeground": "hsl(215, 12%, 55%)",
|
||||||
|
"accent": "hsl(35, 80%, 55%)",
|
||||||
|
"accentForeground": "hsl(0, 0%, 0%)",
|
||||||
|
"destructive": "hsl(0, 75%, 50%)",
|
||||||
|
"destructiveForeground": "hsl(0, 0%, 100%)",
|
||||||
|
"border": "hsl(215, 18%, 20%)",
|
||||||
|
"input": "hsl(215, 15%, 16%)",
|
||||||
|
"ring": "hsl(210, 75%, 55%)",
|
||||||
|
"sidebar": "hsl(215, 30%, 6%)",
|
||||||
|
"sidebarForeground": "hsl(210, 30%, 96%)",
|
||||||
|
"sidebarPrimary": "hsl(210, 75%, 55%)",
|
||||||
|
"sidebarPrimaryForeground": "hsl(0, 0%, 100%)",
|
||||||
|
"sidebarAccent": "hsl(210, 35%, 16%)",
|
||||||
|
"sidebarAccentForeground": "hsl(210, 30%, 96%)",
|
||||||
|
"sidebarBorder": "hsl(215, 18%, 16%)",
|
||||||
|
"sidebarRing": "hsl(210, 75%, 55%)"
|
||||||
|
},
|
||||||
|
"textColors": {
|
||||||
|
"heading": "linear-gradient(135deg, #60a5fa, #2dd4bf)",
|
||||||
|
"body": "#e2e8f0",
|
||||||
|
"muted": "#7a8a9a",
|
||||||
|
"link": "#60a5fa",
|
||||||
|
"linkHover": "#f59e0b",
|
||||||
|
"code": "#2dd4bf",
|
||||||
|
"placeholder": "#5a6a7a"
|
||||||
|
},
|
||||||
|
"backgroundImage": null,
|
||||||
|
"backgroundGradients": [
|
||||||
|
"rgba(50, 140, 240, 0.18) at 10% 20%",
|
||||||
|
"rgba(0, 200, 210, 0.10) at 85% 75%",
|
||||||
|
"rgba(200, 160, 40, 0.06) at 50% 15%",
|
||||||
|
"rgba(50, 140, 240, 0.07) at 35% 85%"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"light": {
|
||||||
|
"colors": {
|
||||||
|
"background": "hsl(205, 38%, 86%)",
|
||||||
|
"foreground": "hsl(210, 30%, 15%)",
|
||||||
|
"card": "hsl(0, 0%, 100%)",
|
||||||
|
"cardForeground": "hsl(210, 30%, 15%)",
|
||||||
|
"popover": "hsl(0, 0%, 100%)",
|
||||||
|
"popoverForeground": "hsl(210, 30%, 15%)",
|
||||||
|
"primary": "hsl(210, 65%, 48%)",
|
||||||
|
"primaryForeground": "hsl(0, 0%, 100%)",
|
||||||
|
"secondary": "hsl(185, 65%, 38%)",
|
||||||
|
"secondaryForeground": "hsl(0, 0%, 100%)",
|
||||||
|
"muted": "hsl(205, 20%, 90%)",
|
||||||
|
"mutedForeground": "hsl(210, 12%, 48%)",
|
||||||
|
"accent": "hsl(35, 75%, 50%)",
|
||||||
|
"accentForeground": "hsl(0, 0%, 0%)",
|
||||||
|
"destructive": "hsl(0, 75%, 45%)",
|
||||||
|
"destructiveForeground": "hsl(0, 0%, 100%)",
|
||||||
|
"border": "hsl(210, 18%, 78%)",
|
||||||
|
"input": "hsl(210, 15%, 84%)",
|
||||||
|
"ring": "hsl(210, 65%, 48%)",
|
||||||
|
"sidebar": "hsl(0, 0%, 100%)",
|
||||||
|
"sidebarForeground": "hsl(210, 30%, 15%)",
|
||||||
|
"sidebarPrimary": "hsl(210, 65%, 48%)",
|
||||||
|
"sidebarPrimaryForeground": "hsl(0, 0%, 100%)",
|
||||||
|
"sidebarAccent": "hsl(205, 18%, 90%)",
|
||||||
|
"sidebarAccentForeground": "hsl(210, 30%, 15%)",
|
||||||
|
"sidebarBorder": "hsl(210, 18%, 78%)",
|
||||||
|
"sidebarRing": "hsl(210, 65%, 48%)"
|
||||||
|
},
|
||||||
|
"textColors": {
|
||||||
|
"heading": "linear-gradient(135deg, #3b82f6, #0d9488)",
|
||||||
|
"body": "#1e293b",
|
||||||
|
"muted": "#6b7280",
|
||||||
|
"link": "#3b82f6",
|
||||||
|
"linkHover": "#d97706",
|
||||||
|
"code": "#3b82f6",
|
||||||
|
"placeholder": "#9ca3af"
|
||||||
|
},
|
||||||
|
"backgroundImage": null,
|
||||||
|
"backgroundGradients": [
|
||||||
|
"rgba(50, 140, 240, 0.06) at 15% 20%",
|
||||||
|
"rgba(0, 200, 210, 0.04) at 85% 75%",
|
||||||
|
"rgba(200, 160, 40, 0.02) at 50% 50%"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"borderRadius": "0.75rem",
|
||||||
|
"typography": {
|
||||||
|
"fontFamily": "Inter, sans-serif",
|
||||||
|
"headingFont": "Inter, sans-serif"
|
||||||
|
},
|
||||||
|
"keyColors": {
|
||||||
|
"primary": "#60a5fa (dark) / #3b82f6 (light)",
|
||||||
|
"background": "#0b111e (dark) / #d2e2f2 (light)",
|
||||||
|
"card": "#121a28 (dark) / #ffffff (light)",
|
||||||
|
"sidebar": "#0b111e (dark) / #ffffff (light)",
|
||||||
|
"border": "#283040 (dark) / #d4d4dc (light)",
|
||||||
|
"text": "#e2e8f0 (dark) / #1e293b (light)",
|
||||||
|
"mutedText": "#7a8a9a (dark) / #6b7280 (light)",
|
||||||
|
"headingGradient": "#60a5fa → #2dd4bf (dark) / #3b82f6 → #0d9488 (light)"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -55,7 +55,8 @@ CREATE TABLE IF NOT EXISTS email_campaign_logs (
|
|||||||
error_message TEXT
|
error_message TEXT
|
||||||
);
|
);
|
||||||
|
|
||||||
ALTER TABLE email_campaign_subscribers ADD CONSTRAINT IF NOT EXISTS uq_campaign_lead UNIQUE (campaign_id, lead_id);
|
-- Already defined inline in CREATE TABLE; IF NOT EXISTS not supported on this PostgreSQL version
|
||||||
|
-- ALTER TABLE email_campaign_subscribers ADD CONSTRAINT IF NOT EXISTS uq_campaign_lead UNIQUE (campaign_id, lead_id);
|
||||||
|
|
||||||
CREATE INDEX idx_campaign_steps_order ON email_campaign_steps(campaign_id, step_order);
|
CREATE INDEX idx_campaign_steps_order ON email_campaign_steps(campaign_id, step_order);
|
||||||
CREATE INDEX idx_campaign_subscribers ON email_campaign_subscribers(campaign_id, status);
|
CREATE INDEX idx_campaign_subscribers ON email_campaign_subscribers(campaign_id, status);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import "../../Web_Backgrounds/cyberpunk-theme.css"
|
|||||||
import "../../Web_Backgrounds/cyber2-theme.css"
|
import "../../Web_Backgrounds/cyber2-theme.css"
|
||||||
import "../../Web_Backgrounds/pumpkin-theme.css"
|
import "../../Web_Backgrounds/pumpkin-theme.css"
|
||||||
import "../../Web_Backgrounds/bw-theme.css"
|
import "../../Web_Backgrounds/bw-theme.css"
|
||||||
|
import "../../Web_Backgrounds/luminous-theme.css"
|
||||||
|
|
||||||
const inter = Inter({
|
const inter = Inter({
|
||||||
variable: "--font-inter",
|
variable: "--font-inter",
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ const backgroundOptions = [
|
|||||||
{ value: "cyber2", label: "Cyber2.0", icon: Shield, color: "bg-gradient-to-r from-cyan-400 to-fuchsia-500", ring: "ring-cyan-400", desc: "Neon grid with magenta and cyan glow" },
|
{ value: "cyber2", label: "Cyber2.0", icon: Shield, color: "bg-gradient-to-r from-cyan-400 to-fuchsia-500", ring: "ring-cyan-400", desc: "Neon grid with magenta and cyan glow" },
|
||||||
{ value: "pumpkin", label: "Pumpkin Spice", icon: Shield, color: "bg-gradient-to-r from-orange-600 to-amber-500", ring: "ring-orange-600", desc: "Warm autumn orange with spicy accents" },
|
{ value: "pumpkin", label: "Pumpkin Spice", icon: Shield, color: "bg-gradient-to-r from-orange-600 to-amber-500", ring: "ring-orange-600", desc: "Warm autumn orange with spicy accents" },
|
||||||
{ value: "bw", label: "Black & White", icon: Shield, color: "bg-gradient-to-r from-gray-900 to-gray-400", ring: "ring-gray-500", desc: "Clean monochrome with subtle texture" },
|
{ value: "bw", label: "Black & White", icon: Shield, color: "bg-gradient-to-r from-gray-900 to-gray-400", ring: "ring-gray-500", desc: "Clean monochrome with subtle texture" },
|
||||||
|
{ value: "luminous", label: "Luminous", icon: Shield, color: "bg-gradient-to-r from-blue-500 to-teal-400", ring: "ring-blue-500", desc: "Deep Glass 2.0 — blue-teal-amber with specular highlights and 3D bevel borders" },
|
||||||
]
|
]
|
||||||
|
|
||||||
function getStoredColorTheme(): string {
|
function getStoredColorTheme(): string {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ const themeClasses: Record<string, string> = {
|
|||||||
cyber2: "theme-cyber2",
|
cyber2: "theme-cyber2",
|
||||||
pumpkin: "theme-pumpkin",
|
pumpkin: "theme-pumpkin",
|
||||||
bw: "theme-bw",
|
bw: "theme-bw",
|
||||||
|
luminous: "theme-luminous",
|
||||||
}
|
}
|
||||||
|
|
||||||
interface WebsiteThemeContextValue {
|
interface WebsiteThemeContextValue {
|
||||||
|
|||||||
Reference in New Issue
Block a user