From 2bf37733c09cb5188f6a10652957605f629a265e Mon Sep 17 00:00:00 2001 From: Roomote Date: Wed, 5 Aug 2026 08:34:08 +0000 Subject: [PATCH] feat(web): add model recommendations callout --- .../src/components/settings/SettingsShell.tsx | 3 ++ .../pages/AutomationsSettingsPage.tsx | 27 +++++----------- .../settings/pages/TaskModelSettingsPage.tsx | 18 ++++++++++- .../system/custom/header-callout.tsx | 31 +++++++++++++++++++ .../web/src/components/system/custom/index.ts | 1 + .../src/components/system/primitives/icons.ts | 2 ++ 6 files changed, 62 insertions(+), 20 deletions(-) create mode 100644 apps/web/src/components/system/custom/header-callout.tsx diff --git a/apps/web/src/components/settings/SettingsShell.tsx b/apps/web/src/components/settings/SettingsShell.tsx index 1aad3fcc4..d19dc859c 100644 --- a/apps/web/src/components/settings/SettingsShell.tsx +++ b/apps/web/src/components/settings/SettingsShell.tsx @@ -17,12 +17,14 @@ import { PageNavigationShell } from './PageNavigationShell'; type SettingsShellProps = { pageId: SettingsPageId; adminOnly?: boolean; + headerAction?: ReactNode; children: ReactNode; }; export function SettingsShell({ pageId, adminOnly = false, + headerAction, children, }: SettingsShellProps) { const router = useRouter(); @@ -49,6 +51,7 @@ export function SettingsShell({ title={navigationItem.title} description={navigationItem.description} mobileLabel="Settings page" + headerAction={headerAction} onItemSelect={(value) => { const nextItem = accessibleItems.find((item) => item.id === value); if (nextItem) { diff --git a/apps/web/src/components/settings/pages/AutomationsSettingsPage.tsx b/apps/web/src/components/settings/pages/AutomationsSettingsPage.tsx index 0f28ae353..cbd92552c 100644 --- a/apps/web/src/components/settings/pages/AutomationsSettingsPage.tsx +++ b/apps/web/src/components/settings/pages/AutomationsSettingsPage.tsx @@ -10,10 +10,9 @@ import { Alert, AlertCircle, AlertDescription, - Button, - Lightbulb, + BookOpenText, + HeaderCallout, } from '@/components/system'; -import { BookOpenText } from 'lucide-react'; export function AutomationsSettingsPage() { const { isAdmin } = useAuthorizedUser(); @@ -30,22 +29,12 @@ export function AutomationsSettingsPage() { Get {PRODUCT_NAME} automatically working on your behalf.

-
- -
- Unsure how automations can help? - -
-
+ {isAdmin ? ( diff --git a/apps/web/src/components/settings/pages/TaskModelSettingsPage.tsx b/apps/web/src/components/settings/pages/TaskModelSettingsPage.tsx index 4c51b08d6..0421ddd6e 100644 --- a/apps/web/src/components/settings/pages/TaskModelSettingsPage.tsx +++ b/apps/web/src/components/settings/pages/TaskModelSettingsPage.tsx @@ -7,8 +7,11 @@ import { InferenceProviderSection } from '@/components/settings/InferenceProvide import { ModelSettingsSection } from '@/components/settings/ModelSettingsSection'; import { SettingsShell } from '@/components/settings/SettingsShell'; import { splitInferenceProviders } from '@/components/settings/taskModelProviderSetup'; +import { HeaderCallout, Medal } from '@/components/system'; import { useTRPC } from '@/trpc/client'; +const MODEL_RECOMMENDATIONS_URL = 'https://roomote.dev/evals'; + export function TaskModelSettingsPage() { const trpc = useTRPC(); const providerSetupQuery = useQuery( @@ -18,10 +21,23 @@ export function TaskModelSettingsPage() { const { connectedProviders, availableProviders } = splitInferenceProviders(providerSetup); const modelSectionRef = useRef(null); + const recommendationsCallout = ( + + ); return ( - +
+
{recommendationsCallout}
+ +
+ {text} + +
+
+ ); +} diff --git a/apps/web/src/components/system/custom/index.ts b/apps/web/src/components/system/custom/index.ts index 1bfa1d8d1..305eed46e 100644 --- a/apps/web/src/components/system/custom/index.ts +++ b/apps/web/src/components/system/custom/index.ts @@ -1,5 +1,6 @@ export * from './ascii-spinner'; export * from './cursor-pagination'; +export * from './header-callout'; export * from './MediaViewer'; export * from './icons'; export * from './logos'; diff --git a/apps/web/src/components/system/primitives/icons.ts b/apps/web/src/components/system/primitives/icons.ts index 1209e6c5d..3010d2a5b 100644 --- a/apps/web/src/components/system/primitives/icons.ts +++ b/apps/web/src/components/system/primitives/icons.ts @@ -16,6 +16,7 @@ export { ArrowUpFromLine, ArrowUpRightIcon, AtSignIcon, + BookOpenText, BookCopy, BookMarked, Brain, @@ -117,6 +118,7 @@ export { MailIcon, Mails, Maximize2, + Medal, Menu, Megaphone, MessageCircleQuestionMark,