@giro-ds/react 3.0.5 → 3.0.7

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 (44) hide show
  1. package/dist/components/Avatar/Avatar.d.ts +1 -1
  2. package/dist/components/Avatar/Avatar.types.d.ts +21 -5
  3. package/dist/components/Badge/Badge.types.d.ts +25 -7
  4. package/dist/components/Button/Button.types.d.ts +41 -8
  5. package/dist/components/Calendar/Calendar.d.ts +2 -1
  6. package/dist/components/Calendar/Calendar.types.d.ts +56 -12
  7. package/dist/components/Callout/Callout.types.d.ts +28 -11
  8. package/dist/components/Checkbox/Checkbox.types.d.ts +28 -4
  9. package/dist/components/Chips/Chips.types.d.ts +28 -11
  10. package/dist/components/Container/Container.types.d.ts +11 -0
  11. package/dist/components/DatePicker/DatePicker.types.d.ts +36 -18
  12. package/dist/components/DatePicker/DateUtils.d.ts +1 -1
  13. package/dist/components/DatePicker/index.d.ts +1 -1
  14. package/dist/components/Dialog/Dialog.types.d.ts +35 -11
  15. package/dist/components/Drawer/Drawer.types.d.ts +58 -27
  16. package/dist/components/Dropdown/Dropdown.types.d.ts +47 -20
  17. package/dist/components/Filter/Filter.types.d.ts +47 -28
  18. package/dist/components/ListItem/ListItem.d.ts +0 -5
  19. package/dist/components/ListItem/ListItem.types.d.ts +35 -17
  20. package/dist/components/Menu/Menu.d.ts +1 -1
  21. package/dist/components/Menu/Menu.types.d.ts +60 -2
  22. package/dist/components/Quantity/Quantity.types.d.ts +31 -13
  23. package/dist/components/Radio/Radio.types.d.ts +39 -2
  24. package/dist/components/Search/Search.types.d.ts +34 -5
  25. package/dist/components/Select/Select.types.d.ts +117 -8
  26. package/dist/components/Switch/Switch.types.d.ts +26 -2
  27. package/dist/components/Table/Table.d.ts +1 -1
  28. package/dist/components/Table/Table.types.d.ts +2 -3
  29. package/dist/components/Table/TableHeader.d.ts +1 -1
  30. package/dist/components/Table/TablePagination.d.ts +1 -9
  31. package/dist/components/TextField/TextField.types.d.ts +49 -11
  32. package/dist/components/Toast/Toast.types.d.ts +37 -0
  33. package/dist/components/Tooltip/Tooltip.types.d.ts +32 -4
  34. package/dist/components/VerificationCode/VerificationCode.types.d.ts +29 -9
  35. package/dist/components/index.d.ts +1 -1
  36. package/dist/index.cjs +154 -176
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.d.ts +860 -250
  39. package/dist/index.esm.js +147 -187
  40. package/dist/index.esm.js.map +1 -1
  41. package/dist/styles.css +1 -1
  42. package/dist/types/common.types.d.ts +12 -0
  43. package/dist/types/index.d.ts +1 -0
  44. package/package.json +1 -1
@@ -1,50 +1,77 @@
1
1
  import React from 'react';
2
+ import { BaseProps } from '../../types/common.types';
3
+ /**
4
+ * Representa um item individual do dropdown
5
+ */
2
6
  export interface DropdownItem {
3
- /** ID único do item (opcional, será gerado automaticamente se não fornecido) */
7
+ /** ID único do item (será gerado automaticamente se não fornecido) */
4
8
  id?: string;
5
9
  /** Texto principal do item */
6
10
  text: string;
7
11
  /** Texto secundário/descrição do item */
8
12
  subText?: string;
9
- /** Ícone do item (React node) */
13
+ /** Ícone do item */
10
14
  icon?: React.ReactNode;
11
15
  /** Define se o item está desabilitado */
12
16
  disabled?: boolean;
13
17
  }
18
+ /** Tipos de dropdown disponíveis */
14
19
  export type DropdownType = 'text' | 'checkbox' | 'icon';
15
- export interface DropdownProps {
16
- /** Classes CSS adicionais */
17
- className?: string;
18
- /** Força posição do dropdown: 'top' abre para cima, 'bottom' abre para baixo. Se não especificado, usa detecção automática */
20
+ /**
21
+ * Props do componente Dropdown
22
+ * @example
23
+ * ```tsx
24
+ * <Dropdown
25
+ * items={[
26
+ * { text: 'Opção 1', icon: <Icon1 /> },
27
+ * { text: 'Opção 2', icon: <Icon2 /> }
28
+ * ]}
29
+ * type="text"
30
+ * placeholder="Selecione uma opção"
31
+ * />
32
+ * ```
33
+ * @example
34
+ * ```tsx
35
+ * <Dropdown
36
+ * items={items}
37
+ * type="checkbox"
38
+ * applySearch={true}
39
+ * onSelectionChange={(ids) => console.log(ids)}
40
+ * defaultSelectedIds={['1', '2']}
41
+ * maxHeight="300px"
42
+ * />
43
+ * ```
44
+ */
45
+ export interface DropdownProps extends BaseProps {
46
+ /** Força posição do dropdown: 'top' abre para cima, 'bottom' para baixo (detecção automática se não especificado) */
19
47
  position?: 'top' | 'bottom';
20
- /** Array de itens para o dropdown - obrigatório */
48
+ /** Array de itens para o dropdown */
21
49
  items: DropdownItem[];
22
- /** ID único do componente */
23
- id?: string;
24
50
  /** Tipo do dropdown */
25
51
  type?: DropdownType;
26
52
  /** Habilita campo de busca */
27
53
  applySearch?: boolean;
28
54
  /** Placeholder do campo de busca */
29
55
  placeholder?: string;
30
- /** Callback para mudanças na seleção */
56
+ /** Callback executado quando a seleção muda: (selectedIds) => void */
31
57
  onSelectionChange?: (selectedIds: string[]) => void;
32
- /** Controla exibição do subtexto */
58
+ /** Controla exibição do subtexto dos itens */
33
59
  showSubText?: boolean;
34
60
  /** IDs dos itens selecionados por padrão */
35
61
  defaultSelectedIds?: string[];
36
- /** Estado inicial dos itens selecionados (objeto com chave-valor) */
62
+ /** Estado inicial dos itens selecionados (objeto chave-valor) */
37
63
  initialItemsSelected?: Record<string, boolean>;
64
+ /** Largura do dropdown */
38
65
  width?: string | number;
66
+ /** Largura máxima do dropdown */
39
67
  maxWidth?: string | number;
68
+ /** Largura mínima do dropdown */
40
69
  minWidth?: string | number;
41
70
  /** Altura máxima do dropdown */
42
71
  maxHeight?: string | number;
43
- /** Define se o componente esta sendo usado para filtro */
72
+ /** Define se o componente está sendo usado para filtro */
44
73
  filter?: boolean;
45
- /**
46
- * Configurações para paginação infinita
47
- */
74
+ /** Configurações para paginação infinita */
48
75
  infiniteScroll?: {
49
76
  /** Status atual do carregamento */
50
77
  status: 'idle' | 'loading' | 'succeeded' | 'failed';
@@ -52,13 +79,13 @@ export interface DropdownProps {
52
79
  page: number;
53
80
  /** Última página disponível */
54
81
  lastPage: number;
55
- /** Callback para carregar próxima página */
82
+ /** Callback executado para carregar próxima página: () => void */
56
83
  onLoadMore: () => void;
57
- /** Threshold para trigger (0-1) */
84
+ /** Threshold para trigger do scroll infinito (0-1) */
58
85
  threshold?: number;
59
- /** Margem para trigger */
86
+ /** Margem para trigger do scroll infinito */
60
87
  rootMargin?: string;
61
- /** Debug mode */
88
+ /** Modo de debug */
62
89
  debug?: boolean;
63
90
  };
64
91
  }
@@ -1,46 +1,65 @@
1
1
  import { ReactNode, ReactElement } from 'react';
2
+ import { Variant, BaseProps, Locale, Position } from '../../types/common.types';
2
3
  import { DropdownItem, DropdownType } from '../Dropdown/Dropdown.types';
3
- type FilterButtonVariant = 'filled' | 'outlined' | 'text';
4
- export interface FilterProps {
5
- /** Items para o dropdown */
4
+ /**
5
+ * Props do componente Filter
6
+ * @example
7
+ * ```tsx
8
+ * <Filter
9
+ * items={filterItems}
10
+ * type="checkbox"
11
+ * placeholder="Filtrar por categoria"
12
+ * onApplyFilter={(ids) => handleFilter(ids)}
13
+ * buttonText="Filtros"
14
+ * />
15
+ * ```
16
+ * @example
17
+ * ```tsx
18
+ * <Filter
19
+ * type="calendar"
20
+ * selectedDate={selectedDate}
21
+ * onDateSelect={handleDateSelect}
22
+ * minDate={new Date('2024-01-01')}
23
+ * locale="pt-br"
24
+ * icon={<CalendarIcon />}
25
+ * />
26
+ * ```
27
+ */
28
+ export interface FilterProps extends BaseProps {
29
+ /** Array de itens para filtros do tipo dropdown */
6
30
  items?: DropdownItem[];
7
- /** Tipo do dropdown */
31
+ /** Tipo do filtro (dropdown ou calendário) */
8
32
  type?: DropdownType | 'calendar';
9
- /** IDs selecionados */
33
+ /** IDs dos itens selecionados */
10
34
  selectedIds?: string[];
11
- /** Callback quando aplicar filtros */
35
+ /** Callback executado ao aplicar filtro: (selectedIds) => void */
12
36
  onApplyFilter?: (selectedIds: string[]) => void;
13
- /** Placeholder do dropdown */
37
+ /** Placeholder do campo de busca */
14
38
  placeholder?: string;
15
- /** Habilita busca no dropdown */
39
+ /** Habilita campo de busca no dropdown */
16
40
  enableSearch?: boolean;
17
- /** Texto do botão do filtro */
41
+ /** Texto ou conteúdo do botão de filtro */
18
42
  buttonText?: string | ReactNode;
19
- /** Ícone do botão */
43
+ /** Ícone do botão de filtro */
20
44
  icon?: ReactElement;
21
- /** Variante do botão */
22
- variant?: FilterButtonVariant;
23
- /** Callback chamado quando o filtro é aberto */
45
+ /** Variante visual do botão */
46
+ variant?: Variant;
47
+ /** Callback executado ao abrir o filtro: () => void */
24
48
  onOpen?: () => void;
25
- /** Callback chamado quando o filtro é fechado */
49
+ /** Callback executado ao fechar o filtro: () => void */
26
50
  onClose?: () => void;
27
- /** Posição do dropdown */
28
- position?: 'left' | 'right';
29
- /** Se o filtro está desabilitado */
30
- disabled?: boolean;
31
- /** Classes CSS adicionais */
32
- className?: string;
33
- /** Data selecionada (quando type='calendar') */
51
+ /** Posição do dropdown em relação ao botão */
52
+ position?: Position;
53
+ /** Data selecionada (para tipo calendar) */
34
54
  selectedDate?: Date | null;
35
- /** Callback quando data é selecionada */
55
+ /** Callback executado ao selecionar data: (date) => void */
36
56
  onDateSelect?: (date: Date) => void;
37
- /** Callback para limpar data */
57
+ /** Callback executado ao limpar data: () => void */
38
58
  onClearDate?: () => void;
39
- /** Data mínima permitida */
59
+ /** Data mínima selecionável (para tipo calendar) */
40
60
  minDate?: Date;
41
- /** Data máxima permitida */
61
+ /** Data máxima selecionável (para tipo calendar) */
42
62
  maxDate?: Date;
43
- /** Locale do calendar */
44
- locale?: 'pt-br' | 'en-us';
63
+ /** Locale do calendário */
64
+ locale?: Locale;
45
65
  }
46
- export {};
@@ -1,9 +1,4 @@
1
1
  import React from "react";
2
2
  import type { ListItemProps } from './ListItem.types';
3
- /**
4
- * Componente ListItem do Zanthus Design System
5
- * Implementa item de lista unificado com variações text, checkbox, radio e icon
6
- * Segue padrões WCAG 2.1 AA para acessibilidade
7
- */
8
3
  declare const ListItem: React.FC<ListItemProps>;
9
4
  export default ListItem;
@@ -1,33 +1,51 @@
1
- import React from 'react';
1
+ import * as React from 'react';
2
+ import { BaseProps } from '../../types/common.types';
3
+ /** Variantes disponíveis para o ListItem */
2
4
  export type ListItemVariant = 'text' | 'checkbox' | 'radio' | 'icon';
3
- export interface ListItemProps {
4
- /** ID único do componente */
5
- id?: string;
6
- /** Classes CSS customizadas */
7
- className?: string;
5
+ /**
6
+ * Props do componente ListItem
7
+ * @example
8
+ * ```tsx
9
+ * <ListItem
10
+ * variant="text"
11
+ * text="Item da lista"
12
+ * subText="Descrição do item"
13
+ * onClick={handleClick}
14
+ * />
15
+ * ```
16
+ * @example
17
+ * ```tsx
18
+ * <ListItem
19
+ * variant="checkbox"
20
+ * text="Aceitar termos"
21
+ * checked={isChecked}
22
+ * onChange={setIsChecked}
23
+ * disabled={false}
24
+ * />
25
+ * ```
26
+ */
27
+ export interface ListItemProps extends BaseProps {
8
28
  /** Variante do item da lista */
9
29
  variant?: ListItemVariant;
10
30
  /** Texto principal do item */
11
31
  text?: string;
12
- /** Nome do input (para checkbox/radio) */
32
+ /** Nome do input (para variantes checkbox/radio) */
13
33
  name?: string;
14
- /** Texto secundário/descrição */
34
+ /** Texto secundário/descrição do item */
15
35
  subText?: string;
16
- /** Se o item está desabilitado */
17
- disabled?: boolean;
18
- /** Estado de checked (para checkbox/radio) */
36
+ /** Estado de checked (para variantes checkbox/radio) */
19
37
  checked?: boolean;
20
- /** Estado de selecionado (para text/icon) */
38
+ /** Estado de selecionado (para variantes text/icon) */
21
39
  selected?: boolean;
22
- /** Callback para clique no item */
40
+ /** Callback executado ao clicar no item: (event) => void */
23
41
  onClick?: (event: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>) => void;
24
- /** Callback para mudança de estado */
42
+ /** Callback executado quando o estado muda: (checked) => void */
25
43
  onChange?: (checked: boolean) => void;
26
- /** Ícone do item (para variant icon) */
44
+ /** Ícone do item (para variante icon) */
27
45
  icon?: React.ReactNode;
28
- /** Valor do input (para checkbox/radio) */
46
+ /** Valor do input (para variantes checkbox/radio) */
29
47
  value?: string;
30
- /** Se deve mostrar o subtexto */
48
+ /** Define se deve mostrar o subtexto */
31
49
  showSubText?: boolean;
32
50
  /** Estado de hover */
33
51
  hovered?: boolean;
@@ -1,4 +1,4 @@
1
- import { MenuProps } from './Menu.types';
2
1
  import React from 'react';
2
+ import { MenuProps } from './Menu.types';
3
3
  declare const Menu: React.FC<MenuProps>;
4
4
  export default Menu;
@@ -1,32 +1,90 @@
1
+ import * as React from 'react';
1
2
  import { ReactElement } from 'react';
3
+ import { BaseProps } from '../../types/common.types';
4
+ /**
5
+ * Representa um item do menu (suporta subitens aninhados)
6
+ */
2
7
  export interface MenuItemProps {
8
+ /** ID único do item */
3
9
  id?: string;
10
+ /** Texto principal do item */
4
11
  text?: string;
12
+ /** Texto secundário/descrição do item */
5
13
  subText?: string;
14
+ /** Estado desabilitado do item */
6
15
  disabled?: boolean;
16
+ /** Ícone do item */
7
17
  icon?: React.ReactNode;
18
+ /** Subitens do menu (para menus aninhados) */
8
19
  children?: MenuItemProps[];
20
+ /** Valor do item */
9
21
  value?: string;
10
22
  }
23
+ /**
24
+ * Props para renderização customizada de item do menu
25
+ */
11
26
  export interface DefaultMenuItemProps {
27
+ /** Dados do item */
12
28
  item: MenuItemProps;
29
+ /** Define se o item está selecionado */
13
30
  isSelected: boolean;
31
+ /** Callback executado ao selecionar o item: (item) => void */
14
32
  onSelect: (item: MenuItemProps) => void;
15
33
  }
16
- export interface MenuProps {
34
+ /**
35
+ * Props do componente Menu
36
+ * @example
37
+ * ```tsx
38
+ * <Menu
39
+ * items={[
40
+ * { id: '1', text: 'Perfil', icon: <UserIcon /> },
41
+ * { id: '2', text: 'Configurações', icon: <SettingsIcon /> }
42
+ * ]}
43
+ * onItemSelect={(item) => handleSelect(item)}
44
+ * >
45
+ * <Button>Menu</Button>
46
+ * </Menu>
47
+ * ```
48
+ * @example
49
+ * ```tsx
50
+ * <Menu
51
+ * items={menuItems}
52
+ * type="icon"
53
+ * search={true}
54
+ * enableInfiniteScroll={true}
55
+ * onScrollEnd={loadMore}
56
+ * maxHeight="400px"
57
+ * align="end"
58
+ * />
59
+ * ```
60
+ */
61
+ export interface MenuProps extends BaseProps {
62
+ /** Array de itens do menu */
17
63
  items: MenuItemProps[];
64
+ /** Elemento trigger customizado para abrir o menu */
18
65
  children?: ReactElement;
66
+ /** Tipo de visualização do menu */
19
67
  type?: 'text' | 'icon';
20
- className?: string;
68
+ /** Callback executado quando um item é selecionado: (item) => void */
21
69
  onItemSelect?: (items: MenuItemProps) => void;
70
+ /** Array de itens selecionados */
22
71
  selectedItems?: MenuItemProps[];
72
+ /** Habilita campo de busca */
23
73
  search?: boolean;
74
+ /** Alinhamento do menu */
24
75
  align?: 'start' | 'end' | 'center';
76
+ /** Altura máxima do menu */
25
77
  maxHeight?: number | string;
78
+ /** Habilita scroll infinito */
26
79
  enableInfiniteScroll?: boolean;
80
+ /** Callback executado ao chegar ao final do scroll: () => void */
27
81
  onScrollEnd?: () => void;
82
+ /** Estado de carregamento de mais itens */
28
83
  isLoadingMore?: boolean;
84
+ /** Habilita busca via API */
29
85
  enableApiSearch?: boolean;
86
+ /** Callback executado na busca via API: (searchTerm) => void */
30
87
  onApiSearch?: (searchTerm: string) => void;
88
+ /** Callback executado quando o menu abre/fecha: (open) => void */
31
89
  onOpenChange?: (open: boolean) => void;
32
90
  }
@@ -1,20 +1,38 @@
1
- export interface QuantityProps {
2
- /** Valor padrão inicial */
1
+ import { Size, BaseProps } from '../../types/common.types';
2
+ /**
3
+ * Props do componente Quantity
4
+ * @example
5
+ * ```tsx
6
+ * <Quantity
7
+ * value={quantity}
8
+ * onChange={setQuantity}
9
+ * size="lg"
10
+ * />
11
+ * ```
12
+ * @example
13
+ * ```tsx
14
+ * <Quantity
15
+ * defaultValue={1}
16
+ * decimal={true}
17
+ * decimalPlaces={2}
18
+ * step={0.5}
19
+ * disabled={false}
20
+ * />
21
+ * ```
22
+ */
23
+ export interface QuantityProps extends BaseProps {
24
+ /** Valor inicial (modo não controlado) */
3
25
  defaultValue?: number;
4
- /** Valor controlado externamente */
26
+ /** Valor atual (modo controlado) */
5
27
  value?: number;
6
- /** Callback chamado quando o valor muda */
28
+ /** Callback executado quando o valor muda: (value) => void */
7
29
  onChange?: (value: number) => void;
8
- /** Define se o componente está desabilitado */
9
- disabled?: boolean;
10
- /** Define se o valor do input será decimal ou inteiro */
30
+ /** Habilita entrada de valores decimais */
11
31
  decimal?: boolean;
12
- /** Define o tamanho do componente */
13
- size?: 'lg' | 'sm';
14
- /** Define o número de casas decimais quando decimal for true */
32
+ /** Tamanho do componente */
33
+ size?: Size;
34
+ /** Número de casas decimais permitidas */
15
35
  decimalPlaces?: number;
36
+ /** Incremento/decremento ao clicar nos botões */
16
37
  step?: number;
17
- id?: string;
18
- /** ClassName adicional para customização */
19
- className?: string;
20
38
  }
@@ -1,15 +1,52 @@
1
+ import { BaseProps } from '../../types/common.types';
2
+ /**
3
+ * Props de um item individual de rádio
4
+ */
1
5
  export interface RadioProps {
6
+ /** ID único do elemento */
2
7
  id?: string | number;
8
+ /** Valor do radio button */
3
9
  value: string;
10
+ /** Label exibida ao lado do radio button */
4
11
  label: string;
12
+ /** Estado desabilitado do item */
5
13
  disabled?: boolean;
6
14
  }
7
- export interface RadioGroupProps {
8
- id?: string;
15
+ /**
16
+ * Props do componente RadioGroup
17
+ * @example
18
+ * ```tsx
19
+ * <RadioGroup
20
+ * items={[
21
+ * { value: 'option1', label: 'Opção 1' },
22
+ * { value: 'option2', label: 'Opção 2' }
23
+ * ]}
24
+ * onValueChange={(value) => setSelected(value)}
25
+ * defaultValue="option1"
26
+ * />
27
+ * ```
28
+ * @example
29
+ * ```tsx
30
+ * <RadioGroup
31
+ * items={options}
32
+ * onValueChange={handleChange}
33
+ * name="preference"
34
+ * orientation="horizontal"
35
+ * ariaLabel="Selecione sua preferência"
36
+ * />
37
+ * ```
38
+ */
39
+ export interface RadioGroupProps extends BaseProps {
40
+ /** Array de itens de rádio */
9
41
  items: RadioProps[];
42
+ /** Callback executado quando o valor muda: (value) => void */
10
43
  onValueChange?: (value: string) => void;
44
+ /** Valor inicial selecionado */
11
45
  defaultValue?: string;
46
+ /** Nome do grupo de radio buttons */
12
47
  name?: string;
48
+ /** Label acessível para leitores de tela */
13
49
  ariaLabel?: string;
50
+ /** Orientação do layout dos radio buttons */
14
51
  orientation?: "horizontal" | "vertical";
15
52
  }
@@ -1,16 +1,45 @@
1
- import React from 'react';
2
- export interface SearchProps {
1
+ import * as React from 'react';
2
+ import { BaseProps } from '../../types/common.types';
3
+ /**
4
+ * Props do componente Search
5
+ * @example
6
+ * ```tsx
7
+ * <Search
8
+ * placeholder="Buscar..."
9
+ * value={searchTerm}
10
+ * onChange={(e) => setSearchTerm(e.target.value)}
11
+ * onClear={() => setSearchTerm('')}
12
+ * />
13
+ * ```
14
+ * @example
15
+ * ```tsx
16
+ * <Search
17
+ * placeholder="Pesquisar produtos"
18
+ * disabled={isLoading}
19
+ * onKeyDown={(e) => e.key === 'Enter' && handleSearch()}
20
+ * onFocus={handleFocus}
21
+ * />
22
+ * ```
23
+ */
24
+ export interface SearchProps extends BaseProps {
25
+ /** Placeholder do campo de busca */
3
26
  placeholder?: string;
4
- disabled?: boolean;
27
+ /** Valor controlado do campo */
5
28
  value?: string;
29
+ /** Callback executado quando o valor muda: (e) => void */
6
30
  onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
31
+ /** Callback executado ao pressionar tecla: (e) => void */
7
32
  onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
33
+ /** Callback executado ao focar no campo: (e) => void */
8
34
  onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
35
+ /** Callback executado ao desfocar do campo: (e) => void */
9
36
  onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
37
+ /** Callback executado ao limpar o campo: () => void */
10
38
  onClear?: () => void;
39
+ /** Callback executado ao clicar no componente: (e) => void */
11
40
  onClick?: (e: React.MouseEvent<HTMLDivElement>) => void;
41
+ /** Callback executado ao pressionar mouse no componente: (e) => void */
12
42
  onMouseDown?: (e: React.MouseEvent<HTMLDivElement>) => void;
13
- className?: string;
14
- id?: string;
43
+ /** ID para testes automatizados */
15
44
  'data-testid'?: string;
16
45
  }