-
Notifications
You must be signed in to change notification settings - Fork 0
Redesign elegant homepage with fumadocs layout and navigation #125
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@copilot 继续 |
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
已完成首页重新设计!新的首页包含: ✨ 现代化的渐变色英雄区块,清晰展示价值主张 提交哈希:78c5255 |
… fix footer URL Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
|
@copilot 应该是首页样式和fumadocs冲突的 |
|
✅ All checks passed!
|
…only Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
已修复!将 fumadocs 的 提交哈希:a446d4a |
|
不对,你应该按照fumadocs的规范重新开发首页,包括要支持导航条搜索深浅色的切换 @copilot |
|
✅ All checks passed!
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR completely redesigns the ObjectUI homepage from a simple centered landing page to a comprehensive, multi-section marketing page. The design showcases ObjectUI's capabilities with modern aesthetics using Tailwind CSS and proper dark mode support.
Changes:
- Transformed the homepage from a minimal single-section design to a full-featured marketing page with hero, features, stats, use cases, CTA, and footer sections
- Moved
RootProviderfrom root layout to docs-specific layout to isolate fumadocs styles and prevent conflicts - Added responsive design with proper breakpoints, gradient backgrounds, and hover effects throughout
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 11 comments.
| File | Description |
|---|---|
| apps/site/app/page.tsx | Complete homepage redesign with 6 sections (hero, features, stats, use cases, CTA, footer) using Tailwind CSS utility classes and inline SVG icons |
| apps/site/app/layout.tsx | Removed RootProvider to prevent style conflicts with homepage |
| apps/site/app/docs/layout.tsx | Added RootProvider to isolate fumadocs styles to documentation pages only |
| className="inline-flex items-center justify-center rounded-lg bg-gradient-to-r from-blue-600 to-purple-600 px-8 py-3.5 text-base font-semibold text-white shadow-lg transition-all hover:shadow-xl hover:scale-105" | ||
| > | ||
| Get Started | ||
| <svg className="ml-2 h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> |
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The inline SVG icon lacks accessibility attributes. Add an aria-label or aria-hidden attribute to provide context for screen readers or explicitly mark it as decorative.
| <svg className="ml-2 h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | |
| <svg | |
| className="ml-2 h-5 w-5" | |
| fill="none" | |
| stroke="currentColor" | |
| viewBox="0 0 24 24" | |
| aria-hidden="true" | |
| focusable="false" | |
| > |
apps/site/app/page.tsx
Outdated
| <svg className="h-6 w-6 text-blue-600 dark:text-blue-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" /> | ||
| </svg> | ||
| </div> | ||
| <h3 className="mb-2 text-xl font-semibold text-gray-900 dark:text-white"> | ||
| Blazing Fast | ||
| </h3> | ||
| <p className="text-gray-600 dark:text-gray-300"> | ||
| 3x faster page loads and 6x smaller bundle sizes compared to traditional low-code platforms. Built on React 18+ with automatic optimizations. | ||
| </p> | ||
| </div> | ||
|
|
||
| {/* Feature 2 */} | ||
| <div className="relative rounded-2xl border border-gray-200 bg-white p-8 shadow-sm transition-all hover:shadow-lg dark:border-gray-700 dark:bg-gray-800"> | ||
| <div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-purple-100 dark:bg-purple-900"> | ||
| <svg className="h-6 w-6 text-purple-600 dark:text-purple-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01" /> | ||
| </svg> | ||
| </div> | ||
| <h3 className="mb-2 text-xl font-semibold text-gray-900 dark:text-white"> | ||
| Beautiful by Default | ||
| </h3> | ||
| <p className="text-gray-600 dark:text-gray-300"> | ||
| Professional designs using Tailwind CSS and Shadcn UI. Light/dark theme support, fully customizable, and WCAG 2.1 AA accessible. | ||
| </p> | ||
| </div> | ||
|
|
||
| {/* Feature 3 */} | ||
| <div className="relative rounded-2xl border border-gray-200 bg-white p-8 shadow-sm transition-all hover:shadow-lg dark:border-gray-700 dark:bg-gray-800"> | ||
| <div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-green-100 dark:bg-green-900"> | ||
| <svg className="h-6 w-6 text-green-600 dark:text-green-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" /> | ||
| </svg> | ||
| </div> | ||
| <h3 className="mb-2 text-xl font-semibold text-gray-900 dark:text-white"> | ||
| Developer Friendly | ||
| </h3> | ||
| <p className="text-gray-600 dark:text-gray-300"> | ||
| TypeScript-first with complete type definitions. Zero learning curve if you know React. Works with existing tools and workflows. | ||
| </p> | ||
| </div> | ||
|
|
||
| {/* Feature 4 */} | ||
| <div className="relative rounded-2xl border border-gray-200 bg-white p-8 shadow-sm transition-all hover:shadow-lg dark:border-gray-700 dark:bg-gray-800"> | ||
| <div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-orange-100 dark:bg-orange-900"> | ||
| <svg className="h-6 w-6 text-orange-600 dark:text-orange-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" /> | ||
| </svg> | ||
| </div> | ||
| <h3 className="mb-2 text-xl font-semibold text-gray-900 dark:text-white"> | ||
| Production Ready | ||
| </h3> | ||
| <p className="text-gray-600 dark:text-gray-300"> | ||
| 85%+ test coverage, enterprise security built-in, comprehensive documentation, and active development support. | ||
| </p> | ||
| </div> | ||
|
|
||
| {/* Feature 5 */} | ||
| <div className="relative rounded-2xl border border-gray-200 bg-white p-8 shadow-sm transition-all hover:shadow-lg dark:border-gray-700 dark:bg-gray-800"> | ||
| <div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-pink-100 dark:bg-pink-900"> | ||
| <svg className="h-6 w-6 text-pink-600 dark:text-pink-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" /> | ||
| </svg> | ||
| </div> | ||
| <h3 className="mb-2 text-xl font-semibold text-gray-900 dark:text-white"> | ||
| Modular Architecture | ||
| </h3> | ||
| <p className="text-gray-600 dark:text-gray-300"> | ||
| Tree-shakable packages, lazy-loaded plugins, and support for Server Components. Only load what you need. | ||
| </p> | ||
| </div> | ||
|
|
||
| {/* Feature 6 */} | ||
| <div className="relative rounded-2xl border border-gray-200 bg-white p-8 shadow-sm transition-all hover:shadow-lg dark:border-gray-700 dark:bg-gray-800"> | ||
| <div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-cyan-100 dark:bg-cyan-900"> | ||
| <svg className="h-6 w-6 text-cyan-600 dark:text-cyan-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4" /> | ||
| </svg> | ||
| </div> | ||
| <h3 className="mb-2 text-xl font-semibold text-gray-900 dark:text-white"> | ||
| Backend Agnostic | ||
| </h3> | ||
| <p className="text-gray-600 dark:text-gray-300"> | ||
| Works with any backend through universal DataSource interface. REST, GraphQL, Firebase, or custom adapters. | ||
| </p> | ||
| </div> |
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All decorative SVG icons in the features section lack accessibility attributes. Add aria-hidden="true" to each SVG since they are purely decorative and the heading text already conveys the meaning.
apps/site/app/page.tsx
Outdated
| <div className="grid grid-cols-1 gap-8 sm:grid-cols-3 text-center text-white"> | ||
| <div> | ||
| <div className="text-5xl font-bold mb-2">60+</div> | ||
| <div className="text-xl opacity-90">Components</div> | ||
| </div> | ||
| <div> | ||
| <div className="text-5xl font-bold mb-2">85%+</div> | ||
| <div className="text-xl opacity-90">Test Coverage</div> | ||
| </div> | ||
| <div> | ||
| <div className="text-5xl font-bold mb-2">50KB</div> | ||
| <div className="text-xl opacity-90">Bundle Size</div> | ||
| </div> | ||
| </div> |
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The semantic HTML could be improved by wrapping the stat values in appropriate elements. Consider using a
- (description list) structure with
- and
- tags for better semantic markup and screen reader compatibility.
Suggested change
<div className="grid grid-cols-1 gap-8 sm:grid-cols-3 text-center text-white"> <div> <div className="text-5xl font-bold mb-2">60+</div> <div className="text-xl opacity-90">Components</div> </div> <div> <div className="text-5xl font-bold mb-2">85%+</div> <div className="text-xl opacity-90">Test Coverage</div> </div> <div> <div className="text-5xl font-bold mb-2">50KB</div> <div className="text-xl opacity-90">Bundle Size</div> </div> </div> <dl className="grid grid-cols-1 gap-8 sm:grid-cols-3 text-center text-white"> <div> <dd className="text-5xl font-bold mb-2">60+</dd> <dt className="text-xl opacity-90">Components</dt> </div> <div> <dd className="text-5xl font-bold mb-2">85%+</dd> <dt className="text-xl opacity-90">Test Coverage</dt> </div> <div> <dd className="text-5xl font-bold mb-2">50KB</dd> <dt className="text-xl opacity-90">Bundle Size</dt> </div> </dl>
apps/site/app/page.tsx
Outdated
| <pre className="overflow-x-auto text-sm text-gray-300"> | ||
| <code>{`{ | ||
| "type": "page", | ||
| "title": "Dashboard", | ||
| "body": { | ||
| "type": "grid", | ||
| "columns": 3, | ||
| "items": [ | ||
| { | ||
| "type": "card", | ||
| "title": "Total Users", | ||
| "value": "\${stats.users}" | ||
| }, | ||
| { | ||
| "type": "card", | ||
| "title": "Revenue", | ||
| "value": "\${stats.revenue}" | ||
| }, | ||
| { | ||
| "type": "card", | ||
| "title": "Orders", | ||
| "value": "\${stats.orders}" | ||
| } | ||
| ] | ||
| } | ||
| }`}</code> | ||
| </pre> |
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The code preview lacks a descriptive aria-label on the pre element. Add an aria-label to describe what the code example demonstrates, improving accessibility for screen reader users.
| @@ -1,20 +1,292 @@ | |||
| import Link from 'next/link'; | |||
|
|
|||
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The HomePage component lacks a JSDoc comment explaining its purpose and structure. According to documentation best practices, exported components should have documentation describing their functionality.
| /** | |
| * Renders the main marketing homepage for ObjectUI. | |
| * | |
| * The layout includes: | |
| * - A hero section introducing the JSON-driven UI engine. | |
| * - Primary calls to action linking to documentation and GitHub. | |
| * - A code preview demonstrating a sample JSON page schema. | |
| * | |
| * This component is used as the root route of the site (`/`). | |
| */ |
| <svg className="mr-2 h-5 w-5" fill="currentColor" viewBox="0 0 24 24"> | ||
| <path fillRule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clipRule="evenodd" /> | ||
| </svg> | ||
| View on GitHub |
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The external link to GitHub lacks a visual indicator for screen readers to announce that it opens in a new tab. While rel="noopener noreferrer" is correctly included for security, consider adding sr-only text like "(opens in new tab)" to improve accessibility.
| View on GitHub | |
| View on GitHub | |
| <span className="sr-only">(opens in a new tab)</span> |
| rel="noopener noreferrer" | ||
| className="rounded-lg border-2 border-white bg-transparent px-8 py-3.5 text-base font-semibold text-white transition-all hover:bg-white hover:text-blue-600" | ||
| > | ||
| Star on GitHub |
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The external link to GitHub in the CTA section also lacks a visual indicator for screen readers to announce that it opens in a new tab. Consider adding sr-only text like "(opens in new tab)" to improve accessibility.
| Star on GitHub | |
| Star on GitHub | |
| <span className="sr-only">(opens in new tab)</span> |
| <svg className="mr-2 h-5 w-5" fill="currentColor" viewBox="0 0 24 24"> | ||
| <path fillRule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clipRule="evenodd" /> | ||
| </svg> |
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The GitHub icon SVG lacks accessibility attributes. Add aria-hidden="true" to mark it as decorative since the adjacent text "View on GitHub" already provides the context.
| <svg className="ml-2 h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 7l5 5m0 0l-5 5m5-5H6" /> | ||
| </svg> | ||
| </Link> | ||
| <a | ||
| href="https://github.com/objectstack-ai/objectui" | ||
| target="_blank" | ||
| rel="noopener noreferrer" | ||
| className="inline-flex items-center justify-center rounded-lg border-2 border-gray-300 bg-white px-8 py-3.5 text-base font-semibold text-gray-900 transition-all hover:border-gray-400 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-white dark:hover:border-gray-500 dark:hover:bg-gray-700" | ||
| > | ||
| <svg className="mr-2 h-5 w-5" fill="currentColor" viewBox="0 0 24 24"> | ||
| <path fillRule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clipRule="evenodd" /> | ||
| </svg> | ||
| View on GitHub | ||
| </a> | ||
| </div> | ||
| </div> | ||
|
|
||
| {/* Code Preview */} | ||
| <div className="mx-auto mt-16 max-w-4xl"> | ||
| <div className="relative rounded-2xl bg-gray-900 p-8 shadow-2xl ring-1 ring-gray-800"> | ||
| <div className="flex items-center gap-2 mb-4"> | ||
| <div className="h-3 w-3 rounded-full bg-red-500"></div> | ||
| <div className="h-3 w-3 rounded-full bg-yellow-500"></div> | ||
| <div className="h-3 w-3 rounded-full bg-green-500"></div> | ||
| </div> | ||
| <pre className="overflow-x-auto text-sm text-gray-300"> | ||
| <code>{`{ | ||
| "type": "page", | ||
| "title": "Dashboard", | ||
| "body": { | ||
| "type": "grid", | ||
| "columns": 3, | ||
| "items": [ | ||
| { | ||
| "type": "card", | ||
| "title": "Total Users", | ||
| "value": "\${stats.users}" | ||
| }, | ||
| { | ||
| "type": "card", | ||
| "title": "Revenue", | ||
| "value": "\${stats.revenue}" | ||
| }, | ||
| { | ||
| "type": "card", | ||
| "title": "Orders", | ||
| "value": "\${stats.orders}" | ||
| } | ||
| ] | ||
| } | ||
| }`}</code> | ||
| </pre> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| </section> | ||
|
|
||
| {/* Features Section */} | ||
| <section className="py-24 sm:py-32"> | ||
| <div className="mx-auto max-w-7xl px-6 lg:px-8"> | ||
| <div className="mx-auto max-w-2xl text-center mb-16"> | ||
| <h2 className="text-3xl font-bold tracking-tight text-gray-900 dark:text-white sm:text-4xl"> | ||
| Why Choose ObjectUI? | ||
| </h2> | ||
| <p className="mt-4 text-lg text-gray-600 dark:text-gray-300"> | ||
| Stop writing repetitive UI code. Build faster with better results. | ||
| </p> | ||
| </div> | ||
|
|
||
| <div className="mx-auto grid max-w-6xl grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3"> | ||
| {/* Feature 1 */} | ||
| <div className="relative rounded-2xl border border-gray-200 bg-white p-8 shadow-sm transition-all hover:shadow-lg dark:border-gray-700 dark:bg-gray-800"> | ||
| <div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-blue-100 dark:bg-blue-900"> | ||
| <svg className="h-6 w-6 text-blue-600 dark:text-blue-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" /> | ||
| </svg> | ||
| </div> | ||
| <h3 className="mb-2 text-xl font-semibold text-gray-900 dark:text-white"> | ||
| Blazing Fast | ||
| </h3> | ||
| <p className="text-gray-600 dark:text-gray-300"> | ||
| 3x faster page loads and 6x smaller bundle sizes compared to traditional low-code platforms. Built on React 18+ with automatic optimizations. | ||
| </p> | ||
| </div> | ||
|
|
||
| {/* Feature 2 */} | ||
| <div className="relative rounded-2xl border border-gray-200 bg-white p-8 shadow-sm transition-all hover:shadow-lg dark:border-gray-700 dark:bg-gray-800"> | ||
| <div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-purple-100 dark:bg-purple-900"> | ||
| <svg className="h-6 w-6 text-purple-600 dark:text-purple-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01" /> | ||
| </svg> | ||
| </div> | ||
| <h3 className="mb-2 text-xl font-semibold text-gray-900 dark:text-white"> | ||
| Beautiful by Default | ||
| </h3> | ||
| <p className="text-gray-600 dark:text-gray-300"> | ||
| Professional designs using Tailwind CSS and Shadcn UI. Light/dark theme support, fully customizable, and WCAG 2.1 AA accessible. | ||
| </p> | ||
| </div> | ||
|
|
||
| {/* Feature 3 */} | ||
| <div className="relative rounded-2xl border border-gray-200 bg-white p-8 shadow-sm transition-all hover:shadow-lg dark:border-gray-700 dark:bg-gray-800"> | ||
| <div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-green-100 dark:bg-green-900"> | ||
| <svg className="h-6 w-6 text-green-600 dark:text-green-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4" /> | ||
| </svg> | ||
| </div> | ||
| <h3 className="mb-2 text-xl font-semibold text-gray-900 dark:text-white"> | ||
| Developer Friendly | ||
| </h3> | ||
| <p className="text-gray-600 dark:text-gray-300"> | ||
| TypeScript-first with complete type definitions. Zero learning curve if you know React. Works with existing tools and workflows. | ||
| </p> | ||
| </div> | ||
|
|
||
| {/* Feature 4 */} | ||
| <div className="relative rounded-2xl border border-gray-200 bg-white p-8 shadow-sm transition-all hover:shadow-lg dark:border-gray-700 dark:bg-gray-800"> | ||
| <div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-orange-100 dark:bg-orange-900"> | ||
| <svg className="h-6 w-6 text-orange-600 dark:text-orange-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" /> | ||
| </svg> | ||
| </div> | ||
| <h3 className="mb-2 text-xl font-semibold text-gray-900 dark:text-white"> | ||
| Production Ready | ||
| </h3> | ||
| <p className="text-gray-600 dark:text-gray-300"> | ||
| 85%+ test coverage, enterprise security built-in, comprehensive documentation, and active development support. | ||
| </p> | ||
| </div> | ||
|
|
||
| {/* Feature 5 */} | ||
| <div className="relative rounded-2xl border border-gray-200 bg-white p-8 shadow-sm transition-all hover:shadow-lg dark:border-gray-700 dark:bg-gray-800"> | ||
| <div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-pink-100 dark:bg-pink-900"> | ||
| <svg className="h-6 w-6 text-pink-600 dark:text-pink-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 5a1 1 0 011-1h14a1 1 0 011 1v2a1 1 0 01-1 1H5a1 1 0 01-1-1V5zM4 13a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5a1 1 0 01-1-1v-6zM16 13a1 1 0 011-1h2a1 1 0 011 1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-6z" /> | ||
| </svg> | ||
| </div> | ||
| <h3 className="mb-2 text-xl font-semibold text-gray-900 dark:text-white"> | ||
| Modular Architecture | ||
| </h3> | ||
| <p className="text-gray-600 dark:text-gray-300"> | ||
| Tree-shakable packages, lazy-loaded plugins, and support for Server Components. Only load what you need. | ||
| </p> | ||
| </div> | ||
|
|
||
| {/* Feature 6 */} | ||
| <div className="relative rounded-2xl border border-gray-200 bg-white p-8 shadow-sm transition-all hover:shadow-lg dark:border-gray-700 dark:bg-gray-800"> | ||
| <div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-cyan-100 dark:bg-cyan-900"> | ||
| <svg className="h-6 w-6 text-cyan-600 dark:text-cyan-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"> | ||
| <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4" /> | ||
| </svg> |
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to ObjectUI coding guidelines, Lucide Icons should be used instead of inline SVGs. The ObjectUI project explicitly uses lucide-react as a UI primitive. Consider replacing the inline SVG icons with Lucide React components for consistency with the project's architecture and to reduce code duplication.
apps/site/app/page.tsx
Outdated
| <div className="flex flex-col items-center justify-center gap-4 sm:flex-row"> | ||
| <Link | ||
| href="/docs" | ||
| className="inline-flex items-center justify-center rounded-lg bg-gradient-to-r from-blue-600 to-purple-600 px-8 py-3.5 text-base font-semibold text-white shadow-lg transition-all hover:shadow-xl hover:scale-105" |
Copilot
AI
Jan 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The hover effect hover:scale-105 on the primary CTA button could cause layout shift issues. Consider using transform-gpu or will-change-transform to improve performance and prevent layout instability.
| className="inline-flex items-center justify-center rounded-lg bg-gradient-to-r from-blue-600 to-purple-600 px-8 py-3.5 text-base font-semibold text-white shadow-lg transition-all hover:shadow-xl hover:scale-105" | |
| className="inline-flex items-center justify-center rounded-lg bg-gradient-to-r from-blue-600 to-purple-600 px-8 py-3.5 text-base font-semibold text-white shadow-lg transition-all transform-gpu will-change-[transform] hover:shadow-xl hover:scale-105" |
…and theme toggle Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
已按照 fumadocs 规范重新开发首页!现在使用 ✅ 导航栏(包含 Logo 和文档链接) 提交哈希:3911242 Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@copilot 总觉得哪里还有点样式冲突文档左侧的导航高度不对 |
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
已修复文档左侧导航栏高度问题!问题是由于 CSS 冲突导致侧边栏的 修复方法:
提交哈希:588eb2b |
|
@copilot 我不要你乱改,我让你找到问题的根源在哪? |
找到根本原因了! 问题的根源是: 追踪变更历史:
结果:双层 正确的解决方案:
这样就能从根本上解决问题,而不是用 |
Co-authored-by: huangyiirene <7665279+huangyiirene@users.noreply.github.com>
|
@copilot 帮我修改 |
|
✅ All checks passed!
|
已完成修改! 修复内容(提交哈希:11704e3): ✅ 从文档布局中移除重复的 结果:
当前的正确结构: |







Screenshots
Homepage with Fumadocs Navigation
Docs Page - After Fix
Summary
The homepage has been completely redesigned following fumadocs conventions with professional navigation, search functionality, and theme switching.
🎯 Fumadocs Integration
Navigation Bar: Professional navbar using fumadocs'
HomeLayoutDesign System: All styling uses fumadocs design tokens
fd-primary,fd-accent,fd-backgroundfd-foreground,fd-muted-foregroundfd-card,fd-border✨ Content Sections
Hero Section: Gradient background with clear value proposition
Features Section: 6 key benefits with icons
Stats Section: Key metrics (60+ Components, 85%+ Test Coverage, 50KB Bundle Size)
Use Cases Section: 6 cards showing practical applications
CTA Section: Engaging call-to-action with gradient background
🔍 Root Cause Analysis & Fix
Problem: Documentation sidebar height was calculated incorrectly
Root Cause Identified:
Through commit history analysis, discovered the issue was caused by duplicate
RootProvidercomponents:RootProvidercorrectly in root layoutRootProviderremoved from root and added to docs layout (commit a446d4a)RootProviderrestored to root layout for HomeLayout, but NOT removed from docs layout (commit 3911242)RootProvidercomponents causing CSS conflictsProper Solution Applied:
RootProviderfrom docs layoutRootProviderin root layout (correct fumadocs pattern)Correct Pattern:
🔧 Technical Implementation
HomeLayoutfromfumadocs-ui/layouts/homeRootProviderat root level (proper fumadocs architecture)✅ Features Working
Quality Assurance
✅ Root cause properly identified and documented
✅ Duplicate RootProvider removed
✅ Follows fumadocs best practices and conventions
✅ Uses fumadocs design tokens throughout
✅ Proper React keys and best practices
✅ Consistent formatting and clean code
✅ Navigation, search, and theme toggle tested and working
✅ Clean architecture with proper layout nesting
✅ Both homepage and docs pages tested and working correctly
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.