Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion apps/site/components/Common/Partners/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ const getPartners = async (

const renderSmallPartner = (partner: Partner) => {
const Logo = PartnerLogos[partner.id];
const PartnerIcon = 'Favicon' in Logo ? Logo.Favicon : null;

if (!PartnerIcon) {
return null;
}
Comment on lines 35 to +40
Copy link

Copilot AI Apr 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

renderSmallPartner now returns null when a partner logo module doesn’t export Favicon, but getPartners() still slices to the requested length before rendering. This can lead to fewer than length partners being shown (e.g., when a new partner like ORAMA has only Logo). Prefer ensuring every partner logo exports a Favicon, or add a fallback (e.g., render Logo.Logo with small sizing) / filter partners with a favicon before slicing so the UI consistently renders the requested count.

Copilot uses AI. Check for mistakes.

return (
<PartnerButton
Expand All @@ -42,7 +47,7 @@ const renderSmallPartner = (partner: Partner) => {
href={partner.href}
data-tooltip={partner.name}
>
<Logo.Favicon />
<PartnerIcon />
</PartnerButton>
);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,10 @@
justify-end
lg:ml-8;
}

.oramaLogo {
@apply h-3
w-auto
text-neutral-900
dark:text-neutral-100;
}
13 changes: 2 additions & 11 deletions apps/site/components/Common/Searchbox/Footer/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,13 @@ import {
ArrowDownIcon,
ArrowUpIcon,
} from '@heroicons/react/24/solid';
import Image from 'next/image';
import OramaLogo from '@node-core/ui-components/Icons/PartnerLogos/Orama/Logo';
import { useTranslations } from 'next-intl';
Comment on lines +8 to 9
Copy link

Copilot AI Apr 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This footer is a client component, and importing the Orama logo as a React SVG component inlines a very large <path> into the client JS bundle. Consider serving the logo as a static asset (local /public SVG or remote) and rendering it via <img>/next/image, or otherwise ensuring it doesn’t inflate the client bundle for the search modal UI.

Copilot uses AI. Check for mistakes.
import { useTheme } from 'next-themes';

import styles from './index.module.css';

export const Footer = () => {
const t = useTranslations();
const { resolvedTheme } = useTheme();

const oramaLogo = `https://website-assets.oramasearch.com/orama-when-${resolvedTheme}.svg`;

return (
<div className={styles.footer}>
Expand Down Expand Up @@ -54,12 +50,7 @@ export const Footer = () => {
className={styles.poweredByLink}
>
<small>{t('components.search.poweredBy')}</small>
<Image
src={oramaLogo}
alt={t('components.search.poweredBy')}
width="62"
height="12"
/>
<OramaLogo className={styles.oramaLogo} />
</a>
</div>
</div>
Expand Down
250 changes: 250 additions & 0 deletions packages/ui-components/src/Icons/PartnerLogos/Orama/Logo.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,250 @@
import classNames from 'classnames';

import type { FC, SVGProps } from 'react';

const Orama: FC<SVGProps<SVGSVGElement>> = ({ className, ...props }) => (
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
{...props}
className={classNames('text-neutral-900 dark:text-neutral-100', className)}
viewBox="0 0 4868 1816"
>
<path
fill="#efedf0"
d="M4188.21 1128.75c73.6 0 142.18-30.11 153.05-76.94 3.35 30.11 20.07 52.69 44.33 64.39 21.74 10.88 48.51 12.55 74.43 2.51v-75.27c-10.87 2.51-22.58 3.35-31.78-4.18s-15.89-24.25-15.89-55.196V836.032c0-91.161-68.58-148.032-188.17-148.032-103.71 0-182.33 42.653-192.36 107.051l80.29 23.418c6.69-32.617 45.99-55.199 107.05-55.199 58.54 0 104.54 19.236 104.54 51.017 0 30.108-41.82 44.326-145.52 51.853-98.69 7.527-158.91 55.198-158.91 132.141 0 76.109 59.38 130.469 168.94 130.469m0-74.43c-49.34 0-79.45-20.91-79.45-55.202 0-32.618 28.44-55.199 74.43-58.544 77.78-5.018 125.46-14.218 141.35-32.617 0 88.652-56.88 146.363-136.33 146.363M3766.14 690.79c-64.86 0-123.48 30.584-152.39 77.637-22.67-49.405-74.25-76.853-129.74-77.637-55.48 0-102.37 28.232-127.38 72.932v-61.169h-84.41v415.327h85.97V890.764c0-72.147 43.77-119.2 106.29-119.2 59.39 0 96.9 43.916 96.9 116.848v229.468h85.97V889.196c0-71.363 42.99-117.632 105.51-117.632 58.61 0 96.12 40.779 96.12 115.279v231.037h85.97V872.727c0-55.679-15.63-100.379-46.89-132.532-30.48-32.937-71.12-49.405-121.92-49.405M1828.97 1128.75c133.82 0 224.14-90.32 224.14-223.302 0-132.142-88.65-216.612-224.14-216.612-135.48 0-224.97 85.307-224.97 216.612 0 132.982 92 223.302 224.97 223.302m0-80.29c-80.28 0-135.48-59.378-135.48-143.012 0-82.798 53.52-136.323 135.48-136.323 82.8 0 134.66 53.525 134.66 136.323 0 84.47-54.37 143.012-134.66 143.012M2448.54 688c-69.41 0-128.79 28.435-165.59 76.107v-70.253h-127.12v72.762h125.45c-25.09 33.453-39.31 76.106-39.31 125.45v153.054h-83.63v72.76h282.68v-72.76h-108.73V889.557c0-66.907 51.02-117.087 116.25-117.087 52.69 0 86.98 34.29 97.02 76.943l81.96-29.272C2609.96 740.689 2543.05 688 2448.54 688M2892.85 1128.75c73.6 0 142.18-30.11 153.05-76.94 3.34 30.11 20.07 52.69 44.32 64.39 21.75 10.88 48.51 12.55 74.44 2.51v-75.27c-10.87 2.51-22.58 3.35-31.78-4.18s-15.89-24.25-15.89-55.196V836.032c0-91.161-68.58-148.032-188.18-148.032-103.7 0-182.32 42.653-192.36 107.051l80.29 23.418c6.69-32.617 46-55.199 107.05-55.199 58.55 0 104.55 19.236 104.55 51.017 0 30.108-41.82 44.326-145.53 51.853-98.69 7.527-158.9 55.198-158.9 132.141 0 76.109 59.38 130.469 168.94 130.469m0-74.43c-49.35 0-79.45-20.91-79.45-55.202 0-32.618 28.43-55.199 74.43-58.544 77.78-5.018 125.45-14.218 141.34-32.617 0 88.652-56.87 146.363-136.32 146.363"
/>
<mask
id="a"
width="992"
height="1000"
x="408"
y="408"
maskUnits="userSpaceOnUse"
style={{ maskType: 'luminance' }}
>
<path fill="currentColor" d="M1400 408H408v1000h992z" />
</mask>
<g mask="url(#a)">
<path
fill="url(#b)"
fillRule="evenodd"
d="M912.724 663.395c36.48-32.397 86.93-48.777 135.686-46.526 27.84 1.285 52.82 8.423 73.38 20.252 17.77 9.529 35.6 27.016 50.29 47.475 25.88 22.593 64.78 25.376 93.97 4.549 34.12-24.35 42.05-71.752 17.7-105.875-55.19-77.341-142.81-114.099-228.34-118.048-85.424-3.943-175.886 24.162-244.4 85.476-.229.205-.457.411-.683.619-135.66 121.929-147.218 330.869-25.428 466.963 27.956 31.23 75.942 33.9 107.18 5.94 31.238-27.956 33.899-75.942 5.943-107.18-66.006-73.756-59.664-187.139 14.134-253.132.191-.17.38-.341.568-.513"
clipRule="evenodd"
/>
<mask
id="d"
width="598"
height="580"
x="700"
y="464"
maskUnits="userSpaceOnUse"
style={{ maskType: 'alpha' }}
>
<path
fill="url(#c)"
fillRule="evenodd"
d="M912.737 663.384c36.478-32.39 86.923-48.767 135.673-46.516 27.84 1.285 52.82 8.423 73.38 20.252 17.77 9.529 35.6 27.016 50.29 47.475 25.88 22.593 64.78 25.376 93.97 4.549 34.12-24.35 42.05-71.752 17.7-105.875-55.19-77.34-142.81-114.099-228.34-118.047-85.423-3.944-175.886 24.161-244.399 85.475-.235.21-.468.421-.699.634-135.646 121.931-147.198 330.86-25.413 466。949 27。956 31。23 75。942 33。9 107。18 5。94 31。238-27。956 33。899-75。942 5。943-107。18-66。006-73。756-59。664-187。139 14。134-253。132.195-.174.388-.349.581-.524"
clipRule="evenodd"
/>
</mask>
<g mask="url(#d)">
<path
fill="url(#e)"
d="m815.442 488.439-257.863 252.15 471.211 73.248 189.64-148.885v-99.867z"
style={{ mixBlendMode: 'multiply' }}
/>
</g>
<path
fill="url(#f)"
fillRule="evenodd"
d="M681.479 543.438c27.943 31.249 25.263 79.234-5.986 107.177-142.846 127.734-155.084 347.036-27.343 489.895 27.943 31.25 25.263 79.23-5.986 107.17-31.249 27.95-79.234 25.27-107.177-5.98-183.62-205.35-166.038-520.62 39.315-704.248 31.249-27.943 79.234-25.263 107.177 5.986"
clipRule="evenodd"
/>
<path
fill="url(#g)"
fillRule="evenodd"
d="M540.973 1134.52c31.249-27.94 79.234-25.26 107.177 5.99 127.734 142.84 347.037 155.08 489.89 27.34 31.25-27.94 79.24-25.26 107.18 5.99s25.26 79.23-5.99 107.17c-205.34 183.62-520.615 166.04-704.243-39.31-27.943-31.25-25.263-79.24 5.986-107.18"
clipRule="evenodd"
/>
<path
fill="url(#h)"
fillRule="evenodd"
d="M1225.41 624.307c36.22-21.108 82.69-8.858 103.8 27.36 115.13 197.541 92.22 466.423-89.9 629.333-31.25 27.94-79.23 25.27-107.18-5.98-27.95-31.24-25.27-79.23 5.97-107.17 122.51-109.58 142.9-297.418 59.95-439.744-21.1-36.218-8.86-82.691 27.36-103.799"
clipRule="evenodd"
/>
<mask
id="j"
width="288"
height="688"
x="1112"
y="613"
maskUnits="userSpaceOnUse"
style={{ maskType: 'alpha' }}
>
<path
fill="url(#i)"
fillRule="evenodd"
d="M1225.41 624.307c36.22-21.108 82.69-8.859 103.8 27.36 115.13 197.54 92.22 466.423-89.9 629.333-31.25 27.94-79.23 25.27-107.18-5.98-27.95-31.24-25.27-79.23 5.97-107.18 122.51-109.57 142.9-297.409 59.95-439.734-21.1-36.219-8.86-82.691 27.36-103.799"
clipRule="evenodd"
/>
</mask>
<g mask="url(#j)">
<path
fill="url(#k)"
d="M1195.2 935.842 941.304 1200.63l372.166 105.91 159.57-383.87-210.26-457.256-18.77 381.987z"
style={{ mixBlendMode: 'multiply' }}
/>
</g>
<path
fill="#f97cbf"
fillRule="evenodd"
d="m1240.67 536.021 22.2 24.558 22.25 24.558c-.55-.824-1.13-1.677-1.75-2.554l2.04 2.198c-.92-1.217-2.62-3.339-4.87-6.067-10.16-13.475-26.34-31.02-39.87-42.693"
clipRule="evenodd"
/>
<path
fill="url(#l)"
fillRule="evenodd"
d="M790.933 911.08c31.249-27.943 79.234-25.264 107.178 5.985 65.992 73.799 179.379 80.141 253.129 14.134 31.24-27.955 79.23-25.294 107.18 5.944 27.96 31.238 25.3 79.227-5.94 107.177-136.3 121.98-345.684 110.2-467.532-26.06-27.943-31.251-25.263-79.236 5.985-107.18"
clipRule="evenodd"
/>
<path
fill="url(#m)"
fillRule="evenodd"
d="M1278.53 576.74c-27.96-31.238-75.94-33.899-107.18-5.944-27.05 24.208-32.67 63.434-15.54 93.8 9.42 10.181 18.19 21.9 25.68 34.224 48.23 72.965 36.93 172.243-30.22 232.288-31.25 27.943-33.93 75.932-5.98 107.182 27.94 31.24 75.92 33.92 107.17 5.98 136.26-121.847 148.05-331.227 26.07-467.53"
clipRule="evenodd"
/>
<path
fill="url(#n)"
fillRule="evenodd"
d="M1149.47 658.088c-107.08-125.222-331.814-134.518-473.973-7.398-31.249 27.943-79.234 25.263-107.177-5.986-27.944-31.249-25.264-79.234 5.986-107.177 200.816-179.572 543.984-179.576 708.854 44.992 24.8 33.792 17.52 81.296-16.27 106.104-29.15 21.396-68.49 18.921-94.68-3.842-6.98-9.747-14.67-18.824-22.74-26.693"
clipRule="evenodd"
/>
</g>
<defs>
<linearGradient
id="b"
x1="820.116"
x2="871.279"
y1="910.363"
y2="581.461"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#f6d25b" />
<stop offset="1" stopColor="#f8b580" />
</linearGradient>
<linearGradient
id="c"
x1="820.116"
x2="871.279"
y1="910.363"
y2="581.46"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#f6d25b" />
<stop offset="1" stopColor="#f8b580" />
</linearGradient>
<linearGradient
id="e"
x1="1049.43"
x2="754.751"
y1="426.414"
y2="766.59"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#895200" />
<stop offset=".83333" stopColor="#e28800" stopOpacity="0" />
</linearGradient>
<linearGradient
id="f"
x1="554.401"
x2="590.876"
y1="594.033"
y2="1127.83"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#ed51f2" />
<stop offset="1" stopColor="#b771f2" />
</linearGradient>
<linearGradient
id="g"
x1="553.339"
x2="1119.35"
y1="1158.87"
y2="1192.96"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#b971f3" />
<stop offset="1" stopColor="#8f6fde" />
</linearGradient>
<linearGradient
id="h"
x1="1258.65"
x2="1170.99"
y1="734.396"
y2="1253.17"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#6a4bb2" />
<stop offset="1" stopColor="#9170e0" />
</linearGradient>
<linearGradient
id="i"
x1="1258.65"
x2="1156.33"
y1="687.436"
y2="1246.57"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#6a4bb2" />
<stop offset="1" stopColor="#9170e0" />
</linearGradient>
<linearGradient
id="k"
x1="1133.25"
x2="1265.16"
y1="901.97"
y2="1180.22"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#542da7" />
<stop offset=".83333" stopColor="#5f2eaf" stopOpacity="0" />
</linearGradient>
<linearGradient
id="l"
x1="860.316"
x2="1119.78"
y1="914.015"
y2="987.104"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#f6d25b" />
<stop offset="1" stopColor="#f9a38f" />
</linearGradient>
<linearGradient
id="m"
x1="1233.5"
x2="1244.41"
y1="711.379"
y2="987.688"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#fa80b7" />
<stop offset="1" stopColor="#f8a48d" />
</linearGradient>
<linearGradient
id="n"
x1="644.701"
x2="1203.84"
y1="574.152"
y2="603.388"
gradientUnits="userSpaceOnUse"
>
<stop stopColor="#e755f3" />
<stop offset="1" stopColor="#f97fb6" />
</linearGradient>
</defs>
</svg>
);

export default Orama;
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import Logo from './Logo';

export { Logo };
Comment on lines +1 to +3
Copy link

Copilot AI Apr 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All other partner logo modules export both Favicon and Logo, but ORAMA only exports Logo. This forces call sites to add special-casing (as in Partners/index.tsx) and can cause ORAMA to be omitted from small partner lists. Add an Orama/Favicon component and export { Favicon, Logo } here to match the established PartnerLogos module shape.

Suggested change
import Logo from './Logo';
export { Logo };
import Favicon from './Favicon';
import Logo from './Logo';
export { Favicon, Logo };

Copilot uses AI. Check for mistakes.
2 changes: 2 additions & 0 deletions packages/ui-components/src/Icons/PartnerLogos/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import * as MACSTADIUM from './MacStadium';
import * as MICROSOFT from './Microsoft';
import * as NODESOURCE from './NodeSource';
import * as OPENSSF from './OpenSSF';
import * as ORAMA from './Orama';
import * as RACKSPACE from './Rackspace';
import * as SCALEWAY from './Scaleway';
import * as SENTRY from './Sentry';
Expand All @@ -31,6 +32,7 @@ export {
MICROSOFT,
NODESOURCE,
OPENSSF,
ORAMA,
RACKSPACE,
SCALEWAY,
SENTRY,
Expand Down
Loading