ivt
Version:
Ivt Components Library
399 lines (376 loc) • 15.9 kB
TypeScript
import * as react_jsx_runtime from 'react/jsx-runtime';
import * as React from 'react';
import React__default, { ReactNode } from 'react';
import * as class_variance_authority_types from 'class-variance-authority/types';
import { VariantProps } from 'class-variance-authority';
import { DayPicker, DateRange, Matcher } from 'react-day-picker';
import * as PopoverPrimitive from '@radix-ui/react-popover';
export { a as GenericTabs, G as GenericTabsProps, T as TabConfig } from '../chunks/GenericTabs-B6Sm4mwD.js';
type AlertFutureDateProps = {
title?: string;
description?: string;
icon?: React__default.ReactNode;
variant?: "default" | "destructive" | "warning";
className?: string;
};
declare function AlertFutureDate({ title, description, icon, variant, className, }: AlertFutureDateProps): react_jsx_runtime.JSX.Element;
interface AutoCompleteProps<T> {
value: T | null;
onChange: (value: T | null) => void;
placeholder?: string;
searchPlaceholder?: string;
open: boolean;
onOpenChange: (open: boolean) => void;
disabled?: boolean;
messageEmpty?: string;
fetchOptions: (term: string) => Promise<T[]>;
getOptionLabel: (option: T) => string;
getOptionKey: (option: T) => string | number;
onSelect?: (option: T) => void;
className?: string;
clearable?: boolean;
label?: string | React__default.ReactNode;
description?: string;
id?: string;
}
declare function AutoComplete<T>({ value, onChange, placeholder, searchPlaceholder, open, onOpenChange, disabled, messageEmpty, fetchOptions, getOptionLabel, getOptionKey, onSelect, className, clearable, label, description, id, }: AutoCompleteProps<T>): react_jsx_runtime.JSX.Element;
type BadgeVariants = VariantProps<typeof badgeVariants>["variant"];
interface BadgeProps extends React__default.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
}
declare const badgeVariants: (props?: ({
variant?: "default" | "secondary" | "destructive" | "positive" | "warning" | "info" | "outline" | null | undefined;
subtle?: boolean | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
interface BadgeListLimitedProps {
items: string[];
maxVisible?: number;
variant?: BadgeVariants;
subtle?: boolean;
tooltipItems?: string[];
}
/**
* Componente que exibe uma lista de Badges com limite de itens visíveis.
* Se houver mais itens do que o limite, exibe um Badge adicional com "+N".
*
* @param items - Array de strings para exibir como Badges
* @param maxVisible - Número máximo de Badges visíveis (padrão: 3)
* @param variant - Variante do Badge (padrão: "default")
* @param subtle - Se o Badge deve ter estilo sutil (padrão: true)
* @param tooltipItems - Array de strings para exibir no tooltip (opcional). Se fornecido, exibe todos os itens no tooltip, cada um em uma linha.
*/
declare const BadgeListLimited: React__default.FC<BadgeListLimitedProps>;
declare const buttonVariants: (props?: ({
variant?: "default" | "secondary" | "destructive" | "outline" | "selection" | "upload" | "ghost" | "link" | "table" | null | undefined;
size?: "default" | "sm" | "lg" | "icon" | "normal" | "icon-sm" | "icon-lg" | null | undefined;
} & class_variance_authority_types.ClassProp) | undefined) => string;
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
asChild?: boolean;
isAction?: boolean;
subtle?: boolean;
}
declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, fromYear, toYear, ...props }: React.ComponentProps<typeof DayPicker> & {
buttonVariant?: React.ComponentProps<typeof Button>["variant"];
}): react_jsx_runtime.JSX.Element;
declare function Popover({ ...props }: React__default.ComponentProps<typeof PopoverPrimitive.Root>): react_jsx_runtime.JSX.Element;
declare function normalizeDate(date: Date): string;
interface CalendarPopoverProps extends Omit<React__default.ComponentProps<typeof Calendar>, "mode" | "selected" | "onSelect"> {
/** Data selecionada (pode ser Date ou string parseável) */
date: Date | string | undefined | null;
/** Função chamada ao selecionar uma data */
setDate: (date: Date | undefined) => void;
/** Texto exibido quando não há data selecionada */
placeholder?: string;
/** ID opcional do botão */
id?: string;
/** Props extras para o botão */
buttonProps?: ButtonProps;
/** Props extras para o popover */
popoverProps?: React__default.ComponentProps<typeof Popover>;
/** Classe extra para o conteúdo do popover */
popoverContentClassName?: string;
/** Classe extra para o botão */
className?: string;
/**
* Permite desabilitar datas específicas (igual ao Calendar do shadcn)
* Pode ser um boolean, ou uma função que recebe a data e retorna boolean
*/
disabled?: boolean | ((date: Date) => boolean);
/**
* Exibe o estado de carregamento geral do componente
* Quando true, mostra o ícone de loading e desabilita a interação
*/
isLoading?: boolean;
/**
* Exibe o estado de carregamento específico da tabela (caso exista)
* Quando true, impede a seleção de datas no calendário
*/
isLoadingTable?: boolean;
/**
* Define um conjunto de datas desabilitadas (formato 'yyyy-MM-dd')
* Cada data presente neste Set será bloqueada na seleção do calendário
*/
disabledDates?: Set<string>;
/**
* Mês padrão a ser mostrado (caso nenhuma data esteja selecionada)
* Por padrão, será o mês atual.
*/
defaultMonth?: Date;
/**
* Se true, desabilita datas futuras.
* @default true
*/
disableFuture?: boolean;
/**
* Se true, desabilita fins de semana.
* @default true
*/
disableWeekends?: boolean;
/**
* Define se o botão de limpar (X) a data deve ser exibido.
* @default true
*/
clearable?: boolean;
}
declare const CalendarPopover: React__default.FC<CalendarPopoverProps>;
interface CalendarRangeProps extends Omit<React.ComponentProps<typeof Calendar>, "mode" | "selected" | "onSelect" | "disabled"> {
/** Intervalo de datas selecionado (com `from` e `to`) */
value: DateRange | null | undefined;
/** Função chamada ao alterar o intervalo de datas selecionado */
onChange: (range: DateRange | null | undefined) => void;
/** Texto exibido quando não há intervalo selecionado */
placeholder?: string;
/** ID opcional do botão */
id?: string;
/** Props extras para o botão */
buttonProps?: ButtonProps;
/** Props extras para o popover */
popoverProps?: React.ComponentProps<typeof Popover>;
/** Classe extra para o conteúdo do popover */
popoverContentClassName?: string;
/** Classe extra para o botão */
className?: string;
/** Desabilita o botão e impede a seleção de datas */
disabled?: Matcher | Matcher[] | boolean;
/** Função para retornar mensagem de tooltip para datas desabilitadas */
disabledDateTooltip?: (date: Date) => string | undefined;
/**
* Mês padrão a ser mostrado (caso nenhuma data esteja selecionada)
* Por padrão, será o mês atual.
*/
defaultMonth?: Date;
/** Exibir opções de intervalos rápidos (Hoje, Esta Semana, etc) */
showQuickRanges?: boolean;
/** Opções de intervalos rápidos personalizadas (substitui as padrão se fornecidas e showQuickRanges for true) */
quickRanges?: QuickRange[];
/**
* Define se o botão de limpar (X) o intervalo deve ser exibido.
* @default true
*/
clearable?: boolean;
}
interface QuickRange {
label: string;
getRange: () => DateRange;
}
declare function CalendarRange({ value, onChange, placeholder, id, buttonProps, popoverProps, popoverContentClassName, className, disabled, disabledDateTooltip, showQuickRanges, quickRanges, clearable, ...props }: CalendarRangeProps): react_jsx_runtime.JSX.Element;
interface CellValuePercentageProps {
value: number;
prevDate?: string | null;
date?: string | null;
prevQuote?: number | null;
quote?: number | null;
className?: string;
}
declare function CellValuePercentage({ value, prevDate, date, prevQuote, quote, className, }: CellValuePercentageProps): React__default.JSX.Element;
interface CollapsibleHelpProps {
children?: React__default.ReactNode;
content: React__default.ReactNode;
title?: string;
className?: string;
label?: React__default.ReactNode;
}
/**
* A simpler CollapsibleHelp component that uses a Popover for the help content.
* It manages its own open state internally.
* The trigger is provided as 'children', and the content to show is passed as the 'content' prop.
*
* Usage:
* <CollapsibleHelp
* content={<p>Help text goes here...</p>}
* title="Help Section"
* >
* <button>Toggle Help</button> // This is your custom trigger
* </CollapsibleHelp>
*/
declare function CollapsibleHelp({ children, content, title, className, label, }: CollapsibleHelpProps): react_jsx_runtime.JSX.Element;
interface ConfirmSaveRowConfig {
title: string;
value: any;
type: "text" | "badge-limited" | "custom";
badge?: {
variant?: BadgeVariants;
subtle?: boolean;
maxVisible?: number;
};
}
interface ConfirmSaveProps {
onSave: () => void;
disabled?: boolean;
dialogTitle?: string;
dialogDescription?: string;
actionTitle?: string;
actionVariant?: ButtonProps["variant"];
children?: React__default.ReactNode;
rows?: ConfirmSaveRowConfig[];
}
declare function ConfirmSave({ onSave, disabled, dialogTitle, dialogDescription, actionTitle, children, rows, actionVariant, }: ConfirmSaveProps): react_jsx_runtime.JSX.Element;
interface DeleteConfirmationModalProps {
onConfirm: () => Promise<void> | void;
title?: string;
description?: string;
confirmText?: string;
cancelText?: string;
disabled?: boolean;
children?: React__default.ReactNode;
/**
* Ícone a ser exibido no botão de confirmação.
* Se não fornecido, usa Trash2Icon por padrão.
* Se for null, não exibe ícone.
*/
confirmIcon?: React__default.ComponentType<{
className?: string;
}> | null;
subtle?: boolean;
}
declare function DeleteConfirmationModal({ onConfirm, title, description, confirmText, cancelText, disabled, children, confirmIcon, subtle, }: DeleteConfirmationModalProps): react_jsx_runtime.JSX.Element;
type MenuItemConfig = {
value: string;
label: string;
path?: string;
onClick?: () => void;
subItems?: {
label: string;
onClick: () => void;
}[];
/** Função customizada para determinar se o item está ativo */
isActive?: (pathname: string) => boolean;
};
interface GenericHeadingMenubarProps {
/** Configuração dos itens do menu */
menuItems: MenuItemConfig[];
/** Classes CSS adicionais para o container */
className?: string;
/** Classes CSS adicionais para o Menubar */
classNameMenubar?: string;
/** Classes CSS adicionais para o Trigger */
classNameTrigger?: string;
/** Classes CSS adicionais para o Content (dropdown) */
classNameContent?: string;
/** Classes CSS adicionais para os Itens do dropdown */
classNameItem?: string;
/** Conteúdo adicional a ser renderizado ao lado do menu */
children?: React__default.ReactNode;
/** Desabilita todos os itens do menu */
disabled?: boolean;
/** Função customizada para determinar se um item está ativo (fallback) */
defaultIsActive?: (menuValue: string, pathname: string) => boolean;
/** Caminho atual da rota (para highlight do ativo). Compatível com Next.js e React Router. */
currentPath?: string;
/** Função executada ao solicitar navegação (ex: router.push ou navigate). */
onNavigate?: (path: string) => void;
}
/**
* Componente genérico de menubar para navegação entre páginas.
* Ajustado para ser agnóstico de framework (Next.js ou React puro).
*
* @example
* ```tsx
* // Exemplo com Next.js
* const router = useRouter();
* const pathname = usePathname();
*
* <GenericHeadingMenubar
* menuItems={menuItems}
* currentPath={pathname}
* onNavigate={(path) => router.push(path)}
* />
* ```
*/
declare const GenericHeadingMenubar: React__default.FC<GenericHeadingMenubarProps>;
interface ColumnConfig<T> {
header: string;
cell: (item: T) => React__default.ReactNode;
className?: string;
}
interface GenericTableProps<T> {
data: T[];
columns: ColumnConfig<T>[];
renderSeparator?: (index: number) => React__default.ReactNode;
emptyMessage?: string;
className?: string;
keyExtractor?: (item: T, index: number) => string | number;
}
declare function GenericTable<T>({ data, columns, renderSeparator, emptyMessage, className, keyExtractor, }: GenericTableProps<T>): react_jsx_runtime.JSX.Element;
interface HeaderProps {
title: string;
description: string;
className?: string;
classNameDescription?: string;
children?: React__default.ReactNode;
defaultValue?: string;
defaultOpen?: boolean;
menu?: React__default.ReactNode;
}
declare const Header: React__default.FC<HeaderProps>;
interface HoverBadgeProps {
title: string;
description?: string;
variant: BadgeProps["variant"];
className?: string;
showTitleInDescription?: boolean;
subtle?: boolean;
}
declare const HoverBadge: React__default.FC<HoverBadgeProps>;
interface RuleFilterBuilderProps {
fields: any[];
onRemove: (index: number) => void;
onAdd: () => void;
maxBlocks?: number;
isPending?: boolean;
instructionContent?: React__default.ReactNode;
renderConnector?: (index: number) => React__default.ReactNode;
renderItem: (index: number) => React__default.ReactNode;
}
declare function RuleFilterBuilder({ fields, onRemove, onAdd, maxBlocks, isPending, instructionContent, renderConnector, renderItem, }: RuleFilterBuilderProps): react_jsx_runtime.JSX.Element;
interface StepNavigatorProps {
/** Índice atual do passo */
currentIndex: number;
/** Total de passos */
totalSteps: number;
/** Ação ao clicar em "Anterior" */
onPrev: () => void;
/** Ação ao clicar em "Próximo" */
onNext: () => void;
/** Desabilita os botões (ex: loading) */
disabled?: boolean;
/** Personalização opcional dos rótulos */
prevLabel?: string;
nextLabel?: string;
/** Controla se deve ocultar os botões ao chegar nas extremidades */
hideEdgeButtons?: boolean;
className?: string;
}
declare const StepNavigator: React__default.FC<StepNavigatorProps>;
interface TextWrapProps extends React__default.HTMLAttributes<HTMLDivElement> {
children: React__default.ReactNode;
}
declare const TextWrap: React__default.FC<TextWrapProps>;
interface TooltipIndicatorProps {
children: ReactNode;
className?: string;
classNameIcon?: string;
}
declare const TooltipIndicator: ({ children, className, classNameIcon }: TooltipIndicatorProps) => react_jsx_runtime.JSX.Element;
export { AlertFutureDate, AutoComplete, BadgeListLimited, CalendarPopover, CalendarRange, CellValuePercentage, CollapsibleHelp, ConfirmSave, DeleteConfirmationModal, GenericHeadingMenubar, GenericTable, Header, HoverBadge, RuleFilterBuilder, StepNavigator, TextWrap, TooltipIndicator, normalizeDate };
export type { AlertFutureDateProps, CalendarPopoverProps, CalendarRangeProps, ColumnConfig, ConfirmSaveRowConfig, DeleteConfirmationModalProps, GenericHeadingMenubarProps, GenericTableProps, MenuItemConfig, QuickRange, StepNavigatorProps };