iGRPIGRP 3.0Documentation

Feedback e diálogos

Toasts, alertas, banners de estado, diálogos modais e de confirmação do Design System — props principais e exemplos em código.

Os componentes desta página dão resposta ao utilizador: confirmam uma ação, avisam de um erro ou pedem uma decisão. Todos são IGRP* (Horizon) e precisam de 'use client'.

Secção em construção

Esta página cobre os componentes principais; o resto do catálogo será completado. Para configurar estes componentes no Studio (sem código), vê Widgets do Page Builder.

Toasts

useIGRPToast

Hook que mostra notificações temporárias (toasts, sobre o sonner). Precisa de um IGRPToaster montado uma vez no layout da aplicação.

Gerado pelo Studio

O código gerado declara const { igrpToast } = useIGRPToast() e usa-o nas ações (por exemplo, depois de submeter um formulário). O hook devolve igrpToast(props) e os atalhos success, error, info, warning, loading e dismiss.

Prop de igrpToastTipoPor defeitoDescrição
type"default" | "success" | "error" | "info" | "warning" | "loading""default"Tipo de toast
titleReactNode"Notification"Título
descriptionReactNode—Texto por baixo do título
durationnumber4000 (success), 6000 (error)Tempo visível, em ms
promisePromise<T>—Acompanha uma promessa (loading → success/error)
loading / success / errorReactNode ou função—Mensagens dos três estados de promise
// layout — uma vez
<IGRPToaster richColors position="top-right" />

// componente
const { igrpToast, success } = useIGRPToast();

igrpToast({ type: 'error', title: 'Erro ao gravar', description: 'Tenta de novo.' });
success('Registo gravado');

igrpToast({
  promise: guardar(dados),
  loading: 'A gravar…',
  success: 'Gravado',
  error: (e) => (e instanceof Error ? e.message : 'Falhou'),
});

Alertas

IGRPAlert

Caixa de mensagem inline (informação, aviso, erro) com ícone e link opcional. Com color="destructive" é anunciada como role="alert"; nos restantes casos como role="status".

Gerado pelo Studio
PropTipoPor defeitoDescrição
variant"solid" | "soft" | "outline""solid"Estilo
color"primary" | "success" | "destructive" | "warning" | "info" | "secondary" | "indigo""primary"Cor (escolhe também o ícone por defeito)
showIconbooleantrueMostra o ícone
iconNamestringícone da colorÍcone Lucide
showLinkboolean—Mostra um link à direita
label / linkUrlstring"link" / —Texto e URL do link
childrenReactNode—Conteúdo
<IGRPAlert variant="soft" color="warning">
  O prazo de submissão termina amanhã.
</IGRPAlert>

IGRPStatusBanner

Faixa de estado (Custom) que junta um IGRPAlert com um IGRPBadge — por exemplo, o estado de um pedido. No Page Builder é o widget Status Banner.

Gerado pelo Studio
PropTipoPor defeitoDescrição
textstring"Insert our Text here"Texto principal
variant / colorIGRPColorRole / IGRPColorVariants"soft" / "success"Estilo e cor da faixa
badgeTextstring"Badge Text"Texto do badge
badgeVariant / badgeColorIGRPColorRole / IGRPColorVariants"outline" / "primary"Estilo e cor do badge
<IGRPStatusBanner text="Pedido em análise" color="info" badgeText="Pendente" badgeColor="warning" />

Diálogos

IGRPModalDialog

Janela modal para conteúdo ou formulários, composta por partes: IGRPModalDialog (raiz, open/onOpenChange), IGRPModalDialogTrigger, IGRPModalDialogContent, IGRPModalDialogHeader, IGRPModalDialogTitle, IGRPModalDialogDescription, IGRPModalDialogFooter e IGRPModalDialogClose. No Studio é o Widget Modal.

Gerado pelo Studio
PropEmTipoPor defeitoDescrição
open / onOpenChangeraizboolean / (open) => void—Controlo do estado (opcional)
sizeContent"sm" | "md" | "lg" | "xl" | "full""md"Largura máxima
showCloseButtonContentbooleantrueBotão de fechar no canto
stickyHeaderHeaderboolean—Cabeçalho fixo ao fazer scroll
stickyFooterFooterboolean—Rodapé fixo ao fazer scroll
<IGRPModalDialog>
  <IGRPModalDialogTrigger asChild>
    <IGRPButton>Ver detalhe</IGRPButton>
  </IGRPModalDialogTrigger>
  <IGRPModalDialogContent size="lg">
    <IGRPModalDialogHeader>
      <IGRPModalDialogTitle>Detalhe do registo</IGRPModalDialogTitle>
      <IGRPModalDialogDescription>Dados do registo selecionado.</IGRPModalDialogDescription>
    </IGRPModalDialogHeader>
    {/* conteúdo */}
    <IGRPModalDialogFooter>
      <IGRPModalDialogClose asChild>
        <IGRPButton variant="outline">Fechar</IGRPButton>
      </IGRPModalDialogClose>
    </IGRPModalDialogFooter>
  </IGRPModalDialogContent>
</IGRPModalDialog>

IGRPAlertDialog

Diálogo de confirmação (por exemplo, antes de apagar), com ícone, título, descrição e botões de ação e cancelar. Não tem trigger: abre e fecha com open/onOpenChange.

Gerado pelo Studio
PropTipoPor defeitoDescrição
open / onOpenChangeboolean / (open) => void—Estado do diálogo
variantIGRPColorVariants"primary"Cor do ícone e do botão de ação
title / descriptionstring—Texto do diálogo
actionLabel / cancelLabelstringtraduções do DSTexto dos botões
onAction / onCancel() => void—Chamadas antes de fechar
showCancelbooleantrueMostra o botão cancelar
iconName / iconPlacementstring / "start" | "center""AirVent" / "start"Ícone e posição — indica sempre o iconName
const [open, setOpen] = useState(false);

<IGRPAlertDialog
  open={open}
  onOpenChange={setOpen}
  variant="destructive"
  iconName="Trash2"
  title="Apagar registo?"
  description="Esta ação não pode ser desfeita."
  actionLabel="Apagar"
  onAction={apagar}
/>

Outros componentes

ComponentePara quêWidget no Studio
IGRPBannerFaixa de cookies (variant="cookie", fixa em baixo) ou de anúncio (variant="announcement")Banner
IGRPNotificationNotificação inline com ícone por tipo (default, error, info, success, warning) e linkNotification
IGRPLoadingSpinnerSpinner centrado para estados de carregamento, com label acessívelLoading Spinner
Skeleton (Primitive)Marcador de conteúdo enquanto os dados carregamSkeleton
Progress (Primitive)Barra de progressoProgress
Empty (Primitive)Estado vazio (sem resultados, sem dados)Empty
How is this guide?

Última atualização: