feat: futuristic theme ladder + stacked landing banner

Add three opt-in dark themes (BooCode+, BooCode Classic, BooCode
Override) plus an in-place Ember polish, on a class-scoped effects
engine: matrix rain, a neon grid field, and frosted glass, all gated
by a localStorage "Animated background" toggle and prefers-reduced-
motion. Extend the server theme_id whitelist so the new ids persist,
and replace the Home landing wordmark with the stacked mascot +
wordmark banner.
This commit is contained in:
2026-06-03 14:16:59 +00:00
parent 41f93f5d8e
commit f42c673881
21 changed files with 1822 additions and 30 deletions

View File

@@ -2,6 +2,8 @@ import { useEffect, useState } from 'react';
import { ChevronDown, ChevronRight, Folder, FolderTree, Menu, RotateCcw } from 'lucide-react';
import { toast } from 'sonner';
import { Button } from '@/components/ui/button';
import mascot from '@/assets/brand/banner-mascot.png';
import wordmark from '@/assets/brand/banner-wordmark.png';
import { AddProjectModal } from '@/components/AddProjectModal';
import { CreateProjectModal } from '@/components/CreateProjectModal';
import { api } from '@/api/client';
@@ -117,7 +119,20 @@ export function Home() {
</>
) : (
<>
<h1 className="text-2xl font-semibold tracking-tight">BooCode</h1>
<div className="flex flex-col items-center gap-4 pb-1">
<img
src={mascot}
alt=""
draggable={false}
className="h-28 w-auto select-none"
/>
<img
src={wordmark}
alt="BooCode"
draggable={false}
className="h-16 w-auto select-none"
/>
</div>
<p className="text-sm text-muted-foreground">
Pick a project from the sidebar, or add another.
</p>