Welcome to px-ui, a modern, accessible, TypeScript‑first React component library built for enterprise web apps with
- React 19 + TypeScript
- Tailwind CSS v4
- tsdown for fast builds
- Changesets for version management
Core UI components including Button, Input, Select, Dialog, Calendar, and more. Built with Tailwind CSS v4 and TypeScript.
Form management components built on React Hook Form with Zod validation support.
Documentation site built with Fumadocs and TanStack Start.
pnpm installpnpm start docs devThis starts the documentation site where you can preview all components.
pnpm start core devThis watches the package and rebuilds on changes.
pnpm run lintBuild all packages:
pnpm run buildOr build a specific package:
pnpm --filter @px-ui/core buildThis project uses changesets for version management and automated npm publishing via GitHub Actions.
- Make your changes to components
- Create a changeset:
pnpm changeset
- Select which packages changed (@px-ui/core, @px-ui/forms)
- Choose version bump type (patch/minor/major)
- Write a description of the changes (used in CHANGELOG)
- Commit both your code changes AND the changeset file:
git add . git commit -m "feat: add new Button variant" git push origin master
When you push to master:
- GitHub Actions detects changeset files
- It creates/updates a "Version Packages" PR that:
- Bumps package versions in package.json
- Updates CHANGELOG.md files
- Handles dependency updates (e.g., if @px-ui/core updates, @px-ui/forms dependency updates too)
- Review the PR to see what will be released
- Merge the PR → Packages automatically publish to npm
To enable automated publishing, configure the following GitHub secret:
NPM_TOKEN- Your npm authentication token- Generate at npmjs.com/settings/tokens
- Must have "Automation" or "Publish" permission
- Add to: Settings → Secrets and variables → Actions → New repository secret
# 1. Version packages (reads changesets, bumps versions, updates CHANGELOGs)
pnpm run version
# 2. Build all packages
pnpm run build
# 3. Publish to npm
pnpm run releasepnpm changeset- Create a new changesetpnpm run version- Apply changesets (bump versions)pnpm run release- Publish packages to npmpnpm run build- Build all packagespnpm start <package> <script>- Run a script in a specific package
px-ui/
├── packages/
│ ├── core/ # Core UI components with Tailwind CSS v4
│ └── forms/ # Form components with React Hook Form
├── apps/
│ └── docs/ # Documentation site (Fumadocs + TanStack Start)
├── .changeset/ # Changesets for version management
├── .github/ # GitHub Actions workflows
├── pnpm-workspace.yaml
└── README.md
- Use our defined style classes instead of tailwind classes
- Keep
@px-ui/coreas the single source of truth for design tokens - All components are built with accessibility in mind using Base UI
- Run the lint before committing:
pnpm run lint