55 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
66 < title > Decoding Data Science | AI Consulting Directory</ title >
77
8+ <!-- Favicon -->
9+ < link rel ="icon " href ="https://raw.githubusercontent.com/Decoding-Data-Science/airesidency/main/dds_logo.jpg " type ="image/jpeg ">
10+
811 <!-- Social Media Share Meta Tags -->
912 < meta property ="og:title " content ="Decoding Data Science | AI Consulting Directory ">
1013 < meta property ="og:description " content ="The definitive intelligence directory for Artificial Intelligence & Gen AI consulting leaders in the Middle East. ">
371374
372375 // --- Components ---
373376
374- const Navigation = ( { setCurrentView } ) => (
377+ const Navigation = ( { setCurrentView, setFilter } ) => (
375378 < nav className = "bg-slate-950 border-b border-slate-800 shadow-xl sticky top-0 z-50" >
376379 < div className = "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8" >
377380 < div className = "flex items-center justify-between h-20" >
393396 </ a >
394397 < div className = "hidden md:block" >
395398 < div className = "ml-10 flex items-baseline space-x-6" >
396- < button onClick = { ( ) => setCurrentView ( 'home' ) } className = "text-slate-300 hover:text-white hover:bg-slate-800 px-4 py-2 rounded-md text-sm font-medium transition-all" > Rankings</ button >
399+ < button onClick = { ( ) => { setCurrentView ( 'home' ) ; setFilter ( 'All' ) ; } } className = "text-slate-300 hover:text-white hover:bg-slate-800 px-4 py-2 rounded-md text-sm font-medium transition-all" > Rankings</ button >
397400 < a href = "https://academy.decodingdatascience.com/" className = "text-slate-300 hover:text-white hover:bg-slate-800 px-4 py-2 rounded-md text-sm font-medium transition-all" > Academy</ a >
398401 < a href = "https://decodingdatascience.com/" className = "text-slate-300 hover:text-white hover:bg-slate-800 px-4 py-2 rounded-md text-sm font-medium transition-all" > Projects</ a >
399402 < a href = "https://nas.io/artificialintelligence/community" className = "bg-blue-600 hover:bg-blue-500 text-white px-5 py-2.5 rounded-md text-sm font-bold shadow-lg shadow-blue-900/20 hover:shadow-blue-600/30 transition-all border border-blue-500" >
406409 </ nav >
407410 ) ;
408411
409- const Footer = ( ) => (
412+ const Footer = ( { onFilterClick } ) => (
410413 < footer className = "bg-slate-950 border-t border-slate-800 text-slate-400 py-16" >
411414 < div className = "max-w-7xl mx-auto px-4 grid grid-cols-1 md:grid-cols-4 gap-12" >
412415 < div className = "col-span-1 md:col-span-1" >
426429 < div >
427430 < h4 className = "text-white font-bold mb-6 tracking-wide text-sm uppercase" > Rankings</ h4 >
428431 < ul className = "space-y-3 text-sm" >
429- < li > < a href = "https://decodingdatascience.com/" className = "hover:text-blue-400 transition-colors" > Diamond Tier Firms</ a > </ li >
430- < li > < a href = "https://decodingdatascience.com/" className = "hover:text-blue-400 transition-colors" > Platinum Tier Firms</ a > </ li >
431- < li > < a href = "https://decodingdatascience.com/" className = "hover:text-blue-400 transition-colors" > Gold Tier Firms</ a > </ li >
432- < li > < a href = "https://decodingdatascience.com/" className = "hover:text-blue-400 transition-colors" > Silver Tier Firms</ a > </ li >
432+ < li > < button onClick = { ( ) => onFilterClick ( 'Diamond' ) } className = "hover:text-blue-400 transition-colors text-left " > Diamond Tier Firms</ button > </ li >
433+ < li > < button onClick = { ( ) => onFilterClick ( 'Platinum' ) } className = "hover:text-blue-400 transition-colors text-left " > Platinum Tier Firms</ button > </ li >
434+ < li > < button onClick = { ( ) => onFilterClick ( 'Gold' ) } className = "hover:text-blue-400 transition-colors text-left " > Gold Tier Firms</ button > </ li >
435+ < li > < button onClick = { ( ) => onFilterClick ( 'Silver' ) } className = "hover:text-blue-400 transition-colors text-left " > Silver Tier Firms</ button > </ li >
433436 </ ul >
434437 </ div >
435438
@@ -625,8 +628,7 @@ <h3 className="text-lg font-bold mb-4 relative z-10">Partner with {company.name}
625628 ) ;
626629 } ;
627630
628- const HomePage = ( { companies, onCompanyClick } ) => {
629- const [ filter , setFilter ] = useState ( 'All' ) ;
631+ const HomePage = ( { companies, onCompanyClick, filter, setFilter } ) => {
630632 const [ searchTerm , setSearchTerm ] = useState ( '' ) ;
631633
632634 const levels = [ 'All' , 'Diamond' , 'Platinum' , 'Gold' , 'Silver' , 'Bronze' ] ;
@@ -734,6 +736,7 @@ <h3 className="text-xl font-bold text-white mb-2">No data matches found</h3>
734736 const App = ( ) => {
735737 const [ currentView , setCurrentView ] = useState ( 'home' ) ;
736738 const [ selectedCompany , setSelectedCompany ] = useState ( null ) ;
739+ const [ filter , setFilter ] = useState ( 'All' ) ;
737740
738741 useEffect ( ( ) => {
739742 window . scrollTo ( 0 , 0 ) ;
@@ -749,15 +752,23 @@ <h3 className="text-xl font-bold text-white mb-2">No data matches found</h3>
749752 setSelectedCompany ( null ) ;
750753 } ;
751754
755+ const handleFooterFilter = ( level ) => {
756+ setFilter ( level ) ;
757+ setCurrentView ( 'home' ) ;
758+ window . scrollTo ( 0 , 0 ) ;
759+ } ;
760+
752761 return (
753762 < div className = "font-sans text-slate-200 bg-slate-950 min-h-screen flex flex-col selection:bg-blue-500 selection:text-white" >
754- < Navigation setCurrentView = { setCurrentView } />
763+ < Navigation setCurrentView = { setCurrentView } setFilter = { setFilter } />
755764
756765 < main className = "flex-grow" >
757766 { currentView === 'home' ? (
758767 < HomePage
759768 companies = { companiesData }
760- onCompanyClick = { handleCompanyClick }
769+ onCompanyClick = { handleCompanyClick }
770+ filter = { filter }
771+ setFilter = { setFilter }
761772 />
762773 ) : (
763774 < DetailView
@@ -767,7 +778,7 @@ <h3 className="text-xl font-bold text-white mb-2">No data matches found</h3>
767778 ) }
768779 </ main >
769780
770- < Footer />
781+ < Footer onFilterClick = { handleFooterFilter } />
771782 </ div >
772783 ) ;
773784 } ;
0 commit comments