PartCAD
The first package manager for CAD files
A React component library in dark glass: translucent surfaces, borders that catch a pointer light, one accent colour. Tailwind v4, zero dependencies.
Translation pending
DesignTypeScript · CSSGitHub @r1nzaiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
React components in dark glass: translucent surfaces, hairline borders that catch a pointer light, one accent colour. Tailwind v4, no runtime dependencies.
Translation pending
Taken from the repository README
Loading the full README.
Read the full 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