@flowtomic/ui 0.1.2 → 0.1.5

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 (107) hide show
  1. package/dist/blocks/developer-panel/page.d.ts.map +1 -1
  2. package/dist/blocks/developer-panel/page.js +2 -2
  3. package/dist/components/atoms/actions/badge/badge.d.ts +1 -1
  4. package/dist/components/atoms/actions/button/button.d.ts +2 -2
  5. package/dist/components/atoms/animation/encrypted-text/encrypted-text.d.ts +57 -0
  6. package/dist/components/atoms/animation/encrypted-text/encrypted-text.d.ts.map +1 -0
  7. package/dist/components/atoms/animation/encrypted-text/encrypted-text.js +104 -0
  8. package/dist/components/atoms/animation/encrypted-text/index.d.ts +3 -0
  9. package/dist/components/atoms/animation/encrypted-text/index.d.ts.map +1 -0
  10. package/dist/components/atoms/animation/encrypted-text/index.js +1 -0
  11. package/dist/components/atoms/animation/index.d.ts +2 -0
  12. package/dist/components/atoms/animation/index.d.ts.map +1 -1
  13. package/dist/components/atoms/animation/index.js +1 -0
  14. package/dist/components/atoms/data-display/index.d.ts +2 -0
  15. package/dist/components/atoms/data-display/index.d.ts.map +1 -1
  16. package/dist/components/atoms/data-display/index.js +1 -0
  17. package/dist/components/atoms/data-display/qr-code/index.d.ts +3 -0
  18. package/dist/components/atoms/data-display/qr-code/index.d.ts.map +1 -0
  19. package/dist/components/atoms/data-display/qr-code/index.js +1 -0
  20. package/dist/components/atoms/data-display/qr-code/qr-code.d.ts +18 -0
  21. package/dist/components/atoms/data-display/qr-code/qr-code.d.ts.map +1 -0
  22. package/dist/components/atoms/data-display/qr-code/qr-code.js +79 -0
  23. package/dist/components/atoms/feedback/tooltip/index.d.ts +1 -1
  24. package/dist/components/atoms/feedback/tooltip/index.d.ts.map +1 -1
  25. package/dist/components/atoms/feedback/tooltip/index.js +1 -1
  26. package/dist/components/atoms/feedback/tooltip/tooltip.d.ts +42 -5
  27. package/dist/components/atoms/feedback/tooltip/tooltip.d.ts.map +1 -1
  28. package/dist/components/atoms/feedback/tooltip/tooltip.js +188 -5
  29. package/dist/components/atoms/forms/autocomplete/autocomplete-context.d.ts +29 -0
  30. package/dist/components/atoms/forms/autocomplete/autocomplete-context.d.ts.map +1 -0
  31. package/dist/components/atoms/forms/autocomplete/autocomplete-context.js +10 -0
  32. package/dist/components/atoms/forms/autocomplete/autocomplete-item.d.ts +16 -0
  33. package/dist/components/atoms/forms/autocomplete/autocomplete-item.d.ts.map +1 -0
  34. package/dist/components/atoms/forms/autocomplete/autocomplete-item.js +48 -0
  35. package/dist/components/atoms/forms/autocomplete/autocomplete-section.d.ts +14 -0
  36. package/dist/components/atoms/forms/autocomplete/autocomplete-section.d.ts.map +1 -0
  37. package/dist/components/atoms/forms/autocomplete/autocomplete-section.js +13 -0
  38. package/dist/components/atoms/forms/autocomplete/autocomplete.d.ts +13 -9
  39. package/dist/components/atoms/forms/autocomplete/autocomplete.d.ts.map +1 -1
  40. package/dist/components/atoms/forms/autocomplete/autocomplete.js +295 -87
  41. package/dist/components/atoms/forms/autocomplete/index.d.ts +6 -0
  42. package/dist/components/atoms/forms/autocomplete/index.d.ts.map +1 -1
  43. package/dist/components/atoms/forms/autocomplete/index.js +3 -0
  44. package/dist/components/atoms/forms/index.d.ts +0 -2
  45. package/dist/components/atoms/forms/index.d.ts.map +1 -1
  46. package/dist/components/atoms/forms/index.js +0 -1
  47. package/dist/components/atoms/forms/input/input.d.ts +1 -1
  48. package/dist/components/atoms/forms/toggle/toggle.d.ts +1 -1
  49. package/dist/components/atoms/layout/sidebar/sidebar.d.ts +1 -1
  50. package/dist/components/atoms/navigation/command/command.d.ts +13 -13
  51. package/dist/components/atoms/navigation/tabs/tabs.js +2 -2
  52. package/dist/components/molecules/auth/auth-navigation-link/auth-navigation-link.d.ts +1 -11
  53. package/dist/components/molecules/auth/auth-navigation-link/auth-navigation-link.d.ts.map +1 -1
  54. package/dist/components/molecules/auth/auth-navigation-link/auth-navigation-link.js +2 -3
  55. package/dist/components/molecules/forms/autocomplete/autocomplete-context.d.ts +16 -0
  56. package/dist/components/molecules/forms/autocomplete/autocomplete-context.d.ts.map +1 -0
  57. package/dist/components/molecules/forms/autocomplete/autocomplete-context.js +14 -0
  58. package/dist/components/molecules/forms/autocomplete/autocomplete-item.d.ts +23 -0
  59. package/dist/components/molecules/forms/autocomplete/autocomplete-item.d.ts.map +1 -0
  60. package/dist/components/molecules/forms/autocomplete/autocomplete-item.js +29 -0
  61. package/dist/components/molecules/forms/autocomplete/autocomplete-section.d.ts +19 -0
  62. package/dist/components/molecules/forms/autocomplete/autocomplete-section.d.ts.map +1 -0
  63. package/dist/components/molecules/forms/autocomplete/autocomplete-section.js +13 -0
  64. package/dist/components/molecules/forms/autocomplete/autocomplete.d.ts +33 -0
  65. package/dist/components/molecules/forms/autocomplete/autocomplete.d.ts.map +1 -0
  66. package/dist/components/molecules/forms/autocomplete/autocomplete.js +101 -0
  67. package/dist/components/molecules/forms/autocomplete/index.d.ts +9 -0
  68. package/dist/components/molecules/forms/autocomplete/index.d.ts.map +1 -0
  69. package/dist/components/molecules/forms/autocomplete/index.js +4 -0
  70. package/dist/components/molecules/forms/item/item.d.ts +1 -1
  71. package/dist/components/molecules/forms/text-editor/index.d.ts +3 -0
  72. package/dist/components/molecules/forms/text-editor/index.d.ts.map +1 -0
  73. package/dist/components/molecules/forms/text-editor/index.js +1 -0
  74. package/dist/components/molecules/forms/text-editor/text-editor.d.ts +33 -0
  75. package/dist/components/molecules/forms/text-editor/text-editor.d.ts.map +1 -0
  76. package/dist/components/molecules/forms/text-editor/text-editor.js +211 -0
  77. package/dist/components/molecules/index.d.ts +4 -2
  78. package/dist/components/molecules/index.d.ts.map +1 -1
  79. package/dist/components/molecules/index.js +2 -1
  80. package/dist/components/molecules/navigation/menu-dock/menu-dock.d.ts +5 -0
  81. package/dist/components/molecules/navigation/menu-dock/menu-dock.d.ts.map +1 -1
  82. package/dist/components/molecules/navigation/menu-dock/menu-dock.js +103 -10
  83. package/dist/components/molecules/typography/index.d.ts +0 -2
  84. package/dist/components/molecules/typography/index.d.ts.map +1 -1
  85. package/dist/components/molecules/typography/index.js +1 -1
  86. package/dist/components/organisms/context/context.d.ts +4 -4
  87. package/dist/components/organisms/document-editor/document-editor.d.ts +43 -0
  88. package/dist/components/organisms/document-editor/document-editor.d.ts.map +1 -0
  89. package/dist/components/organisms/document-editor/document-editor.js +144 -0
  90. package/dist/components/organisms/document-editor/index.d.ts +3 -0
  91. package/dist/components/organisms/document-editor/index.d.ts.map +1 -0
  92. package/dist/components/organisms/document-editor/index.js +1 -0
  93. package/dist/components/organisms/form-layout/form-layout.d.ts +111 -0
  94. package/dist/components/organisms/form-layout/form-layout.d.ts.map +1 -0
  95. package/dist/components/organisms/form-layout/form-layout.js +83 -0
  96. package/dist/components/organisms/form-layout/index.d.ts +2 -0
  97. package/dist/components/organisms/form-layout/index.d.ts.map +1 -0
  98. package/dist/components/organisms/form-layout/index.js +1 -0
  99. package/dist/components/organisms/index.d.ts +4 -0
  100. package/dist/components/organisms/index.d.ts.map +1 -1
  101. package/dist/components/organisms/index.js +2 -0
  102. package/dist/components/organisms/model-selector/model-selector.d.ts +1 -1
  103. package/dist/index.js +623 -526
  104. package/dist/styles/globals.css +489 -0
  105. package/dist/styles/theme.css +1364 -0
  106. package/dist/styles/typography.css +430 -0
  107. package/package.json +45 -18
@@ -1 +1 @@
1
- {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/blocks/developer-panel/page.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAM5E,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAE7B;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAE/B;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAEzC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAE/B;;OAEG;IACH,iBAAiB,CAAC,EAAE;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACnE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;QACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;KAClC,CAAC;CACH;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,UAAU,EACV,eAAe,EACf,OAAe,EACf,KAAY,EACZ,UAAe,EACf,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,EAAE,mBAAmB,2CAiSrB"}
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/blocks/developer-panel/page.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAkB5E,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAE7B;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAE/B;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAEzC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAE/B;;OAEG;IACH,iBAAiB,CAAC,EAAE;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACnE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;QACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;KAClC,CAAC;CACH;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,UAAU,EACV,eAAe,EACf,OAAe,EACf,KAAY,EACZ,UAAe,EACf,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,EAAE,mBAAmB,2CAySrB"}
@@ -6,10 +6,10 @@
6
6
  */
7
7
  "use client";
8
8
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
9
- import { ScriptEditor } from "@/components/organisms";
10
- import { Badge, Button, Card, CardContent, CardDescription, CardHeader, CardTitle, Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/atoms";
11
9
  import { Code, Info } from "lucide-react";
12
10
  import { useState } from "react";
11
+ import { Badge, Button, Card, CardContent, CardDescription, CardHeader, CardTitle, Tabs, TabsContent, TabsList, TabsTrigger, } from "@/components/atoms";
12
+ import { ScriptEditor } from "@/components/organisms";
13
13
  export default function DeveloperPanel({ user, health, systemInfo, environmentInfo, loading = false, error = null, apiBaseUrl = "", onOpenSwagger, onOpenApiDocs, onOpenHealthCheck, scriptEditorProps, }) {
14
14
  const [copiedText, setCopiedText] = useState(null);
15
15
  const copyToClipboard = (text, label) => {
@@ -2,7 +2,7 @@ import { type VariantProps } from "class-variance-authority";
2
2
  import React from "react";
3
3
  declare const badgeVariants: (props?: ({
4
4
  variant?: "default" | "secondary" | "destructive" | "outline" | "success" | "warning" | "info" | null | undefined;
5
- size?: "sm" | "md" | "lg" | null | undefined;
5
+ size?: "md" | "lg" | "sm" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
8
8
  children: React.ReactNode;
@@ -2,8 +2,8 @@ import { type VariantProps } from "class-variance-authority";
2
2
  import { type Transition } from "motion/react";
3
3
  import * as React from "react";
4
4
  declare const buttonVariants: (props?: ({
5
- variant?: "default" | "secondary" | "destructive" | "outline" | "success" | "info" | "link" | "ghost" | "natural" | null | undefined;
6
- size?: "default" | "sm" | "lg" | "icon" | "icon-sm" | "icon-lg" | null | undefined;
5
+ variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "success" | "info" | "ghost" | "natural" | null | undefined;
6
+ size?: "lg" | "default" | "sm" | "icon" | "icon-sm" | "icon-lg" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  export interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "transition">, VariantProps<typeof buttonVariants> {
9
9
  asChild?: boolean;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * EncryptedText Component - Flowtomic UI
3
+ *
4
+ * Componente de texto que revela o texto gradualmente com efeito de texto criptografado/gibberish.
5
+ * Baseado em Aceternity UI - https://ui.aceternity.com/components/encrypted-text
6
+ * Usa motion/react para detecção de viewport e animações suaves
7
+ */
8
+ import type React from "react";
9
+ export interface EncryptedTextProps {
10
+ /**
11
+ * O texto a ser criptografado e revelado
12
+ */
13
+ text: string;
14
+ /**
15
+ * Classe CSS adicional
16
+ */
17
+ className?: string;
18
+ /**
19
+ * Tempo em milissegundos entre revelar cada caractere real subsequente.
20
+ * Menor é mais rápido. Padrão: 50ms por caractere.
21
+ * @default 50
22
+ */
23
+ revealDelayMs?: number;
24
+ /**
25
+ * Conjunto de caracteres customizado para usar no efeito gibberish.
26
+ * @default "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+-={}[];:,.<>/?"
27
+ */
28
+ charset?: string;
29
+ /**
30
+ * Tempo em milissegundos entre flips de gibberish para caracteres não revelados.
31
+ * Menor é mais jittery. Padrão: 50ms.
32
+ * @default 50
33
+ */
34
+ flipDelayMs?: number;
35
+ /**
36
+ * Classe CSS para estilizar caracteres criptografados/scrambled
37
+ */
38
+ encryptedClassName?: string;
39
+ /**
40
+ * Classe CSS para estilizar caracteres revelados
41
+ */
42
+ revealedClassName?: string;
43
+ }
44
+ /**
45
+ * EncryptedText - Componente de texto com efeito de revelação gradual
46
+ *
47
+ * @example
48
+ * ```tsx
49
+ * <EncryptedText
50
+ * text="Texto secreto"
51
+ * revealDelayMs={30}
52
+ * flipDelayMs={50}
53
+ * />
54
+ * ```
55
+ */
56
+ export declare const EncryptedText: React.FC<EncryptedTextProps>;
57
+ //# sourceMappingURL=encrypted-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encrypted-text.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/animation/encrypted-text/encrypted-text.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAoBD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgGtD,CAAC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * EncryptedText Component - Flowtomic UI
3
+ *
4
+ * Componente de texto que revela o texto gradualmente com efeito de texto criptografado/gibberish.
5
+ * Baseado em Aceternity UI - https://ui.aceternity.com/components/encrypted-text
6
+ * Usa motion/react para detecção de viewport e animações suaves
7
+ */
8
+ "use client";
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ import { motion, useInView } from "motion/react";
11
+ import { useEffect, useRef, useState } from "react";
12
+ import { cn } from "@/lib/utils";
13
+ const DEFAULT_CHARSET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+-={}[];:,.<>/?";
14
+ function generateRandomCharacter(charset) {
15
+ const index = Math.floor(Math.random() * charset.length);
16
+ return charset.charAt(index);
17
+ }
18
+ function generateGibberishPreservingSpaces(original, charset) {
19
+ if (!original)
20
+ return "";
21
+ let result = "";
22
+ for (let i = 0; i < original.length; i += 1) {
23
+ const ch = original[i];
24
+ result += ch === " " ? " " : generateRandomCharacter(charset);
25
+ }
26
+ return result;
27
+ }
28
+ /**
29
+ * EncryptedText - Componente de texto com efeito de revelação gradual
30
+ *
31
+ * @example
32
+ * ```tsx
33
+ * <EncryptedText
34
+ * text="Texto secreto"
35
+ * revealDelayMs={30}
36
+ * flipDelayMs={50}
37
+ * />
38
+ * ```
39
+ */
40
+ export const EncryptedText = ({ text, className, revealDelayMs = 50, charset = DEFAULT_CHARSET, flipDelayMs = 50, encryptedClassName, revealedClassName, }) => {
41
+ const ref = useRef(null);
42
+ const isInView = useInView(ref, { once: true });
43
+ const [revealCount, setRevealCount] = useState(0);
44
+ const animationFrameRef = useRef(null);
45
+ const startTimeRef = useRef(0);
46
+ const lastFlipTimeRef = useRef(0);
47
+ const scrambleCharsRef = useRef(text ? generateGibberishPreservingSpaces(text, charset).split("") : []);
48
+ useEffect(() => {
49
+ if (!isInView)
50
+ return;
51
+ // Reset state for a fresh animation whenever dependencies change
52
+ const initial = text ? generateGibberishPreservingSpaces(text, charset) : "";
53
+ scrambleCharsRef.current = initial.split("");
54
+ startTimeRef.current = performance.now();
55
+ lastFlipTimeRef.current = startTimeRef.current;
56
+ setRevealCount(0);
57
+ let isCancelled = false;
58
+ const update = (now) => {
59
+ if (isCancelled)
60
+ return;
61
+ const elapsedMs = now - startTimeRef.current;
62
+ const totalLength = text.length;
63
+ const currentRevealCount = Math.min(totalLength, Math.floor(elapsedMs / Math.max(1, revealDelayMs)));
64
+ setRevealCount(currentRevealCount);
65
+ if (currentRevealCount >= totalLength) {
66
+ return;
67
+ }
68
+ // Re-randomize unrevealed scramble characters on an interval
69
+ const timeSinceLastFlip = now - lastFlipTimeRef.current;
70
+ if (timeSinceLastFlip >= Math.max(0, flipDelayMs)) {
71
+ for (let index = 0; index < totalLength; index += 1) {
72
+ if (index >= currentRevealCount) {
73
+ if (text[index] !== " ") {
74
+ scrambleCharsRef.current[index] = generateRandomCharacter(charset);
75
+ }
76
+ else {
77
+ scrambleCharsRef.current[index] = " ";
78
+ }
79
+ }
80
+ }
81
+ lastFlipTimeRef.current = now;
82
+ }
83
+ animationFrameRef.current = requestAnimationFrame(update);
84
+ };
85
+ animationFrameRef.current = requestAnimationFrame(update);
86
+ return () => {
87
+ isCancelled = true;
88
+ if (animationFrameRef.current !== null) {
89
+ cancelAnimationFrame(animationFrameRef.current);
90
+ }
91
+ };
92
+ }, [isInView, text, revealDelayMs, charset, flipDelayMs]);
93
+ if (!text)
94
+ return null;
95
+ return (_jsx(motion.span, { ref: ref, className: cn(className), "aria-label": text, role: "text", children: text.split("").map((char, index) => {
96
+ const isRevealed = index < revealCount;
97
+ const displayChar = isRevealed
98
+ ? char
99
+ : char === " "
100
+ ? " "
101
+ : (scrambleCharsRef.current[index] ?? generateRandomCharacter(charset));
102
+ return (_jsx("span", { className: cn(isRevealed ? revealedClassName : encryptedClassName), children: displayChar }, index));
103
+ }) }));
104
+ };
@@ -0,0 +1,3 @@
1
+ export type { EncryptedTextProps } from "./encrypted-text";
2
+ export { EncryptedText } from "./encrypted-text";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/animation/encrypted-text/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1 @@
1
+ export { EncryptedText } from "./encrypted-text";
@@ -6,6 +6,8 @@ export type { Animated3DProps } from "./animated-3d";
6
6
  export { Animated3D } from "./animated-3d";
7
7
  export type { BackdropBlurProps } from "./backdrop-blur";
8
8
  export { BackdropBlur } from "./backdrop-blur";
9
+ export type { EncryptedTextProps } from "./encrypted-text";
10
+ export { EncryptedText } from "./encrypted-text";
9
11
  export type { LoaderProps } from "./loader";
10
12
  export { Loader } from "./loader";
11
13
  export type { ProgressProps } from "./progress";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/animation/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/animation/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  export { Animated3D } from "./animated-3d";
6
6
  export { BackdropBlur } from "./backdrop-blur";
7
+ export { EncryptedText } from "./encrypted-text";
7
8
  export { Loader } from "./loader";
8
9
  export { Progress } from "./progress";
9
10
  export { Shimmer } from "./shimmer";
@@ -4,4 +4,6 @@ export type { CarouselApi, CarouselContentProps, CarouselItemProps, CarouselNext
4
4
  export { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, useCarousel, } from "./carousel";
5
5
  export type { ChartConfig, ChartContainerProps, ChartLegendContentProps, ChartStyleProps, ChartTooltipContentProps, } from "./chart";
6
6
  export { ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, useChart, } from "./chart";
7
+ export type { QRCodeProps } from "./qr-code";
8
+ export { QRCode, qrCodeRootVariants } from "./qr-code";
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/data-display/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,EACf,wBAAwB,GACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,QAAQ,GACT,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/data-display/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,EACf,wBAAwB,GACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,QAAQ,GACT,MAAM,SAAS,CAAC;AAGjB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { Calendar, CalendarDayButton } from "./calendar";
2
2
  export { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, useCarousel, } from "./carousel";
3
3
  export { ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, useChart, } from "./chart";
4
+ export { QRCode, qrCodeRootVariants } from "./qr-code";
@@ -0,0 +1,3 @@
1
+ export type { QRCodeProps } from "./qr-code";
2
+ export { QRCode, qrCodeRootVariants } from "./qr-code";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/data-display/qr-code/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ export { QRCode, qrCodeRootVariants } from "./qr-code";
@@ -0,0 +1,18 @@
1
+ import * as React from "react";
2
+ import { type Options as QRCodeStylingOptions } from "qr-code-styling";
3
+ import { type VariantProps } from "class-variance-authority";
4
+ declare const qrCodeRootVariants: (props?: ({
5
+ size?: "md" | "lg" | null | undefined;
6
+ animated?: boolean | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export interface QRCodeProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children">, VariantProps<typeof qrCodeRootVariants> {
9
+ /** Valor (data) codificado no QR. */
10
+ value: string;
11
+ /** Opções extras da lib qr-code-styling para customização avançada. */
12
+ options?: QRCodeStylingOptions;
13
+ /** Rótulo de acessibilidade (aria-label). */
14
+ ariaLabel?: string;
15
+ }
16
+ export declare const QRCode: React.ForwardRefExoticComponent<QRCodeProps & React.RefAttributes<HTMLDivElement>>;
17
+ export { qrCodeRootVariants };
18
+ //# sourceMappingURL=qr-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-code.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/data-display/qr-code/qr-code.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAsB,EAAE,KAAK,OAAO,IAAI,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,QAAA,MAAM,kBAAkB;;;8EAkBvB,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,EAC5D,YAAY,CAAC,OAAO,kBAAkB,CAAC;IACzC,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0CD,eAAO,MAAM,MAAM,oFA8ElB,CAAC;AAGF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,79 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import QRCodeStyling from "qr-code-styling";
5
+ import { cva } from "class-variance-authority";
6
+ import { cn } from "@/lib/utils";
7
+ // Size tokens (visual wrapper padding + internal QR size)
8
+ const qrCodeRootVariants = cva("relative flex items-center justify-center select-none", // base classes
9
+ {
10
+ variants: {
11
+ size: {
12
+ md: "p-2",
13
+ lg: "p-3",
14
+ },
15
+ animated: {
16
+ true: "", // animation handled conditionally
17
+ false: "",
18
+ },
19
+ },
20
+ defaultVariants: {
21
+ size: "md",
22
+ animated: false,
23
+ },
24
+ });
25
+ // Map sizes to pixel dimensions for QR render
26
+ const QR_SIZE = {
27
+ md: { width: 96, height: 96 },
28
+ lg: { width: 128, height: 128 },
29
+ };
30
+ // Corner frame handle
31
+ const FrameHandle = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("size-3 rounded-tl border-t-2 border-l-2 border-[hsl(var(--primary))]", // use primary token
32
+ className), ...props })));
33
+ FrameHandle.displayName = "QRCodeFrameHandle";
34
+ // Animated gradient scan overlay (only when animated && !prefers-reduced-motion)
35
+ const GradientScan = React.forwardRef(({ className, style, ...props }, ref) => (_jsx("div", { ref: ref, "aria-hidden": true, className: cn("absolute bottom-0 h-1/2 w-full border-t border-[hsl(var(--primary))] bg-[hsl(var(--primary))/0.10]", "[mask-image:radial-gradient(52.19%_100%_at_50%_0%,_#000_0%,_rgba(0,0,0,0)_95.31%)]", "[webkit-mask-image:radial-gradient(52.19%_100%_at_50%_0%,_#000_0%,_rgba(0,0,0,0)_95.31%)]", className), style: style, ...props })));
36
+ GradientScan.displayName = "QRCodeGradientScan";
37
+ export const QRCode = React.forwardRef(({ value, options, size = "md", animated = false, className, ariaLabel = "QR code", ...props }, ref) => {
38
+ const containerRef = React.useRef(null);
39
+ const qrInstanceRef = React.useRef(null);
40
+ const mountedRef = React.useRef(false);
41
+ // Create instance once
42
+ React.useEffect(() => {
43
+ if (!containerRef.current || mountedRef.current)
44
+ return;
45
+ mountedRef.current = true;
46
+ const qrSize = size ?? "md";
47
+ qrInstanceRef.current = new QRCodeStyling({
48
+ width: QR_SIZE[qrSize].width,
49
+ height: QR_SIZE[qrSize].height,
50
+ data: value,
51
+ type: "svg",
52
+ // Sensible defaults (can be overridden via options)
53
+ margin: 0,
54
+ qrOptions: { typeNumber: 0, mode: "Byte", errorCorrectionLevel: "Q" },
55
+ imageOptions: { hideBackgroundDots: true, imageSize: 0.4 },
56
+ dotsOptions: { type: "rounded" },
57
+ backgroundOptions: { color: "transparent" },
58
+ ...options,
59
+ });
60
+ qrInstanceRef.current.append(containerRef.current);
61
+ }, [options, size, value]);
62
+ // Update when value/options/size change
63
+ React.useEffect(() => {
64
+ if (!qrInstanceRef.current)
65
+ return;
66
+ const qrSize = size ?? "md";
67
+ qrInstanceRef.current.update({
68
+ data: value,
69
+ width: QR_SIZE[qrSize].width,
70
+ height: QR_SIZE[qrSize].height,
71
+ ...options,
72
+ });
73
+ }, [value, options, size]);
74
+ // Respect prefers-reduced-motion for animated overlay
75
+ const prefersReducedMotion = React.useMemo(() => typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches, []);
76
+ return (_jsxs("div", { ref: ref, role: "img", "aria-label": ariaLabel, className: cn(qrCodeRootVariants({ size, animated }), className), ...props, children: [_jsx("div", { ref: containerRef, className: "[&>canvas]:h-auto [&>canvas]:w-auto" }), _jsx(FrameHandle, { className: "absolute left-0 top-0" }), _jsx(FrameHandle, { className: "absolute top-0 right-0 rotate-90" }), _jsx(FrameHandle, { className: "absolute bottom-0 right-0 rotate-180" }), _jsx(FrameHandle, { className: "absolute bottom-0 left-0 -rotate-90" }), animated && !prefersReducedMotion && (_jsx(GradientScan, { className: "animate-[scan_2.4s_linear_infinite]", style: {} })), _jsx("style", { children: `@keyframes scan { from { transform: translateY(100%); opacity: .15; } to { transform: translateY(0%); opacity: .55; } }` })] }));
77
+ });
78
+ QRCode.displayName = "QRCode";
79
+ export { qrCodeRootVariants };
@@ -1,3 +1,3 @@
1
1
  export type { TooltipContentProps, TooltipProps, TooltipTriggerProps, } from "./tooltip";
2
- export { Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, } from "./tooltip";
2
+ export { Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, TooltipWithMouseFollow, } from "./tooltip";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/feedback/tooltip/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/feedback/tooltip/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,sBAAsB,GACvB,MAAM,WAAW,CAAC"}
@@ -1 +1 @@
1
- export { Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, } from "./tooltip";
1
+ export { Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, TooltipWithMouseFollow, } from "./tooltip";
@@ -1,13 +1,26 @@
1
1
  /**
2
2
  * Tooltip Component - Flowtomic UI
3
3
  *
4
- * Componente Tooltip baseado em Radix UI
4
+ * Componente Tooltip baseado em Radix UI (padrão) ou React Aria (followMouse)
5
+ * com seguimento do mouse e posicionamento inteligente
6
+ * Baseado no Aceternity UI Tooltip Card para animações
5
7
  */
6
8
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
7
9
  import * as React from "react";
8
10
  export type TooltipProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root>;
9
11
  export type TooltipTriggerProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Trigger>;
10
- export type TooltipContentProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>;
12
+ export type TooltipContentProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> & {
13
+ /**
14
+ * Se o tooltip deve seguir o mouse
15
+ * @default false
16
+ */
17
+ followMouse?: boolean;
18
+ /**
19
+ * Largura mínima do tooltip quando seguir o mouse
20
+ * @default 240 (15rem)
21
+ */
22
+ minWidth?: number;
23
+ };
11
24
  /**
12
25
  * TooltipProvider - Provider do tooltip
13
26
  */
@@ -19,14 +32,38 @@ declare const Tooltip: React.FC<TooltipPrimitive.TooltipProps>;
19
32
  /**
20
33
  * TooltipTrigger - Trigger do tooltip
21
34
  */
22
- declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
35
+ declare const TooltipTrigger: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & {
36
+ "data-follow-mouse"?: boolean;
37
+ } & React.RefAttributes<HTMLButtonElement>>;
23
38
  /**
24
39
  * TooltipPortal - Portal do tooltip
25
40
  */
26
41
  declare const TooltipPortal: React.FC<TooltipPrimitive.TooltipPortalProps>;
27
42
  /**
28
- * TooltipContent - Conteúdo do tooltip
43
+ * TooltipContent - Conteúdo do tooltip com suporte a seguimento do mouse
29
44
  */
30
- declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
45
+ declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
46
+ /**
47
+ * Se o tooltip deve seguir o mouse
48
+ * @default false
49
+ */
50
+ followMouse?: boolean;
51
+ /**
52
+ * Largura mínima do tooltip quando seguir o mouse
53
+ * @default 240 (15rem)
54
+ */
55
+ minWidth?: number;
56
+ } & React.RefAttributes<HTMLDivElement>>;
57
+ /**
58
+ * TooltipWithMouseFollow - Wrapper completo para tooltip com seguimento do mouse
59
+ * Implementação baseada no Aceternity UI, sem Radix
60
+ */
61
+ export declare function TooltipWithMouseFollow({ content, children, containerClassName, className, minWidth, }: {
62
+ content: string | React.ReactNode;
63
+ children: React.ReactNode;
64
+ containerClassName?: string;
65
+ className?: string;
66
+ minWidth?: number;
67
+ }): import("react/jsx-runtime").JSX.Element;
31
68
  export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, TooltipPortal };
32
69
  //# sourceMappingURL=tooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/feedback/tooltip/tooltip.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACxF,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAClG,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAElG;;GAEG;AACH,QAAA,MAAM,eAAe,iDAA4B,CAAC;AAGlD;;GAEG;AACH,QAAA,MAAM,OAAO,yCAAwB,CAAC;AAGtC;;GAEG;AACH,QAAA,MAAM,cAAc,gHAA2B,CAAC;AAGhD;;GAEG;AACH,QAAA,MAAM,aAAa,+CAA0B,CAAC;AAG9C;;GAEG;AACH,QAAA,MAAM,cAAc,gKAalB,CAAC;AAGH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../../../src/components/atoms/feedback/tooltip/tooltip.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAI5D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACxF,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAClG,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,CAC9D,OAAO,gBAAgB,CAAC,OAAO,CAChC,GAAG;IACF;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,eAAe,iDAA4B,CAAC;AAGlD;;GAEG;AACH,QAAA,MAAM,OAAO,yCAAwB,CAAC;AAGtC;;GAEG;AACH,QAAA,MAAM,cAAc;0BAGM,OAAO;2CAW/B,CAAC;AAGH;;GAEG;AACH,QAAA,MAAM,aAAa,+CAA0B,CAAC;AAG9C;;GAEG;AACH,QAAA,MAAM,cAAc;IArDlB;;;OAGG;kBACW,OAAO;IACrB;;;OAGG;eACQ,MAAM;wCA6EjB,CAAC;AAmBH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,QAAQ,EACR,kBAAkB,EAClB,SAAS,EACT,QAAc,GACf,EAAE;IACD,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,2CA0NA;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC"}