feat(landing-page): add AMR header entry

This commit is contained in:
Mason 2026-05-31 19:28:44 +08:00
parent 53fb175855
commit 1026cb3e28
4 changed files with 123 additions and 3 deletions

View file

@ -23,6 +23,7 @@ const REPO = 'https://github.com/nexu-io/open-design';
const REPO_RELEASES = `${REPO}/releases`;
const DISCORD = 'https://discord.gg/9ptkbbqRu';
const X_TWITTER = 'https://x.com/nexudotio';
const AMR_URL = 'https://open-design.ai/amr/';
const ext = {
target: '_blank',
@ -169,6 +170,14 @@ export function Header({
</span>
</a>
</li>
<li role='none'>
<a role='menuitem' href={AMR_URL}>
<span className='dropdown-name'>{productMenuCopy.amrName}</span>
<span className='dropdown-blurb'>
{productMenuCopy.amrBlurb}
</span>
</a>
</li>
{/* Tutorials is a top-level nav item (see Library section
below). Don't list it here too duplicating it once at
Product/Tutorials and again at top-level confuses users
@ -307,6 +316,17 @@ export function Header({
<path d='M17.53 3H21l-7.39 8.45L22 21h-6.83l-5.36-6.99L3.7 21H.23l7.9-9.04L0 3h7l4.85 6.41L17.53 3Zm-2.39 16h2.04L5.96 4.9H3.78L15.14 19Z' />
</svg>
</a>
<a
className='nav-amr'
href={AMR_URL}
aria-label={`${productMenuCopy.amrName}: ${productMenuCopy.amrBlurb}`}
>
<img src='/amr-logo.svg' alt='' width={28} height={28} aria-hidden='true' />
<span className='nav-amr-copy'>
<span className='nav-amr-title'>AMR</span>
<span className='nav-amr-kicker'>Design Agent</span>
</span>
</a>
<a
className='nav-cta ghost'
href={REPO_RELEASES}

View file

@ -33,6 +33,7 @@
--ink-faint: #8b8676;
--coral: #ed6f5c;
--coral-soft: #f08e7c;
--amr-green: #237f00;
--mustard: #e9b94a;
--olive: #6e7448;
--bone: #f7f1de;
@ -604,7 +605,7 @@ body::before {
.nav-side {
display: inline-flex;
align-items: center;
gap: 18px;
gap: 12px;
}
/*
* Compact icon-only chrome buttons for community-channel links
@ -634,6 +635,55 @@ body::before {
.nav-icon svg {
display: block;
}
.nav-amr {
display: inline-flex;
align-items: center;
gap: 9px;
padding: 6px 13px 6px 7px;
border-radius: 999px;
border: 1px solid rgba(35, 127, 0, 0.28);
background: linear-gradient(135deg, rgba(135, 234, 92, 0.26), rgba(247, 241, 222, 0.82));
color: var(--amr-green);
box-shadow: 0 10px 28px -22px rgba(35, 127, 0, 0.7);
font-family: var(--sans);
text-decoration: none;
white-space: nowrap;
flex-shrink: 0;
transition:
background 160ms cubic-bezier(0.23, 1, 0.32, 1),
border-color 160ms cubic-bezier(0.23, 1, 0.32, 1),
box-shadow 160ms cubic-bezier(0.23, 1, 0.32, 1),
transform 160ms cubic-bezier(0.23, 1, 0.32, 1);
}
.nav-amr:hover {
transform: translateY(-1px);
border-color: rgba(35, 127, 0, 0.42);
background: linear-gradient(135deg, rgba(135, 234, 92, 0.38), rgba(247, 241, 222, 0.92));
box-shadow: 0 14px 30px -20px rgba(35, 127, 0, 0.78);
}
.nav-amr img {
width: 28px;
height: 28px;
display: block;
flex: 0 0 auto;
}
.nav-amr-copy {
display: flex;
flex-direction: column;
gap: 1px;
line-height: 1;
}
.nav-amr-title {
font-size: 12px;
font-weight: 800;
letter-spacing: 0;
}
.nav-amr-kicker {
font-size: 8px;
font-weight: 700;
letter-spacing: 0;
color: rgba(13, 84, 0, 0.72);
}
.nav-cta {
display: inline-flex;
align-items: center;
@ -2474,6 +2524,7 @@ footer {
.container { padding: 0 44px; }
.work { margin: 0 44px; padding: 90px 44px; }
.side-rail { display: none; }
.nav-links { gap: 30px; }
}
/* hide topbar mid text early — between 1200 and 1280 it crowds even with nowrap */
@media (max-width: 1200px) {
@ -2486,6 +2537,7 @@ footer {
.nav-inner { gap: 18px; }
.brand-meta { display: none; }
.nav-links { gap: 28px; }
.nav-side .nav-icon { display: none; }
}
/* nav: at 1080px there's no clean way to fit Product · Skills · Systems ·
@ -2498,7 +2550,8 @@ footer {
@media (max-width: 1080px) {
.nav-toggle { display: inline-flex; }
.brand { white-space: nowrap; }
/* Hide Download + Discord/X icon buttons from the bar (Star stays). */
/* Hide AMR, Download + Discord/X icon buttons from the bar (Star stays). */
.nav-side .nav-amr { display: none; }
.nav-side .nav-cta.ghost { display: none; }
.nav-side .nav-icon { display: none; }
/* Collapse the nav <ul> into a panel that drops below the header bar.
@ -2547,7 +2600,7 @@ footer {
margin-left: 6px;
font-size: 11px;
}
/* Product dropdown flattens — always show OD + HA as nested static items. */
/* Product dropdown flattens — always show OD + HA + AMR as nested static items. */
.nav-links li.has-dropdown { position: static; }
.nav-links .dropdown-caret { display: none; }
.nav-dropdown {
@ -2654,6 +2707,7 @@ footer {
* in the bar. */
.nav { padding: 16px 0; }
.brand-meta { display: none; }
.nav-side .nav-amr { display: none; }
.nav-side .nav-cta.ghost { display: none; }
.nav-side .nav-icon { display: none; }
}

View file

@ -192,6 +192,8 @@ export interface HeaderProductMenuCopy {
openDesignBlurb: string;
htmlAnythingName: string;
htmlAnythingBlurb: string;
amrName: string;
amrBlurb: string;
tutorialsName: string;
tutorialsBlurb: string;
}
@ -217,6 +219,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'The agentic design surface: skills, systems, templates.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / data to ship-ready HTML, by your local agent.',
amrName: 'Open Design AMR',
amrBlurb: 'Professional design Agent, zero-config use, built-in SOTA models & Harness',
tutorialsName: 'Tutorials',
tutorialsBlurb: 'Video walkthroughs, demos, and community reviews.',
},
@ -227,6 +231,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Agent 原生设计工作台Skill、设计系统、模板。',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / 数据变成可交付 HTML由本地 Agent 完成。',
amrName: 'Open Design AMR',
amrBlurb: '专业设计Agent、零配置使用、自带SOTA模型与Harness',
tutorialsName: '教程',
tutorialsBlurb: '视频上手、演示与社区评测。',
},
@ -237,6 +243,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Agent 原生設計工作台Skill、設計系統、模板。',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / 資料變成可交付 HTML由本地 Agent 完成。',
amrName: 'Open Design AMR',
amrBlurb: '專業設計 Agent、零配置使用、內建 SOTA 模型與 Harness',
tutorialsName: '教學',
tutorialsBlurb: '影片上手、演示與社群評測。',
},
@ -247,6 +255,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Agent ネイティブのデザイン面: Skill、システム、テンプレート。',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / データをローカル Agent で納品可能な HTML へ。',
amrName: 'Open Design AMR',
amrBlurb: 'プロ向けデザイン Agent、ゼロ設定で利用、SOTA モデルと Harness 内蔵',
tutorialsName: 'チュートリアル',
tutorialsBlurb: '動画ガイド、デモ、コミュニティレビュー。',
},
@ -257,6 +267,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Agent 네이티브 디자인 작업면: Skill, 시스템, 템플릿.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / 데이터를 로컬 Agent로 배포 가능한 HTML로 변환.',
amrName: 'Open Design AMR',
amrBlurb: '전문 디자인 Agent, 무설정 사용, SOTA 모델과 Harness 내장',
tutorialsName: '튜토리얼',
tutorialsBlurb: '영상 가이드, 데모, 커뮤니티 리뷰.',
},
@ -267,6 +279,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Agentische Designoberfläche: Skills, Systeme, Vorlagen.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / Daten werden durch deinen lokalen Agent zu fertigem HTML.',
amrName: 'Open Design AMR',
amrBlurb: 'Professioneller Design-Agent, null Konfiguration, integrierte SOTA-Modelle & Harness',
tutorialsName: 'Tutorials',
tutorialsBlurb: 'Videoanleitungen, Demos und Community-Reviews.',
},
@ -277,6 +291,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Surface de design agentique : skills, systèmes, modèles.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / données vers du HTML prêt à livrer via votre agent local.',
amrName: 'Open Design AMR',
amrBlurb: 'Agent de design professionnel, zéro configuration, modèles SOTA et Harness intégrés',
tutorialsName: 'Tutoriels',
tutorialsBlurb: 'Guides vidéo, démos et avis de la communauté.',
},
@ -287,6 +303,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Agent-native дизайн-среда: skills, системы, шаблоны.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / данные в готовый HTML через локального Agent.',
amrName: 'Open Design AMR',
amrBlurb: 'Профессиональный дизайн-Agent, без настройки, со встроенными SOTA-моделями и Harness',
tutorialsName: 'Руководства',
tutorialsBlurb: 'Видеоразборы, демо и обзоры сообщества.',
},
@ -297,6 +315,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Superficie de diseño agentic: skills, sistemas, plantillas.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / datos a HTML listo para entregar con tu Agent local.',
amrName: 'Open Design AMR',
amrBlurb: 'Agent de diseño profesional, uso sin configuración, modelos SOTA y Harness integrados',
tutorialsName: 'Tutoriales',
tutorialsBlurb: 'Guías en video, demos y reseñas de la comunidad.',
},
@ -307,6 +327,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Superfície de design agentic: skills, sistemas, templates.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / dados viram HTML pronto com seu Agent local.',
amrName: 'Open Design AMR',
amrBlurb: 'Agent de design profissional, uso sem configuração, modelos SOTA e Harness integrados',
tutorialsName: 'Tutoriais',
tutorialsBlurb: 'Guias em vídeo, demos e avaliações da comunidade.',
},
@ -317,6 +339,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Superficie di design agentic: skill, sistemi, template.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / dati in HTML pronto alla consegna con il tuo Agent locale.',
amrName: 'Open Design AMR',
amrBlurb: 'Agent di design professionale, uso senza configurazione, modelli SOTA e Harness integrati',
tutorialsName: 'Tutorial',
tutorialsBlurb: 'Guide video, demo e recensioni della community.',
},
@ -327,6 +351,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Bề mặt thiết kế agentic: skill, hệ thống, mẫu.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / dữ liệu thành HTML sẵn sàng giao bằng Agent cục bộ.',
amrName: 'Open Design AMR',
amrBlurb: 'Agent thiết kế chuyên nghiệp, dùng không cần cấu hình, tích hợp mô hình SOTA và Harness',
tutorialsName: 'Hướng dẫn',
tutorialsBlurb: 'Video hướng dẫn, demo và đánh giá cộng đồng.',
},
@ -337,6 +363,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Agentic powierzchnia projektowa: skills, systemy, szablony.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / dane do gotowego HTML przez lokalnego Agent.',
amrName: 'Open Design AMR',
amrBlurb: 'Profesjonalny Agent do projektowania, zero konfiguracji, wbudowane modele SOTA i Harness',
tutorialsName: 'Poradniki',
tutorialsBlurb: 'Wideo, dema i recenzje społeczności.',
},
@ -347,6 +375,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Ruang desain agentic: skill, sistem, template.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / data menjadi HTML siap kirim lewat Agent lokal.',
amrName: 'Open Design AMR',
amrBlurb: 'Agent desain profesional, tanpa konfigurasi, model SOTA dan Harness bawaan',
tutorialsName: 'Tutorial',
tutorialsBlurb: 'Panduan video, demo, dan ulasan komunitas.',
},
@ -357,6 +387,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Agentic designoppervlak: skills, systemen, templates.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / data naar opleverklare HTML via je lokale Agent.',
amrName: 'Open Design AMR',
amrBlurb: 'Professionele design-Agent, nul configuratie, ingebouwde SOTA-modellen en Harness',
tutorialsName: 'Tutorials',
tutorialsBlurb: 'Videogidsen, demos en communityreviews.',
},
@ -367,6 +399,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'مساحة تصميم وكيلة: المهارات والأنظمة والقوالب.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / البيانات إلى HTML جاهز عبر Agent المحلي.',
amrName: 'Open Design AMR',
amrBlurb: 'Agent تصميم احترافي، استخدام بلا إعداد، نماذج SOTA و Harness مدمجة',
tutorialsName: 'الدروس',
tutorialsBlurb: 'شروحات فيديو وعروض وتجارب من المجتمع.',
},
@ -377,6 +411,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Agentic tasarım yüzeyi: skill, sistemler, şablonlar.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / veriler yerel Agent ile teslim edilebilir HTML olur.',
amrName: 'Open Design AMR',
amrBlurb: 'Profesyonel tasarım Agent, sıfır yapılandırma, yerleşik SOTA modelleri ve Harness',
tutorialsName: 'Eğitimler',
tutorialsBlurb: 'Video anlatımlar, demolar ve topluluk incelemeleri.',
},
@ -387,6 +423,8 @@ const HEADER_PRODUCT_MENU_COPY: Record<LandingLocaleCode, HeaderProductMenuCopy>
openDesignBlurb: 'Agent-native дизайн-поверхня: skills, системи, шаблони.',
htmlAnythingName: 'HTML Anything',
htmlAnythingBlurb: 'Markdown / дані у готовий HTML через локального Agent.',
amrName: 'Open Design AMR',
amrBlurb: 'Професійний дизайн-Agent, без налаштувань, із вбудованими SOTA-моделями та Harness',
tutorialsName: 'Навчальні матеріали',
tutorialsBlurb: 'Відеоінструкції, демо та огляди спільноти.',
},

View file

@ -0,0 +1,8 @@
<svg width="61" height="61" viewBox="0 0 61 61" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M59.8711 30.5C59.8711 56.0969 55.968 60 30.3711 60C4.7742 60 0.871094 56.0969 0.871094 30.5C0.871094 4.9031 4.7742 1 30.3711 1C55.968 1 59.8711 4.9031 59.8711 30.5Z" fill="#87EA5C"/>
<path d="M34.5271 26.9915C34.4226 27.6369 33.6061 27.8574 33.1978 27.3504L20.4888 11.5716C19.9658 10.9223 20.7318 10.0242 21.4533 10.4408L30.951 15.9243L36.3612 6.55362C36.7806 5.82706 37.889 6.21903 37.7551 7.04658L34.5271 26.9915Z" fill="#237F00"/>
<path d="M34.9157 33.3782C34.2696 33.4783 33.8076 32.7699 34.1636 32.2249L45.2428 15.262C45.6988 14.564 46.7896 15.0149 46.6164 15.8299L44.3362 26.5572L54.9201 28.8069C55.7407 28.9813 55.7104 30.1565 54.882 30.2849L34.9157 33.3782Z" fill="#237F00"/>
<path d="M28.9603 35.7227C28.6654 35.1391 29.1964 34.4809 29.8248 34.651L49.3811 39.9461C50.1858 40.1641 50.094 41.3408 49.2654 41.4279L38.3585 42.5743L39.4896 53.3353C39.5773 54.1697 38.4502 54.504 38.0721 53.7558L28.9603 35.7227Z" fill="#237F00"/>
<path d="M24.8915 30.7822C25.3554 30.3214 26.1455 30.623 26.1779 31.2732L27.1852 51.5086C27.2266 52.3413 26.079 52.6177 25.7402 51.8565L21.2795 41.8377L11.3946 46.2387C10.6282 46.5799 9.96197 45.6114 10.5567 45.0206L24.8915 30.7822Z" fill="#237F00"/>
<path d="M28.3305 25.3842C28.9121 25.683 28.8694 26.5277 28.261 26.7594L9.32726 33.9705C8.54806 34.2672 7.93066 33.2612 8.54982 32.7037L16.6999 25.3653L9.45967 17.3243C8.8983 16.7008 9.61357 15.7679 10.3592 16.1509L28.3305 25.3842Z" fill="#237F00"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB