Files
soleprint/docs/data/en/components.md
2026-09-24 00:43:18 -03:00

65 lines
1.9 KiB
Markdown

# Shared Components
Soleprint has two distributable components. They live inside the spr repo and get published into consuming projects.
Management is handled by `ctrl/spr.py`.
## soleprint-ui
Vue component library. Includes GraphRenderer, sidebar components, and shared UI pieces.
Source: `soleprint/common/ui/`
Publish to a consuming project:
```bash
python ctrl/spr.py publish soleprint-ui <target>
```
The target project receives the built files and commits them directly. No npm dependency on spr.
To give a project only the parts it uses — readable source, not the whole
library — slice it instead:
```bash
make ui scan <app-dir> # what it uses, and how its copy compares with spr
./ctrl/ui.sh slice <app>/ui.toml # write the slice its run file describes
```
See [Export / Compile](#export) for run files, the two deliveries and drift.
## soleprint-modelgen
Model generator. Reads schema definitions and produces model files.
Source: `soleprint/station/tools/modelgen/`
Has a `pyproject.toml` for local editable install:
```bash
pip install -e soleprint/station/tools/modelgen/
```
## Registry
`registry.json` at the repo root defines all components. Each entry has:
- **name** — component identifier
- **type** — `npm` or `python`
- **source** — path within the repo
- **version** — current version string
## Commands
```bash
python ctrl/spr.py list # Show all components
python ctrl/spr.py sync <component> <target> # One-time copy
python ctrl/spr.py watch <component> <target> # Live sync (ctrl+c to stop)
python ctrl/spr.py publish <component> <target> # Versioned publish
python ctrl/spr.py diff <component> <target> # Show differences
```
`sync` copies files once. `watch` keeps them in sync while you develop. `publish` stamps a version and copies.
The consuming project has no awareness of spr. It just commits whatever lands in the target folder.