@flowtomic/ui 0.1.14 → 0.2.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.
- package/dist/components/_reference/shadcn-ai/prompt-input.d.ts +48 -0
- package/dist/components/_reference/shadcn-ai/prompt-input.d.ts.map +1 -0
- package/dist/components/_reference/shadcn-ai/prompt-input.js +67 -0
- package/dist/components/atoms/actions/badge/badge.d.ts +97 -1
- package/dist/components/atoms/actions/badge/badge.d.ts.map +1 -1
- package/dist/components/atoms/actions/badge/badge.js +83 -0
- package/dist/components/atoms/actions/button/button.d.ts +134 -1
- package/dist/components/atoms/actions/button/button.d.ts.map +1 -1
- package/dist/components/atoms/actions/button/button.js +106 -0
- package/dist/components/atoms/actions/context-menu/context-menu.d.ts +79 -0
- package/dist/components/atoms/actions/context-menu/context-menu.d.ts.map +1 -1
- package/dist/components/atoms/actions/context-menu/context-menu.js +55 -0
- package/dist/components/atoms/actions/dropdown-menu/dropdown-menu.d.ts +51 -3
- package/dist/components/atoms/actions/dropdown-menu/dropdown-menu.d.ts.map +1 -1
- package/dist/components/atoms/actions/dropdown-menu/dropdown-menu.js +51 -3
- package/dist/components/atoms/animation/encrypted-text/encrypted-text.d.ts.map +1 -1
- package/dist/components/atoms/animation/encrypted-text/encrypted-text.js +3 -1
- package/dist/components/atoms/feedback/alert/alert.d.ts +77 -12
- package/dist/components/atoms/feedback/alert/alert.d.ts.map +1 -1
- package/dist/components/atoms/feedback/alert/alert.js +64 -12
- package/dist/components/atoms/feedback/alert-dialog/alert-dialog.d.ts +2 -2
- package/dist/components/atoms/feedback/dialog/dialog.d.ts +66 -8
- package/dist/components/atoms/feedback/dialog/dialog.d.ts.map +1 -1
- package/dist/components/atoms/feedback/dialog/dialog.js +66 -8
- package/dist/components/atoms/feedback/hover-card/hover-card.d.ts +45 -5
- package/dist/components/atoms/feedback/hover-card/hover-card.d.ts.map +1 -1
- package/dist/components/atoms/feedback/hover-card/hover-card.js +45 -5
- package/dist/components/atoms/feedback/inline-citation/inline-citation.d.ts +53 -2
- package/dist/components/atoms/feedback/inline-citation/inline-citation.d.ts.map +1 -1
- package/dist/components/atoms/feedback/inline-citation/inline-citation.js +53 -2
- package/dist/components/atoms/feedback/popover/popover.d.ts +78 -0
- package/dist/components/atoms/feedback/popover/popover.d.ts.map +1 -1
- package/dist/components/atoms/feedback/popover/popover.js +64 -0
- package/dist/components/atoms/feedback/sheet/sheet.d.ts +90 -0
- package/dist/components/atoms/feedback/sheet/sheet.d.ts.map +1 -1
- package/dist/components/atoms/feedback/sheet/sheet.js +78 -0
- package/dist/components/atoms/feedback/sonner/sonner.d.ts +66 -6
- package/dist/components/atoms/feedback/sonner/sonner.d.ts.map +1 -1
- package/dist/components/atoms/feedback/sonner/sonner.js +66 -6
- package/dist/components/atoms/feedback/tooltip/tooltip.d.ts +54 -4
- package/dist/components/atoms/feedback/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/atoms/feedback/tooltip/tooltip.js +63 -5
- package/dist/components/atoms/forms/checkbox/checkbox.d.ts +62 -4
- package/dist/components/atoms/forms/checkbox/checkbox.d.ts.map +1 -1
- package/dist/components/atoms/forms/checkbox/checkbox.js +58 -4
- package/dist/components/atoms/forms/field/field.d.ts +67 -0
- package/dist/components/atoms/forms/field/field.d.ts.map +1 -1
- package/dist/components/atoms/forms/field/field.js +47 -0
- package/dist/components/atoms/forms/form/form.d.ts +60 -0
- package/dist/components/atoms/forms/form/form.d.ts.map +1 -1
- package/dist/components/atoms/forms/form/form.js +3 -0
- package/dist/components/atoms/forms/input/input.d.ts +100 -1
- package/dist/components/atoms/forms/input/input.d.ts.map +1 -1
- package/dist/components/atoms/forms/input/input.js +82 -0
- package/dist/components/atoms/forms/input-otp/input-otp.d.ts +62 -0
- package/dist/components/atoms/forms/input-otp/input-otp.d.ts.map +1 -1
- package/dist/components/atoms/forms/input-otp/input-otp.js +50 -0
- package/dist/components/atoms/forms/label/label.d.ts +54 -0
- package/dist/components/atoms/forms/label/label.d.ts.map +1 -1
- package/dist/components/atoms/forms/label/label.js +50 -0
- package/dist/components/atoms/forms/radio-group/radio-group.d.ts +47 -0
- package/dist/components/atoms/forms/radio-group/radio-group.d.ts.map +1 -1
- package/dist/components/atoms/forms/radio-group/radio-group.js +43 -0
- package/dist/components/atoms/forms/select/select.d.ts +62 -0
- package/dist/components/atoms/forms/select/select.d.ts.map +1 -1
- package/dist/components/atoms/forms/select/select.js +62 -0
- package/dist/components/atoms/forms/slider/slider.d.ts +60 -0
- package/dist/components/atoms/forms/slider/slider.d.ts.map +1 -1
- package/dist/components/atoms/forms/slider/slider.js +53 -1
- package/dist/components/atoms/forms/switch/switch.d.ts +67 -0
- package/dist/components/atoms/forms/switch/switch.d.ts.map +1 -1
- package/dist/components/atoms/forms/switch/switch.js +63 -0
- package/dist/components/atoms/forms/textarea/textarea.d.ts +66 -0
- package/dist/components/atoms/forms/textarea/textarea.d.ts.map +1 -1
- package/dist/components/atoms/forms/textarea/textarea.js +13 -0
- package/dist/components/atoms/forms/toggle/toggle.d.ts +65 -1
- package/dist/components/atoms/forms/toggle/toggle.d.ts.map +1 -1
- package/dist/components/atoms/forms/toggle/toggle.js +58 -0
- package/dist/components/atoms/index.d.ts +0 -2
- package/dist/components/atoms/index.d.ts.map +1 -1
- package/dist/components/atoms/index.js +0 -1
- package/dist/components/atoms/layout/accordion/accordion.d.ts +84 -0
- package/dist/components/atoms/layout/accordion/accordion.d.ts.map +1 -1
- package/dist/components/atoms/layout/accordion/accordion.js +72 -0
- package/dist/components/atoms/layout/aspect-ratio/aspect-ratio.d.ts +54 -0
- package/dist/components/atoms/layout/aspect-ratio/aspect-ratio.d.ts.map +1 -1
- package/dist/components/atoms/layout/aspect-ratio/aspect-ratio.js +49 -0
- package/dist/components/atoms/layout/collapsible/collapsible.d.ts +47 -5
- package/dist/components/atoms/layout/collapsible/collapsible.d.ts.map +1 -1
- package/dist/components/atoms/layout/collapsible/collapsible.js +47 -5
- package/dist/components/atoms/layout/drawer/drawer.d.ts +55 -0
- package/dist/components/atoms/layout/drawer/drawer.d.ts.map +1 -1
- package/dist/components/atoms/layout/index.d.ts +2 -0
- package/dist/components/atoms/layout/index.d.ts.map +1 -1
- package/dist/components/atoms/layout/index.js +1 -0
- package/dist/components/atoms/layout/resizable/resizable.d.ts +77 -2
- package/dist/components/atoms/layout/resizable/resizable.d.ts.map +1 -1
- package/dist/components/atoms/layout/resizable/resizable.js +68 -0
- package/dist/components/atoms/layout/scroll-area/scroll-area.d.ts +34 -2
- package/dist/components/atoms/layout/scroll-area/scroll-area.d.ts.map +1 -1
- package/dist/components/atoms/layout/scroll-area/scroll-area.js +35 -3
- package/dist/components/atoms/layout/sidebar/sidebar.d.ts +66 -1
- package/dist/components/atoms/layout/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/atoms/layout/sidebar/sidebar.js +66 -0
- package/dist/components/atoms/layout/toggle-group/toggle-group.d.ts +73 -0
- package/dist/components/atoms/layout/toggle-group/toggle-group.d.ts.map +1 -1
- package/dist/components/atoms/layout/toggle-group/toggle-group.js +57 -0
- package/dist/components/atoms/layout/widget-resize-handle/index.d.ts +3 -0
- package/dist/components/atoms/layout/widget-resize-handle/index.d.ts.map +1 -0
- package/dist/components/atoms/layout/widget-resize-handle/index.js +1 -0
- package/dist/components/atoms/layout/widget-resize-handle/widget-resize-handle.d.ts +98 -0
- package/dist/components/atoms/layout/widget-resize-handle/widget-resize-handle.d.ts.map +1 -0
- package/dist/components/atoms/layout/widget-resize-handle/widget-resize-handle.js +117 -0
- package/dist/components/atoms/navigation/command/command.d.ts +7 -7
- package/dist/components/molecules/data-display/chat-message/chat-message.d.ts +39 -0
- package/dist/components/molecules/data-display/chat-message/chat-message.d.ts.map +1 -0
- package/dist/components/molecules/data-display/chat-message/chat-message.js +85 -0
- package/dist/components/molecules/data-display/chat-message/index.d.ts +3 -0
- package/dist/components/molecules/data-display/chat-message/index.d.ts.map +1 -0
- package/dist/components/molecules/data-display/chat-message/index.js +1 -0
- package/dist/components/molecules/data-display/message/message.d.ts +22 -6
- package/dist/components/molecules/data-display/message/message.d.ts.map +1 -1
- package/dist/components/molecules/data-display/message/message.js +192 -8
- package/dist/components/molecules/draggable-widget/draggable-widget.d.ts.map +1 -1
- package/dist/components/molecules/draggable-widget/draggable-widget.js +6 -2
- package/dist/components/molecules/feedback/edit-chat-message-modal/edit-chat-message-modal.d.ts +20 -0
- package/dist/components/molecules/feedback/edit-chat-message-modal/edit-chat-message-modal.d.ts.map +1 -0
- package/dist/components/molecules/feedback/edit-chat-message-modal/edit-chat-message-modal.js +65 -0
- package/dist/components/molecules/feedback/edit-chat-message-modal/index.d.ts +3 -0
- package/dist/components/molecules/feedback/edit-chat-message-modal/index.d.ts.map +1 -0
- package/dist/components/molecules/feedback/edit-chat-message-modal/index.js +1 -0
- package/dist/components/molecules/forms/autocomplete/autocomplete-section.d.ts.map +1 -1
- package/dist/components/molecules/forms/autocomplete/autocomplete-section.js +3 -1
- package/dist/components/molecules/forms/chat-input/chat-input.d.ts +46 -0
- package/dist/components/molecules/forms/chat-input/chat-input.d.ts.map +1 -0
- package/dist/components/molecules/forms/chat-input/chat-input.js +57 -0
- package/dist/components/molecules/forms/chat-input/index.d.ts +3 -0
- package/dist/components/molecules/forms/chat-input/index.d.ts.map +1 -0
- package/dist/components/molecules/forms/chat-input/index.js +1 -0
- package/dist/components/molecules/forms/item/item.d.ts +1 -1
- package/dist/components/molecules/forms/text-editor/text-editor.d.ts.map +1 -1
- package/dist/components/molecules/index.d.ts +6 -0
- package/dist/components/molecules/index.d.ts.map +1 -1
- package/dist/components/molecules/index.js +3 -0
- package/dist/components/molecules/navigation/menu-dock/menu-dock.js +1 -1
- package/dist/components/organisms/chat-log/chat-log.d.ts +30 -0
- package/dist/components/organisms/chat-log/chat-log.d.ts.map +1 -0
- package/dist/components/organisms/chat-log/chat-log.js +21 -0
- package/dist/components/organisms/chat-log/index.d.ts +3 -0
- package/dist/components/organisms/chat-log/index.d.ts.map +1 -0
- package/dist/components/organisms/chat-log/index.js +1 -0
- package/dist/components/organisms/document-editor/document-editor.d.ts.map +1 -1
- package/dist/components/organisms/document-editor/document-editor.js +2 -2
- package/dist/components/organisms/draggable-dashboard-grid/draggable-dashboard-grid.d.ts.map +1 -1
- package/dist/components/organisms/draggable-dashboard-grid/draggable-dashboard-grid.js +1 -1
- package/dist/components/organisms/form-layout/form-layout.d.ts.map +1 -1
- package/dist/components/organisms/form-layout/form-layout.js +3 -1
- package/dist/components/organisms/genealogy-canvas/genealogy-canvas.d.ts +0 -5
- package/dist/components/organisms/genealogy-canvas/genealogy-canvas.d.ts.map +1 -1
- package/dist/components/organisms/genealogy-canvas/genealogy-canvas.js +50 -55
- package/dist/components/organisms/index.d.ts +2 -0
- package/dist/components/organisms/index.d.ts.map +1 -1
- package/dist/components/organisms/index.js +1 -0
- package/dist/components/organisms/model-selector/model-selector.d.ts +1 -1
- package/dist/components/organisms/prompt-input/index.d.ts +1 -1
- package/dist/components/organisms/prompt-input/index.d.ts.map +1 -1
- package/dist/components/organisms/prompt-input/index.js +1 -1
- package/dist/components/organisms/prompt-input/prompt-input.d.ts +22 -7
- package/dist/components/organisms/prompt-input/prompt-input.d.ts.map +1 -1
- package/dist/components/organisms/prompt-input/prompt-input.js +26 -17
- package/dist/index.js +501 -501
- package/dist/test/setup.d.ts +2 -0
- package/dist/test/setup.d.ts.map +1 -0
- package/dist/test/setup.js +43 -0
- package/package.json +18 -2
|
@@ -1,14 +1,72 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Checkbox Component
|
|
2
|
+
* # Checkbox Component
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* O componente `Checkbox` é um controle de seleção usado para permitir que o usuário selecione
|
|
5
|
+
* uma ou mais opções de um conjunto. É baseado em Radix UI para garantir acessibilidade completa.
|
|
6
|
+
*
|
|
7
|
+
* ## Características Principais
|
|
8
|
+
*
|
|
9
|
+
* - **Acessível**: Baseado em Radix UI com suporte completo a leitores de tela
|
|
10
|
+
* - **Estados Visuais**: Suporta estados checked, unchecked e disabled
|
|
11
|
+
* - **Indicador Visual**: Exibe ícone de check quando selecionado
|
|
12
|
+
* - **Foco Gerenciado**: Foco e navegação por teclado gerenciados automaticamente
|
|
13
|
+
* - **Customizável**: Pode ser estilizado via className e props HTML padrão
|
|
14
|
+
*
|
|
15
|
+
* ## Uso Básico
|
|
16
|
+
*
|
|
17
|
+
* ```tsx
|
|
18
|
+
* import { Checkbox } from "@flowtomic/ui/components/atoms/forms/checkbox";
|
|
19
|
+
*
|
|
20
|
+
* function MyComponent() {
|
|
21
|
+
* const [checked, setChecked] = React.useState(false);
|
|
22
|
+
*
|
|
23
|
+
* return (
|
|
24
|
+
* <Checkbox
|
|
25
|
+
* checked={checked}
|
|
26
|
+
* onCheckedChange={setChecked}
|
|
27
|
+
* />
|
|
28
|
+
* );
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* ## Com Label
|
|
33
|
+
*
|
|
34
|
+
* ```tsx
|
|
35
|
+
* <div className="flex items-center gap-2">
|
|
36
|
+
* <Checkbox id="terms" />
|
|
37
|
+
* <label htmlFor="terms">Aceito os termos</label>
|
|
38
|
+
* </div>
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* ## Acessibilidade
|
|
42
|
+
*
|
|
43
|
+
* - Suporta navegação por teclado (Tab, Espaço)
|
|
44
|
+
* - Segue padrões WAI-ARIA via Radix UI
|
|
45
|
+
* - Suporta leitores de tela
|
|
46
|
+
* - Foco gerenciado automaticamente
|
|
47
|
+
*
|
|
48
|
+
* @see [Radix UI Checkbox](https://www.radix-ui.com/primitives/docs/components/checkbox) para mais detalhes
|
|
6
49
|
*/
|
|
7
50
|
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
8
51
|
import * as React from "react";
|
|
52
|
+
/**
|
|
53
|
+
* Props do componente Checkbox.
|
|
54
|
+
* @see CheckboxPrimitive.Root para props disponíveis (checked, onCheckedChange, disabled, etc.)
|
|
55
|
+
*/
|
|
9
56
|
export type CheckboxProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;
|
|
10
57
|
/**
|
|
11
|
-
* Checkbox
|
|
58
|
+
* Componente Checkbox para seleção de opções.
|
|
59
|
+
*
|
|
60
|
+
* @component
|
|
61
|
+
* @param {CheckboxProps} props - Props do componente
|
|
62
|
+
* @returns {JSX.Element} Elemento Checkbox renderizado
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```tsx
|
|
66
|
+
* <Checkbox checked={checked} onCheckedChange={setChecked} />
|
|
67
|
+
* <Checkbox defaultChecked />
|
|
68
|
+
* <Checkbox disabled />
|
|
69
|
+
* ```
|
|
12
70
|
*/
|
|
13
71
|
declare const Checkbox: React.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
14
72
|
export { Checkbox };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/forms/checkbox/checkbox.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/forms/checkbox/checkbox.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAE1F;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,QAAQ,iKAsBb,CAAC;AAGF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -1,16 +1,70 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
|
-
* Checkbox Component
|
|
3
|
+
* # Checkbox Component
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* O componente `Checkbox` é um controle de seleção usado para permitir que o usuário selecione
|
|
6
|
+
* uma ou mais opções de um conjunto. É baseado em Radix UI para garantir acessibilidade completa.
|
|
7
|
+
*
|
|
8
|
+
* ## Características Principais
|
|
9
|
+
*
|
|
10
|
+
* - **Acessível**: Baseado em Radix UI com suporte completo a leitores de tela
|
|
11
|
+
* - **Estados Visuais**: Suporta estados checked, unchecked e disabled
|
|
12
|
+
* - **Indicador Visual**: Exibe ícone de check quando selecionado
|
|
13
|
+
* - **Foco Gerenciado**: Foco e navegação por teclado gerenciados automaticamente
|
|
14
|
+
* - **Customizável**: Pode ser estilizado via className e props HTML padrão
|
|
15
|
+
*
|
|
16
|
+
* ## Uso Básico
|
|
17
|
+
*
|
|
18
|
+
* ```tsx
|
|
19
|
+
* import { Checkbox } from "@flowtomic/ui/components/atoms/forms/checkbox";
|
|
20
|
+
*
|
|
21
|
+
* function MyComponent() {
|
|
22
|
+
* const [checked, setChecked] = React.useState(false);
|
|
23
|
+
*
|
|
24
|
+
* return (
|
|
25
|
+
* <Checkbox
|
|
26
|
+
* checked={checked}
|
|
27
|
+
* onCheckedChange={setChecked}
|
|
28
|
+
* />
|
|
29
|
+
* );
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* ## Com Label
|
|
34
|
+
*
|
|
35
|
+
* ```tsx
|
|
36
|
+
* <div className="flex items-center gap-2">
|
|
37
|
+
* <Checkbox id="terms" />
|
|
38
|
+
* <label htmlFor="terms">Aceito os termos</label>
|
|
39
|
+
* </div>
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* ## Acessibilidade
|
|
43
|
+
*
|
|
44
|
+
* - Suporta navegação por teclado (Tab, Espaço)
|
|
45
|
+
* - Segue padrões WAI-ARIA via Radix UI
|
|
46
|
+
* - Suporta leitores de tela
|
|
47
|
+
* - Foco gerenciado automaticamente
|
|
48
|
+
*
|
|
49
|
+
* @see [Radix UI Checkbox](https://www.radix-ui.com/primitives/docs/components/checkbox) para mais detalhes
|
|
7
50
|
*/
|
|
8
51
|
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
9
52
|
import { Check } from "lucide-react";
|
|
10
53
|
import * as React from "react";
|
|
11
54
|
import { cn } from "@/lib/utils";
|
|
12
55
|
/**
|
|
13
|
-
* Checkbox
|
|
56
|
+
* Componente Checkbox para seleção de opções.
|
|
57
|
+
*
|
|
58
|
+
* @component
|
|
59
|
+
* @param {CheckboxProps} props - Props do componente
|
|
60
|
+
* @returns {JSX.Element} Elemento Checkbox renderizado
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```tsx
|
|
64
|
+
* <Checkbox checked={checked} onCheckedChange={setChecked} />
|
|
65
|
+
* <Checkbox defaultChecked />
|
|
66
|
+
* <Checkbox disabled />
|
|
67
|
+
* ```
|
|
14
68
|
*/
|
|
15
69
|
const Checkbox = React.forwardRef(({ className, ...props }, ref) => {
|
|
16
70
|
return (_jsx(CheckboxPrimitive.Root, { ref: ref, className: cn("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", "disabled:cursor-not-allowed disabled:opacity-50", "data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground", className), ...props, children: _jsx(CheckboxPrimitive.Indicator, { className: cn("flex items-center justify-center text-current"), children: _jsx(Check, { className: "h-4 w-4" }) }) }));
|
|
@@ -1,12 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* # Field Component
|
|
3
|
+
*
|
|
4
|
+
* O componente `Field` é um sistema de composição para campos de formulário que fornece
|
|
5
|
+
* estrutura consistente para labels, descrições, erros e conteúdo. Suporta múltiplas
|
|
6
|
+
* orientações (vertical, horizontal, responsive) e composição flexível.
|
|
7
|
+
*
|
|
8
|
+
* ## Características Principais
|
|
9
|
+
*
|
|
10
|
+
* - **Composição**: Múltiplos sub-componentes para flexibilidade
|
|
11
|
+
* - **Orientação**: Suporta vertical, horizontal e responsive
|
|
12
|
+
* - **Validação**: Integração com mensagens de erro
|
|
13
|
+
* - **Acessível**: Estrutura semântica para acessibilidade
|
|
14
|
+
*
|
|
15
|
+
* ## Componentes
|
|
16
|
+
*
|
|
17
|
+
* - **Field**: Container principal do campo
|
|
18
|
+
* - **FieldLabel**: Label do campo
|
|
19
|
+
* - **FieldDescription**: Descrição/ajuda do campo
|
|
20
|
+
* - **FieldError**: Mensagens de erro
|
|
21
|
+
* - **FieldContent**: Container para o controle
|
|
22
|
+
* - **FieldGroup**: Agrupa múltiplos campos
|
|
23
|
+
* - **FieldSet**: Fieldset semântico
|
|
24
|
+
* - **FieldLegend**: Legend do fieldset
|
|
25
|
+
* - **FieldSeparator**: Separador visual
|
|
26
|
+
*
|
|
27
|
+
* ## Uso Básico
|
|
28
|
+
*
|
|
29
|
+
* ```tsx
|
|
30
|
+
* import { Field, FieldLabel, FieldContent, FieldDescription } from "@flowtomic/ui/components/atoms/forms/field";
|
|
31
|
+
* import { Input } from "@flowtomic/ui/components/atoms/forms/input";
|
|
32
|
+
*
|
|
33
|
+
* function MyComponent() {
|
|
34
|
+
* return (
|
|
35
|
+
* <Field>
|
|
36
|
+
* <FieldLabel htmlFor="email">E-mail</FieldLabel>
|
|
37
|
+
* <FieldContent>
|
|
38
|
+
* <Input id="email" />
|
|
39
|
+
* <FieldDescription>Digite seu e-mail</FieldDescription>
|
|
40
|
+
* </FieldContent>
|
|
41
|
+
* </Field>
|
|
42
|
+
* );
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @see [Input Component](../input/input.tsx) para exemplos de uso
|
|
47
|
+
*/
|
|
1
48
|
import { type VariantProps } from "class-variance-authority";
|
|
2
49
|
import { Label } from "../label/label";
|
|
50
|
+
/**
|
|
51
|
+
* Props do componente FieldSet.
|
|
52
|
+
*/
|
|
3
53
|
export interface FieldSetProps extends React.ComponentProps<"fieldset"> {
|
|
4
54
|
}
|
|
5
55
|
declare function FieldSet({ className, ...props }: FieldSetProps): import("react/jsx-runtime").JSX.Element;
|
|
6
56
|
declare namespace FieldSet {
|
|
7
57
|
var displayName: string;
|
|
8
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Props do componente FieldLegend.
|
|
61
|
+
*
|
|
62
|
+
* @property {'legend' | 'label'} [variant='legend'] - Variante visual do legend
|
|
63
|
+
*/
|
|
9
64
|
export interface FieldLegendProps extends React.ComponentProps<"legend"> {
|
|
65
|
+
/** Variante visual do legend */
|
|
10
66
|
variant?: "legend" | "label";
|
|
11
67
|
}
|
|
12
68
|
declare function FieldLegend({ className, variant, ...props }: FieldLegendProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -22,6 +78,11 @@ declare namespace FieldGroup {
|
|
|
22
78
|
declare const fieldVariants: (props?: ({
|
|
23
79
|
orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
|
|
24
80
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
81
|
+
/**
|
|
82
|
+
* Props do componente Field.
|
|
83
|
+
*
|
|
84
|
+
* @property {'vertical' | 'horizontal' | 'responsive'} [orientation='vertical'] - Orientação do campo
|
|
85
|
+
*/
|
|
25
86
|
export interface FieldProps extends React.ComponentProps<"div">, VariantProps<typeof fieldVariants> {
|
|
26
87
|
}
|
|
27
88
|
declare function Field({ className, orientation, ...props }: FieldProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -59,7 +120,13 @@ declare function FieldSeparator({ children, className, ...props }: FieldSeparato
|
|
|
59
120
|
declare namespace FieldSeparator {
|
|
60
121
|
var displayName: string;
|
|
61
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Props do componente FieldError.
|
|
125
|
+
*
|
|
126
|
+
* @property {Array<{ message?: string } | undefined>} [errors] - Array de erros a exibir
|
|
127
|
+
*/
|
|
62
128
|
export interface FieldErrorProps extends React.ComponentProps<"div"> {
|
|
129
|
+
/** Array de erros a exibir */
|
|
63
130
|
errors?: Array<{
|
|
64
131
|
message?: string;
|
|
65
132
|
} | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/forms/field/field.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC;CAAG;AAE1E,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAYvD;kBAZQ,QAAQ;;;AAgBjB,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;IACtE,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC9B;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,OAAkB,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,2CAcjF;kBAdQ,WAAW;;;AAkBpB,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;CAAG;AAEvE,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,2CAW3D;kBAXQ,UAAU;;;AAenB,QAAA,MAAM,aAAa;;8EAmBjB,CAAC;AAEH,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EACjC,YAAY,CAAC,OAAO,aAAa,CAAC;CAAG;AAEzC,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,WAAwB,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAW3E;kBAXQ,KAAK;;;AAed,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;CAAG;AAEzE,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CAQ/D;kBARQ,YAAY;;;AAYrB,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC;CAAG;AAE9E,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,2CAa3D;kBAbQ,UAAU;;;AAiBnB,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;CAAG;AAEvE,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,2CAW3D;kBAXQ,UAAU;;;AAenB,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;CAAG;AAE3E,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,2CAavE;kBAbQ,gBAAgB;;;AAiBzB,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IACtE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,iBAAS,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,2CAsB7E;kBAtBQ,cAAc;;;AA0BvB,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IAClE,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;CAClD;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,kDAwC7E;kBAxCQ,UAAU;;;AA4CnB,OAAO,EACL,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,UAAU,GACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/forms/field/field.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,51 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* # Field Component
|
|
4
|
+
*
|
|
5
|
+
* O componente `Field` é um sistema de composição para campos de formulário que fornece
|
|
6
|
+
* estrutura consistente para labels, descrições, erros e conteúdo. Suporta múltiplas
|
|
7
|
+
* orientações (vertical, horizontal, responsive) e composição flexível.
|
|
8
|
+
*
|
|
9
|
+
* ## Características Principais
|
|
10
|
+
*
|
|
11
|
+
* - **Composição**: Múltiplos sub-componentes para flexibilidade
|
|
12
|
+
* - **Orientação**: Suporta vertical, horizontal e responsive
|
|
13
|
+
* - **Validação**: Integração com mensagens de erro
|
|
14
|
+
* - **Acessível**: Estrutura semântica para acessibilidade
|
|
15
|
+
*
|
|
16
|
+
* ## Componentes
|
|
17
|
+
*
|
|
18
|
+
* - **Field**: Container principal do campo
|
|
19
|
+
* - **FieldLabel**: Label do campo
|
|
20
|
+
* - **FieldDescription**: Descrição/ajuda do campo
|
|
21
|
+
* - **FieldError**: Mensagens de erro
|
|
22
|
+
* - **FieldContent**: Container para o controle
|
|
23
|
+
* - **FieldGroup**: Agrupa múltiplos campos
|
|
24
|
+
* - **FieldSet**: Fieldset semântico
|
|
25
|
+
* - **FieldLegend**: Legend do fieldset
|
|
26
|
+
* - **FieldSeparator**: Separador visual
|
|
27
|
+
*
|
|
28
|
+
* ## Uso Básico
|
|
29
|
+
*
|
|
30
|
+
* ```tsx
|
|
31
|
+
* import { Field, FieldLabel, FieldContent, FieldDescription } from "@flowtomic/ui/components/atoms/forms/field";
|
|
32
|
+
* import { Input } from "@flowtomic/ui/components/atoms/forms/input";
|
|
33
|
+
*
|
|
34
|
+
* function MyComponent() {
|
|
35
|
+
* return (
|
|
36
|
+
* <Field>
|
|
37
|
+
* <FieldLabel htmlFor="email">E-mail</FieldLabel>
|
|
38
|
+
* <FieldContent>
|
|
39
|
+
* <Input id="email" />
|
|
40
|
+
* <FieldDescription>Digite seu e-mail</FieldDescription>
|
|
41
|
+
* </FieldContent>
|
|
42
|
+
* </Field>
|
|
43
|
+
* );
|
|
44
|
+
* }
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @see [Input Component](../input/input.tsx) para exemplos de uso
|
|
48
|
+
*/
|
|
2
49
|
import { cva } from "class-variance-authority";
|
|
3
50
|
import { useMemo } from "react";
|
|
4
51
|
import { cn } from "@/lib/utils";
|
|
@@ -1,7 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* # Form Component
|
|
3
|
+
*
|
|
4
|
+
* O componente `Form` é um sistema de composição para formulários baseado em React Hook Form.
|
|
5
|
+
* Fornece integração completa com validação, gerenciamento de estado e acessibilidade.
|
|
6
|
+
*
|
|
7
|
+
* ## Características Principais
|
|
8
|
+
*
|
|
9
|
+
* - **React Hook Form**: Integração completa com React Hook Form
|
|
10
|
+
* - **Validação**: Suporte a validação via Zod ou outras bibliotecas
|
|
11
|
+
* - **Composição**: Múltiplos sub-componentes para flexibilidade
|
|
12
|
+
* - **Acessível**: Estrutura semântica e mensagens de erro acessíveis
|
|
13
|
+
*
|
|
14
|
+
* ## Componentes
|
|
15
|
+
*
|
|
16
|
+
* - **Form**: Provider do formulário (FormProvider)
|
|
17
|
+
* - **FormField**: Campo controlado do formulário
|
|
18
|
+
* - **FormItem**: Container de item do formulário
|
|
19
|
+
* - **FormLabel**: Label do campo
|
|
20
|
+
* - **FormControl**: Controle do campo
|
|
21
|
+
* - **FormDescription**: Descrição do campo
|
|
22
|
+
* - **FormMessage**: Mensagem de erro/validação
|
|
23
|
+
*
|
|
24
|
+
* ## Uso Básico
|
|
25
|
+
*
|
|
26
|
+
* ```tsx
|
|
27
|
+
* import { useForm } from "react-hook-form";
|
|
28
|
+
* import { zodResolver } from "@hookform/resolvers/zod";
|
|
29
|
+
* import { Form, FormField, FormItem, FormLabel, FormControl } from "@flowtomic/ui/components/atoms/forms/form";
|
|
30
|
+
* import { Input } from "@flowtomic/ui/components/atoms/forms/input";
|
|
31
|
+
*
|
|
32
|
+
* function MyComponent() {
|
|
33
|
+
* const form = useForm({
|
|
34
|
+
* resolver: zodResolver(schema),
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* return (
|
|
38
|
+
* <Form {...form}>
|
|
39
|
+
* <FormField
|
|
40
|
+
* control={form.control}
|
|
41
|
+
* name="email"
|
|
42
|
+
* render={({ field }) => (
|
|
43
|
+
* <FormItem>
|
|
44
|
+
* <FormLabel>E-mail</FormLabel>
|
|
45
|
+
* <FormControl>
|
|
46
|
+
* <Input {...field} />
|
|
47
|
+
* </FormControl>
|
|
48
|
+
* </FormItem>
|
|
49
|
+
* )}
|
|
50
|
+
* />
|
|
51
|
+
* </Form>
|
|
52
|
+
* );
|
|
53
|
+
* }
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @see [React Hook Form](https://react-hook-form.com/) para mais detalhes
|
|
57
|
+
*/
|
|
1
58
|
import type * as LabelPrimitive from "@radix-ui/react-label";
|
|
2
59
|
import { Slot } from "@radix-ui/react-slot";
|
|
3
60
|
import * as React from "react";
|
|
4
61
|
import { type ControllerProps, type FieldPath, type FieldValues } from "react-hook-form";
|
|
62
|
+
/**
|
|
63
|
+
* Componente Form (FormProvider) para gerenciamento de formulários.
|
|
64
|
+
*/
|
|
5
65
|
declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: import("react-hook-form").FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
|
|
6
66
|
export type FormFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = ControllerProps<TFieldValues, TName>;
|
|
7
67
|
declare const FormField: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/forms/form/form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,cAAc,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EAIjB,MAAM,iBAAiB,CAAC;AAIzB,QAAA,MAAM,IAAI,4MAAe,CAAC;AAW1B,MAAM,MAAM,cAAc,CACxB,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,IAC7D,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAEzC,QAAA,MAAM,SAAS;KACb,YAAY,SAAS,WAAW,gBAChC,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,0CAGpC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC;;CAMrC,CAAC;AAIF,QAAA,MAAM,YAAY;;;;;;;;;;;CAqBjB,CAAC;AAQF,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;CAAG;AAErE,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAQvD;kBARQ,QAAQ;;;AAYjB,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC;CAAG;AAE3F,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,2CAYzD;kBAZQ,SAAS;;;AAgBlB,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC;CAAG;AAE9E,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,2CAYlD;kBAZQ,WAAW;;;AAgBpB,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;CAAG;AAE1E,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,2CAWrE;kBAXQ,eAAe;;;AAexB,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;CAAG;AAEtE,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,kDAkB7D;kBAlBQ,WAAW;;;AAsBpB,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,EACT,YAAY,GACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/forms/form/form.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH,OAAO,KAAK,KAAK,cAAc,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EAIjB,MAAM,iBAAiB,CAAC;AAIzB;;GAEG;AACH,QAAA,MAAM,IAAI,4MAAe,CAAC;AAW1B,MAAM,MAAM,cAAc,CACxB,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,IAC7D,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAEzC,QAAA,MAAM,SAAS;KACb,YAAY,SAAS,WAAW,gBAChC,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,0CAGpC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC;;CAMrC,CAAC;AAIF,QAAA,MAAM,YAAY;;;;;;;;;;;CAqBjB,CAAC;AAQF,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;CAAG;AAErE,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAQvD;kBARQ,QAAQ;;;AAYjB,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC;CAAG;AAE3F,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,2CAYzD;kBAZQ,SAAS;;;AAgBlB,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC;CAAG;AAE9E,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,2CAYlD;kBAZQ,WAAW;;;AAgBpB,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;CAAG;AAE1E,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,2CAWrE;kBAXQ,eAAe;;;AAexB,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;CAAG;AAEtE,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,kDAkB7D;kBAlBQ,WAAW;;;AAsBpB,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,EACT,YAAY,GACb,CAAC"}
|
|
@@ -4,6 +4,9 @@ import * as React from "react";
|
|
|
4
4
|
import { Controller, FormProvider, useFormContext, useFormState, } from "react-hook-form";
|
|
5
5
|
import { cn } from "@/lib/utils";
|
|
6
6
|
import { Label } from "../label/label";
|
|
7
|
+
/**
|
|
8
|
+
* Componente Form (FormProvider) para gerenciamento de formulários.
|
|
9
|
+
*/
|
|
7
10
|
const Form = FormProvider;
|
|
8
11
|
const FormFieldContext = React.createContext({});
|
|
9
12
|
const FormField = ({ ...props }) => {
|
|
@@ -1,14 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* # Input Component
|
|
3
|
+
*
|
|
4
|
+
* O componente `Input` é um campo de entrada de texto usado para coletar dados do usuário.
|
|
5
|
+
* Ele fornece uma interface consistente e acessível para entrada de texto com suporte a
|
|
6
|
+
* labels, mensagens de erro e texto de ajuda.
|
|
7
|
+
*
|
|
8
|
+
* ## Características Principais
|
|
9
|
+
*
|
|
10
|
+
* - **Variantes Visuais**: Suporta variantes (default, error, success) para feedback visual
|
|
11
|
+
* - **Tamanhos Flexíveis**: Três tamanhos disponíveis (default, sm, lg)
|
|
12
|
+
* - **Labels e Helpers**: Suporta label opcional e texto de ajuda
|
|
13
|
+
* - **Validação Visual**: Exibe mensagens de erro com estilo destrutivo
|
|
14
|
+
* - **Acessível**: Suporta labels associados e navegação por teclado
|
|
15
|
+
* - **Customizável**: Pode ser estilizado via className e props HTML padrão
|
|
16
|
+
*
|
|
17
|
+
* ## Variantes
|
|
18
|
+
*
|
|
19
|
+
* - **`default`**: Variante padrão com borda normal
|
|
20
|
+
* - **`error`**: Variante para estados de erro (borda vermelha)
|
|
21
|
+
* - **`success`**: Variante para estados de sucesso (borda verde)
|
|
22
|
+
*
|
|
23
|
+
* ## Tamanhos
|
|
24
|
+
*
|
|
25
|
+
* - **`default`**: Tamanho padrão (h-10)
|
|
26
|
+
* - **`sm`**: Tamanho pequeno (h-9)
|
|
27
|
+
* - **`lg`**: Tamanho grande (h-11)
|
|
28
|
+
*
|
|
29
|
+
* ## Uso Básico
|
|
30
|
+
*
|
|
31
|
+
* ```tsx
|
|
32
|
+
* import { Input } from "@flowtomic/ui/components/atoms/forms/input";
|
|
33
|
+
*
|
|
34
|
+
* function MyComponent() {
|
|
35
|
+
* return (
|
|
36
|
+
* <Input
|
|
37
|
+
* label="Nome"
|
|
38
|
+
* placeholder="Digite seu nome"
|
|
39
|
+
* helperText="Este campo é obrigatório"
|
|
40
|
+
* />
|
|
41
|
+
* );
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* ## Com Validação
|
|
46
|
+
*
|
|
47
|
+
* ```tsx
|
|
48
|
+
* <Input
|
|
49
|
+
* label="Email"
|
|
50
|
+
* type="email"
|
|
51
|
+
* error="Email inválido"
|
|
52
|
+
* variant="error"
|
|
53
|
+
* />
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* ## Acessibilidade
|
|
57
|
+
*
|
|
58
|
+
* - Label associado automaticamente via htmlFor/id
|
|
59
|
+
* - Suporta aria-* attributes para melhor acessibilidade
|
|
60
|
+
* - Mensagens de erro são exibidas como texto acessível
|
|
61
|
+
* - Suporta navegação por teclado
|
|
62
|
+
*
|
|
63
|
+
* @see [Label Component](../label/label.tsx) para labels customizados
|
|
64
|
+
*/
|
|
1
65
|
import { type VariantProps } from "class-variance-authority";
|
|
2
66
|
import React from "react";
|
|
67
|
+
/**
|
|
68
|
+
* Variantes de estilo do Input usando class-variance-authority.
|
|
69
|
+
* Define as classes CSS para diferentes variantes e tamanhos.
|
|
70
|
+
*/
|
|
3
71
|
declare const inputVariants: (props?: ({
|
|
4
72
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
5
|
-
variant?: "default" | "
|
|
73
|
+
variant?: "default" | "error" | "success" | null | undefined;
|
|
6
74
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
75
|
+
/**
|
|
76
|
+
* Props do componente Input.
|
|
77
|
+
*
|
|
78
|
+
* @interface InputProps
|
|
79
|
+
* @extends {Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">}
|
|
80
|
+
* @extends {VariantProps<typeof inputVariants>}
|
|
81
|
+
*
|
|
82
|
+
* @property {string} [label] - Label opcional exibido acima do input
|
|
83
|
+
* @property {string} [error] - Mensagem de erro exibida abaixo do input
|
|
84
|
+
* @property {string} [helperText] - Texto de ajuda exibido abaixo do input (quando não há erro)
|
|
85
|
+
* @property {'default' | 'error' | 'success'} [variant='default'] - Variante visual do input
|
|
86
|
+
* @property {'default' | 'sm' | 'lg'} [size='default'] - Tamanho do input
|
|
87
|
+
* @property {string} [className] - Classes CSS adicionais
|
|
88
|
+
*/
|
|
7
89
|
export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">, VariantProps<typeof inputVariants> {
|
|
90
|
+
/** Label opcional exibido acima do input */
|
|
8
91
|
label?: string;
|
|
92
|
+
/** Mensagem de erro exibida abaixo do input */
|
|
9
93
|
error?: string;
|
|
94
|
+
/** Texto de ajuda exibido abaixo do input (quando não há erro) */
|
|
10
95
|
helperText?: string;
|
|
11
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Componente Input para entrada de texto.
|
|
99
|
+
*
|
|
100
|
+
* @component
|
|
101
|
+
* @param {InputProps} props - Props do componente
|
|
102
|
+
* @returns {JSX.Element} Elemento Input renderizado
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```tsx
|
|
106
|
+
* <Input label="Nome" placeholder="Digite seu nome" />
|
|
107
|
+
* <Input label="Email" type="email" error="Email inválido" variant="error" />
|
|
108
|
+
* <Input label="Senha" type="password" helperText="Mínimo 8 caracteres" />
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
12
111
|
declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
13
112
|
export { Input, inputVariants };
|
|
14
113
|
//# sourceMappingURL=input.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/forms/input/input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,QAAA,MAAM,aAAa;;;8EAoBlB,CAAC;AAEF,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,EAC/D,YAAY,CAAC,OAAO,aAAa,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,QAAA,MAAM,KAAK,qFA0BV,CAAC;AAGF,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/forms/input/input.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;GAGG;AACH,QAAA,MAAM,aAAa;;;8EAoBlB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,EAC/D,YAAY,CAAC,OAAO,aAAa,CAAC;IACpC,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,KAAK,qFA0BV,CAAC;AAGF,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1,7 +1,75 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* # Input Component
|
|
4
|
+
*
|
|
5
|
+
* O componente `Input` é um campo de entrada de texto usado para coletar dados do usuário.
|
|
6
|
+
* Ele fornece uma interface consistente e acessível para entrada de texto com suporte a
|
|
7
|
+
* labels, mensagens de erro e texto de ajuda.
|
|
8
|
+
*
|
|
9
|
+
* ## Características Principais
|
|
10
|
+
*
|
|
11
|
+
* - **Variantes Visuais**: Suporta variantes (default, error, success) para feedback visual
|
|
12
|
+
* - **Tamanhos Flexíveis**: Três tamanhos disponíveis (default, sm, lg)
|
|
13
|
+
* - **Labels e Helpers**: Suporta label opcional e texto de ajuda
|
|
14
|
+
* - **Validação Visual**: Exibe mensagens de erro com estilo destrutivo
|
|
15
|
+
* - **Acessível**: Suporta labels associados e navegação por teclado
|
|
16
|
+
* - **Customizável**: Pode ser estilizado via className e props HTML padrão
|
|
17
|
+
*
|
|
18
|
+
* ## Variantes
|
|
19
|
+
*
|
|
20
|
+
* - **`default`**: Variante padrão com borda normal
|
|
21
|
+
* - **`error`**: Variante para estados de erro (borda vermelha)
|
|
22
|
+
* - **`success`**: Variante para estados de sucesso (borda verde)
|
|
23
|
+
*
|
|
24
|
+
* ## Tamanhos
|
|
25
|
+
*
|
|
26
|
+
* - **`default`**: Tamanho padrão (h-10)
|
|
27
|
+
* - **`sm`**: Tamanho pequeno (h-9)
|
|
28
|
+
* - **`lg`**: Tamanho grande (h-11)
|
|
29
|
+
*
|
|
30
|
+
* ## Uso Básico
|
|
31
|
+
*
|
|
32
|
+
* ```tsx
|
|
33
|
+
* import { Input } from "@flowtomic/ui/components/atoms/forms/input";
|
|
34
|
+
*
|
|
35
|
+
* function MyComponent() {
|
|
36
|
+
* return (
|
|
37
|
+
* <Input
|
|
38
|
+
* label="Nome"
|
|
39
|
+
* placeholder="Digite seu nome"
|
|
40
|
+
* helperText="Este campo é obrigatório"
|
|
41
|
+
* />
|
|
42
|
+
* );
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* ## Com Validação
|
|
47
|
+
*
|
|
48
|
+
* ```tsx
|
|
49
|
+
* <Input
|
|
50
|
+
* label="Email"
|
|
51
|
+
* type="email"
|
|
52
|
+
* error="Email inválido"
|
|
53
|
+
* variant="error"
|
|
54
|
+
* />
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* ## Acessibilidade
|
|
58
|
+
*
|
|
59
|
+
* - Label associado automaticamente via htmlFor/id
|
|
60
|
+
* - Suporta aria-* attributes para melhor acessibilidade
|
|
61
|
+
* - Mensagens de erro são exibidas como texto acessível
|
|
62
|
+
* - Suporta navegação por teclado
|
|
63
|
+
*
|
|
64
|
+
* @see [Label Component](../label/label.tsx) para labels customizados
|
|
65
|
+
*/
|
|
2
66
|
import { cva } from "class-variance-authority";
|
|
3
67
|
import React from "react";
|
|
4
68
|
import { cn } from "@/lib/utils";
|
|
69
|
+
/**
|
|
70
|
+
* Variantes de estilo do Input usando class-variance-authority.
|
|
71
|
+
* Define as classes CSS para diferentes variantes e tamanhos.
|
|
72
|
+
*/
|
|
5
73
|
const inputVariants = cva("flex w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", {
|
|
6
74
|
variants: {
|
|
7
75
|
size: {
|
|
@@ -20,6 +88,20 @@ const inputVariants = cva("flex w-full rounded-md border border-input bg-transpa
|
|
|
20
88
|
variant: "default",
|
|
21
89
|
},
|
|
22
90
|
});
|
|
91
|
+
/**
|
|
92
|
+
* Componente Input para entrada de texto.
|
|
93
|
+
*
|
|
94
|
+
* @component
|
|
95
|
+
* @param {InputProps} props - Props do componente
|
|
96
|
+
* @returns {JSX.Element} Elemento Input renderizado
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```tsx
|
|
100
|
+
* <Input label="Nome" placeholder="Digite seu nome" />
|
|
101
|
+
* <Input label="Email" type="email" error="Email inválido" variant="error" />
|
|
102
|
+
* <Input label="Senha" type="password" helperText="Mínimo 8 caracteres" />
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
23
105
|
const Input = React.forwardRef(({ className, size, variant, label, error, helperText, id, ...props }, ref) => {
|
|
24
106
|
const generatedId = React.useId();
|
|
25
107
|
const inputId = id || generatedId;
|