@giro-ds/react 5.0.0 → 6.0.0

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.
Files changed (135) hide show
  1. package/dist/index.cjs +232 -208
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.ts +1656 -0
  4. package/dist/index.esm.js +234 -211
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/styles.css +1 -1
  7. package/package.json +1 -1
  8. package/dist/dts-temp/components/Avatar/Avatar.d.ts +0 -4
  9. package/dist/dts-temp/components/Avatar/Avatar.types.d.ts +0 -23
  10. package/dist/dts-temp/components/Avatar/__tests__/Avatar.test.d.ts +0 -1
  11. package/dist/dts-temp/components/Avatar/index.d.ts +0 -2
  12. package/dist/dts-temp/components/Badge/Badge.d.ts +0 -4
  13. package/dist/dts-temp/components/Badge/Badge.types.d.ts +0 -37
  14. package/dist/dts-temp/components/Badge/index.d.ts +0 -2
  15. package/dist/dts-temp/components/Button/Button.d.ts +0 -4
  16. package/dist/dts-temp/components/Button/Button.types.d.ts +0 -62
  17. package/dist/dts-temp/components/Button/__tests__/Button.test.d.ts +0 -1
  18. package/dist/dts-temp/components/Button/index.d.ts +0 -2
  19. package/dist/dts-temp/components/Calendar/Calendar.d.ts +0 -3
  20. package/dist/dts-temp/components/Calendar/Calendar.types.d.ts +0 -55
  21. package/dist/dts-temp/components/Calendar/__tests__/Calendar.test.d.ts +0 -1
  22. package/dist/dts-temp/components/Calendar/index.d.ts +0 -1
  23. package/dist/dts-temp/components/Callout/Callout.d.ts +0 -4
  24. package/dist/dts-temp/components/Callout/Callout.types.d.ts +0 -34
  25. package/dist/dts-temp/components/Callout/index.d.ts +0 -1
  26. package/dist/dts-temp/components/Checkbox/Checkbox.d.ts +0 -4
  27. package/dist/dts-temp/components/Checkbox/Checkbox.types.d.ts +0 -34
  28. package/dist/dts-temp/components/Checkbox/__tests__/Checkbox.test.d.ts +0 -1
  29. package/dist/dts-temp/components/Checkbox/index.d.ts +0 -2
  30. package/dist/dts-temp/components/Chips/Chips.d.ts +0 -4
  31. package/dist/dts-temp/components/Chips/Chips.types.d.ts +0 -34
  32. package/dist/dts-temp/components/Chips/index.d.ts +0 -1
  33. package/dist/dts-temp/components/Container/Container.d.ts +0 -2
  34. package/dist/dts-temp/components/Container/Container.types.d.ts +0 -15
  35. package/dist/dts-temp/components/Container/__tests__/Container.test.d.ts +0 -1
  36. package/dist/dts-temp/components/DatePicker/DatePicker.d.ts +0 -4
  37. package/dist/dts-temp/components/DatePicker/DatePicker.types.d.ts +0 -52
  38. package/dist/dts-temp/components/DatePicker/Utils/DateUtils.d.ts +0 -6
  39. package/dist/dts-temp/components/DatePicker/__test__/DatePicker.test.d.ts +0 -1
  40. package/dist/dts-temp/components/DatePicker/index.d.ts +0 -2
  41. package/dist/dts-temp/components/Dialog/Dialog.d.ts +0 -4
  42. package/dist/dts-temp/components/Dialog/Dialog.types.d.ts +0 -27
  43. package/dist/dts-temp/components/Dialog/__tests__/Dialog.test.d.ts +0 -1
  44. package/dist/dts-temp/components/Dialog/index.d.ts +0 -2
  45. package/dist/dts-temp/components/Drawer/Drawer.d.ts +0 -4
  46. package/dist/dts-temp/components/Drawer/Drawer.types.d.ts +0 -76
  47. package/dist/dts-temp/components/Drawer/__tests__/Drawer.test.d.ts +0 -1
  48. package/dist/dts-temp/components/Drawer/index.d.ts +0 -1
  49. package/dist/dts-temp/components/Filter/Filter.d.ts +0 -4
  50. package/dist/dts-temp/components/Filter/Filter.types.d.ts +0 -74
  51. package/dist/dts-temp/components/Filter/index.d.ts +0 -2
  52. package/dist/dts-temp/components/ListItem/ListItem.d.ts +0 -4
  53. package/dist/dts-temp/components/ListItem/ListItem.types.d.ts +0 -52
  54. package/dist/dts-temp/components/ListItem/index.d.ts +0 -2
  55. package/dist/dts-temp/components/Menu/Menu.d.ts +0 -4
  56. package/dist/dts-temp/components/Menu/Menu.types.d.ts +0 -90
  57. package/dist/dts-temp/components/Menu/__tests__/Menu.test.d.ts +0 -1
  58. package/dist/dts-temp/components/Menu/components/MenuItem.d.ts +0 -3
  59. package/dist/dts-temp/components/Menu/hooks/useMenuLogic.d.ts +0 -15
  60. package/dist/dts-temp/components/Menu/hooks/useSearchLogic.d.ts +0 -13
  61. package/dist/dts-temp/components/Menu/index.d.ts +0 -2
  62. package/dist/dts-temp/components/Popover/Popover.d.ts +0 -4
  63. package/dist/dts-temp/components/Popover/Popover.types.d.ts +0 -25
  64. package/dist/dts-temp/components/Popover/__test__/Popover.test.d.ts +0 -1
  65. package/dist/dts-temp/components/Popover/index.d.ts +0 -2
  66. package/dist/dts-temp/components/Quantity/Quantity.d.ts +0 -4
  67. package/dist/dts-temp/components/Quantity/Quantity.types.d.ts +0 -38
  68. package/dist/dts-temp/components/Quantity/index.d.ts +0 -2
  69. package/dist/dts-temp/components/Radio/Radio.d.ts +0 -4
  70. package/dist/dts-temp/components/Radio/Radio.types.d.ts +0 -52
  71. package/dist/dts-temp/components/Radio/__tests__/Radio.test.d.ts +0 -1
  72. package/dist/dts-temp/components/Radio/index.d.ts +0 -2
  73. package/dist/dts-temp/components/Search/Search.d.ts +0 -4
  74. package/dist/dts-temp/components/Search/Search.types.d.ts +0 -48
  75. package/dist/dts-temp/components/Search/__tests__/Search.test.d.ts +0 -1
  76. package/dist/dts-temp/components/Search/index.d.ts +0 -2
  77. package/dist/dts-temp/components/Select/Select.d.ts +0 -4
  78. package/dist/dts-temp/components/Select/Select.types.d.ts +0 -224
  79. package/dist/dts-temp/components/Select/__tests__/SelectRadix.test.d.ts +0 -1
  80. package/dist/dts-temp/components/Select/components/CheckboxSelectItem.d.ts +0 -4
  81. package/dist/dts-temp/components/Select/components/ExpandableSelectItem.d.ts +0 -11
  82. package/dist/dts-temp/components/Select/components/SelectItem.d.ts +0 -7
  83. package/dist/dts-temp/components/Select/hooks/useSelectLogic.d.ts +0 -3
  84. package/dist/dts-temp/components/Select/index.d.ts +0 -5
  85. package/dist/dts-temp/components/Switch/Switch.d.ts +0 -4
  86. package/dist/dts-temp/components/Switch/Switch.types.d.ts +0 -32
  87. package/dist/dts-temp/components/Switch/__tests__/Switch.test.d.ts +0 -1
  88. package/dist/dts-temp/components/Switch/index.d.ts +0 -2
  89. package/dist/dts-temp/components/Table/EmptyRows150Color.d.ts +0 -8
  90. package/dist/dts-temp/components/Table/LoaderList.d.ts +0 -10
  91. package/dist/dts-temp/components/Table/MultiLineText/MultiLineText.d.ts +0 -14
  92. package/dist/dts-temp/components/Table/MultiLineText/index.d.ts +0 -2
  93. package/dist/dts-temp/components/Table/Table.d.ts +0 -3
  94. package/dist/dts-temp/components/Table/Table.types.d.ts +0 -70
  95. package/dist/dts-temp/components/Table/TableHeader.d.ts +0 -50
  96. package/dist/dts-temp/components/Table/TablePagination.d.ts +0 -13
  97. package/dist/dts-temp/components/Table/index.d.ts +0 -7
  98. package/dist/dts-temp/components/Table/utils/tableActions.d.ts +0 -21
  99. package/dist/dts-temp/components/TextArea/TextArea.d.ts +0 -4
  100. package/dist/dts-temp/components/TextArea/TextArea.types.d.ts +0 -56
  101. package/dist/dts-temp/components/TextArea/__tests__/TextArea.test.d.ts +0 -1
  102. package/dist/dts-temp/components/TextArea/index.d.ts +0 -2
  103. package/dist/dts-temp/components/TextField/TextField.d.ts +0 -4
  104. package/dist/dts-temp/components/TextField/TextField.types.d.ts +0 -77
  105. package/dist/dts-temp/components/TextField/__tests__/Textfield.test.d.ts +0 -1
  106. package/dist/dts-temp/components/TextField/index.d.ts +0 -2
  107. package/dist/dts-temp/components/TextField/utils/__tests__/validation.test.d.ts +0 -1
  108. package/dist/dts-temp/components/TextField/utils/index.d.ts +0 -2
  109. package/dist/dts-temp/components/TextField/utils/validation.d.ts +0 -8
  110. package/dist/dts-temp/components/Toast/Toast.d.ts +0 -34
  111. package/dist/dts-temp/components/Toast/Toast.types.d.ts +0 -57
  112. package/dist/dts-temp/components/Toast/__tests__/Toast.test.d.ts +0 -1
  113. package/dist/dts-temp/components/Toast/components/ToastContainer.d.ts +0 -22
  114. package/dist/dts-temp/components/Toast/components/ToastProvider.d.ts +0 -35
  115. package/dist/dts-temp/components/Toast/index.d.ts +0 -5
  116. package/dist/dts-temp/components/Tooltip/Tooltip.d.ts +0 -4
  117. package/dist/dts-temp/components/Tooltip/Tooltip.types.d.ts +0 -14
  118. package/dist/dts-temp/components/Tooltip/__tests__/Tooltip.test.d.ts +0 -1
  119. package/dist/dts-temp/components/Tooltip/index.d.ts +0 -2
  120. package/dist/dts-temp/components/VerificationCode/VerificationCode.d.ts +0 -20
  121. package/dist/dts-temp/components/VerificationCode/VerificationCode.types.d.ts +0 -39
  122. package/dist/dts-temp/components/VerificationCode/index.d.ts +0 -2
  123. package/dist/dts-temp/components/index.d.ts +0 -59
  124. package/dist/dts-temp/contexts/ToastContext.d.ts +0 -43
  125. package/dist/dts-temp/hooks/ApiSimulation.d.ts +0 -53
  126. package/dist/dts-temp/hooks/InfiniteScroll.d.ts +0 -41
  127. package/dist/dts-temp/hooks/NormalizeText.d.ts +0 -1
  128. package/dist/dts-temp/hooks/useToast.d.ts +0 -46
  129. package/dist/dts-temp/index.d.ts +0 -1
  130. package/dist/dts-temp/shared/Label/index.d.ts +0 -15
  131. package/dist/dts-temp/shared/icons/CheckHalf.d.ts +0 -10
  132. package/dist/dts-temp/shared/icons/CheckSmall.d.ts +0 -10
  133. package/dist/dts-temp/shared/icons/index.d.ts +0 -4
  134. package/dist/dts-temp/types/common.types.d.ts +0 -12
  135. package/dist/dts-temp/types/index.d.ts +0 -1
@@ -0,0 +1,1656 @@
1
+ import * as React$1 from 'react';
2
+ import React__default, { ReactNode, ReactElement, ComponentPropsWithoutRef, CSSProperties } from 'react';
3
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import { Matcher } from 'react-day-picker';
5
+ import { Toast as Toast$1 } from 'radix-ui';
6
+
7
+ type Size = 'sm' | 'lg';
8
+ type Variant = 'filled' | 'outlined' | 'text';
9
+ type TextVariant = 'neutral' | 'brand' | 'color' | 'success' | 'alert';
10
+ type Side = 'top' | 'right' | 'bottom' | 'left';
11
+ type Align = 'start' | 'center' | 'end';
12
+ type Position = 'right' | 'left' | 'both';
13
+ type Locale = 'pt-br' | 'en-us';
14
+ interface BaseProps {
15
+ id?: string;
16
+ className?: string;
17
+ disabled?: boolean;
18
+ }
19
+
20
+ /**
21
+ * Props do componente Avatar
22
+ * @example
23
+ * ```tsx
24
+ * // Avatar com ícone
25
+ * <Avatar icon={<UserIcon />} size="lg" />
26
+ *
27
+ * // Avatar com imagem
28
+ * <Avatar src="https://example.com/avatar.jpg" icon={<UserIcon />} size="sm" />
29
+ * ```
30
+ */
31
+ interface AvatarProps extends BaseProps {
32
+ /** Ícone ou conteúdo a ser exibido no fallback quando não há imagem ou ela falha ao carregar */
33
+ icon?: React$1.ReactNode;
34
+ /** Tamanho do avatar: 'sm' (32px) ou 'lg' (44px). @default 'lg' */
35
+ size?: Size;
36
+ /** URL da imagem do avatar. Quando fornecido, exibe a imagem; caso contrário, mostra o ícone */
37
+ src?: string;
38
+ /** Texto alternativo da imagem do avatar, usado como as iniciais do nome */
39
+ initialLetters?: string;
40
+ }
41
+
42
+ declare const Avatar: React__default.FC<AvatarProps>;
43
+
44
+ /** Tipos de badge suportados */
45
+ type BadgeType = 'notification' | 'status';
46
+ /** Valores possíveis para exibição no badge */
47
+ type BadgeValue = number | string | null;
48
+ /**
49
+ * Props do componente Badge
50
+ * @example
51
+ * ```tsx
52
+ * <Badge type="notification" badgeValue={5}>
53
+ * <IconButton icon={<BellIcon />} />
54
+ * </Badge>
55
+ * ```
56
+ * @example
57
+ * ```tsx
58
+ * <Badge
59
+ * type="status"
60
+ * badgeValue="novo"
61
+ * aria-label="Novo item disponível"
62
+ * >
63
+ * <Avatar icon={<UserIcon />} />
64
+ * </Badge>
65
+ * ```
66
+ */
67
+ interface BadgeProps extends BaseProps {
68
+ /** Tipo de badge (notificação ou status) */
69
+ type: BadgeType;
70
+ /** Conteúdo a ser envolvido pelo badge */
71
+ children?: ReactNode;
72
+ /** Valor a ser exibido no badge (número, texto ou null) */
73
+ badgeValue?: BadgeValue;
74
+ /** Valor máximo a ser exibido (ex: 99+ quando badgeValue > maxValue) */
75
+ maxValue?: number;
76
+ /** Label acessível para leitores de tela */
77
+ 'aria-label'?: string;
78
+ }
79
+
80
+ declare const Badge: React__default.FC<BadgeProps>;
81
+
82
+ /**
83
+ * Props base do Button, independentes da variante iconOnly/icon.
84
+ * `target`, `rel`, `type` e `onClick` são declarados aqui para garantir
85
+ * que o destructuring funcione em todos os modos (button | a | custom).
86
+ */
87
+ type ButtonOwnPropsBase = {
88
+ /** Elemento customizado a ser renderizado (ex: 'a', Link do React Router) */
89
+ as?: React__default.ElementType;
90
+ /** Conteúdo do botão */
91
+ children?: React__default.ReactNode;
92
+ /** Variante visual do botão */
93
+ variant?: Variant;
94
+ /** Posição do ícone em relação ao texto */
95
+ iconPosition?: Position;
96
+ /** URL de destino quando usado como link (renderiza <a>) */
97
+ href?: string;
98
+ /** Rota de destino para roteadores (ex: React Router) */
99
+ to?: string;
100
+ /** Define se o link abre em nova aba */
101
+ external?: boolean;
102
+ /** Atributo target do HTML para links */
103
+ target?: string;
104
+ /** Atributo rel do HTML para links */
105
+ rel?: string;
106
+ /** Tipo HTML do botão */
107
+ type?: 'button' | 'submit' | 'reset';
108
+ /** Tamanho do botão */
109
+ size?: Size;
110
+ /** Define se o botão ocupa 100% da largura do container */
111
+ fullWidth?: boolean;
112
+ /** Label acessível para leitores de tela */
113
+ ariaLabel?: string;
114
+ /** Estado de carregamento (exibe spinner) */
115
+ loading?: boolean;
116
+ /** Texto do tooltip exibido quando o botão é apenas ícone */
117
+ tooltipText?: string;
118
+ /** Lado em que o tooltip será exibido */
119
+ tooltipSide?: 'top' | 'bottom' | 'left' | 'right';
120
+ /** Alinhamento do tooltip */
121
+ tooltipAlign?: 'start' | 'center' | 'end';
122
+ /** Handler de clique; tipado em HTMLElement para ser compatível com todos os modos */
123
+ onClick?: React__default.MouseEventHandler<HTMLElement>;
124
+ } & BaseProps;
125
+ /**
126
+ * Props próprias do componente Button.
127
+ * Quando `iconOnly: true`, a prop `icon` é **obrigatória**.
128
+ * Isso evita que botões icon-only sejam renderizados sem ícone definido.
129
+ */
130
+ type ButtonOwnProps = (ButtonOwnPropsBase & {
131
+ /** Exibe apenas o ícone, sem texto. Requer obrigatoriamente a prop `icon`. */
132
+ iconOnly: true;
133
+ /** Ícone exibido no botão — obrigatório quando `iconOnly` é true */
134
+ icon: React__default.ReactNode;
135
+ }) | (ButtonOwnPropsBase & {
136
+ /** @default false */
137
+ iconOnly?: false;
138
+ /** Ícone a ser exibido no botão */
139
+ icon?: React__default.ReactNode;
140
+ });
141
+ /** Button renderizado como `<button>` — recebe atributos HTML precisos de HTMLButtonElement */
142
+ type ButtonAsButton = ButtonOwnProps & Omit<React__default.ButtonHTMLAttributes<HTMLButtonElement>, keyof ButtonOwnProps>;
143
+ /** Button renderizado como `<a>` — recebe atributos HTML precisos de HTMLAnchorElement */
144
+ type ButtonAsAnchor = ButtonOwnProps & Omit<React__default.AnchorHTMLAttributes<HTMLAnchorElement>, keyof ButtonOwnProps>;
145
+ /** Button renderizado como elemento customizado via prop `as` */
146
+ type ButtonAsCustom = ButtonOwnProps & Omit<React__default.HTMLAttributes<HTMLElement>, keyof ButtonOwnProps> & {
147
+ as: React__default.ElementType;
148
+ };
149
+ /**
150
+ * Props do componente Button
151
+ * @example
152
+ * ```tsx
153
+ * <Button variant="filled" size="lg" onClick={handleClick}>
154
+ * Clique aqui
155
+ * </Button>
156
+ * ```
157
+ * @example
158
+ * ```tsx
159
+ * <Button
160
+ * variant="outlined"
161
+ * icon={<Icon />}
162
+ * iconPosition="left"
163
+ * loading={isLoading}
164
+ * >
165
+ * Salvar
166
+ * </Button>
167
+ * ```
168
+ */
169
+ type ButtonProps = ButtonAsButton | ButtonAsAnchor | ButtonAsCustom;
170
+
171
+ declare const Button: React__default.ForwardRefExoticComponent<ButtonProps & React__default.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
172
+
173
+ /** Formato de exibição da data aceito pelo componente. */
174
+ type DateFormat = 'dd/mm/yyyy' | 'mm/dd/yyyy' | (string & {});
175
+ interface CalendarBaseProps extends Omit<BaseProps, 'disabled'> {
176
+ /** Data selecionada atualmente (usada pelo DatePicker). */
177
+ selected?: Date | null;
178
+ /**
179
+ * Mês exibido no calendário. Use junto com `onDateChange` para
180
+ * controlar a navegação externamente.
181
+ */
182
+ currentDate?: Date | null;
183
+ /**
184
+ * Mês inicial padrão exibido quando não controlado.
185
+ * @default currentDate
186
+ */
187
+ defaultMonth?: Date;
188
+ /** Primeiro mês navegável. */
189
+ startMonth?: Date;
190
+ /** Último mês navegável. */
191
+ endMonth?: Date;
192
+ /** Chamado quando o usuário seleciona um dia. */
193
+ onDaySelect?: (date: Date) => void;
194
+ /** Chamado quando o usuário navega entre meses. */
195
+ onDateChange?: (date: Date) => void;
196
+ /** Chamado quando o usuário limpa a seleção. */
197
+ onClear?: () => void;
198
+ /** Data mínima selecionável. */
199
+ minDate?: Date;
200
+ /** Data máxima selecionável. */
201
+ maxDate?: Date;
202
+ /**
203
+ * Dias desabilitados — aceita qualquer `Matcher` do react-day-picker
204
+ * (Date, DateRange, DateBefore, DateAfter, DayOfWeek, função…).
205
+ */
206
+ disabled?: Matcher | Matcher[];
207
+ /**
208
+ * Formato de exibição da data.
209
+ * @example 'dd/mm/yyyy' | 'mm/dd/yyyy'
210
+ */
211
+ format?: DateFormat;
212
+ /**
213
+ * Locale da interface — aceita os códigos internos do design system.
214
+ * @default 'pt-br'
215
+ */
216
+ locale?: Locale;
217
+ /** Atributo `aria-label` para o elemento raiz. */
218
+ 'aria-label'?: string;
219
+ /** Foca automaticamente o primeiro dia selecionado ou hoje. */
220
+ autoFocus?: boolean;
221
+ /** Substitui os `classNames` padrão do react-day-picker. */
222
+ classNames?: Partial<Record<string, string>>;
223
+ }
224
+ type CalendarProps = CalendarBaseProps;
225
+
226
+ declare const Calendar: ({ selected, currentDate, defaultMonth, startMonth, endMonth, onDaySelect, onDateChange, onClear: _onClear, minDate, maxDate, disabled, format: _format, locale, autoFocus, id, "aria-label": ariaLabel, }: CalendarProps) => react_jsx_runtime.JSX.Element;
227
+
228
+ /**
229
+ * Props do componente Callout
230
+ * @example
231
+ * ```tsx
232
+ * <Callout
233
+ * type="success"
234
+ * title="Sucesso!"
235
+ * text="Operação realizada com sucesso"
236
+ * icon={<CheckIcon />}
237
+ * />
238
+ * ```
239
+ * @example
240
+ * ```tsx
241
+ * <Callout
242
+ * type="alert"
243
+ * title="Atenção"
244
+ * text="Verifique os campos obrigatórios"
245
+ * />
246
+ * ```
247
+ */
248
+ interface CalloutProps extends BaseProps {
249
+ /** Tipo visual do callout */
250
+ type?: TextVariant;
251
+ /** Título principal do callout (texto em destaque) */
252
+ title?: string | null;
253
+ /** Texto descritivo do callout */
254
+ text?: string;
255
+ /** Ícone a ser exibido no callout */
256
+ icon?: React$1.ReactNode;
257
+ /** Props adicionais para o elemento div */
258
+ [key: string]: any;
259
+ }
260
+
261
+ declare const Callout: React__default.FC<CalloutProps>;
262
+
263
+ /**
264
+ * Props do componente Checkbox
265
+ * @example
266
+ * ```tsx
267
+ * <Checkbox
268
+ * label="Aceito os termos"
269
+ * checked={accepted}
270
+ * onCheckedChange={setAccepted}
271
+ * />
272
+ * ```
273
+ * @example
274
+ * ```tsx
275
+ * <Checkbox
276
+ * label="Selecionar todos"
277
+ * indeterminate={someSelected}
278
+ * onCheckedChange={handleSelectAll}
279
+ * disabled={isLoading}
280
+ * />
281
+ * ```
282
+ */
283
+ interface CheckboxProps extends BaseProps {
284
+ /** Label ou conteúdo a ser exibido ao lado do checkbox */
285
+ label?: React__default.ReactNode;
286
+ /** Callback executado quando o estado muda: (checked) => void */
287
+ onCheckedChange?: (checked: boolean) => void;
288
+ /** Estado inicial (modo não controlado) */
289
+ defaultChecked?: boolean;
290
+ /** Estado atual (modo controlado) */
291
+ checked?: boolean;
292
+ /** Estado indeterminado (usado em selecionar todos com seleção parcial) */
293
+ indeterminate?: boolean;
294
+ }
295
+
296
+ declare const Checkbox: React$1.FC<CheckboxProps>;
297
+
298
+ /**
299
+ * Props do componente Chips
300
+ * @example
301
+ * ```tsx
302
+ * <Chips variant="success" leftIcon={<CheckIcon />}>
303
+ * Ativo
304
+ * </Chips>
305
+ * ```
306
+ * @example
307
+ * ```tsx
308
+ * <Chips
309
+ * backgroundColor="color-brand-secondary-medium"
310
+ * textColor="color-brand-secondary-dark"
311
+ * >
312
+ * Alerta
313
+ * </Chips>
314
+ * ```
315
+ */
316
+ interface ChipsProps extends BaseProps, Omit<React$1.HTMLAttributes<HTMLDivElement>, 'color'> {
317
+ /** Variante semântica do chip. Define o preset de cor de fundo. */
318
+ variant?: Exclude<TextVariant, 'color'>;
319
+ /** Token CSS para a cor de fundo. Ex: 'color-brand-secondary-medium'. Sobrescreve o variant. */
320
+ backgroundColor?: string;
321
+ /** Token CSS para a cor do texto e ícones. Ex: 'color-brand-secondary-dark'. Sobrescreve o variant. */
322
+ textColor?: string;
323
+ /** Conteúdo exibido dentro do chip */
324
+ children: React$1.ReactNode;
325
+ /** Ícone posicionado à esquerda do texto */
326
+ leftIcon?: React$1.ReactNode;
327
+ /** Ícone posicionado à direita do texto */
328
+ rightIcon?: React$1.ReactNode;
329
+ /** Estilos inline adicionais */
330
+ style?: React$1.CSSProperties;
331
+ }
332
+
333
+ declare const MemoizedChips: React__default.NamedExoticComponent<ChipsProps>;
334
+
335
+ /**
336
+ * Props do componente Container
337
+ * @example
338
+ * ```tsx
339
+ * <Container>
340
+ * <h1>Conteúdo da página</h1>
341
+ * <p>Texto dentro do container</p>
342
+ * </Container>
343
+ * ```
344
+ */
345
+ interface ContainerProps {
346
+ /** Conteúdo a ser renderizado dentro do container */
347
+ children: React__default.ReactNode;
348
+ }
349
+
350
+ declare function Container({ children }: ContainerProps): react_jsx_runtime.JSX.Element;
351
+
352
+ /**
353
+ * Props do componente DatePicker
354
+ * @example
355
+ * ```tsx
356
+ * <DatePicker
357
+ * label="Data de nascimento"
358
+ * value={birthDate}
359
+ * onChange={setBirthDate}
360
+ * locale="pt-br"
361
+ * />
362
+ * ```
363
+ * @example
364
+ * ```tsx
365
+ * <DatePicker
366
+ * label="Data de início"
367
+ * required
368
+ * helperText="Selecione a data de início do projeto"
369
+ * minDate={new Date()}
370
+ * calendarSide="right"
371
+ * error={errorMessage}
372
+ * />
373
+ * ```
374
+ */
375
+ interface DatePickerProps extends BaseProps {
376
+ /** Locale para formatação da data */
377
+ locale?: Locale;
378
+ /** Posição do calendário em relação ao campo */
379
+ calendarSide?: Side;
380
+ /** Alinhamento do calendário em relação ao campo */
381
+ calendarAlign?: Exclude<Align, 'center'>;
382
+ /** Texto de ajuda exibido abaixo do campo */
383
+ helperText?: string;
384
+ /** Define se o campo é obrigatório */
385
+ required?: boolean;
386
+ /** Label do campo de data */
387
+ label?: string;
388
+ /** Valor controlado da data */
389
+ value?: Date | null;
390
+ /** Valor inicial para modo não controlado */
391
+ defaultValue?: Date | null;
392
+ /** Callback executado quando a data muda: (date) => void */
393
+ onChange?: (date: Date | null) => void;
394
+ /** Mensagem de erro a ser exibida */
395
+ error?: string;
396
+ /** Data mínima selecionável */
397
+ minDate?: Date;
398
+ /** Data máxima selecionável */
399
+ maxDate?: Date;
400
+ /** ID para testes automatizados */
401
+ 'data-testid'?: string;
402
+ }
403
+
404
+ declare const _default$2: React__default.NamedExoticComponent<DatePickerProps>;
405
+
406
+ /**
407
+ * Props do componente Dialog
408
+ * @example
409
+ * <Dialog
410
+ * title="Confirmar ação"
411
+ * bodyContent="Tem certeza que deseja continuar?"
412
+ * textPrimaryAction="Confirmar"
413
+ * textSecondaryAction="Cancelar"
414
+ * />
415
+ */
416
+ interface DialogProps extends BaseProps, React.HTMLAttributes<HTMLDivElement> {
417
+ show?: boolean;
418
+ /** Título exibido no cabeçalho do diálogo */
419
+ title?: string;
420
+ /** Texto ou conteúdo do corpo do diálogo */
421
+ bodyContent?: ReactNode;
422
+ /** Texto do botão de ação primária */
423
+ textPrimaryAction?: string;
424
+ /** Texto do botão de ação secundária */
425
+ textSecondaryAction?: string;
426
+ /** Função chamada ao executar a ação primária */
427
+ onPrimaryAction?: () => void;
428
+ /** Função chamada ao executar a ação secundária */
429
+ onSecondaryAction?: () => void;
430
+ }
431
+
432
+ declare const Dialog: React$1.FC<DialogProps>;
433
+
434
+ /**
435
+ * Props do componente Drawer
436
+ * @example
437
+ * ```tsx
438
+ * <Drawer
439
+ * isOpen={isDrawerOpen}
440
+ * onClose={handleClose}
441
+ * title="Menu"
442
+ * >
443
+ * <nav>
444
+ * <a href="/home">Home</a>
445
+ * <a href="/about">Sobre</a>
446
+ * </nav>
447
+ * </Drawer>
448
+ * ```
449
+ * @example
450
+ * ```tsx
451
+ * <Drawer
452
+ * isOpen={showDrawer}
453
+ * onClose={() => setShowDrawer(false)}
454
+ * title="Configurações"
455
+ * customWidth="400px"
456
+ * closeOnOverlayClick={true}
457
+ * closeOnEscape={true}
458
+ * >
459
+ * <Settings />
460
+ * </Drawer>
461
+ * ```
462
+ */
463
+ interface DrawerProps extends BaseProps {
464
+ /** Conteúdo a ser exibido dentro do drawer */
465
+ children?: ReactNode;
466
+ /** Conteúdo customizado do cabeçalho */
467
+ headerContent?: ReactNode;
468
+ /** Largura customizada do drawer (ex: '400px', '50%') */
469
+ customWidth?: string;
470
+ /** Callback executado ao fechar o drawer: () => void */
471
+ onClose: () => void;
472
+ /** Título exibido no cabeçalho do drawer */
473
+ title?: string;
474
+ /** Define se o drawer está aberto */
475
+ isOpen: boolean;
476
+ /** Callback executado ao abrir o drawer: () => void */
477
+ onOpen?: () => void;
478
+ /** Callback executado ao clicar no overlay: () => void */
479
+ onOverlayClick?: () => void;
480
+ /** Define se o drawer fecha ao clicar no overlay */
481
+ closeOnOverlayClick?: boolean;
482
+ /** Define se o drawer fecha ao pressionar ESC */
483
+ closeOnEscape?: boolean;
484
+ }
485
+
486
+ declare const Drawer: React__default.FC<DrawerProps>;
487
+
488
+ interface FilterItem$1 {
489
+ id?: string;
490
+ text: string;
491
+ subText?: string;
492
+ icon?: ReactNode;
493
+ disabled?: boolean;
494
+ }
495
+ type FilterType = 'text' | 'checkbox' | 'icon' | 'calendar';
496
+ /**
497
+ * Props do componente Filter
498
+ * @example
499
+ * ```tsx
500
+ * <Filter
501
+ * items={filterItems}
502
+ * type="checkbox"
503
+ * placeholder="Filtrar por categoria"
504
+ * onApplyFilter={(ids) => handleFilter(ids)}
505
+ * buttonText="Filtros"
506
+ * />
507
+ * ```
508
+ * @example
509
+ * ```tsx
510
+ * <Filter
511
+ * type="calendar"
512
+ * selectedDate={selectedDate}
513
+ * onDateSelect={handleDateSelect}
514
+ * minDate={new Date('2024-01-01')}
515
+ * locale="pt-br"
516
+ * icon={<CalendarIcon />}
517
+ * />
518
+ * ```
519
+ */
520
+ interface FilterProps extends BaseProps {
521
+ /** Array de itens para filtros do tipo dropdown */
522
+ items?: FilterItem$1[];
523
+ /** Tipo do filtro (dropdown ou calendário) */
524
+ type?: FilterType;
525
+ /** IDs dos itens selecionados */
526
+ selectedIds?: string[];
527
+ /** Callback executado ao aplicar filtro: (selectedIds) => void */
528
+ onApplyFilter?: (selectedIds: string[]) => void;
529
+ /** Placeholder do campo de busca */
530
+ placeholder?: string;
531
+ /** Habilita campo de busca no dropdown */
532
+ enableSearch?: boolean;
533
+ /** Texto ou conteúdo do botão de filtro */
534
+ buttonText?: string | ReactNode;
535
+ /** Ícone do botão de filtro */
536
+ icon?: ReactElement;
537
+ /** Variante visual do botão */
538
+ variant?: Variant;
539
+ /** Callback executado ao abrir o filtro: () => void */
540
+ onOpen?: () => void;
541
+ /** Callback executado ao fechar o filtro: () => void */
542
+ onClose?: () => void;
543
+ /** Posição do popover em relação ao botão */
544
+ side?: Side;
545
+ /** Alinhamento do popover em relação ao botão */
546
+ align?: Exclude<Align, 'center'>;
547
+ /** Data selecionada (para tipo calendar) */
548
+ selectedDate?: Date | null;
549
+ /** Callback executado ao selecionar data: (date) => void */
550
+ onDateSelect?: (date: Date) => void;
551
+ /** Callback executado ao limpar data: () => void */
552
+ onClearDate?: () => void;
553
+ /** Data mínima selecionável (para tipo calendar) */
554
+ minDate?: Date;
555
+ /** Data máxima selecionável (para tipo calendar) */
556
+ maxDate?: Date;
557
+ /** Locale do calendário */
558
+ locale?: Locale;
559
+ }
560
+
561
+ declare const Filter: React__default.FC<FilterProps>;
562
+
563
+ /** Variantes disponíveis para o ListItem */
564
+ type ListItemVariant = 'text' | 'checkbox' | 'radio' | 'icon';
565
+ /**
566
+ * Props do componente ListItem
567
+ * @example
568
+ * ```tsx
569
+ * <ListItem
570
+ * variant="text"
571
+ * text="Item da lista"
572
+ * subText="Descrição do item"
573
+ * onClick={handleClick}
574
+ * />
575
+ * ```
576
+ * @example
577
+ * ```tsx
578
+ * <ListItem
579
+ * variant="checkbox"
580
+ * text="Aceitar termos"
581
+ * checked={isChecked}
582
+ * onChange={setIsChecked}
583
+ * disabled={false}
584
+ * />
585
+ * ```
586
+ */
587
+ interface ListItemProps extends BaseProps {
588
+ /** Variante do item da lista */
589
+ variant?: ListItemVariant;
590
+ /** Texto principal do item */
591
+ text?: string;
592
+ /** Nome do input (para variantes checkbox/radio) */
593
+ name?: string;
594
+ /** Texto secundário/descrição do item */
595
+ subText?: string;
596
+ /** Estado de checked (para variantes checkbox/radio) */
597
+ checked?: boolean;
598
+ /** Estado de selecionado (para variantes text/icon) */
599
+ selected?: boolean;
600
+ /** Callback executado ao clicar no item: (event) => void */
601
+ onClick?: (event: React$1.MouseEvent<HTMLElement> | React$1.KeyboardEvent<HTMLElement>) => void;
602
+ /** Callback executado quando o estado muda: (checked) => void */
603
+ onChange?: (checked: boolean) => void;
604
+ /** Ícone do item (para variante icon) */
605
+ icon?: React$1.ReactNode;
606
+ /** Valor do input (para variantes checkbox/radio) */
607
+ value?: string;
608
+ /** Define se deve mostrar o subtexto */
609
+ showSubText?: boolean;
610
+ /** Estado de hover */
611
+ hovered?: boolean;
612
+ }
613
+
614
+ declare const ListItem: React__default.FC<ListItemProps>;
615
+
616
+ /**
617
+ * Representa um item do menu (suporta subitens aninhados)
618
+ */
619
+ interface MenuItemProps {
620
+ /** ID único do item */
621
+ id?: string;
622
+ /** Texto principal do item */
623
+ text?: string;
624
+ /** Texto secundário/descrição do item */
625
+ subText?: string;
626
+ /** Estado desabilitado do item */
627
+ disabled?: boolean;
628
+ /** Ícone do item */
629
+ icon?: React$1.ReactNode;
630
+ /** Subitens do menu (para menus aninhados) */
631
+ children?: MenuItemProps[];
632
+ /** Valor do item */
633
+ value?: string;
634
+ }
635
+ /**
636
+ * Props do componente Menu
637
+ * @example
638
+ * ```tsx
639
+ * <Menu
640
+ * items={[
641
+ * { id: '1', text: 'Perfil', icon: <UserIcon /> },
642
+ * { id: '2', text: 'Configurações', icon: <SettingsIcon /> }
643
+ * ]}
644
+ * onItemSelect={(item) => handleSelect(item)}
645
+ * >
646
+ * <Button>Menu</Button>
647
+ * </Menu>
648
+ * ```
649
+ * @example
650
+ * ```tsx
651
+ * <Menu
652
+ * items={menuItems}
653
+ * type="icon"
654
+ * search={true}
655
+ * enableInfiniteScroll={true}
656
+ * onScrollEnd={loadMore}
657
+ * maxHeight="400px"
658
+ * align="end"
659
+ * />
660
+ * ```
661
+ */
662
+ interface MenuProps extends BaseProps {
663
+ /** Array de itens do menu */
664
+ items: MenuItemProps[];
665
+ /** Elemento trigger customizado para abrir o menu */
666
+ children?: ReactElement;
667
+ /** Tipo de visualização do menu */
668
+ type?: 'text' | 'icon';
669
+ /** Callback executado quando um item é selecionado: (item) => void */
670
+ onItemSelect?: (items: MenuItemProps) => void;
671
+ /** Array de itens selecionados */
672
+ selectedItems?: MenuItemProps[];
673
+ /** Habilita campo de busca */
674
+ search?: boolean;
675
+ /** Alinhamento do menu */
676
+ align?: 'start' | 'end' | 'center';
677
+ /** Altura máxima do menu */
678
+ maxHeight?: number | string;
679
+ /** Habilita scroll infinito */
680
+ enableInfiniteScroll?: boolean;
681
+ /** Callback executado ao chegar ao final do scroll: () => void */
682
+ onScrollEnd?: () => void;
683
+ /** Estado de carregamento de mais itens */
684
+ isLoadingMore?: boolean;
685
+ /** Habilita busca via API */
686
+ enableApiSearch?: boolean;
687
+ /** Callback executado na busca via API: (searchTerm) => void */
688
+ onApiSearch?: (searchTerm: string) => void;
689
+ /** Callback executado quando o menu abre/fecha: (open) => void */
690
+ onOpenChange?: (open: boolean) => void;
691
+ }
692
+
693
+ declare const Menu: React__default.FC<MenuProps>;
694
+
695
+ /**
696
+ * Props do componente Modal
697
+ * @example
698
+ * ```tsx
699
+ * <Modal
700
+ * isOpen={isModalOpen}
701
+ * onClose={() => setIsModalOpen(false)}
702
+ * title="Título do Modal"
703
+ * >
704
+ * <p>Conteúdo do modal</p>
705
+ * </Modal>
706
+ * ```
707
+ * @example
708
+ * ```tsx
709
+ * <Modal
710
+ * isOpen={showModal}
711
+ * onClose={handleClose}
712
+ * title="Confirmar ação"
713
+ * closeOnOverlayClick={false}
714
+ * >
715
+ * <MyForm />
716
+ * </Modal>
717
+ * ```
718
+ */
719
+ interface ModalProps extends BaseProps {
720
+ /** Define se o modal está aberto */
721
+ isOpen: boolean;
722
+ /** Callback executado ao fechar o modal */
723
+ onClose: () => void;
724
+ /** Título exibido no cabeçalho do modal */
725
+ title?: string;
726
+ /** Conteúdo a ser exibido dentro do modal */
727
+ children?: ReactNode;
728
+ /** Conteúdo customizado no cabeçalho, exibido ao lado do título */
729
+ headerContent?: ReactNode;
730
+ /** Define se o modal fecha ao clicar no overlay (padrão: true) */
731
+ closeOnOverlayClick?: boolean;
732
+ /** Conteúdo do rodapé do modal */
733
+ footer?: ReactNode;
734
+ /** Largura customizada do modal (ex: '500px', '80%') */
735
+ customWidth?: string;
736
+ /** Define se o modal ocupa toda a tela. Tem prioridade sobre customWidth */
737
+ fullscreen?: boolean;
738
+ }
739
+
740
+ declare const Modal: React$1.FC<ModalProps>;
741
+
742
+ interface PopoverProps {
743
+ trigger: React.ReactNode;
744
+ content: React.ReactNode;
745
+ align?: Align;
746
+ side?: Side;
747
+ /** Distância em pixels entre o conteúdo e o trigger */
748
+ sideOffset?: number;
749
+ /** Controla o estado de abertura em modo controlado */
750
+ open?: boolean;
751
+ /** Callback chamado quando o estado de abertura muda */
752
+ onOpenChange?: (open: boolean) => void;
753
+ /**
754
+ * Quando `true`, o trigger atua como âncora de posicionamento e o popover
755
+ * é aberto/fechado exclusivamente via `open`/`onOpenChange` (modo DatePicker).
756
+ * Quando `false` (padrão), o trigger continua abrindo/fechando o popover
757
+ * normalmente, mas o estado pode ser sincronizado via `open`/`onOpenChange`
758
+ * (modo Filter).
759
+ */
760
+ asAnchor?: boolean;
761
+ /** Callback chamado quando o foco automático é ativado ao abrir o popover */
762
+ onOpenAutoFocus?: (event: Event) => void;
763
+ /** Callback chamado quando o foco automático é ativado ao fechar o popover */
764
+ onCloseAutoFocus?: (event: Event) => void;
765
+ /** Quando `true`, exibe uma seta apontando para o trigger */
766
+ showArrow?: boolean;
767
+ }
768
+
769
+ declare const Popover: React$1.FC<PopoverProps>;
770
+
771
+ /**
772
+ * Props do componente Quantity
773
+ * @example
774
+ * ```tsx
775
+ * <Quantity
776
+ * value={quantity}
777
+ * onChange={setQuantity}
778
+ * size="lg"
779
+ * />
780
+ * ```
781
+ * @example
782
+ * ```tsx
783
+ * <Quantity
784
+ * value={1}
785
+ * decimal={true}
786
+ * decimalPlaces={2}
787
+ * step={0.5}
788
+ * disabled={false}
789
+ * />
790
+ * ```
791
+ */
792
+ interface QuantityProps extends BaseProps {
793
+ /** Valor do componente */
794
+ value?: number;
795
+ /** Callback executado quando o valor muda: (value) => void */
796
+ onChange?: (value: number) => void;
797
+ /** Habilita entrada de valores decimais */
798
+ decimal?: boolean;
799
+ /** Tamanho do componente */
800
+ size?: Size;
801
+ /** Número de casas decimais permitidas */
802
+ decimalPlaces?: number;
803
+ /** Incremento/decremento ao clicar nos botões */
804
+ valueIncrement?: number;
805
+ /**
806
+ * Tamanho fixo do input, medido em caracteres (unidade CSS `ch`).
807
+ * O valor define quantos caracteres cabem visivelmente no campo sem necessidade de rolar.
808
+ * Exemplo: `inputSize={4}` reserva espaço para 4 caracteres ("9999").
809
+ * Se omitido, o tamanho é ajustado automaticamente conforme o conteúdo digitado.
810
+ */
811
+ inputSize?: number;
812
+ /** Valor mínimo permitido */
813
+ minValue?: number;
814
+ /** Valor máximo permitido */
815
+ maxValue?: number;
816
+ /** Aria label for the decrement button. Default: 'Decrease quantity' */
817
+ decrementAriaLabel?: string;
818
+ /** Aria label for the increment button. Default: 'Increase quantity' */
819
+ incrementAriaLabel?: string;
820
+ /** Aria label for the quantity input. Default: 'Quantity' */
821
+ inputAriaLabel?: string;
822
+ }
823
+
824
+ declare const memorizedQuantity: React__default.NamedExoticComponent<QuantityProps>;
825
+
826
+ /**
827
+ * Props de um item individual de rádio
828
+ */
829
+ interface RadioProps {
830
+ /** ID único do elemento */
831
+ id?: string | number;
832
+ /** Valor do radio button */
833
+ value: string;
834
+ /** Label exibida ao lado do radio button */
835
+ label: string;
836
+ /** Estado desabilitado do item */
837
+ disabled?: boolean;
838
+ }
839
+ /**
840
+ * Props do componente RadioGroup
841
+ * @example
842
+ * ```tsx
843
+ * <RadioGroup
844
+ * items={[
845
+ * { value: 'option1', label: 'Opção 1' },
846
+ * { value: 'option2', label: 'Opção 2' }
847
+ * ]}
848
+ * onValueChange={(value) => setSelected(value)}
849
+ * defaultValue="option1"
850
+ * />
851
+ * ```
852
+ * @example
853
+ * ```tsx
854
+ * <RadioGroup
855
+ * items={options}
856
+ * onValueChange={handleChange}
857
+ * name="preference"
858
+ * orientation="horizontal"
859
+ * ariaLabel="Selecione sua preferência"
860
+ * />
861
+ * ```
862
+ */
863
+ interface RadioGroupProps extends BaseProps {
864
+ /** Array de itens de rádio */
865
+ items: RadioProps[];
866
+ /** Callback executado quando o valor muda: (value) => void */
867
+ onValueChange?: (value: string) => void;
868
+ /** Valor inicial selecionado */
869
+ defaultValue?: string;
870
+ /** Nome do grupo de radio buttons */
871
+ name?: string;
872
+ /** Label acessível para leitores de tela */
873
+ ariaLabel?: string;
874
+ /** Orientação do layout dos radio buttons */
875
+ orientation?: "horizontal" | "vertical";
876
+ }
877
+
878
+ declare const Radio: React__default.FC<RadioGroupProps>;
879
+
880
+ /**
881
+ * Props do componente Search
882
+ * @example
883
+ * ```tsx
884
+ * <Search
885
+ * placeholder="Buscar..."
886
+ * value={searchTerm}
887
+ * onChange={(e) => setSearchTerm(e.target.value)}
888
+ * onClear={() => setSearchTerm('')}
889
+ * />
890
+ * ```
891
+ * @example
892
+ * ```tsx
893
+ * <Search
894
+ * placeholder="Pesquisar produtos"
895
+ * disabled={isLoading}
896
+ * onKeyDown={(e) => e.key === 'Enter' && handleSearch()}
897
+ * onFocus={handleFocus}
898
+ * />
899
+ * ```
900
+ */
901
+ type NativeInputProps = Omit<ComponentPropsWithoutRef<'input'>, 'value' | 'defaultValue' | 'onChange' | 'onClick' | 'onMouseDown'>;
902
+ interface SearchProps extends BaseProps, NativeInputProps {
903
+ /** Placeholder do campo de busca */
904
+ placeholder?: string;
905
+ /** Valor controlado do campo */
906
+ value?: string;
907
+ /** Callback executado quando o valor muda: (e) => void */
908
+ onChange?: (e: React$1.ChangeEvent<HTMLInputElement>) => void;
909
+ /** Callback executado ao pressionar tecla: (e) => void */
910
+ onKeyDown?: (e: React$1.KeyboardEvent<HTMLInputElement>) => void;
911
+ /** Callback executado ao focar no campo: (e) => void */
912
+ onFocus?: (e: React$1.FocusEvent<HTMLInputElement>) => void;
913
+ /** Callback executado ao desfocar do campo: (e) => void */
914
+ onBlur?: (e: React$1.FocusEvent<HTMLInputElement>) => void;
915
+ /** Callback executado ao limpar o campo: () => void */
916
+ onClear?: () => void;
917
+ /** Callback executado ao clicar no componente: (e) => void */
918
+ onClick?: (e: React$1.MouseEvent<HTMLDivElement>) => void;
919
+ /** Callback executado ao pressionar mouse no componente: (e) => void */
920
+ onMouseDown?: (e: React$1.MouseEvent<HTMLDivElement>) => void;
921
+ /** ID para testes automatizados */
922
+ 'data-testid'?: string;
923
+ }
924
+
925
+ declare const Search: React__default.ForwardRefExoticComponent<SearchProps & React__default.RefAttributes<HTMLInputElement>>;
926
+
927
+ /**
928
+ * Representa um item do select
929
+ */
930
+ interface SelectItemProps extends BaseProps {
931
+ /** Texto principal do item */
932
+ text: ReactNode;
933
+ /** Subtítulo ou descrição do item */
934
+ subTitle?: ReactNode;
935
+ /** Ícone do item */
936
+ icon?: ReactNode;
937
+ /** Valor do item */
938
+ value: string;
939
+ /** Define se o item está selecionado */
940
+ selected?: boolean;
941
+ /** Subitens do select (para selects aninhados) */
942
+ children?: SelectItemProps[];
943
+ }
944
+ /** Variantes disponíveis para o Select */
945
+ type SelectVariant = 'text' | 'icon' | 'checkbox';
946
+ /**
947
+ * Props do componente Select
948
+ * @example
949
+ * ```tsx
950
+ * <Select
951
+ * items={[
952
+ * { value: '1', text: 'Opção 1' },
953
+ * { value: '2', text: 'Opção 2' }
954
+ * ]}
955
+ * variant="text"
956
+ * placeholder="Selecione uma opção"
957
+ * onValueChange={(value) => console.log(value)}
958
+ * />
959
+ * ```
960
+ * @example
961
+ * ```tsx
962
+ * <Select
963
+ * items={options}
964
+ * variant="checkbox"
965
+ * multiple={true}
966
+ * search={true}
967
+ * label="Selecione múltiplas opções"
968
+ * helperText="Você pode selecionar mais de uma"
969
+ * required={true}
970
+ * />
971
+ * ```
972
+ */
973
+ interface SelectProps extends BaseProps {
974
+ /** Array de itens do select */
975
+ items: SelectItemProps[];
976
+ /** Callback executado quando o valor muda: (value) => void */
977
+ onValueChange?: (value: string | string[]) => void;
978
+ /** Callback executado quando o select abre/fecha: (open) => void */
979
+ onOpenChange?: (open: boolean) => void;
980
+ /** Variante visual do select */
981
+ variant: SelectVariant;
982
+ /** Define se o campo é obrigatório */
983
+ required?: boolean;
984
+ /** Valor(es) selecionado(s) */
985
+ value?: string | string[];
986
+ /** Habilita seleção múltipla */
987
+ multiple?: boolean;
988
+ /** Placeholder do campo */
989
+ placeholder?: string;
990
+ /** Habilita campo de busca */
991
+ search?: boolean;
992
+ /** Label do campo */
993
+ label?: string;
994
+ /** Texto de ajuda exibido abaixo do campo */
995
+ helperText?: string;
996
+ /** Largura máxima do select */
997
+ maxWidth?: number;
998
+ /** Mensagem de erro a ser exibida */
999
+ errorMessage?: string;
1000
+ /** Label acessível para leitores de tela */
1001
+ 'aria-label'?: string;
1002
+ /** ID para testes automatizados */
1003
+ 'data-testid'?: string;
1004
+ /** Habilita tooltip */
1005
+ tooltip?: boolean;
1006
+ /** Texto do tooltip */
1007
+ tooltipText?: string;
1008
+ /** Lado onde o dropdown abre */
1009
+ side?: Side;
1010
+ /** Alinhamento do dropdown */
1011
+ align?: Align;
1012
+ /** Habilita scroll infinito */
1013
+ enableInfiniteScroll?: boolean;
1014
+ /** Callback executado ao chegar ao final do scroll: () => void */
1015
+ onScrollEnd?: () => void;
1016
+ /** Estado de carregamento de mais itens */
1017
+ isLoadingMore?: boolean;
1018
+ /** Habilita busca via API */
1019
+ enableApiSearch?: boolean;
1020
+ /** Callback executado na busca via API: (term) => void */
1021
+ onApiSearch?: (term: string) => void;
1022
+ /** Estado de busca em andamento */
1023
+ isSearching?: boolean;
1024
+ }
1025
+
1026
+ declare const Select: React__default.FC<SelectProps>;
1027
+
1028
+ /**
1029
+ * Tipo base para dados da tabela. Use `<Table<SeuTipo>>` para type-safety completo.
1030
+ * @example <Table<User> dataSource={users} />
1031
+ */
1032
+ type TableRowData = Record<string, any>;
1033
+ /** Tipos de coluna suportados */
1034
+ type TableColumnType = 'text' | 'datetime' | 'custom';
1035
+ /** Opções de alinhamento de coluna */
1036
+ type TableAlign = 'left' | 'center' | 'right';
1037
+ /**
1038
+ * Configuração de coluna da tabela
1039
+ * @typeParam T - Tipo dos dados da linha
1040
+ */
1041
+ interface TableColumn<T = TableRowData> {
1042
+ /** Chave única identificadora da coluna */
1043
+ key: string;
1044
+ /** Conteúdo do cabeçalho da coluna */
1045
+ label: ReactNode;
1046
+ /** Tipo de dados da coluna */
1047
+ type?: TableColumnType;
1048
+ /** Formato de exibição (ex: 'dd/MM/yyyy' para datetime) */
1049
+ format?: string;
1050
+ /** Função customizada para renderizar o conteúdo da célula */
1051
+ render?: (row: T, index: number) => ReactNode;
1052
+ /** Alinhamento do conteúdo */
1053
+ align?: TableAlign;
1054
+ /** Estilos CSS customizados */
1055
+ style?: CSSProperties;
1056
+ }
1057
+ /**
1058
+ * Props do componente Table. Use genérico para autocomplete: `<Table<User>>`
1059
+ * @typeParam T - Tipo dos dados da linha
1060
+ */
1061
+ interface TableProps<T = TableRowData> extends BaseProps {
1062
+ /** Configuração das colunas */
1063
+ columns: TableColumn<T>[];
1064
+ /** Array de dados a serem exibidos */
1065
+ dataSource: T[];
1066
+ /** Estado de carregamento */
1067
+ loading?: boolean;
1068
+ /** Configuração de seleção de linhas */
1069
+ rowSelection?: {
1070
+ /** Keys das linhas selecionadas (modo controlado) */
1071
+ selectedRowKeys?: (string | number)[];
1072
+ /** Callback quando seleção muda: (keys, rows) => void */
1073
+ onChange?: (keys: (string | number)[], rows: T[]) => void;
1074
+ /** Customiza props dos checkboxes: (row, index) => { disabled? } */
1075
+ getCheckboxProps?: (row: T, index: number) => {
1076
+ disabled?: boolean;
1077
+ };
1078
+ /** Desabilita o checkbox "selecionar todos" */
1079
+ disableSelectAll?: boolean;
1080
+ };
1081
+ /** Configurações de localização */
1082
+ locale?: {
1083
+ /** Texto quando não há dados */
1084
+ emptyText?: ReactNode;
1085
+ };
1086
+ /** Eventos de linha: (row, index) => { onClick?, onDoubleClick?, className? } */
1087
+ onRow?: (row: T, index: number) => {
1088
+ /** Clique simples na linha */
1089
+ onClick?: () => void;
1090
+ /** Clique duplo na linha */
1091
+ onDoubleClick?: () => void;
1092
+ /** Classe CSS da linha */
1093
+ className?: string;
1094
+ };
1095
+ }
1096
+
1097
+ declare const Table: <T extends TableRowData = TableRowData>({ columns, dataSource, className, loading, rowSelection, locale, onRow, ...rest }: TableProps<T>) => react_jsx_runtime.JSX.Element | null;
1098
+
1099
+ interface BaseFilterItem {
1100
+ id?: string;
1101
+ buttonText: string | React__default.ReactNode;
1102
+ icon?: React__default.ReactElement;
1103
+ side?: Side;
1104
+ align?: Exclude<Align, 'center'>;
1105
+ disabled?: boolean;
1106
+ onToggle?: (isOpen: boolean) => void;
1107
+ tooltip?: string;
1108
+ }
1109
+ interface CheckboxFilterItem extends BaseFilterItem {
1110
+ type: 'checkbox' | 'text' | 'icon';
1111
+ items: FilterItem$1[];
1112
+ selectedIds?: string[];
1113
+ onSelectionChange?: (selectedIds: string[]) => void;
1114
+ placeholder?: string;
1115
+ enableSearch?: boolean;
1116
+ }
1117
+ interface CalendarFilterItem extends BaseFilterItem {
1118
+ type: 'calendar';
1119
+ selectedDate?: Date | null;
1120
+ onDateSelect?: (date: Date) => void;
1121
+ onClear?: () => void;
1122
+ minDate?: Date;
1123
+ maxDate?: Date;
1124
+ locale?: string;
1125
+ placeholder?: string;
1126
+ }
1127
+ type FilterItem = CheckboxFilterItem | CalendarFilterItem;
1128
+ interface TableHeaderProps extends React__default.HTMLAttributes<HTMLDivElement> {
1129
+ searchValue?: string;
1130
+ onSearchChange?: (value: string) => void;
1131
+ searchPlaceholder?: string;
1132
+ showSearch?: boolean;
1133
+ showFilters?: boolean;
1134
+ filters?: React__default.ReactNode;
1135
+ filterItems?: FilterItem[];
1136
+ className?: string;
1137
+ onSearch?: (value: string) => void;
1138
+ showClearSearch?: boolean;
1139
+ }
1140
+ declare const TableHeader: React__default.FC<TableHeaderProps>;
1141
+
1142
+ interface TablePaginationProps extends React__default.HTMLAttributes<HTMLDivElement> {
1143
+ currentPage: number;
1144
+ totalItems: number;
1145
+ itemsPerPage: number;
1146
+ onPageChange: (page: number) => void;
1147
+ onItemsPerPageChange: (itemsPerPage: number) => void;
1148
+ pageSizeOptions?: number[];
1149
+ disabled?: boolean;
1150
+ className?: string;
1151
+ }
1152
+ declare const TablePagination: React__default.FC<TablePaginationProps>;
1153
+
1154
+ /**
1155
+ * Props do componente TextArea
1156
+ * @example
1157
+ * ```tsx
1158
+ * <TextArea
1159
+ * label="Descrição"
1160
+ * value={description}
1161
+ * onChange={setDescription}
1162
+ * placeholder="Digite uma descrição"
1163
+ * />
1164
+ * ```
1165
+ * @example
1166
+ * ```tsx
1167
+ * <TextArea
1168
+ * label="Comentário"
1169
+ * required
1170
+ * maxLength={500}
1171
+ * showCharCount
1172
+ * helperText="Máximo de 500 caracteres"
1173
+ * errorMessage={error}
1174
+ * />
1175
+ * ```
1176
+ */
1177
+ interface TextAreaProps extends Omit<React__default.TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange' | 'value'> {
1178
+ /** Valor controlado do campo */
1179
+ value?: string;
1180
+ /** Callback executado quando o valor muda: (value) => void */
1181
+ onChange?: (value: string) => void;
1182
+ /** Label do campo */
1183
+ label?: string;
1184
+ /** Texto de ajuda exibido abaixo do campo */
1185
+ helperText?: string;
1186
+ /** Habilita tooltip */
1187
+ tooltip?: boolean;
1188
+ /** Texto do tooltip */
1189
+ tooltipText?: string;
1190
+ /** Lado onde o tooltip aparece */
1191
+ side?: Side;
1192
+ /** Alinhamento do tooltip */
1193
+ align?: Align;
1194
+ /**
1195
+ * Mensagem de erro exibida no campo.
1196
+ * Usada tanto pela validação interna (required, etc.)
1197
+ * quanto pelo controle externo via formulários (react-hook-form, formik, etc.)
1198
+ */
1199
+ errorMessage?: string;
1200
+ /** Sinaliza erro externo para controle via formulários (react-hook-form, formik, etc.) */
1201
+ error?: boolean;
1202
+ /** Controla o redimensionamento do textarea */
1203
+ resize?: 'none' | 'vertical' | 'both';
1204
+ /** Exibe contador de caracteres (requer maxLength) */
1205
+ showCharCount?: boolean;
1206
+ height?: number;
1207
+ }
1208
+
1209
+ declare const _default$1: React__default.NamedExoticComponent<TextAreaProps & React__default.RefAttributes<HTMLTextAreaElement>>;
1210
+
1211
+ /** Tipos de input suportados pelo TextField */
1212
+ type TextFieldType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url';
1213
+ /**
1214
+ * Props do componente TextField
1215
+ * @example
1216
+ * ```tsx
1217
+ * <TextField
1218
+ * label="Email"
1219
+ * type="email"
1220
+ * value={email}
1221
+ * onChange={setEmail}
1222
+ * placeholder="Digite seu email"
1223
+ * />
1224
+ * ```
1225
+ * @example
1226
+ * ```tsx
1227
+ * <TextField
1228
+ * label="Senha"
1229
+ * type="password"
1230
+ * required
1231
+ * helperText="Mínimo 8 caracteres"
1232
+ * errorMessage={error}
1233
+ * tooltip={true}
1234
+ * tooltipText="Deve conter letras e números"
1235
+ * icon={<LockIcon />}
1236
+ * />
1237
+ * ```
1238
+ */
1239
+ interface TextFieldProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value' | 'type'> {
1240
+ /** Valor controlado do campo */
1241
+ value?: string | number;
1242
+ /** Callback executado quando o valor muda: (value) => void */
1243
+ onChange?: (value: string) => void;
1244
+ /** Label do campo */
1245
+ label?: string;
1246
+ /** Tipo do input */
1247
+ type?: TextFieldType;
1248
+ /** Texto de ajuda exibido abaixo do campo */
1249
+ helperText?: string;
1250
+ /** Habilita tooltip */
1251
+ tooltip?: boolean;
1252
+ /** Texto do tooltip */
1253
+ tooltipText?: string;
1254
+ /** Lado onde o tooltip aparece */
1255
+ side?: Side;
1256
+ /** Alinhamento do tooltip */
1257
+ align?: Align;
1258
+ /**
1259
+ * Mensagem de erro exibida no campo.
1260
+ * Usada tanto pela validação interna (required, formato, etc.)
1261
+ * quanto pelo controle externo via formulários (react-hook-form, formik, etc.)
1262
+ */
1263
+ errorMessage?: string;
1264
+ /** Sinaliza erro externo para controle via formulários (react-hook-form, formik, etc.) */
1265
+ error?: boolean;
1266
+ /** Ícone a ser exibido no campo */
1267
+ icon?: React__default.ReactNode;
1268
+ /** Mantém o ícone visível mesmo quando o campo tem valor */
1269
+ persistIcon?: boolean;
1270
+ }
1271
+
1272
+ declare const _default: React__default.NamedExoticComponent<TextFieldProps & React__default.RefAttributes<HTMLInputElement>>;
1273
+
1274
+ /**
1275
+ * Props do componente individual de notificação `Toast`.
1276
+ *
1277
+ * Estende {@link BaseProps} e os atributos nativos do `Toast.Root` do Radix UI,
1278
+ * excluindo as propriedades controladas internamente (`open`, `onOpenChange`,
1279
+ * `duration`, `className`).
1280
+ *
1281
+ * @example
1282
+ * ```tsx
1283
+ * showToast({
1284
+ * title: 'Sucesso!',
1285
+ * iconType: 'Success',
1286
+ * duration: 3000,
1287
+ * });
1288
+ * ```
1289
+ */
1290
+ interface ToastProps extends BaseProps, Omit<React$1.ComponentPropsWithoutRef<typeof Toast$1.Root>, 'open' | 'onOpenChange' | 'duration' | 'className'> {
1291
+ /**
1292
+ * Título principal exibido no toast.
1293
+ */
1294
+ title: string;
1295
+ /**
1296
+ * Define se o toast fecha automaticamente após o tempo definido em `duration`.
1297
+ * @default true
1298
+ */
1299
+ automaticClose?: boolean;
1300
+ /**
1301
+ * Tempo em milissegundos até o toast fechar automaticamente.
1302
+ * Só tem efeito quando `automaticClose` é `true`.
1303
+ * @default 5000
1304
+ */
1305
+ duration?: number;
1306
+ /**
1307
+ * Ícone customizado exibido no toast.
1308
+ * Quando fornecido, substitui o ícone gerado automaticamente por `iconType`.
1309
+ */
1310
+ icon?: React$1.ReactNode;
1311
+ /**
1312
+ * Ícone exibido no botão de fechar o toast.
1313
+ * @default <Dismiss16Filled />
1314
+ */
1315
+ iconClosed?: React$1.ReactNode;
1316
+ /**
1317
+ * Tipo do ícone exibido automaticamente no toast.
1318
+ *
1319
+ * - `'Info'` → ícone informativo (`Info20Filled`)
1320
+ * - `'Success'` → ícone de sucesso (`CheckmarkCircle20Filled`)
1321
+ * - `'Alert'` → ícone de alerta/erro (`Warning20Filled`)
1322
+ *
1323
+ * Ignorado quando a prop `icon` for fornecida.
1324
+ * @default 'Info'
1325
+ */
1326
+ iconType?: 'Info' | 'Success' | 'Alert';
1327
+ }
1328
+
1329
+ /**
1330
+ * Componente individual de notificação Toast.
1331
+ *
1332
+ * Consome o contexto do `ToastProvider` para gerenciar seu próprio ciclo de vida.
1333
+ * Cada instância recebe um `id` único gerado pelo provider e o utiliza para
1334
+ * se remover da fila ao ser fechada.
1335
+ *
1336
+ * Construído sobre `Toast.Root` do **Radix UI**, com suporte completo a
1337
+ * acessibilidade (ARIA) e gesto de swipe para a esquerda.
1338
+ *
1339
+ * @remarks
1340
+ * Este componente não deve ser usado diretamente. Utilize o hook `useToast`
1341
+ * para exibir toasts programaticamente.
1342
+ *
1343
+ * @example
1344
+ * ```tsx
1345
+ * // Uso indireto via hook (recomendado)
1346
+ * const { showToast } = useToast();
1347
+ *
1348
+ * showToast({
1349
+ * title: 'Item salvo',
1350
+ * iconType: 'Success',
1351
+ * duration: 3000,
1352
+ * });
1353
+ * ```
1354
+ *
1355
+ * @param props - {@link ToastProps} combinadas com o `id` único do toast
1356
+ */
1357
+ declare const Toast: React$1.FC<ToastProps & {
1358
+ id: string;
1359
+ }>;
1360
+
1361
+ /**
1362
+ * Provider que gerencia o estado global dos toasts na aplicação.
1363
+ *
1364
+ * Deve envolver toda a árvore de componentes que precisará exibir toasts.
1365
+ * Disponibiliza o contexto com `showToast` e `dismissToast` para todos os
1366
+ * componentes filhos via `useToast()`.
1367
+ *
1368
+ * @remarks
1369
+ * O `ToastContainer` deve ser renderizado **dentro** do `ToastProvider`.
1370
+ *
1371
+ * @example
1372
+ * ```tsx
1373
+ * // App.tsx ou layout principal
1374
+ * import { ToastProvider, ToastContainer } from '@giro-ds/react';
1375
+ *
1376
+ * function App() {
1377
+ * return (
1378
+ * <ToastProvider maxToasts={5}>
1379
+ * <Routes />
1380
+ * <ToastContainer />
1381
+ * </ToastProvider>
1382
+ * );
1383
+ * }
1384
+ * ```
1385
+ *
1386
+ * @param children - Árvore de componentes filhos da aplicação.
1387
+ * @param maxToasts - Número máximo de toasts exibidos simultaneamente.
1388
+ * Quando o limite é excedido, o toast mais antigo é removido automaticamente.
1389
+ * @default 5
1390
+ */
1391
+ declare const ToastProvider: React$1.FC<{
1392
+ children: React$1.ReactNode;
1393
+ maxToasts?: number;
1394
+ }>;
1395
+
1396
+ /**
1397
+ * Componente responsável por renderizar todos os toasts ativos na tela.
1398
+ *
1399
+ * Lê a lista de toasts do contexto fornecido pelo `ToastProvider` e os
1400
+ * renderiza individualmente. Configura o `Toast.Provider` do Radix UI com
1401
+ * direção de swipe para a esquerda.
1402
+ *
1403
+ * @remarks
1404
+ * - Deve ser posicionado **dentro** do `ToastProvider`.
1405
+ * - Geralmente é colocado próximo à raiz da aplicação, após os demais filhos.
1406
+ * - Toasts sem `id` são ignorados automaticamente.
1407
+ *
1408
+ * @example
1409
+ * ```tsx
1410
+ * <ToastProvider>
1411
+ * <App />
1412
+ * <ToastContainer /> {/* Deve estar aqui *\/}
1413
+ * </ToastProvider>
1414
+ * ```
1415
+ */
1416
+ declare const ToastContainer: React$1.FC;
1417
+
1418
+ /**
1419
+ * Hook para exibir e remover toasts na aplicação.
1420
+ *
1421
+ * O componente que usa este hook deve ser filho de um `ToastProvider`.
1422
+ *
1423
+ * @throws {Error} Lança um erro se utilizado fora de um `ToastProvider`:
1424
+ * *"useToastContext deve ser usado dentro de ToastProvider"*
1425
+ *
1426
+ * @returns Objeto com os métodos `showToast` e `dismissToast`.
1427
+ *
1428
+ * @example
1429
+ * ```tsx
1430
+ * import { useToast } from '@giro-ds/react';
1431
+ *
1432
+ * function MeuComponente() {
1433
+ * const { showToast } = useToast();
1434
+ *
1435
+ * const handleSalvar = async () => {
1436
+ * try {
1437
+ * await salvarDados();
1438
+ * showToast({ title: 'Sucesso!', iconType: 'Success', duration: 3000 });
1439
+ * } catch (err) {
1440
+ * showToast({ title: 'Erro ao salvar', iconType: 'Alert', automaticClose: false });
1441
+ * }
1442
+ * };
1443
+ *
1444
+ * return <button onClick={handleSalvar}>Salvar</button>;
1445
+ * }
1446
+ * ```
1447
+ */
1448
+ declare const useToast: () => {
1449
+ showToast: (toast: Omit<ToastProps, "id">) => void;
1450
+ dismissToast: (id: string) => void;
1451
+ };
1452
+
1453
+ interface TooltipProps extends BaseProps {
1454
+ text: React__default.ReactNode;
1455
+ side?: Side;
1456
+ align?: Align;
1457
+ sideOffset?: number;
1458
+ /** Deslocamento em pixels no eixo de alinhamento */
1459
+ alignOffset?: number;
1460
+ /** Largura máxima do tooltip em pixels */
1461
+ maxWidth?: number;
1462
+ /** Elemento que dispara o tooltip ao hover */
1463
+ children: React__default.ReactNode;
1464
+ }
1465
+
1466
+ declare const Tooltip: React__default.FC<TooltipProps>;
1467
+
1468
+ /**
1469
+ * Props do componente Switch
1470
+ * @example
1471
+ * ```tsx
1472
+ * <Switch
1473
+ * checked={isEnabled}
1474
+ * onCheckedChange={setIsEnabled}
1475
+ * />
1476
+ * ```
1477
+ * @example
1478
+ * ```tsx
1479
+ * <Switch
1480
+ * defaultChecked={true}
1481
+ * disabled={isLoading}
1482
+ * onCheckedChange={(checked) => console.log(checked)}
1483
+ * name="notifications"
1484
+ * />
1485
+ * ```
1486
+ */
1487
+ interface SwitchProps extends BaseProps {
1488
+ /** Estado inicial (modo não controlado) */
1489
+ defaultChecked?: boolean;
1490
+ /** Callback executado quando o estado muda: (checked) => void */
1491
+ onCheckedChange?: (checked: boolean) => void;
1492
+ /** Nome do input */
1493
+ name?: string;
1494
+ /** Valor do input */
1495
+ value?: string;
1496
+ /** Estado atual (modo controlado) */
1497
+ checked?: boolean;
1498
+ }
1499
+
1500
+ declare const Switch: React$1.FC<SwitchProps>;
1501
+
1502
+ /** Tipos de entrada suportados pelo VerificationCode */
1503
+ type InputType = 'numeric' | 'alpha' | 'alphanumeric';
1504
+ /**
1505
+ * Props do componente VerificationCode
1506
+ * @example
1507
+ * ```tsx
1508
+ * <VerificationCode
1509
+ * length={6}
1510
+ * inputType="numeric"
1511
+ * onComplete={(code) => handleVerification(code)}
1512
+ * />
1513
+ * ```
1514
+ * @example
1515
+ * ```tsx
1516
+ * <VerificationCode
1517
+ * length={4}
1518
+ * inputType="alphanumeric"
1519
+ * onComplete={handleCode}
1520
+ * hasError={!!error}
1521
+ * errorMessage="Código inválido"
1522
+ * disabled={isVerifying}
1523
+ * />
1524
+ * ```
1525
+ */
1526
+ interface VerificationCodeProps extends BaseProps {
1527
+ /** Número de dígitos do código (padrão: 6) */
1528
+ length?: number;
1529
+ /** Tipo de entrada permitida (padrão: "numeric") */
1530
+ inputType?: InputType;
1531
+ /** Callback executado quando todos os campos são preenchidos: (value) => void */
1532
+ onComplete?: (value: string) => void;
1533
+ /** Define se o campo está em estado de erro */
1534
+ hasError?: boolean;
1535
+ /** Mensagem de erro exibida abaixo do componente */
1536
+ errorMessage?: string;
1537
+ /** Props adicionais passadas para os inputs */
1538
+ [key: string]: any;
1539
+ }
1540
+
1541
+ /**
1542
+ * Componente VerificationCode para entrada de códigos de verificação
1543
+ *
1544
+ * @description Permite entrada de códigos com múltiplos dígitos,
1545
+ * suportando diferentes tipos de caracteres e navegação por teclado.
1546
+ *
1547
+ * @example
1548
+ * ```tsx
1549
+ * <VerificationCode
1550
+ * length={6}
1551
+ * inputType="numeric"
1552
+ * onComplete={(code) => console.log('Código:', code)}
1553
+ * hasError={false}
1554
+ * />
1555
+ * ```
1556
+ */
1557
+ declare const VerificationCode: React__default.FC<VerificationCodeProps>;
1558
+
1559
+ /**
1560
+ * Configurações para simulação de API
1561
+ */
1562
+ interface ApiSimulationConfig {
1563
+ /** Items por página */
1564
+ itemsPerPage?: number;
1565
+ /** Total de items no dataset */
1566
+ totalItems?: number;
1567
+ /** Delay em ms para simular latência */
1568
+ delay?: number;
1569
+ /** Taxa de erro (0-1) para simular falhas */
1570
+ errorRate?: number;
1571
+ /** Função geradora de items customizada */
1572
+ itemGenerator?: (index: number, searchQuery?: string) => any;
1573
+ /** Debug mode */
1574
+ debug?: boolean;
1575
+ }
1576
+ /**
1577
+ * Estado da simulação de API
1578
+ */
1579
+ interface ApiSimulationState<T> {
1580
+ /** Items carregados */
1581
+ items: T[];
1582
+ /** Página atual */
1583
+ currentPage: number;
1584
+ /** Total de páginas */
1585
+ totalPages: number;
1586
+ /** Status do carregamento */
1587
+ status: 'idle' | 'loading' | 'succeeded' | 'failed';
1588
+ /** Erro atual (se houver) */
1589
+ error: string | null;
1590
+ /** Query de busca atual */
1591
+ searchQuery: string;
1592
+ /** Se há próxima página */
1593
+ hasNextPage: boolean;
1594
+ /** Se é a primeira página */
1595
+ isFirstPage: boolean;
1596
+ }
1597
+ interface ApiSimulationActions {
1598
+ /** Carregar próxima página */
1599
+ loadNextPage: () => Promise<void>;
1600
+ /** Realizar nova busca */
1601
+ search: (query: string) => Promise<void>;
1602
+ /** Reset completo */
1603
+ reset: () => void;
1604
+ /** Retry da última operação */
1605
+ retry: () => Promise<void>;
1606
+ }
1607
+ interface UseApiSimulationReturn<T> extends ApiSimulationState<T> {
1608
+ actions: ApiSimulationActions;
1609
+ }
1610
+ declare function useApiSimulation<T = any>(config?: ApiSimulationConfig): UseApiSimulationReturn<T>;
1611
+
1612
+ /**
1613
+ * Props para o hook useInfiniteScroll
1614
+ */
1615
+ interface UseInfiniteScrollProps {
1616
+ /** Status atual do carregamento */
1617
+ status: 'idle' | 'loading' | 'succeeded' | 'failed';
1618
+ /** Página atual */
1619
+ page: number;
1620
+ /** Última página disponível */
1621
+ lastPage: number;
1622
+ /** Callback para carregar próxima página */
1623
+ onLoadMore: () => void;
1624
+ /** Threshold para IntersectionObserver (0-1) */
1625
+ threshold?: number;
1626
+ /** Margem raiz para IntersectionObserver */
1627
+ rootMargin?: string;
1628
+ /** Habilita/desabilita o hook */
1629
+ enabled?: boolean;
1630
+ /** Debug mode - logs no console */
1631
+ debug?: boolean;
1632
+ }
1633
+ /**
1634
+ * Retorno do hook useInfiniteScroll
1635
+ */
1636
+ interface UseInfiniteScrollReturn {
1637
+ /** Ref para o elemento observador */
1638
+ observerRef: React.RefObject<HTMLDivElement | null>;
1639
+ /** Se o elemento está visível */
1640
+ isIntersecting: boolean;
1641
+ /** Se há próxima página */
1642
+ hasNextPage: boolean;
1643
+ /** Se todas as páginas foram carregadas */
1644
+ isCompleted: boolean;
1645
+ /** Função para reset manual */
1646
+ reset: () => void;
1647
+ }
1648
+ /**
1649
+ * Hook otimizado para scroll infinito usando IntersectionObserver
1650
+ */
1651
+ declare function useInfiniteScroll({ status, page, lastPage, onLoadMore, threshold, rootMargin, enabled, debug }: UseInfiniteScrollProps): UseInfiniteScrollReturn;
1652
+
1653
+ declare const normalizeText: (text: React.ReactNode) => string;
1654
+
1655
+ export { Avatar, Badge, Button, Calendar, Callout, Checkbox, MemoizedChips as Chips, Container, _default$2 as DatePicker, Dialog, Drawer, Filter, ListItem, Menu, Modal, Popover, memorizedQuantity as Quantity, Radio, Search, Select, Switch, Table, TableHeader, TablePagination, _default$1 as TextArea, _default as TextField, Toast, ToastContainer, ToastProvider, Tooltip, VerificationCode, normalizeText, useApiSimulation, useInfiniteScroll, useToast };
1656
+ export type { AvatarProps, BadgeProps, ButtonProps, CalendarProps, CalloutProps, CheckboxProps, ChipsProps, ContainerProps, DatePickerProps, DialogProps, DrawerProps, FilterItem, FilterProps, ListItemProps, MenuProps, ModalProps, PopoverProps, QuantityProps, RadioGroupProps, RadioProps, SearchProps, SelectProps, SwitchProps, TableHeaderProps, TablePaginationProps, TableProps, TextAreaProps, TextFieldProps, ToastProps, TooltipProps, VerificationCodeProps };