Typed Blueprint components and browser assets for spaday.
Overview
from spaday import SetField, serve
from spaday_blueprint import BpBadge, BpButton, BpCard
page = BpCard(
BpButton(action="primary", status="success").text("Approve").on("click", SetField("state", "approved")),
BpBadge().bind("textContent", "state"),
)
serve(page, packages=["blueprint"], store={"state": "pending"})
Every Blueprint element has a typed class — 80 from @blueprintui/components and BpIcon from
@blueprintui/icons — generated from their Custom Elements Manifests, so props, events and slots
are checked when you author the tree. Installing the package does not inject assets; select it with
packages=["blueprint"] or pass the exported package descriptor.
Generic controls
Selecting this package renders 12 of the 13 controls in spaday.ui as Blueprint elements. The
mapping is exported as DESIGN. RadioGroup uses spaday's marked native fallback because Blueprint
provides individual radio controls but no group with a value API. The shared conformance page checks
the complete control set, including that fallback.
Browser examples
Both run Python locally through Pyodide; no install or server is required.
Run examples locally
python -m pip install -e ".[examples]"
python -m spaday_blueprint.example
python -m spaday_blueprint.gallery
Open http://127.0.0.1:8023 for the standard release-console app or http://127.0.0.1:8024 for the
component gallery. The standard app includes service metrics streamed from Python, endpoint-backed
restart and deploy actions, rollout progress, incident handling, bound forms, tabs, overlays, and shared
dark-theme state. The gallery documents every generated Blueprint component and provides a highlighted
Python snippet for each component family, including a working number stepper
instead of rendering that element.
Both pass the local package descriptor directly, so they do not install or resolve the integration from GitHub.
Theming
The stylesheet maps spaday's --spa-* shell palette onto Blueprint's own tokens, so restyling
Blueprint restyles the shell and every other spaday component package with it. TOKENS lists the
Blueprint tokens wired to the palette, each settable through css():
App().css(bp_status_accent_background_200="#0C4253")
Blueprint's dark theme follows spaday's page mode: a wa-dark class on the root (for example
App(...).bind_root_class("wa-dark", "dark")) or on any island switches it, and wa-light flips a
nested island back. Blueprint's own bp-theme="dark" attribute works as well.
Sharing Blueprint with your own library
Blueprint registers global custom element names, so a second copy on the page throws from
customElements.define. The package serves Blueprint's modules under their own bare specifiers —
@blueprintui/components/button, @blueprintui/components/include/button.js,
@blueprintui/icons/shapes/user.js and the rest of their exports — through the page's import map.
A library built on Blueprint that leaves those imports out of its bundle
(external: ["@blueprintui/components", "@blueprintui/icons"] with esbuild) gets this copy, and
nothing registers twice.
Known issues
- Blueprint 2.20's
bp-number-steppersets itsstepattribute from its constructor. The served module defers that default until connection so standards-compliantdocument.createElementworks. @blueprintui/icons' root module omits theBpIconexport its types declare; the served copy restores it, since Blueprint's own components import it from there.
Metadata
Release files for spaday-blueprint 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| spaday_blueprint-0.2.0.tar.gz | 367.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| spaday_blueprint-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / spaday_blueprint-0.2.0.tar.gz
| Download URL | spaday_blueprint-0.2.0.tar.gz |
|---|---|
| Size | 367.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d2738c0b1b969685dbf0815c8757b700ccbe44b16570e5ef11abc2c6767a29bc
|
|
BLAKE2b-256 checksum How to use checksums |
4b02e63ea4c6a653979d3191c1fc2503b3db375fc47ff814cb057edb26ee8b35
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / spaday_blueprint-0.2.0-py3-none-any.whl
| Download URL | spaday_blueprint-0.2.0-py3-none-any.whl |
|---|---|
| Size | 689.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d027c2ba90de42a78547eded5ff9cd6f8181be28f59e6f7e71b2d0188c231a00
|
|
BLAKE2b-256 checksum How to use checksums |
18e36b78f5f7aef0f420cb03a98a3acf0a43fcdac87fb030df6817892318471b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|