组件 Components
一套可以直接落地的组件语法:3px 黑框、5px 中硬影、直角平面和明确的交互反馈。 每个组件都把实现代码和 live demo 放在同一条阅读路径上。
Button
主要、次要、幽灵、强调变体。
卡片
内容容器。维度:圆角 / 边框 / 阴影 / 交互(链接 vs 静态容器)。
.card {
border: 3px solid var(--sx-sys-color-border);
background: var(--sx-sys-color-bg-surface);
box-shadow: var(--sx-sys-shadow-md);
padding: var(--sx-comp-card-padding);
transition: transform 0.15s, box-shadow 0.15s;
}
.card--interactive:hover {
transform: translate(-2px, -2px);
box-shadow: var(--sx-sys-shadow-lg);
}
/* 变体级 token:边框与珊瑚色偏移影 */
box-shadow: var(--sx-comp-card-colored-shadow);卡片变体 Card Variations
Standard Card
黑边 + 黑影。百搭主力,任何背景上都成立。
DefaultColored Shadow
同色边框 + 撞色偏移影,保留结构的同时加点个性。
AccentFilled Card
满色底 + 黑框黑影把能量框住。适合 CTA。
Highlight徽章
状态标记,含 default / accent / action / danger / success 五个变体,按内容状态语义映射颜色。
.badge {
border: 3px solid var(--sx-sys-color-border);
background: var(--sx-sys-color-bg-surface);
box-shadow: var(--sx-sys-shadow-sm);
text-transform: uppercase;
}
.badge--accent { background: var(--sx-sys-color-accent); }
.badge--success { background: var(--sx-sys-color-success); }Breadcrumb
层级路径导航,等宽字体 + / 分隔符,最后一项为当前页(不可点)。
.crumb__pill {
border: 3px solid var(--sx-sys-color-border);
box-shadow: var(--sx-sys-shadow-sm);
}
.crumb__link {
opacity: 0.6;
}
.crumb__link:hover {
color: var(--sx-sys-color-text-primary);
}
/* 最后一项 = 当前页(黄底常驻,不可点 span) */
.crumb__current {
color: var(--sx-sys-color-text-primary);
}命令行
仿终端的命令行展示块。标题栏 + 深色屏幕,行类型覆盖命令 / 输出 / 成功 / 错误 / 注释,可选闪烁光标,零 JS。
.term {
border: 3px solid var(--sx-sys-color-border);
box-shadow: var(--sx-comp-term-shadow);
}
.term__screen {
font-family: var(--sx-sys-font-family-mono-system);
overflow-x: auto;
}
/* light:浅屏黑字(默认)/ dark:黑屏浅字 */$ npx astro dev --host
↳ Local http://127.0.0.1:4321
↳ Network http://192.168.1.5:4321$ npx astro dev --host
↳ Local http://127.0.0.1:4321
↳ Network http://192.168.1.5:4321FeatureCard
撞色 icon 方块 + 标题 + 描述 + 撞色偏移硬影(贴纸堆)。与首页 Entry 同款。
.featurecard {
border: 3px solid var(--sx-sys-color-border);
box-shadow: var(--sx-sys-shadow-md);
}
a.featurecard:hover {
transform: translate(-2px, -2px);
box-shadow: var(--sx-sys-shadow-lg);
}
/* 撞色机制:局部覆盖 shadow-color,偏移走 3/5/8 ramp token */
--sx-fc-icon-bg: var(--sx-sys-color-accent);
--sx-sys-shadow-color: var(--sx-sys-color-action-primary);StaticCard
满色底静态展示卡 · 不可点 · 无 hover。纯展示用,与可点 FeatureCard 是两个独立组件。
.staticcard {
background: var(--sx-sys-color-bg-surface);
border: 3px solid var(--sx-sys-color-border);
}
/* 标签使用撞色 · 无 hover · 纯展示(不可点) */Gumroad
The poster child. Sahil Lavingia's 2021 10-year rebrand traded the corporate SaaS look for flat candy fills, sharp black outlines, and hard offset shadows. Still unmistakably neubrutalist today.
Creator EconomyTony's Chocolonely
Proof it scales past tech. Clashing flat color fields, oversized chunky display type, and square-cornered buttons drive a mainstream consumer brand — loud by design, on purpose.
Consumer / CPGPanda CSS
CSS-in-JS library with a fully neubrutalist marketing site — 4px 4px 0 0 black shadows and 3px solid black borders straight from the production stylesheet. Dev tools are a natural home for the style.
neobrutalism.dev
The canonical component library (5,000+ GitHub stars). A shadcn/ui-based React + Tailwind system whose own docs site is a textbook reference implementation: grid background, thick borders, hard shadows on every control.
Open SourceDodonut
Design-studio portfolio leaning all the way in: black-bordered nav and buttons with hard offset shadows, flat lime and purple fills, oversized type. Agencies use the style as a craft signal.
AgencyFigma Cautionary
An early, influential adopter (~2019–2023): heavy black outlines and bold flat color. But its 2024 rebrand deliberately dropped those outlines — a reminder that even category leaders cycle out of a trend.
Moved on代码转换对比
双窗口代码转换展示块。左侧源 + 中间双箭头 + 右侧目标;bar 控制顶栏深浅(dark/light),用于展示 Markdown→HTML 等格式转换。
.cmp {
display: flex;
gap: 1.25rem;
}
.win {
border: 2px solid var(--sx-sys-color-border);
background: var(--sx-sys-color-beige);
}
/* 中间黑底黄箭头连接源 ↔ 目标 */文档侧栏
文档左侧边栏导航。多组 eyebrow + 链接列表;支持当前页高亮与 planned 灰显,数据驱动、零 JS。
.doc-side__link {
font-family: var(--sx-sys-font-family-mono);
}
.doc-side__link[aria-current='page'] {
label: 黄底徽章 + 指示条加粗;
}
/* planned:灰显不可点 span */调参台
拖动滑块实时感受 neubrutalism grammar——边框 / 硬影 / 圆角 / 底色。React island。
Live Preview
3px 框 · 5px 影 · 0px 角
表单控件
input / select / textarea / checkbox / radio / toggle——全部 neubrutalism 化:黑框硬影零圆角,focus 蓝色 outline。
通知
success / error / warning / info 四种 toast,点击触发、3 秒自动消失,assertive / polite 双语义。React island。
点击上方按钮触发通知
分割线
平面黑条结构分隔线——neubrutalism 语法,承接被替换的涂鸦分割线。零 JS 静态组件。
.sectiondivider {
height: var(--sx-sd-weight);
background: var(--sx-sd-color);
border: 0;
}
/* weight → border token */
thin var(--sx-sys-border-width) 2px
default var(--sx-sys-border-width-strong) 3px
thick calc(...strong × 2) 6px对话框
遮罩 + 居中面板:3px 黑边 + shadow-xl 重硬影。点遮罩 / ✕ / ESC 关闭,focus trap + scroll lock。React island。
.modal__overlay {
position: fixed;
background: color-mix(in srgb, var(--sx-sys-color-border) 55%, transparent);
}
.modal__panel {
border: 3px solid var(--sx-sys-color-border);
box-shadow: var(--sx-sys-shadow-xl);
border-radius: 0;
}
/* 关闭:点遮罩 / ✕ / ESC;Tab 在面板内循环 */对比度检查器
双 hex 输入 → WCAG 对比度比值 + AA/AAA(normal/large)pass/fail + 实时文本预览。React island。
// WCAG 对比度阈值
AA normal ≥ 4.5 large ≥ 3.0
AAA normal ≥ 7.0 large ≥ 4.5
// ratio = (L_lighter + 0.05) / (L_darker + 0.05)风格对照切换
Standard SaaS ↔ Neubrutalist 同内容切换:同一张卡片只改边框 / 圆角 / 阴影三属性,气质反转。React island。
/* 同一张卡片,只改三个属性 */
border-radius 12px → 0
box-shadow 0 4px 12px rgba() → 5px 5px 0 #000
border 1px solid #d4d4d8 → 3px solid #000同一段内容
切换 toggle,看同一张卡片只改边框 / 圆角 / 阴影三件事,气质如何反转。
Token 速查
neubrutalism grammar 的全部参数——边框两档、硬影 3/5/8/12 四档、圆角恒 0。硬影色由--sx-sys-shadow-color 控制(默认 ink 黑,组件可局部覆盖做撞色偏移)。
| Token | 取值 | 用途 |
|---|---|---|
--sx-sys-border-width | 2px | 细笔触 · 次级元素 / SectionDivider thin 档 |
--sx-sys-border-width-strong | 3px | 主组件默认(按钮 / 卡片 / 输入 / toast / 分割线) |
--sx-sys-shadow-sm | 3px 3px 0 var(--sx-sys-shadow-color) | 小硬影 · badge / 输入 / 卡片默认 |
--sx-sys-shadow-md | 5px 5px 0 var(--sx-sys-shadow-color) | 中硬影 · toast / 输入 focus 升级 |
--sx-sys-shadow-lg | 8px 8px 0 var(--sx-sys-shadow-color) | 大硬影 · hover 抬升档 |
--sx-sys-shadow-xl | 12px 12px 0 var(--sx-sys-shadow-color) | 重硬影 · hero / dialog |
--sx-sys-radius-control | 0 | 恒 0 圆角(全站控件 / 容器无例外) |
计划中
尚未实现。用脚手架生成本体 + demo 后,把 registry 条目改 live 即可出现在上方。
- Tag等宽字体的轻量标记。
pnpm gen:component Tag - Callout引用 / 警告 / 想法等内容提示。
pnpm gen:component Callout