diff --git a/frontend/src/app/Main.tsx b/frontend/src/app/Main.tsx index 127f92fd..33109c71 100644 --- a/frontend/src/app/Main.tsx +++ b/frontend/src/app/Main.tsx @@ -389,7 +389,7 @@ const DefaultModelGuard: React.FC<{ children: React.ReactNode }> = ({ children } severity="info" variant="filled" onClose={() => setSessionSwitch(null)} - sx={{ fontSize: '0.8rem' }} + sx={{ fontSize: '0.8125rem' }} > {sessionSwitch && (sessionSwitch.toFreeTrial ? ( <>Your model isn't connected, you're on the free trial now{sessionSwitch.runs != null ? <> ({sessionSwitch.runs} runs left) : null}. @@ -430,7 +430,7 @@ const CrashRecoveryChip: React.FC = () => { bgcolor: 'background.paper', border: '1px solid', borderColor: 'divider', boxShadow: 3, borderRadius: '10px', - px: 1.75, py: 1, fontSize: '0.85rem', + px: 1.75, py: 1, fontSize: '0.875rem', maxWidth: 360, }}> { }} > - + {!isOnline ? 'No internet connection; agents cannot reach AI models or external services' : ( @@ -755,7 +755,7 @@ const AppShell: React.FC = () => { - + {freeTrialSpent ? (refillLabel ? `Out of free runs, fresh ones in ${refillLabel}. ` : "You're out of free runs for now. ") : "Nice, you're rolling. "} @@ -773,7 +773,7 @@ const AppShell: React.FC = () => { role="button" aria-label="Dismiss" onClick={() => { try { localStorage.setItem('os_ft_nudge_dismissed', '1'); } catch {} setFtNudgeDismissed(true); }} - sx={{ color: c.text.muted, cursor: 'pointer', fontSize: '0.95rem', lineHeight: 1, px: 0.5, '&:hover': { color: c.text.secondary } }} + sx={{ color: c.text.muted, cursor: 'pointer', fontSize: '1rem', lineHeight: 1, px: 0.5, '&:hover': { color: c.text.secondary } }} > × @@ -790,14 +790,14 @@ const AppShell: React.FC = () => { {usageResetLabel && ( - {usageResetLabel} + {usageResetLabel} )} {proMaxed && ( dispatch(openSettingsModal('models'))} - sx={{ color: c.accent.primary, cursor: 'pointer', fontSize: '0.8rem', '&:hover': { textDecoration: 'underline' } }} + sx={{ color: c.accent.primary, cursor: 'pointer', fontSize: '0.8125rem', '&:hover': { textDecoration: 'underline' } }} > Upgrade @@ -819,7 +819,7 @@ const AppShell: React.FC = () => { }} > - + {updateStatus === 'available' && `OpenSwarm${verSuffix} is available`} {updateStatus === 'downloading' && `Downloading OpenSwarm${verSuffix}…`} {updateStatus === 'downloaded' && `OpenSwarm${verSuffix} is ready to install`} @@ -839,7 +839,7 @@ const AppShell: React.FC = () => { /> )} {updateStatus === 'downloading' && ( - + {Math.round(downloadPercent)}% )} @@ -979,8 +979,8 @@ const AppShell: React.FC = () => { }} > - Search - {SEARCH_HOTKEY_LABEL} + Search + {SEARCH_HOTKEY_LABEL} { sx={{ '& .MuiListItemText-primary': { color: isDashboardRoute ? c.text.primary : c.text.muted, - fontSize: '0.9rem', + fontSize: '0.875rem', fontWeight: isDashboardRoute ? 600 : 400, }, }} @@ -1114,7 +1114,7 @@ const AppShell: React.FC = () => { sx={{ flex: 1, minWidth: 0, - fontSize: '0.86rem', + fontSize: '0.875rem', fontWeight: isActive ? 500 : 400, color: isActive ? c.text.secondary : c.text.ghost, py: 0, @@ -1135,7 +1135,7 @@ const AppShell: React.FC = () => { }} sx={{ color: isActive ? c.text.secondary : c.text.ghost, - fontSize: '0.86rem', + fontSize: '0.875rem', fontWeight: isActive ? 500 : 400, overflow: 'hidden', textOverflow: 'ellipsis', @@ -1182,7 +1182,7 @@ const AppShell: React.FC = () => { sx={{ '& .MuiListItemText-primary': { color: isAppsRoute ? c.text.primary : c.text.muted, - fontSize: '0.9rem', + fontSize: '0.875rem', fontWeight: isAppsRoute ? 600 : 400, }, }} @@ -1266,7 +1266,7 @@ const AppShell: React.FC = () => { sx={{ flex: 1, minWidth: 0, - fontSize: '0.86rem', + fontSize: '0.875rem', fontWeight: isActive ? 500 : 400, color: isActive ? c.text.secondary : c.text.ghost, py: 0, @@ -1285,7 +1285,7 @@ const AppShell: React.FC = () => { onDoubleClick={(e) => { e.stopPropagation(); handleStartAppRename(app.id, appName); }} sx={{ color: isActive ? c.text.secondary : c.text.ghost, - fontSize: '0.86rem', + fontSize: '0.875rem', fontWeight: isActive ? 500 : 400, overflow: 'hidden', textOverflow: 'ellipsis', @@ -1359,7 +1359,7 @@ const AppShell: React.FC = () => { sx={{ '& .MuiListItemText-primary': { color: c.text.muted, - fontSize: '0.9rem', + fontSize: '0.875rem', fontWeight: 400, }, }} @@ -1461,7 +1461,7 @@ const AppShell: React.FC = () => { @@ -1474,7 +1474,7 @@ const AppShell: React.FC = () => { bgcolor: c.accent.primary, '&:hover': { bgcolor: c.accent.pressed }, textTransform: 'none', - fontSize: '0.8rem', + fontSize: '0.8125rem', borderRadius: 1.5, minWidth: 'auto', }} @@ -1494,7 +1494,7 @@ const AppShell: React.FC = () => { '&:hover': { bgcolor: c.accent.pressed }, '&.Mui-disabled': { bgcolor: c.accent.primary, color: '#fff', opacity: 0.7 }, textTransform: 'none', - fontSize: '0.8rem', + fontSize: '0.8125rem', borderRadius: 1.5, minWidth: 'auto', }} @@ -1539,14 +1539,14 @@ const AppShell: React.FC = () => { {peek.thumbnail ? ( ) : ( - + No preview yet )} - {peek.name} + {peek.name} {peek.description && ( - + {peek.description} )} @@ -1590,7 +1590,7 @@ const AppShell: React.FC = () => { diff --git a/frontend/src/app/components/Onboarding/ac/ACMultiChoice.tsx b/frontend/src/app/components/Onboarding/ac/ACMultiChoice.tsx index fc5edf20..022dbead 100644 --- a/frontend/src/app/components/Onboarding/ac/ACMultiChoice.tsx +++ b/frontend/src/app/components/Onboarding/ac/ACMultiChoice.tsx @@ -89,7 +89,7 @@ const ACMultiChoice: React.FC = ({ > = ({ borderRadius: '10px', px: 1.1, py: 0.7, - fontSize: '0.78rem', + fontSize: '0.75rem', fontWeight: 500, fontFamily: c.font.sans, transition: 'all 0.12s', diff --git a/frontend/src/app/components/Onboarding/ac/ACPopup.tsx b/frontend/src/app/components/Onboarding/ac/ACPopup.tsx index 8cedc55b..3ad41b66 100644 --- a/frontend/src/app/components/Onboarding/ac/ACPopup.tsx +++ b/frontend/src/app/components/Onboarding/ac/ACPopup.tsx @@ -164,7 +164,7 @@ const ACPopup: React.FC = ({ text, offset = { x: 0, y: 14 } }) => { {sub} diff --git a/frontend/src/app/components/OnboardingV3/beats/BeatApps.tsx b/frontend/src/app/components/OnboardingV3/beats/BeatApps.tsx index ed939f6d..a2ff6d9f 100644 --- a/frontend/src/app/components/OnboardingV3/beats/BeatApps.tsx +++ b/frontend/src/app/components/OnboardingV3/beats/BeatApps.tsx @@ -44,7 +44,7 @@ const BeatApps: React.FC<{ }} >
- OpenSwarm + OpenSwarm
{entries.map((entry, i) => { @@ -68,7 +68,7 @@ const BeatApps: React.FC<{ }} > {entry.icon} - {entry.name} + {entry.name} ); })} diff --git a/frontend/src/app/components/OnboardingV3/beats/BeatCard.tsx b/frontend/src/app/components/OnboardingV3/beats/BeatCard.tsx index c8ce1aa2..9e33a00d 100644 --- a/frontend/src/app/components/OnboardingV3/beats/BeatCard.tsx +++ b/frontend/src/app/components/OnboardingV3/beats/BeatCard.tsx @@ -240,17 +240,17 @@ const BeatCard: React.FC<{ placeholder="Your name" style={{ marginTop: 20, border: 'none', outline: 'none', background: 'transparent', - fontSize: '1.7rem', fontWeight: 800, color: ink, fontFamily: 'inherit', + fontSize: '1.75rem', fontWeight: 800, color: ink, fontFamily: 'inherit', width: '100%', padding: 0, }} /> -
+
{epithet}
OPENSWARM @@ -260,7 +260,7 @@ const BeatCard: React.FC<{ }} /> {today.toUpperCase()} - + OPEN
SWARM
diff --git a/frontend/src/app/components/OnboardingV3/beats/BeatConnect.tsx b/frontend/src/app/components/OnboardingV3/beats/BeatConnect.tsx index 13d494b5..edac464a 100644 --- a/frontend/src/app/components/OnboardingV3/beats/BeatConnect.tsx +++ b/frontend/src/app/components/OnboardingV3/beats/BeatConnect.tsx @@ -107,10 +107,10 @@ const BeatConnect: React.FC<{ boxShadow: isConnected ? 'inset 0 0 0 3px #ffffff' : 'none', }} /> - {p.name} + {p.name} {/* The green ring + filled radio already signal connected, so no redundant "Connected" text. */} {!isConnected && isThis && !connected - ? waiting for sign-in... + ? waiting for sign-in... : null} {/* Arc's icon tile: a full-height soft-tinted zone on the row's right edge, real brand mark inside. */} @@ -124,12 +124,12 @@ const BeatConnect: React.FC<{ ); })} {userCode && !connected && ( -
+
Your code: {userCode}
)} {!canContinue && ( -
+
Pick a subscription above to continue.
)} diff --git a/frontend/src/app/components/OnboardingV3/beats/BeatShell.tsx b/frontend/src/app/components/OnboardingV3/beats/BeatShell.tsx index b6263170..77b963b1 100644 --- a/frontend/src/app/components/OnboardingV3/beats/BeatShell.tsx +++ b/frontend/src/app/components/OnboardingV3/beats/BeatShell.tsx @@ -106,7 +106,7 @@ const BeatShell: React.FC<{ style={{ display: 'inline-flex', alignItems: 'center', gap: 6, alignSelf: 'flex-start', marginBottom: 18, padding: 0, border: 'none', background: 'transparent', - color: 'rgba(255,255,255,0.47)', fontSize: '0.85rem', cursor: 'pointer', fontFamily: 'inherit', + color: 'rgba(255,255,255,0.47)', fontSize: '0.875rem', cursor: 'pointer', fontFamily: 'inherit', position: wide ? 'absolute' : 'relative', top: wide ? 24 : undefined, left: wide ? 28 : undefined, }} > @@ -117,7 +117,7 @@ const BeatShell: React.FC<{ {title} - + {body} {/* Arc pins the CTA to the panel's bottom on card beats; on the wide account beat it follows the content. */} @@ -141,7 +141,7 @@ const BeatShell: React.FC<{ onClick={() => armed && onSecondary()} style={{ marginTop: 12, width: '100%', border: 'none', background: 'transparent', - color: 'rgba(255,255,255,0.55)', fontSize: '0.88rem', fontWeight: 500, + color: 'rgba(255,255,255,0.55)', fontSize: '0.875rem', fontWeight: 500, cursor: 'pointer', fontFamily: 'inherit', padding: 4, }} > diff --git a/frontend/src/app/components/OnboardingV3/beats/BeatSignIn.tsx b/frontend/src/app/components/OnboardingV3/beats/BeatSignIn.tsx index 260a1bbf..7be6f51b 100644 --- a/frontend/src/app/components/OnboardingV3/beats/BeatSignIn.tsx +++ b/frontend/src/app/components/OnboardingV3/beats/BeatSignIn.tsx @@ -84,9 +84,9 @@ const BeatSignIn: React.FC<{ - You're signed in + You're signed in {userEmail && ( - {userEmail} + {userEmail} )} @@ -109,12 +109,12 @@ const BeatSignIn: React.FC<{ }} > {row.icon} - + {row.hint ? row.hint : row.name} ))} -
+
Sign in to continue.
diff --git a/frontend/src/app/components/RunInDesktopMessage.tsx b/frontend/src/app/components/RunInDesktopMessage.tsx index 2237c415..07d3179c 100644 --- a/frontend/src/app/components/RunInDesktopMessage.tsx +++ b/frontend/src/app/components/RunInDesktopMessage.tsx @@ -25,10 +25,10 @@ const RunInDesktopMessage: React.FC = ({ kind = 'browser' }) => { userSelect: 'none', }} > - + Open this in the OpenSwarm desktop app - + {noun} run inside the OpenSwarm desktop window, not a regular web browser. It looks like you opened the dev URL directly in a browser; launch OpenSwarm (the Electron window from bash run.sh) and use it there instead. diff --git a/frontend/src/app/components/editor/CommandPicker.tsx b/frontend/src/app/components/editor/CommandPicker.tsx index 04213763..ffcb1526 100644 --- a/frontend/src/app/components/editor/CommandPicker.tsx +++ b/frontend/src/app/components/editor/CommandPicker.tsx @@ -412,7 +412,7 @@ const CommandPicker: React.FC = ({ trigger, filter, onSelect, onClose, vi component="span" sx={{ color: c.text.primary, - fontSize: '0.8rem', + fontSize: '0.8125rem', fontWeight: 500, fontFamily: c.font.mono, whiteSpace: 'nowrap', @@ -425,7 +425,7 @@ const CommandPicker: React.FC = ({ trigger, filter, onSelect, onClose, vi component="span" sx={{ color: c.text.muted, - fontSize: '0.72rem', + fontSize: '0.75rem', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', @@ -459,7 +459,7 @@ const CommandPicker: React.FC = ({ trigger, filter, onSelect, onClose, vi = ({ trigger, filter, onSelect, onClose, vi > {keys} - + {label} diff --git a/frontend/src/app/components/editor/DirectoryBrowser.tsx b/frontend/src/app/components/editor/DirectoryBrowser.tsx index 0934fe65..996f1ab4 100644 --- a/frontend/src/app/components/editor/DirectoryBrowser.tsx +++ b/frontend/src/app/components/editor/DirectoryBrowser.tsx @@ -149,7 +149,7 @@ const DirectoryBrowser: React.FC = ({ open, onClose, onSe sx={{ '& .MuiOutlinedInput-root': { bgcolor: c.bg.page, - fontSize: '0.85rem', + fontSize: '0.875rem', fontFamily: c.font.mono, }, }} @@ -192,7 +192,7 @@ const DirectoryBrowser: React.FC = ({ open, onClose, onSe component="button" underline="hover" onClick={() => browse('/')} - sx={{ color: c.text.tertiary, fontSize: '0.78rem' }} + sx={{ color: c.text.tertiary, fontSize: '0.75rem' }} > / @@ -200,7 +200,7 @@ const DirectoryBrowser: React.FC = ({ open, onClose, onSe const fullPath = '/' + pathSegments.slice(0, i + 1).join('/'); const isLast = i === pathSegments.length - 1; return isLast ? ( - + {seg} ) : ( @@ -209,7 +209,7 @@ const DirectoryBrowser: React.FC = ({ open, onClose, onSe component="button" underline="hover" onClick={() => browse(fullPath)} - sx={{ color: c.text.tertiary, fontSize: '0.78rem' }} + sx={{ color: c.text.tertiary, fontSize: '0.75rem' }} > {seg} @@ -220,7 +220,7 @@ const DirectoryBrowser: React.FC = ({ open, onClose, onSe )} {error && ( - + {error} )} @@ -250,7 +250,7 @@ const DirectoryBrowser: React.FC = ({ open, onClose, onSe ) : !hasEntries ? ( - + Empty directory @@ -277,7 +277,7 @@ const DirectoryBrowser: React.FC = ({ open, onClose, onSe ))} @@ -301,7 +301,7 @@ const DirectoryBrowser: React.FC = ({ open, onClose, onSe ))} @@ -310,7 +310,7 @@ const DirectoryBrowser: React.FC = ({ open, onClose, onSe - + {selected ? `Selected: ${selected.name}` : 'Click to select, double-click folders to open'} diff --git a/frontend/src/app/components/editor/richEditorUtils.ts b/frontend/src/app/components/editor/richEditorUtils.ts index 543fd99b..b5beb82b 100644 --- a/frontend/src/app/components/editor/richEditorUtils.ts +++ b/frontend/src/app/components/editor/richEditorUtils.ts @@ -49,7 +49,7 @@ export function createSkillPillElement( borderRadius: '999px', background: `${SKILL_COLOR}18`, color: SKILL_COLOR, - fontSize: '0.72rem', + fontSize: '0.75rem', fontFamily: monoFont, lineHeight: '1.8', verticalAlign: 'baseline', @@ -116,7 +116,7 @@ export function createPasteCardElement( borderRadius: '6px', background: `${PASTE_CARD_COLOR}1A`, color: PASTE_CARD_COLOR, - fontSize: '0.72rem', + fontSize: '0.75rem', fontFamily: monoFont, lineHeight: '1.8', verticalAlign: 'baseline', diff --git a/frontend/src/app/components/feedback/Loading.tsx b/frontend/src/app/components/feedback/Loading.tsx index f36c8156..49cffd42 100644 --- a/frontend/src/app/components/feedback/Loading.tsx +++ b/frontend/src/app/components/feedback/Loading.tsx @@ -105,7 +105,7 @@ export const EmptyState: React.FC = ({ icon, title, hint, delay }} > {icon && {icon}} - + {title} {hint && ( diff --git a/frontend/src/app/components/nudges/AutomationChips.tsx b/frontend/src/app/components/nudges/AutomationChips.tsx index 17c9ea6e..dff1780c 100644 --- a/frontend/src/app/components/nudges/AutomationChips.tsx +++ b/frontend/src/app/components/nudges/AutomationChips.tsx @@ -66,7 +66,7 @@ const AutomationChips: React.FC<{ c: ClaudeTokens }> = ({ c }) => { border: `1px dashed ${done ? c.status.success : c.border.strong}`, background: done ? c.status.successBg : 'transparent', color: done ? c.status.success : c.text.secondary, - fontSize: '0.88rem', fontWeight: 500, + fontSize: '0.875rem', fontWeight: 500, cursor: done ? 'default' : 'pointer', fontFamily: 'inherit', }} > diff --git a/frontend/src/app/components/nudges/RevealHero.tsx b/frontend/src/app/components/nudges/RevealHero.tsx index 47085f09..a55b756f 100644 --- a/frontend/src/app/components/nudges/RevealHero.tsx +++ b/frontend/src/app/components/nudges/RevealHero.tsx @@ -85,10 +85,10 @@ const RevealHero: React.FC = () => {
-
+
{userName ? `${userName}, while you set up I got to work` : `While you set up, I got to work`}
-
+
{doneCount === jobs.length ? `All done, here on your canvas` : `${doneCount} of ${jobs.length} done, the rest are running`}
@@ -114,17 +114,17 @@ const RevealHero: React.FC = () => { }}> {iconFor(job.kind)}
-
+
{lineFor(job, st)}
{st === 'done' ? ( - + done ) : st === 'snag' ? ( - needs a look + needs a look ) : ( - + { ); })}
-
+
It's all on your canvas below. Nothing's saved or deleted without you, keep it or clear it anytime.
diff --git a/frontend/src/app/components/overlays/DynamicIsland.tsx b/frontend/src/app/components/overlays/DynamicIsland.tsx index 4e795839..25fd5bbe 100644 --- a/frontend/src/app/components/overlays/DynamicIsland.tsx +++ b/frontend/src/app/components/overlays/DynamicIsland.tsx @@ -113,7 +113,7 @@ const AgentStatusRow: React.FC<{ 1 && ( 0 && ( 1 && ( { e.stopPropagation(); onClearAllFinished(); }} sx={{ - fontSize: '0.58rem', + fontSize: '0.625rem', fontWeight: 600, color: c.text.ghost, cursor: 'pointer', diff --git a/frontend/src/app/components/overlays/GlobalSearchPalette.tsx b/frontend/src/app/components/overlays/GlobalSearchPalette.tsx index e792e4c9..2633bbae 100644 --- a/frontend/src/app/components/overlays/GlobalSearchPalette.tsx +++ b/frontend/src/app/components/overlays/GlobalSearchPalette.tsx @@ -233,7 +233,7 @@ const GlobalSearchPalette: React.FC = ({ open, onClose }) => { > {/* Input row */} - + = ({ open, onClose }) => { placeholder="Search, or type a command…" fullWidth sx={{ - fontSize: '1.05rem', + fontSize: '1rem', fontFamily: c.font.sans, color: c.text.primary, '& input::placeholder': { color: c.text.muted, opacity: 1 }, }} /> {isStillSearching && } - + esc @@ -256,7 +256,7 @@ const GlobalSearchPalette: React.FC = ({ open, onClose }) => { {/* Results */} {results.length === 0 ? ( - + {query.trim() ? 'No matches' : 'No dashboards or chats yet'} ) : ( @@ -330,7 +330,7 @@ const GlobalSearchPalette: React.FC = ({ open, onClose }) => { gap: 1.5, alignItems: 'center', color: c.text.ghost, - fontSize: '0.7rem', + fontSize: '0.6875rem', }} > ↑↓ navigate @@ -348,7 +348,7 @@ const SectionHeader: React.FC<{ label: string; c: ReturnType = ({ icon, title, subtitle, selected, onClic = ({ icon, title, subtitle, selected, onClic {subtitle && ( = ({ sx={{ '& .MuiToggleButton-root': { textTransform: 'none', - fontSize: '0.78rem', + fontSize: '0.75rem', fontWeight: 500, px: 2, py: 0.5, diff --git a/frontend/src/app/components/overlays/PlanPickerModal.tsx b/frontend/src/app/components/overlays/PlanPickerModal.tsx index 0e1321be..0efd6fe5 100644 --- a/frontend/src/app/components/overlays/PlanPickerModal.tsx +++ b/frontend/src/app/components/overlays/PlanPickerModal.tsx @@ -49,7 +49,7 @@ const PlanPickerModal: React.FC = ({ boxShadow: '0 20px 60px rgba(0,0,0,0.4)', }}> - + {title} { return ( - + Trusted file patterns - + Files like SSH keys and shell startup files normally ask before each write, even when you've set Write to "always allow". Patterns you've chosen to always allow appear below. Remove one to start asking again. @@ -97,10 +97,10 @@ export const TrustedFilePatterns: React.FC = () => { }} > - + {PATTERN_LABELS[pat] || pat} - + {pat} diff --git a/frontend/src/app/components/share/ImportModal.tsx b/frontend/src/app/components/share/ImportModal.tsx index 46b6776b..5987457b 100644 --- a/frontend/src/app/components/share/ImportModal.tsx +++ b/frontend/src/app/components/share/ImportModal.tsx @@ -43,7 +43,7 @@ const ImportModal: React.FC = ({ preflight, open, committing, onConfirm, {preflight && ( <> - + Add {preflight.summary.root.name}? @@ -55,13 +55,13 @@ const ImportModal: React.FC = ({ preflight, open, committing, onConfirm, {preflight.review && preflight.review.findings.length > 0 && ( - + {preflight.review.findings.join(' ')} )} {preflight.conflicts.length > 0 && ( - + Some items already exist and will be added as copies. )} @@ -82,7 +82,7 @@ const ImportModal: React.FC = ({ preflight, open, committing, onConfirm, borderRadius: `${c.radius.md}px`, px: 2.5, py: 0.6, - fontSize: '0.85rem', + fontSize: '0.875rem', fontWeight: 600, boxShadow: 'none', }} diff --git a/frontend/src/app/components/share/IncludesList.tsx b/frontend/src/app/components/share/IncludesList.tsx index 7e9a8090..df5595fc 100644 --- a/frontend/src/app/components/share/IncludesList.tsx +++ b/frontend/src/app/components/share/IncludesList.tsx @@ -51,7 +51,7 @@ const IncludesList: React.FC<{ summary: BundleSummary }> = ({ summary }) => { {/* Lead: the bundle's type + a one-line count. The name is in the title. */} - + {rootLabel} {countLine && ` · ${countLine}`} @@ -60,7 +60,7 @@ const IncludesList: React.FC<{ summary: BundleSummary }> = ({ summary }) => { onClick={() => setExpanded((v) => !v)} sx={{ display: 'flex', alignItems: 'center', gap: 0.25, color: c.text.tertiary, cursor: 'pointer', '&:hover': { color: c.accent.primary } }} > - {expanded ? 'Hide' : 'Show'} + {expanded ? 'Hide' : 'Show'} )} @@ -70,10 +70,10 @@ const IncludesList: React.FC<{ summary: BundleSummary }> = ({ summary }) => { {includes.map((it, i) => ( - + {KIND_LABEL[it.type] || it.type} - + {it.name} @@ -83,7 +83,7 @@ const IncludesList: React.FC<{ summary: BundleSummary }> = ({ summary }) => { {summary.requirements.length > 0 && ( - + Needs {summary.requirements.map((r, i) => ( @@ -97,7 +97,7 @@ const IncludesList: React.FC<{ summary: BundleSummary }> = ({ summary }) => { }} > {REQ_ICON[r.kind] || } - + {r.label} diff --git a/frontend/src/app/components/share/PublishModal.tsx b/frontend/src/app/components/share/PublishModal.tsx index d575af41..07fb596c 100644 --- a/frontend/src/app/components/share/PublishModal.tsx +++ b/frontend/src/app/components/share/PublishModal.tsx @@ -153,7 +153,7 @@ const PublishModal: React.FC = ({ outputId, outputName, open, onClose }) return center( <> - Checking your app before it goes live... + Checking your app before it goes live... , ); @@ -162,7 +162,7 @@ const PublishModal: React.FC = ({ outputId, outputName, open, onClose }) return center( <> - Building and publishing your app... + Building and publishing your app... , ); @@ -170,8 +170,8 @@ const PublishModal: React.FC = ({ outputId, outputName, open, onClose }) if (phase === 'error') { return center( <> - Something went wrong - {errorMsg} + Something went wrong + {errorMsg} , ); } @@ -179,8 +179,8 @@ const PublishModal: React.FC = ({ outputId, outputName, open, onClose }) if (confirmUnpublish) { return center( <> - Take this app offline? - + Take this app offline? + The public link will stop working for anyone you've shared it with. , @@ -190,7 +190,7 @@ const PublishModal: React.FC = ({ outputId, outputName, open, onClose }) - Your app is live + Your app is live = ({ outputId, outputName, open, onClose }) border: `1px solid ${c.border.subtle}`, bgcolor: c.bg.secondary, }} > - + {liveUrl} @@ -212,7 +212,7 @@ const PublishModal: React.FC = ({ outputId, outputName, open, onClose }) return center( <> - Looks good. Ready to publish. + Looks good. Ready to publish. , ); } @@ -220,18 +220,18 @@ const PublishModal: React.FC = ({ outputId, outputName, open, onClose }) - + {findings.length} security risk{findings.length === 1 ? '' : 's'} found - + You can still publish, fix them first, or cancel. - {showDetails && ( - + {findings.map((f, i) => (
  • {f}
  • ))} @@ -302,7 +302,7 @@ const PublishModal: React.FC = ({ outputId, outputName, open, onClose }) - Publish {outputName} + Publish {outputName} diff --git a/frontend/src/app/components/share/ShareButton.tsx b/frontend/src/app/components/share/ShareButton.tsx index fb70c484..10c61d0c 100644 --- a/frontend/src/app/components/share/ShareButton.tsx +++ b/frontend/src/app/components/share/ShareButton.tsx @@ -45,7 +45,7 @@ const ShareButton: React.FC = ({ return ( <> {variant === 'menuItem' ? ( - + diff --git a/frontend/src/app/components/share/ShareModal.tsx b/frontend/src/app/components/share/ShareModal.tsx index 7a164bb3..d90f4122 100644 --- a/frontend/src/app/components/share/ShareModal.tsx +++ b/frontend/src/app/components/share/ShareModal.tsx @@ -101,16 +101,16 @@ const ShareModal: React.FC = ({ target, open, onClose }) => { {icon} - {title} + {title} {chip && ( )} - {subtitle} + {subtitle}
    ); @@ -133,7 +133,7 @@ const ShareModal: React.FC = ({ target, open, onClose }) => { }} > - + Share {target.name} @@ -156,10 +156,10 @@ const ShareModal: React.FC = ({ target, open, onClose }) => { - + This file may contain a secret - + {error} If you export it, only send the file to people you trust. @@ -168,7 +168,7 @@ const ShareModal: React.FC = ({ target, open, onClose }) => { @@ -178,7 +178,7 @@ const ShareModal: React.FC = ({ target, open, onClose }) => { onClick={() => { setError(''); handleDownload(true); }} disabled={downloading} sx={{ - textTransform: 'none', fontSize: '0.8rem', fontWeight: 600, + textTransform: 'none', fontSize: '0.8125rem', fontWeight: 600, color: c.status.error, borderColor: `${c.status.error}80`, borderRadius: '8px', '&:hover': { borderColor: c.status.error, bgcolor: `${c.status.error}0d` }, }} @@ -189,7 +189,7 @@ const ShareModal: React.FC = ({ target, open, onClose }) => { ) : ( - {error} + {error} @@ -240,7 +240,7 @@ const ShareModal: React.FC = ({ target, open, onClose }) => { borderRadius: `${c.radius.md}px`, px: 2.5, py: 0.6, - fontSize: '0.85rem', + fontSize: '0.875rem', fontWeight: 600, boxShadow: 'none', }} @@ -261,7 +261,7 @@ const ShareModal: React.FC = ({ target, open, onClose }) => { severity="success" variant="outlined" onClose={() => setToast('')} - sx={{ bgcolor: c.bg.surface, color: c.text.primary, border: `1px solid ${c.border.medium}`, fontSize: '0.82rem' }} + sx={{ bgcolor: c.bg.surface, color: c.text.primary, border: `1px solid ${c.border.medium}`, fontSize: '0.8125rem' }} > {toast} diff --git a/frontend/src/app/components/theme/AccentColorPad.tsx b/frontend/src/app/components/theme/AccentColorPad.tsx index 7a51de91..5fb36201 100644 --- a/frontend/src/app/components/theme/AccentColorPad.tsx +++ b/frontend/src/app/components/theme/AccentColorPad.tsx @@ -195,7 +195,7 @@ const AccentColorPad: React.FC<{ onClick={() => onChange(null)} style={{ marginLeft: 'auto', border: 'none', background: 'transparent', padding: 0, - color: '#8a8a86', fontSize: '0.8rem', cursor: 'pointer', fontFamily: 'inherit', textDecoration: 'underline', + color: '#8a8a86', fontSize: '0.8125rem', cursor: 'pointer', fontFamily: 'inherit', textDecoration: 'underline', }} > Reset diff --git a/frontend/src/app/pages/AgentChat/AgentChat.tsx b/frontend/src/app/pages/AgentChat/AgentChat.tsx index 22456f3f..59f3e593 100644 --- a/frontend/src/app/pages/AgentChat/AgentChat.tsx +++ b/frontend/src/app/pages/AgentChat/AgentChat.tsx @@ -179,7 +179,7 @@ const ThinkingBubble: React.FC<{ label?: string | null }> = ({ label }) => { = ({ sessionId: sessionIdProp, onClose role="button" aria-label="Dismiss" onClick={() => id && dispatch(clearMcpSuggestions({ sessionId: id }))} - sx={{ alignSelf: 'flex-start', color: c.text.muted, cursor: 'pointer', fontSize: '0.72rem', '&:hover': { color: c.text.secondary } }} + sx={{ alignSelf: 'flex-start', color: c.text.muted, cursor: 'pointer', fontSize: '0.75rem', '&:hover': { color: c.text.secondary } }} > Dismiss @@ -1954,7 +1954,7 @@ const AgentChat: React.FC = ({ sessionId: sessionIdProp, onClose }} > - + Resume Agent Response @@ -2011,7 +2011,7 @@ const AgentChat: React.FC = ({ sessionId: sessionIdProp, onClose borderRadius: 2.5, cursor: 'pointer', fontWeight: 600, - fontSize: '0.85rem', + fontSize: '0.875rem', color: c.accent.primary, border: `1.5px solid ${c.accent.primary}`, background: `${c.accent.primary}08`, @@ -2052,7 +2052,7 @@ const AgentChat: React.FC = ({ sessionId: sessionIdProp, onClose ? : } - + {queueLength} queued @@ -2156,7 +2156,7 @@ const AgentChat: React.FC = ({ sessionId: sessionIdProp, onClose }} sx={{ '& .MuiOutlinedInput-root': { - fontSize: '0.78rem', + fontSize: '0.75rem', color: c.text.primary, '& fieldset': { borderColor: c.border.medium }, '&.Mui-focused fieldset': { borderColor: c.accent.primary }, @@ -2182,7 +2182,7 @@ const AgentChat: React.FC = ({ sessionId: sessionIdProp, onClose = ({ sessionId: sessionIdProp, onClose - + Haiku may run out of room with {enabledMcpCount} apps connected - + Haiku is the fastest Claude model but holds the least at once. Each connected app adds instructions Claude has to read first. If your message fails with “Prompt is too long,” turn off a few @@ -2445,7 +2445,7 @@ function WorkflowModelNotice({ c, label }: { c: ReturnType - + This workflow will now be using {display}. @@ -2468,7 +2468,7 @@ function FreeTrialModelNotice({ c, notice }: { c: ReturnType - + {display.kind === 'spent' ? ( <>You're out of free runs, connect a model in Settings to use {display.label}. ) : ( diff --git a/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerFooter.tsx b/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerFooter.tsx index 687c734f..f43b417c 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerFooter.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerFooter.tsx @@ -20,7 +20,7 @@ export const ModelPickerFooter: React.FC = ({ c, pickerSummary, tooltipSl bgcolor: c.bg.surface, borderTop: `1px solid ${c.border.subtle}`, px: 1.25, py: 0.5, - fontSize: '0.65rem', color: c.text.ghost, + fontSize: '0.625rem', color: c.text.ghost, display: 'flex', justifyContent: 'space-between', gap: 1, }} @@ -38,9 +38,9 @@ export const ModelPickerFooter: React.FC = ({ c, pickerSummary, tooltipSl ['1M+ context', pickerSummary.longContext], ] as Array<[string, number]>).filter(([, n]) => n > 0); const breakdownTooltip = breakdown.length > 0 ? ( - + = ({ placeholder="Search models…" fullWidth sx={{ - fontSize: '0.85rem', + fontSize: '0.875rem', color: c.text.primary, '& input': { padding: 0 }, '& input::placeholder': { color: c.text.ghost, opacity: 1 }, @@ -138,7 +138,7 @@ export const ModelPickerHeader: React.FC = ({ cursor: 'pointer', userSelect: 'none', px: 0.85, height: 20, display: 'inline-flex', alignItems: 'center', - fontSize: '0.66rem', fontWeight: 600, + fontSize: '0.6875rem', fontWeight: 600, letterSpacing: '0.04em', borderRadius: '4px', border: `1px solid ${active ? c.accent.primary : c.border.subtle}`, @@ -161,7 +161,7 @@ export const ModelPickerHeader: React.FC = ({ }} sx={{ cursor: 'pointer', userSelect: 'none', - fontSize: '0.66rem', fontWeight: 500, + fontSize: '0.6875rem', fontWeight: 500, color: c.text.ghost, ml: 0.5, px: 0.5, '&:hover': { color: c.text.muted }, @@ -186,7 +186,7 @@ export const ModelPickerHeader: React.FC = ({ height: 22, }}> @@ -220,7 +220,7 @@ export const ModelPickerHeader: React.FC = ({ }} /> 0 ? c.accent.primary : c.text.ghost, fontVariantNumeric: 'tabular-nums', textAlign: 'right', diff --git a/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerList.tsx b/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerList.tsx index 1fd980f2..3d0dd8b1 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerList.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerList.tsx @@ -59,14 +59,14 @@ export const ModelPickerList: React.FC = ({ {modelSearch.trim() ? ( - <>No models match "{modelSearch.trim()}".{anyFilterActive && (<>
    Try clearing the filters above.)} + <>No models match "{modelSearch.trim()}".{anyFilterActive && (<>
    Try clearing the filters above.)} ) : ( <>No models match the current filters. )} @@ -136,7 +136,7 @@ export const ModelPickerList: React.FC = ({ flexShrink: 0, }} /> = ({ }}> {prov} - + {ms.length}
    @@ -200,7 +200,7 @@ export const ModelPickerList: React.FC = ({ > {(() => { const win = (opt.context_window as number) || 0; @@ -217,11 +217,11 @@ export const ModelPickerList: React.FC = ({ return ( {(cannotPdf || cannotImg) && ( - + No {cannotPdf ? 'PDF' : 'image'} )} - + {formatTokenCount(win)} diff --git a/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerMenu.tsx b/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerMenu.tsx index 1ab62e19..7cd5a93c 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerMenu.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerMenu.tsx @@ -110,7 +110,7 @@ export const ModelPickerMenu: React.FC = (props) => { bgcolor: 'rgba(239, 68, 68, 0.08)', border: '1px solid rgba(239, 68, 68, 0.18)', color: '#ef4444', - fontSize: '0.7rem', + fontSize: '0.6875rem', flexShrink: 0, overflow: 'hidden', }} diff --git a/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerRecents.tsx b/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerRecents.tsx index 74401ec8..fdb7bddd 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerRecents.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/model-picker/ModelPickerRecents.tsx @@ -51,10 +51,10 @@ export const ModelPickerRecents: React.FC = ({ }} /> - + Recent - + {recentMaterialised.length} @@ -78,7 +78,7 @@ export const ModelPickerRecents: React.FC = ({ > diff --git a/frontend/src/app/pages/AgentChat/ChatInput/model-picker/modelTooltip.tsx b/frontend/src/app/pages/AgentChat/ChatInput/model-picker/modelTooltip.tsx index 7a93f111..2ea496ec 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/model-picker/modelTooltip.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/model-picker/modelTooltip.tsx @@ -53,9 +53,9 @@ export function useModelTooltip(c: ClaudeTokens) { (opt.context_window ?? 0) >= 1_000_000 && '1M+ context', ].filter(Boolean).join(' · '); return ( - + = (p) => { maxHeight: 400, boxShadow: c.shadow.lg, '& .MuiMenuItem-root': { - fontSize: '0.8rem', + fontSize: '0.8125rem', color: c.text.secondary, py: 0.75, px: 1.5, diff --git a/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ComposerPlusMenu.tsx b/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ComposerPlusMenu.tsx index 59eb304d..5e013f04 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ComposerPlusMenu.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ComposerPlusMenu.tsx @@ -83,7 +83,7 @@ export const ComposerPlusMenu: React.FC<{ c: ClaudeTokens; items: PlusMenuItem[] }} > {it.icon} - {it.label} + {it.label} {it.toggle && it.active && } ))} @@ -128,7 +128,7 @@ export const ActiveTogglePills: React.FC<{ c: ClaudeTokens; items: PlusMenuItem[ > {it.icon} - + {it.label} diff --git a/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ModeControl.tsx b/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ModeControl.tsx index 0f4e8adb..274d70f2 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ModeControl.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ModeControl.tsx @@ -52,7 +52,7 @@ export const ModeControl: React.FC = ({ }} > {modeConf.icon} - + {modeConf.label} @@ -84,7 +84,7 @@ export const ModeControl: React.FC = ({ ); @@ -108,7 +108,7 @@ export const ModeControl: React.FC = ({ transition: 'background 0.15s', }} > - + {(() => { const m = allModelFlat.find((m) => m.value === model); return m ? m.label : model; })()} diff --git a/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ModelControl.tsx b/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ModelControl.tsx index b1e1201b..72806795 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ModelControl.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ModelControl.tsx @@ -35,7 +35,7 @@ export const ModelControl: React.FC = ({ c, setModelAnchor, allModelFlat, transition: 'background 0.15s', }} > - + {(() => { const m = allModelFlat.find((m) => m.value === model); return m ? m.label : model; })()} diff --git a/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ThinkingLevelControl.tsx b/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ThinkingLevelControl.tsx index 0a7ae6e0..b717260a 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ThinkingLevelControl.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/toolbar/ThinkingLevelControl.tsx @@ -46,7 +46,7 @@ export const ThinkingLevelControl: React.FC = ({ }} > - + {current.label} @@ -62,7 +62,7 @@ export const ThinkingLevelControl: React.FC = ({ MenuListProps={{ autoFocusItem: true }} > - + Thinking Level @@ -72,7 +72,7 @@ export const ThinkingLevelControl: React.FC = ({ if (!isGemini3 || thinkingLevel === 'off') return null; return ( - + Web search breaks on Gemini 3 preview while thinking is on. Set to Off if you need search. @@ -86,10 +86,10 @@ export const ThinkingLevelControl: React.FC = ({ sx={{ py: 0.6 }} > - + {lvl.label} - + {lvl.desc} diff --git a/frontend/src/app/pages/AgentChat/ChatInput/view/AttachmentChips.tsx b/frontend/src/app/pages/AgentChat/ChatInput/view/AttachmentChips.tsx index f0aae287..bc209fc8 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/view/AttachmentChips.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/view/AttachmentChips.tsx @@ -119,7 +119,7 @@ export const AttachmentChips: React.FC = ({ tooltip: { sx: { fontFamily: c.font.mono, - fontSize: '0.7rem', + fontSize: '0.6875rem', maxWidth: 280, wordBreak: 'break-all', }, @@ -154,7 +154,7 @@ export const AttachmentChips: React.FC = ({ sx={{ bgcolor: `${chipColor}12`, color: chipColor, - fontSize: '0.72rem', + fontSize: '0.75rem', fontFamily: c.font.mono, height: 26, maxWidth: 280, @@ -187,7 +187,7 @@ export const AttachmentChips: React.FC = ({ sx={{ bgcolor: `${c.status.info}15`, color: c.status.info, - fontSize: '0.72rem', + fontSize: '0.75rem', fontFamily: c.font.mono, height: 26, maxWidth: 220, @@ -224,7 +224,7 @@ export const AttachmentChips: React.FC = ({ tooltip: { sx: { fontFamily: c.font.mono, - fontSize: '0.7rem', + fontSize: '0.6875rem', maxWidth: 420, wordBreak: 'break-all', }, @@ -239,7 +239,7 @@ export const AttachmentChips: React.FC = ({ sx={{ bgcolor: 'rgba(59, 130, 246, 0.1)', color: '#3b82f6', - fontSize: '0.72rem', + fontSize: '0.75rem', fontFamily: c.font.mono, height: 26, maxWidth: 220, diff --git a/frontend/src/app/pages/AgentChat/ChatInput/view/ChatInputOverlays.tsx b/frontend/src/app/pages/AgentChat/ChatInput/view/ChatInputOverlays.tsx index 8d0a7898..9982152d 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/view/ChatInputOverlays.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/view/ChatInputOverlays.tsx @@ -71,7 +71,7 @@ const OversizePopup: React.FC = ({ flexShrink: 0, }} /> {label} @@ -104,7 +104,7 @@ const ErrorToast: React.FC<{ c: ClaudeTokens; message: string | null; onClose: ( }} > {display} diff --git a/frontend/src/app/pages/AgentChat/ChatInput/view/ChatInputView.tsx b/frontend/src/app/pages/AgentChat/ChatInput/view/ChatInputView.tsx index fb9292ed..76048505 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/view/ChatInputView.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/view/ChatInputView.tsx @@ -145,7 +145,7 @@ export const ChatInputView: React.FC = (p) => { }} > - + Drop files here @@ -166,7 +166,7 @@ export const ChatInputView: React.FC = (p) => { }} > - + Attaching files… @@ -198,7 +198,7 @@ export const ChatInputView: React.FC = (p) => { }} > - + Run attached · {p.runContext.title} = ({ border: 'none', outline: 'none', color: c.text.primary, - fontSize: '0.95rem', + fontSize: '1rem', lineHeight: '1.55', fontFamily: 'inherit', wordBreak: 'break-word', @@ -71,7 +71,7 @@ export const EditorSurface: React.FC = ({ right: 0, padding: `${hasAttachments ? 4 : 10}px 12px`, color: c.text.tertiary, - fontSize: '0.95rem', + fontSize: '1rem', lineHeight: '1.5', fontFamily: 'inherit', pointerEvents: 'none', @@ -88,7 +88,7 @@ export const EditorSurface: React.FC = ({ = ({ pasteId, onClose, onSave } {original === undefined || pasteId === null ? ( - + This pasted text is no longer available. Re-paste to restore it. ) : ( diff --git a/frontend/src/app/pages/AgentChat/ChatInput/view/SendBlockBanner.tsx b/frontend/src/app/pages/AgentChat/ChatInput/view/SendBlockBanner.tsx index c0bc27a9..43a418c6 100644 --- a/frontend/src/app/pages/AgentChat/ChatInput/view/SendBlockBanner.tsx +++ b/frontend/src/app/pages/AgentChat/ChatInput/view/SendBlockBanner.tsx @@ -19,7 +19,7 @@ export const SendBlockBanner: React.FC = ({ sendBlock, c }) => { bgcolor: c.bg.surface, border: `1px solid ${c.border.medium}`, }}> - + That message is too long to send. Try shortening it or splitting it into a few smaller ones. diff --git a/frontend/src/app/pages/AgentChat/ForceStopAgentBar.tsx b/frontend/src/app/pages/AgentChat/ForceStopAgentBar.tsx index 6ce78863..927d2796 100644 --- a/frontend/src/app/pages/AgentChat/ForceStopAgentBar.tsx +++ b/frontend/src/app/pages/AgentChat/ForceStopAgentBar.tsx @@ -28,7 +28,7 @@ export default function ForceStopAgentBar({ onStop, onSaveWorkflow, onContinueEd sx={{ display: 'flex', alignItems: 'center', justifyContent: 'center', gap: 0.6, width: '100%', py: 0.9, borderRadius: 999, cursor: 'pointer', - fontSize: '0.85rem', fontWeight: 700, + fontSize: '0.875rem', fontWeight: 700, color: c.status.error, bgcolor: c.status.error + '14', border: `1px solid ${c.status.error}55`, '&:hover': { bgcolor: c.status.error + '22' }, }}> @@ -42,7 +42,7 @@ export default function ForceStopAgentBar({ onStop, onSaveWorkflow, onContinueEd const tone = testState === 'complete' ? c.status.success : c.status.error; return ( - + {testState === 'complete' ? 'Test finished' : 'Test stopped'} @@ -52,7 +52,7 @@ export default function ForceStopAgentBar({ onStop, onSaveWorkflow, onContinueEd onClick={onContinueEditing} sx={{ flex: 1, textAlign: 'center', py: 0.8, borderRadius: 999, cursor: 'pointer', - fontSize: '0.82rem', fontWeight: 600, color: c.text.secondary, + fontSize: '0.8125rem', fontWeight: 600, color: c.text.secondary, border: `1px solid ${c.border.medium}`, '&:hover': { bgcolor: c.bg.elevated, color: c.text.primary }, }}> @@ -63,7 +63,7 @@ export default function ForceStopAgentBar({ onStop, onSaveWorkflow, onContinueEd onClick={onSaveWorkflow} sx={{ flex: 1, textAlign: 'center', py: 0.8, borderRadius: 999, cursor: 'pointer', - fontSize: '0.82rem', fontWeight: 700, color: '#fff', bgcolor: c.accent.primary, + fontSize: '0.8125rem', fontWeight: 700, color: '#fff', bgcolor: c.accent.primary, '&:hover': { filter: 'brightness(1.05)' }, }}> Save workflow diff --git a/frontend/src/app/pages/AgentChat/WelcomeQuickReplies.tsx b/frontend/src/app/pages/AgentChat/WelcomeQuickReplies.tsx index 69138c4f..ce01992f 100644 --- a/frontend/src/app/pages/AgentChat/WelcomeQuickReplies.tsx +++ b/frontend/src/app/pages/AgentChat/WelcomeQuickReplies.tsx @@ -22,7 +22,7 @@ const AnchorButton: React.FC<{ c: ClaudeTokens; onPick: (p: string) => void; del display: 'flex', alignItems: 'center', gap: 8, textAlign: 'left', width: '100%', padding: '10px 14px', borderRadius: 11, border: `1px solid ${c.border.medium}`, background: c.bg.surface, - color: c.text.secondary, fontSize: '0.88rem', fontWeight: 500, + color: c.text.secondary, fontSize: '0.875rem', fontWeight: 500, cursor: 'pointer', fontFamily: 'inherit', }} > @@ -61,7 +61,7 @@ const WelcomeQuickReplies: React.FC<{ {!showCategories && expanded === null ? ( - + made for you, or just type below @@ -76,7 +76,7 @@ const WelcomeQuickReplies: React.FC<{ display: 'flex', alignItems: 'center', gap: 8, textAlign: 'left', padding: '10px 14px', borderRadius: 11, border: `1px solid ${c.border.medium}`, background: c.bg.surface, - color: c.text.secondary, fontSize: '0.88rem', fontWeight: 500, + color: c.text.secondary, fontSize: '0.875rem', fontWeight: 500, cursor: 'pointer', fontFamily: 'inherit', }} > @@ -85,7 +85,7 @@ const WelcomeQuickReplies: React.FC<{ ))} - + worth putting on a schedule @@ -95,7 +95,7 @@ const WelcomeQuickReplies: React.FC<{ sx={{ alignSelf: 'flex-start', mt: 0.9, px: 0.6, py: 0.3, border: 'none', background: 'transparent', - color: c.text.ghost, fontSize: '0.82rem', + color: c.text.ghost, fontSize: '0.8125rem', cursor: 'pointer', fontFamily: 'inherit', '&:hover': { color: c.text.secondary }, }} @@ -113,7 +113,7 @@ const WelcomeQuickReplies: React.FC<{ display: 'inline-flex', alignItems: 'center', gap: 0.5, alignSelf: 'flex-start', mb: 0.9, px: 0.6, py: 0.3, border: 'none', background: 'transparent', - color: c.text.ghost, fontSize: '0.85rem', + color: c.text.ghost, fontSize: '0.875rem', cursor: 'pointer', fontFamily: 'inherit', '&:hover': { color: c.text.secondary }, }} @@ -121,7 +121,7 @@ const WelcomeQuickReplies: React.FC<{ your starters )} - + pick one, or just type below @@ -139,7 +139,7 @@ const WelcomeQuickReplies: React.FC<{ border: `1px solid ${c.border.medium}`, background: c.bg.surface, color: c.text.secondary, - fontSize: '0.9rem', fontWeight: 500, + fontSize: '0.875rem', fontWeight: 500, cursor: 'pointer', fontFamily: 'inherit', }} > @@ -170,7 +170,7 @@ const WelcomeQuickReplies: React.FC<{ display: 'inline-flex', alignItems: 'center', gap: 0.5, alignSelf: 'flex-start', mb: 0.9, px: 0.6, py: 0.3, border: 'none', background: 'transparent', - color: c.text.ghost, fontSize: '0.85rem', + color: c.text.ghost, fontSize: '0.875rem', cursor: 'pointer', fontFamily: 'inherit', '&:hover': { color: c.text.secondary }, }} @@ -179,7 +179,7 @@ const WelcomeQuickReplies: React.FC<{ {isSchedule ? ( <> - + one click puts it on a schedule @@ -200,7 +200,7 @@ const WelcomeQuickReplies: React.FC<{ border: `1px solid ${c.border.medium}`, background: c.bg.surface, color: c.text.secondary, - fontSize: '0.88rem', + fontSize: '0.875rem', cursor: 'pointer', fontFamily: 'inherit', }} > diff --git a/frontend/src/app/pages/AgentChat/bubbles/CompactionMarker.tsx b/frontend/src/app/pages/AgentChat/bubbles/CompactionMarker.tsx index d5907e05..ff23bdf8 100644 --- a/frontend/src/app/pages/AgentChat/bubbles/CompactionMarker.tsx +++ b/frontend/src/app/pages/AgentChat/bubbles/CompactionMarker.tsx @@ -28,7 +28,7 @@ const CompactionMarker: React.FC<{ collapsedCount: number }> = ({ collapsedCount }} > - + {label} diff --git a/frontend/src/app/pages/AgentChat/bubbles/MessageBubble.tsx b/frontend/src/app/pages/AgentChat/bubbles/MessageBubble.tsx index e36ea81e..5102c6b3 100644 --- a/frontend/src/app/pages/AgentChat/bubbles/MessageBubble.tsx +++ b/frontend/src/app/pages/AgentChat/bubbles/MessageBubble.tsx @@ -415,7 +415,7 @@ const AttachedContextSection: React.FC<{ {g.icon} ))} - + {groups.map((g) => g.label).join(' · ')} {groups.map((g) => ( - + {g.label} {g.chips.map((chip, i) => ( + {input != null && output != null ? ( <> @@ -689,7 +689,7 @@ const ThinkingBubble: React.FC<{ )} {input != null && output != null && ( - + Input shown is your message, history, and tool outputs. The fixed framework preamble (system prompt, tool defs, MCP descriptions) is excluded, since it's constant overhead from the agent runtime, @@ -729,7 +729,7 @@ const ThinkingBubble: React.FC<{ gap: 0.75, cursor: 'pointer', color: c.text.tertiary, - fontSize: '0.78rem', + fontSize: '0.75rem', py: 0.5, px: 1, ml: -1, @@ -742,7 +742,7 @@ const ThinkingBubble: React.FC<{ = React.memo(({ message, editing = false, o } return ( - + {sysText} @@ -1137,7 +1137,7 @@ const MessageBubble: React.FC = React.memo(({ message, editing = false, o borderRadius: 1.5, p: 1.5, overflow: 'auto', - fontSize: '0.8rem', + fontSize: '0.8125rem', fontFamily: c.font.mono, border: `1px solid ${c.border.subtle}`, '&::-webkit-scrollbar': { height: 5, width: 5 }, @@ -1155,7 +1155,7 @@ const MessageBubble: React.FC = React.memo(({ message, editing = false, o px: 0.5, py: 0.25, borderRadius: 0.5, - fontSize: '0.8rem', + fontSize: '0.8125rem', fontFamily: c.font.mono, }, '& pre code': { bgcolor: 'transparent', p: 0 }, @@ -1163,7 +1163,7 @@ const MessageBubble: React.FC = React.memo(({ message, editing = false, o width: '100%', borderCollapse: 'collapse', my: 1.5, - fontSize: '0.82rem', + fontSize: '0.8125rem', border: `1px solid ${c.border.subtle}`, borderRadius: 1, overflow: 'hidden', @@ -1212,11 +1212,11 @@ const MessageBubble: React.FC = React.memo(({ message, editing = false, o > - + {openswarmError.title} - + {openswarmError.detail} {openswarmError.ctaLabel && ( @@ -1240,7 +1240,7 @@ const MessageBubble: React.FC = React.memo(({ message, editing = false, o }} sx={{ textTransform: 'none', - fontSize: '0.78rem', + fontSize: '0.75rem', borderColor: c.border.medium, color: c.text.primary, borderRadius: `${c.radius.md}px`, diff --git a/frontend/src/app/pages/AgentChat/bubbles/MessageEditSurface.tsx b/frontend/src/app/pages/AgentChat/bubbles/MessageEditSurface.tsx index 542206e9..82412b84 100644 --- a/frontend/src/app/pages/AgentChat/bubbles/MessageEditSurface.tsx +++ b/frontend/src/app/pages/AgentChat/bubbles/MessageEditSurface.tsx @@ -69,7 +69,7 @@ const MessageEditSurface: React.FC = ({ userMessage, elementSuffix, eleme {elementLabels.length > 0 && ( {elementLabels.map((label, i) => ( - + {label} ))} diff --git a/frontend/src/app/pages/AgentChat/bubbles/renderUserTextWithPills.tsx b/frontend/src/app/pages/AgentChat/bubbles/renderUserTextWithPills.tsx index f5308489..7df53c70 100644 --- a/frontend/src/app/pages/AgentChat/bubbles/renderUserTextWithPills.tsx +++ b/frontend/src/app/pages/AgentChat/bubbles/renderUserTextWithPills.tsx @@ -25,7 +25,7 @@ export function renderUserTextWithPills(text: string, c: ReturnType; hideHeader?: bo px: 1.5, py: 0.85, borderBottom: `1px solid ${TC_BORDER}`, }}> - + {single.summary || '(no title)'} )} {start && ( - - Start + + Start {formatTimestamp(start)} )} {end && ( - - End + + End {formatTimestamp(end)} )} {single.location && ( - - Where + + Where {single.location} )} @@ -54,7 +54,7 @@ export const CalendarCard: React.FC<{ data: Record; hideHeader?: bo
                     {single.description.slice(0, 300)}
    @@ -78,16 +78,16 @@ export const CalendarCard: React.FC<{ data: Record; hideHeader?: bo
                 transition: 'background-color 0.15s',
                 '&:hover': { bgcolor: TC_HOVER },
               }}>
    -            
    +            
                   {item.summary || '(no title)'}
                 
    -            
    +            
                   {formatTimestamp(item.start?.dateTime || item.start?.date || item.start)}
                 
               
             ))}
             {items.length > 6 && (
    -          
    +          
                 +{items.length - 6} more
               
             )}
    diff --git a/frontend/src/app/pages/AgentChat/mcp-cards/DriveCard.tsx b/frontend/src/app/pages/AgentChat/mcp-cards/DriveCard.tsx
    index 8c408ff2..64c635e6 100644
    --- a/frontend/src/app/pages/AgentChat/mcp-cards/DriveCard.tsx
    +++ b/frontend/src/app/pages/AgentChat/mcp-cards/DriveCard.tsx
    @@ -18,11 +18,11 @@ export const DriveCard: React.FC<{ data: Record }> = ({ data }) =>
           }}>
             
             
    -          
    +          
                 {single.name}
               
               {single.mimeType && (
    -            {single.mimeType}
    +            {single.mimeType}
               )}
             
           
    @@ -40,9 +40,9 @@ export const DriveCard: React.FC<{ data: Record }> = ({ data }) =>
                 '&:hover': { bgcolor: TC_HOVER },
               }}>
                 
    -            {f.name || f.id}
    +            {f.name || f.id}
                 {f.mimeType && (
    -              
    +              
                     {f.mimeType.split('/').pop()}
                   
                 )}
    diff --git a/frontend/src/app/pages/AgentChat/mcp-cards/GenericMcpCard.tsx b/frontend/src/app/pages/AgentChat/mcp-cards/GenericMcpCard.tsx
    index 498e23f7..901ac7e2 100644
    --- a/frontend/src/app/pages/AgentChat/mcp-cards/GenericMcpCard.tsx
    +++ b/frontend/src/app/pages/AgentChat/mcp-cards/GenericMcpCard.tsx
    @@ -9,7 +9,7 @@ export const GenericMcpCard: React.FC<{ data: Record }> = ({ data }
       const entries = Object.entries(data).filter(([, v]) => v != null);
     
       if (entries.length === 0)
    -    return (empty response);
    +    return (empty response);
     
       return (
         
    @@ -17,21 +17,21 @@ export const GenericMcpCard: React.FC<{ data: Record }> = ({ data }
             const isLong = typeof val === 'string' && val.length > 100;
             const isObj = typeof val === 'object';
             return (
    -          
    -            
    +          
    +            
                   {key}
                 
                 {isObj ? (
                   
                     {JSON.stringify(val, null, 2).slice(0, 500)}
                   
    ) : isLong ? (
                     {String(val).slice(0, 500)}{String(val).length > 500 ? '…' : ''}
                   
    @@ -42,7 +42,7 @@ export const GenericMcpCard: React.FC<{ data: Record }> = ({ data } ); })} {entries.length > 20 && ( - + +{entries.length - 20} more fields )} diff --git a/frontend/src/app/pages/AgentChat/mcp-cards/GmailCard.tsx b/frontend/src/app/pages/AgentChat/mcp-cards/GmailCard.tsx index dd85d653..2600a9f9 100644 --- a/frontend/src/app/pages/AgentChat/mcp-cards/GmailCard.tsx +++ b/frontend/src/app/pages/AgentChat/mcp-cards/GmailCard.tsx @@ -33,22 +33,22 @@ export const GmailCard: React.FC<{ data: Record; action: string; hi '&:hover': { bgcolor: TC_HOVER }, }}> - + {m.subject} {m.date && ( - + {m.date} )} {m.from && ( - + {m.from} )} {(m.snippet || m.bodyPreview) && ( - + {(m.snippet || m.bodyPreview).slice(0, 120)} {(m.snippet || m.bodyPreview).length > 120 ? '…' : ''} @@ -57,7 +57,7 @@ export const GmailCard: React.FC<{ data: Record; action: string; hi ); })} {messages.length > 5 && ( - + +{messages.length - 5} more )} @@ -82,7 +82,7 @@ export const GmailCard: React.FC<{ data: Record; action: string; hi ) : ( )} - + {email.subject}
    @@ -92,20 +92,20 @@ export const GmailCard: React.FC<{ data: Record; action: string; hi {(email.from || email.to || email.date) && ( {email.from && ( - - From + + From {email.from} )} {email.to && ( - - To + + To {email.to} )} {email.date && ( - - Date + + Date {email.date} )} @@ -120,7 +120,7 @@ export const GmailCard: React.FC<{ data: Record; action: string; hi bgcolor: `${TC_ACCENT}18`, borderRadius: 0.75, px: 0.6, py: 0.1, }}> - {l} + {l} ))} @@ -131,7 +131,7 @@ export const GmailCard: React.FC<{ data: Record; action: string; hi mt: 0.25, pt: 0.5, borderTop: `1px solid ${TC_BORDER}`, color: TC_BODY, fontFamily: c.font.sans, - fontSize: '0.7rem', + fontSize: '0.6875rem', lineHeight: 1.6, overflowWrap: 'anywhere', wordBreak: 'break-word', @@ -140,8 +140,8 @@ export const GmailCard: React.FC<{ data: Record; action: string; hi color: TC_HEADING, fontFamily: c.font.sans, mt: 1, mb: 0.5, '&:first-of-type': { mt: 0 }, }, - '& h1': { fontSize: '0.82rem' }, '& h2': { fontSize: '0.78rem' }, - '& h3': { fontSize: '0.74rem' }, '& h4, & h5, & h6': { fontSize: '0.7rem' }, + '& h1': { fontSize: '0.8125rem' }, '& h2': { fontSize: '0.75rem' }, + '& h3': { fontSize: '0.75rem' }, '& h4, & h5, & h6': { fontSize: '0.6875rem' }, '& strong': { color: TC_HEADING, fontWeight: 600 }, '& em': { fontStyle: 'italic' }, '& a': { color: TC_ACCENT, textDecoration: 'none', '&:hover': { textDecoration: 'underline' } }, @@ -154,11 +154,11 @@ export const GmailCard: React.FC<{ data: Record; action: string; hi }, '& code': { bgcolor: `${TC_BORDER}`, px: 0.4, py: 0.15, - borderRadius: 0.5, fontSize: '0.65rem', fontFamily: c.font.mono, + borderRadius: 0.5, fontSize: '0.625rem', fontFamily: c.font.mono, }, '& pre': { bgcolor: `${TC_BORDER}`, borderRadius: 1, p: 1, - overflow: 'auto', fontSize: '0.65rem', fontFamily: c.font.mono, + overflow: 'auto', fontSize: '0.625rem', fontFamily: c.font.mono, m: 0, mb: 0.75, }, '& pre code': { bgcolor: 'transparent', p: 0 }, @@ -183,7 +183,7 @@ export const GmailCard: React.FC<{ data: Record; action: string; hi px: 0.6, py: 0.1, }}> - + {a.filename || a.name || 'attachment'} diff --git a/frontend/src/app/pages/AgentChat/mcp-cards/McpResultCard.tsx b/frontend/src/app/pages/AgentChat/mcp-cards/McpResultCard.tsx index ca2af76f..9e36c3ed 100644 --- a/frontend/src/app/pages/AgentChat/mcp-cards/McpResultCard.tsx +++ b/frontend/src/app/pages/AgentChat/mcp-cards/McpResultCard.tsx @@ -18,7 +18,7 @@ export const McpResultCard: React.FC<{ parsed: ParsedMcpResult; compact?: boolea if (data.error || data.is_error) { return ( - + {data.error || data.message || JSON.stringify(data, null, 2)} @@ -40,7 +40,7 @@ export const McpResultCard: React.FC<{ parsed: ParsedMcpResult; compact?: boolea = ({ startTime }) => /> = ({ request, tokens: c }) => { return ( {tool_input.description && ( - + {tool_input.description} )} @@ -242,8 +242,8 @@ const ToolPreview: React.FC = ({ request, tokens: c }) => { case 'Read': return ( - - + + {tool_input.file_path || tool_input.path || JSON.stringify(tool_input)} @@ -256,8 +256,8 @@ const ToolPreview: React.FC = ({ request, tokens: c }) => { return ( - - + + {path} @@ -417,7 +417,7 @@ export const QuestionForm: React.FC = ({ request, onApprove, - + Agent has a question @@ -430,11 +430,11 @@ export const QuestionForm: React.FC = ({ request, onApprove, return ( {q.header && ( - + {q.header} )} - + {q.question || q.prompt || q.text || '(question)'} {hasOptions ? ( @@ -450,7 +450,7 @@ export const QuestionForm: React.FC = ({ request, onApprove, size="small" onClick={() => toggleOption(i, key, multi)} sx={{ - fontSize: '0.78rem', + fontSize: '0.75rem', fontWeight: selected ? 600 : 400, cursor: 'pointer', color: selected ? c.accent.primary : c.text.secondary, @@ -472,7 +472,7 @@ export const QuestionForm: React.FC = ({ request, onApprove, size="small" onClick={() => toggleOther(i, multi)} sx={{ - fontSize: '0.78rem', + fontSize: '0.75rem', fontWeight: isOtherActive ? 600 : 400, fontStyle: 'italic', cursor: 'pointer', @@ -501,7 +501,7 @@ export const QuestionForm: React.FC = ({ request, onApprove, mt: 0.25, '& .MuiOutlinedInput-root': { color: c.text.primary, - fontSize: '0.82rem', + fontSize: '0.8125rem', '& fieldset': { borderColor: c.border.medium }, '&:hover fieldset': { borderColor: c.border.strong }, '&.Mui-focused fieldset': { borderColor: c.accent.primary }, @@ -522,7 +522,7 @@ export const QuestionForm: React.FC = ({ request, onApprove, sx={{ '& .MuiOutlinedInput-root': { color: c.text.primary, - fontSize: '0.82rem', + fontSize: '0.8125rem', '& fieldset': { borderColor: c.border.medium }, '&:hover fieldset': { borderColor: c.border.strong }, '&.Mui-focused fieldset': { borderColor: c.accent.primary }, @@ -544,7 +544,7 @@ export const QuestionForm: React.FC = ({ request, onApprove, bgcolor: c.accent.primary, '&:hover': { bgcolor: c.accent.hover || c.accent.primary, filter: 'brightness(0.9)' }, fontWeight: 600, - fontSize: '0.8rem', + fontSize: '0.8125rem', }} > Submit @@ -557,7 +557,7 @@ export const QuestionForm: React.FC = ({ request, onApprove, color: c.text.secondary, '&:hover': { borderColor: c.text.secondary, bgcolor: `${c.text.secondary}08` }, fontWeight: 600, - fontSize: '0.8rem', + fontSize: '0.8125rem', }} > Dismiss @@ -600,7 +600,7 @@ const GenericApprovalBar: React.FC = ({ request, onApprove, onDeny }) => {getToolIcon(request.tool_name)} - + {isSensitive ? 'Sensitive file' : 'Permission Required'} = ({ request, onApprove, onDeny }) => size="small" sx={{ height: 20, - fontSize: '0.7rem', + fontSize: '0.6875rem', fontWeight: 600, fontFamily: c.font.mono, bgcolor: 'rgba(128,92,31,0.15)', @@ -633,11 +633,11 @@ const GenericApprovalBar: React.FC = ({ request, onApprove, onDeny }) => > - + This file is sensitive: {request.sensitive_label} {request.sensitive_why && ( - + {request.sensitive_why} OpenSwarm asks every time because a bad change here is hard to undo. Approve only if you asked for this. )} @@ -655,7 +655,7 @@ const GenericApprovalBar: React.FC = ({ request, onApprove, onDeny }) => mb: 1, ml: 0, alignItems: 'flex-start', - '& .MuiFormControlLabel-label': { fontSize: '0.78rem', color: c.text.secondary, lineHeight: 1.35, pt: 0.5 }, + '& .MuiFormControlLabel-label': { fontSize: '0.75rem', color: c.text.secondary, lineHeight: 1.35, pt: 0.5 }, }} control={ = ({ request, onApprove, onDeny }) => variant="contained" startIcon={} onClick={() => onApprove(request.id, undefined, isSensitive && trustPattern)} - sx={{ bgcolor: c.status.success, '&:hover': { bgcolor: '#1e4d15' }, fontWeight: 600, fontSize: '0.8rem' }} + sx={{ bgcolor: c.status.success, '&:hover': { bgcolor: '#1e4d15' }, fontWeight: 600, fontSize: '0.8125rem' }} > Approve @@ -687,7 +687,7 @@ const GenericApprovalBar: React.FC = ({ request, onApprove, onDeny }) => variant="outlined" startIcon={} onClick={() => onApprove(request.id, undefined, false, true)} - sx={{ borderColor: c.status.success, color: c.status.success, '&:hover': { borderColor: '#1e4d15', bgcolor: 'rgba(45,122,31,0.06)' }, fontWeight: 600, fontSize: '0.8rem' }} + sx={{ borderColor: c.status.success, color: c.status.success, '&:hover': { borderColor: '#1e4d15', bgcolor: 'rgba(45,122,31,0.06)' }, fontWeight: 600, fontSize: '0.8125rem' }} > Always approve @@ -696,7 +696,7 @@ const GenericApprovalBar: React.FC = ({ request, onApprove, onDeny }) => variant="outlined" startIcon={} onClick={() => onDeny(request.id)} - sx={{ borderColor: c.status.error, color: c.status.error, '&:hover': { borderColor: '#8f2828', bgcolor: 'rgba(181,51,51,0.04)' }, fontWeight: 600, fontSize: '0.8rem' }} + sx={{ borderColor: c.status.error, color: c.status.error, '&:hover': { borderColor: '#8f2828', bgcolor: 'rgba(181,51,51,0.04)' }, fontWeight: 600, fontSize: '0.8125rem' }} > Deny @@ -736,7 +736,7 @@ const GenericApprovalBar: React.FC = ({ request, onApprove, onDeny }) => - + {displayName} = ({ request, onApprove, onDeny }) => size="small" sx={{ height: 18, - fontSize: '0.65rem', + fontSize: '0.625rem', fontWeight: 500, bgcolor: `${accentColor}12`, color: accentColor, @@ -757,7 +757,7 @@ const GenericApprovalBar: React.FC = ({ request, onApprove, onDeny }) => = ({ request, onApprove, onDeny }) => = ({ request, onApprove, onDeny }) => bgcolor: c.status.success, '&:hover': { bgcolor: '#1e4d15' }, fontWeight: 600, - fontSize: '0.8rem', + fontSize: '0.8125rem', textTransform: 'none', borderRadius: 1.5, px: 2, @@ -836,7 +836,7 @@ const GenericApprovalBar: React.FC = ({ request, onApprove, onDeny }) => color: c.status.success, '&:hover': { borderColor: '#1e4d15', bgcolor: 'rgba(45,122,31,0.06)' }, fontWeight: 600, - fontSize: '0.8rem', + fontSize: '0.8125rem', textTransform: 'none', borderRadius: 1.5, px: 2, @@ -853,7 +853,7 @@ const GenericApprovalBar: React.FC = ({ request, onApprove, onDeny }) => color: c.status.error, '&:hover': { borderColor: '#8f2828', bgcolor: 'rgba(181,51,51,0.04)' }, fontWeight: 600, - fontSize: '0.8rem', + fontSize: '0.8125rem', textTransform: 'none', borderRadius: 1.5, px: 2, @@ -957,7 +957,7 @@ export const BatchApprovalBar: React.FC = ({ requests, on bgcolor: c.status.warningBg, }} > - + {nonQuestions.length} pending approvals