11import React , { useState , useRef , useEffect , useCallback } from 'react' ;
22import { Link } from 'react-router-dom' ;
33import {
4- ArrowLeft ,
5- Trash ,
6- ArrowsClockwise ,
7- Selection ,
8- Info ,
9- DownloadSimple ,
10- PaintBrush ,
11- Wind ,
12- Waves ,
13- Code ,
14- CircleDashed ,
4+ ArrowLeftIcon ,
5+ TrashIcon ,
6+ SelectionIcon ,
7+ DownloadSimpleIcon ,
8+ PaintBrushIcon ,
9+ WindIcon ,
10+ WavesIcon ,
11+ CodeIcon ,
12+ CircleDashedIcon ,
1513} from '@phosphor-icons/react' ;
1614import useSeo from '../../hooks/useSeo' ;
1715import { useToast } from '../../hooks/useToast' ;
1816
1917const PROTOCOLS = [
2018 { id : 'binary' , label : 'BINARY_STREAM' , symbols : [ '0' , '1' ] } ,
2119 { id : 'geometric' , label : 'GEOMETRIC_ENTITIES' , symbols : [ '+' , '×' , '□' , '○' , '△' , '⬡' ] } ,
22- { id : 'alpha' , label : 'ALPHA_CODE ' , symbols : [ 'A' , 'B' , 'X' , 'Y' , 'Z' , 'Σ' , 'Φ' , 'Ω' ] } ,
20+ { id : 'alpha' , label : 'ALPHA_CodeIcon ' , symbols : [ 'A' , 'B' , 'X' , 'Y' , 'Z' , 'Σ' , 'Φ' , 'Ω' ] } ,
2321 { id : 'brutalist' , label : 'VOID_BLOCKS' , symbols : [ '█' , '▓' , '▒' , '░' , '▖' , '▗' , '▘' , '▙' ] } ,
2422] ;
2523
@@ -35,9 +33,9 @@ const SymbolFlowPage = () => {
3533 const appName = 'Symbol Flow' ;
3634
3735 useSeo ( {
38- title : `${ appName } | Fezcodex ` ,
36+ title : `${ appName } | FezCodeIconx ` ,
3937 description : 'Generative flow field visualizer using technical symbol protocols and procedural noise.' ,
40- keywords : [ 'Fezcodex ' , 'generative art' , 'canvas animation' , 'flow field' , 'brutalist design' ] ,
38+ keywords : [ 'FezCodeIconx ' , 'generative art' , 'canvas animation' , 'flow field' , 'brutalist design' ] ,
4139 } ) ;
4240
4341 const { addToast } = useToast ( ) ;
@@ -185,12 +183,12 @@ const SymbolFlowPage = () => {
185183 } ;
186184
187185 return (
188- < div className = "min-h-screen bg-[#050505] text-white selection :bg-emerald-500/30 font-sans overflow-x-hidden" >
186+ < div className = "min-h-screen bg-[#050505] text-white SelectionIcon :bg-emerald-500/30 font-sans overflow-x-hidden" >
189187 < div className = "mx-auto max-w-7xl px-6 py-24 md:px-12" >
190188
191189 < header className = "mb-24" >
192190 < Link to = "/apps" className = "group mb-12 inline-flex items-center gap-2 text-xs font-mono text-gray-500 hover:text-white transition-colors uppercase tracking-[0.3em]" >
193- < ArrowLeft weight = "bold" />
191+ < ArrowLeftIcon weight = "bold" />
194192 < span > Applications</ span >
195193 </ Link >
196194
@@ -209,15 +207,15 @@ const SymbolFlowPage = () => {
209207 onClick = { ( ) => setIsPaused ( ! isPaused ) }
210208 className = { `group relative inline-flex items-center gap-4 px-10 py-6 border transition-all duration-300 font-mono uppercase tracking-widest text-sm font-black rounded-sm shrink-0 ${ isPaused ? 'bg-white text-black border-white' : 'bg-transparent text-white border-white/20 hover:bg-white/5' } ` }
211209 >
212- < Selection weight = "bold" size = { 24 } />
210+ < SelectionIcon weight = "bold" size = { 24 } />
213211 < span > { isPaused ? 'RESUME_STREAM' : 'HALT_TEMPORAL' } </ span >
214212 </ button >
215213
216214 < button
217215 onClick = { handleDownload }
218216 className = "group relative inline-flex items-center gap-4 px-10 py-6 bg-emerald-500 text-black hover:bg-emerald-400 transition-all duration-300 font-mono uppercase tracking-widest text-sm font-black rounded-sm shrink-0"
219217 >
220- < DownloadSimple weight = "bold" size = { 24 } />
218+ < DownloadSimpleIcon weight = "bold" size = { 24 } />
221219 < span > Capture Frame</ span >
222220 </ button >
223221 </ div >
@@ -232,7 +230,7 @@ const SymbolFlowPage = () => {
232230 { /* Protocols */ }
233231 < div className = "border border-white/10 bg-white/[0.02] p-8 rounded-sm space-y-10" >
234232 < h3 className = "font-mono text-[10px] font-bold text-emerald-500 uppercase tracking-widest flex items-center gap-2 border-b border-white/5 pb-6" >
235- < Code weight = "fill" />
233+ < CodeIcon weight = "fill" />
236234 Symbol_Protocols
237235 </ h3 >
238236
@@ -253,7 +251,7 @@ const SymbolFlowPage = () => {
253251 { /* Chromatic */ }
254252 < div className = "border border-white/10 bg-white/[0.02] p-8 rounded-sm space-y-10" >
255253 < h3 className = "font-mono text-[10px] font-bold text-emerald-500 uppercase tracking-widest flex items-center gap-2 border-b border-white/5 pb-6" >
256- < PaintBrush weight = "fill" />
254+ < PaintBrushIcon weight = "fill" />
257255 Chromatic_Intensity
258256 </ h3 >
259257
@@ -273,7 +271,7 @@ const SymbolFlowPage = () => {
273271 { /* Field Controls */ }
274272 < div className = "border border-white/10 bg-white/[0.02] p-8 rounded-sm space-y-10" >
275273 < h3 className = "font-mono text-[10px] font-bold text-emerald-500 uppercase tracking-widest flex items-center gap-2 border-b border-white/5 pb-6" >
276- < Wind weight = "fill" />
274+ < WindIcon weight = "fill" />
277275 Field_Calibration
278276 </ h3 >
279277
@@ -329,7 +327,7 @@ const SymbolFlowPage = () => {
329327 { /* Interaction Overlay */ }
330328 < div className = "absolute top-8 left-8 flex gap-4 pointer-events-none opacity-0 group-hover:opacity-100 transition-opacity" >
331329 < div className = "flex items-center gap-2 bg-black/60 backdrop-blur-md border border-white/10 px-3 py-1.5 rounded-sm" >
332- < CircleDashed size = { 14 } className = "text-emerald-500 animate-spin" />
330+ < CircleDashedIcon size = { 14 } className = "text-emerald-500 animate-spin" />
333331 < span className = "font-mono text-[9px] uppercase tracking-widest" > Interactive_Field_Active</ span >
334332 </ div >
335333 </ div >
@@ -339,13 +337,13 @@ const SymbolFlowPage = () => {
339337 onClick = { ( ) => { setDensity ( 50 ) ; setChaos ( 0.002 ) ; setVelocity ( 2 ) ; setTrail ( 0.15 ) ; } }
340338 className = "flex items-center gap-2 px-4 py-2 bg-black/60 backdrop-blur-md border border-white/10 text-[10px] font-mono uppercase tracking-widest text-red-400 hover:bg-red-500 hover:text-black transition-all"
341339 >
342- < Trash weight = "bold" /> Reset Field
340+ < TrashIcon weight = "bold" /> Reset Field
343341 </ button >
344342 </ div >
345343 </ div >
346344
347345 < div className = "p-8 border border-white/10 bg-white/[0.01] rounded-sm flex items-start gap-6" >
348- < Waves size = { 32 } className = "text-gray-700 shrink-0 mt-1" />
346+ < WavesIcon size = { 32 } className = "text-gray-700 shrink-0 mt-1" />
349347 < p className = "text-sm font-mono uppercase tracking-[0.2em] leading-relaxed text-gray-500 max-w-4xl" >
350348 Dynamic flow state utilized localized Canvas animation loops. Each entity responds to a composite vector field calculated from procedural noise and real-time cursor coordinates. Optimal systemic performance verified.
351349 </ p >
@@ -355,7 +353,7 @@ const SymbolFlowPage = () => {
355353 </ div >
356354
357355 < footer className = "mt-32 pt-12 border-t border-white/10 flex flex-col md:flex-row justify-between items-center gap-6 text-gray-600 font-mono text-[10px] uppercase tracking-[0.3em]" >
358- < span > Fezcodex_Kinetic_Matrix_v0 .6.1</ span >
356+ < span > FezCodeIconx_Kinetic_Matrix_v0 .6.1</ span >
359357 < span className = "text-gray-800" > STREAM_STATE // { isPaused ? 'LOCKED' : 'FLOWING' } </ span >
360358 </ footer >
361359 </ div >
0 commit comments