create-new-design
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCreate New Design
创建新设计
Scaffold a new design inspiration with the correct file structure, ViewTransition naming, and component patterns.
在design-inspirations仓库中按照正确的文件结构、ViewTransition命名规则和组件模式,快速搭建新的设计灵感页面。
Required Information
所需信息
Before creating files, gather:
- Design ID (kebab-case): e.g., ,
pricing-tableuser-profile - Title: e.g., "Pricing Table", "User Profile Card"
- Description: One-line description for the main page
- Tags: 2-4 category tags (e.g., "Card", "Form", "Dashboard")
- Attribution (optional): Twitter handle of original designer
在创建文件前,请准备以下信息:
- 设计ID(短横线分隔格式,kebab-case):例如 、
pricing-tableuser-profile - 标题:例如 "Pricing Table"、"User Profile Card"
- 描述:主页展示的单行描述文本
- 标签:2-4个分类标签(例如 "Card"、"Form"、"Dashboard")
- 来源署名(可选):原设计师的Twitter账号
File Structure
文件结构
src/
├── app/
│ ├── designs/
│ │ └── [design-id]/
│ │ └── page.tsx # Detail page
│ └── page.tsx # Update designs array
└── components/
└── previews/
└── [Name]Preview.tsx # Preview componentsrc/
├── app/
│ ├── designs/
│ │ └── [design-id]/
│ │ └── page.tsx # 详情页
│ └── page.tsx # 更新设计列表数组
└── components/
└── previews/
└── [Name]Preview.tsx # 预览组件Step 1: Create Preview Component
步骤1:创建预览组件
Create .
src/components/previews/[Name]Preview.tsxSee examples/preview-template.tsx for the full template.
Key conventions:
- Export named function:
export function [Name]Preview() - ViewTransition names: ,
[design-id]-light,[design-id]-dark,[design-id]-light-panel[design-id]-dark-panel - Side-by-side layout with dot grid backgrounds
- Light panel: with
bg-[#f5f5f5]dots#d4d4d4 - Dark panel: with
bg-zinc-950dots#3f3f46
创建文件 。
src/components/previews/[Name]Preview.tsx完整模板可参考 examples/preview-template.tsx。
关键规范:
- 导出命名函数:
export function [Name]Preview() - ViewTransition 命名:、
[design-id]-light、[design-id]-dark、[design-id]-light-panel[design-id]-dark-panel - 带点阵背景的并排布局
- 浅色面板:搭配
bg-[#f5f5f5]点阵#d4d4d4 - 深色面板:搭配
bg-zinc-950点阵#3f3f46
Step 2: Create Detail Page
步骤2:创建详情页
Create .
src/app/designs/[design-id]/page.tsxSee examples/page-template.tsx for the full template.
Key conventions:
- Use DM Sans font for design pages
- Split layout: 50/50 light/dark
- Header with back arrow, Code button, and attribution
- Code button links to the component file on GitHub
- Attribution format: "Inspired from @username" with profile photo via
unavatar.io
创建文件 。
src/app/designs/[design-id]/page.tsx完整模板可参考 examples/page-template.tsx。
关键规范:
- 设计页面使用 DM Sans 字体
- 50/50 分栏布局:浅色/深色模式
- 包含返回箭头、代码按钮和来源署名的头部
- 代码按钮链接至GitHub上的组件文件
- 来源署名格式:"Inspired from @username",通过 获取头像
unavatar.io
Step 3: Update Main Page
步骤3:更新主页
Add entry to :
src/app/page.tsxtsx
import { [Name]Preview } from "@/components/previews/[Name]Preview";
const designs = [
// ... existing designs
{
id: "[design-id]",
number: "XX", // Increment from last
title: "[Title]",
description: "[Description]",
tags: ["Tag1", "Tag2"],
PreviewComponent: [Name]Preview,
},
];在 中添加新条目:
src/app/page.tsxtsx
import { [Name]Preview } from "@/components/previews/[Name]Preview";
const designs = [
// ... 现有设计
{
id: "[design-id]",
number: "XX", // 在上一个编号基础上加1
title: "[Title]",
description: "[Description]",
tags: ["Tag1", "Tag2"],
PreviewComponent: [Name]Preview,
},
];Step 4: Update globals.css
步骤4:更新globals.css
Add ViewTransition CSS for new design in :
src/app/globals.csscss
/* Add to existing shared element transitions section */
::view-transition-old([design-id]-light),
::view-transition-new([design-id]-light),
::view-transition-old([design-id]-dark),
::view-transition-new([design-id]-dark),
::view-transition-old([design-id]-light-panel),
::view-transition-new([design-id]-light-panel),
::view-transition-old([design-id]-dark-panel),
::view-transition-new([design-id]-dark-panel) {
animation-duration: 300ms;
animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
/* Add to reduced motion section */
@media (prefers-reduced-motion: reduce) {
::view-transition-old([design-id]-light),
::view-transition-new([design-id]-light),
::view-transition-old([design-id]-dark),
::view-transition-new([design-id]-dark),
::view-transition-old([design-id]-light-panel),
::view-transition-new([design-id]-light-panel),
::view-transition-old([design-id]-dark-panel),
::view-transition-new([design-id]-dark-panel) {
animation: none;
}
}在 中添加新设计的ViewTransition CSS:
src/app/globals.csscss
/* 添加至现有共享元素过渡区域 */
::view-transition-old([design-id]-light),
::view-transition-new([design-id]-light),
::view-transition-old([design-id]-dark),
::view-transition-new([design-id]-dark),
::view-transition-old([design-id]-light-panel),
::view-transition-new([design-id]-light-panel),
::view-transition-old([design-id]-dark-panel),
::view-transition-new([design-id]-dark-panel) {
animation-duration: 300ms;
animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
/* 添加至减少动效区域 */
@media (prefers-reduced-motion: reduce) {
::view-transition-old([design-id]-light),
::view-transition-new([design-id]-light),
::view-transition-old([design-id]-dark),
::view-transition-new([design-id]-dark),
::view-transition-old([design-id]-light-panel),
::view-transition-new([design-id]-light-panel),
::view-transition-old([design-id]-dark-panel),
::view-transition-new([design-id]-dark-panel) {
animation: none;
}
}ViewTransition Naming Convention
ViewTransition命名规范
| Element | Pattern | Example |
|---|---|---|
| Light card | | |
| Dark card | | |
| Light panel | | |
| Dark panel | | |
| 元素 | 命名模式 | 示例 |
|---|---|---|
| 浅色卡片 | | |
| 深色卡片 | | |
| 浅色面板 | | |
| 深色面板 | | |
Code Button Format
代码按钮格式
tsx
<a
href="https://github.com/ainergiz/design-inspirations/blob/main/src/app/designs/[design-id]/page.tsx"
target="_blank"
rel="noopener noreferrer"
className="flex items-center gap-1.5 px-3 py-1.5 text-sm text-zinc-500 hover:text-zinc-700 hover:bg-zinc-100 rounded-lg transition-colors"
>
<Code className="w-4 h-4" />
<span className="hidden sm:inline">Code</span>
</a>tsx
<a
href="https://github.com/ainergiz/design-inspirations/blob/main/src/app/designs/[design-id]/page.tsx"
target="_blank"
rel="noopener noreferrer"
className="flex items-center gap-1.5 px-3 py-1.5 text-sm text-zinc-500 hover:text-zinc-700 hover:bg-zinc-100 rounded-lg transition-colors"
>
<Code className="w-4 h-4" />
<span className="hidden sm:inline">Code</span>
</a>Attribution Format
来源署名格式
tsx
<a
href="https://x.com/[username]"
target="_blank"
rel="noopener noreferrer"
className="flex items-center gap-2 text-sm text-zinc-500 hover:text-zinc-700"
>
<span className="hidden sm:inline text-zinc-400">Inspired from</span>
<Image
src="https://unavatar.io/x/[username]"
alt="[Name]"
width={24}
height={24}
className="w-6 h-6 rounded-full"
/>
<span className="font-medium text-zinc-700">@[username]</span>
<ExternalLink className="w-3.5 h-3.5" />
</a>tsx
<a
href="https://x.com/[username]"
target="_blank"
rel="noopener noreferrer"
className="flex items-center gap-2 text-sm text-zinc-500 hover:text-zinc-700"
>
<span className="hidden sm:inline text-zinc-400">Inspired from</span>
<Image
src="https://unavatar.io/x/[username]"
alt="[Name]"
width={24}
height={24}
className="w-6 h-6 rounded-full"
/>
<span className="font-medium text-zinc-700">@[username]</span>
<ExternalLink className="w-3.5 h-3.5" />
</a>Step 5: Custom Animations (if needed)
步骤5:自定义动画(如有需要)
If your component has custom animations (e.g., carousels, progress bars), add keyframes to :
src/app/globals.csscss
/* Example: Carousel progress animation */
@keyframes carousel-progress {
from {
transform: scaleX(0);
}
to {
transform: scaleX(1);
}
}
.animate-carousel-progress {
animation: carousel-progress linear forwards;
}Common animation patterns:
- Progress bars: to
scaleX(0)withscaleX(1)origin-left - Fade in: to
opacity: 0opacity: 1 - Slide up: to
translateY(10px)translateY(0)
如果你的组件包含自定义动画(例如轮播图、进度条),请在 中添加关键帧:
src/app/globals.csscss
/* 示例:轮播图进度动画 */
@keyframes carousel-progress {
from {
transform: scaleX(0);
}
to {
transform: scaleX(1);
}
}
.animate-carousel-progress {
animation: carousel-progress linear forwards;
}常见动画模式:
- 进度条:从 到
scaleX(0),设置scaleX(1)origin-left - 淡入:从 到
opacity: 0opacity: 1 - 上滑:从 到
translateY(10px)translateY(0)
Related Skills
相关技能
Consider using these patterns in your design:
- component-variants: Color token mapping for light/dark modes
- expandable-card: Smooth expand/collapse with grid-rows
- image-carousel: Auto-advance carousel with touch support
- glassmorphism: Frosted glass overlay effects
- nested-card: Outer gradient with inner content card
- stacked-cards: Fanned/cascading card stacks with hover lift
- dropdown-menu: Click-outside detection and z-index stacking
在设计中可参考以下模式:
- component-variants:适配浅色/深色模式的颜色令牌映射
- expandable-card:基于grid-rows的平滑展开/收起效果
- image-carousel:支持触摸操作的自动轮播图
- glassmorphism:毛玻璃覆盖层效果
- nested-card:外层渐变搭配内层内容卡片
- stacked-cards:带悬停抬升效果的扇形/层叠卡片组
- dropdown-menu:点击外部关闭检测及z-index层级管理
Checklist
检查清单
- Preview component created with correct ViewTransition names
- Detail page created with split layout
- Code button links to component file on GitHub
- Design entry added to main page designs array
- globals.css updated with ViewTransition CSS
- Custom keyframes added to globals.css (if needed)
- Attribution included (if available)
- Both light and dark variants implemented
- Components follow existing code style
- Touch interactions considered for mobile
- 已创建预览组件,且ViewTransition命名正确
- 已创建详情页,采用分栏布局
- 代码按钮已链接至GitHub上的组件文件
- 已在主页的设计列表数组中添加新条目
- 已在globals.css中更新ViewTransition CSS
- 已在globals.css中添加自定义关键帧(如有需要)
- 已包含来源署名(如提供)
- 已实现浅色和深色两种变体
- 组件遵循现有代码风格
- 已考虑移动端的触摸交互