molecules library

Molecules do Flocks (componentes compostos de atoms). Só sobre a camada widgets (sem Material/Cupertino).

Classes

AppActionItem
Item de ação para listas de opções/menus: ícone à esquerda + texto.
AppAlert
Card de alerta com título, descrição e ícone semântico.
AppAreaChart
Gráfico de área: uma linha por série com o espaço abaixo preenchido.
AppAssistantStatus
Rótulo de status do assistente ("Entendendo o pedido" → "Buscando dados" → "Organizando a resposta"), com efeito de máquina de escrever: o texto novo aparece sendo digitado, caractere a caractere, e o anterior some sendo apagado (backspace) antes.
AppBarChart
Gráfico de barras, vertical ou horizontal, agrupado ou empilhado.
AppBarChartSelection
AppBarChartSeries
AppBreadcrumb
Trilha de navegação (breadcrumb) do design system.
AppBreadcrumbItem
Item de um AppBreadcrumb: um rótulo, clicável quando onTap != null.
AppBubbleChart
Gráfico de bolhas: cada nó é um círculo cuja ÁREA representa o valor.
AppBubbleChartNode
AppBubbleChartSelection
AppButton
Botão do Flocks — a ação com rótulo e/ou ícone, variando pelo eixo global AppStyle: filled (primária preenchida), outlined (secundária contornada) e elevated (preenchida com sombra simétrica, sem borda).
AppButtonsFooter
Rodapé de ações: um botão primary e um secondary opcional, em linha (default) ou coluna.
AppCard
Card genérico e estruturado do flocks.
AppCartesianChartPoint
AppCartesianChartSelection
AppCartesianChartSeries
AppChartLegendItem
AppChartShell
Moldura padrão de um gráfico: título, subtítulo, resumo, legenda e os estados de carregando/vazio em volta da área de plotagem.
AppChartTooltipData
AppChartTooltipItem
AppChatAction
Uma ação-ícone de uma AppChatActionBar (copiar, regenerar, gostei…).
AppChatActionBar
Barra de ações de uma mensagem — a linha de ícones abaixo da resposta do assistente (copiar, regenerar, gostei/não gostei).
AppChatAttachmentCard
Card quadrado de anexo — a alternativa "cartão" ao AppChatAttachmentChip (mesma informação, formato maior, estilo dos anexos do Claude).
AppChatAttachmentChip
Chip de anexo do composer — thumbnail de imagem ou pílula ícone+nome com remover.
AppChatBubble
Bolha de mensagem do Flocks — o átomo visual de qualquer conversa (LLM ou estilo WhatsApp).
AppChatComposer
Campo de entrada multimodal de um chat — o composer.
AppChatDayDivider
Divisor de dia de uma conversa — a pílula central "Hoje" / "Ontem" / data, assinatura do WhatsApp, que separa mensagens por dia.
AppChatFooter
Rodapé de chat: envolve o AppChatComposer adicionando a safe-area inferior (que o composer não trata) e o eixo de estilo de barra AppStyle (incl. glass). Docked (full-bleed) por padrão; floating destaca num painel arredondado.
AppChatMessageList
Lista rolável de mensagens — o "chão" da conversa.
AppColorPickerInput
Campo de seleção de cor (sem Material nem dependências externas).
AppColorPickerPanel
Painel visual de seleção de cor (HSV) — sem Material nem dependências.
AppCopyButton
Botão de copiar: escreve value na área de transferência e confirma no próprio botão.
AppDateMaskFormatter
Máscara de data no formato DD/MM/YYYY (só dígitos; barras inseridas automaticamente). Usada pelo AppDatePickerInput.
AppDatePicker
Date picker com navegação por mês, seleção de ano/mês e hover.
AppDatePickerInput
Campo de texto com date picker integrado.
AppDateRange
Intervalo de datas selecionado por AppDateRangePicker.
AppDateRangePicker
Date picker de intervalo: toque no início, depois no fim.
AppDateTimeMaskFormatter
Máscara de data e hora DD/MM/YYYY HH:mm. Usada pelo AppDateTimePickerInput.
AppDateTimePickerInput
Campo de texto com date picker e time picker integrados.
AppDonutChart
Gráfico de rosca (donut) — como o pizza, mas com furo central.
AppDropdown<T>
Dropdown de seleção única (sem Material).
AppDropdownOption<T>
Opção genérica de um dropdown (AppDropdown, AppMultiSelect e variantes com busca).
AppExpansionTile
Tile expansível (cabeçalho clicável + corpo animado), sem Material.
AppFilterChip
Chip de filtro aplicado, com afordância de REMOVER.
AppFloatingButton
FAB (floating action button) do Flocks — uma ação flutuante que sempre carrega sombra (ela paira sobre o conteúdo), mesmo quando o AppStyle não é elevated. Aceita icon e/ou label: só-ícone (círculo), só-texto ou ícone+texto (estendido, formato stadium).
AppGaugeChart
Gráfico de medidor (gauge): arco segmentado com rótulo central.
AppGaugeChartSegment
AppGaugeChartSelection
AppHoverHighlight
Realce de hover puramente visual, sem gesto nem foco próprios.
AppInput
Campo de texto do design system, sobre um EditableText cru (sem Material/Cupertino).
AppInteraction
Envolve qualquer widget com o comportamento de interação padrão do Flocks — como o InkWell do Material, mas sobre a camada widgets e dirigido por tokens.
AppLineChart
Gráfico de linha: uma polilinha por série sobre eixos cartesianos.
AppListEmpty
Estado vazio de uma lista: ilustração centralizada, mensagem e uma ação opcional de limpar filtro.
AppListTile
Linha de lista do design system, em dois estilos (AppListTileStyle) e com variações ortogonais via construtores nomeados: navegação (chevron), checkbox, switch (toggle) e badge — todas com leading e subtitle opcionais e reorderIndex (draggable). Agrupe várias com AppListTileGroup.
AppListTileAction
Item de lista com título, valor e um trailing de ação (ex.: swapArrow).
AppListTileCheckbox
Item de lista com checkbox à direita para seleção.
AppListTileDraggableCheckbox
Tile com handle de arraste + checkbox para listas reordenáveis.
AppListTileGroup
Agrupa children (AppListTile/AppListTileRadio) num único card: fundo/borda conforme style, cantos arredondados (radius global) e divisórias (outline) entre as linhas.
AppListTileRadio<T>
Linha de lista com um radio (seleção única em grupo). Tocar a linha seleciona o value. Genérico AppListTileRadio<T> — classe própria porque um construtor nomeado não pode introduzir <T> (como RadioListTile<T>).
AppMenu
Menu de ações ancorado a um trigger (popup / context menu).
AppMenuController
Controla um AppMenu de forma programática.
AppMenuDivider
Uma divisória entre entradas do menu.
AppMenuEntry
Uma entrada de um AppMenu: item, seção ou divisória.
AppMenuItem
Uma ação clicável do menu.
AppMenuSection
Um grupo de AppMenuItems com um title opcional.
AppMessageMeta
Meta de uma mensagem — horário + (opcional) status de entrega, no rodapé de uma AppChatBubble.
AppMultiSelect<T>
Dropdown de seleção múltipla (sem Material).
AppNavigationFooter
Barra de navegação inferior flutuante (como o bottom sheet): margens destacadas, cantos arredondados, participando do eixo de estilo AppStyle (incl. glass). Um indicador deslizante (pílula) anima por trás do item ativo (mecânica do AppSegmentedButton), e um FAB isolado opcional pode aparecer ao lado (start/end), separado da barra.
AppNavigationFooterItemData
Dados de um item do AppNavigationFooter.
AppNumberStepper
Controle numérico − valor + (com min/max/step).
AppOverlayAlert
Card elevado de alerta com título, descrição e ícone semântico.
AppOverlayCard
Card flutuante com child livre, que intercepta o ponteiro (bloqueia cliques de vazarem para uma platform view embaixo, ex.: um mapa no web).
AppPagination
Navegação de páginas standalone (desacoplada de tabela).
AppPaginationPerPage
Seletor de "itens por página" de um AppPagination.
AppPickerAnchor
Âncora genérica de "picker": um trigger (qualquer widget) que abre um panel flutuante ancorado logo abaixo, num AppCard elevado, fechando ao clicar fora / Esc.
AppPickerHandle
Controles do overlay entregues aos builders de AppPickerAnchor.trigger e AppPickerAnchor.panel.
AppPickerWidth
Estratégia de largura do painel de um AppPickerAnchor.
AppPieChart
Gráfico de pizza — distribuição de segments em fatias.
AppPieChartSegment
AppPieChartSelection
AppPopover
Popover: overlay de conteúdo rico ancorado a um trigger.
AppPopoverController
Controla um AppPopover de forma programática (abrir/fechar de fora).
AppPrimaryHeader
Cabeçalho primário de página: um child centralizado com slots opcionais de leading e trailing, participando do eixo de estilo AppStyle (filled/outlined/elevated) com semântica de barra (borda/sombra só na aresta de baixo). Participa também do eixo glass (glass ou o global): glass = blur + gradiente estilo Notes.
AppQuestionCard
Card de pergunta dentro do fluxo do chat — a IA pede algo ao usuário e recebe a resposta inline. Vem em três tipos (construtores nomeados):
AppRating
Avaliação por estrelas (display e input), com meio-passo opcional.
AppSearchableDropdown<T>
Dropdown de seleção única com busca: um campo de filtro no topo do overlay restringe as opções por texto. Reusa o core de dropdown.
AppSearchableMultiSelect<T>
Dropdown de seleção múltipla com busca: chips no trigger + filtro no overlay; selecionar não fecha. Reusa o core de dropdown.
AppSearchFooter
Rodapé de busca flutuante estilo iOS Notes: uma cápsula com um campo de busca sobre o eixo de estilo AppStyle (incl. glass), com a safe-area inferior e um trailing isolado opcional (ex.: um FAB de compor).
AppSegment<T>
Um segmento de um AppSegmentedButton: um valor com rótulo e/ou ícone.
AppSegmentedButton<T>
Botão segmentado de seleção única (radio-like numa pílula).
AppSimpleFooter
Rodapé simples: uma faixa com child sobre o eixo de estilo AppStyle (filled/outlined/elevated), com semântica de barra (borda/sombra na aresta de cima) e a safe-area inferior embutida. Participa também do eixo glass (glass ou o global): glass = blur + gradiente Notes.
AppSimpleHeader
Cabeçalho simples de página: uma faixa com child sobre o eixo de estilo AppStyle (filled/outlined/elevated), com semântica de barra (borda/sombra na aresta de baixo) e a safe-area do topo embutida. Participa também do eixo glass (glass ou o global): glass = blur + gradiente Notes, sobrepondo o conteúdo via AppScaffold. Altura fixa; cor 100% do tema; marcado como cabeçalho.
AppSnackbar
Card de feedback temporário (sucesso, erro, info) com título, descrição e ícone semântico.
AppSplitButton
Botão de ação dividida: uma ação primária + um caret que abre um AppMenu de ações secundárias.
AppSuggestionChip
Chip de sugestão — um prompt inicial (chat com LLM) ou resposta rápida (WhatsApp) tocável, para entrar num Wrap.
AppTileInfo
Par rótulo/valor (título à esquerda, valor abaixo) — não clicável.
AppTimeMaskFormatter
Máscara de horário HH:mm (ou HH:mm:ss quando showSeconds). Usada pelo AppTimePickerInput.
AppTimePicker
Time picker com scroll finito (rodas) para seleção de hora.
AppTimePickerInput
Campo de texto com time picker integrado.
AppTooltip
Tooltip customizado do design system (sem dependência do Material).
AppTypingIndicator
Indicador "digitando…" — três pontinhos que sobem e descem em sequência.
ListTileGroupScope
Escopo que informa aos AppListTile filhos que estão dentro de um AppListTileGroup — o grupo desenha o container e as divisórias, então os tiles renderizam só a linha. Não é API pública.

Enums

AppAlertColor
Papel de cor semântica de um AppAlert.
AppAttachmentKind
Categoria de um anexo — deriva da extensão do arquivo e escolhe o ícone e o tom de cor. Usada por AppChatAttachmentChip/AppChatAttachmentCard quando não há thumbnail (ou quando o consumidor não passa um ícone).
AppBarChartLayout
AppBarChartOrientation
AppButtonColor
Papel de cor de um botão do Flocks. Cada papel resolve para um swatch do tema (role) e o seu par on-color (onRole) — sempre do tema, nunca AppColors.*.
AppButtonsFooterAlignment
Alinhamento dos botões num AppButtonsFooter.
AppButtonsFooterStyle
Estilo de contexto de um AppButtonsFooter — define o arredondamento.
AppButtonSize
Tamanho de um botão do Flocks (altura + métricas do loading).
AppButtonsPlatformStyle
Estilo de plataforma de um AppButtonsFooter — define a superfície de fundo.
AppChatAttachmentLayout
Como a faixa de anexos do AppChatComposer é disposta.
AppChatAuthor
Autor de uma mensagem de chat — dirige o alinhamento e o tint padrão da bolha.
AppChatBubbleColor
Papel de cor do tint da bolha do próprio autor (AppChatAuthor.me).
AppChatBubbleTail
Canto reto ("orelhinha"/tail) da bolha, no lado do autor.
AppGaugeChartVariant
AppLineChartCurveStyle
AppListTileStyle
Estilo de container de um list-tile / grupo de list-tiles.
AppMessageStatus
Estado de entrega de uma mensagem enviada — o "tick" do WhatsApp.
AppMotionPreset
Micro-animação pré-setada aplicada por AppInteraction em hover/press.
AppNavFooterFabAlignment
Lado do FAB isolado ao lado da barra flutuante do AppNavigationFooter (respeita RTL via start/end).
AppOverlayAnimation
Animação de entrada/saída de um overlay.
AppOverlayPlacement
Onde o painel flutuante ancora em relação ao trigger.
AppOverlayPosition
Posição de um overlay na tela — a grade 3×3 sem o centro: 4 cantos + 4 centros de aresta (8 pontos).
AppPopoverTrigger
Como o AppPopover é acionado.
AppQuestionCardRole
Papel semântico de um AppQuestionCard — tinge a casca e o botão de ação.
AppSheetCloseSide
Lado da barra de topo onde o botão de fechar de uma superfície flutuante (dialog, bottom sheet, side sheet) aparece.
AppSnackbarType
Tipo semântico de um AppSnackbar (cor + ícone).
AppTooltipPosition
Posição do tooltip em relação ao AppTooltip.child.
AppTooltipSize
Tamanho do tooltip: controla o TAMANHO DA FONTE do balão. O padding é constante (médio) nos três.

Constants

kAppCopiedFeedback → const Duration
Quanto tempo o AppCopyButton fica no estado "copiado" antes de voltar.
kAppHeaderChildInset → const double
Inset inicial do child quando alinhado à esquerda sem leading (_row).
kAppHeaderContentHeight → const double
Altura FIXA do conteúdo do header (não cresce com os filhos). A faixa da status bar é somada por cima disso.
kAppHeaderSlotReserve → const double
Reserva horizontal simétrica dos slots leading/trailing — mantém o título centralizado mesmo com só um dos lados. Casa com o alvo de toque das ações.
kAppSimpleFooterContentHeight → const double
Altura máxima do conteúdo (a safe-area inferior é somada por baixo).
kAppSimpleHeaderContentHeight → const double
Altura FIXA do conteúdo (a faixa da status bar é somada por cima). Passe constraints.maxHeight para uma faixa mais alta.

Functions

appAttachmentIcon(String? name, {AppAttachmentKind? kind}) String
Ícone específico por extensão de um anexo (mais fino que AppAttachmentKind.icon): distingue csv, xls, doc, txt, ppt e zip. Cai no ícone da categoria para o resto.
appFilledButtonColors(AppColorTheme theme, ColorSwatch<int> role, ColorSwatch<int> onRole, {required bool hovered, required bool pressed, required bool disabled}) ButtonColors
Cores de um botão preenchido (fill) por estado.
appGhostButtonColors(AppColorTheme theme, ColorSwatch<int> role, {required bool bordered, required bool hovered, required bool pressed, required bool disabled}) ButtonColors
Cores de um botão fantasma (line/text/icon) por estado.
appRoleAccent(AppColorTheme theme, ColorSwatch<int> role) Color
Acento de um papel de cor: o stop do swatch legível sobre a superfície.
paginationRange({required int currentPage, required int pageCount, int siblingCount = 1, int boundaryCount = 1}) List<int?>
Sequência de páginas a exibir, com reticências (null) nas lacunas.
showAppOverlay({required BuildContext context, required Widget child, AppOverlayPosition position = AppOverlayPosition.topRight, AppOverlayAnimation animation = AppOverlayAnimation.slide, double? maxWidth, Duration? duration = const Duration(seconds: 4), double margin = 24, VoidCallback? onDismiss}) VoidCallback
Exibe child num ponto da tela (position) via Overlay, com animação de entrada/saída (animation) e largura máxima (maxWidth) opcionais. Sem Material; respeita reduce-motion (via AppMotion).
showAppSnackbar({required BuildContext context, required String description, required String title, required AppSnackbarType type, Duration duration = const Duration(seconds: 3), VoidCallback? onDismiss}) → void
Exibe um AppSnackbar no canto inferior direito, com auto-dismiss.

Typedefs

AppChartValueFormatter = String Function(double value)
ButtonColors = ({Color background, Color border, Color foreground})
Cores resolvidas de um botão por estado: background, foreground, border.