diff --git a/packages/app/public/logos/amd.svg b/packages/app/public/logos/amd.svg new file mode 100644 index 00000000..fb891572 --- /dev/null +++ b/packages/app/public/logos/amd.svg @@ -0,0 +1 @@ +AMD \ No newline at end of file diff --git a/packages/app/public/logos/nvidia.svg b/packages/app/public/logos/nvidia.svg new file mode 100644 index 00000000..0197daf7 --- /dev/null +++ b/packages/app/public/logos/nvidia.svg @@ -0,0 +1 @@ +NVIDIA \ No newline at end of file diff --git a/packages/app/public/logos/prime-intellect.svg b/packages/app/public/logos/prime-intellect.svg new file mode 100644 index 00000000..94f66bf5 --- /dev/null +++ b/packages/app/public/logos/prime-intellect.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/packages/app/src/components/page-content.tsx b/packages/app/src/components/page-content.tsx index 25f5fbf2..ed08971c 100644 --- a/packages/app/src/components/page-content.tsx +++ b/packages/app/src/components/page-content.tsx @@ -109,7 +109,7 @@ function ChartTabs({ initialTab }: { initialTab: string }) { return ( {/* Mobile: Dropdown */} -
+
@@ -149,7 +149,7 @@ function ChartTabs({ initialTab }: { initialTab: string }) {
{/* Desktop: Tabs */} - +
-
+

diff --git a/packages/app/src/components/quote-carousel.tsx b/packages/app/src/components/quote-carousel.tsx index a393c56f..7a1a0566 100644 --- a/packages/app/src/components/quote-carousel.tsx +++ b/packages/app/src/components/quote-carousel.tsx @@ -3,6 +3,7 @@ import { useCallback, useEffect, useRef, useState } from 'react'; import { track } from '@/lib/analytics'; +import { CompanyLogo, highlightBrand } from '@/components/quotes/quote-utils'; export interface CarouselQuote { text: string; @@ -63,40 +64,6 @@ function buildCompanyQuotes(quotes: CarouselQuote[], order?: string[]): CompanyE return shuffleArray(entries); } -function CompanyLogo({ quote }: { quote: CarouselQuote }) { - const [failed, setFailed] = useState(false); - - if (!quote.logo || failed) { - return ( -
- {quote.company[0]} -
- ); - } - - return ( - {quote.company} setFailed(true)} - /> - ); -} - -function highlightBrand(text: string) { - const parts = text.split(/(InferenceMAX™?|InferenceX™?|InferenceMAX|InferenceX)/gi); - return parts.map((part, i) => - /^inference(max|x)/i.test(part) ? ( - - {part} - - ) : ( - part - ), - ); -} - function QuoteBlock({ quote }: { quote: CarouselQuote }) { return (
@@ -104,7 +71,7 @@ function QuoteBlock({ quote }: { quote: CarouselQuote }) { “{highlightBrand(quote.text)}”