UIKitPR
O framework visual utility-first feito para PyReact.
Componentes acessíveis, temas e classes utilitárias em um pacote Python, sem pipeline Node obrigatório.
Por que UIKitPR?
Tailwind é excelente para compor layouts e Bootstrap acelera componentes comuns. O UIKitPR leva as duas ideias ao ecossistema PyReact:
- classes utilitárias previsíveis (
flex,gap-4,grid-cols-3,p-6); - componentes Python que retornam VNodes PyReact;
- temas claro, escuro e customizados por CSS variables;
- SSR, handlers e propriedades compatíveis com
h()do PyReact; - CSS incluído no wheel e exportável pela CLI;
- nenhuma dependência JavaScript ou etapa de compilação.
Instalação com PRPM
prpm add uikitpr
Também é possível instalar com pip install uikitpr.
Início rápido
from pyreact import h
from uikitpr import Button, Card, CardBody, Heading, Stack, UIProvider
def App(props):
return UIProvider(
Card(
CardBody(
Stack(
Heading("Olá, PyReact!", level=1),
Button("Começar", variant="primary", onClick=lambda: print("oi")),
gap=4,
)
)
),
class_name="p-6",
full_height=True,
)
Os componentes aceitam filhos diretamente, como acima, ou através de
h(Component, {"children": ...}):
h(Button, {"children": "Salvar", "variant": "outline"})
Essa forma explícita em props é importante na versão atual do PyReact, cujo
renderer não transfere automaticamente os filhos de h(Component, props, *children)
para componentes funcionais.
Utilitários
Use classes diretamente em className ou class_name:
from uikitpr import Box, cx
Box(
"Conteúdo",
class_name=cx(
"flex items-center gap-4 p-6 rounded shadow",
{"bg-primary-soft": destaque, "hidden": not visivel},
),
)
O CSS inclui layout flex/grid, espaçamento, sizing, tipografia, cores,
bordas, sombras e variantes responsivas sem caracteres especiais, como
md-grid-cols-3 e lg-grid-cols-4.
Componentes
| Grupo | Componentes |
|---|---|
| Layout | Box, Container, Stack, Grid, Divider |
| Tipografia | Heading, Text, Badge |
| Ações | Button, IconButton |
| Formulários | Input, Textarea, Select, Checkbox, Switch |
| Feedback | Alert, Spinner, Progress, Modal |
| Dados e navegação | Card, Table, Navbar, Breadcrumb, Avatar |
Variantes mais usadas:
Button("Primário", variant="primary")
Button("Contorno", variant="outline", size="lg")
Badge("Ativo", tone="success", pill=True)
Alert("Confira os dados.", tone="warning", title="Atenção")
Input(label="E-mail", name="email", type="email", help_text="Seu acesso.")
Propriedades não consumidas pelo componente são encaminhadas ao VNode DOM,
incluindo onClick, aria-*, data-*, style, id e name.
Temas
UIProvider inclui o CSS e configura o tema:
UIProvider(AppContent(), theme="dark", full_height=True)
Crie uma marca usando tokens:
from uikitpr import create_theme
brand = create_theme(
"minha-marca",
primary="#ff006e",
primary_hover="#d9005d",
radius="1rem",
)
UIProvider(AppContent(), theme=brand)
CSS externo e CSP
Por padrão, UIProvider inclui um <link> com o stylesheet em uma data: URL.
Esse formato evita o escaping aplicado pelo SSR do PyReact a filhos de
<style>. Para produção com CSP estrita, exporte e sirva o asset separadamente:
uikitpr css -o static/uikitpr.css
uikitpr css -o static/uikitpr.min.css --minify
Então use:
from uikitpr import Styles
Styles(href="/static/uikitpr.css")
UIProvider(AppContent(), with_styles=False)
Para renderização exclusivamente cliente, Styles(inline=True, nonce="...")
também é suportado em políticas CSP baseadas em nonce.
Desenvolvimento
prpm install
prpm test
prpm pack
prpm verify dist
O exemplo completo está em examples/dashboard.py.
Licença
MIT. Veja LICENSE.
Metadata
Release files for uikitpr 0.1.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 | |
|---|---|---|---|
| uikitpr-0.1.0.tar.gz | 19.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| uikitpr-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.0 kB
Release files / uikitpr-0.1.0.tar.gz
| Download URL | uikitpr-0.1.0.tar.gz |
|---|---|
| Size | 19.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
916c575da52eb3ba000e12f17c04b78411c66bd6437d60ec2cb434e6c8346fda
|
|
BLAKE2b-256 checksum How to use checksums |
efc7c6c199360362012457a1af9709a2bf4b37d08718def9967b767a6bc21001
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|
Release files / uikitpr-0.1.0-py3-none-any.whl
| Download URL | uikitpr-0.1.0-py3-none-any.whl |
|---|---|
| Size | 15.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3e095b757f96fd6b96b2c72e7e8e7a8e91572a7a70b8665729c3621330b03f99
|
|
BLAKE2b-256 checksum How to use checksums |
1648537ac2fcb0018b7446b70ea96b28636f5fff24d7bdbcc2494229a4cd4d22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|