API pública¶
Tudo abaixo é importável do nível do pacote tempestroid. Importe sempre do nível
do pacote, nunca de submódulos.
Estilo (tempestroid.style)¶
Objetos de valor Pydantic frozen, diferenciados por valor.
Style— o modelo de estilo (layout, caixa, pintura, tipografia, dimensão, animação). Veja os campos agrupados no guia de estilos.Color—Color.from_hex("#101418").Edge— insets;Edge.all(24.0).Border(uniforme) /SideBorder(por lado).Corners— raios por canto paraStyle.radius.Shadow—box-shadow/elevação.Gradient+GradientStop— gradiente linear.Transition— animação implícita (duration_ms,curve,delay_ms).- Enums:
FlexDirection,JustifyContent,AlignItems,FlexWrap,StackAlign,Position,TextAlign,FontWeight,FontStyle,TextDecoration,TextOverflow,GradientDirection,Curve,ImageFit,KeyboardType.
Veja o guia de estilos.
Widgets (tempestroid.widgets)¶
A IR declarativa — widgets como substantivos.
- Layout/conteúdo:
Widget(base),Text,Button,Column,Row,Container,ScrollView,SafeArea(afasta o filho das barras de status/navegação + notch;edges/SafeAreaEdgeescolhe os lados, padrão todos). Component(base) — widget composto que se reduz a uma árvore de primitivos viarender(); o reconciliador o expande antes do diff.- Inputs com valor:
Input(texto),TextArea(multilinha),Checkbox,Switch(booleanos),Slider(float),DatePicker(data ISO),FilePicker(seleção de arquivo). - Mídia:
Image,Icon. - Indicadores:
ProgressBar,Spinner. EventHandler— wrapper tipado de prop de handler.
Acima estão os primitivos. Em cima deles, o Trilho E (paridade Flutter/RN)
acrescenta ~70 widgets a mais — navegação (Navigator/TabView/
TabBar/RouteDrawer), listas virtualizadas (LazyColumn/
LazyRow/LazyGrid/SectionList), overlays (Dialog/
BottomSheet/Menu/Popover/Toast/Tooltip/
ActionSheet), animação (Animated/AnimatedList/Hero/
Shimmer/Skeleton), gestos (GestureDetector/Draggable/
Dismissible/ReorderableList/InteractiveViewer/…), inputs
avançados (Dropdown/TimePicker/RangeSlider/Autocomplete/
PinInput/MaskedInput/Form/FormField), layout refinado
(Wrap/PageView/AspectRatio/KeyboardAvoidingView) e mídia
(Canvas/Svg/VideoPlayer/WebView/Blur/
BackdropFilter/ClipPath + os device-only CameraPreview/
QrScanner/MapView). Todos suportados pelos dois renderizadores
(salvo os device-only, que aparecem como placeholder no Qt). O catálogo
completo, por família, está no guia de widgets; a lista
viva sai de tempest spec.
Veja o guia de widgets.
Componentes (tempestroid.components)¶
Blocos de construção reutilizáveis — cada um um Component que se reduz a
widgets primitivos, então funcionam nos dois renderizadores (Qt e Compose) sem
mudança alguma de renderizador e são prontos para o dispositivo. Todo componente
aceita um style opcional mesclado sobre o padrão via merge_style.
AppBar— barra superior:leadingopcional,titleeactionsà direita.Header/Footer— faixa de cabeçalho (título + subtítulo opcional) e barra inferior centralizada comchildrenarbitrários.Sidebar— coluna lateral de largura fixa (width) comchildren.Scaffold— moldura de página empilhandoapp_bar, umbodyque cresce e umbottom_baropcional (scroll=Trueembrulha o corpo numScrollView).NavBar— barra de navegação/abas selecionável: rótulositems, índiceactivee callbackon_select(index)(generaliza o exemplotabs).Burger/Drawer— botão de menu (☰,on_click) e painel lateral controlado (openvive no estado do app; alterne pelo burger).Calendar— grade do mês com dias selecionáveis:month("AAAA-MM"),selected("AAAA-MM-DD") eon_select(data_iso).Clock— relógio digital que renderiza umtimejá formatado (o app dirige o tick pelo estado, como ostopwatch).Card— superfície elevada (sombra + raio) agrupandochildren.ListTile— linha de lista:leading/trailingem volta detitle+subtitleopcional.Avatar— emblema redondo deinitials;Divider— linha fina.SegmentedControl/RadioGroup— escolha única (options,selected,on_select(index)).Chip— rótulo arredondado pequeno, selecionável quando recebeon_click.Rating— linha demax_starsestrelas;on_rate(value)torna tocável.Stepper—-/+numérico em volta de um valor, commin_value/max_valueopcionais;on_change(value).SearchBar—Inputde texto controlado com botão de limpar opcional.Accordion— seção expansível controlada (openno estado,on_toggle).Banner— barra de status inline (tone: info/success/warning/error) comactionopcional;Badge— pílula de status;EmptyState— glifo + título + subtítulo + ação centralizados.Breadcrumb— trilha de caminho (items+separator,on_selectopc.).Grid— grade decolumnsde largura igual comchildren.
Eventos (tempestroid.widgets) — contrato de fronteira tipado¶
Event(base),TapEvent,TextChangeEvent,ToggleEvent,SlideEvent,DateChangeEvent,FileSelectEvente os eventos do Trilho E — navegação (RouteChangeEvent/PageChangeEvent), listas (ScrollEvent/EndReachedEvent/RefreshEvent), gestos (PanEvent/ScaleEvent/SwipeEvent/ReorderEvent/LongPressEvent/DragEvent), formulários (SubmitEvent/ValidationEvent/RangeChangeEvent/TimeChangeEvent/SelectEvent), overlays (DismissEvent/MenuSelectEvent) e plataforma (SensorEvent/LifecycleEvent/ConnectivityEvent/DeepLinkEvent/QrScanEvent/ThemeChangeEvent/LocaleChangeEvent) — 31 no total.parse_event(event_type, raw)— portão de fronteira: valida um payload cru em um evento tipado ou levantaEventValidationErrorcom os erros estruturados por campo. É o contrato Python↔Kotlin para a ponte do dispositivo.
Veja o guia de eventos.
Núcleo — IR + reconciliador (tempestroid.core)¶
Node,Path— a IR rebaixada.- Patches:
Insert,Remove,Update,Reorder,Replace, e a uniãoPatch. build(widget) -> Node,diff(old, new) -> list[Patch].App[S]— container de estado agnóstico de renderizador: guarda o estado, constrói viaview(app), faz o diff e entrega patches a um callbackapply_patches.
Introspecção (tempestroid.core)¶
introspect()— contrato JSON completo{"widgets": {...}, "events": {...}}(alimentatempest spec).widget_catalog(),event_catalog().
Renderizador Qt (tempestroid.renderers.qt, precisa do extra qt)¶
run_qt(state, view, *, title, size)— roda um app no simulador Qt.run_dev(app_path)— o cockpit dotempest dev.
Lado do dispositivo¶
Compose, ponte JNI, dev server e capacidades nativas — veja a página Lado do dispositivo (ponte).