@fluityy/designsystem 0.2.19 → 0.2.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Ai/AiActionButton.d.ts +8 -0
- package/dist/components/Ai/AiActionsMenu.d.ts +15 -0
- package/dist/components/Ai/AiBadge.d.ts +8 -0
- package/dist/components/Ai/AiEmptyState.d.ts +8 -0
- package/dist/components/Ai/AiIcon.d.ts +11 -0
- package/dist/components/Ai/AiInputActions.d.ts +10 -0
- package/dist/components/Ai/AiMessage.d.ts +51 -0
- package/dist/components/Ai/AiStatus.d.ts +8 -0
- package/dist/components/Ai/AiSuggestionChip.d.ts +5 -0
- package/dist/components/Ai/AiTextareaToolbar.d.ts +20 -0
- package/dist/components/Ai/AiThinking.d.ts +5 -0
- package/dist/components/Ai/PromptComposer.d.ts +28 -0
- package/dist/components/Ai/index.d.ts +12 -0
- package/dist/components/Badge/Badge.d.ts +1 -1
- package/dist/components/Chat/ChatComposer.d.ts +77 -0
- package/dist/components/Chat/index.d.ts +1 -0
- package/dist/components/Input/Input.d.ts +12 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/index.js +7645 -6651
- package/dist/index.js.map +1 -1
- package/dist/styles.css +60 -0
- package/package.json +1 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ButtonProps } from '../Button/Button';
|
|
2
|
+
export interface AiActionButtonProps extends Omit<ButtonProps, "children" | "size"> {
|
|
3
|
+
/** Texto da tooltip e aria-label. */
|
|
4
|
+
label?: string;
|
|
5
|
+
/** Destaca o ícone como ativo. */
|
|
6
|
+
active?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const AiActionButton: import('react').ForwardRefExoticComponent<AiActionButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface AiActionItem {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
onSelect?: () => void;
|
|
5
|
+
}
|
|
6
|
+
export interface AiActionsMenuProps {
|
|
7
|
+
items?: AiActionItem[];
|
|
8
|
+
onAction?: (id: string) => void;
|
|
9
|
+
label?: string;
|
|
10
|
+
loading?: boolean;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Menu de ações de IA acionado por botão sparkle. */
|
|
15
|
+
export declare function AiActionsMenu({ items, onAction, label, loading, disabled, className, }: AiActionsMenuProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BadgeProps } from '../Badge/Badge';
|
|
2
|
+
export type AiBadgeLabel = "AI" | "Gerado" | "Sugerido";
|
|
3
|
+
export interface AiBadgeProps extends Omit<BadgeProps, "children"> {
|
|
4
|
+
label?: AiBadgeLabel;
|
|
5
|
+
showIcon?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** Badge para marcar conteúdo ou áreas assistidas por IA. */
|
|
8
|
+
export declare const AiBadge: import('react').ForwardRefExoticComponent<AiBadgeProps & import('react').RefAttributes<HTMLSpanElement>>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface AiEmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2
|
+
title?: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
suggestions?: string[];
|
|
5
|
+
onSuggestionClick?: (suggestion: string) => void;
|
|
6
|
+
}
|
|
7
|
+
/** Estado vazio de chat com sugestões de prompt. */
|
|
8
|
+
export declare function AiEmptyState({ title, description, suggestions, onSuggestionClick, className, ...props }: AiEmptyStateProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
declare const aiIconVariants: (props?: ({
|
|
3
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
4
|
+
state?: "loading" | "active" | "idle" | null | undefined;
|
|
5
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
6
|
+
export interface AiIconProps extends VariantProps<typeof aiIconVariants> {
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Ícone sparkle padronizado para ações de IA. */
|
|
10
|
+
export declare function AiIcon({ size, state, className }: AiIconProps): import("react").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface AiInputActionsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2
|
+
children: React.ReactNode;
|
|
3
|
+
}
|
|
4
|
+
/** Slot compound para adornments de IA no canto direito de um Input. */
|
|
5
|
+
export declare function AiInputActions({ children, className, ...props }: AiInputActionsProps): import("react").JSX.Element;
|
|
6
|
+
export interface AiInputFieldProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
/** Wrapper relative para Input + AiInputActions. */
|
|
10
|
+
export declare function AiInputField({ children, className, ...props }: AiInputFieldProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export type AiMessageRole = "user" | "assistant";
|
|
2
|
+
export type AiMessageTone = "solid" | "subtle" | "outline";
|
|
3
|
+
export type AiMessageReceiptStatus = "sent" | "read";
|
|
4
|
+
export interface AiMessageReceiptProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
5
|
+
status: AiMessageReceiptStatus;
|
|
6
|
+
onBrand?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** Indicador de confirmação de envio/leitura para mensagens enviadas. */
|
|
9
|
+
export declare function AiMessageReceipt({ status, onBrand, className, ...props }: AiMessageReceiptProps): import("react").JSX.Element;
|
|
10
|
+
export interface AiMessageProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
11
|
+
role?: AiMessageRole;
|
|
12
|
+
tone?: AiMessageTone;
|
|
13
|
+
author?: string;
|
|
14
|
+
timestamp?: string;
|
|
15
|
+
receiptStatus?: AiMessageReceiptStatus;
|
|
16
|
+
generated?: boolean;
|
|
17
|
+
/** Oculta meta e avatar; mantém alinhamento para bolhas consecutivas do mesmo remetente. */
|
|
18
|
+
grouped?: boolean;
|
|
19
|
+
showAvatar?: boolean;
|
|
20
|
+
showMeta?: boolean;
|
|
21
|
+
badge?: React.ReactNode;
|
|
22
|
+
maxWidthClassName?: string;
|
|
23
|
+
children: React.ReactNode;
|
|
24
|
+
}
|
|
25
|
+
export interface AiMessageGroupKey {
|
|
26
|
+
role: AiMessageRole;
|
|
27
|
+
author?: string;
|
|
28
|
+
}
|
|
29
|
+
/** Indica se a mensagem continua o mesmo bloco da anterior (mesmo papel/autor). */
|
|
30
|
+
export declare function isAiMessageGrouped(current: AiMessageGroupKey, previous?: AiMessageGroupKey): boolean;
|
|
31
|
+
/** Bubble de mensagem para interfaces de chat com IA. */
|
|
32
|
+
export declare function AiMessage({ role, tone, author, timestamp, receiptStatus, generated, grouped, showAvatar, showMeta, badge, maxWidthClassName, children, className, ...props }: AiMessageProps): import("react").JSX.Element;
|
|
33
|
+
export interface AiMessageActionsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
34
|
+
onCopy?: () => void;
|
|
35
|
+
onRegenerate?: () => void;
|
|
36
|
+
onFeedback?: (positive: boolean) => void;
|
|
37
|
+
align?: "start" | "end";
|
|
38
|
+
inset?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/** Ações pós-resposta: copiar, regenerar, feedback. */
|
|
41
|
+
export declare function AiMessageActions({ onCopy, onRegenerate, onFeedback, align, inset, className, ...props }: AiMessageActionsProps): import("react").JSX.Element;
|
|
42
|
+
export declare function AiChatDayDivider({ label, className, ...props }: React.HTMLAttributes<HTMLDivElement> & {
|
|
43
|
+
label: string;
|
|
44
|
+
}): import("react").JSX.Element;
|
|
45
|
+
export declare function AiTypingIndicator({ label, className, ...props }: React.HTMLAttributes<HTMLDivElement> & {
|
|
46
|
+
label?: string;
|
|
47
|
+
}): import("react").JSX.Element;
|
|
48
|
+
export declare function AiMessageAttachment({ name, meta, onClick, className, ...props }: React.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
49
|
+
name: string;
|
|
50
|
+
meta?: string;
|
|
51
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type AiStatusVariant = "loading" | "ready" | "error" | "idle";
|
|
2
|
+
export interface AiStatusProps {
|
|
3
|
+
variant?: AiStatusVariant;
|
|
4
|
+
message?: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
/** Indicador compacto de estado de processamento IA. */
|
|
8
|
+
export declare function AiStatus({ variant, message, className }: AiStatusProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export interface AiSuggestionChipProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
2
|
+
children: React.ReactNode;
|
|
3
|
+
}
|
|
4
|
+
/** Chip clicável com prompt sugerido para ações de IA. */
|
|
5
|
+
export declare const AiSuggestionChip: import('react').ForwardRefExoticComponent<AiSuggestionChipProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AiActionItem } from './AiActionsMenu';
|
|
2
|
+
import { AiStatusVariant } from './AiStatus';
|
|
3
|
+
export interface AiTextareaToolbarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
onRefine?: () => void;
|
|
5
|
+
onExpand?: () => void;
|
|
6
|
+
onAction?: (id: string) => void;
|
|
7
|
+
actions?: AiActionItem[];
|
|
8
|
+
status?: AiStatusVariant;
|
|
9
|
+
statusMessage?: string;
|
|
10
|
+
loading?: boolean;
|
|
11
|
+
tokenCount?: number;
|
|
12
|
+
showMenu?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** Barra de ações de IA abaixo de um Textarea. */
|
|
15
|
+
export declare function AiTextareaToolbar({ onRefine, onExpand, onAction, actions, status, statusMessage, loading, tokenCount, showMenu, className, children, ...props }: AiTextareaToolbarProps): import("react").JSX.Element;
|
|
16
|
+
export interface AiTextareaFieldProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/** Wrapper para Textarea + AiTextareaToolbar com borda unificada. */
|
|
20
|
+
export declare function AiTextareaField({ children, className, ...props }: AiTextareaFieldProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export interface AiThinkingProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2
|
+
lines?: number;
|
|
3
|
+
}
|
|
4
|
+
/** Skeleton shimmer enquanto a IA gera uma resposta. */
|
|
5
|
+
export declare function AiThinking({ lines, className, ...props }: AiThinkingProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface PromptComposerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2
|
+
children: React.ReactNode;
|
|
3
|
+
}
|
|
4
|
+
export declare function PromptComposer({ children, className, ...props }: PromptComposerProps): import("react").JSX.Element;
|
|
5
|
+
export interface PromptComposerInputProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
6
|
+
}
|
|
7
|
+
export declare const PromptComposerInput: import('react').ForwardRefExoticComponent<PromptComposerInputProps & import('react').RefAttributes<HTMLTextAreaElement>>;
|
|
8
|
+
export interface PromptComposerActionsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
}
|
|
11
|
+
export declare function PromptComposerActions({ children, className, ...props }: PromptComposerActionsProps): import("react").JSX.Element;
|
|
12
|
+
export interface PromptComposerModelProps {
|
|
13
|
+
value?: string;
|
|
14
|
+
onChange?: (value: string) => void;
|
|
15
|
+
models?: {
|
|
16
|
+
value: string;
|
|
17
|
+
label: string;
|
|
18
|
+
}[];
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function PromptComposerModel({ value, onChange, models, className, }: PromptComposerModelProps): import("react").JSX.Element;
|
|
22
|
+
export interface PromptComposerSendProps {
|
|
23
|
+
onClick?: () => void;
|
|
24
|
+
loading?: boolean;
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
label?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function PromptComposerSend({ onClick, loading, disabled, label, }: PromptComposerSendProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './AiIcon';
|
|
2
|
+
export * from './AiActionButton';
|
|
3
|
+
export * from './AiBadge';
|
|
4
|
+
export * from './AiActionsMenu';
|
|
5
|
+
export * from './AiStatus';
|
|
6
|
+
export * from './AiSuggestionChip';
|
|
7
|
+
export * from './AiInputActions';
|
|
8
|
+
export * from './AiTextareaToolbar';
|
|
9
|
+
export * from './PromptComposer';
|
|
10
|
+
export * from './AiMessage';
|
|
11
|
+
export * from './AiThinking';
|
|
12
|
+
export * from './AiEmptyState';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VariantProps } from 'class-variance-authority';
|
|
2
2
|
export declare const badgeVariants: (props?: ({
|
|
3
|
-
variant?: "primary" | "outline" | "accent" | "danger" | "
|
|
3
|
+
variant?: "primary" | "outline" | "accent" | "danger" | "success" | "warning" | "neutral" | "accent-bold" | null | undefined;
|
|
4
4
|
size?: "sm" | "md" | null | undefined;
|
|
5
5
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
6
6
|
export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { IconPaperclip, IconMoodSmile, IconPhoto, IconMicrophone, IconPlus } from '@tabler/icons-react';
|
|
2
|
+
export interface ChatComposerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Container pill do input de chat. Unifica borda, foco e background.
|
|
7
|
+
* Layout interno: flex-col — use ChatComposerReply no topo e ChatComposerRow
|
|
8
|
+
* como linha principal de ações + input.
|
|
9
|
+
*/
|
|
10
|
+
export declare function ChatComposer({ children, className, ...props }: ChatComposerProps): import("react").JSX.Element;
|
|
11
|
+
export interface ChatComposerReplyProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
12
|
+
author: string;
|
|
13
|
+
message: string;
|
|
14
|
+
onDismiss?: () => void;
|
|
15
|
+
}
|
|
16
|
+
/** Faixa de prévia de resposta exibida dentro da pill, acima do input. */
|
|
17
|
+
export declare function ChatComposerReply({ author, message, onDismiss, className, ...props }: ChatComposerReplyProps): import("react").JSX.Element;
|
|
18
|
+
export interface ChatComposerRowProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
19
|
+
children: React.ReactNode;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Linha horizontal dentro do ChatComposer.
|
|
23
|
+
* Alinha verticalmente pelo centro (bottom) para suportar multi-line.
|
|
24
|
+
*/
|
|
25
|
+
export declare function ChatComposerRow({ children, className, ...props }: ChatComposerRowProps): import("react").JSX.Element;
|
|
26
|
+
export interface ChatComposerInputProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
27
|
+
/** Altura máxima em px antes de rolar (default: 160). */
|
|
28
|
+
maxHeight?: number;
|
|
29
|
+
}
|
|
30
|
+
/** Textarea auto-crescente. Usa flex-1 para preencher a linha. */
|
|
31
|
+
export declare const ChatComposerInput: import('react').ForwardRefExoticComponent<ChatComposerInputProps & import('react').RefAttributes<HTMLTextAreaElement>>;
|
|
32
|
+
export interface ChatComposerModelOption {
|
|
33
|
+
value: string;
|
|
34
|
+
label: string;
|
|
35
|
+
}
|
|
36
|
+
export interface ChatComposerModelProps {
|
|
37
|
+
value?: string;
|
|
38
|
+
onChange?: (value: string) => void;
|
|
39
|
+
options?: ChatComposerModelOption[];
|
|
40
|
+
className?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Seletor de modelo/velocidade compacto, estilo inline "Fast ▾".
|
|
44
|
+
* Renderiza um `<select>` nativo estilizado para manter acessibilidade.
|
|
45
|
+
*/
|
|
46
|
+
export declare function ChatComposerModel({ value, onChange, options, className, }: ChatComposerModelProps): import("react").JSX.Element;
|
|
47
|
+
export interface ChatComposerActionProps {
|
|
48
|
+
icon: React.ReactNode;
|
|
49
|
+
label: string;
|
|
50
|
+
onClick?: () => void;
|
|
51
|
+
active?: boolean;
|
|
52
|
+
disabled?: boolean;
|
|
53
|
+
className?: string;
|
|
54
|
+
}
|
|
55
|
+
/** Botão de ação circular inline (anexo, emoji, foto, mic, +, etc.). */
|
|
56
|
+
export declare function ChatComposerAction({ icon, label, onClick, active, disabled, className, }: ChatComposerActionProps): import("react").JSX.Element;
|
|
57
|
+
/** Separador visual entre grupos de ações. */
|
|
58
|
+
export declare function ChatComposerDivider({ className }: {
|
|
59
|
+
className?: string;
|
|
60
|
+
}): import("react").JSX.Element;
|
|
61
|
+
export interface ChatComposerSendProps {
|
|
62
|
+
onClick?: () => void;
|
|
63
|
+
loading?: boolean;
|
|
64
|
+
disabled?: boolean;
|
|
65
|
+
label?: string;
|
|
66
|
+
className?: string;
|
|
67
|
+
}
|
|
68
|
+
/** Botão de envio circular usando o Button do DS (variant="primary" size="icon"). */
|
|
69
|
+
export declare function ChatComposerSend({ onClick, loading, disabled, label, className, }: ChatComposerSendProps): import("react").JSX.Element;
|
|
70
|
+
export interface ChatComposerToolbarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
71
|
+
children: React.ReactNode;
|
|
72
|
+
}
|
|
73
|
+
/** Barra inferior opcional para ações extras abaixo da pill. */
|
|
74
|
+
export declare function ChatComposerToolbar({ children, className, ...props }: ChatComposerToolbarProps): import("react").JSX.Element;
|
|
75
|
+
/** Grupo de actions dentro da toolbar ou da row. */
|
|
76
|
+
export declare function ChatComposerActions({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
|
|
77
|
+
export { IconPaperclip as ChatComposerIconAttach, IconMoodSmile as ChatComposerIconEmoji, IconPhoto as ChatComposerIconPhoto, IconMicrophone as ChatComposerIconMic, IconPlus as ChatComposerIconPlus, };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ChatComposer';
|
|
@@ -5,5 +5,17 @@ export declare const inputVariants: (props?: ({
|
|
|
5
5
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
6
6
|
export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">, VariantProps<typeof inputVariants> {
|
|
7
7
|
label?: string;
|
|
8
|
+
/** Prefixo textual exibido no início do campo (ex.: R$, https://). */
|
|
9
|
+
inputPrefix?: React.ReactNode;
|
|
10
|
+
/** Sufixo textual exibido no fim do campo (ex.: kg, %). */
|
|
11
|
+
inputSuffix?: React.ReactNode;
|
|
12
|
+
/** Adornment customizado no início do campo. */
|
|
13
|
+
startAdornment?: React.ReactNode;
|
|
14
|
+
/** Adornment customizado no fim do campo (ignorado em type=password). */
|
|
15
|
+
endAdornment?: React.ReactNode;
|
|
16
|
+
/** Estado semântico do campo para feedback visual. */
|
|
17
|
+
status?: "default" | "success" | "warning" | "error";
|
|
18
|
+
/** Mensagem de apoio/estado abaixo do campo. */
|
|
19
|
+
message?: string;
|
|
8
20
|
}
|
|
9
21
|
export declare const Input: import('react').ForwardRefExoticComponent<InputProps & import('react').RefAttributes<HTMLInputElement>>;
|