diff --git a/apps/landing/src/shared/icons/brands.tsx b/apps/landing/src/shared/icons/brands.tsx
index 72f90896..8d8fa1de 100644
--- a/apps/landing/src/shared/icons/brands.tsx
+++ b/apps/landing/src/shared/icons/brands.tsx
@@ -1,6 +1,8 @@
import { CodexIcon } from "@onequery/ui/icons/codex-icon";
import { GoogleSearchConsoleIcon } from "@onequery/ui/icons/google-search-console-icon";
+import { GranolaIcon } from "@onequery/ui/icons/granola-icon";
import { HermesAgentIcon } from "@onequery/ui/icons/hermes-agent-icon";
+import { SendGridIcon } from "@onequery/ui/icons/sendgrid-icon";
import { SimpleIconSvg, SvgIcon } from "@onequery/ui/icons/svg-icon";
import type { IconSvgProps, SimpleIconData } from "@onequery/ui/icons/svg-icon";
import type { ComponentType } from "react";
@@ -106,20 +108,6 @@ function MotherDuckIcon({ size, ...props }: IconSvgProps) {
);
}
-function GranolaIcon({ size, ...props }: IconSvgProps) {
- return (
-
-
-
- );
-}
-
function E2BIcon({ size, ...props }: IconSvgProps) {
return (
-
-
-
- );
-}
-
function SlackIcon({ size, ...props }: IconSvgProps) {
return (
diff --git a/packages/ui/package.json b/packages/ui/package.json
index f79365e4..84e939ae 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -13,7 +13,9 @@
"./components/*": "./src/components/ui/*.tsx",
"./icons/codex-icon": "./src/icons/codex-icon.tsx",
"./icons/google-search-console-icon": "./src/icons/google-search-console-icon.tsx",
+ "./icons/granola-icon": "./src/icons/granola-icon.tsx",
"./icons/hermes-agent-icon": "./src/icons/hermes-agent-icon.tsx",
+ "./icons/sendgrid-icon": "./src/icons/sendgrid-icon.tsx",
"./hooks/*": "./src/hooks/*.ts",
"./icons/svg-icon": "./src/icons/svg-icon.tsx"
},
diff --git a/packages/ui/src/data-sources/provider-icons.test.tsx b/packages/ui/src/data-sources/provider-icons.test.tsx
index 2b58d12a..260a0e13 100644
--- a/packages/ui/src/data-sources/provider-icons.test.tsx
+++ b/packages/ui/src/data-sources/provider-icons.test.tsx
@@ -69,6 +69,29 @@ describe("shared provider icon accessibility", () => {
expect(markup).toContain("Google Search Console provider");
});
+ it("renders SendGrid with the current multicolor brand mark", () => {
+ const markup = renderProviderIcon("sendgrid", {
+ title: "SendGrid provider",
+ });
+
+ expect(markup).toContain('viewBox="0 0 512 512"');
+ expect(markup).toContain('fill="#9DD6E3"');
+ expect(markup).toContain('fill="#00A9D1"');
+ expect(markup).toContain('fill="#3F72AB"');
+ expect(markup).toContain("SendGrid provider");
+ });
+
+ it("renders Granola with the current app icon colors", () => {
+ const markup = renderProviderIcon("granola", {
+ title: "Granola provider",
+ });
+
+ expect(markup).toContain('viewBox="0 0 550 550"');
+ expect(markup).toContain('fill="#B2C248"');
+ expect(markup).toContain('stroke="#1E1E1E"');
+ expect(markup).toContain("Granola provider");
+ });
+
it("renders AWS Athena Connector as a monochrome icon", () => {
const markup = renderProviderIcon("aws_athena_connector");
diff --git a/packages/ui/src/data-sources/provider-icons.tsx b/packages/ui/src/data-sources/provider-icons.tsx
index ae9b4053..4905167b 100644
--- a/packages/ui/src/data-sources/provider-icons.tsx
+++ b/packages/ui/src/data-sources/provider-icons.tsx
@@ -2,7 +2,6 @@ import type { SourceProviderId } from "@onequery/db/source-providers";
import {
IconDatabase,
IconHelpCircle,
- IconNotebook,
IconTerminal2,
} from "@tabler/icons-react";
import type { ComponentType } from "react";
@@ -34,7 +33,9 @@ import {
import { CodexIcon } from "../icons/codex-icon";
import { GoogleSearchConsoleIcon } from "../icons/google-search-console-icon";
+import { GranolaIcon } from "../icons/granola-icon";
import { HermesAgentIcon } from "../icons/hermes-agent-icon";
+import { SendGridIcon } from "../icons/sendgrid-icon";
import {
SimpleIconSvg,
SvgIcon,
@@ -210,12 +211,6 @@ function TablerProviderIcon({
);
}
-function GranolaIcon(props: ProviderIconProps) {
- return (
-
- );
-}
-
function HermesIcon(props: ProviderIconProps) {
return ;
}
@@ -272,21 +267,6 @@ function LinkedInAdsIcon({ size = 24, ...props }: ProviderIconProps) {
);
}
-function SendGridIcon({ size = 24, ...props }: ProviderIconProps) {
- return (
-
-
-
-
- );
-}
-
function SlackIcon({ size = 24, ...props }: ProviderIconProps) {
return (
diff --git a/packages/ui/src/icons/granola-icon.tsx b/packages/ui/src/icons/granola-icon.tsx
new file mode 100644
index 00000000..ff46a8b8
--- /dev/null
+++ b/packages/ui/src/icons/granola-icon.tsx
@@ -0,0 +1,24 @@
+import { SvgIcon } from "./svg-icon";
+import type { IconSvgProps } from "./svg-icon";
+
+export function GranolaIcon({ size = 24, ...props }: IconSvgProps) {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/packages/ui/src/icons/sendgrid-icon.tsx b/packages/ui/src/icons/sendgrid-icon.tsx
new file mode 100644
index 00000000..fa588dc1
--- /dev/null
+++ b/packages/ui/src/icons/sendgrid-icon.tsx
@@ -0,0 +1,22 @@
+import { SvgIcon } from "./svg-icon";
+import type { IconSvgProps } from "./svg-icon";
+
+export function SendGridIcon({ size = 24, ...props }: IconSvgProps) {
+ return (
+
+
+
+
+
+
+
+ );
+}