@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.
Files changed (175) hide show
  1. package/dist/components/_reference/shadcn-ai/prompt-input.d.ts +48 -0
  2. package/dist/components/_reference/shadcn-ai/prompt-input.d.ts.map +1 -0
  3. package/dist/components/_reference/shadcn-ai/prompt-input.js +67 -0
  4. package/dist/components/atoms/actions/badge/badge.d.ts +97 -1
  5. package/dist/components/atoms/actions/badge/badge.d.ts.map +1 -1
  6. package/dist/components/atoms/actions/badge/badge.js +83 -0
  7. package/dist/components/atoms/actions/button/button.d.ts +134 -1
  8. package/dist/components/atoms/actions/button/button.d.ts.map +1 -1
  9. package/dist/components/atoms/actions/button/button.js +106 -0
  10. package/dist/components/atoms/actions/context-menu/context-menu.d.ts +79 -0
  11. package/dist/components/atoms/actions/context-menu/context-menu.d.ts.map +1 -1
  12. package/dist/components/atoms/actions/context-menu/context-menu.js +55 -0
  13. package/dist/components/atoms/actions/dropdown-menu/dropdown-menu.d.ts +51 -3
  14. package/dist/components/atoms/actions/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  15. package/dist/components/atoms/actions/dropdown-menu/dropdown-menu.js +51 -3
  16. package/dist/components/atoms/animation/encrypted-text/encrypted-text.d.ts.map +1 -1
  17. package/dist/components/atoms/animation/encrypted-text/encrypted-text.js +3 -1
  18. package/dist/components/atoms/feedback/alert/alert.d.ts +77 -12
  19. package/dist/components/atoms/feedback/alert/alert.d.ts.map +1 -1
  20. package/dist/components/atoms/feedback/alert/alert.js +64 -12
  21. package/dist/components/atoms/feedback/alert-dialog/alert-dialog.d.ts +2 -2
  22. package/dist/components/atoms/feedback/dialog/dialog.d.ts +66 -8
  23. package/dist/components/atoms/feedback/dialog/dialog.d.ts.map +1 -1
  24. package/dist/components/atoms/feedback/dialog/dialog.js +66 -8
  25. package/dist/components/atoms/feedback/hover-card/hover-card.d.ts +45 -5
  26. package/dist/components/atoms/feedback/hover-card/hover-card.d.ts.map +1 -1
  27. package/dist/components/atoms/feedback/hover-card/hover-card.js +45 -5
  28. package/dist/components/atoms/feedback/inline-citation/inline-citation.d.ts +53 -2
  29. package/dist/components/atoms/feedback/inline-citation/inline-citation.d.ts.map +1 -1
  30. package/dist/components/atoms/feedback/inline-citation/inline-citation.js +53 -2
  31. package/dist/components/atoms/feedback/popover/popover.d.ts +78 -0
  32. package/dist/components/atoms/feedback/popover/popover.d.ts.map +1 -1
  33. package/dist/components/atoms/feedback/popover/popover.js +64 -0
  34. package/dist/components/atoms/feedback/sheet/sheet.d.ts +90 -0
  35. package/dist/components/atoms/feedback/sheet/sheet.d.ts.map +1 -1
  36. package/dist/components/atoms/feedback/sheet/sheet.js +78 -0
  37. package/dist/components/atoms/feedback/sonner/sonner.d.ts +66 -6
  38. package/dist/components/atoms/feedback/sonner/sonner.d.ts.map +1 -1
  39. package/dist/components/atoms/feedback/sonner/sonner.js +66 -6
  40. package/dist/components/atoms/feedback/tooltip/tooltip.d.ts +54 -4
  41. package/dist/components/atoms/feedback/tooltip/tooltip.d.ts.map +1 -1
  42. package/dist/components/atoms/feedback/tooltip/tooltip.js +63 -5
  43. package/dist/components/atoms/forms/checkbox/checkbox.d.ts +62 -4
  44. package/dist/components/atoms/forms/checkbox/checkbox.d.ts.map +1 -1
  45. package/dist/components/atoms/forms/checkbox/checkbox.js +58 -4
  46. package/dist/components/atoms/forms/field/field.d.ts +67 -0
  47. package/dist/components/atoms/forms/field/field.d.ts.map +1 -1
  48. package/dist/components/atoms/forms/field/field.js +47 -0
  49. package/dist/components/atoms/forms/form/form.d.ts +60 -0
  50. package/dist/components/atoms/forms/form/form.d.ts.map +1 -1
  51. package/dist/components/atoms/forms/form/form.js +3 -0
  52. package/dist/components/atoms/forms/input/input.d.ts +100 -1
  53. package/dist/components/atoms/forms/input/input.d.ts.map +1 -1
  54. package/dist/components/atoms/forms/input/input.js +82 -0
  55. package/dist/components/atoms/forms/input-otp/input-otp.d.ts +62 -0
  56. package/dist/components/atoms/forms/input-otp/input-otp.d.ts.map +1 -1
  57. package/dist/components/atoms/forms/input-otp/input-otp.js +50 -0
  58. package/dist/components/atoms/forms/label/label.d.ts +54 -0
  59. package/dist/components/atoms/forms/label/label.d.ts.map +1 -1
  60. package/dist/components/atoms/forms/label/label.js +50 -0
  61. package/dist/components/atoms/forms/radio-group/radio-group.d.ts +47 -0
  62. package/dist/components/atoms/forms/radio-group/radio-group.d.ts.map +1 -1
  63. package/dist/components/atoms/forms/radio-group/radio-group.js +43 -0
  64. package/dist/components/atoms/forms/select/select.d.ts +62 -0
  65. package/dist/components/atoms/forms/select/select.d.ts.map +1 -1
  66. package/dist/components/atoms/forms/select/select.js +62 -0
  67. package/dist/components/atoms/forms/slider/slider.d.ts +60 -0
  68. package/dist/components/atoms/forms/slider/slider.d.ts.map +1 -1
  69. package/dist/components/atoms/forms/slider/slider.js +53 -1
  70. package/dist/components/atoms/forms/switch/switch.d.ts +67 -0
  71. package/dist/components/atoms/forms/switch/switch.d.ts.map +1 -1
  72. package/dist/components/atoms/forms/switch/switch.js +63 -0
  73. package/dist/components/atoms/forms/textarea/textarea.d.ts +66 -0
  74. package/dist/components/atoms/forms/textarea/textarea.d.ts.map +1 -1
  75. package/dist/components/atoms/forms/textarea/textarea.js +13 -0
  76. package/dist/components/atoms/forms/toggle/toggle.d.ts +65 -1
  77. package/dist/components/atoms/forms/toggle/toggle.d.ts.map +1 -1
  78. package/dist/components/atoms/forms/toggle/toggle.js +58 -0
  79. package/dist/components/atoms/index.d.ts +0 -2
  80. package/dist/components/atoms/index.d.ts.map +1 -1
  81. package/dist/components/atoms/index.js +0 -1
  82. package/dist/components/atoms/layout/accordion/accordion.d.ts +84 -0
  83. package/dist/components/atoms/layout/accordion/accordion.d.ts.map +1 -1
  84. package/dist/components/atoms/layout/accordion/accordion.js +72 -0
  85. package/dist/components/atoms/layout/aspect-ratio/aspect-ratio.d.ts +54 -0
  86. package/dist/components/atoms/layout/aspect-ratio/aspect-ratio.d.ts.map +1 -1
  87. package/dist/components/atoms/layout/aspect-ratio/aspect-ratio.js +49 -0
  88. package/dist/components/atoms/layout/collapsible/collapsible.d.ts +47 -5
  89. package/dist/components/atoms/layout/collapsible/collapsible.d.ts.map +1 -1
  90. package/dist/components/atoms/layout/collapsible/collapsible.js +47 -5
  91. package/dist/components/atoms/layout/drawer/drawer.d.ts +55 -0
  92. package/dist/components/atoms/layout/drawer/drawer.d.ts.map +1 -1
  93. package/dist/components/atoms/layout/index.d.ts +2 -0
  94. package/dist/components/atoms/layout/index.d.ts.map +1 -1
  95. package/dist/components/atoms/layout/index.js +1 -0
  96. package/dist/components/atoms/layout/resizable/resizable.d.ts +77 -2
  97. package/dist/components/atoms/layout/resizable/resizable.d.ts.map +1 -1
  98. package/dist/components/atoms/layout/resizable/resizable.js +68 -0
  99. package/dist/components/atoms/layout/scroll-area/scroll-area.d.ts +34 -2
  100. package/dist/components/atoms/layout/scroll-area/scroll-area.d.ts.map +1 -1
  101. package/dist/components/atoms/layout/scroll-area/scroll-area.js +35 -3
  102. package/dist/components/atoms/layout/sidebar/sidebar.d.ts +66 -1
  103. package/dist/components/atoms/layout/sidebar/sidebar.d.ts.map +1 -1
  104. package/dist/components/atoms/layout/sidebar/sidebar.js +66 -0
  105. package/dist/components/atoms/layout/toggle-group/toggle-group.d.ts +73 -0
  106. package/dist/components/atoms/layout/toggle-group/toggle-group.d.ts.map +1 -1
  107. package/dist/components/atoms/layout/toggle-group/toggle-group.js +57 -0
  108. package/dist/components/atoms/layout/widget-resize-handle/index.d.ts +3 -0
  109. package/dist/components/atoms/layout/widget-resize-handle/index.d.ts.map +1 -0
  110. package/dist/components/atoms/layout/widget-resize-handle/index.js +1 -0
  111. package/dist/components/atoms/layout/widget-resize-handle/widget-resize-handle.d.ts +98 -0
  112. package/dist/components/atoms/layout/widget-resize-handle/widget-resize-handle.d.ts.map +1 -0
  113. package/dist/components/atoms/layout/widget-resize-handle/widget-resize-handle.js +117 -0
  114. package/dist/components/atoms/navigation/command/command.d.ts +7 -7
  115. package/dist/components/molecules/data-display/chat-message/chat-message.d.ts +39 -0
  116. package/dist/components/molecules/data-display/chat-message/chat-message.d.ts.map +1 -0
  117. package/dist/components/molecules/data-display/chat-message/chat-message.js +85 -0
  118. package/dist/components/molecules/data-display/chat-message/index.d.ts +3 -0
  119. package/dist/components/molecules/data-display/chat-message/index.d.ts.map +1 -0
  120. package/dist/components/molecules/data-display/chat-message/index.js +1 -0
  121. package/dist/components/molecules/data-display/message/message.d.ts +22 -6
  122. package/dist/components/molecules/data-display/message/message.d.ts.map +1 -1
  123. package/dist/components/molecules/data-display/message/message.js +192 -8
  124. package/dist/components/molecules/draggable-widget/draggable-widget.d.ts.map +1 -1
  125. package/dist/components/molecules/draggable-widget/draggable-widget.js +6 -2
  126. package/dist/components/molecules/feedback/edit-chat-message-modal/edit-chat-message-modal.d.ts +20 -0
  127. package/dist/components/molecules/feedback/edit-chat-message-modal/edit-chat-message-modal.d.ts.map +1 -0
  128. package/dist/components/molecules/feedback/edit-chat-message-modal/edit-chat-message-modal.js +65 -0
  129. package/dist/components/molecules/feedback/edit-chat-message-modal/index.d.ts +3 -0
  130. package/dist/components/molecules/feedback/edit-chat-message-modal/index.d.ts.map +1 -0
  131. package/dist/components/molecules/feedback/edit-chat-message-modal/index.js +1 -0
  132. package/dist/components/molecules/forms/autocomplete/autocomplete-section.d.ts.map +1 -1
  133. package/dist/components/molecules/forms/autocomplete/autocomplete-section.js +3 -1
  134. package/dist/components/molecules/forms/chat-input/chat-input.d.ts +46 -0
  135. package/dist/components/molecules/forms/chat-input/chat-input.d.ts.map +1 -0
  136. package/dist/components/molecules/forms/chat-input/chat-input.js +57 -0
  137. package/dist/components/molecules/forms/chat-input/index.d.ts +3 -0
  138. package/dist/components/molecules/forms/chat-input/index.d.ts.map +1 -0
  139. package/dist/components/molecules/forms/chat-input/index.js +1 -0
  140. package/dist/components/molecules/forms/item/item.d.ts +1 -1
  141. package/dist/components/molecules/forms/text-editor/text-editor.d.ts.map +1 -1
  142. package/dist/components/molecules/index.d.ts +6 -0
  143. package/dist/components/molecules/index.d.ts.map +1 -1
  144. package/dist/components/molecules/index.js +3 -0
  145. package/dist/components/molecules/navigation/menu-dock/menu-dock.js +1 -1
  146. package/dist/components/organisms/chat-log/chat-log.d.ts +30 -0
  147. package/dist/components/organisms/chat-log/chat-log.d.ts.map +1 -0
  148. package/dist/components/organisms/chat-log/chat-log.js +21 -0
  149. package/dist/components/organisms/chat-log/index.d.ts +3 -0
  150. package/dist/components/organisms/chat-log/index.d.ts.map +1 -0
  151. package/dist/components/organisms/chat-log/index.js +1 -0
  152. package/dist/components/organisms/document-editor/document-editor.d.ts.map +1 -1
  153. package/dist/components/organisms/document-editor/document-editor.js +2 -2
  154. package/dist/components/organisms/draggable-dashboard-grid/draggable-dashboard-grid.d.ts.map +1 -1
  155. package/dist/components/organisms/draggable-dashboard-grid/draggable-dashboard-grid.js +1 -1
  156. package/dist/components/organisms/form-layout/form-layout.d.ts.map +1 -1
  157. package/dist/components/organisms/form-layout/form-layout.js +3 -1
  158. package/dist/components/organisms/genealogy-canvas/genealogy-canvas.d.ts +0 -5
  159. package/dist/components/organisms/genealogy-canvas/genealogy-canvas.d.ts.map +1 -1
  160. package/dist/components/organisms/genealogy-canvas/genealogy-canvas.js +50 -55
  161. package/dist/components/organisms/index.d.ts +2 -0
  162. package/dist/components/organisms/index.d.ts.map +1 -1
  163. package/dist/components/organisms/index.js +1 -0
  164. package/dist/components/organisms/model-selector/model-selector.d.ts +1 -1
  165. package/dist/components/organisms/prompt-input/index.d.ts +1 -1
  166. package/dist/components/organisms/prompt-input/index.d.ts.map +1 -1
  167. package/dist/components/organisms/prompt-input/index.js +1 -1
  168. package/dist/components/organisms/prompt-input/prompt-input.d.ts +22 -7
  169. package/dist/components/organisms/prompt-input/prompt-input.d.ts.map +1 -1
  170. package/dist/components/organisms/prompt-input/prompt-input.js +26 -17
  171. package/dist/index.js +501 -501
  172. package/dist/test/setup.d.ts +2 -0
  173. package/dist/test/setup.d.ts.map +1 -0
  174. package/dist/test/setup.js +43 -0
  175. package/package.json +18 -2
@@ -1,3 +1,68 @@
1
+ /**
2
+ * # Sidebar Component
3
+ *
4
+ * O componente `Sidebar` é usado para criar uma barra lateral navegável
5
+ * que pode ser expandida/colapsada. Suporta modos desktop e mobile,
6
+ * com persistência de estado via cookies.
7
+ *
8
+ * ## Características Principais
9
+ *
10
+ * - **Responsivo**: Adapta-se automaticamente para mobile (usa Sheet) e desktop
11
+ * - **Estados**: Suporta expanded e collapsed
12
+ * - **Persistência**: Salva estado em cookies
13
+ * - **Atalho de Teclado**: Cmd/Ctrl + B para toggle
14
+ * - **Variantes**: sidebar, floating, inset
15
+ * - **Collapsible**: offcanvas, icon, none
16
+ * - **Composição**: Múltiplos sub-componentes para flexibilidade
17
+ *
18
+ * ## Componentes Principais
19
+ *
20
+ * - **SidebarProvider**: Provider do contexto do sidebar
21
+ * - **Sidebar**: Container principal do sidebar
22
+ * - **SidebarTrigger**: Botão para toggle do sidebar
23
+ * - **SidebarHeader**: Cabeçalho do sidebar
24
+ * - **SidebarContent**: Conteúdo do sidebar
25
+ * - **SidebarFooter**: Rodapé do sidebar
26
+ * - **SidebarGroup**: Grupo de itens
27
+ * - **SidebarGroupLabel**: Label do grupo
28
+ * - **SidebarGroupContent**: Conteúdo do grupo
29
+ * - **SidebarMenu**: Menu do sidebar
30
+ * - **SidebarMenuItem**: Item do menu
31
+ * - **SidebarMenuButton**: Botão do item do menu
32
+ * - **useSidebar**: Hook para acessar contexto do sidebar
33
+ *
34
+ * ## Uso Básico
35
+ *
36
+ * ```tsx
37
+ * import { SidebarProvider, Sidebar, SidebarContent, SidebarTrigger } from "@flowtomic/ui/components/atoms/layout/sidebar";
38
+ *
39
+ * function MyComponent() {
40
+ * return (
41
+ * <SidebarProvider>
42
+ * <Sidebar>
43
+ * <SidebarContent>
44
+ * <SidebarMenu>
45
+ * <SidebarMenuItem>
46
+ * <SidebarMenuButton>Item 1</SidebarMenuButton>
47
+ * </SidebarMenuItem>
48
+ * </SidebarMenu>
49
+ * </SidebarContent>
50
+ * </Sidebar>
51
+ * <SidebarTrigger />
52
+ * </SidebarProvider>
53
+ * );
54
+ * }
55
+ * ```
56
+ *
57
+ * ## Acessibilidade
58
+ *
59
+ * - Suporta navegação por teclado
60
+ * - Atalho de teclado (Cmd/Ctrl + B)
61
+ * - Suporta leitores de tela
62
+ * - Tooltips para itens colapsados
63
+ *
64
+ * @see [Sidebar Component Stories](./sidebar.stories.tsx) para exemplos de uso
65
+ */
1
66
  import { type VariantProps } from "class-variance-authority";
2
67
  import * as React from "react";
3
68
  import { Button } from "../../actions/button/button";
@@ -106,7 +171,7 @@ declare namespace SidebarMenuItem {
106
171
  var displayName: string;
107
172
  }
108
173
  declare const sidebarMenuButtonVariants: (props?: ({
109
- variant?: "default" | "outline" | null | undefined;
174
+ variant?: "outline" | "default" | null | undefined;
110
175
  size?: "default" | "sm" | "lg" | null | undefined;
111
176
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
112
177
  export interface SidebarMenuButtonProps extends React.ComponentProps<"button">, VariantProps<typeof sidebarMenuButtonVariants> {
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/layout/sidebar/sidebar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/layout/sidebar/sidebar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAIH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAQ9D,OAAO,EAEL,cAAc,EAGf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAShD,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AAIF,iBAAS,UAAU,wBAOlB;AAED,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAED,iBAAS,eAAe,CAAC,EACvB,WAAkB,EAClB,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,WAAW,EACzB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,oBAAoB,2CA2EtB;kBAnFQ,eAAe;;;AAuFxB,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IAC/D,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IAC3C,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;CAC7C;AAED,iBAAS,OAAO,CAAC,EACf,IAAa,EACb,OAAmB,EACnB,WAAyB,EACzB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,YAAY,2CAuFd;kBA9FQ,OAAO;;;AAkGhB,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC;CAAG;AAEnF,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,2CAoB5E;kBApBQ,cAAc;;;AAwBvB,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;CAAG;AAE1E,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CAY/D;kBAZQ,YAAY;;;AAgBrB,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC;CAAG;AAEhF,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CAS/D;kBATQ,YAAY;;;AAarB,MAAM,WAAW,kBAAmB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;CAAG;AAE1E,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,2CASjE;kBATQ,aAAa;;;AAatB,MAAM,WAAW,kBAAmB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;CAAG;AAE1E,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,2CASjE;kBATQ,aAAa;;;AAatB,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC;CAAG;AAExF,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,qBAAqB,2CASvE;kBATQ,gBAAgB;;;AAazB,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;CAAG;AAE3E,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,2CAYnE;kBAZQ,cAAc;;;AAgBvB,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;CAAG;AAEzE,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CAS/D;kBATQ,YAAY;;;AAarB,MAAM,WAAW,sBAAuB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,OAAe,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,2CAe1F;kBAfQ,iBAAiB;;;AAmB1B,MAAM,WAAW,wBAAyB,SAAQ,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;CAAG;AAEhF,iBAAS,mBAAmB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,wBAAwB,2CAS7E;kBATQ,mBAAmB;;;AAa5B,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;CAAG;AAEvE,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,2CAS7D;kBATQ,WAAW;;;AAapB,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;CAAG;AAE3E,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,2CASrE;kBATQ,eAAe;;;AAaxB,QAAA,MAAM,yBAAyB;;;8EAoB9B,CAAC;AAEF,MAAM,WAAW,sBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EACpC,YAAY,CAAC,OAAO,yBAAyB,CAAC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,CAAC;CAChE;AAED,iBAAS,iBAAiB,CAAC,EACzB,OAAe,EACf,QAAgB,EAChB,OAAmB,EACnB,IAAgB,EAChB,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,sBAAsB,2CAoCxB;kBA5CQ,iBAAiB;;;AAgD1B,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,UAAU,GACX,CAAC"}
@@ -1,4 +1,69 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * # Sidebar Component
4
+ *
5
+ * O componente `Sidebar` é usado para criar uma barra lateral navegável
6
+ * que pode ser expandida/colapsada. Suporta modos desktop e mobile,
7
+ * com persistência de estado via cookies.
8
+ *
9
+ * ## Características Principais
10
+ *
11
+ * - **Responsivo**: Adapta-se automaticamente para mobile (usa Sheet) e desktop
12
+ * - **Estados**: Suporta expanded e collapsed
13
+ * - **Persistência**: Salva estado em cookies
14
+ * - **Atalho de Teclado**: Cmd/Ctrl + B para toggle
15
+ * - **Variantes**: sidebar, floating, inset
16
+ * - **Collapsible**: offcanvas, icon, none
17
+ * - **Composição**: Múltiplos sub-componentes para flexibilidade
18
+ *
19
+ * ## Componentes Principais
20
+ *
21
+ * - **SidebarProvider**: Provider do contexto do sidebar
22
+ * - **Sidebar**: Container principal do sidebar
23
+ * - **SidebarTrigger**: Botão para toggle do sidebar
24
+ * - **SidebarHeader**: Cabeçalho do sidebar
25
+ * - **SidebarContent**: Conteúdo do sidebar
26
+ * - **SidebarFooter**: Rodapé do sidebar
27
+ * - **SidebarGroup**: Grupo de itens
28
+ * - **SidebarGroupLabel**: Label do grupo
29
+ * - **SidebarGroupContent**: Conteúdo do grupo
30
+ * - **SidebarMenu**: Menu do sidebar
31
+ * - **SidebarMenuItem**: Item do menu
32
+ * - **SidebarMenuButton**: Botão do item do menu
33
+ * - **useSidebar**: Hook para acessar contexto do sidebar
34
+ *
35
+ * ## Uso Básico
36
+ *
37
+ * ```tsx
38
+ * import { SidebarProvider, Sidebar, SidebarContent, SidebarTrigger } from "@flowtomic/ui/components/atoms/layout/sidebar";
39
+ *
40
+ * function MyComponent() {
41
+ * return (
42
+ * <SidebarProvider>
43
+ * <Sidebar>
44
+ * <SidebarContent>
45
+ * <SidebarMenu>
46
+ * <SidebarMenuItem>
47
+ * <SidebarMenuButton>Item 1</SidebarMenuButton>
48
+ * </SidebarMenuItem>
49
+ * </SidebarMenu>
50
+ * </SidebarContent>
51
+ * </Sidebar>
52
+ * <SidebarTrigger />
53
+ * </SidebarProvider>
54
+ * );
55
+ * }
56
+ * ```
57
+ *
58
+ * ## Acessibilidade
59
+ *
60
+ * - Suporta navegação por teclado
61
+ * - Atalho de teclado (Cmd/Ctrl + B)
62
+ * - Suporta leitores de tela
63
+ * - Tooltips para itens colapsados
64
+ *
65
+ * @see [Sidebar Component Stories](./sidebar.stories.tsx) para exemplos de uso
66
+ */
2
67
  import { useIsMobile } from "@flowtomic/logic";
3
68
  import { Slot } from "@radix-ui/react-slot";
4
69
  import { cva } from "class-variance-authority";
@@ -37,6 +102,7 @@ function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: set
37
102
  else {
38
103
  _setOpen(openState);
39
104
  }
105
+ // biome-ignore lint/suspicious/noDocumentCookie: Necessário para persistir o estado do sidebar
40
106
  document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
41
107
  }, [setOpenProp, open]);
42
108
  const toggleSidebar = React.useCallback(() => {
@@ -1,18 +1,91 @@
1
+ /**
2
+ * # ToggleGroup Component
3
+ *
4
+ * O componente `ToggleGroup` é usado para agrupar múltiplos toggles em um grupo
5
+ * onde apenas um ou múltiplos podem estar selecionados. É baseado em Radix UI
6
+ * 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
+ * - **Modos**: Suporta single (apenas um selecionado) ou multiple (múltiplos selecionados)
12
+ * - **Variantes**: Herda variantes do Toggle (default, outline)
13
+ * - **Tamanhos**: Herda tamanhos do Toggle (default, sm, lg)
14
+ * - **Espaçamento**: Suporta espaçamento customizado entre itens
15
+ * - **Composição**: ToggleGroup + ToggleGroupItem
16
+ *
17
+ * ## Uso Básico
18
+ *
19
+ * ```tsx
20
+ * import { ToggleGroup, ToggleGroupItem } from "@flowtomic/ui/components/atoms/layout/toggle-group";
21
+ *
22
+ * function MyComponent() {
23
+ * return (
24
+ * <ToggleGroup type="single">
25
+ * <ToggleGroupItem value="option1">Option 1</ToggleGroupItem>
26
+ * <ToggleGroupItem value="option2">Option 2</ToggleGroupItem>
27
+ * </ToggleGroup>
28
+ * );
29
+ * }
30
+ * ```
31
+ *
32
+ * ## Acessibilidade
33
+ *
34
+ * - Suporta navegação por teclado (Tab, Enter, Espaço, setas)
35
+ * - Segue padrões WAI-ARIA via Radix UI
36
+ * - Suporta leitores de tela
37
+ * - Foco gerenciado automaticamente
38
+ *
39
+ * @see [Radix UI Toggle Group](https://www.radix-ui.com/primitives/docs/components/toggle-group) para mais detalhes
40
+ * @see [Toggle Component](../forms/toggle/toggle.tsx) para mais detalhes sobre variantes e tamanhos
41
+ */
1
42
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
2
43
  import type { VariantProps } from "class-variance-authority";
3
44
  import * as React from "react";
4
45
  import { toggleVariants } from "../../forms/toggle/toggle";
46
+ /**
47
+ * Props do componente ToggleGroup.
48
+ *
49
+ * @property {'single' | 'multiple'} type - Tipo de seleção (single ou multiple)
50
+ * @property {'default' | 'outline'} [variant='default'] - Variante visual do toggle group
51
+ * @property {'default' | 'sm' | 'lg'} [size='default'] - Tamanho do toggle group
52
+ * @property {number} [spacing=0] - Espaçamento entre itens em pixels
53
+ */
5
54
  export type ToggleGroupProps = React.ComponentProps<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants> & {
55
+ /** Espaçamento entre itens em pixels */
6
56
  spacing?: number;
7
57
  className?: string;
8
58
  children?: React.ReactNode;
9
59
  };
60
+ /**
61
+ * ToggleGroup - Container principal do toggle group.
62
+ *
63
+ * Componente usado para agrupar múltiplos toggles.
64
+ *
65
+ * @param {ToggleGroupProps} props - Props do componente
66
+ * @returns {JSX.Element} Componente ToggleGroup
67
+ */
10
68
  declare function ToggleGroup({ className, variant, size, spacing, children, ...props }: ToggleGroupProps): import("react/jsx-runtime").JSX.Element;
11
69
  declare namespace ToggleGroup {
12
70
  var displayName: string;
13
71
  }
72
+ /**
73
+ * Props do componente ToggleGroupItem.
74
+ *
75
+ * @property {string} value - Valor único do item
76
+ * @property {'default' | 'outline'} [variant] - Variante visual (herda do ToggleGroup se não fornecido)
77
+ * @property {'default' | 'sm' | 'lg'} [size] - Tamanho (herda do ToggleGroup se não fornecido)
78
+ */
14
79
  export interface ToggleGroupItemProps extends React.ComponentProps<typeof ToggleGroupPrimitive.Item>, VariantProps<typeof toggleVariants> {
15
80
  }
81
+ /**
82
+ * ToggleGroupItem - Item individual do toggle group.
83
+ *
84
+ * Componente usado para representar um item no toggle group.
85
+ *
86
+ * @param {ToggleGroupItemProps} props - Props do componente
87
+ * @returns {JSX.Element} Componente ToggleGroupItem
88
+ */
16
89
  declare function ToggleGroupItem({ className, children, variant, size, ...props }: ToggleGroupItemProps): import("react/jsx-runtime").JSX.Element;
17
90
  declare namespace ToggleGroupItem {
18
91
  var displayName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/layout/toggle-group/toggle-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAY3D,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GACnF,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEJ,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAW,EACX,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAmBlB;kBA1BQ,WAAW;;;AA8BpB,MAAM,WAAW,oBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,EAC5D,YAAY,CAAC,OAAO,cAAc,CAAC;CAAG;AAE1C,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,2CAuB9F;kBAvBQ,eAAe;;;AA2BxB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/layout/toggle-group/toggle-group.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAY3D;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GACnF,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEJ;;;;;;;GAOG;AACH,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAW,EACX,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAmBlB;kBA1BQ,WAAW;;;AA8BpB;;;;;;GAMG;AACH,MAAM,WAAW,oBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,EAC5D,YAAY,CAAC,OAAO,cAAc,CAAC;CAAG;AAE1C;;;;;;;GAOG;AACH,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,2CAuB9F;kBAvBQ,eAAe;;;AA2BxB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC"}
@@ -1,4 +1,45 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * # ToggleGroup Component
4
+ *
5
+ * O componente `ToggleGroup` é usado para agrupar múltiplos toggles em um grupo
6
+ * onde apenas um ou múltiplos podem estar selecionados. É baseado em Radix UI
7
+ * para garantir acessibilidade completa.
8
+ *
9
+ * ## Características Principais
10
+ *
11
+ * - **Acessível**: Baseado em Radix UI com suporte completo a leitores de tela
12
+ * - **Modos**: Suporta single (apenas um selecionado) ou multiple (múltiplos selecionados)
13
+ * - **Variantes**: Herda variantes do Toggle (default, outline)
14
+ * - **Tamanhos**: Herda tamanhos do Toggle (default, sm, lg)
15
+ * - **Espaçamento**: Suporta espaçamento customizado entre itens
16
+ * - **Composição**: ToggleGroup + ToggleGroupItem
17
+ *
18
+ * ## Uso Básico
19
+ *
20
+ * ```tsx
21
+ * import { ToggleGroup, ToggleGroupItem } from "@flowtomic/ui/components/atoms/layout/toggle-group";
22
+ *
23
+ * function MyComponent() {
24
+ * return (
25
+ * <ToggleGroup type="single">
26
+ * <ToggleGroupItem value="option1">Option 1</ToggleGroupItem>
27
+ * <ToggleGroupItem value="option2">Option 2</ToggleGroupItem>
28
+ * </ToggleGroup>
29
+ * );
30
+ * }
31
+ * ```
32
+ *
33
+ * ## Acessibilidade
34
+ *
35
+ * - Suporta navegação por teclado (Tab, Enter, Espaço, setas)
36
+ * - Segue padrões WAI-ARIA via Radix UI
37
+ * - Suporta leitores de tela
38
+ * - Foco gerenciado automaticamente
39
+ *
40
+ * @see [Radix UI Toggle Group](https://www.radix-ui.com/primitives/docs/components/toggle-group) para mais detalhes
41
+ * @see [Toggle Component](../forms/toggle/toggle.tsx) para mais detalhes sobre variantes e tamanhos
42
+ */
2
43
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
3
44
  import * as React from "react";
4
45
  import { cn } from "@/lib/utils";
@@ -8,10 +49,26 @@ const ToggleGroupContext = React.createContext({
8
49
  variant: "default",
9
50
  spacing: 0,
10
51
  });
52
+ /**
53
+ * ToggleGroup - Container principal do toggle group.
54
+ *
55
+ * Componente usado para agrupar múltiplos toggles.
56
+ *
57
+ * @param {ToggleGroupProps} props - Props do componente
58
+ * @returns {JSX.Element} Componente ToggleGroup
59
+ */
11
60
  function ToggleGroup({ className, variant, size, spacing = 0, children, ...props }) {
12
61
  return (_jsx(ToggleGroupPrimitive.Root, { "data-slot": "toggle-group", "data-variant": variant, "data-size": size, "data-spacing": spacing, style: { "--gap": spacing }, className: cn("group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs", className), ...props, children: _jsx(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children: children }) }));
13
62
  }
14
63
  ToggleGroup.displayName = "ToggleGroup";
64
+ /**
65
+ * ToggleGroupItem - Item individual do toggle group.
66
+ *
67
+ * Componente usado para representar um item no toggle group.
68
+ *
69
+ * @param {ToggleGroupItemProps} props - Props do componente
70
+ * @returns {JSX.Element} Componente ToggleGroupItem
71
+ */
15
72
  function ToggleGroupItem({ className, children, variant, size, ...props }) {
16
73
  const context = React.useContext(ToggleGroupContext);
17
74
  return (_jsx(ToggleGroupPrimitive.Item, { "data-slot": "toggle-group-item", "data-variant": context.variant || variant, "data-size": context.size || size, "data-spacing": context.spacing, className: cn(toggleVariants({
@@ -0,0 +1,3 @@
1
+ export type { WidgetResizeHandleProps } from "./widget-resize-handle";
2
+ export { WidgetResizeHandle } from "./widget-resize-handle";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/layout/widget-resize-handle/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1 @@
1
+ export { WidgetResizeHandle } from "./widget-resize-handle";
@@ -0,0 +1,98 @@
1
+ /**
2
+ * # WidgetResizeHandle Component
3
+ *
4
+ * O componente `WidgetResizeHandle` é usado para redimensionar widgets
5
+ * arrastando o canto inferior direito. Usa snap to grid para alinhamento
6
+ * preciso e suporta limites mínimos e máximos.
7
+ *
8
+ * ## Características Principais
9
+ *
10
+ * - **Snap to Grid**: Alinhamento automático à grade
11
+ * - **Limites**: Suporta min/max width e height
12
+ * - **Visual**: Handle visual que aparece no hover
13
+ * - **Drag to Resize**: Arrastar para redimensionar
14
+ *
15
+ * ## Uso Básico
16
+ *
17
+ * ```tsx
18
+ * import { WidgetResizeHandle } from "@flowtomic/ui/components/atoms/layout/widget-resize-handle";
19
+ *
20
+ * function MyWidget({ widgetId, width, height, onResize }) {
21
+ * return (
22
+ * <div className="relative group">
23
+ * <div>Conteúdo do widget</div>
24
+ * <WidgetResizeHandle
25
+ * widgetId={widgetId}
26
+ * currentWidth={width}
27
+ * currentHeight={height}
28
+ * onResize={onResize}
29
+ * minWidth={2}
30
+ * minHeight={2}
31
+ * maxWidth={12}
32
+ * maxHeight={20}
33
+ * />
34
+ * </div>
35
+ * );
36
+ * }
37
+ * ```
38
+ *
39
+ * ## Acessibilidade
40
+ *
41
+ * - Usa aria-label para leitores de tela
42
+ * - Suporta navegação por teclado
43
+ * - Feedback visual claro
44
+ */
45
+ export interface WidgetResizeHandleProps {
46
+ /**
47
+ * ID do widget a ser redimensionado
48
+ */
49
+ widgetId: string;
50
+ /**
51
+ * Largura atual do widget em unidades de grade
52
+ */
53
+ currentWidth: number;
54
+ /**
55
+ * Altura atual do widget em unidades de grade
56
+ */
57
+ currentHeight: number;
58
+ /**
59
+ * Callback quando widget é redimensionado
60
+ */
61
+ onResize: (widgetId: string, w: number, h: number) => void;
62
+ /**
63
+ * Tamanho mínimo do widget (largura)
64
+ */
65
+ minWidth?: number;
66
+ /**
67
+ * Tamanho mínimo do widget (altura)
68
+ */
69
+ minHeight?: number;
70
+ /**
71
+ * Tamanho máximo do widget (largura)
72
+ */
73
+ maxWidth?: number;
74
+ /**
75
+ * Tamanho máximo do widget (altura)
76
+ */
77
+ maxHeight?: number;
78
+ /**
79
+ * Tamanho da célula do grid em pixels
80
+ */
81
+ cellSize?: number;
82
+ /**
83
+ * Gap entre células em pixels
84
+ */
85
+ gap?: number;
86
+ /**
87
+ * Classe CSS adicional
88
+ */
89
+ className?: string;
90
+ }
91
+ /**
92
+ * Handle para redimensionar widget
93
+ *
94
+ * Componente puro de UI que permite redimensionar widgets arrastando
95
+ * o canto inferior direito. Usa snap to grid para alinhamento.
96
+ */
97
+ export declare function WidgetResizeHandle({ widgetId, currentWidth, currentHeight, onResize, minWidth, minHeight, maxWidth, maxHeight, cellSize, gap, className, }: WidgetResizeHandleProps): import("react/jsx-runtime").JSX.Element;
98
+ //# sourceMappingURL=widget-resize-handle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-resize-handle.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/layout/widget-resize-handle/widget-resize-handle.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAMH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,QAAY,EACZ,SAAa,EACb,QAAa,EACb,SAAc,EACd,QAAa,EACb,GAAQ,EACR,SAAS,GACV,EAAE,uBAAuB,2CAgGzB"}
@@ -0,0 +1,117 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * # WidgetResizeHandle Component
4
+ *
5
+ * O componente `WidgetResizeHandle` é usado para redimensionar widgets
6
+ * arrastando o canto inferior direito. Usa snap to grid para alinhamento
7
+ * preciso e suporta limites mínimos e máximos.
8
+ *
9
+ * ## Características Principais
10
+ *
11
+ * - **Snap to Grid**: Alinhamento automático à grade
12
+ * - **Limites**: Suporta min/max width e height
13
+ * - **Visual**: Handle visual que aparece no hover
14
+ * - **Drag to Resize**: Arrastar para redimensionar
15
+ *
16
+ * ## Uso Básico
17
+ *
18
+ * ```tsx
19
+ * import { WidgetResizeHandle } from "@flowtomic/ui/components/atoms/layout/widget-resize-handle";
20
+ *
21
+ * function MyWidget({ widgetId, width, height, onResize }) {
22
+ * return (
23
+ * <div className="relative group">
24
+ * <div>Conteúdo do widget</div>
25
+ * <WidgetResizeHandle
26
+ * widgetId={widgetId}
27
+ * currentWidth={width}
28
+ * currentHeight={height}
29
+ * onResize={onResize}
30
+ * minWidth={2}
31
+ * minHeight={2}
32
+ * maxWidth={12}
33
+ * maxHeight={20}
34
+ * />
35
+ * </div>
36
+ * );
37
+ * }
38
+ * ```
39
+ *
40
+ * ## Acessibilidade
41
+ *
42
+ * - Usa aria-label para leitores de tela
43
+ * - Suporta navegação por teclado
44
+ * - Feedback visual claro
45
+ */
46
+ import { Maximize2 } from "lucide-react";
47
+ import { useCallback, useEffect, useRef, useState } from "react";
48
+ import { cn } from "@/lib/utils";
49
+ /**
50
+ * Handle para redimensionar widget
51
+ *
52
+ * Componente puro de UI que permite redimensionar widgets arrastando
53
+ * o canto inferior direito. Usa snap to grid para alinhamento.
54
+ */
55
+ export function WidgetResizeHandle({ widgetId, currentWidth, currentHeight, onResize, minWidth = 2, minHeight = 2, maxWidth = 12, maxHeight = 20, cellSize = 50, gap = 16, className, }) {
56
+ const [isResizing, setIsResizing] = useState(false);
57
+ const [startPos, setStartPos] = useState({ x: 0, y: 0 });
58
+ const [startSize, setStartSize] = useState({ w: currentWidth, h: currentHeight });
59
+ const handleRef = useRef(null);
60
+ const handleMouseDown = useCallback((e) => {
61
+ e.preventDefault();
62
+ e.stopPropagation();
63
+ setIsResizing(true);
64
+ setStartPos({ x: e.clientX, y: e.clientY });
65
+ setStartSize({ w: currentWidth, h: currentHeight });
66
+ }, [currentWidth, currentHeight]);
67
+ useEffect(() => {
68
+ if (!isResizing)
69
+ return;
70
+ const handleMouseMove = (e) => {
71
+ const deltaX = e.clientX - startPos.x;
72
+ const deltaY = e.clientY - startPos.y;
73
+ // Calcula novo tamanho baseado no movimento do mouse
74
+ // Usa snap to grid
75
+ const totalCellSize = cellSize + gap;
76
+ const deltaW = Math.round(deltaX / totalCellSize);
77
+ const deltaH = Math.round(deltaY / totalCellSize);
78
+ // Se não houver mudança significativa, não atualiza
79
+ if (deltaW === 0 && deltaH === 0)
80
+ return;
81
+ const newW = Math.max(minWidth, Math.min(maxWidth, startSize.w + deltaW));
82
+ const newH = Math.max(minHeight, Math.min(maxHeight, startSize.h + deltaH));
83
+ // Atualiza apenas se mudou
84
+ if (newW !== currentWidth || newH !== currentHeight) {
85
+ onResize(widgetId, newW, newH);
86
+ }
87
+ };
88
+ const handleMouseUp = () => {
89
+ setIsResizing(false);
90
+ };
91
+ document.addEventListener("mousemove", handleMouseMove);
92
+ document.addEventListener("mouseup", handleMouseUp);
93
+ return () => {
94
+ document.removeEventListener("mousemove", handleMouseMove);
95
+ document.removeEventListener("mouseup", handleMouseUp);
96
+ };
97
+ }, [
98
+ isResizing,
99
+ startPos,
100
+ startSize,
101
+ currentWidth,
102
+ currentHeight,
103
+ widgetId,
104
+ minWidth,
105
+ minHeight,
106
+ maxWidth,
107
+ maxHeight,
108
+ cellSize,
109
+ gap,
110
+ onResize,
111
+ ]);
112
+ return (_jsx("button", { type: "button", ref: handleRef, onMouseDown: handleMouseDown, className: cn("absolute bottom-0 right-0 w-6 h-6", "flex items-center justify-center", "bg-primary/20 border border-primary/40 rounded-tl-md", "cursor-nwse-resize", "opacity-0 group-hover:opacity-100 transition-opacity", "hover:bg-primary/30", isResizing && "opacity-100 bg-primary/40", className), tabIndex: 0, "aria-label": "Redimensionar widget", onKeyDown: (e) => {
113
+ if (e.key === "Enter" || e.key === " ") {
114
+ e.preventDefault();
115
+ }
116
+ }, children: _jsx(Maximize2, { className: "w-3 h-3 text-primary" }) }));
117
+ }
@@ -23,7 +23,7 @@ declare const Command: React.ForwardRefExoticComponent<Omit<{
23
23
  ref?: React.Ref<HTMLDivElement>;
24
24
  } & {
25
25
  asChild?: boolean;
26
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
26
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
27
27
  label?: string;
28
28
  shouldFilter?: boolean;
29
29
  filter?: (value: string, search: string, keywords?: string[]) => number;
@@ -48,7 +48,7 @@ declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<
48
48
  ref?: React.Ref<HTMLInputElement>;
49
49
  } & {
50
50
  asChild?: boolean;
51
- }, "asChild" | "key" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "value" | "onChange"> & {
51
+ }, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
52
52
  value?: string;
53
53
  onValueChange?: (search: string) => void;
54
54
  } & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
@@ -61,7 +61,7 @@ declare const CommandList: React.ForwardRefExoticComponent<Omit<{
61
61
  ref?: React.Ref<HTMLDivElement>;
62
62
  } & {
63
63
  asChild?: boolean;
64
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
64
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
65
65
  label?: string;
66
66
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
67
67
  /**
@@ -73,7 +73,7 @@ declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
73
73
  ref?: React.Ref<HTMLDivElement>;
74
74
  } & {
75
75
  asChild?: boolean;
76
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
76
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
77
77
  /**
78
78
  * CommandGroup - Grupo do command
79
79
  */
@@ -83,7 +83,7 @@ declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
83
83
  ref?: React.Ref<HTMLDivElement>;
84
84
  } & {
85
85
  asChild?: boolean;
86
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
86
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "value" | "heading"> & {
87
87
  heading?: React.ReactNode;
88
88
  value?: string;
89
89
  forceMount?: boolean;
@@ -95,7 +95,7 @@ declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<R
95
95
  ref?: React.Ref<HTMLDivElement>;
96
96
  } & {
97
97
  asChild?: boolean;
98
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
98
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
99
99
  alwaysRender?: boolean;
100
100
  } & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
101
101
  /**
@@ -107,7 +107,7 @@ declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
107
107
  ref?: React.Ref<HTMLDivElement>;
108
108
  } & {
109
109
  asChild?: boolean;
110
- }, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
110
+ }, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "onSelect" | "disabled" | "value"> & {
111
111
  disabled?: boolean;
112
112
  onSelect?: (value: string) => void;
113
113
  value?: string;