Referência de componentes

Copy Markdown View Source

Gerado do código por showcase/scripts/gen_reference.exs (cd showcase && mix run scripts/gen_reference.exs). Não edite à mão: atributos, tipos, padrões e slots vêm dos attr/slot reais. Para ver cada componente funcionando, rode o mostruário (veja o README).

Formulários

Button

FrappeUIPhx.Components.Button.button/1 — Botão do Frappe UI: variantes solid | subtle | outline | ghost, temas gray | blue | green | red, tamanhos xs | sm | md | lg.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
iconstringnão—botão só com ícone (nome Lucide)
icon_leftstringnão—
icon_rightstringnão—
labelstringnão—
loadingbooleannãofalse
loading_textstringnão—
sizeatomnão:sm:xs, :sm, :md, :lg
themeatomnão:gray:gray, :blue, :green, :red
typestringnão"button"
variantatomnão:subtle:solid, :subtle, :outline, :ghost

Slots

  • :inner_block

TextInput

FrappeUIPhx.Components.TextInput.text_input/1 — Campo de uma linha. Aceita field={@form[:campo]} (Phoenix/Ecto) ou name/value avulsos. Restrições (required, maxlength, min, pattern, placeholder...) vão direto ao <input>; o servidor continua sendo a barreira real (o required aqui espelha a regra do changeset).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
nameanynão—
sizeatomnão:sm:xs, :sm, :md, :lg
typestringnão"text"13 valores (veja a documentação do módulo)
valueanynão—
variantatomnão:subtle:subtle, :outline, :ghost

Textarea

FrappeUIPhx.Components.Textarea.textarea/1 — Campo de várias linhas; mesmo contrato de FrappeUIPhx.Components.TextInput.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
nameanynão—
rowsintegernão3
sizeatomnão:sm:xs, :sm, :md, :lg
valueanynão—
variantatomnão:subtle:subtle, :outline, :ghost

Password

FrappeUIPhx.Components.Password.password/1 — Campo de senha com botão de mostrar/ocultar. A alternância é só visual (JS.toggle_attribute no type); o valor nunca é reenviado ao HTML.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
nameanynão—
sizeatomnão:sm:xs, :sm, :md, :lg
valueanynão—
variantatomnão:subtle:subtle, :outline, :ghost

PinCode

FrappeUIPhx.Components.PinCode.pin_code/1 — Código de verificação / PIN: uma caixa por caractere, com avanço automático, Backspace que volta, setas, colar o código inteiro e preenchimento por SMS (autocomplete="one-time-code").

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
lengthintegernão6quantidade de caracteres (3..12)
maskbooleannãofalseesconde os caracteres, como uma senha
nameanynão—
on_completestringnão—evento enviado ao servidor com o código quando todas as caixas estão preenchidas
sizeatomnão:md:xs, :sm, :md, :lg
typeatomnão:numeric:numeric, :alphanumeric
valueanynão—
variantatomnão:subtle:subtle, :outline, :ghost

Select

FrappeUIPhx.Components.Select.select/1 — Seleção nativa. options aceita lista de strings, {rótulo, valor} ou keyword; prompt adiciona uma primeira opção vazia.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
multiplebooleannãofalse
nameanynão—
optionslistsim—
promptstringnão—
sizeatomnão:sm:xs, :sm, :md, :lg
valueanynão—
variantatomnão:subtle:subtle, :outline, :ghost

Combobox

FrappeUIPhx.Components.Combobox.combobox/1 — Seleção única com busca. Aceita field (Phoenix/Ecto); a escolha é um radio nativo do formulário.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
formstringnão—
idanynão—
nameanynão—
on_searchstringnão—evento do servidor para busca remota
optionslistsim—
placeholderstringnão—
requiredbooleannãofalse
valueanynão—

MultiSelect

FrappeUIPhx.Components.MultiSelect.multi_select/1 — Seleção múltipla com busca e selos. Envia name[] (mais um "" para permitir esvaziar); combine com FrappeUIPhx.Ecto.StringList, que descarta o vazio.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
formstringnão—
idanynão—
nameanynão—
on_searchstringnão—
optionslistsim—
placeholderstringnão—
requiredbooleannãofalse
valueanynão—lista de valores selecionados

Checkbox

FrappeUIPhx.Components.Checkbox.checkbox/1 — Caixa de seleção com rótulo opcional. Emite o hidden com "false" como o core_components do Phoenix, para que o desmarcado chegue ao servidor.

AtributoTipoObrigatórioPadrãoValoresDescrição
checkedbooleannão—padrão: derivado de value
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
labelstringnão—
nameanynão—
valueanynão—

Radio

FrappeUIPhx.Components.RadioGroup.radio_group/1 — Grupo de opções exclusivas (<input type=radio> nativos); options como em Select.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
labelstringnão—
nameanynão—
optionslistsim—strings ou {rótulo, valor}
orientationatomnão:vertical:vertical, :horizontal
valueanynão—

Switch

FrappeUIPhx.Components.Switch.switch/1 — Interruptor. É um checkbox nativo (peer), então funciona em formulários sem JS.

AtributoTipoObrigatórioPadrãoValoresDescrição
checkedbooleannão—
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
labelstringnão—
nameanynão—
sizeatomnão:sm:sm, :md
valueanynão—

Slider

FrappeUIPhx.Components.Slider.slider/1 — Controle deslizante (<input type=range>); min <= value <= max é pré-condição.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
maxintegernão100
minintegernão0
nameanynão—
show_valuebooleannãofalse
stepintegernão1
valueanynão—

Rating

FrappeUIPhx.Components.Rating.rating/1 — Avaliação em estrelas (1..max). Cada estrela é um <input type=radio>, então funciona em formulários e phx-change; o preenchimento vem do valor no servidor. Combine com FrappeUIPhx.Ecto.Rating no schema.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
maxintegernão5
nameanynão—
readonlybooleannãofalse
valueanynão—

DatePicker

FrappeUIPhx.Components.DatePicker.date_picker/1 — Seletor de data com calendário (LiveComponent: o mês exibido é estado próprio).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idstringsim—
maxanynão—última data permitida
minanynão—primeira data permitida
nameanynão—
placeholderstringnão—
valueanynão—data ISO (2026-03-09) ou Date

TimePicker

FrappeUIPhx.Components.TimePicker.time_picker/1 — Seletor de horário (<input type=time> nativo, com o teclado/relógio do dispositivo); step em segundos.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
nameanynão—
sizeatomnão:sm:xs, :sm, :md, :lg
stepintegernão60segundos; 60 = minutos, 1 = com segundos
valueanynão—
variantatomnão:subtle:subtle, :outline, :ghost

Duration

FrappeUIPhx.Components.Duration.duration/1 — Campo de duração: mostra 1h 30m quando o valor são segundos e aceita o que FrappeUIPhx.Duration entende. Combine com FrappeUIPhx.Ecto.Duration no schema.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
nameanynão—
sizeatomnão:sm:xs, :sm, :md, :lg
valueanynão—
variantatomnão:subtle:subtle, :outline, :ghost

FileUploader

FrappeUIPhx.Components.FileUploader.file_uploader/1 — Área de envio sobre allow_upload/3 do LiveView: arrastar-e-soltar, lista de arquivos com progresso, cancelamento e erros em português. Quem decide o que fazer com o arquivo (consume_uploaded_entries/3) é o servidor.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
labelstringnão—
on_cancelstringnão"cancel-upload"evento do servidor; recebe ref
uploadPhoenix.LiveView.UploadConfigsim—

Slots

  • :hint

FormControl

FrappeUIPhx.Components.FormControl.form_control/1 — Rótulo + controle + descrição + erros, escolhendo o controle por type.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
descriptionstringnão—
disabledbooleannãofalse
fieldPhoenix.HTML.FormFieldsim—
labelstringnão—
optionslistnão[]
promptstringnão—
requiredbooleannãofalseespelha a regra validate_required do changeset
sizeatomnão:sm
typestringnão"text"
variantatomnão:subtle

FormLabel

FrappeUIPhx.Components.FormLabel.form_label/1 — Rótulo de campo; required acrescenta o asterisco e deve espelhar o required do controle.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
forstringnão—
requiredbooleannãofalse

Slots

  • :inner_block (obrigatório)

Feedback e exibição

Badge

FrappeUIPhx.Components.Badge.badge/1 — Selo de status: temas gray | blue | green | amber | red | violet, variantes solid | subtle | outline | ghost.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
labelstringnão—
sizeatomnão:md:sm, :md, :lg
themeatomnão:gray:gray, :blue, :green, :amber, :red, :violet
variantatomnão:subtle:solid, :subtle, :outline, :ghost

Slots

  • :inner_block

Alert

FrappeUIPhx.Components.Alert.alert/1 — Alerta com título, descrição e ação opcional. Temas gray | blue | green | amber | red.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
iconstringnão—sobrescreve o ícone do tema
themeatomnão:gray:gray, :blue, :green, :amber, :red
titlestringsim—

Slots

  • :actions
  • :inner_block: descrição

Progress

FrappeUIPhx.Components.Progress.progress/1 — Barra de progresso (value de 0 a 100) com rótulo e valor opcionais.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
labelstringnão—
show_valuebooleannãofalse
sizeatomnão:md:sm, :md, :lg, :xl
valueintegersim—0..100

Skeleton

FrappeUIPhx.Components.Skeleton.skeleton/1 — Bloco animado para estados de carregamento; dimensione por class (ex.: h-4 w-32).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão"h-4 w-full"

Spinner

FrappeUIPhx.Components.Spinner.spinner/1 — Indicador de carregamento; herda a cor do texto.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão"size-4"

LoadingText

FrappeUIPhx.Components.LoadingText.loading_text/1 — Texto de carregamento com spinner.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
textstringnão—

Avatar

FrappeUIPhx.Components.Avatar.avatar/1 — Avatar com imagem ou iniciais do label. Formas circle | square.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
imagestringnão—
labelstringnão—
shapeatomnão:circle:circle, :square
sizeatomnão:md:xs, :sm, :md, :lg, :xl, :"2xl", :"3xl"

DiceBearAvatar

FrappeUIPhx.Components.DiceBearAvatar.dice_bear_avatar/1 — Avatar gerado pelo DiceBear a partir de uma seed: a mesma style + seed + options dá sempre o mesmo desenho. Mesmos tamanhos e formas do FrappeUIPhx.Components.Avatar, de quem herda o visual (composição).

AtributoTipoObrigatórioPadrãoValoresDescrição
background_coloranynão—hex (#RRGGBB), texto ou lista
base_urlstringnão—servidor DiceBear (padrão: config ou API pública)
border_radiusanynão—0 a 50 (% do canvas; 50 = círculo)
classanynão—
flipstringnão—none | horizontal | vertical | both
imagestringnão—foto real do usuário; quando presente ela é exibida no lugar do avatar gerado (placeholder)
labelstringnão—nome acessível (alt) e dica; sem ele a imagem é decorativa
optionsmapnão%{}outros parâmetros da API, inclusive os do estilo (hairVariant...); listas viram a,b. Os atributos acima têm prioridade
rotateanynão—-360 a 360 graus
scaleanynão—0 a 10 (1 = tamanho original)
seedstringsim—identificador estável e não pessoal do avatar
shapeatomnão:circle:circle, :square
sizeatomnão:md:xs, :sm, :md, :lg, :xl, :"2xl", :"3xl"
stylestringnão"thumbs"61 valores (veja a documentação do módulo)estilo DiceBear (nome como "thumbs" ou "pixel-art"; veja DiceBear.styles/0)
tagsanynão—filtro de variantes, ex.: "animation"
translate_xanynão—-1000 a 1000 (% da largura)
translate_yanynão—-1000 a 1000 (% da altura)

Icon

FrappeUIPhx.Components.Icon.icon/1 — Ícone Lucide por nome, renderizado como <svg> inline (veja FrappeUIPhx.Icons).

AtributoTipoObrigatórioPadrãoValoresDescrição
absolute_stroke_widthbooleannãofalsemantém a espessura visual do traço igual em qualquer tamanho
classanynão—
colorstringnão"currentColor"cor do traço (qualquer cor CSS)
namestringsim—nome Lucide, ex.: "plus"
sizeanynão24largura e altura em pixels (número positivo)
stroke_widthanynão2espessura do traço (número positivo)
titlestringnão—nome acessível; sem ele o ícone é decorativo

KeyboardShortcut

FrappeUIPhx.Components.KeyboardShortcut.keyboard_shortcut/1 — Atalho de teclado: uma <kbd> por tecla (keys={["Ctrl", "K"]}).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
keyslistsim—lista de teclas, ex.: ["Ctrl", "K"]

ItemListRow

FrappeUIPhx.Components.ItemListRow.item_list_row/1 — Linha de lista com ícone, título, subtítulo e ações; navegável por navigate/patch/href.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
subtitlestringnão—
titlestringsim—

Slots

  • :actions
  • :icon

SavedIndicator

FrappeUIPhx.Components.SavedIndicator.saved_indicator/1 — Confirmação visual transitória ("Salvo") sem useEffect/timer: o servidor devolve um valor que muda a cada sucesso (at, ex. um timestamp) e o :key remonta o elemento, reiniciando a animação CSS que termina em opacidade 0.

AtributoTipoObrigatórioPadrãoValoresDescrição
atanynão—muda a cada sucesso; nil não mostra nada
classanynão—
labelstringnão—

ErrorMessage

FrappeUIPhx.Components.ErrorMessage.error_message/1 — Mensagem(ns) de erro. Aceita uma string, uma lista de strings ou nil (não renderiza nada).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
idstringnão—
messageanynão—String ou lista de strings

Toast

FrappeUIPhx.Components.Toast.toast_container/1 — Container de toasts: mostra mensagens de flash (renderizadas no servidor) e as enviadas por FrappeUIPhx.Toast.put_toast/4 (via hook colocated).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
flashmapnão%{}
idstringnão"frappe-ui-toasts"

Overlays

Dialog

FrappeUIPhx.Components.Dialog.dialog/1 — Diálogo modal sobre <dialog> nativo (foco preso, Esc e backdrop pelo navegador).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
close_on_backdropbooleannãotrue
idstringsim—
on_closestringnão—evento enviado ao servidor quando o diálogo fecha
openbooleannãofalse
placementatomnão:center:center, :bottom:bottom vira uma folha inferior (BottomSheet)
sizeatomnão:lg:sm, :md, :lg, :xl, :"2xl"
titlestringnão—

Slots

  • :actions
  • :inner_block (obrigatório)

BottomSheet

FrappeUIPhx.Components.BottomSheet.bottom_sheet/1 — Folha inferior (mobile): um Dialog com placement: :bottom; abre/fecha com show_dialog/1 e hide_dialog/1.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
idstringsim—
on_closestringnão—
openbooleannãofalse
titlestringnão—

Slots

  • :actions
  • :inner_block (obrigatório)

SettingsDialog

FrappeUIPhx.Components.SettingsDialog.settings_dialog/1 — Diálogo de configurações: navegação lateral por seções (:tab) e o conteúdo da seção ativa. A seção ativa (active) é um assign do servidor.

AtributoTipoObrigatórioPadrãoValoresDescrição
activestringsim—id da seção ativa
idstringsim—
on_closestringnão—
openbooleannãofalse
titlestringnão—

Slots

  • :inner_block (obrigatório): conteúdo da seção ativa
  • :tab (obrigatório) — atributos: id*, label*, icon, patch, navigate, href, click

KeyboardShortcutsDialog

FrappeUIPhx.Components.KeyboardShortcutsDialog.keyboard_shortcuts_dialog/1 — Diálogo com a lista de atalhos: shortcuts={[%{label: "Buscar", keys: ["Ctrl", "K"]}]}.

AtributoTipoObrigatórioPadrãoValoresDescrição
idstringsim—
on_closestringnão—
openbooleannãofalse
shortcutslistsim—lista de %{label: String, keys: [String]}
titlestringnão—

FrappeUIPhx.Components.Dropdown.dropdown/1 — Menu suspenso sem JavaScript: Popover API (light-dismiss e Esc nativos) + CSS Anchor Positioning (inverte para cima quando falta espaço).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
iconstringnão—ícone do botão padrão
idstringsim—
labelstringnão—texto do botão padrão (ignorado se houver :trigger)

Slots

  • :item (obrigatório) — atributos: label*, icon, click, navigate, patch, href, theme
  • :trigger: conteúdo do gatilho personalizado

Popover

FrappeUIPhx.Components.Popover.popover/1 — Painel flutuante com conteúdo livre: Popover API + CSS Anchor Positioning (sem JS).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—classes do painel
idstringsim—
placementatomnão:bottom:bottom, :top

Slots

  • :inner_block (obrigatório): conteúdo do painel
  • :trigger (obrigatório)

ContextMenu

FrappeUIPhx.Components.ContextMenu.context_menu/1 — Menu de contexto (botão direito) sobre uma região. O hook colocated só posiciona e abre o popover no cursor; o que cada item faz é decidido pelo servidor (click) ou por navegação.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
idstringsim—

Slots

  • :inner_block (obrigatório): região que responde ao botão direito
  • :item (obrigatório) — atributos: label*, icon, click, navigate, patch, href, theme

HoverCard

FrappeUIPhx.Components.HoverCard.hover_card/1 — Cartão que aparece em hover ou foco do gatilho, com pequeno atraso (CSS puro).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—classes do cartão

Slots

  • :inner_block (obrigatório): conteúdo do cartão
  • :trigger (obrigatório)

Tooltip

FrappeUIPhx.Components.Tooltip.tooltip/1 — Dica visual sem JavaScript: aparece em hover e em foco do conteúdo envolvido.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
placementatomnão:top:top, :bottom, :left, :right
textstringsim—

Slots

  • :inner_block (obrigatório)

Tabs

FrappeUIPhx.Components.Tabs.tabs/1 — Abas cujo item ativo é decidido por um assign (active), nunca por estado do cliente. Cada :tab navega (patch/navigate) ou dispara evento (click). O conteúdo do painel ativo vai no inner_block.

AtributoTipoObrigatórioPadrãoValoresDescrição
activestringsim—id da aba ativa
classanynão—
idstringsim—

Slots

  • :inner_block: painel da aba ativa
  • :tab (obrigatório) — atributos: id*, label*, icon, patch, navigate, href, click

TabButtons

FrappeUIPhx.Components.TabButtons.tab_buttons/1 — Abas em formato de botões segmentados; a ativa é um assign do servidor (active).

AtributoTipoObrigatórioPadrãoValoresDescrição
activestringsim—id do botão ativo
classanynão—

Slots

  • :button (obrigatório) — atributos: id*, label*, icon, patch, navigate, href, click

FrappeUIPhx.Components.Breadcrumbs.breadcrumbs/1 — Trilha de navegação; o último item é a página atual (aria-current="page").

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—

Slots

  • :item (obrigatório) — atributos: label*, navigate, patch, href

FrappeUIPhx.Components.PageHeader.page_header/1 — Cabeçalho de página: breadcrumbs opcionais, título e ações.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
subtitlestringnão—
titlestringsim—

Slots

  • :actions
  • :breadcrumbs

FrappeUIPhx.Components.Sidebar.sidebar/1 — Barra lateral de navegação. O item ativo (active) e o recolhimento (collapsed) são assigns do servidor; recolhida, só os ícones aparecem.

AtributoTipoObrigatórioPadrãoValoresDescrição
activestringnão—id do item ativo (precisa existir se informado)
classanynão—
collapsedbooleannãofalse

Slots

  • :footer
  • :header
  • :item (obrigatório) — atributos: id*, label*, icon, patch, navigate, href, click

SidebarRail

FrappeUIPhx.Components.SidebarRail.sidebar_rail/1 — Trilho estreito só com ícones (rótulo acessível e title); ativo por assign.

AtributoTipoObrigatórioPadrãoValoresDescrição
activestringnão—
classanynão—

Slots

  • :footer
  • :header
  • :item (obrigatório) — atributos: id*, label*, icon*, patch, navigate, href, click

DesktopShell

FrappeUIPhx.Components.DesktopShell.desktop_shell/1 — Casca de página para desktop: :sidebar à esquerda e o conteúdo rolável à direita.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—

Slots

  • :inner_block (obrigatório)
  • :sidebar

MobileShell

FrappeUIPhx.Components.MobileShell.mobile_shell/1 — Casca para telas estreitas: cabeçalho, conteúdo rolável e navegação inferior (:nav).

AtributoTipoObrigatórioPadrãoValoresDescrição
activestringnão—id da aba inferior ativa
classanynão—

Slots

  • :header
  • :inner_block (obrigatório)
  • :nav — atributos: id*, label*, icon, patch, navigate, href, click

ScrollArea

FrappeUIPhx.Components.ScrollArea.scroll_area/1 — Região rolável com barras finas e discretas (CSS nativo); focável para rolagem por teclado.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—defina a altura/largura máxima aqui, ex.: max-h-64
orientationatomnão:vertical:vertical, :horizontal, :both

Slots

  • :inner_block (obrigatório)

Divider

FrappeUIPhx.Components.Divider.divider/1 — Linha divisória horizontal ou vertical.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
orientationatomnão:horizontal:horizontal, :vertical

Dados

Tree

FrappeUIPhx.Components.Tree.tree/1 — Árvore de nós %{id, label, icon, children}. Expansão (expanded) e seleção (selected) são assigns do servidor; cada clique é um evento (on_toggle/on_select com %{"id" => id}). Com on_drop, os nós de um mesmo nível podem ser reordenados por arrastar-e-soltar.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
expandedlistnão[]ids dos nós abertos
idstringsim—
nodeslistsim—
on_dropstringnão—
on_selectstringnão—
on_togglestringnão—
selected_idanynão—id do nó selecionado (comparado como texto)

Sortable

FrappeUIPhx.Components.Sortable.sortable/1 — Lista reordenável por arrastar-e-soltar (HTML5 nativo).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
idstringsim—
item_idanynão&FrappeUIPhx.Components.Sortable.default_id/1função item -> id (padrão: item.id)
itemslistsim—
on_dropstringsim—evento do servidor: %{"id", "to", "position"}

Slots

  • :item (obrigatório)

Charts

BarChart

FrappeUIPhx.Charts.Bar.bar_chart/1 — Gráfico de barras agrupadas (SVG no servidor, cores do tema, estados loading/empty/error).

AtributoTipoObrigatórioPadrãoValoresDescrição
categorieslistsim—
classanynão—
errorstringnão—
heightintegernão240
legendbooleannãotrue
loadingbooleannãofalse
serieslistsim—[%{name: String, data: [number]}]

LineChart

FrappeUIPhx.Charts.Line.line_chart/1 — Gráficos de linha e de área (SVG no servidor), com pontos, dicas e estados.

AtributoTipoObrigatórioPadrãoValoresDescrição
categorieslistsim—
classanynão—
errorstringnão—
heightintegernão240
legendbooleannãotrue
loadingbooleannãofalse
serieslistsim—[%{name: String, data: [number]}]

AreaChart

FrappeUIPhx.Charts.Line.area_chart/1 — Gráficos de linha e de área (SVG no servidor), com pontos, dicas e estados.

AtributoTipoObrigatórioPadrãoValoresDescrição
categorieslistsim—
classanynão—
errorstringnão—
heightintegernão240
legendbooleannãotrue
loadingbooleannãofalse
serieslistsim—[%{name: String, data: [number]}]

DonutChart

FrappeUIPhx.Charts.Donut.donut_chart/1 — Gráfico de rosca (SVG no servidor). data é [%{label, value}]; valores ≤ 0 são ignorados.

AtributoTipoObrigatórioPadrãoValoresDescrição
center_labelstringnão—texto no centro (padrão: total)
classanynão—
datalistsim—
errorstringnão—
legendbooleannãotrue
loadingbooleannãofalse

PercentageBarChart

FrappeUIPhx.Charts.Proportion.percentage_bar_chart/1 — Gráficos de proporção: barra percentual empilhada e funil.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
datalistsim—[%{label, value}]
errorstringnão—
legendbooleannãotrue
loadingbooleannãofalse

FunnelChart

FrappeUIPhx.Charts.Proportion.funnel_chart/1 — Gráficos de proporção: barra percentual empilhada e funil.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
errorstringnão—
heightintegernão260
loadingbooleannãofalse
stepslistsim—[%{label, value}] em ordem de etapa

HeatmapChart

FrappeUIPhx.Charts.Matrix.heatmap_chart/1 — Mapas de calor: matriz linhas × colunas e calendário (estilo contribuições).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
colslistsim—rótulos das colunas
errorstringnão—
loadingbooleannãofalse
rowslistsim—rótulos das linhas
valueslistsim—matriz: uma lista de números por linha

CalendarHeatmapChart

FrappeUIPhx.Charts.Matrix.calendar_heatmap_chart/1 — Mapas de calor: matriz linhas × colunas e calendário (estilo contribuições).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
datamapsim—%{Date => número}
end_dateanynão—último dia exibido (padrão: hoje)
errorstringnão—
loadingbooleannãofalse
weeksintegernão26

ScatterChart

FrappeUIPhx.Charts.Scatter.scatter_chart/1 — Gráfico de dispersão: séries de pontos {x, y} em eixos numéricos.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
errorstringnão—
heightintegernão260
legendbooleannãotrue
loadingbooleannãofalse
serieslistsim—[%{name: String, points: [{x, y}]}]

SankeyChart

FrappeUIPhx.Charts.Sankey.sankey_chart/1 — Diagrama de Sankey: links é [%{source, target, value}]; os nós e as colunas (profundidade) são derivados dos links. Ciclos não são suportados e falham alto.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
errorstringnão—
heightintegernão280
linkslistsim—
loadingbooleannãofalse

NumberCard

FrappeUIPhx.Charts.NumberCard.number_card/1 — Cartão de indicador: rótulo, valor grande e variação percentual opcional (verde sobe, vermelho cai).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
deltafloatnão—variação percentual (ex.: 12.5 ou -3.0)
delta_labelstringnão—
errorstringnão—
labelstringsim—
loadingbooleannãofalse
valueanysim—

ChartCard

FrappeUIPhx.Charts.ChartCard.chart_card/1 — Cartão que enquadra um gráfico: título, subtítulo, ações e o gráfico no corpo.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
subtitlestringnão—
titlestringsim—

Slots

  • :actions
  • :inner_block (obrigatório)

ChartLegend

FrappeUIPhx.Charts.Legend.chart_legend/1 — Legenda: marcador colorido + nome. items é [%{label, color}] ou vem das séries.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
itemslistsim—[%{label: String, color: String}]

ChartTooltip

FrappeUIPhx.Charts.Tooltip.chart_tooltip/1 — Dica de um ponto de dado, desenhada em SVG: aparece quando o pai tem a classe group e está em hover/foco (CSS puro). Complementa o <title> nativo.

AtributoTipoObrigatórioPadrãoValoresDescrição
textstringsim—
xfloatsim—centro horizontal
yfloatsim—base da dica (acima do ponto)

ChartStates

FrappeUIPhx.Charts.Frame.chart_frame/1 — Moldura comum dos gráficos com os estados :loading, :empty e :error (visualmente distintos); no estado :ready mostra o gráfico.

AtributoTipoObrigatórioPadrãoValoresDescrição
empty_textstringnão—
errorstringnão—
heightintegernão240
stateatomsim—:ready, :loading, :empty, :error

Slots

  • :inner_block (obrigatório)

Moléculas

List

FrappeUIPhx.Components.List.list/1 — Tabela de objetos: colunas por slot (:col), ações por linha (:action), seleção por checkbox e reordenação por arrastar-e-soltar. O estado (selected, ordem de rows) vive no servidor; cada interação é um evento.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
empty_textstringnão—
idstringsim—
on_dropstringnão—liga o arrastar-e-soltar; evento: %{"id", "to", "position"}
on_selectstringnão—evento do servidor: %{"id" => id}
row_idanynão&FrappeUIPhx.Components.Sortable.default_id/1
rowslistsim—
selectablebooleannãofalsemostra a coluna de seleção (um checkbox por linha)
selectedlistnão[]ids selecionados, comparados como texto

Slots

  • :action
  • :col (obrigatório) — atributos: label*, class

Editor

FrappeUIPhx.Components.Editor.editor/1 — Editor de texto rico (negrito, itálico, título, listas, código, link) que guarda Markdown num <input type=hidden>, então participa do formulário e do phx-change como qualquer campo.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
nameanynão—
placeholderstringnão—
valueanynão—

CodeEditor

FrappeUIPhx.Components.CodeEditor.code_editor/1 — Editor de código: <textarea> monoespaçado com numeração de linhas, tecla Tab que indenta e rótulo da linguagem. É um campo de formulário comum (name, phx-change, field).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
disabledbooleannãofalse
errorslistnão[]
fieldPhoenix.HTML.FormFieldnão—
idanynão—
languagestringnão"text"rótulo (ex.: "json", "elixir")
nameanynão—
rowsintegernão10
valueanynão—

Experimental

Accordion

FrappeUIPhx.Components.Accordion.accordion/1 — Seções recolhíveis sobre <details> nativo (teclado e leitores de tela de graça). Por padrão só uma seção fica aberta por vez (atributo name do HTML, agrupado pelo id); com multiple, qualquer combinação. open no item abre desde o servidor.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
idstringsim—
multiplebooleannãofalsepermite várias seções abertas ao mesmo tempo

Slots

  • :item (obrigatório) — atributos: id*, title*, open

Calendar

FrappeUIPhx.Components.Calendar.calendar/1 — Calendário mensal com eventos (visão de agenda). O mês exibido e o dia selecionado são assigns do servidor; navegar e escolher são eventos (on_prev, on_next, on_today, on_select com %{"date" => "2026-03-09"}).

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
eventslistnão[][%{date: Date | ISO, title: String, theme: atom}]
idstringsim—
monthanynão—Date ou ISO de qualquer dia do mês (padrão: hoje)
on_nextstringnão—
on_prevstringnão—
on_selectstringnão—
on_todaystringnão—
selectedanynão—
todayanynão—sobrescreve "hoje" (testes)

CommandPalette

FrappeUIPhx.Components.CommandPalette.command_palette/1 — Paleta de comandos (Ctrl/⌘ + K): busca, grupos e navegação por teclado. Abre como o Dialog (mesmo hook nativo: foco preso, Esc, backdrop) e o hook próprio só filtra a lista, move a seleção com ↑/↓ e aciona o item com Enter. O que cada item faz é decidido pelo servidor (click) ou por navegação.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
empty_textstringnão—
idstringsim—
placeholderstringnão—
shortcutbooleannãotrueliga Ctrl/⌘ + K para abrir

Slots

  • :item (obrigatório) — atributos: label*, group, icon, keywords, shortcut, click, navigate, patch, href

ListView

FrappeUIPhx.Components.ListView.list_view/1 — Lista agrupada e recolhível: group_by (função linha → rótulo) forma os grupos; os recolhidos (collapsed) são um assign do servidor e o cabeçalho de cada grupo dispara on_toggle com %{"group" => rótulo}. Colunas por slot, como em list. Experimental.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
collapsedlistnão[]rótulos dos grupos recolhidos
empty_textstringnão—
group_byanynão—função linha -> rótulo do grupo (nil = sem grupos)
idstringsim—
on_togglestringnão—
row_idanynão&FrappeUIPhx.Components.Sortable.default_id/1
rowslistsim—

Slots

  • :col (obrigatório) — atributos: label*, class

Stepper

FrappeUIPhx.Components.Stepper.stepper/1 — Indicador de etapas. A etapa atual (current, índice a partir de 0; igual ao número de etapas = tudo concluído) é um assign do servidor, e o estado de cada etapa (:done | :current | :upcoming) é derivado dele. Com on_go, as etapas concluídas viram botões que voltam para elas (%{"step" => índice}). Experimental.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
currentintegersim—
on_gostringnão—
orientationatomnão:horizontal:horizontal, :vertical

Slots

  • :step (obrigatório) — atributos: label*, description

ThemeSwitcher

FrappeUIPhx.Components.ThemeSwitcher.theme_switcher/1 — Alternador claro/escuro. Cada opção é um link ?theme=… tratado por FrappeUIPhx.Plug.Theme, que persiste a escolha em sessão e cookie; o tema atual (current) vem do servidor (@frappe_ui_theme). Experimental.

AtributoTipoObrigatórioPadrãoValoresDescrição
classanynão—
currentstringsim—tema ativo: "light" ou "dark"
paramstringnão"theme"nome do parâmetro lido pelo Plug