ngx-opalbytes-components 1.20.0 → 1.22.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 (29) hide show
  1. package/README.md +75 -0
  2. package/cli/cao-comp.cjs +272 -2
  3. package/fesm2022/ngx-opalbytes-components.mjs +291 -19
  4. package/fesm2022/ngx-opalbytes-components.mjs.map +1 -1
  5. package/package.json +1 -1
  6. package/src/lib/shared/components/autocomplete/autocomplete.stories.ts +133 -0
  7. package/src/lib/shared/components/base-button/base-button.stories.ts +102 -0
  8. package/src/lib/shared/components/base-icon/base-icon.stories.ts +56 -0
  9. package/src/lib/shared/components/base-input/base-input.stories.ts +137 -0
  10. package/src/lib/shared/components/base-time-range/base-time-range.stories.ts +54 -0
  11. package/src/lib/shared/components/base-toggle/base-toggle.stories.ts +63 -0
  12. package/src/lib/shared/components/card/card.stories.ts +114 -0
  13. package/src/lib/shared/components/date-picker/date-picker.stories.ts +91 -0
  14. package/src/lib/shared/components/drop-down/drop-down.stories.ts +90 -0
  15. package/src/lib/shared/components/footer/footer.stories.ts +51 -0
  16. package/src/lib/shared/components/index.ts +6 -1
  17. package/src/lib/shared/components/kpi/kpi.stories.ts +65 -0
  18. package/src/lib/shared/components/links-button/links-button.stories.ts +75 -0
  19. package/src/lib/shared/components/paginator/paginator.stories.ts +56 -0
  20. package/src/lib/shared/components/skeleton/skeleton.css +92 -0
  21. package/src/lib/shared/components/skeleton/skeleton.html +3 -0
  22. package/src/lib/shared/components/skeleton/skeleton.spec.ts +22 -0
  23. package/src/lib/shared/components/skeleton/skeleton.stories.ts +131 -0
  24. package/src/lib/shared/components/skeleton/skeleton.ts +46 -0
  25. package/src/lib/shared/components/stepper/stepper.stories.ts +77 -0
  26. package/src/lib/shared/components/tab-group/tab-group.stories.ts +102 -0
  27. package/src/lib/shared/components/tab-panel/tab-panel.stories.ts +54 -0
  28. package/src/lib/shared/components/time-picker/time-picker.stories.ts +66 -0
  29. package/types/ngx-opalbytes-components.d.ts +110 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-opalbytes-components",
3
- "version": "1.20.0",
3
+ "version": "1.22.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.0.0",
6
6
  "@angular/core": "^21.0.0",
@@ -0,0 +1,133 @@
1
+ import type { Meta, StoryObj } from '@storybook/angular-vite';
2
+ import { fn } from 'storybook/test';
3
+
4
+ import { CaoAutocompleteComponent, ICaoAutoCompleteOption } from './autocomplete.component';
5
+
6
+ const defaultOptions: ICaoAutoCompleteOption[] = [
7
+ { id: 1, nome: 'João Silva' },
8
+ { id: 2, nome: 'Maria Souza' },
9
+ { id: 3, nome: 'Pedro Santos' },
10
+ { id: 4, nome: 'Ana Oliveira' },
11
+ ];
12
+
13
+ const optionsWithIcons: ICaoAutoCompleteOption[] = [
14
+ { id: 1, nome: 'João Silva', icon: 'User' },
15
+ { id: 2, nome: 'Maria Souza', icon: 'User' },
16
+ { id: 3, nome: 'Pedro Santos', icon: 'User' },
17
+ { id: 4, nome: 'Ana Oliveira', icon: 'User' },
18
+ ];
19
+
20
+ const meta: Meta<CaoAutocompleteComponent> = {
21
+ title: 'Componentes/Autocomplete',
22
+ component: CaoAutocompleteComponent,
23
+ tags: ['autodocs'],
24
+ argTypes: {
25
+ label: { control: 'text' },
26
+ placeholder: { control: 'text' },
27
+ options: { control: 'object' },
28
+ dataCy: { control: 'text' },
29
+ controlName: { control: 'text' },
30
+ isLucideIcon: { control: 'boolean' },
31
+ iconColor: { control: 'color' },
32
+ optionIcon: { control: 'text' },
33
+ optionIConColor: { control: 'color' },
34
+ isLucideOptionIcon: { control: 'boolean' },
35
+ autocompleteBgColor: { control: 'color' },
36
+ strokeWidthIcon: { control: { type: 'number', min: 0.5, max: 3, step: 0.1 } },
37
+ isDisabled: { control: 'boolean' },
38
+ inputHeigth: { control: 'text' },
39
+ iconSize: { control: { type: 'number', min: 8, max: 48 } },
40
+ showCheckIcon: { control: 'boolean' },
41
+ isLucideCheckIcon: { control: 'boolean' },
42
+ },
43
+ args: {
44
+ itemSelected: fn(),
45
+ blurEvent: fn(),
46
+ focusEvent: fn(),
47
+ leadingIconClick: fn(),
48
+ trailingIconClick: fn(),
49
+ label: 'Selecione um usuário',
50
+ placeholder: 'Buscar usuário...',
51
+ options: defaultOptions,
52
+ },
53
+ };
54
+
55
+ export default meta;
56
+ type Story = StoryObj<CaoAutocompleteComponent>;
57
+
58
+ export const Padrao: Story = {
59
+ args: {
60
+ label: 'Usuários',
61
+ placeholder: 'Buscar usuário...',
62
+ options: defaultOptions,
63
+ },
64
+ };
65
+
66
+ export const ComLeadingIcon: Story = {
67
+ args: {
68
+ label: 'Usuários',
69
+ placeholder: 'Buscar usuário...',
70
+ options: defaultOptions,
71
+ _leadingIcon: 'Search',
72
+ isLucideIcon: true,
73
+ iconColor: '#6b7280',
74
+ },
75
+ };
76
+
77
+ export const ComLeadingETrailingIcons: Story = {
78
+ args: {
79
+ label: 'Usuários',
80
+ placeholder: 'Buscar usuário...',
81
+ options: defaultOptions,
82
+ _leadingIcon: 'Search',
83
+ _trailingIcon: 'ChevronsUpDown',
84
+ isLucideIcon: true,
85
+ },
86
+ };
87
+
88
+ export const ComIconesNasOpcoes: Story = {
89
+ args: {
90
+ label: 'Usuários',
91
+ placeholder: 'Buscar usuário...',
92
+ options: optionsWithIcons,
93
+ optionIcon: 'User',
94
+ isLucideOptionIcon: true,
95
+ optionIConColor: '#f97316',
96
+ },
97
+ };
98
+
99
+ export const Desabilitado: Story = {
100
+ args: {
101
+ label: 'Usuários',
102
+ placeholder: 'Buscar usuário...',
103
+ options: defaultOptions,
104
+ isDisabled: true,
105
+ },
106
+ };
107
+
108
+ export const AlturaPersonalizada: Story = {
109
+ args: {
110
+ label: 'Usuários',
111
+ placeholder: 'Buscar usuário...',
112
+ options: defaultOptions,
113
+ inputHeigth: '70px',
114
+ },
115
+ };
116
+
117
+ export const IconeCheckOculto: Story = {
118
+ args: {
119
+ label: 'Usuários',
120
+ placeholder: 'Buscar usuário...',
121
+ options: defaultOptions,
122
+ showCheckIcon: false,
123
+ },
124
+ };
125
+
126
+ export const FundoPersonalizado: Story = {
127
+ args: {
128
+ label: 'Usuários',
129
+ placeholder: 'Buscar usuário...',
130
+ options: defaultOptions,
131
+ autocompleteBgColor: '#f3f4f6',
132
+ },
133
+ };
@@ -0,0 +1,102 @@
1
+ import type { Meta, StoryObj } from '@storybook/angular-vite';
2
+ import { fn } from 'storybook/test';
3
+
4
+ import { CaoBaseButtonComponent } from './base-button.component';
5
+
6
+ const meta: Meta<CaoBaseButtonComponent> = {
7
+ title: 'Componentes/Base Button',
8
+ component: CaoBaseButtonComponent,
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ buttonText: { control: 'text' },
12
+ btnClass: { control: 'text' },
13
+ tooltip: { control: 'text' },
14
+ leadingIcon: { control: 'text' },
15
+ trailingIcon: { control: 'text' },
16
+ isLucideIcon: { control: 'boolean' },
17
+ iconColor: { control: 'color' },
18
+ isDarkMode: { control: 'boolean' },
19
+ isDisabled: { control: 'boolean' },
20
+ isLoading: { control: 'boolean' },
21
+ strokeWidthIcon: { control: { type: 'number', min: 0.5, max: 3, step: 0.1 } },
22
+ minTextToTooltip: { control: { type: 'number', min: 1, max: 100 } },
23
+ iconSize: { control: { type: 'number', min: 8, max: 64 } },
24
+ dataCy: { control: 'text' },
25
+ },
26
+ args: {
27
+ buttonClick: fn(),
28
+ buttonText: 'Clique!',
29
+ },
30
+ };
31
+
32
+ export default meta;
33
+ type Story = StoryObj<CaoBaseButtonComponent>;
34
+
35
+ export const Padrao: Story = {
36
+ args: {
37
+ buttonText: 'Clique!',
38
+ },
39
+ };
40
+
41
+ export const Principal: Story = {
42
+ args: {
43
+ buttonText: 'Salvar',
44
+ btnClass: 'btn-primary',
45
+ },
46
+ };
47
+
48
+ export const ComLeadingIcon: Story = {
49
+ args: {
50
+ buttonText: 'Salvar',
51
+ leadingIcon: 'Save',
52
+ isLucideIcon: true,
53
+ },
54
+ };
55
+
56
+ export const ComTrailingIcon: Story = {
57
+ args: {
58
+ buttonText: 'Próximo',
59
+ trailingIcon: 'ArrowRight',
60
+ isLucideIcon: true,
61
+ },
62
+ };
63
+
64
+ export const ComAmbosIcones: Story = {
65
+ args: {
66
+ buttonText: 'Enviar',
67
+ leadingIcon: 'Send',
68
+ trailingIcon: 'ArrowRight',
69
+ isLucideIcon: true,
70
+ iconColor: '#f97316',
71
+ },
72
+ };
73
+
74
+ export const Desabilitado: Story = {
75
+ args: {
76
+ buttonText: 'Desabilitado',
77
+ isDisabled: true,
78
+ },
79
+ };
80
+
81
+ export const Carregando: Story = {
82
+ args: {
83
+ buttonText: 'Carregando...',
84
+ isLoading: true,
85
+ },
86
+ };
87
+
88
+ export const ModoEscuro: Story = {
89
+ args: {
90
+ buttonText: 'Tema Escuro',
91
+ isDarkMode: true,
92
+ },
93
+ };
94
+
95
+ export const DesabilitadoComIcone: Story = {
96
+ args: {
97
+ buttonText: 'Bloqueado',
98
+ leadingIcon: 'Lock',
99
+ isLucideIcon: true,
100
+ isDisabled: true,
101
+ },
102
+ };
@@ -0,0 +1,56 @@
1
+ import type { Meta, StoryObj } from '@storybook/angular-vite';
2
+
3
+ import { CaoBaseIcon } from './base-icon';
4
+
5
+ const meta: Meta<CaoBaseIcon> = {
6
+ title: 'Componentes/Base Icon',
7
+ component: CaoBaseIcon,
8
+ tags: ['autodocs'],
9
+ argTypes: {
10
+ imgSource: { control: 'text' },
11
+ isLucideIcon: { control: 'boolean' },
12
+ strokeWidthIcon: { control: { type: 'number', min: 0.5, max: 3, step: 0.1 } },
13
+ iconColor: { control: 'color' },
14
+ size: { control: { type: 'number', min: 8, max: 96 } },
15
+ },
16
+ args: {
17
+ imgSource: 'Home',
18
+ isLucideIcon: true,
19
+ size: 32,
20
+ },
21
+ };
22
+
23
+ export default meta;
24
+ type Story = StoryObj<CaoBaseIcon>;
25
+
26
+ export const IconeLucide: Story = {
27
+ args: {
28
+ imgSource: 'Home',
29
+ isLucideIcon: true,
30
+ },
31
+ };
32
+
33
+ export const IconeLucideComCor: Story = {
34
+ args: {
35
+ imgSource: 'Settings',
36
+ isLucideIcon: true,
37
+ iconColor: '#3b82f6',
38
+ },
39
+ };
40
+
41
+ export const TamanhoPersonalizado: Story = {
42
+ args: {
43
+ imgSource: 'Bell',
44
+ isLucideIcon: true,
45
+ size: 48,
46
+ strokeWidthIcon: 2,
47
+ },
48
+ };
49
+
50
+ export const IconeSVG: Story = {
51
+ args: {
52
+ imgSource: 'https://lucide.dev/icons/home.svg',
53
+ isLucideIcon: false,
54
+ size: 32,
55
+ },
56
+ };
@@ -0,0 +1,137 @@
1
+ import type { Meta, StoryObj } from '@storybook/angular-vite';
2
+ import { fn } from 'storybook/test';
3
+
4
+ import { CaoBaseInput } from './base-input';
5
+
6
+ const meta: Meta<CaoBaseInput> = {
7
+ title: 'Componentes/Base Input',
8
+ component: CaoBaseInput,
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ type: {
12
+ control: 'select',
13
+ options: ['text', 'textarea', 'number', 'password', 'date'],
14
+ },
15
+ placeholder: { control: 'text' },
16
+ inputClass: { control: 'text' },
17
+ value: { control: 'text' },
18
+ errorMessage: { control: 'text' },
19
+ isDisabled: { control: 'boolean' },
20
+ maxLength: { control: { type: 'number', min: 1 } },
21
+ searchMode: { control: 'boolean' },
22
+ showBorder: { control: 'boolean' },
23
+ isLucideIcon: { control: 'boolean' },
24
+ iconColor: { control: 'color' },
25
+ mask: { control: 'text' },
26
+ tooltip: { control: 'text' },
27
+ dataCy: { control: 'text' },
28
+ textareaRows: { control: 'text' },
29
+ decimalMarker: { control: 'select', options: ['.', ','] },
30
+ thousandSeparator: { control: 'text' },
31
+ allowNegativeNumbers: { control: 'boolean' },
32
+ separatorLimit: { control: 'text' },
33
+ },
34
+ args: {
35
+ valueChange: fn(),
36
+ searchClick: fn(),
37
+ inputChange: fn(),
38
+ placeholder: 'Digite algo...',
39
+ },
40
+ };
41
+
42
+ export default meta;
43
+ type Story = StoryObj<CaoBaseInput>;
44
+
45
+ export const Padrao: Story = {
46
+ args: {
47
+ placeholder: 'Digite seu nome',
48
+ type: 'text',
49
+ },
50
+ };
51
+
52
+ export const ComLeadingIcon: Story = {
53
+ args: {
54
+ placeholder: 'Buscar usuário',
55
+ type: 'text',
56
+ leadingIcon: 'Search',
57
+ isLucideIcon: true,
58
+ },
59
+ };
60
+
61
+ export const ComTrailingIcon: Story = {
62
+ args: {
63
+ placeholder: 'Buscar usuário',
64
+ type: 'text',
65
+ trailingIcon: 'ChevronDown',
66
+ isLucideIcon: true,
67
+ },
68
+ };
69
+
70
+ export const ComAmbosIcones: Story = {
71
+ args: {
72
+ placeholder: 'Valor monetário',
73
+ type: 'text',
74
+ leadingIcon: 'DollarSign',
75
+ trailingIcon: 'X',
76
+ isLucideIcon: true,
77
+ },
78
+ };
79
+
80
+ export const PadraoComIconeSVG: Story = {
81
+ args: {
82
+ placeholder: 'Buscar',
83
+ type: 'text',
84
+ leadingIcon: 'https://lucide.dev/icons/search.svg',
85
+ isLucideIcon: false,
86
+ },
87
+ };
88
+
89
+ export const AreaDeTexto: Story = {
90
+ args: {
91
+ placeholder: 'Descreva o problema...',
92
+ type: 'textarea',
93
+ textareaRows: '4',
94
+ },
95
+ };
96
+
97
+ export const Senha: Story = {
98
+ args: {
99
+ placeholder: 'Digite sua senha',
100
+ type: 'password',
101
+ trailingIcon: 'Eye',
102
+ isLucideIcon: true,
103
+ },
104
+ };
105
+
106
+ export const ModoSearch: Story = {
107
+ args: {
108
+ placeholder: 'Pesquisar itens...',
109
+ type: 'text',
110
+ searchMode: true,
111
+ },
112
+ };
113
+
114
+ export const Desabilitado: Story = {
115
+ args: {
116
+ placeholder: 'Campo desabilitado',
117
+ type: 'text',
118
+ isDisabled: true,
119
+ value: 'Valor bloqueado',
120
+ },
121
+ };
122
+
123
+ export const ComErro: Story = {
124
+ args: {
125
+ placeholder: 'Digite seu e-mail',
126
+ type: 'text',
127
+ errorMessage: 'E-mail obrigatório',
128
+ },
129
+ };
130
+
131
+ export const ComMascara: Story = {
132
+ args: {
133
+ placeholder: '00.000.000/0000-00',
134
+ type: 'text',
135
+ mask: '00.000.000/0000-00',
136
+ },
137
+ };
@@ -0,0 +1,54 @@
1
+ import type { Meta, StoryObj } from '@storybook/angular-vite';
2
+ import { fn } from 'storybook/test';
3
+
4
+ import { BaseTimeRange } from './base-time-range';
5
+
6
+ const meta: Meta<BaseTimeRange> = {
7
+ title: 'Componentes/Base Time Range',
8
+ component: BaseTimeRange,
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ label: { control: 'text' },
12
+ dataCy: { control: 'text' },
13
+ controlName: { control: 'text' },
14
+ },
15
+ args: {
16
+ rangeSelected: fn(),
17
+ label: 'Período',
18
+ },
19
+ };
20
+
21
+ export default meta;
22
+ type Story = StoryObj<BaseTimeRange>;
23
+
24
+ export const Padrao: Story = {
25
+ args: {
26
+ label: 'Período de análise',
27
+ },
28
+ };
29
+
30
+ export const ComMinimoEMaximo: Story = {
31
+ args: {
32
+ label: 'Período de análise',
33
+ minDate: new Date(2026, 0, 1),
34
+ maxDate: new Date(2026, 11, 31),
35
+ },
36
+ };
37
+
38
+ export const ComInicioEFinal: Story = {
39
+ args: {
40
+ label: 'Período de análise',
41
+ startDate: new Date(2026, 2, 1),
42
+ finalDate: new Date(2026, 2, 15),
43
+ minDate: new Date(2026, 0, 1),
44
+ maxDate: new Date(2026, 11, 31),
45
+ },
46
+ };
47
+
48
+ export const ComDataCy: Story = {
49
+ args: {
50
+ label: 'Período de análise',
51
+ dataCy: 'time-range-analise',
52
+ controlName: 'periodo',
53
+ },
54
+ };
@@ -0,0 +1,63 @@
1
+ import type { Meta, StoryObj } from '@storybook/angular-vite';
2
+ import { fn } from 'storybook/test';
3
+
4
+ import { CaoBaseToggleComponent } from './base-toggle.component';
5
+
6
+ const meta: Meta<CaoBaseToggleComponent> = {
7
+ title: 'Componentes/Base Toggle',
8
+ component: CaoBaseToggleComponent,
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ isChecked: { control: 'boolean' },
12
+ checkedTextPlaceholder: { control: 'text' },
13
+ uncheckedTextPlaceholder: { control: 'text' },
14
+ isDisabled: { control: 'boolean' },
15
+ placeholder: { control: 'text' },
16
+ errorMessage: { control: 'text' },
17
+ },
18
+ args: {
19
+ statusChanged: fn(),
20
+ valueChange: fn(),
21
+ searchClick: fn(),
22
+ inputChange: fn(),
23
+ checkedTextPlaceholder: 'Ligado',
24
+ uncheckedTextPlaceholder: 'Desligado',
25
+ },
26
+ };
27
+
28
+ export default meta;
29
+ type Story = StoryObj<CaoBaseToggleComponent>;
30
+
31
+ export const Padrao: Story = {
32
+ args: {
33
+ isChecked: false,
34
+ },
35
+ };
36
+
37
+ export const Ativado: Story = {
38
+ args: {
39
+ isChecked: true,
40
+ checkedTextPlaceholder: 'Módulo',
41
+ },
42
+ };
43
+
44
+ export const Desabilitado: Story = {
45
+ args: {
46
+ isChecked: true,
47
+ isDisabled: true,
48
+ },
49
+ };
50
+
51
+ export const DesabilitadoSemChecagem: Story = {
52
+ args: {
53
+ isChecked: false,
54
+ isDisabled: true,
55
+ },
56
+ };
57
+
58
+ export const ComPlaceholderPersonalizado: Story = {
59
+ args: {
60
+ isChecked: false,
61
+ uncheckedTextPlaceholder: 'Notificações push',
62
+ },
63
+ };
@@ -0,0 +1,114 @@
1
+ import type { Meta, StoryObj } from '@storybook/angular-vite';
2
+ import { fn } from 'storybook/test';
3
+
4
+ import { CaoCardComponent, ICaoCardBadge, ICaoCardMeta } from './card.component';
5
+
6
+ const cardMeta: ICaoCardMeta[] = [
7
+ { icon: 'https://lucide.dev/icons/eye.svg', label: 'Visualizações' },
8
+ { icon: 'https://lucide.dev/icons/clock.svg', label: 'Última atualização' },
9
+ ];
10
+
11
+ const cardBadge: ICaoCardBadge = {
12
+ label: 'Novo',
13
+ color: 'text-white',
14
+ borderColor: 'border-green-600',
15
+ bg: '#22c55e',
16
+ };
17
+
18
+ const meta: Meta<CaoCardComponent> = {
19
+ title: 'Componentes/Card',
20
+ component: CaoCardComponent,
21
+ tags: ['autodocs'],
22
+ argTypes: {
23
+ variant: { control: 'select', options: ['horizontal', 'square'] },
24
+ title: { control: 'text' },
25
+ subtitle: { control: 'text' },
26
+ detail: { control: 'text' },
27
+ detailColor: { control: 'text' },
28
+ icon: { control: 'text' },
29
+ bgColor: { control: 'text' },
30
+ borderColor: { control: 'text' },
31
+ selected: { control: 'boolean' },
32
+ clickable: { control: 'boolean' },
33
+ cardClick: { action: 'cardClicked' },
34
+ },
35
+ args: {
36
+ cardClick: fn(),
37
+ title: 'Projeto Renova',
38
+ subtitle: 'Monitoramento de qualidade',
39
+ },
40
+ };
41
+
42
+ export default meta;
43
+ type Story = StoryObj<CaoCardComponent>;
44
+
45
+ export const Horizontal: Story = {
46
+ args: {
47
+ variant: 'horizontal',
48
+ },
49
+ };
50
+
51
+ export const HorizontalComIcone: Story = {
52
+ args: {
53
+ variant: 'horizontal',
54
+ icon: 'https://lucide.dev/icons/image.svg',
55
+ },
56
+ };
57
+
58
+ export const HorizontalComAvatar: Story = {
59
+ args: {
60
+ variant: 'horizontal',
61
+ avatar: { initials: 'OP', color: 'bg-indigo-500' },
62
+ },
63
+ };
64
+
65
+ export const HorizontalComDetalhe: Story = {
66
+ args: {
67
+ variant: 'horizontal',
68
+ detail: 'Detalhe adicional do card',
69
+ detailColor: 'text-amber-600',
70
+ },
71
+ };
72
+
73
+ export const ComBadge: Story = {
74
+ args: {
75
+ variant: 'horizontal',
76
+ badge: cardBadge,
77
+ },
78
+ };
79
+
80
+ export const ComMeta: Story = {
81
+ args: {
82
+ variant: 'horizontal',
83
+ meta: cardMeta,
84
+ },
85
+ };
86
+
87
+ export const Clicavel: Story = {
88
+ args: {
89
+ variant: 'horizontal',
90
+ clickable: true,
91
+ },
92
+ };
93
+
94
+ export const Selecionado: Story = {
95
+ args: {
96
+ variant: 'horizontal',
97
+ selected: true,
98
+ },
99
+ };
100
+
101
+ export const Quadrado: Story = {
102
+ args: {
103
+ variant: 'square',
104
+ title: 'KPIs',
105
+ },
106
+ };
107
+
108
+ export const QuadradoComIcone: Story = {
109
+ args: {
110
+ variant: 'square',
111
+ title: 'Análises',
112
+ icon: 'https://lucide.dev/icons/image.svg',
113
+ },
114
+ };