Skip to content
Merged
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
1 change: 1 addition & 0 deletions frontend/design-system/preview/brand-logo.html
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
}
.verdict .dot { width:7px; height:7px; border-radius:50%; background:var(--c-accent); }
</style></head><body>
<aside aria-label="Historical design reference"><strong>Historical, pre-Signal reference.</strong> These values are not the current design contract. Use <a href="../../../docs/design/signal-identity.md">Signal identity</a> and <a href="../README.md#identity-signal-chosen-2026-09-03">the current design-system rules</a>.</aside>

<!-- Inline SVG sprite — referenced as <svg viewBox="0 0 64 64"><use href="#mark"/></svg> below.
Uses currentColor so the tile color drives the glyph. -->
Expand Down
1 change: 1 addition & 0 deletions frontend/design-system/preview/colors-accent.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
font-size:11px; font-weight:700; letter-spacing:0.01em;
}
</style></head><body>
<aside aria-label="Historical design reference"><strong>Historical, pre-Signal reference.</strong> These values are not the current design contract. Use <a href="../../../docs/design/signal-identity.md">Signal identity</a> and <a href="../README.md#identity-signal-chosen-2026-09-03">the current design-system rules</a>.</aside>
<div class="col">

<div class="group">
Expand Down
1 change: 1 addition & 0 deletions frontend/design-system/preview/colors-agent-roles.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
}
.chip .dot { width:8px; height:8px; border-radius:50%; }
</style></head><body>
<aside aria-label="Historical design reference"><strong>Historical, pre-Signal reference.</strong> These values are not the current design contract. Use <a href="../../../docs/design/signal-identity.md">Signal identity</a> and <a href="../README.md#identity-signal-chosen-2026-09-03">the current design-system rules</a>.</aside>
<div class="col">

<div>
Expand Down
1 change: 1 addition & 0 deletions frontend/design-system/preview/colors-semantic.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

.strike { text-decoration:line-through; color:var(--c-fg-tertiary); font-family:var(--c-font-mono); font-size:11px; }
</style></head><body>
<aside aria-label="Historical design reference"><strong>Historical, pre-Signal reference.</strong> These values are not the current design contract. Use <a href="../../../docs/design/signal-identity.md">Signal identity</a> and <a href="../README.md#identity-signal-chosen-2026-09-03">the current design-system rules</a>.</aside>
<div class="col">

<div>
Expand Down
1 change: 1 addition & 0 deletions frontend/design-system/preview/components-buttons.html
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
}
.chip.is-active .chip__count { opacity:.8; }
</style></head><body>
<aside aria-label="Historical design reference"><strong>Historical, pre-Signal reference.</strong> These values are not the current design contract. Use <a href="../../../docs/design/signal-identity.md">Signal identity</a> and <a href="../README.md#identity-signal-chosen-2026-09-03">the current design-system rules</a>.</aside>

<!-- Reusable mini-icons for examples -->
<svg width="0" height="0" style="position:absolute" aria-hidden="true">
Expand Down
2 changes: 1 addition & 1 deletion frontend/design-system/tokens.css
Original file line number Diff line number Diff line change
Expand Up @@ -278,4 +278,4 @@ pre, .c-pre {
overflow-x: auto;
}

::selection { background: rgba(47, 111, 235, 0.20); }
::selection { background: rgba(29, 63, 209, 0.20); }
14 changes: 7 additions & 7 deletions frontend/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#2f6feb" />
<meta name="theme-color" content="#1d3fd1" />
<!-- Every page load 404ed on /favicon.ico until 2026-08-05 — no icon link
existed at all. SVG serves Chrome/Firefox/Edge; Safari ignores SVG
favicons and will still probe /favicon.ico (harmless 404) until a
Expand Down Expand Up @@ -50,8 +50,8 @@
#seo-page { display: none; }
#seo-page { box-sizing: border-box; min-height: 100vh; color: #111827; background: #f8f8fb; font: 16px/1.6 Inter, ui-sans-serif, system-ui, sans-serif; }
#seo-page *, #seo-page *::before, #seo-page *::after { box-sizing: inherit; }
#seo-page a { color: #2456c8; text-decoration-thickness: 1px; text-underline-offset: 3px; }
#seo-page a:hover { color: #14306f; }
#seo-page a { color: #1d3fd1; text-decoration-thickness: 1px; text-underline-offset: 3px; }
#seo-page a:hover { color: #0f2378; }
#seo-page .seo-header, #seo-page main, #seo-page .seo-footer { width: min(1120px, calc(100% - 40px)); margin: 0 auto; }
#seo-page .seo-header { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 72px; }
#seo-page .seo-header nav { display: flex; flex-wrap: wrap; gap: 16px; }
Expand All @@ -65,13 +65,13 @@
#seo-page .seo-hero { padding-top: 100px; padding-bottom: 100px; }
#seo-page .seo-lede { color: #4b5563; font-size: 1.15rem; }
#seo-page .seo-byline { color: #7b8494; font-size: .875rem; line-height: 1.7; }
#seo-page .seo-kicker { margin-bottom: 10px; color: #2456c8; font-size: .78rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
#seo-page .seo-kicker { margin-bottom: 10px; color: #1d3fd1; font-size: .78rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
#seo-page .seo-actions { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; margin-top: 28px; }
#seo-page .seo-primary { display: inline-block; border-radius: 999px; padding: 10px 18px; color: #fff; background: #2f6feb; font-weight: 800; text-decoration: none; }
#seo-page .seo-primary:hover { color: #fff; background: #1f55c9; }
#seo-page .seo-primary { display: inline-block; border-radius: 999px; padding: 10px 18px; color: #fff; background: #1d3fd1; font-weight: 800; text-decoration: none; }
#seo-page .seo-primary:hover { color: #fff; background: #1633a8; }
#seo-page .seo-install { color: #4b5563; }
#seo-page .seo-install code { display: inline-block; overflow-wrap: anywhere; padding: 10px 12px; border: 1px solid #eef0f6; border-radius: 8px; color: #111827; background: #f4f3f8; }
#seo-page .seo-band { width: 100%; max-width: none; margin-left: calc((100vw - min(1120px, calc(100vw - 40px))) / -2); padding-right: max(20px, calc((100vw - 1120px) / 2)); padding-left: max(20px, calc((100vw - 1120px) / 2)); color: #14306f; background: #e8efff; }
#seo-page .seo-band { width: 100%; max-width: none; margin-left: calc((100vw - min(1120px, calc(100vw - 40px))) / -2); padding-right: max(20px, calc((100vw - 1120px) / 2)); padding-left: max(20px, calc((100vw - 1120px) / 2)); color: #0f2378; background: #e9edfb; }
#seo-page .seo-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px; }
#seo-page .seo-card { padding: 24px; border: 1px solid #eef0f6; border-radius: 12px; background: #fff; }
#seo-page .seo-card p:last-child, #seo-page .seo-card ul:last-child { margin-bottom: 0; }
Expand Down
10 changes: 5 additions & 5 deletions frontend/public/favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions frontend/src/App.css
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ body.modern-ui:not(.v2-canvas) input:focus {
box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.25);
}

body.modern-ui:not(.v2-canvas) button {
body.modern-ui:not(.v2-canvas):not(.guide-canvas) button {
background-color: #2563eb;
color: #f8fafc;
padding: 12px 20px;
Expand All @@ -174,12 +174,12 @@ body.modern-ui:not(.v2-canvas) button {
transition: background-color 0.2s, transform 0.1s;
}

body.modern-ui:not(.v2-canvas) button:hover {
body.modern-ui:not(.v2-canvas):not(.guide-canvas) button:hover {
background-color: #1d4ed8;
transform: translateY(-1px);
}

body.modern-ui:not(.v2-canvas) button:active {
body.modern-ui:not(.v2-canvas):not(.guide-canvas) button:active {
transform: translateY(1px);
}

Expand Down
15 changes: 7 additions & 8 deletions frontend/src/components/landing/GuidePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@ import {
} from '@mui/material';
import ArrowBackIcon from '@mui/icons-material/ArrowBack';
import ArrowForwardIcon from '@mui/icons-material/ArrowForward';
import commonlyLogo from '../../assets/commonly-logo.png';
import guides from '../../content/guides.json';
import { guidePalette, useGuideCanvas } from './guideShell';
import { guidePalette, guideTextButtonSx, useGuideCanvas } from './guideShell';

interface GuideStrongParagraph {
strong: string;
Expand Down Expand Up @@ -89,7 +88,7 @@ const GuidePage: React.FC = () => {
return (
<Box sx={{ minHeight: '100vh', backgroundColor: guidePalette.page, color: guidePalette.textPrimary, py: 10 }}>
<Container maxWidth="md">
<Button sx={{ color: guidePalette.accentText }} startIcon={<ArrowBackIcon />} onClick={() => navigate('/')}>
<Button sx={guideTextButtonSx} startIcon={<ArrowBackIcon />} onClick={() => navigate('/')}>
Back to landing
</Button>
<Typography variant="h4" sx={{ mt: 3, mb: 1, color: guidePalette.textPrimary, fontWeight: 700 }}>
Expand All @@ -107,11 +106,11 @@ const GuidePage: React.FC = () => {
<Box sx={{ minHeight: '100vh', backgroundColor: guidePalette.page, color: guidePalette.textPrimary }}>
<Container maxWidth="md" sx={{ pt: 5, pb: 10 }}>
<Stack direction="row" justifyContent="space-between" alignItems="center" sx={{ mb: 6 }}>
<Button sx={{ color: guidePalette.accentText }} startIcon={<ArrowBackIcon />} onClick={() => navigate('/')}>
<Button sx={guideTextButtonSx} startIcon={<ArrowBackIcon />} onClick={() => navigate('/')}>
Back to landing
</Button>
<Stack direction="row" alignItems="center" spacing={1}>
<img src={commonlyLogo} alt="Commonly Logo" width={26} height={26} />
<img src="/favicon.svg" alt="Commonly Logo" width={26} height={26} />
<Typography sx={{ color: guidePalette.textPrimary, fontWeight: 700, letterSpacing: '-0.02em' }}>Commonly</Typography>
</Stack>
</Stack>
Expand Down Expand Up @@ -194,7 +193,7 @@ const GuidePage: React.FC = () => {
))}
{section.links && (
<Stack direction={{ xs: 'column', sm: 'row' }} spacing={1} sx={{ mt: 2 }}>
{section.links.map((link) => <Button key={link.path} component="a" href={link.path} target={link.external ? '_blank' : undefined} rel={link.external ? 'noreferrer' : undefined} sx={{ alignSelf: 'flex-start', color: guidePalette.accentText }}>{link.label}</Button>)}
{section.links.map((link) => <Button key={link.path} component="a" href={link.path} target={link.external ? '_blank' : undefined} rel={link.external ? 'noreferrer' : undefined} sx={{ ...guideTextButtonSx, alignSelf: 'flex-start' }}>{link.label}</Button>)}
</Stack>
)}
</Box>
Expand Down Expand Up @@ -236,8 +235,8 @@ const GuidePage: React.FC = () => {
// Compare is emitted as a static document. React Router would
// otherwise hand this path to the V2 catch-all instead of
// requesting build/compare/index.html.
? <Button key={link.path} variant="text" component="a" href={link.path} sx={{ color: guidePalette.accentText }}>{link.label}</Button>
: <Button key={link.path} variant="text" sx={{ color: guidePalette.accentText }} onClick={() => navigate(link.path)}>{link.label}</Button>
? <Button key={link.path} variant="text" component="a" href={link.path} sx={guideTextButtonSx}>{link.label}</Button>
: <Button key={link.path} variant="text" sx={guideTextButtonSx} onClick={() => navigate(link.path)}>{link.label}</Button>
))}
</Stack>
</Container>
Expand Down
9 changes: 4 additions & 5 deletions frontend/src/components/landing/GuidesIndexPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,8 @@ import {
} from '@mui/material';
import ArrowBackIcon from '@mui/icons-material/ArrowBack';
import ArrowForwardIcon from '@mui/icons-material/ArrowForward';
import commonlyLogo from '../../assets/commonly-logo.png';
import guides from '../../content/guides.json';
import { guidePalette, useGuideCanvas } from './guideShell';
import { guidePalette, guideTextButtonSx, useGuideCanvas } from './guideShell';

interface Guide {
eyebrow: string;
Expand All @@ -29,11 +28,11 @@ const GuidesIndexPage: React.FC = () => {
<Box sx={{ minHeight: '100vh', backgroundColor: guidePalette.page, color: guidePalette.textPrimary }}>
<Container maxWidth="md" sx={{ pt: 5, pb: 10 }}>
<Stack direction="row" justifyContent="space-between" alignItems="center" sx={{ mb: 6 }}>
<Button sx={{ color: guidePalette.accentText }} startIcon={<ArrowBackIcon />} onClick={() => navigate('/')}>
<Button sx={guideTextButtonSx} startIcon={<ArrowBackIcon />} onClick={() => navigate('/')}>
Back to landing
</Button>
<Stack direction="row" alignItems="center" spacing={1}>
<img src={commonlyLogo} alt="Commonly Logo" width={26} height={26} />
<img src="/favicon.svg" alt="Commonly Logo" width={26} height={26} />
<Typography sx={{ color: guidePalette.textPrimary, fontWeight: 700, letterSpacing: '-0.02em' }}>Commonly</Typography>
</Stack>
</Stack>
Expand All @@ -60,7 +59,7 @@ const GuidesIndexPage: React.FC = () => {
<Typography sx={{ color: guidePalette.textSecondary, lineHeight: 1.75, mb: 2.5 }}>
{guide.summary}
</Typography>
<Button sx={{ color: guidePalette.accentText }} endIcon={<ArrowForwardIcon />} onClick={() => navigate(`/guides/${id}/`)}>
<Button sx={guideTextButtonSx} endIcon={<ArrowForwardIcon />} onClick={() => navigate(`/guides/${id}/`)}>
Read the guide
</Button>
</Box>
Expand Down
16 changes: 11 additions & 5 deletions frontend/src/components/landing/guideShell.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,17 @@ export const guidePalette = {
textPrimary: '#111827',
textSecondary: '#4b5563',
textTertiary: '#7b8494',
accent: '#2f6feb',
accentStrong: '#1f55c9',
accentSoft: '#e8efff',
accentText: '#2456c8',
accentDeep: '#14306f',
accent: '#1d3fd1',
accentStrong: '#1633a8',
accentSoft: '#e9edfb',
accentText: '#1d3fd1',
accentDeep: '#0f2378',
} as const;

// Text-button state colors must not fall back to the legacy root MUI theme.
export const guideTextButtonSx = {
color: guidePalette.accentText,
'&:hover': { backgroundColor: guidePalette.accentSoft },
} as const;

// Guides render outside V2's component tree, so keep their page canvas light
Expand Down
Loading
Loading