Repository navigation
Minor Changes
-
#92
ebc7dbcThanks @dgesteves! -onsystem initin a design-system package now declares its config in its package.json ("onsystem": "./onsystem.config.json") and writes ONSYSTEM.md for the teams of the apps that use it, and an app with no config of its own takes on the config a dependency declares, from the workspace or fromnode_modules, in the CLI, the MCP server and the ESLint plugin alike.In a monorepo, an app with no config of its own that depends on such a package reads the package's config rather than the monorepo root's, so the root config's rules no longer apply to it.
-
#87
6c20ad8Thanks @dgesteves! - Import and export design tokens as DTCG 2025.10 and DESIGN.md. DTCG files now read$roottokens and groups that$extendsanother, which were left out before. A DESIGN.md's front matter is a token source, which zero config reads when it finds no stylesheet or DTCG file.onsystem export --format dtcg|design-mdprints the tokens it found, or writes them with--out: the DTCG file keeps colors as color objects, sizes as{ value, unit }, aliases as references, and the token's name, the custom property, the Tailwind theme variable and the dark mode under$extensions["com.github.dgesteves.onsystem"], so reading it back gives the same findings, with the same token names. -
#86
1d8000eThanks @dgesteves! - MUI apps get a design system with no config: when a project depends on@mui/materialand it is installed, onsystem reads MUI's components from the package's type declarations with the TypeScript checker, for MUI 5 to 9. It reads each component's props (Button'shrefsignature included), the values of its string-literal props as variants (variant,color,size, TextField's genericvariant), values the app adds by module augmentation or in its theme (teal: { main },components.MuiChip.variants), the element it renders and the module that default-exports it.check,check_uiand the hook then report invented MUI components, props and variant values, skip props whencomponentis set, and count aTooltipwith a stringtitleas its child's accessible name. Palette colors, the spacing unit, border radius and font family come from thecreateThemeoptions the app writes out, following constants it imports by a relative path. Where the app has components of its own, those win a shared name in what the tools offer and suggest, while code that imports MUI's is checked against MUI's.inspectshows the library on alibraryline, and a workspace package that uses MUI is a project of its monorepo root."libraries": falsein the config turns this off, and a list (["mui"]) reads only the libraries it names.check --require-design-system, and the GitHub Action, which turns it on by default, count MUI's components as the app's design system: when the theme's colors cannot be read, as with a palette from Sass variables, the check runs and says thatno-hardcoded-colordid not. Libraries are adapters (src/libraries), so Chakra UI, Mantine, HeroUI and Radix Themes can follow.
Patch Changes
-
#79
ebb0fa8Thanks @dgesteves! - The GitHub Action's description is shorter than 125 characters, so the release can be published to the GitHub Marketplace. -
#80
037b19cThanks @dgesteves! -initwrites a config wherecheckandinspectalready find the design system without detecting one: an app withcomponents/uiand nocomponents.json. It spells out the default globs that match and the token files found, with--yes, without a terminal, and in one (where it no longer asks where the components are). Before,init --yesandinitwithout a terminal exited 2 with "zero config found no design system". -
#96
a380586Thanks @dgesteves! -initnamesonsystem.baseline.jsonin its next steps only when it wrote one. Without a terminal, it says that it skipped the baseline question and thatonsystem check . --update-baselinerecords one.inspect --explainlists eachdocsglob once, where a shadcn/ui app listedcomponents/ui/**/*.{md,mdx}twice. The MCP server's load line counts components asinspectdoes:loaded 4 components (+6 parts), notloaded 10 components. -
#84
7042a12Thanks @dgesteves! - The package's npm page links to the website, onsystem.vercel.app, rather than the README on GitHub. -
#90
8d62016Thanks @dgesteves! - A Tailwind v3borderRadius.DEFAULTtoken is suggested asrounded, notrounded-DEFAULT. -
#89
58e6b63Thanks @CRYPTONIKAV! - Tailwind v3 projects: radius values set intailwind.configborderRadius, or in a preset it imports, are read, so4pxin a project whoserounded-smiscalc(var(--radius) - 4px)suggestsrounded-sm. Thanks @CRYPTONIKAV. -
#80
8549f8fThanks @dgesteves! -npx onsystemwith no command, typed in a terminal, says on stderr what it is before it starts the MCP server, which otherwise sits waiting on stdin and looks hung: where to add it to an agent, and thatinspectorcheck .is what to run by hand. An MCP client starts it with a pipe, not a terminal, so clients see nothing new.