@giro-ds/react 3.0.7 → 5.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 (155) hide show
  1. package/dist/dts-temp/components/Avatar/Avatar.d.ts +4 -0
  2. package/dist/dts-temp/components/Avatar/Avatar.types.d.ts +23 -0
  3. package/dist/dts-temp/components/Avatar/index.d.ts +2 -0
  4. package/dist/{components → dts-temp/components}/Button/Button.types.d.ts +6 -0
  5. package/dist/dts-temp/components/Calendar/Calendar.d.ts +3 -0
  6. package/dist/dts-temp/components/Calendar/Calendar.types.d.ts +55 -0
  7. package/dist/{components → dts-temp/components}/DatePicker/DatePicker.types.d.ts +5 -3
  8. package/dist/dts-temp/components/DatePicker/Utils/DateUtils.d.ts +6 -0
  9. package/dist/dts-temp/components/Dialog/Dialog.d.ts +4 -0
  10. package/dist/dts-temp/components/Dialog/Dialog.types.d.ts +27 -0
  11. package/dist/dts-temp/components/Drawer/Drawer.d.ts +4 -0
  12. package/dist/{components → dts-temp/components}/Drawer/Drawer.types.d.ts +2 -0
  13. package/dist/{components → dts-temp/components}/Filter/Filter.types.d.ts +15 -6
  14. package/dist/dts-temp/components/Filter/index.d.ts +2 -0
  15. package/dist/dts-temp/components/Popover/Popover.d.ts +4 -0
  16. package/dist/dts-temp/components/Popover/Popover.types.d.ts +25 -0
  17. package/dist/dts-temp/components/Popover/__test__/Popover.test.d.ts +1 -0
  18. package/dist/dts-temp/components/Popover/index.d.ts +2 -0
  19. package/dist/dts-temp/components/Radio/__tests__/Radio.test.d.ts +1 -0
  20. package/dist/{components → dts-temp/components}/Search/Search.types.d.ts +4 -1
  21. package/dist/dts-temp/components/Search/__tests__/Search.test.d.ts +1 -0
  22. package/dist/dts-temp/components/Select/__tests__/SelectRadix.test.d.ts +1 -0
  23. package/dist/dts-temp/components/Switch/__tests__/Switch.test.d.ts +1 -0
  24. package/dist/{components → dts-temp/components}/Table/TableHeader.d.ts +5 -3
  25. package/dist/dts-temp/components/TextArea/TextArea.d.ts +4 -0
  26. package/dist/dts-temp/components/TextArea/TextArea.types.d.ts +56 -0
  27. package/dist/dts-temp/components/TextArea/__tests__/TextArea.test.d.ts +1 -0
  28. package/dist/dts-temp/components/TextArea/index.d.ts +2 -0
  29. package/dist/{components → dts-temp/components}/TextField/TextField.types.d.ts +9 -1
  30. package/dist/dts-temp/components/TextField/__tests__/Textfield.test.d.ts +1 -0
  31. package/dist/dts-temp/components/TextField/utils/__tests__/validation.test.d.ts +1 -0
  32. package/dist/dts-temp/components/Toast/Toast.d.ts +34 -0
  33. package/dist/dts-temp/components/Toast/Toast.types.d.ts +57 -0
  34. package/dist/dts-temp/components/Toast/__tests__/Toast.test.d.ts +1 -0
  35. package/dist/dts-temp/components/Toast/components/ToastContainer.d.ts +22 -0
  36. package/dist/dts-temp/components/Toast/components/ToastProvider.d.ts +35 -0
  37. package/dist/dts-temp/components/Toast/index.d.ts +5 -0
  38. package/dist/dts-temp/components/Tooltip/Tooltip.types.d.ts +14 -0
  39. package/dist/dts-temp/components/Tooltip/__tests__/Tooltip.test.d.ts +1 -0
  40. package/dist/{components → dts-temp/components}/index.d.ts +8 -6
  41. package/dist/dts-temp/contexts/ToastContext.d.ts +43 -0
  42. package/dist/dts-temp/hooks/useToast.d.ts +46 -0
  43. package/dist/dts-temp/index.d.ts +1 -0
  44. package/dist/index.cjs +3930 -5646
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.esm.js +3918 -5636
  47. package/dist/index.esm.js.map +1 -1
  48. package/dist/styles.css +1 -1
  49. package/package.json +3 -2
  50. package/dist/components/Avatar/Avatar.d.ts +0 -3
  51. package/dist/components/Avatar/Avatar.types.d.ts +0 -23
  52. package/dist/components/Avatar/index.d.ts +0 -1
  53. package/dist/components/Calendar/Calendar.d.ts +0 -7
  54. package/dist/components/Calendar/Calendar.types.d.ts +0 -86
  55. package/dist/components/Calendar/i18n.d.ts +0 -56
  56. package/dist/components/DatePicker/DateUtils.d.ts +0 -23
  57. package/dist/components/Dialog/Dialog.d.ts +0 -4
  58. package/dist/components/Dialog/Dialog.types.d.ts +0 -48
  59. package/dist/components/Dialog/utils/DialogUtils.d.ts +0 -1
  60. package/dist/components/Drawer/Drawer.d.ts +0 -9
  61. package/dist/components/Dropdown/Dropdown.d.ts +0 -4
  62. package/dist/components/Dropdown/Dropdown.types.d.ts +0 -91
  63. package/dist/components/Dropdown/DropdownUtils.d.ts +0 -8
  64. package/dist/components/Dropdown/index.d.ts +0 -2
  65. package/dist/components/Filter/index.d.ts +0 -2
  66. package/dist/components/Toast/Toast.d.ts +0 -13
  67. package/dist/components/Toast/Toast.types.d.ts +0 -59
  68. package/dist/components/Toast/index.d.ts +0 -2
  69. package/dist/components/Tooltip/Tooltip.types.d.ts +0 -39
  70. package/dist/index.d.ts +0 -1496
  71. /package/dist/{components/Button/__tests__/Button.test.d.ts → dts-temp/components/Avatar/__tests__/Avatar.test.d.ts} +0 -0
  72. /package/dist/{components → dts-temp/components}/Badge/Badge.d.ts +0 -0
  73. /package/dist/{components → dts-temp/components}/Badge/Badge.types.d.ts +0 -0
  74. /package/dist/{components → dts-temp/components}/Badge/index.d.ts +0 -0
  75. /package/dist/{components → dts-temp/components}/Button/Button.d.ts +0 -0
  76. /package/dist/{components/Menu/__tests__/Menu.test.d.ts → dts-temp/components/Button/__tests__/Button.test.d.ts} +0 -0
  77. /package/dist/{components → dts-temp/components}/Button/index.d.ts +0 -0
  78. /package/dist/{components/Radio/__tests__/Radio.test.d.ts → dts-temp/components/Calendar/__tests__/Calendar.test.d.ts} +0 -0
  79. /package/dist/{components → dts-temp/components}/Calendar/index.d.ts +0 -0
  80. /package/dist/{components → dts-temp/components}/Callout/Callout.d.ts +0 -0
  81. /package/dist/{components → dts-temp/components}/Callout/Callout.types.d.ts +0 -0
  82. /package/dist/{components → dts-temp/components}/Callout/index.d.ts +0 -0
  83. /package/dist/{components → dts-temp/components}/Checkbox/Checkbox.d.ts +0 -0
  84. /package/dist/{components → dts-temp/components}/Checkbox/Checkbox.types.d.ts +0 -0
  85. /package/dist/{components → dts-temp/components}/Checkbox/__tests__/Checkbox.test.d.ts +0 -0
  86. /package/dist/{components → dts-temp/components}/Checkbox/index.d.ts +0 -0
  87. /package/dist/{components → dts-temp/components}/Chips/Chips.d.ts +0 -0
  88. /package/dist/{components → dts-temp/components}/Chips/Chips.types.d.ts +0 -0
  89. /package/dist/{components → dts-temp/components}/Chips/index.d.ts +0 -0
  90. /package/dist/{components/Container/index.d.ts → dts-temp/components/Container/Container.d.ts} +0 -0
  91. /package/dist/{components → dts-temp/components}/Container/Container.types.d.ts +0 -0
  92. /package/dist/{components/Select/__tests__/SelectRadix.test.d.ts → dts-temp/components/Container/__tests__/Container.test.d.ts} +0 -0
  93. /package/dist/{components → dts-temp/components}/DatePicker/DatePicker.d.ts +0 -0
  94. /package/dist/{components/Switch/__tests__/Switch.test.d.ts → dts-temp/components/DatePicker/__test__/DatePicker.test.d.ts} +0 -0
  95. /package/dist/{components → dts-temp/components}/DatePicker/index.d.ts +0 -0
  96. /package/dist/{components/TextField/__tests__/Textfield.test.d.ts → dts-temp/components/Dialog/__tests__/Dialog.test.d.ts} +0 -0
  97. /package/dist/{components → dts-temp/components}/Dialog/index.d.ts +0 -0
  98. /package/dist/{components/TextField/utils/__tests__/validation.test.d.ts → dts-temp/components/Drawer/__tests__/Drawer.test.d.ts} +0 -0
  99. /package/dist/{components → dts-temp/components}/Drawer/index.d.ts +0 -0
  100. /package/dist/{components → dts-temp/components}/Filter/Filter.d.ts +0 -0
  101. /package/dist/{components → dts-temp/components}/ListItem/ListItem.d.ts +0 -0
  102. /package/dist/{components → dts-temp/components}/ListItem/ListItem.types.d.ts +0 -0
  103. /package/dist/{components → dts-temp/components}/ListItem/index.d.ts +0 -0
  104. /package/dist/{components → dts-temp/components}/Menu/Menu.d.ts +0 -0
  105. /package/dist/{components → dts-temp/components}/Menu/Menu.types.d.ts +0 -0
  106. /package/dist/{components/Tooltip/__tests__/Tooltip.test.d.ts → dts-temp/components/Menu/__tests__/Menu.test.d.ts} +0 -0
  107. /package/dist/{components → dts-temp/components}/Menu/components/MenuItem.d.ts +0 -0
  108. /package/dist/{components → dts-temp/components}/Menu/hooks/useMenuLogic.d.ts +0 -0
  109. /package/dist/{components → dts-temp/components}/Menu/hooks/useSearchLogic.d.ts +0 -0
  110. /package/dist/{components → dts-temp/components}/Menu/index.d.ts +0 -0
  111. /package/dist/{components → dts-temp/components}/Quantity/Quantity.d.ts +0 -0
  112. /package/dist/{components → dts-temp/components}/Quantity/Quantity.types.d.ts +0 -0
  113. /package/dist/{components → dts-temp/components}/Quantity/index.d.ts +0 -0
  114. /package/dist/{components → dts-temp/components}/Radio/Radio.d.ts +0 -0
  115. /package/dist/{components → dts-temp/components}/Radio/Radio.types.d.ts +0 -0
  116. /package/dist/{components → dts-temp/components}/Radio/index.d.ts +0 -0
  117. /package/dist/{components → dts-temp/components}/Search/Search.d.ts +0 -0
  118. /package/dist/{components → dts-temp/components}/Search/index.d.ts +0 -0
  119. /package/dist/{components → dts-temp/components}/Select/Select.d.ts +0 -0
  120. /package/dist/{components → dts-temp/components}/Select/Select.types.d.ts +0 -0
  121. /package/dist/{components → dts-temp/components}/Select/components/CheckboxSelectItem.d.ts +0 -0
  122. /package/dist/{components → dts-temp/components}/Select/components/ExpandableSelectItem.d.ts +0 -0
  123. /package/dist/{components → dts-temp/components}/Select/components/SelectItem.d.ts +0 -0
  124. /package/dist/{components → dts-temp/components}/Select/hooks/useSelectLogic.d.ts +0 -0
  125. /package/dist/{components → dts-temp/components}/Select/index.d.ts +0 -0
  126. /package/dist/{components → dts-temp/components}/Switch/Switch.d.ts +0 -0
  127. /package/dist/{components → dts-temp/components}/Switch/Switch.types.d.ts +0 -0
  128. /package/dist/{components → dts-temp/components}/Switch/index.d.ts +0 -0
  129. /package/dist/{components → dts-temp/components}/Table/EmptyRows150Color.d.ts +0 -0
  130. /package/dist/{components → dts-temp/components}/Table/LoaderList.d.ts +0 -0
  131. /package/dist/{components → dts-temp/components}/Table/MultiLineText/MultiLineText.d.ts +0 -0
  132. /package/dist/{components → dts-temp/components}/Table/MultiLineText/index.d.ts +0 -0
  133. /package/dist/{components → dts-temp/components}/Table/Table.d.ts +0 -0
  134. /package/dist/{components → dts-temp/components}/Table/Table.types.d.ts +0 -0
  135. /package/dist/{components → dts-temp/components}/Table/TablePagination.d.ts +0 -0
  136. /package/dist/{components → dts-temp/components}/Table/index.d.ts +0 -0
  137. /package/dist/{components → dts-temp/components}/Table/utils/tableActions.d.ts +0 -0
  138. /package/dist/{components → dts-temp/components}/TextField/TextField.d.ts +0 -0
  139. /package/dist/{components → dts-temp/components}/TextField/index.d.ts +0 -0
  140. /package/dist/{components → dts-temp/components}/TextField/utils/index.d.ts +0 -0
  141. /package/dist/{components → dts-temp/components}/TextField/utils/validation.d.ts +0 -0
  142. /package/dist/{components → dts-temp/components}/Tooltip/Tooltip.d.ts +0 -0
  143. /package/dist/{components → dts-temp/components}/Tooltip/index.d.ts +0 -0
  144. /package/dist/{components → dts-temp/components}/VerificationCode/VerificationCode.d.ts +0 -0
  145. /package/dist/{components → dts-temp/components}/VerificationCode/VerificationCode.types.d.ts +0 -0
  146. /package/dist/{components → dts-temp/components}/VerificationCode/index.d.ts +0 -0
  147. /package/dist/{hooks → dts-temp/hooks}/ApiSimulation.d.ts +0 -0
  148. /package/dist/{hooks → dts-temp/hooks}/InfiniteScroll.d.ts +0 -0
  149. /package/dist/{hooks → dts-temp/hooks}/NormalizeText.d.ts +0 -0
  150. /package/dist/{shared → dts-temp/shared}/Label/index.d.ts +0 -0
  151. /package/dist/{shared → dts-temp/shared}/icons/CheckHalf.d.ts +0 -0
  152. /package/dist/{shared → dts-temp/shared}/icons/CheckSmall.d.ts +0 -0
  153. /package/dist/{shared → dts-temp/shared}/icons/index.d.ts +0 -0
  154. /package/dist/{types → dts-temp/types}/common.types.d.ts +0 -0
  155. /package/dist/{types → dts-temp/types}/index.d.ts +0 -0
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { AvatarProps } from './Avatar.types';
3
+ declare const Avatar: React.FC<AvatarProps>;
4
+ export default Avatar;
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import { BaseProps, Size } from '../../types';
3
+ /**
4
+ * Props do componente Avatar
5
+ * @example
6
+ * ```tsx
7
+ * // Avatar com ícone
8
+ * <Avatar icon={<UserIcon />} size="lg" />
9
+ *
10
+ * // Avatar com imagem
11
+ * <Avatar src="https://example.com/avatar.jpg" icon={<UserIcon />} size="sm" />
12
+ * ```
13
+ */
14
+ export interface AvatarProps extends BaseProps {
15
+ /** Ícone ou conteúdo a ser exibido no fallback quando não há imagem ou ela falha ao carregar */
16
+ icon?: React.ReactNode;
17
+ /** Tamanho do avatar: 'sm' (32px) ou 'lg' (44px). @default 'lg' */
18
+ size?: Size;
19
+ /** URL da imagem do avatar. Quando fornecido, exibe a imagem; caso contrário, mostra o ícone */
20
+ src?: string;
21
+ /** Texto alternativo da imagem do avatar, usado como as iniciais do nome */
22
+ initialLetters?: string;
23
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './Avatar';
2
+ export type { AvatarProps } from './Avatar.types';
@@ -53,4 +53,10 @@ export interface ButtonProps extends BaseProps, React.HTMLAttributes<HTMLElement
53
53
  ariaLabel?: string;
54
54
  /** Estado de carregamento (exibe spinner) */
55
55
  loading?: boolean;
56
+ /** Texto do tooltip exibido quando o botão é apenas ícone */
57
+ tooltipText?: string;
58
+ /** Lado em que o tooltip será exibido */
59
+ tooltipSide?: 'top' | 'bottom' | 'left' | 'right';
60
+ /** Alinhamento do tooltip */
61
+ tooltipAlign?: 'start' | 'center' | 'end';
56
62
  }
@@ -0,0 +1,3 @@
1
+ import type { CalendarProps } from "./Calendar.types";
2
+ declare const Calendar: ({ selected, currentDate, defaultMonth, startMonth, endMonth, onDaySelect, onDateChange, onClear: _onClear, minDate, maxDate, disabled, format: _format, locale, autoFocus, id, "aria-label": ariaLabel, }: CalendarProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default Calendar;
@@ -0,0 +1,55 @@
1
+ import type { BaseProps, Locale } from '../../types/common.types';
2
+ import type { Matcher } from 'react-day-picker';
3
+ /** Formato de exibição da data aceito pelo componente. */
4
+ export type DateFormat = 'dd/mm/yyyy' | 'mm/dd/yyyy' | (string & {});
5
+ interface CalendarBaseProps extends Omit<BaseProps, 'disabled'> {
6
+ /** Data selecionada atualmente (usada pelo DatePicker). */
7
+ selected?: Date | null;
8
+ /**
9
+ * Mês exibido no calendário. Use junto com `onDateChange` para
10
+ * controlar a navegação externamente.
11
+ */
12
+ currentDate?: Date | null;
13
+ /**
14
+ * Mês inicial padrão exibido quando não controlado.
15
+ * @default currentDate
16
+ */
17
+ defaultMonth?: Date;
18
+ /** Primeiro mês navegável. */
19
+ startMonth?: Date;
20
+ /** Último mês navegável. */
21
+ endMonth?: Date;
22
+ /** Chamado quando o usuário seleciona um dia. */
23
+ onDaySelect?: (date: Date) => void;
24
+ /** Chamado quando o usuário navega entre meses. */
25
+ onDateChange?: (date: Date) => void;
26
+ /** Chamado quando o usuário limpa a seleção. */
27
+ onClear?: () => void;
28
+ /** Data mínima selecionável. */
29
+ minDate?: Date;
30
+ /** Data máxima selecionável. */
31
+ maxDate?: Date;
32
+ /**
33
+ * Dias desabilitados — aceita qualquer `Matcher` do react-day-picker
34
+ * (Date, DateRange, DateBefore, DateAfter, DayOfWeek, função…).
35
+ */
36
+ disabled?: Matcher | Matcher[];
37
+ /**
38
+ * Formato de exibição da data.
39
+ * @example 'dd/mm/yyyy' | 'mm/dd/yyyy'
40
+ */
41
+ format?: DateFormat;
42
+ /**
43
+ * Locale da interface — aceita os códigos internos do design system.
44
+ * @default 'pt-br'
45
+ */
46
+ locale?: Locale;
47
+ /** Atributo `aria-label` para o elemento raiz. */
48
+ 'aria-label'?: string;
49
+ /** Foca automaticamente o primeiro dia selecionado ou hoje. */
50
+ autoFocus?: boolean;
51
+ /** Substitui os `classNames` padrão do react-day-picker. */
52
+ classNames?: Partial<Record<string, string>>;
53
+ }
54
+ export type CalendarProps = CalendarBaseProps;
55
+ export {};
@@ -1,4 +1,4 @@
1
- import { Locale, BaseProps, Position } from '../../types/common.types';
1
+ import { Locale, BaseProps, Side, Align } from '../../types/common.types';
2
2
  /**
3
3
  * Props do componente DatePicker
4
4
  * @example
@@ -17,7 +17,7 @@ import { Locale, BaseProps, Position } from '../../types/common.types';
17
17
  * required
18
18
  * helperText="Selecione a data de início do projeto"
19
19
  * minDate={new Date()}
20
- * calendarPosition="right"
20
+ * calendarSide="right"
21
21
  * error={errorMessage}
22
22
  * />
23
23
  * ```
@@ -26,7 +26,9 @@ export interface DatePickerProps extends BaseProps {
26
26
  /** Locale para formatação da data */
27
27
  locale?: Locale;
28
28
  /** Posição do calendário em relação ao campo */
29
- calendarPosition?: Position;
29
+ calendarSide?: Side;
30
+ /** Alinhamento do calendário em relação ao campo */
31
+ calendarAlign?: Exclude<Align, 'center'>;
30
32
  /** Texto de ajuda exibido abaixo do campo */
31
33
  helperText?: string;
32
34
  /** Define se o campo é obrigatório */
@@ -0,0 +1,6 @@
1
+ import { Locale } from '../../../types/common.types';
2
+ export declare function formatDate(date: Date, locale?: Locale): string;
3
+ export declare function applyDateMask(value: string, locale?: Locale): string;
4
+ export declare function isValidDateFormat(value: string, locale?: Locale): boolean;
5
+ export declare function parseDate(dateString: string, locale?: Locale): Date | null;
6
+ export declare function validatePartialDate(value: string, locale?: Locale): 'valid' | 'invalid' | 'incomplete';
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ import { DialogProps } from "./Dialog.types";
3
+ declare const Dialog: React.FC<DialogProps>;
4
+ export default Dialog;
@@ -0,0 +1,27 @@
1
+ import { ReactNode } from 'react';
2
+ import { BaseProps } from '../../types/common.types';
3
+ /**
4
+ * Props do componente Dialog
5
+ * @example
6
+ * <Dialog
7
+ * title="Confirmar ação"
8
+ * bodyContent="Tem certeza que deseja continuar?"
9
+ * textPrimaryAction="Confirmar"
10
+ * textSecondaryAction="Cancelar"
11
+ * />
12
+ */
13
+ export interface DialogProps extends BaseProps, React.HTMLAttributes<HTMLDivElement> {
14
+ show?: boolean;
15
+ /** Título exibido no cabeçalho do diálogo */
16
+ title?: string;
17
+ /** Texto ou conteúdo do corpo do diálogo */
18
+ bodyContent?: ReactNode;
19
+ /** Texto do botão de ação primária */
20
+ textPrimaryAction?: string;
21
+ /** Texto do botão de ação secundária */
22
+ textSecondaryAction?: string;
23
+ /** Função chamada ao executar a ação primária */
24
+ onPrimaryAction?: () => void;
25
+ /** Função chamada ao executar a ação secundária */
26
+ onSecondaryAction?: () => void;
27
+ }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { DrawerProps } from './Drawer.types';
3
+ declare const Drawer: React.FC<DrawerProps>;
4
+ export default Drawer;
@@ -32,6 +32,8 @@ import { Variant, BaseProps } from '../../types/common.types';
32
32
  export interface DrawerProps extends BaseProps {
33
33
  /** Conteúdo a ser exibido dentro do drawer */
34
34
  children?: ReactNode;
35
+ /** Conteúdo customizado do cabeçalho */
36
+ headerContent?: ReactNode;
35
37
  /** Largura customizada do drawer (ex: '400px', '50%') */
36
38
  customWidth?: string;
37
39
  /** Callback executado ao fechar o drawer: () => void */
@@ -1,6 +1,13 @@
1
1
  import { ReactNode, ReactElement } from 'react';
2
- import { Variant, BaseProps, Locale, Position } from '../../types/common.types';
3
- import { DropdownItem, DropdownType } from '../Dropdown/Dropdown.types';
2
+ import { Variant, BaseProps, Locale, Side, Align } from '../../types/common.types';
3
+ export interface FilterItem {
4
+ id?: string;
5
+ text: string;
6
+ subText?: string;
7
+ icon?: ReactNode;
8
+ disabled?: boolean;
9
+ }
10
+ export type FilterType = 'text' | 'checkbox' | 'icon' | 'calendar';
4
11
  /**
5
12
  * Props do componente Filter
6
13
  * @example
@@ -27,9 +34,9 @@ import { DropdownItem, DropdownType } from '../Dropdown/Dropdown.types';
27
34
  */
28
35
  export interface FilterProps extends BaseProps {
29
36
  /** Array de itens para filtros do tipo dropdown */
30
- items?: DropdownItem[];
37
+ items?: FilterItem[];
31
38
  /** Tipo do filtro (dropdown ou calendário) */
32
- type?: DropdownType | 'calendar';
39
+ type?: FilterType;
33
40
  /** IDs dos itens selecionados */
34
41
  selectedIds?: string[];
35
42
  /** Callback executado ao aplicar filtro: (selectedIds) => void */
@@ -48,8 +55,10 @@ export interface FilterProps extends BaseProps {
48
55
  onOpen?: () => void;
49
56
  /** Callback executado ao fechar o filtro: () => void */
50
57
  onClose?: () => void;
51
- /** Posição do dropdown em relação ao botão */
52
- position?: Position;
58
+ /** Posição do popover em relação ao botão */
59
+ side?: Side;
60
+ /** Alinhamento do popover em relação ao botão */
61
+ align?: Exclude<Align, 'center'>;
53
62
  /** Data selecionada (para tipo calendar) */
54
63
  selectedDate?: Date | null;
55
64
  /** Callback executado ao selecionar data: (date) => void */
@@ -0,0 +1,2 @@
1
+ export { default } from './Filter';
2
+ export type { FilterProps, FilterItem, FilterType } from './Filter.types';
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ import { PopoverProps } from "./Popover.types";
3
+ declare const Popover: React.FC<PopoverProps>;
4
+ export default Popover;
@@ -0,0 +1,25 @@
1
+ import { Align, Side } from '../../types/common.types';
2
+ export interface PopoverProps {
3
+ trigger: React.ReactNode;
4
+ content: React.ReactNode;
5
+ align?: Align;
6
+ side?: Side;
7
+ /** Distância em pixels entre o conteúdo e o trigger */
8
+ sideOffset?: number;
9
+ /** Controla o estado de abertura em modo controlado */
10
+ open?: boolean;
11
+ /** Callback chamado quando o estado de abertura muda */
12
+ onOpenChange?: (open: boolean) => void;
13
+ /**
14
+ * Quando `true`, o trigger atua como âncora de posicionamento e o popover
15
+ * é aberto/fechado exclusivamente via `open`/`onOpenChange` (modo DatePicker).
16
+ * Quando `false` (padrão), o trigger continua abrindo/fechando o popover
17
+ * normalmente, mas o estado pode ser sincronizado via `open`/`onOpenChange`
18
+ * (modo Filter).
19
+ */
20
+ asAnchor?: boolean;
21
+ /** Callback chamado quando o foco automático é ativado ao abrir o popover */
22
+ onOpenAutoFocus?: (event: Event) => void;
23
+ /** Callback chamado quando o foco automático é ativado ao fechar o popover */
24
+ onCloseAutoFocus?: (event: Event) => void;
25
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './Popover';
2
+ export type { PopoverProps } from './Popover.types';
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import type { ComponentPropsWithoutRef } from 'react';
2
3
  import { BaseProps } from '../../types/common.types';
3
4
  /**
4
5
  * Props do componente Search
@@ -21,7 +22,8 @@ import { BaseProps } from '../../types/common.types';
21
22
  * />
22
23
  * ```
23
24
  */
24
- export interface SearchProps extends BaseProps {
25
+ type NativeInputProps = Omit<ComponentPropsWithoutRef<'input'>, 'value' | 'defaultValue' | 'onChange' | 'onClick' | 'onMouseDown'>;
26
+ export interface SearchProps extends BaseProps, NativeInputProps {
25
27
  /** Placeholder do campo de busca */
26
28
  placeholder?: string;
27
29
  /** Valor controlado do campo */
@@ -43,3 +45,4 @@ export interface SearchProps extends BaseProps {
43
45
  /** ID para testes automatizados */
44
46
  'data-testid'?: string;
45
47
  }
48
+ export {};
@@ -1,17 +1,19 @@
1
1
  import React from 'react';
2
- import type { DropdownItem } from '../Dropdown/Dropdown.types';
2
+ import type { Side, Align } from '../../types/common.types';
3
+ import type { FilterItem as FilterListItem } from '../Filter';
3
4
  interface BaseFilterItem {
4
5
  id?: string;
5
6
  buttonText: string | React.ReactNode;
6
7
  icon?: React.ReactElement;
7
- position?: 'left' | 'right';
8
+ side?: Side;
9
+ align?: Exclude<Align, 'center'>;
8
10
  disabled?: boolean;
9
11
  onToggle?: (isOpen: boolean) => void;
10
12
  tooltip?: string;
11
13
  }
12
14
  interface CheckboxFilterItem extends BaseFilterItem {
13
15
  type: 'checkbox' | 'text' | 'icon';
14
- items: DropdownItem[];
16
+ items: FilterListItem[];
15
17
  selectedIds?: string[];
16
18
  onSelectionChange?: (selectedIds: string[]) => void;
17
19
  placeholder?: string;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { TextAreaProps } from './TextArea.types';
3
+ declare const _default: React.NamedExoticComponent<TextAreaProps & React.RefAttributes<HTMLTextAreaElement>>;
4
+ export default _default;
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ import { Side, Align } from '../../types/common.types';
3
+ /**
4
+ * Props do componente TextArea
5
+ * @example
6
+ * ```tsx
7
+ * <TextArea
8
+ * label="Descrição"
9
+ * value={description}
10
+ * onChange={setDescription}
11
+ * placeholder="Digite uma descrição"
12
+ * />
13
+ * ```
14
+ * @example
15
+ * ```tsx
16
+ * <TextArea
17
+ * label="Comentário"
18
+ * required
19
+ * maxLength={500}
20
+ * showCharCount
21
+ * helperText="Máximo de 500 caracteres"
22
+ * errorMessage={error}
23
+ * />
24
+ * ```
25
+ */
26
+ export interface TextAreaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange' | 'value'> {
27
+ /** Valor controlado do campo */
28
+ value?: string;
29
+ /** Callback executado quando o valor muda: (value) => void */
30
+ onChange?: (value: string) => void;
31
+ /** Label do campo */
32
+ label?: string;
33
+ /** Texto de ajuda exibido abaixo do campo */
34
+ helperText?: string;
35
+ /** Habilita tooltip */
36
+ tooltip?: boolean;
37
+ /** Texto do tooltip */
38
+ tooltipText?: string;
39
+ /** Lado onde o tooltip aparece */
40
+ side?: Side;
41
+ /** Alinhamento do tooltip */
42
+ align?: Align;
43
+ /**
44
+ * Mensagem de erro exibida no campo.
45
+ * Usada tanto pela validação interna (required, etc.)
46
+ * quanto pelo controle externo via formulários (react-hook-form, formik, etc.)
47
+ */
48
+ errorMessage?: string;
49
+ /** Sinaliza erro externo para controle via formulários (react-hook-form, formik, etc.) */
50
+ error?: boolean;
51
+ /** Controla o redimensionamento do textarea */
52
+ resize?: 'none' | 'vertical' | 'both';
53
+ /** Exibe contador de caracteres (requer maxLength) */
54
+ showCharCount?: boolean;
55
+ height?: number;
56
+ }
@@ -0,0 +1,2 @@
1
+ export { default } from './TextArea';
2
+ export type { TextAreaProps } from './TextArea.types';
@@ -47,10 +47,18 @@ export interface TextFieldProps extends Omit<React.InputHTMLAttributes<HTMLInput
47
47
  side?: Side;
48
48
  /** Alinhamento do tooltip */
49
49
  align?: Align;
50
- /** Mensagem de erro a ser exibida */
50
+ /**
51
+ * Mensagem de erro exibida no campo.
52
+ * Usada tanto pela validação interna (required, formato, etc.)
53
+ * quanto pelo controle externo via formulários (react-hook-form, formik, etc.)
54
+ */
51
55
  errorMessage?: string;
56
+ /** Sinaliza erro externo para controle via formulários (react-hook-form, formik, etc.) */
57
+ error?: boolean;
52
58
  /** Ícone a ser exibido no campo */
53
59
  icon?: React.ReactNode;
60
+ /** Mantém o ícone visível mesmo quando o campo tem valor */
61
+ persistIcon?: boolean;
54
62
  }
55
63
  /**
56
64
  * Parâmetros para validação do TextField
@@ -0,0 +1,34 @@
1
+ import * as React from "react";
2
+ import { ToastProps } from './Toast.types';
3
+ /**
4
+ * Componente individual de notificação Toast.
5
+ *
6
+ * Consome o contexto do `ToastProvider` para gerenciar seu próprio ciclo de vida.
7
+ * Cada instância recebe um `id` único gerado pelo provider e o utiliza para
8
+ * se remover da fila ao ser fechada.
9
+ *
10
+ * Construído sobre `Toast.Root` do **Radix UI**, com suporte completo a
11
+ * acessibilidade (ARIA) e gesto de swipe para a esquerda.
12
+ *
13
+ * @remarks
14
+ * Este componente não deve ser usado diretamente. Utilize o hook `useToast`
15
+ * para exibir toasts programaticamente.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * // Uso indireto via hook (recomendado)
20
+ * const { showToast } = useToast();
21
+ *
22
+ * showToast({
23
+ * title: 'Item salvo',
24
+ * iconType: 'Success',
25
+ * duration: 3000,
26
+ * });
27
+ * ```
28
+ *
29
+ * @param props - {@link ToastProps} combinadas com o `id` único do toast
30
+ */
31
+ declare const Toast: React.FC<ToastProps & {
32
+ id: string;
33
+ }>;
34
+ export default Toast;
@@ -0,0 +1,57 @@
1
+ import { Toast } from 'radix-ui';
2
+ import * as React from 'react';
3
+ import { BaseProps } from '../../types';
4
+ /**
5
+ * Props do componente individual de notificação `Toast`.
6
+ *
7
+ * Estende {@link BaseProps} e os atributos nativos do `Toast.Root` do Radix UI,
8
+ * excluindo as propriedades controladas internamente (`open`, `onOpenChange`,
9
+ * `duration`, `className`).
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * showToast({
14
+ * title: 'Sucesso!',
15
+ * iconType: 'Success',
16
+ * duration: 3000,
17
+ * });
18
+ * ```
19
+ */
20
+ export interface ToastProps extends BaseProps, Omit<React.ComponentPropsWithoutRef<typeof Toast.Root>, 'open' | 'onOpenChange' | 'duration' | 'className'> {
21
+ /**
22
+ * Título principal exibido no toast.
23
+ */
24
+ title: string;
25
+ /**
26
+ * Define se o toast fecha automaticamente após o tempo definido em `duration`.
27
+ * @default true
28
+ */
29
+ automaticClose?: boolean;
30
+ /**
31
+ * Tempo em milissegundos até o toast fechar automaticamente.
32
+ * Só tem efeito quando `automaticClose` é `true`.
33
+ * @default 5000
34
+ */
35
+ duration?: number;
36
+ /**
37
+ * Ícone customizado exibido no toast.
38
+ * Quando fornecido, substitui o ícone gerado automaticamente por `iconType`.
39
+ */
40
+ icon?: React.ReactNode;
41
+ /**
42
+ * Ícone exibido no botão de fechar o toast.
43
+ * @default <Dismiss16Filled />
44
+ */
45
+ iconClosed?: React.ReactNode;
46
+ /**
47
+ * Tipo do ícone exibido automaticamente no toast.
48
+ *
49
+ * - `'Info'` → ícone informativo (`Info20Filled`)
50
+ * - `'Success'` → ícone de sucesso (`CheckmarkCircle20Filled`)
51
+ * - `'Alert'` → ícone de alerta/erro (`Warning20Filled`)
52
+ *
53
+ * Ignorado quando a prop `icon` for fornecida.
54
+ * @default 'Info'
55
+ */
56
+ iconType?: 'Info' | 'Success' | 'Alert';
57
+ }
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Componente responsável por renderizar todos os toasts ativos na tela.
4
+ *
5
+ * Lê a lista de toasts do contexto fornecido pelo `ToastProvider` e os
6
+ * renderiza individualmente. Configura o `Toast.Provider` do Radix UI com
7
+ * direção de swipe para a esquerda.
8
+ *
9
+ * @remarks
10
+ * - Deve ser posicionado **dentro** do `ToastProvider`.
11
+ * - Geralmente é colocado próximo à raiz da aplicação, após os demais filhos.
12
+ * - Toasts sem `id` são ignorados automaticamente.
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <ToastProvider>
17
+ * <App />
18
+ * <ToastContainer /> {/* Deve estar aqui *\/}
19
+ * </ToastProvider>
20
+ * ```
21
+ */
22
+ export declare const ToastContainer: React.FC;
@@ -0,0 +1,35 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Provider que gerencia o estado global dos toasts na aplicação.
4
+ *
5
+ * Deve envolver toda a árvore de componentes que precisará exibir toasts.
6
+ * Disponibiliza o contexto com `showToast` e `dismissToast` para todos os
7
+ * componentes filhos via `useToast()`.
8
+ *
9
+ * @remarks
10
+ * O `ToastContainer` deve ser renderizado **dentro** do `ToastProvider`.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * // App.tsx ou layout principal
15
+ * import { ToastProvider, ToastContainer } from '@giro-ds/react';
16
+ *
17
+ * function App() {
18
+ * return (
19
+ * <ToastProvider maxToasts={5}>
20
+ * <Routes />
21
+ * <ToastContainer />
22
+ * </ToastProvider>
23
+ * );
24
+ * }
25
+ * ```
26
+ *
27
+ * @param children - Árvore de componentes filhos da aplicação.
28
+ * @param maxToasts - Número máximo de toasts exibidos simultaneamente.
29
+ * Quando o limite é excedido, o toast mais antigo é removido automaticamente.
30
+ * @default 5
31
+ */
32
+ export declare const ToastProvider: React.FC<{
33
+ children: React.ReactNode;
34
+ maxToasts?: number;
35
+ }>;
@@ -0,0 +1,5 @@
1
+ export { default as Toast } from './Toast';
2
+ export { ToastProvider } from './components/ToastProvider';
3
+ export { ToastContainer } from './components/ToastContainer';
4
+ export { useToast } from '../../hooks/useToast';
5
+ export type { ToastProps } from './Toast.types';
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { BaseProps, Side, Align } from '@/types';
3
+ export interface TooltipProps extends BaseProps {
4
+ text: React.ReactNode;
5
+ side?: Side;
6
+ align?: Align;
7
+ sideOffset?: number;
8
+ /** Deslocamento em pixels no eixo de alinhamento */
9
+ alignOffset?: number;
10
+ /** Largura máxima do tooltip em pixels */
11
+ maxWidth?: number;
12
+ /** Elemento que dispara o tooltip ao hover */
13
+ children: React.ReactNode;
14
+ }