desigma
Rust로 만든 무료 Figma 대안
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Mylder's design system: design tokens, icons and React components on Base UI, with an MCP server for agents.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Perron is the design system of Mylder, a live map of Copenhagen's buses, S-tog, metro and regional trains. This repository holds all of it: the design tokens and the build that turns them into CSS, TypeScript and a Penpot file, the fonts, the icons and the Mylder mark, the guidelines in docs/foundations/, and 54 React components and 14 patterns on Base UI, with APIs shaped like MUI's and their own words in English, Danish, Swedish and Norwegian. Every Mylder screen is built from them.
Each component and pattern is built to the component contract by the factory loop of the roadmap: a spec goes in, and a loop of agents writes the code, the stories, the tests and the docs, with a code review as the gate.
Docs: marcin-sieradzki.github.io/perron, with the Storybook beside it. Packages: @mylder/perron and @mylder/perron-mcp on npm.
npm install @mylder/perron
import '@mylder/perron/perron.css'
import { Button, PerronProvider } from '@mylder/perron'
import { DepartureRow } from '@mylder/perron/patterns'
Load the stylesheet once at the app root, and wrap the app in PerronProvider to set the language of the words the components show on their own. Light is the default theme; data-theme="dark" on any element switches it. The package's README has the rest.
Agents can ask the MCP server, npx -y @mylder/perron-mcp over stdio, for Perron's tokens, docs and components and for the Base UI and MUI API of the versions a project installs; its README has the tools and the .mcp.json entry.
The tokens follow the Design Tokens specification 2025.10, the first stable version from the W3C Design Tokens Community Group: its Format module for the files, its Color module for colour values and its Resolver module for how base, light and dark combine.
The build checks every file against the format rule by rule (scripts/lib/spec.ts) before it writes anything, so a token that breaks the format fails npm run check. The format's $root tokens and $extends groups are not read by the build yet; the check reports them until it does.
| Path | What it is |
|---|---|
packages/perron/ | The @mylder/perron package, published to npm, which holds the next eight paths and data/, the tokens, docs and components as JSON for the MCP server |
packages/perron/src/ | The components, the patterns (exported from @mylder/perron/patterns), PerronProvider and the locales: en, da, sv and nb |
packages/perron/components.json | The registry: every component and pattern with its layer, status, Base UI parts and dependencies. npm run registry writes the barrels, exports and spec pages from it |
packages/perron/tokens/*.tokens.json | The token sources: base, a light and a dark theme, and motion-reduced overrides |
packages/perron/tokens/perron.resolver.json | How the files combine (the format's resolver module): base always, then light or dark, then full or reduced motion |
packages/perron/tokens/generated/ | Built from the sources: tokens.css, typography.css, tokens.ts, and penpot.tokens.json in the older flavour Penpot imports. Never edit by hand |
packages/perron/styles/perron.css | The one file an app loads: fonts, tokens, typography classes, the icon class and page defaults |
packages/perron/icons/ | The icons as SVG files, and icons.json, which lists them by category with the size and use of each |
packages/perron/logos/ | The Mylder mark, one file per theme, and logos.json |
packages/mcp/ | The @mylder/perron-mcp package, the MCP server for agents: tokens, docs and the pinned Base UI and MUI references |
.mcp.json | The MCP servers a session here gets: Perron's own, from source, and the hosted MUI and Base UI docs |
scripts/ | The token and docs build and its tests: the format, contrast, icon style and logo colours |
Both packages release from CI with Changesets. A PR that changes what a package ships adds a changeset (npx changeset): the packages it releases, the bump, and the changelog line. On main, .github/workflows/release.yml gathers the changesets into a "Version packages" PR. Merging that PR packs the new versions, installs the tarballs in a scratch Vite app (scripts/smoke-consumer.ts), and publishes the same tarballs to npm with provenance through npm trusted publishing, so no npm token is kept once the packages exist. The very first publish, before npm can trust the workflow, signs in with a short-lived NPM_TOKEN secret that is deleted afterwards.
Every token is --perron-<group>-<name> in CSS and <group>.<name> in the sources.
palette.<hue>.<step>. A neutral ramp from 0 (white) to 950, and blue, green, orange, red and yellow at steps 100, 300, 500, 700 and 900. Only colour tokens read the palette.text, surface, border, status (success, warning, danger, info) and the brand colour for the interface; chart, transit (lines, modes, delays, severities), data-state and map for what Mylder shows. For example --perron-color-text-secondary, --perron-color-surface-warning, --perron-color-transit-line-a.space.050 is 2 px, space.200 8 px, space.800 32 px.xs 4, sm 6, md 8, lg 12, xl 16 px and full.typography.* (display, heading-*, body, label, overline, stat, data-* and more), each a composite of family, weight, size, line height and tracking. Sizes use the spacing numbers: font.size.400 is 16 px.border.width.025 (1 px) and border.width.050 (2 px); focus.width and focus.offset for the focus ring.icon.size.325, icon.size.400 and icon.size.450: 13, 16 and 18 px.shadow, size, opacity, z-index, duration, easing, breakpoint, effect, vehicle-dot (the data-state dot's geometry) and map (canvas measures).Node 22 or later.
npm install
npm run tokens # rebuild packages/perron/tokens/generated and the tables in docs/foundations
npm run check # generated files and tables up to date, typecheck, lint, format, tests
npm run storybook # the guideline pages in Storybook, at localhost:6006
npm run dev -w website # the website, at localhost:3000/perron/ (its path on GitHub Pages)
npm run storybook:build # Storybook in dist/storybook
npm run site:build # the docs site in dist/site, after npm run build -w website and storybook:build
npm run smoke # pack both packages and install them in a scratch Vite app
Storybook reads docs/ itself (scripts/lib/pages.ts), so its pages change with the markdown and the tokens. Each page has a two-line MDX file in storybook/pages/; a Light and Dark switch on every page sets the theme.
The docs site is deployed to GitHub Pages from main by the CI workflow, once the check passes: the website from website/ at the root, and this Storybook under storybook/. Beside them, scripts/build-site.ts writes what agents read: llms.txt with one line per page, a Markdown twin of every page at its path in this repository, and an AGENTS.md for apps that install Perron.
Vercel builds the same site from vercel.json on every push: at the root of its own address rather than under /perron/, because the build sets PERRON_SITE_URL to the project's production address, and website/lib/base-path.ts takes the base path and every absolute link from it. Pull requests get a preview there too. Only the Vercel build adds Vercel Web Analytics to the website's pages, which counts visits without cookies once Web Analytics is enabled on the project; Storybook and the GitHub Pages copy are not counted.
docs/foundations/ |
| One page per foundation, with tables the build fills in |
storybook/, .storybook/ | The same pages in Storybook, with every table drawn live from the tokens: swatches, type specimens, contrast grids, the icons and the mark |
website/ | The docs site, a Next.js workspace that reads the same docs, registry and tokens as Storybook |
penpot/ | The helpers agents design with in the "Perron Design System" Penpot file, and each design read back from it |
docs/content-design.md | How every word in Mylder reads |
docs/glossary.md, docs/adr/ | The words used to talk about Perron, and the decisions behind it |
docs/agents/ | How the engineering skills file, link and close work in this repository's GitHub Issues |
ROADMAP.md | How Perron is built, phase by phase: the rails, the contract, the agent loop, the components and patterns, and what comes next |
docs/renames.md | Token names that changed or went away, for code written against an older name |
.claude/skills/, .claude/agents/ | Agent skills: design-tokens; the component loop, /factory and its stages component-design, component-brief, component-build, component-reviewer and component-docs; the library audits; vercel-react-best-practices from vercel-labs/agent-skills (MIT); and the others from mattpocock/skills (MIT) |
.claude/workflows/ | factory-stage, the Claude Code workflow that runs one stage of the loop in a fresh context |
components/<name>/ | One component's place in the loop: pipeline.yaml, written by npm run factory alone, the review and the visual report |