Doop
Doop: 오픈소스 멀티플레이어 디자인 캔버스 및 AI 에이전트용 MCP
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기复刻 Apple Liquid Glass 质感的 React 组件库:真实边缘折射、动态高光与优雅毛玻璃降级。|React component library recreating Apple Liquid Glass with real edge refraction, dynamic highlights & graceful frosted fallback.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
按 Apple 的设计语言做的一套 React 组件库:会折射背景的玻璃材质、完整的语义色与文字体系、可以拖动的原生控件。 独立项目,不是 Apple 官方产品,也不包含 Apple 的字体或图标素材。 需要 React 19。除此之外没有其它运行时依赖。 这个包名在 2026 年 7 月发过 0.1.0 / 0.2.0,那是另一套实现,现已从 registry 整包下架。本项目是完整重写,版本号从 0.0.1 重开。如果你的锁文件里还写着 ^0.2.0,它现在解析不到任何东西,改成 ^0.0.1。 样式表在应用入口引一次就够了。 玻璃只用在浮起来的那一层。正文、列表、卡片保持不透明——如果满屏都是半透明的,就没有东西真的浮起来了。 默认是磨砂——模糊、提色、高光、边线,四个引擎上一样。边缘折射要自己打开: 打开之后,Chromium 系(Chrome、Edge)走 SVG 位移拿到真的折射;Safari 和 Firefox 拿不到,退回磨砂。**布局、README 전문 보기 ↗
按 Apple 的设计语言做的一套 React 组件库:会折射背景的玻璃材质、完整的语义色与文字体系、可以拖动的原生控件。
文档站:https://tsdsj.github.io/liquid-glass-react/
独立项目,不是 Apple 官方产品,也不包含 Apple 的字体或图标素材。
pnpm add @ttqtt/liquid-glass-react
需要 React 19。除此之外没有其它运行时依赖。
这个包名在 2026 年 7 月发过 0.1.0 / 0.2.0,那是另一套实现,现已从 registry 整包下架。本项目是完整重写,版本号从 0.0.1 重开。如果你的锁文件里还写着
^0.2.0,它现在解析不到任何东西,改成^0.0.1。
import {
GlassProvider, ToastProvider,
GlassToolbar, ToolbarGroup, ToolbarSpacer, GlassButton,
} from '@ttqtt/liquid-glass-react';
import '@ttqtt/liquid-glass-react/style.css';
export function App() {
return (
<GlassProvider theme="system">
<ToastProvider>
<GlassToolbar aria-label="图片操作">
<ToolbarGroup>
<GlassButton>查看原图</GlassButton>
</ToolbarGroup>
<ToolbarSpacer variant="flexible" />
<ToolbarGroup prominent>
<GlassButton variant="glassProminent">导出</GlassButton>
</ToolbarGroup>
</GlassToolbar>
</ToastProvider>
</GlassProvider>
);
}
样式表在应用入口引一次就够了。
66 个组件,分成两层——这个分层本身就是这套设计的核心:
| 层 | 组件 |
|---|---|
| 内容(实色,不透明) | Text、Card、Concentric、GroupBox、List、OutlineView、MaterialView、Divider、Kbd、DisclosureGroup |
| 控件 | GlassButton、GlassSegmentedControl、GlassSwitch、GlassCheckbox、RadioGroup、GlassSlider、GlassStepper、GlassProgress、GlassBadge、Picker、ColorWell |
| 输入 | TextField、SearchField |
| 导航 | GlassToolbar、MenuBar、PathBar、TabBar、Sidebar、NavigationBar、GlassTabs、ScrollEdge、PageControl |
| 布局(骨架) | Screen、NavigationStack、SplitView、Inspector、Grid、Form |
| 浮层 | GlassPopover、GlassMenu、GlassMenuButton、ContextMenu、CommandPalette、Tooltip、GlassSheet、GlassAlert、GlassActionSheet、GlassDialog、Panel、ToastProvider、Banner |
玻璃只用在浮起来的那一层。正文、列表、卡片保持不透明——如果满屏都是半透明的,就没有东西真的浮起来了。
GlassBackdrop 告诉它背后是深是浅,库不会去读取页面像素。id、style、data-*、aria-*。开发模式下还会对几条最容易踩的设计错误出声——玻璃套玻璃、一屏两个主操作、clear 用在没声明色调的地方——生产构建里这些完全不存在。默认是磨砂——模糊、提色、高光、边线,四个引擎上一样。边缘折射要自己打开:
<GlassProvider enableSvgAuto>
打开之后,Chromium 系(Chrome、Edge)走 SVG 位移拿到真的折射;Safari 和 Firefox 拿不到,退回磨砂。布局、语义、键盘路径都不依赖这条分支,有 16 项 WebKit / Firefox 用例守着这一点。
模糊是 CSS 链里的第一个函数,滤镜只管位移——所以哪家引擎丢掉了 url(),剩下的仍然是真的磨砂,而不是一块透明的洞。
:root, [data-lg-theme="light"] { --lg-accent: #6d28d9; }
[data-lg-theme="dark"] { --lg-accent: #8b5cf6; }
更多在主题指南里。
服务端先出磨砂效果,到浏览器再升级成折射,中间不会闪。Next.js App Router 只需在根布局里引一次样式表;整个包已经标成客户端组件。
pnpm install
pnpm dev # 文档站 http://127.0.0.1:5173
pnpm check # 类型检查 → 构建 → 单元 → SSR → 站点 → 真实 Chrome → WebKit/Firefox
src/
tokens/ 颜色、文字、间距、形状、动效的取值
core/ 不依赖浏览器的几何计算、弹簧、缓存
react/ 组件,按 内容 / 控件 / 输入 / 导航 / 浮层 分目录
styles/ tokens.css + components.css
site/ 文档站
tests/ core 单元测试、SSR 测试、Playwright 浏览器测试
docs/ 设计系统、API、无障碍、迁移、架构、测试口径
82 单元 · 7 SSR · 462 真实 Google Chrome · 15 开发模式 · 18 WebKit + Firefox
SSR 那三项跑的是 dist/,也就是真正发出去的那份。玻璃压在真实场景上的文字对比度是从合成后的像素上量的——把两个色值填进计算器不算数,因为玻璃的最终颜色取决于它背后是什么。三个引擎上最差的一块 7.83:1。
还没做完的:
详细清单见 docs/known-limitations.md。0.x 阶段仍可能有破坏性改动,每次都给改名对照表。
MIT,见 LICENSE 与 THIRD_PARTY_NOTICES.md。