@@ -85,6 +85,37 @@ const TEMPLATES = [
8585 </ svg >
8686 ) ,
8787 } ,
88+ {
89+ id : 'threejs' as const ,
90+ label : 'Three.js' ,
91+ description : '3D WebGL, interactive, immersive' ,
92+ preview : (
93+ < svg viewBox = "0 0 120 80" className = "h-full w-full" aria-hidden = "true" >
94+ < rect width = "120" height = "80" fill = "#0a0a0f" />
95+ < defs >
96+ < radialGradient id = "tj-glow" cx = "50%" cy = "50%" r = "50%" >
97+ < stop offset = "0%" stopColor = "#6366f1" stopOpacity = "0.4" />
98+ < stop offset = "100%" stopColor = "#0a0a0f" stopOpacity = "0" />
99+ </ radialGradient >
100+ </ defs >
101+ < ellipse cx = "60" cy = "40" rx = "40" ry = "30" fill = "url(#tj-glow)" />
102+ { /* Wireframe cube */ }
103+ < polygon points = "45,25 75,25 75,55 45,55" fill = "none" stroke = "#6366f1" strokeOpacity = "0.6" strokeWidth = "1" />
104+ < polygon points = "55,15 85,15 85,45 55,45" fill = "none" stroke = "#818cf8" strokeOpacity = "0.4" strokeWidth = "0.8" />
105+ < line x1 = "45" y1 = "25" x2 = "55" y2 = "15" stroke = "#6366f1" strokeOpacity = "0.5" strokeWidth = "0.8" />
106+ < line x1 = "75" y1 = "25" x2 = "85" y2 = "15" stroke = "#6366f1" strokeOpacity = "0.5" strokeWidth = "0.8" />
107+ < line x1 = "75" y1 = "55" x2 = "85" y2 = "45" stroke = "#6366f1" strokeOpacity = "0.5" strokeWidth = "0.8" />
108+ < line x1 = "45" y1 = "55" x2 = "55" y2 = "45" stroke = "#6366f1" strokeOpacity = "0.5" strokeWidth = "0.8" />
109+ { /* Particles */ }
110+ < circle cx = "20" cy = "20" r = "1" fill = "#a5b4fc" opacity = "0.7" />
111+ < circle cx = "100" cy = "15" r = "1.2" fill = "#818cf8" opacity = "0.5" />
112+ < circle cx = "15" cy = "60" r = "0.8" fill = "#6366f1" opacity = "0.6" />
113+ < circle cx = "105" cy = "65" r = "1" fill = "#a5b4fc" opacity = "0.4" />
114+ < circle cx = "30" cy = "70" r = "1.2" fill = "#818cf8" opacity = "0.5" />
115+ < circle cx = "95" cy = "50" r = "0.8" fill = "#6366f1" opacity = "0.6" />
116+ </ svg >
117+ ) ,
118+ } ,
88119 {
89120 id : 'netflix' as const ,
90121 label : 'Netflix' ,
@@ -141,7 +172,7 @@ export function AdminTemplatePage() {
141172 </ p >
142173 </ div >
143174
144- < div className = "grid grid-cols-2 gap-4 sm:grid-cols-3 lg:grid-cols-5 " >
175+ < div className = "grid grid-cols-2 gap-4 sm:grid-cols-3 lg:grid-cols-6 " >
145176 { TEMPLATES . map ( ( { id, label, description, preview } ) => {
146177 const isActive = ( config . template ?? 'hacker' ) === id
147178 return (
0 commit comments