@flowtomic/ui 0.1.1 → 0.1.4
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/blocks/developer-panel/page.d.ts +86 -0
- package/dist/blocks/developer-panel/page.d.ts.map +1 -0
- package/dist/blocks/developer-panel/page.js +35 -0
- package/dist/components/atoms/actions/badge/badge.d.ts +1 -1
- package/dist/components/atoms/actions/button/button.d.ts +2 -2
- package/dist/components/atoms/actions/button/button.d.ts.map +1 -1
- package/dist/components/atoms/actions/button/button.js +1 -2
- package/dist/components/atoms/animation/backdrop-blur/backdrop-blur.d.ts.map +1 -1
- package/dist/components/atoms/animation/backdrop-blur/backdrop-blur.js +9 -8
- package/dist/components/atoms/animation/encrypted-text/encrypted-text.d.ts +57 -0
- package/dist/components/atoms/animation/encrypted-text/encrypted-text.d.ts.map +1 -0
- package/dist/components/atoms/animation/encrypted-text/encrypted-text.js +104 -0
- package/dist/components/atoms/animation/encrypted-text/index.d.ts +3 -0
- package/dist/components/atoms/animation/encrypted-text/index.d.ts.map +1 -0
- package/dist/components/atoms/animation/encrypted-text/index.js +1 -0
- package/dist/components/atoms/animation/index.d.ts +2 -0
- package/dist/components/atoms/animation/index.d.ts.map +1 -1
- package/dist/components/atoms/animation/index.js +1 -0
- package/dist/components/atoms/animation/sliding-number/sliding-number.d.ts.map +1 -1
- package/dist/components/atoms/animation/sliding-number/sliding-number.js +6 -1
- package/dist/components/atoms/data-display/carousel/carousel.d.ts.map +1 -1
- package/dist/components/atoms/data-display/carousel/carousel.js +3 -1
- package/dist/components/atoms/data-display/chart/chart.d.ts.map +1 -1
- package/dist/components/atoms/data-display/chart/chart.js +3 -1
- package/dist/components/atoms/feedback/alert/alert.d.ts +1 -1
- package/dist/components/atoms/feedback/alert-dialog/alert-dialog.d.ts +2 -2
- package/dist/components/atoms/feedback/tooltip/index.d.ts +1 -1
- package/dist/components/atoms/feedback/tooltip/index.d.ts.map +1 -1
- package/dist/components/atoms/feedback/tooltip/index.js +1 -1
- package/dist/components/atoms/feedback/tooltip/tooltip.d.ts +42 -5
- package/dist/components/atoms/feedback/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/atoms/feedback/tooltip/tooltip.js +188 -5
- package/dist/components/atoms/forms/autocomplete/autocomplete-context.d.ts +29 -0
- package/dist/components/atoms/forms/autocomplete/autocomplete-context.d.ts.map +1 -0
- package/dist/components/atoms/forms/autocomplete/autocomplete-context.js +10 -0
- package/dist/components/atoms/forms/autocomplete/autocomplete-item.d.ts +16 -0
- package/dist/components/atoms/forms/autocomplete/autocomplete-item.d.ts.map +1 -0
- package/dist/components/atoms/forms/autocomplete/autocomplete-item.js +48 -0
- package/dist/components/atoms/forms/autocomplete/autocomplete-section.d.ts +14 -0
- package/dist/components/atoms/forms/autocomplete/autocomplete-section.d.ts.map +1 -0
- package/dist/components/atoms/forms/autocomplete/autocomplete-section.js +13 -0
- package/dist/components/atoms/forms/autocomplete/autocomplete.d.ts +13 -9
- package/dist/components/atoms/forms/autocomplete/autocomplete.d.ts.map +1 -1
- package/dist/components/atoms/forms/autocomplete/autocomplete.js +295 -87
- package/dist/components/atoms/forms/autocomplete/index.d.ts +6 -0
- package/dist/components/atoms/forms/autocomplete/index.d.ts.map +1 -1
- package/dist/components/atoms/forms/autocomplete/index.js +3 -0
- package/dist/components/atoms/forms/field/field.d.ts.map +1 -1
- package/dist/components/atoms/forms/field/field.js +4 -2
- package/dist/components/atoms/forms/index.d.ts +0 -2
- package/dist/components/atoms/forms/index.d.ts.map +1 -1
- package/dist/components/atoms/forms/index.js +0 -1
- package/dist/components/atoms/forms/input/input.d.ts +2 -2
- package/dist/components/atoms/forms/input-otp/input-otp.d.ts.map +1 -1
- package/dist/components/atoms/forms/input-otp/input-otp.js +3 -1
- package/dist/components/atoms/forms/slider/slider.d.ts.map +1 -1
- package/dist/components/atoms/forms/slider/slider.js +2 -1
- package/dist/components/atoms/forms/toggle/toggle.d.ts +2 -2
- package/dist/components/atoms/layout/sidebar/sidebar.d.ts +2 -2
- package/dist/components/atoms/layout/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/atoms/navigation/breadcrumb/breadcrumb.d.ts.map +1 -1
- package/dist/components/atoms/navigation/breadcrumb/breadcrumb.js +3 -1
- package/dist/components/atoms/navigation/command/command.d.ts +7 -7
- package/dist/components/atoms/navigation/tabs/tabs.js +2 -2
- package/dist/components/molecules/auth/auth-navigation-link/auth-navigation-link.d.ts +1 -11
- package/dist/components/molecules/auth/auth-navigation-link/auth-navigation-link.d.ts.map +1 -1
- package/dist/components/molecules/auth/auth-navigation-link/auth-navigation-link.js +2 -3
- package/dist/components/molecules/data-display/bar-chart/bar-chart.d.ts.map +1 -1
- package/dist/components/molecules/data-display/bar-chart/bar-chart.js +14 -9
- package/dist/components/molecules/data-display/circular-progress-chart/circular-progress-chart.d.ts.map +1 -1
- package/dist/components/molecules/data-display/circular-progress-chart/circular-progress-chart.js +6 -1
- package/dist/components/molecules/data-display/message/message.d.ts.map +1 -1
- package/dist/components/molecules/data-display/message/message.js +1 -1
- package/dist/components/molecules/data-display/project-list/project-list.d.ts.map +1 -1
- package/dist/components/molecules/data-display/project-list/project-list.js +14 -1
- package/dist/components/molecules/data-display/reminder-card/reminder-card.d.ts.map +1 -1
- package/dist/components/molecules/data-display/reminder-card/reminder-card.js +1 -1
- package/dist/components/molecules/data-display/stat-card/stat-card.d.ts.map +1 -1
- package/dist/components/molecules/data-display/team-member-list/team-member-list.d.ts.map +1 -1
- package/dist/components/molecules/data-display/team-member-list/team-member-list.js +14 -1
- package/dist/components/molecules/data-display/time-tracker/time-tracker.d.ts.map +1 -1
- package/dist/components/molecules/data-display/tool/tool.d.ts.map +1 -1
- package/dist/components/molecules/feedback/confirmation/confirmation.d.ts.map +1 -1
- package/dist/components/molecules/forms/autocomplete/autocomplete-context.d.ts +16 -0
- package/dist/components/molecules/forms/autocomplete/autocomplete-context.d.ts.map +1 -0
- package/dist/components/molecules/forms/autocomplete/autocomplete-context.js +14 -0
- package/dist/components/molecules/forms/autocomplete/autocomplete-item.d.ts +23 -0
- package/dist/components/molecules/forms/autocomplete/autocomplete-item.d.ts.map +1 -0
- package/dist/components/molecules/forms/autocomplete/autocomplete-item.js +29 -0
- package/dist/components/molecules/forms/autocomplete/autocomplete-section.d.ts +19 -0
- package/dist/components/molecules/forms/autocomplete/autocomplete-section.d.ts.map +1 -0
- package/dist/components/molecules/forms/autocomplete/autocomplete-section.js +13 -0
- package/dist/components/molecules/forms/autocomplete/autocomplete.d.ts +33 -0
- package/dist/components/molecules/forms/autocomplete/autocomplete.d.ts.map +1 -0
- package/dist/components/molecules/forms/autocomplete/autocomplete.js +101 -0
- package/dist/components/molecules/forms/autocomplete/index.d.ts +9 -0
- package/dist/components/molecules/forms/autocomplete/index.d.ts.map +1 -0
- package/dist/components/molecules/forms/autocomplete/index.js +4 -0
- package/dist/components/molecules/forms/input-group/input-group.d.ts.map +1 -1
- package/dist/components/molecules/forms/item/item.d.ts +4 -4
- package/dist/components/molecules/forms/item/item.d.ts.map +1 -1
- package/dist/components/molecules/forms/item/item.js +1 -1
- package/dist/components/molecules/index.d.ts +2 -2
- package/dist/components/molecules/index.d.ts.map +1 -1
- package/dist/components/molecules/index.js +1 -1
- package/dist/components/molecules/layout/dashboard-header/dashboard-header.d.ts.map +1 -1
- package/dist/components/molecules/navigation/menu-dock/menu-dock.d.ts +5 -0
- package/dist/components/molecules/navigation/menu-dock/menu-dock.d.ts.map +1 -1
- package/dist/components/molecules/navigation/menu-dock/menu-dock.js +103 -10
- package/dist/components/molecules/typography/index.d.ts +0 -2
- package/dist/components/molecules/typography/index.d.ts.map +1 -1
- package/dist/components/molecules/typography/index.js +1 -1
- package/dist/components/organisms/context/context.d.ts +4 -4
- package/dist/components/organisms/conversation/conversation.d.ts.map +1 -1
- package/dist/components/organisms/conversation/conversation.js +2 -2
- package/dist/components/organisms/genealogy-canvas/genealogy-canvas.d.ts.map +1 -1
- package/dist/components/organisms/genealogy-canvas/genealogy-canvas.js +1 -1
- 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/prompt-input.js +2 -2
- package/dist/components/organisms/script-editor/index.d.ts +3 -0
- package/dist/components/organisms/script-editor/index.d.ts.map +1 -0
- package/dist/components/organisms/script-editor/index.js +1 -0
- package/dist/components/organisms/script-editor/script-editor.d.ts +52 -0
- package/dist/components/organisms/script-editor/script-editor.d.ts.map +1 -0
- package/dist/components/organisms/script-editor/script-editor.js +86 -0
- package/dist/components/organisms/stats-grid/stats-grid.d.ts.map +1 -1
- package/dist/index.js +477 -498
- package/package.json +28 -17
|
@@ -30,7 +30,7 @@ export declare const ModelSelectorInput: React.ForwardRefExoticComponent<Omit<Om
|
|
|
30
30
|
ref?: React.Ref<HTMLInputElement>;
|
|
31
31
|
} & {
|
|
32
32
|
asChild?: boolean;
|
|
33
|
-
}, "
|
|
33
|
+
}, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
|
|
34
34
|
value?: string;
|
|
35
35
|
onValueChange?: (search: string) => void;
|
|
36
36
|
} & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
@@ -321,7 +321,7 @@ export const PromptInput = ({ className, accept, multiple, globalDrop, syncHidde
|
|
|
321
321
|
form.reset();
|
|
322
322
|
}
|
|
323
323
|
Promise.all(files.map(async ({ id, ...item }) => {
|
|
324
|
-
if (item.url
|
|
324
|
+
if (item.url?.startsWith("blob:")) {
|
|
325
325
|
return {
|
|
326
326
|
...item,
|
|
327
327
|
url: await convertBlobUrlToDataUrl(item.url),
|
|
@@ -350,7 +350,7 @@ export const PromptInput = ({ className, accept, multiple, globalDrop, syncHidde
|
|
|
350
350
|
}
|
|
351
351
|
}
|
|
352
352
|
}
|
|
353
|
-
catch (
|
|
353
|
+
catch (_error) {
|
|
354
354
|
// Don't clear on error
|
|
355
355
|
}
|
|
356
356
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/script-editor/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ScriptEditor } from "./script-editor";
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ScriptEditor Component - Flowtomic UI
|
|
3
|
+
*
|
|
4
|
+
* Componente para editar e executar scripts com terminal interativo
|
|
5
|
+
*
|
|
6
|
+
* Funcionalidades:
|
|
7
|
+
* - Editor de código para scripts
|
|
8
|
+
* - Terminal interativo em tempo real
|
|
9
|
+
* - Preview da resposta do servidor
|
|
10
|
+
* - Abas para alternar entre terminal e preview
|
|
11
|
+
* - Execução de scripts no backend
|
|
12
|
+
*/
|
|
13
|
+
import { type ExecuteScriptResponse, type TerminalLine } from "@flowtomic/logic";
|
|
14
|
+
import type { HTMLAttributes } from "react";
|
|
15
|
+
export interface ScriptEditorProps extends Omit<HTMLAttributes<HTMLDivElement>, "onError"> {
|
|
16
|
+
/**
|
|
17
|
+
* Script inicial
|
|
18
|
+
* @default ""
|
|
19
|
+
*/
|
|
20
|
+
defaultScript?: string;
|
|
21
|
+
/**
|
|
22
|
+
* URL do WebSocket para conexão em tempo real
|
|
23
|
+
*/
|
|
24
|
+
wsUrl?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Função para executar script via HTTP (fallback quando WebSocket não está disponível)
|
|
27
|
+
*/
|
|
28
|
+
executeScript?: (script: string) => Promise<ExecuteScriptResponse>;
|
|
29
|
+
/**
|
|
30
|
+
* Callback quando uma linha é adicionada ao terminal
|
|
31
|
+
*/
|
|
32
|
+
onOutput?: (line: TerminalLine) => void;
|
|
33
|
+
/**
|
|
34
|
+
* Callback quando ocorre um erro
|
|
35
|
+
*/
|
|
36
|
+
onError?: (error: Error) => void;
|
|
37
|
+
/**
|
|
38
|
+
* Se deve conectar automaticamente ao WebSocket
|
|
39
|
+
* @default true
|
|
40
|
+
*/
|
|
41
|
+
autoConnect?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Número máximo de tentativas de reconexão
|
|
44
|
+
* @default 3
|
|
45
|
+
*/
|
|
46
|
+
maxReconnectAttempts?: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* ScriptEditor - Componente para editar e executar scripts com terminal interativo
|
|
50
|
+
*/
|
|
51
|
+
export declare const ScriptEditor: import("react").ForwardRefExoticComponent<ScriptEditorProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
52
|
+
//# sourceMappingURL=script-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-editor.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/script-editor/script-editor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,YAAY,EAAmB,MAAM,kBAAkB,CAAC;AAElG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAQ5C,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IACxF;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAEnE;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAExC;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,8GA0KxB,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* ScriptEditor Component - Flowtomic UI
|
|
4
|
+
*
|
|
5
|
+
* Componente para editar e executar scripts com terminal interativo
|
|
6
|
+
*
|
|
7
|
+
* Funcionalidades:
|
|
8
|
+
* - Editor de código para scripts
|
|
9
|
+
* - Terminal interativo em tempo real
|
|
10
|
+
* - Preview da resposta do servidor
|
|
11
|
+
* - Abas para alternar entre terminal e preview
|
|
12
|
+
* - Execução de scripts no backend
|
|
13
|
+
*/
|
|
14
|
+
import { useScriptEditor } from "@flowtomic/logic";
|
|
15
|
+
import { Check, Copy, Play, Square, Trash2 } from "lucide-react";
|
|
16
|
+
import { forwardRef, useEffect, useRef, useState } from "react";
|
|
17
|
+
import { cn } from "@/lib/utils";
|
|
18
|
+
import { Badge, Button } from "../../atoms/actions";
|
|
19
|
+
import { Card, CardContent, CardHeader, CardTitle } from "../../atoms/display";
|
|
20
|
+
import { Textarea } from "../../atoms/forms";
|
|
21
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from "../../atoms/navigation/tabs";
|
|
22
|
+
/**
|
|
23
|
+
* ScriptEditor - Componente para editar e executar scripts com terminal interativo
|
|
24
|
+
*/
|
|
25
|
+
export const ScriptEditor = forwardRef(({ className, defaultScript = `// Exemplo de script Groovy
|
|
26
|
+
// Serviços do Spring Boot estão disponíveis automaticamente
|
|
27
|
+
// Exemplos: userService, animalService, herdService, ctx (ApplicationContext)
|
|
28
|
+
|
|
29
|
+
// Exemplo 1: Acessar repositório via ApplicationContext
|
|
30
|
+
def userRepo = ctx.getBean("userRepository")
|
|
31
|
+
def usuarios = userRepo.findAll()
|
|
32
|
+
def resultado = [
|
|
33
|
+
message: "Usuários encontrados",
|
|
34
|
+
total: usuarios.size(),
|
|
35
|
+
usuarios: usuarios.collect { [id: it.id, name: it.name, email: it.email] }
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
// Exemplo 2: Usar serviço diretamente (se disponível)
|
|
39
|
+
// def userService = ctx.getBean("userService")
|
|
40
|
+
|
|
41
|
+
// Última expressão é retornada como resultado
|
|
42
|
+
resultado`, wsUrl, executeScript, onOutput, onError, autoConnect = true, maxReconnectAttempts = 3, ...props }, ref) => {
|
|
43
|
+
const { script, setScript, terminalLines, preview, activeTab, setActiveTab, isRunning, isConnected, executeScript: executeScriptHandler, stopExecution, clearTerminal, } = useScriptEditor({
|
|
44
|
+
defaultScript,
|
|
45
|
+
wsUrl,
|
|
46
|
+
executeScript,
|
|
47
|
+
onOutput,
|
|
48
|
+
onError,
|
|
49
|
+
autoConnect,
|
|
50
|
+
maxReconnectAttempts,
|
|
51
|
+
});
|
|
52
|
+
const [copied, setCopied] = useState(false);
|
|
53
|
+
const terminalRef = useRef(null);
|
|
54
|
+
// Scroll automático do terminal
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (terminalRef.current) {
|
|
57
|
+
terminalRef.current.scrollTop = terminalRef.current.scrollHeight;
|
|
58
|
+
}
|
|
59
|
+
}, []);
|
|
60
|
+
const copyToClipboard = async (text) => {
|
|
61
|
+
try {
|
|
62
|
+
await navigator.clipboard.writeText(text);
|
|
63
|
+
setCopied(true);
|
|
64
|
+
setTimeout(() => setCopied(false), 2000);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
console.error("Erro ao copiar:", err);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
return (_jsxs(Card, { ref: ref, className: cn("w-full", className), ...props, children: [_jsx(CardHeader, { children: _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { children: [_jsx(CardTitle, { children: "Editor de Scripts" }), _jsx("p", { className: "text-sm text-muted-foreground mt-1", children: "Edite e execute scripts com terminal interativo em tempo real" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Badge, { variant: isConnected ? "default" : "secondary", children: isConnected ? "🟢 Conectado" : "🔴 Desconectado" }), _jsx(Button, { variant: "outline", size: "sm", onClick: () => copyToClipboard(script), disabled: !script, children: copied ? _jsx(Check, { className: "h-4 w-4" }) : _jsx(Copy, { className: "h-4 w-4" }) })] })] }) }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "relative", children: [_jsxs("div", { className: "flex items-center justify-between mb-2", children: [_jsx("label", { htmlFor: "script-editor-textarea", className: "text-sm font-medium", children: "Script" }), _jsxs("div", { className: "flex gap-2", children: [_jsxs(Button, { variant: "default", size: "sm", onClick: executeScriptHandler, disabled: isRunning, children: [_jsx(Play, { className: "h-4 w-4 mr-2" }), "Executar"] }), _jsxs(Button, { variant: "outline", size: "sm", onClick: stopExecution, disabled: !isRunning, children: [_jsx(Square, { className: "h-4 w-4 mr-2" }), "Parar"] })] })] }), _jsxs("div", { className: "relative bg-muted/50 border border-border rounded-lg overflow-hidden", children: [_jsxs("div", { className: "flex flex-row gap-x-2 p-3 border-b border-border bg-muted", children: [_jsx("div", { className: "h-2 w-2 rounded-full bg-red-500" }), _jsx("div", { className: "h-2 w-2 rounded-full bg-yellow-500" }), _jsx("div", { className: "h-2 w-2 rounded-full bg-green-500" })] }), _jsx(Textarea, { id: "script-editor-textarea", value: script, onChange: (e) => setScript(e.target.value), className: "w-full h-64 p-4 font-mono text-sm bg-background resize-none focus:outline-none focus:ring-2 focus:ring-ring", placeholder: "Digite seu script Groovy aqui... (ou JavaScript como fallback)", spellCheck: false })] })] }), _jsx("div", { className: "border border-border rounded-lg overflow-hidden", children: _jsxs(Tabs, { value: activeTab, onValueChange: (value) => setActiveTab(value), children: [_jsxs("div", { className: "flex border-b border-border bg-muted", children: [_jsxs(TabsList, { className: "bg-transparent border-0 p-0 h-auto", children: [_jsx(TabsTrigger, { value: "terminal", children: "Terminal" }), _jsx(TabsTrigger, { value: "preview", children: "Preview" })] }), _jsx("div", { className: "flex-1" }), _jsxs(Button, { variant: "ghost", size: "sm", onClick: clearTerminal, className: "mr-2", children: [_jsx(Trash2, { className: "h-4 w-4 mr-2" }), "Limpar"] })] }), _jsx(TabsContent, { value: "terminal", className: "mt-0", children: _jsx(TerminalContent, { ref: terminalRef, lines: terminalLines, isRunning: isRunning }) }), _jsx(TabsContent, { value: "preview", className: "mt-0", children: _jsx(PreviewContent, { content: preview }) })] }) })] })] }));
|
|
71
|
+
});
|
|
72
|
+
ScriptEditor.displayName = "ScriptEditor";
|
|
73
|
+
const TerminalContent = forwardRef(({ lines, isRunning }, ref) => {
|
|
74
|
+
return (_jsx("div", { ref: ref, className: cn("p-4 font-mono text-sm h-64 overflow-auto",
|
|
75
|
+
// Modo dark: estilo terminal escuro
|
|
76
|
+
"dark:bg-[#0d1117] dark:text-[#c9d1d9]",
|
|
77
|
+
// Modo light: usar input que é mais escuro que muted, mantendo a paleta
|
|
78
|
+
"bg-input text-foreground"), children: lines.length === 0 ? (_jsxs("div", { className: "text-muted-foreground dark:text-[#8b949e]", children: [_jsx("span", { className: "text-primary dark:text-[#58a6ff]", children: "$" }), " Terminal pronto. Execute um script para ver a sa\u00EDda..."] })) : (_jsxs("div", { className: "space-y-1", children: [lines.map((line) => (_jsxs("div", { className: cn("flex items-start gap-2 animate-in fade-in slide-in-from-top-1 duration-200", line.type === "error" && "text-destructive dark:text-[#f85149]", line.type === "output" && "text-foreground dark:text-[#c9d1d9]", line.type === "system" && "text-muted-foreground dark:text-[#8b949e]", line.type === "input" && "text-primary dark:text-[#58a6ff]"), children: [line.type === "input" && (_jsx("span", { className: "text-primary dark:text-[#58a6ff]", children: "$" })), line.type === "error" && (_jsx("span", { className: "text-destructive dark:text-[#f85149]", children: "\u2717" })), line.type === "system" && (_jsx("span", { className: "text-muted-foreground dark:text-[#8b949e]", children: "\u25CF" })), _jsx("span", { className: "flex-1 whitespace-pre-wrap break-words", children: line.content })] }, line.id))), isRunning && (_jsxs("div", { className: "text-muted-foreground dark:text-[#8b949e] animate-pulse", children: [_jsx("span", { className: "text-primary dark:text-[#58a6ff]", children: "$" }), " ", _jsx("span", { className: "animate-pulse", children: "\u258B" }), " Executando..."] }))] })) }));
|
|
79
|
+
});
|
|
80
|
+
TerminalContent.displayName = "TerminalContent";
|
|
81
|
+
const PreviewContent = ({ content }) => {
|
|
82
|
+
if (!content) {
|
|
83
|
+
return (_jsx("div", { className: "p-4 text-muted-foreground text-center h-64 flex items-center justify-center", children: "Nenhum resultado ainda. Execute um script para ver o preview..." }));
|
|
84
|
+
}
|
|
85
|
+
return (_jsx("div", { className: "p-4 h-64 overflow-auto", children: _jsx("pre", { className: "text-sm font-mono bg-muted p-4 rounded-lg overflow-auto", children: _jsx("code", { children: content }) }) }));
|
|
86
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats-grid.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/stats-grid/stats-grid.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,QAAA,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"stats-grid.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/stats-grid/stats-grid.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;IACvD;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,QAAA,MAAM,SAAS,uFA0Gd,CAAC;AAIF,OAAO,EAAE,SAAS,EAAE,CAAC"}
|