Tile UI
Tile UI is a cross-framework component library built around a shared SCSS design system, framework-specific React, Vue, and SolidJS packages, and a shadcn-style registry distribution model.
Vision
Tile UI aims to become a lightweight, practical UI toolkit with a shared design foundation and a consistent experience across React, Vue, and SolidJS.
The goal is not to build an oversized component library that tries to cover every possible case. The goal is to steadily build a solid base: a clear design language, stable shared styles, reusable core logic, and framework-specific packages that feel aligned rather than fragmented. A big part of that direction is offering a cleaner styling workflow than long, noisy utility class strings, while still keeping the registry-based distribution model flexible and practical.
That vision is still actively being implemented. Many ideas are already clear, but turning them into stable components, reliable documentation, a smooth installation flow, a predictable release process, and maintainable project structure still takes steady work.
Contributions are welcome in all forms, including:
- design direction and visual refinement
- documentation improvements and examples
- new components and component improvements
- API design and implementation work
- ideas, use cases, product needs, and feedback
- issues, bug reports, and reproducible cases
Whether you want to write code, improve docs, suggest an idea, report a problem, or help sharpen a rough edge, your contribution can move the project forward. For contribution guidelines and development workflow details, see .
This repository exposes three framework-specific applications and three package-local registries.
apps/reactfor the React documentation site and React registry.apps/vuefor the Vue documentation site and Vue registry.apps/solidfor the SolidJS documentation site and Solid registry.
More framework adaptations remain welcome as contributors step in.
Shared docs styles and layout primitives live in apps/common.
The current docs implementation provides aligned page groups for all three frameworks:
- installation
- registry
- registry/getting-started
- registry/schema
- registry/examples
- registry/faq
- components
- component detail pages
- hooks, composables, or primitives
- examples
Docs architecture:
- React: Next.js App Router +
fumadocs-mdx+content/docs/*.mdx - Vue: Nuxt +
content/docs/*.mdx+ server-side content loader - Solid: SolidStart + Vite +
content/docs/*.mdx+ server-side content loader (apps/solid/scripts/build-docs.mjs) - Shared presentation layer:
apps/common/styles/*and selected shared docs components
Documentation pages now follow a richer structure with installation, usage, highlights, dependency notes, and API-style sections.
Quick links:
Workspace Layout
Packages
Applications
React
- App path:
apps/react - Local dev port:
3001 - Docs site:
- Registry output:
apps/react/public/r/* - Public registry URL shape:
https://react.tileui.zmorg.cn/r/{name}.json
Vue
- App path:
apps/vue - Local dev port:
3002 - Docs site:
- Registry output:
apps/vue/public/r/* - Public registry URL shape:
https://vue.tileui.zmorg.cn/r/{name}.json
Solid
- App path:
apps/solid - Local dev port:
3003 - Docs site:
- Registry output:
apps/solid/public/r/* - Public registry URL shape:
https://solid.tileui.zmorg.cn/r/{name}.json
Registries
React Registry
- Source manifest:
packages/react/src/registry/manifest.ts - Source items:
packages/react/src/registry/items/* - Published output:
apps/react/public/r/* - Docs metadata source:
apps/react/public/r/registry.json
Example items:
buttoninputtextarealabelcardcorestylesutilsuse-copy-to-clipboarduse-media-queryuse-local-storage
Vue Registry
- Source manifest:
packages/vue/src/registry/manifest.ts - Source items:
packages/vue/src/registry/items/* - Published output:
apps/vue/public/r/* - Docs metadata source:
apps/vue/public/r/registry.json
Example items:
corebuttoninputtextarealabelcardstylesutilsuse-copy-to-clipboarduse-media-queryuse-local-storage
Solid Registry
- Source manifest:
packages/solid/src/registry/manifest.ts - Source items:
packages/solid/src/registry/items/* - Published output:
apps/solid/public/r/* - Docs metadata source:
apps/solid/public/r/registry.json
Example items:
corestylesutilstheme-defaultbuttoninputdialogcreate-copy-to-clipboardcreate-media-querycreate-local-storage
Package install
React package
Import shared styles once in your app entry:
Vue package
In Nuxt, a common setup is:
Solid package
In SolidStart, import the shared styles once near the application root (src/app.tsx) so server rendering and hydration receive the same styles:
SSR-safe browser state helpers import from the canonical @tile-ui/solid/primitives subpath:
Registry install
React registry item
First, register the Tile UI namespace in components.json:
Vue registry item
First, register the Tile UI namespace in components.json:
Solid registry item
First, register the Tile UI namespace in components.json:
Release
Package publishing is handled by GitHub Actions with npm Trusted Publishing and OIDC.
Release tags are package-specific and use this format:
Examples:
Supported package prefixes:
corestylesreactvuesolid
Before tagging a release:
- Update the target package version in
packages/<name>/package.json - Make sure the package version matches the tag version exactly
- Build and validate the target package locally when possible
For the full release workflow and npm Trusted Publishing setup requirements, see CONTRIBUTING.md [blocked].
Development
Useful commands:
docs:check validates expected docs entry routes, internal /docs/... links inside MDX content, and the exact component-doc/demo set for each framework. parity:check compares source manifests, public registry output, docs, and generated previews across React, Vue, and Solid.
Current Scope
The current implementation provides:
- Separate React, Vue, and Solid registries
- Separate React, Vue, and Solid applications for docs and previews
- 62 shared components in each framework, plus Solid primitives (
@tile-ui/solid/primitives) - SolidStart documentation with SSR rendering and hydration
- Shared docs styling in
apps/common - Unified homepage and component showcase patterns across all three frameworks
- Expanded page groups for registry guides, components, utilities, and examples
The next iteration should continue the migration toward a more content-driven documentation system and richer live previews.
License
MIT