forlogic-core 2.2.5 → 2.2.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 (69) hide show
  1. package/.note/memory/features/import/attachment-idempotency-registry.md +8 -8
  2. package/.note/memory/features/import/attachment-strategy.md +30 -30
  3. package/.note/memory/patterns/admin-i18n-policy.md +20 -20
  4. package/.note/memory/patterns/alias-url-resolution.md +69 -69
  5. package/.note/memory/patterns/doc-sync-rule.md +35 -35
  6. package/.note/memory/patterns/documentation-standard.md +17 -17
  7. package/.note/memory/patterns/dynamic-supabase-config.md +4 -4
  8. package/.note/memory/patterns/environment-detection-logic.md +35 -35
  9. package/.note/memory/patterns/i18n-architecture.md +3 -3
  10. package/README.md +120 -120
  11. package/dist/README.md +1079 -0
  12. package/dist/bin/bootstrap.js +40 -0
  13. package/dist/bin/pull-docs.js +186 -0
  14. package/dist/components/ui/color-picker.d.ts +2 -0
  15. package/dist/components/ui/combo-tree.d.ts +3 -1
  16. package/dist/components/ui/combobox.d.ts +2 -1
  17. package/dist/components/ui/select.d.ts +9 -2
  18. package/dist/docs/KNOWLEDGE.md +109 -0
  19. package/dist/index.css +1 -1
  20. package/dist/index.css.map +1 -1
  21. package/dist/index.esm.js +1 -1
  22. package/dist/index.js +1 -1
  23. package/docs/PUBLISH.md +168 -168
  24. package/docs/STORAGE_BUCKETS.md +456 -456
  25. package/docs/SUPABASE_SECRETS.md +122 -122
  26. package/docs/WORKSPACE_KNOWLEDGE.md +154 -154
  27. package/docs/design-system/buttons-actions.md +130 -130
  28. package/docs/design-system/charts-dashboards.md +301 -340
  29. package/docs/design-system/crud.md +114 -174
  30. package/docs/design-system/data-display.md +106 -106
  31. package/docs/design-system/dialogs.md +212 -212
  32. package/docs/design-system/domain.md +329 -319
  33. package/docs/design-system/examples.md +275 -275
  34. package/docs/design-system/foundation.md +1 -1
  35. package/docs/design-system/inputs.md +137 -132
  36. package/docs/design-system/layout.md +154 -202
  37. package/docs/design-system/navigation.md +331 -272
  38. package/docs/design-system/notifications-feedback.md +34 -34
  39. package/docs/design-system/patterns/README.md +53 -53
  40. package/docs/design-system/patterns/action-button.md +22 -22
  41. package/docs/design-system/patterns/alertdialog-deletion.md +46 -46
  42. package/docs/design-system/patterns/baseform-custom-fields.md +59 -59
  43. package/docs/design-system/patterns/baseform-usage.md +42 -42
  44. package/docs/design-system/patterns/body-content-scroll.md +56 -56
  45. package/docs/design-system/patterns/combo-tree.md +23 -23
  46. package/docs/design-system/patterns/components-registry.md +17 -17
  47. package/docs/design-system/patterns/core-providers.md +41 -41
  48. package/docs/design-system/patterns/crud-bulk-actions.md +12 -12
  49. package/docs/design-system/patterns/crud-config-props.md +16 -16
  50. package/docs/design-system/patterns/crud-defaults.md +17 -17
  51. package/docs/design-system/patterns/crud-toolbar.md +28 -28
  52. package/docs/design-system/patterns/delete-confirmation.md +40 -40
  53. package/docs/design-system/patterns/dialog-body-scroll.md +26 -26
  54. package/docs/design-system/patterns/dialog-structure.md +32 -32
  55. package/docs/design-system/patterns/dialog-variants.md +41 -41
  56. package/docs/design-system/patterns/feature-flags.md +81 -81
  57. package/docs/design-system/patterns/header-metadata.md +57 -57
  58. package/docs/design-system/patterns/i18n-setup.md +117 -117
  59. package/docs/design-system/patterns/pagination.md +27 -27
  60. package/docs/design-system/patterns/single-scroll.md +39 -39
  61. package/docs/design-system/patterns/vite-tailwind-setup.md +49 -49
  62. package/docs/design-system/platform.md +18 -18
  63. package/docs/design-system/selectors.md +287 -258
  64. package/docs/design-system/tables-grids.md +38 -95
  65. package/package.json +152 -152
  66. package/dist/assets/docs-BEwTKYu3.css +0 -1
  67. package/dist/assets/docs-Bgpz6ETN.js +0 -10752
  68. package/dist/assets/index-SqMwTzMJ.js +0 -97
  69. package/dist/index.html +0 -34
@@ -7,37 +7,47 @@ Categoria: **Seletores** | 7 componentes
7
7
 
8
8
  ### TreeSelect (ComboTree)
9
9
 
10
- Componente de seleção hierárquica (tree view) com busca recursiva, expansão por chevron e seleção por label. Também disponível como TreeSelect.
10
+ Componente de seleção hierárquica (tree view) com busca recursiva, expansão por chevron e seleção por label. Também disponível como TreeSelect. O item selecionado é destacado com background accent, fonte medium e borda esquerda primary (mesmo padrão do Combobox). Use `showCheck` para adicionar o ícone de check à esquerda.
11
11
 
12
12
  **Uso:**
13
13
  ```tsx
14
- import { ComboTree, type ComboTreeOption } from 'forlogic-core';
15
- // 💡 Alias disponível: import { TreeSelect, type TreeSelectProps } from 'forlogic-core';
16
- import { Folder, FolderOpen, FileText } from 'lucide-react';
17
-
18
- const options: ComboTreeOption[] = [
19
- {
20
- value: 'quality',
21
- label: 'Qualidade',
22
- icon: Folder,
23
- iconOpen: FolderOpen,
24
- children: [
25
- { value: 'docs', label: 'Documentos', icon: FileText },
26
- { value: 'occurrences', label: 'Ocorrências', icon: FileText },
27
- ],
28
- },
29
- { value: 'hr', label: 'RH' },
30
- ];
31
-
32
- <ComboTree
33
- options={options}
34
- value={selected}
35
- onChange={setSelected}
36
- label="Departamento"
37
- placeholder="Selecione..."
14
+ import { ComboTree, type ComboTreeOption } from 'forlogic-core';
15
+ // 💡 Alias disponível: import { TreeSelect, type TreeSelectProps } from 'forlogic-core';
16
+ import { Folder, FolderOpen, FileText } from 'lucide-react';
17
+
18
+ const options: ComboTreeOption[] = [
19
+ {
20
+ value: 'quality',
21
+ label: 'Qualidade',
22
+ icon: Folder,
23
+ iconOpen: FolderOpen,
24
+ children: [
25
+ { value: 'docs', label: 'Documentos', icon: FileText },
26
+ { value: 'occurrences', label: 'Ocorrências', icon: FileText },
27
+ ],
28
+ },
29
+ { value: 'hr', label: 'RH' },
30
+ ];
31
+
32
+ <ComboTree
33
+ options={options}
34
+ value={selected}
35
+ onChange={setSelected}
36
+ label="Departamento"
37
+ placeholder="Selecione..."
38
38
  />
39
39
  ```
40
40
 
41
+ **Exemplos:**
42
+ ```tsx
43
+ <ComboTree
44
+ showCheck
45
+ options={options}
46
+ value={value}
47
+ onChange={(v) => setValue(v as string)}
48
+ label=
49
+ ```
50
+
41
51
  **Acessibilidade:**
42
52
  - Navegação por teclado com Tab e Enter
43
53
  - Aria-expanded indica estado de expansão dos nós
@@ -47,173 +57,181 @@ const options: ComboTreeOption[] = [
47
57
  **Notas:**
48
58
  - 💡 Alias: Também disponível como
49
59
  - — import { TreeSelect } from
50
- - ,
60
+ - ,
51
61
 
52
- - ,
62
+ - ,
53
63
 
54
- - ,
64
+ - ,
55
65
 
56
66
 
57
- > Fonte: `src/design-system/docs/components/ComboTreeDoc.tsx`
67
+ > Fonte: `src\design-system\docs\components\ComboTreeDoc.tsx`
58
68
 
59
69
  ---
60
70
 
61
71
  ### AutoComplete (Combobox)
62
72
 
63
- Componente versátil para seleção única ou múltipla com busca inteligente. Combina Popover e Command para autocomplete. Também disponível como AutoComplete. O componente Command é usado internamente para fornecer funcionalidades de busca e navegação por teclado.
73
+ Componente versátil para seleção única ou múltipla com busca inteligente. Combina Popover e Command para autocomplete. Também disponível como AutoComplete. O item selecionado é destacado por uma cor de fundo (accent) e fonte em negrito; o ícone de check à esquerda é opcional via prop showCheck. Quando clearable está ativo, um botão X aparece dentro do controle, à esquerda do chevron, para limpar a seleção.
64
74
 
65
75
  **Uso:**
66
76
  ```tsx
67
- import { Combobox } from "forlogic-core"
68
-
69
- const options = [
70
- { value: 'next.js', label: 'Next.js' },
71
- { value: 'sveltekit', label: 'SvelteKit' },
72
- ]
73
-
74
- // Seleção única
75
- <Combobox
76
- options={options}
77
- value={selected}
78
- onChange={setSelected}
79
- placeholder="Select..."
80
- />
81
-
82
- // Seleção múltipla
83
- <Combobox
84
- multiple
85
- options={options}
86
- value={selectedArray}
87
- onChange={setSelectedArray}
88
- placeholder="Select multiple..."
89
- />
90
-
91
- // Seleção única com botão limpar (clearable=true por padrão)
92
- <Combobox
93
- options={options}
94
- value={selected}
95
- onChange={setSelected}
96
- placeholder="Selecione..."
97
- clearable
98
- />
99
-
100
- // Desabilitar botão limpar
101
- <Combobox
102
- options={options}
103
- value={selected}
104
- onChange={setSelected}
105
- clearable={false}
106
- />
107
-
108
- // =====================
109
- // POPOVER COM COMMAND
110
- // =====================
111
- import { Popover, PopoverTrigger, PopoverContent, Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, Button } from "forlogic-core"
112
-
113
- <Popover open={open} onOpenChange={setOpen}>
114
- <PopoverTrigger asChild>
115
- <Button variant="outline">
116
- {selectedStatus ? selectedStatus.label : "+ Definir status"}
117
- </Button>
118
- </PopoverTrigger>
119
- <PopoverContent className="p-0 bg-popover" side="right" align="start">
120
- <Command>
121
- <CommandInput placeholder="Alterar status..." />
122
- <CommandList>
123
- <CommandEmpty>Nenhum resultado.</CommandEmpty>
124
- <CommandGroup>
125
- {statuses.map((status) => (
126
- <CommandItem
127
- key={status.value}
128
- value={status.value}
129
- onSelect={(value) => {
130
- setSelectedStatus(statuses.find((s) => s.value === value))
131
- setOpen(false)
132
- }}
133
- >
134
- {status.label}
135
- </CommandItem>
136
- ))}
137
- </CommandGroup>
138
- </CommandList>
139
- </Command>
140
- </PopoverContent>
141
- </Popover>
142
-
143
- // =====================
144
- // DROPDOWN MENU COM COMMAND
145
- // =====================
146
- import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent } from "forlogic-core"
147
-
148
- <DropdownMenu open={open} onOpenChange={setOpen}>
149
- <DropdownMenuTrigger asChild>
150
- <Button variant="ghost" size="sm">
151
- <MoreVertical className="h-4 w-4" />
152
- </Button>
153
- </DropdownMenuTrigger>
154
- <DropdownMenuContent align="end" className="w-[200px] bg-popover">
155
- <DropdownMenuLabel>Ações</DropdownMenuLabel>
156
- <DropdownMenuSeparator />
157
- <DropdownMenuSub>
158
- <DropdownMenuSubTrigger>Aplicar label</DropdownMenuSubTrigger>
159
- <DropdownMenuSubContent className="p-0 bg-popover">
160
- <Command>
161
- <CommandInput placeholder="Filtrar label..." />
162
- <CommandList>
163
- <CommandEmpty>Nenhum label encontrado.</CommandEmpty>
164
- <CommandGroup>
165
- {labels.map((label) => (
166
- <CommandItem
167
- key={label}
168
- value={label}
169
- onSelect={(value) => {
170
- setLabel(value)
171
- setOpen(false)
172
- }}
173
- >
174
- {label}
175
- </CommandItem>
176
- ))}
177
- </CommandGroup>
178
- </CommandList>
179
- </Command>
180
- </DropdownMenuSubContent>
181
- </DropdownMenuSub>
182
- </DropdownMenuContent>
183
- </DropdownMenu>
184
-
185
- // =====================
186
- // RESPONSIVO (Popover/Drawer)
187
- // =====================
188
- import { useMediaQuery } from "@/design-system/hooks/useMediaQuery"
189
- import { Drawer, DrawerTrigger, DrawerContent } from "forlogic-core"
190
-
191
- function ResponsiveCombobox() {
192
- const isDesktop = useMediaQuery("(min-width: 768px)")
193
-
194
- if (isDesktop) {
195
- return (
196
- <Popover>
197
- <PopoverTrigger asChild>
198
- <Button>Definir status</Button>
199
- </PopoverTrigger>
200
- <PopoverContent className="p-0 bg-popover">
201
- <StatusList />
202
- </PopoverContent>
203
- </Popover>
204
- )
205
- }
206
-
207
- return (
208
- <Drawer>
209
- <DrawerTrigger asChild>
210
- <Button>Definir status</Button>
211
- </DrawerTrigger>
212
- <DrawerContent>
213
- <StatusList />
214
- </DrawerContent>
215
- </Drawer>
216
- )
77
+ import { Combobox } from "forlogic-core"
78
+
79
+ const options = [
80
+ { value: 'next.js', label: 'Next.js' },
81
+ { value: 'sveltekit', label: 'SvelteKit' },
82
+ ]
83
+
84
+ // Seleção única
85
+ <Combobox
86
+ options={options}
87
+ value={selected}
88
+ onChange={setSelected}
89
+ placeholder="Select..."
90
+ />
91
+
92
+ // Seleção múltipla
93
+ <Combobox
94
+ multiple
95
+ options={options}
96
+ value={selectedArray}
97
+ onChange={setSelectedArray}
98
+ placeholder="Select multiple..."
99
+ />
100
+
101
+ // Seleção única com botão limpar
102
+ <Combobox
103
+ options={options}
104
+ value={selected}
105
+ onChange={setSelected}
106
+ placeholder="Selecione..."
107
+ clearable
108
+ />
109
+
110
+ // Exibir ícone de check no item selecionado (padrão é false)
111
+ <Combobox
112
+ options={options}
113
+ value={selected}
114
+ onChange={setSelected}
115
+ showCheck
116
+ />
117
+
118
+ // Desabilitar botão limpar
119
+ <Combobox
120
+ options={options}
121
+ value={selected}
122
+ onChange={setSelected}
123
+ clearable={false}
124
+ />
125
+
126
+ // =====================
127
+ // POPOVER COM COMMAND
128
+ // =====================
129
+ import { Popover, PopoverTrigger, PopoverContent, Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, Button } from "forlogic-core"
130
+
131
+ <Popover open={open} onOpenChange={setOpen}>
132
+ <PopoverTrigger asChild>
133
+ <Button variant="outline">
134
+ {selectedStatus ? selectedStatus.label : "+ Definir status"}
135
+ </Button>
136
+ </PopoverTrigger>
137
+ <PopoverContent className="p-0 bg-popover" side="right" align="start">
138
+ <Command>
139
+ <CommandInput placeholder="Alterar status..." />
140
+ <CommandList>
141
+ <CommandEmpty>Nenhum resultado.</CommandEmpty>
142
+ <CommandGroup>
143
+ {statuses.map((status) => (
144
+ <CommandItem
145
+ key={status.value}
146
+ value={status.value}
147
+ onSelect={(value) => {
148
+ setSelectedStatus(statuses.find((s) => s.value === value))
149
+ setOpen(false)
150
+ }}
151
+ >
152
+ {status.label}
153
+ </CommandItem>
154
+ ))}
155
+ </CommandGroup>
156
+ </CommandList>
157
+ </Command>
158
+ </PopoverContent>
159
+ </Popover>
160
+
161
+ // =====================
162
+ // DROPDOWN MENU COM COMMAND
163
+ // =====================
164
+ import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent } from "forlogic-core"
165
+
166
+ <DropdownMenu open={open} onOpenChange={setOpen}>
167
+ <DropdownMenuTrigger asChild>
168
+ <Button variant="ghost" size="sm">
169
+ <MoreVertical className="h-4 w-4" />
170
+ </Button>
171
+ </DropdownMenuTrigger>
172
+ <DropdownMenuContent align="end" className="w-[200px] bg-popover">
173
+ <DropdownMenuLabel>Ações</DropdownMenuLabel>
174
+ <DropdownMenuSeparator />
175
+ <DropdownMenuSub>
176
+ <DropdownMenuSubTrigger>Aplicar label</DropdownMenuSubTrigger>
177
+ <DropdownMenuSubContent className="p-0 bg-popover">
178
+ <Command>
179
+ <CommandInput placeholder="Filtrar label..." />
180
+ <CommandList>
181
+ <CommandEmpty>Nenhum label encontrado.</CommandEmpty>
182
+ <CommandGroup>
183
+ {labels.map((label) => (
184
+ <CommandItem
185
+ key={label}
186
+ value={label}
187
+ onSelect={(value) => {
188
+ setLabel(value)
189
+ setOpen(false)
190
+ }}
191
+ >
192
+ {label}
193
+ </CommandItem>
194
+ ))}
195
+ </CommandGroup>
196
+ </CommandList>
197
+ </Command>
198
+ </DropdownMenuSubContent>
199
+ </DropdownMenuSub>
200
+ </DropdownMenuContent>
201
+ </DropdownMenu>
202
+
203
+ // =====================
204
+ // RESPONSIVO (Popover/Drawer)
205
+ // =====================
206
+ import { useMediaQuery } from "@/design-system/hooks/useMediaQuery"
207
+ import { Drawer, DrawerTrigger, DrawerContent } from "forlogic-core"
208
+
209
+ function ResponsiveCombobox() {
210
+ const isDesktop = useMediaQuery("(min-width: 768px)")
211
+
212
+ if (isDesktop) {
213
+ return (
214
+ <Popover>
215
+ <PopoverTrigger asChild>
216
+ <Button>Definir status</Button>
217
+ </PopoverTrigger>
218
+ <PopoverContent className="p-0 bg-popover">
219
+ <StatusList />
220
+ </PopoverContent>
221
+ </Popover>
222
+ )
223
+ }
224
+
225
+ return (
226
+ <Drawer>
227
+ <DrawerTrigger asChild>
228
+ <Button>Definir status</Button>
229
+ </DrawerTrigger>
230
+ <DrawerContent>
231
+ <StatusList />
232
+ </DrawerContent>
233
+ </Drawer>
234
+ )
217
235
  }
218
236
  ```
219
237
 
@@ -228,46 +246,56 @@ function ResponsiveCombobox() {
228
246
  **Notas:**
229
247
  - 💡 Alias: Também disponível como
230
248
  - — import { AutoComplete } from
231
- - ,
249
+ - ,
232
250
 
233
251
 
234
- > Fonte: `src/design-system/docs/components/ComboboxDoc.tsx`
252
+ > Fonte: `src\design-system\docs\components\ComboboxDoc.tsx`
235
253
 
236
254
  ---
237
255
 
238
256
  ### TreeSelect (ComboTree)
239
257
 
240
- Componente de seleção hierárquica (tree view) com busca recursiva, expansão por chevron e seleção por label. Também disponível como TreeSelect.
258
+ Componente de seleção hierárquica (tree view) com busca recursiva, expansão por chevron e seleção por label. Também disponível como TreeSelect. O item selecionado é destacado com background accent, fonte medium e borda esquerda primary (mesmo padrão do Combobox). Use `showCheck` para adicionar o ícone de check à esquerda.
241
259
 
242
260
  **Uso:**
243
261
  ```tsx
244
- import { ComboTree, type ComboTreeOption } from 'forlogic-core';
245
- // 💡 Alias disponível: import { TreeSelect, type TreeSelectProps } from 'forlogic-core';
246
- import { Folder, FolderOpen, FileText } from 'lucide-react';
247
-
248
- const options: ComboTreeOption[] = [
249
- {
250
- value: 'quality',
251
- label: 'Qualidade',
252
- icon: Folder,
253
- iconOpen: FolderOpen,
254
- children: [
255
- { value: 'docs', label: 'Documentos', icon: FileText },
256
- { value: 'occurrences', label: 'Ocorrências', icon: FileText },
257
- ],
258
- },
259
- { value: 'hr', label: 'RH' },
260
- ];
261
-
262
- <ComboTree
263
- options={options}
264
- value={selected}
265
- onChange={setSelected}
266
- label="Departamento"
267
- placeholder="Selecione..."
262
+ import { ComboTree, type ComboTreeOption } from 'forlogic-core';
263
+ // 💡 Alias disponível: import { TreeSelect, type TreeSelectProps } from 'forlogic-core';
264
+ import { Folder, FolderOpen, FileText } from 'lucide-react';
265
+
266
+ const options: ComboTreeOption[] = [
267
+ {
268
+ value: 'quality',
269
+ label: 'Qualidade',
270
+ icon: Folder,
271
+ iconOpen: FolderOpen,
272
+ children: [
273
+ { value: 'docs', label: 'Documentos', icon: FileText },
274
+ { value: 'occurrences', label: 'Ocorrências', icon: FileText },
275
+ ],
276
+ },
277
+ { value: 'hr', label: 'RH' },
278
+ ];
279
+
280
+ <ComboTree
281
+ options={options}
282
+ value={selected}
283
+ onChange={setSelected}
284
+ label="Departamento"
285
+ placeholder="Selecione..."
268
286
  />
269
287
  ```
270
288
 
289
+ **Exemplos:**
290
+ ```tsx
291
+ <ComboTree
292
+ showCheck
293
+ options={options}
294
+ value={value}
295
+ onChange={(v) => setValue(v as string)}
296
+ label=
297
+ ```
298
+
271
299
  **Acessibilidade:**
272
300
  - Navegação por teclado com Tab e Enter
273
301
  - Aria-expanded indica estado de expansão dos nós
@@ -277,14 +305,14 @@ const options: ComboTreeOption[] = [
277
305
  **Notas:**
278
306
  - 💡 Alias: Também disponível como
279
307
  - — import { TreeSelect } from
280
- - ,
308
+ - ,
281
309
 
282
- - ,
310
+ - ,
283
311
 
284
- - ,
312
+ - ,
285
313
 
286
314
 
287
- > Fonte: `src/design-system/docs/components/ComboTreeDoc.tsx`
315
+ > Fonte: `src\design-system\docs\components\ComboTreeDoc.tsx`
288
316
 
289
317
  ---
290
318
 
@@ -294,15 +322,15 @@ Seletor de cores com paleta predefinida e seletor customizado.
294
322
 
295
323
  **Uso:**
296
324
  ```tsx
297
- import { ColorPicker } from "forlogic-core"
298
- import { useState } from 'react'
299
-
300
- const [color, setColor] = useState('#3b82f6')
301
-
302
- <ColorPicker
303
- value={color}
304
- onChange={setColor}
305
- label="Escolha uma cor"
325
+ import { ColorPicker } from "forlogic-core"
326
+ import { useState } from 'react'
327
+
328
+ const [color, setColor] = useState('#3b82f6')
329
+
330
+ <ColorPicker
331
+ value={color}
332
+ onChange={setColor}
333
+ label="Escolha uma cor"
306
334
  />
307
335
  ```
308
336
 
@@ -312,6 +340,7 @@ const [color, setColor] = useState('#3b82f6')
312
340
  | `value` | `string` | #3b82f6 | Cor atual selecionada (formato hexadecimal). |
313
341
  | `onChange` | `(color: string) => void` | - | Callback quando a cor é alterada. |
314
342
  | `label` | `string` | - | Label opcional para o campo. |
343
+ | `showHexValue` | `boolean` | true | Exibe o valor hexadecimal ao lado do swatch. Quando false, mostra apenas a cor. |
315
344
 
316
345
  **Acessibilidade:**
317
346
  - Botão com papel semântico correto
@@ -319,7 +348,7 @@ const [color, setColor] = useState('#3b82f6')
319
348
  - Labels descritivos para cores predefinidas
320
349
  - Navegação por teclado completa
321
350
 
322
- > Fonte: `src/design-system/docs/components/ColorPickerDoc.tsx`
351
+ > Fonte: `src\design-system\docs\components\ColorPickerDoc.tsx`
323
352
 
324
353
  ---
325
354
 
@@ -329,15 +358,15 @@ Seletor de ícones Material Symbols Outlined com opção 'sem ícone'.
329
358
 
330
359
  **Uso:**
331
360
  ```tsx
332
- import { IconPicker } from "forlogic-core"
333
- import { useState } from 'react'
334
-
335
- const [icon, setIcon] = useState<string | null>('star_rate')
336
-
337
- <IconPicker
338
- value={icon}
339
- onChange={setIcon}
340
- label="Escolha um ícone"
361
+ import { IconPicker } from "forlogic-core"
362
+ import { useState } from 'react'
363
+
364
+ const [icon, setIcon] = useState<string | null>('star_rate')
365
+
366
+ <IconPicker
367
+ value={icon}
368
+ onChange={setIcon}
369
+ label="Escolha um ícone"
341
370
  />
342
371
  ```
343
372
 
@@ -355,7 +384,7 @@ const [icon, setIcon] = useState<string | null>('star_rate')
355
384
  - Scroll area com navegação adequada
356
385
  - Opção para remover ícone selecionado
357
386
 
358
- > Fonte: `src/design-system/docs/components/IconPickerDoc.tsx`
387
+ > Fonte: `src\design-system\docs\components\IconPickerDoc.tsx`
359
388
 
360
389
  ---
361
390
 
@@ -365,24 +394,24 @@ Componentes para seleção de datas. O Calendar exibe um calendário interativo,
365
394
 
366
395
  **Uso:**
367
396
  ```tsx
368
- import { Calendar, DatePicker } from "forlogic-core"
369
- import { useState } from "react"
370
-
371
- // Calendar
372
- const [date, setDate] = useState<Date | undefined>(new Date())
373
-
374
- <Calendar
375
- mode="single"
376
- selected={date}
377
- onSelect={setDate}
378
- className="rounded-md border"
379
- />
380
-
381
- // Date Picker
382
- <DatePicker
383
- date={date}
384
- onDateChange={setDate}
385
- placeholder="Selecione uma data"
397
+ import { Calendar, DatePicker } from "forlogic-core"
398
+ import { useState } from "react"
399
+
400
+ // Calendar
401
+ const [date, setDate] = useState<Date | undefined>(new Date())
402
+
403
+ <Calendar
404
+ mode="single"
405
+ selected={date}
406
+ onSelect={setDate}
407
+ className="rounded-md border"
408
+ />
409
+
410
+ // Date Picker
411
+ <DatePicker
412
+ date={date}
413
+ onDateChange={setDate}
414
+ placeholder="Selecione uma data"
386
415
  />
387
416
  ```
388
417
 
@@ -393,7 +422,7 @@ const [date, setDate] = useState<Date | undefined>(new Date())
393
422
  - Labels e roles ARIA apropriados
394
423
  - Gerenciamento de foco adequado
395
424
 
396
- > Fonte: `src/design-system/docs/components/CalendarDoc.tsx`
425
+ > Fonte: `src\design-system\docs\components\CalendarDoc.tsx`
397
426
 
398
427
  ---
399
428
 
@@ -403,12 +432,12 @@ Indica o progresso de preenchimento de campos obrigatórios em formulários com
403
432
 
404
433
  **Uso:**
405
434
  ```tsx
406
- import { RequiredFieldsCounter } from "@/design-system/components/RequiredFieldsCounter"
407
-
408
- // Progresso parcial
409
- <RequiredFieldsCounter filled={2} total={5} />
410
-
411
- // Formulário completo
435
+ import { RequiredFieldsCounter } from "@/design-system/components/RequiredFieldsCounter"
436
+
437
+ // Progresso parcial
438
+ <RequiredFieldsCounter filled={2} total={5} />
439
+
440
+ // Formulário completo
412
441
  <RequiredFieldsCounter filled={5} total={5} />
413
442
  ```
414
443
 
@@ -437,9 +466,9 @@ import { RequiredFieldsCounter } from "@/design-system/components/RequiredFields
437
466
  - definida no tailwind.config.ts
438
467
  - Importar de
439
468
  - ou diretamente de
440
- - ,
469
+ - ,
441
470
 
442
471
 
443
- > Fonte: `src/design-system/docs/components/RequiredFieldsCounterDoc.tsx`
472
+ > Fonte: `src\design-system\docs\components\RequiredFieldsCounterDoc.tsx`
444
473
 
445
474
  ---