PartCAD
CAD 파일을 위한 최초의 패키지 매니저
다크 글래스 스타일의 React 컴포넌트 라이브러리, 투명 표면·빛 반사 테두리·단일 강조색, Tailwind v4, 의존성 없음
A React component library in dark glass: translucent surfaces, borders that catch a pointer light, one accent colour. Tailwind v4, zero dependencies.
디자인TypeScript · CSSGitHub @r1nzai온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기React components in dark glass: translucent surfaces, hairline borders that catch a pointer light, one accent colour. Tailwind v4, no runtime dependencies.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗React components in dark glass: translucent surfaces, hairline borders that catch a pointer light, and one accent colour carrying the UI. Built on native platform features (<dialog>, the Popover API, CSS anchor positioning, radio inputs) with no runtime dependencies.
Documentation · Showcase app · Storybook
pnpm add @rinzai/zen
React 19 is the only peer dependency.
Using Tailwind CSS v4? Add Zen's theme after Tailwind in your stylesheet. Your one Tailwind build then generates everything Zen's components use:
@import 'tailwindcss';
@import '@rinzai/zen/tailwind.css';
Not using Tailwind? Import the complete stylesheet once, near the root of your app. It includes the default theme:
import '@rinzai/zen/css';
Zen never styles your own elements. For its page setup (the background showing through), heading scale, inline code and quiet scrollbars, also add the optional base:
@import '@rinzai/zen/base.css';
The look is set in Geist; load it however you like.
import { Backdrop, Button, Card, CardHeader, CardTitle } from '@rinzai/zen';
export default function App() {
return (
<>
<Backdrop />
<Card>
<CardHeader>
<CardTitle>Budget</CardTitle>
</CardHeader>
<Button>Save changes</Button>
</Card>
</>
);
}
Every docs page ships with the package as markdown, matching the installed version: node_modules/@rinzai/zen/dist/docs (README.md lists them), with the CHANGELOG at the package root. Point your agent there from your AGENTS.md or CLAUDE.md:
UI components come from @rinzai/zen. Its docs, with every example's source, are in node_modules/@rinzai/zen/dist/docs; start at README.md there.
The site has them too: llms.txt, llms-full.txt (everything in one file) and /docs/<component>.md.
useMediaPlayer for your own <audio> or <video>, useMediaSession for the lock screen and media keys, formatDurationthemeWave (the theme spreads from the switch like a drop falling into water: ripples, glints and a rainbow edge, drawn on the GPU; prepareThemeWave readies it when the pointer reaches your own switch), useAnchoredPopup, useVirtualList, useTree, useSort, useCopyToClipboard, money, currency, month and date helpers, hexToOklch and oklchToHex, cx (Tailwind-aware class merging), cvaEvery component takes className, and a class you pass always overrides the component's default. Other props (id, aria-*, data-*, handlers) and ref reach its element, and parts that render a link or button take asChild to use your own (a router's Link, say).
Zen exports no icons. Use any icon set (the examples use Heroicons) and pass icons in as elements, such as icon={<HomeIcon />}.
Controls report changes with onValueChange (onCheckedChange for Checkbox and Toggle). Pass value to control one, or defaultValue to let it keep its own. Give a control a name and it's submitted with its form, the custom ones (Combobox, the date pickers, MoneyInput, ColorPicker, TagInput…) included, and goes back to its first value when the form is reset.
import { LocaleProvider } from '@rinzai/zen';
<LocaleProvider locale="fr-FR" messages={{ clear: 'Effacer', noResults: 'Aucun résultat' }}>
<App />
</LocaleProvider>;
The locale formats dates, numbers and money, and sets the week's first day. messages replaces any of the words Zen shows or announces (ENGLISH lists them all); the rest stay English. With dir="rtl" on the page or any element above, layout, arrow keys and chevrons mirror.
Dark is the default. Add the light class (or data-theme="light") for the light palette. Colours are OKLCH L C H triplets; override any token in your own CSS:
:root {
--primary: 0.72 0.13 200; /* teal instead of violet */
--glow: 0.7 0.13 200;
}
Or generate a whole theme at runtime:
import { applyPreset, applyTheme, DEFAULT_THEME } from '@rinzai/zen';
applyTheme(applyPreset(DEFAULT_THEME, 'ocean'));
For a page composited over something else, such as an OBS browser source, which never gets a pointer:
<html data-zen-glow="ambient" data-zen-page="transparent"></html>
data-zen-glow="ambient" sends the edge light round each glowing border by itself (on any element, it does so for what's inside). data-zen-page="transparent" paints nothing behind the content; it needs the base stylesheet.
Chrome and Edge 114+, Safari 17+ and Firefox 128+: the versions with the native Popover API that popups, menus and toasts are built on, and with what Tailwind v4 needs.
pnpm install
pnpm dev # Storybook
pnpm docs:dev # docs site
pnpm test
pnpm build