@@ -5,12 +5,13 @@ import {
55 ExternalLink ,
66 FileCode ,
77 BarChart3 ,
8- Loader2 ,
98 Trophy ,
109 Globe ,
1110 Check ,
1211 BookOpen ,
1312} from 'lucide-react' ;
13+ import { Spinner } from './ui/Spinner' ;
14+ import { GhostIconButton } from './ui/GhostIconButton' ;
1415import type { Theme , AutoRunStats , MaestroUsageStats , LeaderboardRegistration } from '../types' ;
1516import type { GlobalAgentStats } from '../../shared/types' ;
1617import { MODAL_PRIORITIES } from '../constants/modalPriorities' ;
@@ -114,48 +115,36 @@ export function AboutModal({
114115 < h2 className = "text-sm font-bold" style = { { color : theme . colors . textMain } } >
115116 About Maestro
116117 </ h2 >
117- < button
118- type = "button"
118+ < GhostIconButton
119119 onClick = { ( ) => openUrl ( buildMaestroUrl ( 'https://runmaestro.ai' ) ) }
120- className = "p-1 rounded hover:bg-white/10 transition-colors"
121120 title = "Visit runmaestro.ai"
122- aria-label = "Visit runmaestro.ai"
123- style = { { color : theme . colors . accent } }
121+ ariaLabel = "Visit runmaestro.ai"
122+ color = { theme . colors . accent }
124123 >
125124 < Globe className = "w-4 h-4" />
126- </ button >
127- < button
128- type = "button"
125+ </ GhostIconButton >
126+ < GhostIconButton
129127 onClick = { ( ) => openUrl ( buildMaestroUrl ( 'https://runmaestro.ai/discord' ) ) }
130- className = "p-1 rounded hover:bg-white/10 transition-colors"
131128 title = "Join our Discord"
132- aria-label = "Join our Discord"
133- style = { { color : theme . colors . accent } }
129+ ariaLabel = "Join our Discord"
130+ color = { theme . colors . accent }
134131 >
135132 < svg className = "w-4 h-4" viewBox = "0 0 24 24" fill = "currentColor" >
136133 < path d = "M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z" />
137134 </ svg >
138- </ button >
139- < button
140- type = "button"
135+ </ GhostIconButton >
136+ < GhostIconButton
141137 onClick = { ( ) => openUrl ( buildMaestroUrl ( 'https://docs.runmaestro.ai/' ) ) }
142- className = "p-1 rounded hover:bg-white/10 transition-colors"
143138 title = "Documentation"
144- aria-label = "Documentation"
145- style = { { color : theme . colors . accent } }
139+ ariaLabel = "Documentation"
140+ color = { theme . colors . accent }
146141 >
147142 < BookOpen className = "w-4 h-4" />
148- </ button >
143+ </ GhostIconButton >
149144 </ div >
150- < button
151- type = "button"
152- onClick = { onClose }
153- className = "p-1 rounded hover:bg-white/10 transition-colors"
154- style = { { color : theme . colors . textDim } }
155- aria-label = "Close modal"
156- >
145+ < GhostIconButton onClick = { onClose } color = { theme . colors . textDim } ariaLabel = "Close modal" >
157146 < X className = "w-4 h-4" />
158- </ button >
147+ </ GhostIconButton >
159148 </ div >
160149 ) ;
161150
@@ -215,13 +204,11 @@ export function AboutModal({
215204 < span className = "text-sm font-bold" style = { { color : theme . colors . textMain } } >
216205 Global Statistics
217206 </ span >
218- { ! isStatsComplete && (
219- < Loader2 className = "w-3 h-3 animate-spin" style = { { color : theme . colors . textDim } } />
220- ) }
207+ { ! isStatsComplete && < Spinner size = { 12 } color = { theme . colors . textDim } /> }
221208 </ div >
222209 { loading ? (
223210 < div className = "flex items-center justify-center py-4 gap-2" >
224- < Loader2 className = "w-4 h-4 animate-spin" style = { { color : theme . colors . textDim } } />
211+ < Spinner size = { 16 } color = { theme . colors . textDim } />
225212 < span className = "text-xs" style = { { color : theme . colors . textDim } } >
226213 Loading stats...
227214 </ span >
0 commit comments