Materializr
오픈소스 파라메트릭 3D CAD로 제약 스케치·솔리드 모델·나사·SVG·텍스트 조각·STL/STEP 내보내기를 지원합니다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Shared cross-app UI primitives for WORDMARK's font tools (font-proofer, ReCal Sans)
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
The promise: every control works and renders the same, from one source. A dial in
font-proofer, in ReCal, in opsz-proofer and in Kernpare is the same file, and a change
to it reaches all four only after every one of them has been built, driven with a
finger, and screenshotted against a baseline. If something here is inconsistent, that
is a bug with a test missing, not a style choice.
This page is in the order you meet things. Everything it links to is the source; if
this page and a linked file disagree, the file is right.README 전문 보기 ↗The promise: every control works and renders the same, from one source. A dial in font-proofer, in ReCal, in opsz-proofer and in Kernpare is the same file, and a change to it reaches all four only after every one of them has been built, driven with a finger, and screenshotted against a baseline. If something here is inconsistent, that is a bug with a test missing, not a style choice.
This page is in the order you meet things. Everything it links to is the source; if this page and a linked file disagree, the file is right.
COMPONENTS.md — every export, one line each, which apps draw it, and
where its spec lives. Generated from index.ts, never hand-kept.
The ones people come for:
AxisSlider — the dial. One number on one axis; rail, field, stepper; four
variants. Spec DIAL.md, promises GESTURES.md.ThemeSwitch — Auto / Light / Dark, one engine, two looks.Icon and Chevron — the one mark, the one chevron.dist/dial.js — the dial for a page with no React, same source, as a script tag.color.css,
type.css (TYPOGRAPHY.md), space.css, motion.css.grid.css + gridSnap.js: 24 columns, a 3px line, one margin. A
standard, with a lint and a CI check: GRID.md.HOST-CONTRACT.md — the tokens the consuming app defines, what each
is, and what breaks without it. Two have no safe fallback: without --border the rail
is invisible; without a theme stamped as data-theme a dark page is black on black.
Both were found by wiring a bare app and are the first two steps of the HOWTO.
HOWTO.md. Part A: a submodule at shared/, the peer deps, the three token
sheets, the contract, data-theme, one dial rendered — ten steps, each one a trap that
was hit once. Part B: a new dial design is a variant, and how the receiving app takes
it.
Every rule this package writes is inside @layer wm.*. An unlayered rule in your app
beats any of them, at any specificity, first try. Theme through tokens
(the house signal is --signal / --signal-ink, defaulted in color.css; define --accent to override it), choose behavior through props, and reach in with a
selector only as a last resort — where the layer guarantees you win. The header of
src/AxisSlider.css is the long form.
Push to main. consumers.yml checks out every
consumer, puts your commit in its shared/, runs its lint and build, drives the
gestures in Chromium and WebKit, screenshots every row, and only then tells the apps
to deploy. Each app's deploy then waits until wordmark.nyc serves the bundle it built.
Green means live, not pushed. EVAL.md is the methodology;
tests/README.md the suites.
Tags. A change to what a consumer can see — a prop, a token name in
HOST-CONTRACT.md, wmDial's API, a CSS class a host is told to use —
gets a tag: v0.<minor>.<patch>, minor for a contract change, patch for anything else
that ships, and the CHANGELOG entry names it. The deploys build against main today
(git submodule update --remote), which is why "what is live" needed its own check; a
consumer that wants to stand still pins the tag instead. v0.1.0 is the contract as of
2026-09-19.
Consumed as a git submodule, not an npm package; each app's Vite/tsc compiles the TSX directly. Typed TSX; token-based CSS with fallbacks; font identity only — props carry family and axes, never proofing size.