Skip to main content

UIKitPR

O framework visual utility-first feito para PyReact.

PyPI Python PyReact License: MIT

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)

Source distribution for uikitpr 0.1.0
File Size Uploaded
uikitpr-0.1.0.tar.gz 19.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for uikitpr 0.1.0
File Interpreter ABI Platform
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
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page