diff --git a/Web_Backgrounds/bw-theme.css b/Web_Backgrounds/bw-theme.css new file mode 100644 index 0000000..c4e3155 --- /dev/null +++ b/Web_Backgrounds/bw-theme.css @@ -0,0 +1,320 @@ +.dark.theme-bw { + --background: 0 0% 4%; + --foreground: 0 0% 95%; + --card: 0 0% 8%; + --card-foreground: 0 0% 95%; + --popover: 0 0% 8%; + --popover-foreground: 0 0% 95%; + --primary: 0 0% 95%; + --primary-foreground: 0 0% 0%; + --secondary: 0 0% 50%; + --secondary-foreground: 0 0% 100%; + --muted: 0 0% 12%; + --muted-foreground: 0 0% 55%; + --accent: 0 0% 95%; + --accent-foreground: 0 0% 0%; + --destructive: 0 70% 50%; + --destructive-foreground: 210 40% 98%; + --border: 0 0% 20%; + --input: 0 0% 20%; + --ring: 0 0% 70%; + --radius: 0.5rem; + --sidebar: 0 0% 4%; + --sidebar-foreground: 0 0% 95%; + --sidebar-primary: 0 0% 95%; + --sidebar-primary-foreground: 0 0% 0%; + --sidebar-accent: 0 0% 95%; + --sidebar-accent-foreground: 0 0% 0%; + --sidebar-border: 0 0% 15%; + --sidebar-ring: 0 0% 70%; +} + +.light.theme-bw { + --background: 0 0% 97%; + --foreground: 0 0% 10%; + --card: 0 0% 100%; + --card-foreground: 0 0% 10%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 10%; + --primary: 0 0% 10%; + --primary-foreground: 0 0% 100%; + --secondary: 0 0% 40%; + --secondary-foreground: 0 0% 100%; + --muted: 0 0% 90%; + --muted-foreground: 0 0% 45%; + --accent: 0 0% 10%; + --accent-foreground: 0 0% 100%; + --destructive: 0 80% 50%; + --destructive-foreground: 0 0% 100%; + --border: 0 0% 82%; + --input: 0 0% 82%; + --ring: 0 0% 50%; + --radius: 0.5rem; + --sidebar: 0 0% 100%; + --sidebar-foreground: 0 0% 10%; + --sidebar-primary: 0 0% 10%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 0 0% 10%; + --sidebar-accent-foreground: 0 0% 100%; + --sidebar-border: 0 0% 82%; + --sidebar-ring: 0 0% 50%; +} + +.dark.theme-bw body { + background: transparent + radial-gradient(ellipse 100% 60% at 30% 20%, hsla(0,0%,100%,0.03) 0%, transparent 60%), + radial-gradient(ellipse 60% 50% at 70% 80%, hsla(0,0%,50%,0.02) 0%, transparent 50%); + position: relative; +} + +.dark.theme-bw body > div { + background: transparent !important; +} + +.dark.theme-bw body::before { + content: ""; + position: fixed; + inset: 0; + z-index: -2; + pointer-events: none; + background-image: + radial-gradient(1px 1px at 10% 20%, hsla(0,0%,100%,0.12) 0%, transparent 100%), + radial-gradient(1px 1px at 30% 70%, hsla(0,0%,100%,0.08) 0%, transparent 100%), + radial-gradient(1px 1px at 50% 10%, hsla(0,0%,100%,0.1) 0%, transparent 100%), + radial-gradient(1px 1px at 70% 50%, hsla(0,0%,100%,0.06) 0%, transparent 100%), + radial-gradient(1px 1px at 90% 30%, hsla(0,0%,100%,0.1) 0%, transparent 100%), + radial-gradient(1px 1px at 15% 85%, hsla(0,0%,100%,0.08) 0%, transparent 100%), + radial-gradient(1px 1px at 65% 90%, hsla(0,0%,100%,0.06) 0%, transparent 100%), + radial-gradient(1px 1px at 85% 15%, hsla(0,0%,100%,0.1) 0%, transparent 100%), + radial-gradient(1px 1px at 40% 40%, hsla(0,0%,100%,0.07) 0%, transparent 100%), + radial-gradient(1px 1px at 55% 60%, hsla(0,0%,100%,0.05) 0%, transparent 100%); + background-size: 200% 200%; + animation: bw-drift 40s ease-in-out infinite alternate; +} + +.dark.theme-bw body::after { + content: ""; + position: fixed; + inset: 0; + z-index: -1; + pointer-events: none; + background: + radial-gradient(ellipse 80% 40% at 20% 30%, hsla(0,0%,100%,0.04) 0%, transparent 60%), + radial-gradient(ellipse 60% 40% at 80% 70%, hsla(0,0%,50%,0.02) 0%, transparent 50%), + radial-gradient(ellipse 50% 30% at 50% 50%, hsla(0,0%,100%,0.02) 0%, transparent 50%); +} + +.light.theme-bw body::before { + content: ""; + position: fixed; + inset: 0; + z-index: -1; + pointer-events: none; + background: + radial-gradient(ellipse 80% 50% at 20% 30%, hsla(0,0%,0%,0.02) 0%, transparent 60%), + radial-gradient(ellipse 60% 40% at 80% 70%, hsla(0,0%,0%,0.01) 0%, transparent 50%), + repeating-linear-gradient(0deg, transparent, transparent 60px, hsla(0,0%,0%,0.015) 60px, hsla(0,0%,0%,0.015) 61px), + repeating-linear-gradient(90deg, transparent, transparent 60px, hsla(0,0%,0%,0.015) 60px, hsla(0,0%,0%,0.015) 61px); +} + +@keyframes bw-drift { + 0% { background-position: 0% 0%; opacity: 0.5; } + 50% { background-position: 100% 100%; opacity: 1; } + 100% { background-position: 0% 100%; opacity: 0.5; } +} + +.dark.theme-bw .text-glow { + text-shadow: 0 0 10px hsla(0,0%,100%,0.15), 0 0 30px hsla(0,0%,100%,0.05); +} + +.light.theme-bw .text-glow { + text-shadow: 0 0 8px hsla(0,0%,0%,0.08), 0 0 20px hsla(0,0%,0%,0.04); +} + +.dark.theme-bw h1, .dark.theme-bw h2, .dark.theme-bw h3 { + background: linear-gradient(135deg, hsl(0, 0%, 90%), hsl(0, 0%, 60%)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.light.theme-bw h1, .light.theme-bw h2, .light.theme-bw h3 { + background: linear-gradient(135deg, hsl(0, 0%, 20%), hsl(0, 0%, 50%)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.dark.theme-bw a { + color: hsl(0, 0%, 80%); + text-decoration: none; + transition: color 0.2s; +} + +.light.theme-bw a { + color: hsl(0, 0%, 30%); + text-decoration: none; + transition: color 0.2s; +} + +.dark.theme-bw a:hover { + color: hsl(0, 0%, 100%); + text-shadow: 0 0 8px hsla(0,0%,100%,0.3); +} + +.light.theme-bw a:hover { + color: hsl(0, 0%, 0%); +} + +.dark.theme-bw blockquote { + border-left: 3px solid hsl(0, 0%, 50%); + color: hsl(0, 0%, 60%); + font-style: italic; +} + +.light.theme-bw blockquote { + border-left: 3px solid hsl(0, 0%, 60%); + color: hsl(0, 0%, 50%); + font-style: italic; +} + +.dark.theme-bw code { + color: hsl(0, 0%, 80%); + background: hsla(0, 0%, 100%, 0.08); + border: 1px solid hsla(0, 0%, 100%, 0.12); +} + +.light.theme-bw code { + color: hsl(0, 0%, 30%); + background: hsla(0, 0%, 0%, 0.04); + border: 1px solid hsla(0, 0%, 0%, 0.1); +} + +.dark.theme-bw pre { + background: rgba(0, 0, 0, 0.9); + border: 1px solid hsla(0, 0%, 100%, 0.1); +} + +.light.theme-bw pre { + background: hsla(0, 0%, 0%, 0.02); + border: 1px solid hsla(0, 0%, 0%, 0.08); +} + +.dark.theme-bw hr { + border-color: hsla(0, 0%, 100%, 0.12); +} + +.light.theme-bw hr { + border-color: hsla(0, 0%, 0%, 0.08); +} + +.dark.theme-bw table th { + color: hsl(0, 0%, 80%); +} + +.light.theme-bw table th { + color: hsl(0, 0%, 30%); +} + +.dark.theme-bw table td { + border-color: hsla(0, 0%, 100%, 0.1); +} + +.light.theme-bw table td { + border-color: hsla(0, 0%, 0%, 0.08); +} + +.dark.theme-bw ::selection { + background: hsla(0, 0%, 100%, 0.15); + color: hsl(0, 0%, 100%); +} + +.light.theme-bw ::selection { + background: hsla(0, 0%, 0%, 0.1); + color: hsl(0, 0%, 0%); +} + +.dark.theme-bw input::placeholder, +.dark.theme-bw textarea::placeholder { + color: hsl(0, 0%, 40%); +} + +.light.theme-bw input::placeholder, +.light.theme-bw textarea::placeholder { + color: hsl(0, 0%, 65%); +} + +.dark.theme-bw .page-header-title { + color: hsl(0, 0%, 95%); +} + +.light.theme-bw .page-header-title { + color: hsl(0, 0%, 10%); +} + +.dark.theme-bw .stat-card-value { + color: hsl(0, 0%, 95%); +} + +.light.theme-bw .stat-card-value { + color: hsl(0, 0%, 10%); +} + +.dark.theme-bw .badge { + color: hsl(0, 0%, 80%); +} + +.light.theme-bw .badge { + color: hsl(0, 0%, 30%); +} + +.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .h-1.w-full { + background: linear-gradient(to right, hsl(0, 0%, 80%), hsl(0, 0%, 95%), hsl(0, 0%, 80%)) !important; +} + +.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .h-1.w-full { + background: linear-gradient(to right, hsl(0, 0%, 50%), hsl(0, 0%, 70%), hsl(0, 0%, 50%)) !important; +} + +.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .rounded-xl.shrink-0 { + background: hsla(0, 0%, 100%, 0.08) !important; +} + +.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .rounded-xl.shrink-0 { + background: hsla(0, 0%, 50%, 0.08) !important; +} + +.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .rounded-xl.shrink-0 svg { + color: hsl(0, 0%, 95%) !important; +} + +.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .rounded-xl.shrink-0 svg { + color: hsl(0, 0%, 70%) !important; +} + +.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .absolute.bottom-0.h-1 { + background: linear-gradient(to right, transparent, hsla(0, 0%, 100%, 0.2), transparent) !important; +} + +.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .absolute.bottom-0.h-1 { + background: linear-gradient(to right, transparent, hsla(0, 0%, 50%, 0.15), transparent) !important; +} + +.dark.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 .rounded-full.bg-gradient-to-r { + background: linear-gradient(to right, hsl(0, 0%, 80%), hsl(0, 0%, 50%)) !important; +} + +.light.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .h-1.w-full { + background: linear-gradient(to right, hsl(0, 0%, 30%), hsl(0, 0%, 50%), hsl(0, 0%, 30%)) !important; +} + +.light.theme-bw .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .h-1.w-full { + background: linear-gradient(to right, hsl(0, 0%, 50%), hsl(0, 0%, 65%), hsl(0, 0%, 50%)) !important; +} + +.dark.theme-bw .growth-word, +.light.theme-bw .growth-word { + -webkit-text-fill-color: #1BB0CE !important; + color: #1BB0CE !important; + background: none !important; +} diff --git a/Web_Backgrounds/bw-tokens.json b/Web_Backgrounds/bw-tokens.json new file mode 100644 index 0000000..eac6b1a --- /dev/null +++ b/Web_Backgrounds/bw-tokens.json @@ -0,0 +1,67 @@ +{ + "name": "Black & White", + "description": "Clean monochrome theme with pure grayscale tones and subtle texture", + "dark": { + "colors": { + "background": "0 0% 4%", + "foreground": "0 0% 95%", + "primary": "0 0% 95%", + "secondary": "0 0% 50%", + "accent": "0 0% 95%", + "muted": "0 0% 12%", + "border": "0 0% 20%", + "ring": "0 0% 70%", + "card": "0 0% 8%", + "popover": "0 0% 8%" + }, + "textColors": { + "heading": "linear-gradient(135deg, hsl(0,0%,90%), hsl(0,0%,60%))", + "link": "hsl(0, 0%, 80%)", + "link-hover": "hsl(0, 0%, 100%)", + "code": "hsl(0, 0%, 80%)", + "blockquote": "hsl(0, 0%, 60%)", + "table-header": "hsl(0, 0%, 80%)", + "stat-card-value": "hsl(0, 0%, 95%)", + "badge": "hsl(0, 0%, 80%)", + "page-header-title": "hsl(0, 0%, 95%)", + "text-glow": "0 0 10px hsla(0,0%,100%,0.15), 0 0 30px hsla(0,0%,100%,0.05)" + }, + "backgrounds": { + "body": "Deep black with subtle silver radial gradients and faint dots", + "glow-colors": ["hsla(0,0%,100%,0.04)", "hsla(0,0%,100%,0.02)"] + }, + "effects": { + "body-background-animation": "bw-drift 40s ease-in-out infinite alternate" + } + }, + "light": { + "colors": { + "background": "0 0% 97%", + "foreground": "0 0% 10%", + "primary": "0 0% 10%", + "secondary": "0 0% 40%", + "accent": "0 0% 10%", + "muted": "0 0% 90%", + "border": "0 0% 82%", + "ring": "0 0% 50%", + "card": "0 0% 100%", + "popover": "0 0% 100%" + }, + "textColors": { + "heading": "linear-gradient(135deg, hsl(0,0%,20%), hsl(0,0%,50%))", + "link": "hsl(0, 0%, 30%)", + "link-hover": "hsl(0, 0%, 0%)", + "code": "hsl(0, 0%, 30%)", + "blockquote": "hsl(0, 0%, 50%)", + "table-header": "hsl(0, 0%, 30%)", + "stat-card-value": "hsl(0, 0%, 10%)", + "badge": "hsl(0, 0%, 30%)", + "page-header-title": "hsl(0, 0%, 10%)", + "text-glow": "0 0 8px hsla(0,0%,0%,0.08), 0 0 20px hsla(0,0%,0%,0.04)" + }, + "backgrounds": { + "body": "White with subtle silver-gray radial gradients and faint grid texture", + "glow-colors": ["hsla(0,0%,0%,0.02)", "hsla(0,0%,0%,0.01)"] + } + } +} diff --git a/Web_Backgrounds/cosmic-theme.css b/Web_Backgrounds/cosmic-theme.css index e44ad83..acf723f 100644 --- a/Web_Backgrounds/cosmic-theme.css +++ b/Web_Backgrounds/cosmic-theme.css @@ -280,3 +280,10 @@ .light.theme-cosmic .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .h-1.w-full { background: linear-gradient(to right, hsl(120, 80%, 40%), hsl(120, 80%, 50%), hsl(120, 80%, 40%)) !important; } + +.dark.theme-cosmic .growth-word, +.light.theme-cosmic .growth-word { + -webkit-text-fill-color: #1BB0CE !important; + color: #1BB0CE !important; + background: none !important; +} diff --git a/Web_Backgrounds/cyber2-theme.css b/Web_Backgrounds/cyber2-theme.css index 254998d..a0f06bc 100644 --- a/Web_Backgrounds/cyber2-theme.css +++ b/Web_Backgrounds/cyber2-theme.css @@ -311,3 +311,10 @@ .light.theme-cyber2 .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .h-1.w-full { background: linear-gradient(to right, hsl(280, 60%, 50%), hsl(280, 60%, 65%), hsl(280, 60%, 50%)) !important; } + +.dark.theme-cyber2 .growth-word, +.light.theme-cyber2 .growth-word { + -webkit-text-fill-color: #1BB0CE !important; + color: #1BB0CE !important; + background: none !important; +} diff --git a/Web_Backgrounds/pumpkin-theme.css b/Web_Backgrounds/pumpkin-theme.css new file mode 100644 index 0000000..6bc2a39 --- /dev/null +++ b/Web_Backgrounds/pumpkin-theme.css @@ -0,0 +1,275 @@ +.dark.theme-pumpkin { + --background: 0 30% 4%; + --foreground: 20 50% 95%; + --card: 0 25% 8%; + --card-foreground: 20 50% 95%; + --popover: 0 25% 8%; + --popover-foreground: 20 50% 95%; + --primary: 10 100% 50%; + --primary-foreground: 0 0% 100%; + --secondary: 30 100% 50%; + --secondary-foreground: 0 0% 0%; + --muted: 0 12% 15%; + --muted-foreground: 20 10% 55%; + --accent: 10 100% 50%; + --accent-foreground: 0 0% 100%; + --destructive: 0 70% 50%; + --destructive-foreground: 210 40% 98%; + --border: 10 30% 18%; + --input: 10 30% 18%; + --ring: 10 100% 50%; + --radius: 0.5rem; + --sidebar: 0 30% 4%; + --sidebar-foreground: 20 50% 95%; + --sidebar-primary: 10 100% 50%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 10 100% 50%; + --sidebar-accent-foreground: 0 0% 100%; + --sidebar-border: 10 30% 15%; + --sidebar-ring: 10 100% 50%; +} + +.light.theme-pumpkin { + --background: 20 30% 96%; + --foreground: 10 50% 10%; + --card: 0 0% 100%; + --card-foreground: 10 50% 10%; + --popover: 0 0% 100%; + --popover-foreground: 10 50% 10%; + --primary: 10 90% 45%; + --primary-foreground: 0 0% 100%; + --secondary: 30 90% 45%; + --secondary-foreground: 0 0% 100%; + --muted: 20 15% 88%; + --muted-foreground: 10 10% 45%; + --accent: 10 90% 45%; + --accent-foreground: 0 0% 100%; + --destructive: 0 80% 50%; + --destructive-foreground: 0 0% 100%; + --border: 20 15% 82%; + --input: 20 15% 82%; + --ring: 10 90% 45%; + --radius: 0.5rem; + --sidebar: 0 0% 100%; + --sidebar-foreground: 10 50% 10%; + --sidebar-primary: 10 90% 45%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 10 90% 45%; + --sidebar-accent-foreground: 0 0% 100%; + --sidebar-border: 20 15% 82%; + --sidebar-ring: 10 90% 45%; +} + +.dark.theme-pumpkin body { + background: transparent + radial-gradient(ellipse 120% 60% at 20% 30%, rgba(200, 0, 0, 0.2) 0%, transparent 60%), + radial-gradient(ellipse 80% 50% at 80% 70%, rgba(255, 100, 0, 0.15) 0%, transparent 50%), + radial-gradient(ellipse 60% 40% at 50% 50%, rgba(150, 0, 0, 0.1) 0%, transparent 50%); +} + +.dark.theme-pumpkin body > div { + background: transparent !important; +} + +.light.theme-pumpkin body::before { + content: ""; + position: fixed; + inset: 0; + z-index: -1; + pointer-events: none; + background: + radial-gradient(ellipse 80% 50% at 15% 20%, rgba(200, 50, 0, 0.04) 0%, transparent 60%), + radial-gradient(ellipse 80% 50% at 85% 80%, rgba(255, 100, 0, 0.03) 0%, transparent 60%); +} + +.dark.theme-pumpkin .text-glow { + text-shadow: 0 0 10px hsl(10, 100%, 50%), 0 0 30px hsl(10, 100%, 50%), 0 0 60px rgba(255, 0, 0, 0.5); +} + +.light.theme-pumpkin .text-glow { + text-shadow: 0 0 8px hsl(10, 90%, 45%), 0 0 20px hsl(10, 90%, 45%), 0 0 40px rgba(200, 50, 0, 0.3); +} + +.dark.theme-pumpkin h1, .dark.theme-pumpkin h2, .dark.theme-pumpkin h3 { + background: linear-gradient(135deg, hsl(10, 100%, 50%), hsl(30, 100%, 50%)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.light.theme-pumpkin h1, .light.theme-pumpkin h2, .light.theme-pumpkin h3 { + background: linear-gradient(135deg, hsl(10, 90%, 40%), hsl(30, 90%, 40%)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.dark.theme-pumpkin a { + color: hsl(10, 100%, 55%); +} + +.light.theme-pumpkin a { + color: hsl(10, 90%, 40%); +} + +.dark.theme-pumpkin a:hover { + color: hsl(30, 100%, 55%); + text-shadow: 0 0 8px rgba(255, 100, 0, 0.4); +} + +.light.theme-pumpkin a:hover { + color: hsl(30, 90%, 45%); +} + +.dark.theme-pumpkin blockquote { + border-left: 3px solid hsl(10, 100%, 50%); + color: hsl(20, 15%, 70%); + font-style: italic; +} + +.light.theme-pumpkin blockquote { + border-left: 3px solid hsl(10, 90%, 45%); + color: hsl(10, 10%, 45%); + font-style: italic; +} + +.dark.theme-pumpkin code { + color: hsl(10, 100%, 55%); + background: rgba(200, 0, 0, 0.12); + border: 1px solid rgba(200, 0, 0, 0.15); +} + +.light.theme-pumpkin code { + color: hsl(10, 90%, 40%); + background: rgba(200, 50, 0, 0.05); + border: 1px solid rgba(200, 50, 0, 0.1); +} + +.dark.theme-pumpkin pre { + background: rgba(20, 0, 0, 0.9); + border: 1px solid rgba(200, 0, 0, 0.1); +} + +.light.theme-pumpkin pre { + background: rgba(200, 50, 0, 0.03); + border: 1px solid rgba(200, 50, 0, 0.08); +} + +.dark.theme-pumpkin hr { + border-color: rgba(200, 0, 0, 0.15); +} + +.light.theme-pumpkin hr { + border-color: rgba(200, 50, 0, 0.1); +} + +.dark.theme-pumpkin table th { + color: hsl(10, 100%, 55%); +} + +.light.theme-pumpkin table th { + color: hsl(10, 90%, 40%); +} + +.dark.theme-pumpkin table td { + border-color: rgba(200, 0, 0, 0.12); +} + +.light.theme-pumpkin table td { + border-color: rgba(200, 50, 0, 0.1); +} + +.dark.theme-pumpkin ::selection { + background: rgba(200, 0, 0, 0.2); + color: hsl(0, 0%, 100%); +} + +.light.theme-pumpkin ::selection { + background: rgba(200, 50, 0, 0.12); + color: hsl(0, 0%, 0%); +} + +.dark.theme-pumpkin input::placeholder, +.dark.theme-pumpkin textarea::placeholder { + color: hsl(20, 10%, 40%); +} + +.light.theme-pumpkin input::placeholder, +.light.theme-pumpkin textarea::placeholder { + color: hsl(10, 10%, 65%); +} + +.dark.theme-pumpkin .page-header-title { + color: hsl(10, 100%, 55%); +} + +.light.theme-pumpkin .page-header-title { + color: hsl(10, 90%, 40%); +} + +.dark.theme-pumpkin .stat-card-value { + color: hsl(10, 100%, 55%); +} + +.light.theme-pumpkin .stat-card-value { + color: hsl(10, 90%, 40%); +} + +.dark.theme-pumpkin .badge { + color: hsl(10, 100%, 55%); +} + +.light.theme-pumpkin .badge { + color: hsl(10, 90%, 40%); +} + +.dark.theme-pumpkin .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .h-1.w-full { + background: linear-gradient(to right, hsl(10, 100%, 50%), hsl(10, 100%, 65%), hsl(10, 100%, 50%)) !important; +} + +.dark.theme-pumpkin .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .h-1.w-full { + background: linear-gradient(to right, hsl(30, 100%, 50%), hsl(30, 100%, 65%), hsl(30, 100%, 50%)) !important; +} + +.dark.theme-pumpkin .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .rounded-xl.shrink-0 { + background: hsla(10, 100%, 50%, 0.1) !important; +} + +.dark.theme-pumpkin .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .rounded-xl.shrink-0 { + background: hsla(30, 100%, 50%, 0.1) !important; +} + +.dark.theme-pumpkin .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .rounded-xl.shrink-0 svg { + color: hsl(10, 100%, 50%) !important; +} + +.dark.theme-pumpkin .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .rounded-xl.shrink-0 svg { + color: hsl(30, 100%, 50%) !important; +} + +.dark.theme-pumpkin .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .absolute.bottom-0.h-1 { + background: linear-gradient(to right, transparent, hsla(10, 100%, 50%, 0.25), transparent) !important; +} + +.dark.theme-pumpkin .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .absolute.bottom-0.h-1 { + background: linear-gradient(to right, transparent, hsla(30, 100%, 50%, 0.25), transparent) !important; +} + +.dark.theme-pumpkin .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 .rounded-full.bg-gradient-to-r { + background: linear-gradient(to right, hsl(10, 100%, 50%), hsl(30, 100%, 50%)) !important; +} + +.light.theme-pumpkin .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(odd) .group .h-1.w-full { + background: linear-gradient(to right, hsl(10, 90%, 45%), hsl(10, 90%, 55%), hsl(10, 90%, 45%)) !important; +} + +.light.theme-pumpkin .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .h-1.w-full { + background: linear-gradient(to right, hsl(30, 90%, 45%), hsl(30, 90%, 55%), hsl(30, 90%, 45%)) !important; +} + +.dark.theme-pumpkin .growth-word, +.light.theme-pumpkin .growth-word { + -webkit-text-fill-color: #1BB0CE !important; + color: #1BB0CE !important; + background: none !important; +} diff --git a/Web_Backgrounds/pumpkin-tokens.json b/Web_Backgrounds/pumpkin-tokens.json new file mode 100644 index 0000000..49940d7 --- /dev/null +++ b/Web_Backgrounds/pumpkin-tokens.json @@ -0,0 +1,64 @@ +{ + "name": "Rage", + "description": "Fiery red-orange rage theme with intense dark background and burning accents", + "dark": { + "colors": { + "background": "0 30% 4%", + "foreground": "20 50% 95%", + "primary": "10 100% 50%", + "secondary": "30 100% 50%", + "accent": "10 100% 50%", + "muted": "0 12% 15%", + "border": "10 30% 18%", + "ring": "10 100% 50%", + "card": "0 25% 8%", + "popover": "0 25% 8%" + }, + "textColors": { + "heading": "linear-gradient(135deg, hsl(10,100%,50%), hsl(30,100%,50%))", + "link": "hsl(10, 100%, 55%)", + "link-hover": "hsl(30, 100%, 55%)", + "code": "hsl(10, 100%, 55%)", + "blockquote": "hsl(20, 15%, 70%)", + "table-header": "hsl(10, 100%, 55%)", + "stat-card-value": "hsl(10, 100%, 55%)", + "badge": "hsl(10, 100%, 55%)", + "page-header-title": "hsl(10, 100%, 55%)", + "text-glow": "0 0 10px hsl(10,100%,50%), 0 0 30px hsl(10,100%,50%), 0 0 60px rgba(255,0,0,0.5)" + }, + "backgrounds": { + "body": "Deep crimson-black with red and orange radial nebula gradients", + "glow-colors": ["rgba(200, 0, 0, 0.2)", "rgba(255, 100, 0, 0.15)", "rgba(150, 0, 0, 0.1)"] + } + }, + "light": { + "colors": { + "background": "20 30% 96%", + "foreground": "10 50% 10%", + "primary": "10 90% 45%", + "secondary": "30 90% 45%", + "accent": "10 90% 45%", + "muted": "20 15% 88%", + "border": "20 15% 82%", + "ring": "10 90% 45%", + "card": "0 0% 100%", + "popover": "0 0% 100%" + }, + "textColors": { + "heading": "linear-gradient(135deg, hsl(10,90%,40%), hsl(30,90%,40%))", + "link": "hsl(10, 90%, 40%)", + "link-hover": "hsl(30, 90%, 45%)", + "code": "hsl(10, 90%, 40%)", + "blockquote": "hsl(10, 10%, 45%)", + "table-header": "hsl(10, 90%, 40%)", + "stat-card-value": "hsl(10, 90%, 40%)", + "badge": "hsl(10, 90%, 40%)", + "page-header-title": "hsl(10, 90%, 40%)", + "text-glow": "0 0 8px hsl(10,90%,45%), 0 0 20px hsl(10,90%,45%), 0 0 40px rgba(200,50,0,0.3)" + }, + "backgrounds": { + "body": "Warm off-white with subtle red-orange gradient washes", + "glow-colors": ["rgba(200, 50, 0, 0.04)", "rgba(255, 100, 0, 0.03)"] + } + } +} diff --git a/Web_Backgrounds/spidey-theme.css b/Web_Backgrounds/spidey-theme.css index 7e60309..fe07e93 100644 --- a/Web_Backgrounds/spidey-theme.css +++ b/Web_Backgrounds/spidey-theme.css @@ -1,5 +1,7 @@ @import url("./cosmic-theme.css"); @import url("./cyber2-theme.css"); +@import url("./pumpkin-theme.css"); +@import url("./bw-theme.css"); .dark.theme-spidey { --background: 222.2 84% 4.9%; @@ -179,3 +181,10 @@ .light.theme-spidey .sm\:grid-cols-2.lg\:grid-cols-3.gap-4.mt-4 > .relative:nth-child(even) .group .h-1.w-full { background: linear-gradient(to right, hsl(217, 91%, 50%), hsl(217, 91%, 60%), hsl(217, 91%, 50%)) !important; } + +.dark.theme-spidey .growth-word, +.light.theme-spidey .growth-word { + -webkit-text-fill-color: #1BB0CE !important; + color: #1BB0CE !important; + background: none !important; +} diff --git a/package-lock.json b/package-lock.json index cd5ac47..9d5962a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "@tanstack/react-table": "^8.20.6", "autoprefixer": "^10.4.20", "bcryptjs": "^3.0.3", + "build": "^0.1.4", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "devenv": "^1.0.1", @@ -100,6 +101,14 @@ "node": ">=6.9.0" } }, + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@csstools/color-helpers": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", @@ -210,6 +219,16 @@ "node": ">=18" } }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", + "integrity": "sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==", + "dependencies": { + "@so-ric/colorspace": "^1.1.6", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, "node_modules/@emnapi/core": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", @@ -1992,6 +2011,57 @@ "integrity": "sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==", "dev": true }, + "node_modules/@so-ric/colorspace": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@so-ric/colorspace/-/colorspace-1.1.6.tgz", + "integrity": "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==", + "dependencies": { + "color": "^5.0.2", + "text-hex": "1.0.x" + } + }, + "node_modules/@so-ric/colorspace/node_modules/color": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", + "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", + "dependencies": { + "color-convert": "^3.1.3", + "color-string": "^2.1.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@so-ric/colorspace/node_modules/color-convert": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", + "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=14.6" + } + }, + "node_modules/@so-ric/colorspace/node_modules/color-name": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz", + "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/@so-ric/colorspace/node_modules/color-string": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", + "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", @@ -2284,6 +2354,11 @@ "@types/react": "^18.0.0" } }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" + }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -3175,8 +3250,7 @@ "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" }, "node_modules/async-function": { "version": "1.0.0", @@ -3411,6 +3485,26 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/build": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/build/-/build-0.1.4.tgz", + "integrity": "sha512-KwbDJ/zrsU8KZRRMfoURG14cKIAStUlS8D5jBDvtrZbwO5FEkYqc3oB8HIhRiyD64A48w1lc+sOmQ+mmBw5U/Q==", + "dependencies": { + "cssmin": "0.3.x", + "jsmin": "1.x", + "jxLoader": "*", + "moo-server": "*", + "promised-io": "*", + "timespan": "2.x", + "uglify-js": "1.x", + "walker": "1.x", + "winston": "*", + "wrench": "1.3.x" + }, + "engines": { + "node": ">v0.4.12" + } + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -3846,6 +3940,14 @@ "node": ">=4" } }, + "node_modules/cssmin": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssmin/-/cssmin-0.3.2.tgz", + "integrity": "sha512-bynxGIAJ8ybrnFobjsQotIjA8HFDDgPwbeUWNXXXfR+B4f9kkxdcUyagJoQCSUOfMV+ZZ6bMn8bvbozlCzUGwQ==", + "bin": { + "cssmin": "bin/cssmin" + } + }, "node_modules/cssstyle": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", @@ -4255,6 +4357,11 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", @@ -5041,6 +5148,11 @@ "reusify": "^1.0.4" } }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -5133,6 +5245,11 @@ "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", @@ -5635,8 +5752,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/internal-slot": { "version": "1.1.0", @@ -5999,6 +6115,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-string": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", @@ -6204,6 +6331,17 @@ } } }, + "node_modules/jsmin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz", + "integrity": "sha512-OPuL5X/bFKgVdMvEIX3hnpx3jbVpFCrEM8pKPXjFkZUqg521r41ijdyTz7vACOhW6o1neVlcLyd+wkbK5fNHRg==", + "bin": { + "jsmin": "bin/jsmin" + }, + "engines": { + "node": ">=0.1.93" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -6249,6 +6387,28 @@ "node": ">=4.0" } }, + "node_modules/jxLoader": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jxLoader/-/jxLoader-0.1.1.tgz", + "integrity": "sha512-ClEvAj3K68y8uKhub3RgTmcRPo5DfIWvtxqrKQdDPyZ1UVHIIKvVvjrAsJFSVL5wjv0rt5iH9SMCZ0XRKNzeUA==", + "dependencies": { + "js-yaml": "0.3.x", + "moo-server": "1.3.x", + "promised-io": "*", + "walker": "1.x" + }, + "engines": { + "node": ">v0.4.10" + } + }, + "node_modules/jxLoader/node_modules/js-yaml": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-0.3.7.tgz", + "integrity": "sha512-/7PsVDNP2tVe2Z1cF9kTEkjamIwz4aooDpRKmN1+g/9eePCgcxsv4QDvEbxO0EH+gdDD7MLyDoR6BASo3hH51g==", + "engines": { + "node": "> 0.4.11" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -6258,6 +6418,11 @@ "json-buffer": "3.0.1" } }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, "node_modules/language-subtag-registry": { "version": "0.3.23", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", @@ -6333,6 +6498,22 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/logform": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", + "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -6405,6 +6586,14 @@ "node": ">=6.0.0" } }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dependencies": { + "tmpl": "1.0.5" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -6524,6 +6713,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/moo-server": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/moo-server/-/moo-server-1.3.0.tgz", + "integrity": "sha512-9A8/eor2DXwpv1+a4pZAAydqLFVrWoKoO1fzdzqLUhYVXAO1Kgd1FR2gFZi7YdHzF0s4W8cDNwCfKJQrvLqxDw==", + "engines": { + "node": ">v0.4.10" + } + }, "node_modules/motion-dom": { "version": "11.18.1", "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.18.1.tgz", @@ -6892,6 +7089,14 @@ "node": ">= 0.8" } }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "1.x.x" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -7363,6 +7568,11 @@ "node": ">= 0.8.0" } }, + "node_modules/promised-io": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.6.tgz", + "integrity": "sha512-bNwZusuNIW4m0SPR8jooSyndD35ggirHlxVl/UhIaZD/F0OBv9ebfc6tNmbpZts3QXHggkjIBH8lvtnzhtcz0A==" + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -7641,6 +7851,19 @@ "pify": "^2.3.0" } }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -7850,7 +8073,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -7899,6 +8121,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -8306,6 +8536,14 @@ "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", "dev": true }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -8336,6 +8574,14 @@ "node": ">=10.0.0" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -8675,6 +8921,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -8696,6 +8947,14 @@ "node": ">=0.8" } }, + "node_modules/timespan": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", + "integrity": "sha512-0Jq9+58T2wbOyLth0EU+AUb6JMGCLaTWIykJFa7hyAybjVH9gpVMTfUAwo5fWAvtFt2Tjh/Elg8JtgNpnMnM8g==", + "engines": { + "node": ">= 0.2.0" + } + }, "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", @@ -8746,6 +9005,11 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -8804,6 +9068,14 @@ "tree-kill": "cli.js" } }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "engines": { + "node": ">= 14.0.0" + } + }, "node_modules/ts-api-utils": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", @@ -8951,6 +9223,14 @@ "node": ">=14.17" } }, + "node_modules/uglify-js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz", + "integrity": "sha512-YPX1DjKtom8l9XslmPFQnqWzTBkvI4N0pbkzLuPZZ4QTyig0uQqvZz9NgUdfEV+qccJzi7fVcGWdESvRIjWptQ==", + "bin": { + "uglifyjs": "bin/uglifyjs" + } + }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -9121,8 +9401,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utils-merge": { "version": "1.0.1", @@ -9205,6 +9484,14 @@ "node": ">=18" } }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dependencies": { + "makeerror": "1.0.12" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -9367,6 +9654,40 @@ "integrity": "sha512-XBNxKIMLO6uVHf1Xvo++HGWAZZoiVCHmEMCmZJzJ82vQsuUJCLw13Gzq0mRCATk7a3+ZcgeOKSDioavuYqtlfA==", "dev": true }, + "node_modules/winston": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", + "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.8", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.7.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.9.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", + "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", + "dependencies": { + "logform": "^2.7.0", + "readable-stream": "^3.6.2", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -9407,6 +9728,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/wrench": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/wrench/-/wrench-1.3.9.tgz", + "integrity": "sha512-srTJQmLTP5YtW+F5zDuqjMEZqLLr/eJOZfDI5ibfPfRMeDh3oBUefAscuH0q5wBKE339ptH/S/0D18ZkfOfmKQ==", + "deprecated": "wrench.js is deprecated! You should check out fs-extra (https://github.com/jprichardson/node-fs-extra) for any operations you were using wrench for. Thanks for all the usage over the years.", + "engines": { + "node": ">=0.1.97" + } + }, "node_modules/ws": { "version": "8.21.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", diff --git a/package.json b/package.json index 616ca7d..ac733b7 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "@tanstack/react-table": "^8.20.6", "autoprefixer": "^10.4.20", "bcryptjs": "^3.0.3", + "build": "^0.1.4", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "devenv": "^1.0.1", diff --git a/src/components/settings/theme-settings.tsx b/src/components/settings/theme-settings.tsx index 5216717..8c874a4 100644 --- a/src/components/settings/theme-settings.tsx +++ b/src/components/settings/theme-settings.tsx @@ -35,6 +35,8 @@ const backgroundOptions = [ { value: "spidey", label: "Spidey", icon: Shield, color: "bg-red-600", ring: "ring-red-600", desc: "Dark theme with red accents" }, { value: "cosmic", label: "Cosmic", icon: Shield, color: "bg-gradient-to-r from-purple-500 to-green-500", ring: "ring-purple-500", desc: "Deep space with purple nebula and cyan accents" }, { 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: "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" }, ] function getStoredColorTheme(): string { diff --git a/src/providers/website-theme-provider.tsx b/src/providers/website-theme-provider.tsx index 904ab8b..4130485 100644 --- a/src/providers/website-theme-provider.tsx +++ b/src/providers/website-theme-provider.tsx @@ -8,6 +8,8 @@ const themeClasses: Record = { spidey: "theme-spidey", cosmic: "theme-cosmic", cyber2: "theme-cyber2", + pumpkin: "theme-pumpkin", + bw: "theme-bw", } interface WebsiteThemeContextValue {