Contributing
Develop and validate the SolidJS port, its Astro documentation, and compatibility fixes.
Before You Start
For a non-trivial API change, align on scope and compatibility first. The Solid port aims to preserve the original Kumo API and visual behavior unless Solid’s reactivity model requires a documented difference.
1. Set Up the Repository
git clone https://github.com/photon-hq/kumo-solidjs.git
cd kumo-solidjs
pnpm install
Requirements:
- Node
^24.12.0 - pnpm
>=10.21.0
The local
base-ui-solid project is the
reference for primitive behavior and Solid render-prop conventions.
2. Pick the Right Location
- Solid component:
packages/kumo-solid/src/components/ - Solid code utilities:
packages/kumo-solid/src/code/ - Solid block:
packages/kumo-docs-astro/src/components/kumo/ - Demo:
packages/kumo-docs-astro/src/components/demos/ - Documentation:
packages/kumo-docs-astro/src/pages/
Keep the component name, variants, semantic tokens, and accessibility behavior
aligned with the corresponding implementation under packages/kumo/.
3. Start the Development Server
pnpm --filter @cloudflare/kumo-docs-astro dev
The Astro development configuration resolves
@photon-ai/kumo-solid imports directly to source, so component changes
hot-reload without rebuilding the package.
To validate the same distribution files a consumer will use:
pnpm --filter @photon-ai/kumo-solid build
pnpm --filter @cloudflare/kumo-docs-astro build
4. Implement Compatibility Changes
When porting or fixing a component:
- Compare its public API and styling with
packages/kumo/src/. - Use the matching primitive from
@photon-ai/base-ui-solidwhen available. - Model local state with Solid signals, memos, effects, and cleanup.
- Preserve semantic HTML, ARIA attributes, focus behavior, and keyboard interactions.
- Add or update a Solid demo and focused tests.
Use Kumo semantic tokens such as bg-kumo-base, text-kumo-default, and
border-kumo-line. Do not add raw palette colors or Tailwind dark: variants.
5. Validate Before a PR
pnpm --filter @photon-ai/kumo-solid typecheck
pnpm --filter @photon-ai/kumo-solid lint
pnpm --filter @photon-ai/kumo-solid test
pnpm --filter @photon-ai/kumo-solid build
pnpm --filter @cloudflare/kumo-docs-astro typecheck
pnpm --filter @cloudflare/kumo-docs-astro lint
pnpm --filter @cloudflare/kumo-docs-astro test
pnpm --filter @cloudflare/kumo-docs-astro build
Also exercise the affected demo in the browser at desktop and mobile widths. For interactive primitives, verify pointer, keyboard, focus-return, controlled, and uncontrolled behavior.
6. Changesets
@photon-ai/kumo-solid is currently private and versioned as workspace
development software, so it does not yet participate in the public release
flow. Do not run version or publish commands. Add release tooling only when the
package is intentionally prepared for publication.
7. Pull Requests
- Branch from the repository’s current mainline branch.
- Keep changes focused on one compatibility area.
- Describe intentional differences from React Kumo.
- Include the exact commands and browser interactions used for validation.
- Avoid editing generated registry and theme files directly.