orquesta-embed 0.1.0 → 0.1.2
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/README.md +0 -0
- package/dist/components/AuthorAvatar.d.ts +9 -0
- package/dist/components/CommentInput.d.ts +8 -0
- package/dist/components/CommentList.d.ts +8 -0
- package/dist/components/Deployments.d.ts +0 -0
- package/dist/components/ElementInspector.d.ts +0 -0
- package/dist/components/ElementMarkers.d.ts +7 -0
- package/dist/components/EmbedPanel.d.ts +7 -2
- package/dist/components/GitCommitLink.d.ts +8 -0
- package/dist/components/LogStream.d.ts +0 -0
- package/dist/components/OrquestaEmbed.d.ts +1 -0
- package/dist/components/PromptInput.d.ts +0 -0
- package/dist/components/Timeline.d.ts +9 -2
- package/dist/components/ui/Badge.d.ts +0 -0
- package/dist/components/ui/Button.d.ts +0 -0
- package/dist/components/ui/Input.d.ts +0 -0
- package/dist/components/ui/Tabs.d.ts +0 -0
- package/dist/components/ui/index.d.ts +0 -0
- package/dist/core/client.d.ts +6 -2
- package/dist/core/config.d.ts +30 -1
- package/dist/core/console-capture.d.ts +0 -0
- package/dist/core/element-selector.d.ts +7 -3
- package/dist/core/network-capture.d.ts +0 -0
- package/dist/core/state.d.ts +15 -5
- package/dist/core/storage.d.ts +0 -0
- package/dist/embed.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.js +1 -1
- package/dist/styles/embed-inline.d.ts +0 -0
- package/dist/vanilla/OrquestaWidget.d.ts +0 -1
- package/dist/vanilla/renderer.d.ts +0 -0
- package/dist/vanilla.d.ts +0 -0
- package/dist/vanilla.js +1 -1
- package/dist/vanilla.min.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Author } from '../core/config';
|
|
2
|
+
interface AuthorAvatarProps {
|
|
3
|
+
author: Author | null | undefined;
|
|
4
|
+
size?: 'sm' | 'md' | 'lg';
|
|
5
|
+
showName?: boolean;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function AuthorAvatar({ author, size, showName, className }: AuthorAvatarProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface CommentInputProps {
|
|
2
|
+
onSubmit: (content: string) => Promise<void>;
|
|
3
|
+
placeholder?: string;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function CommentInput({ onSubmit, placeholder, disabled, className }: CommentInputProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Comment } from '../core/config';
|
|
2
|
+
interface CommentListProps {
|
|
3
|
+
comments: Comment[];
|
|
4
|
+
isLoading?: boolean;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function CommentList({ comments, isLoading, className }: CommentListProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ElementMarker } from '../core/config';
|
|
2
|
+
interface ElementMarkersProps {
|
|
3
|
+
markers: ElementMarker[];
|
|
4
|
+
onMarkerClick?: (promptId: string) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function ElementMarkers({ markers, onMarkerClick }: ElementMarkersProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EmbedState } from '../core/state';
|
|
2
|
-
import type { Position } from '../core/config';
|
|
2
|
+
import type { Position, Prompt, OverlayMode } from '../core/config';
|
|
3
3
|
interface EmbedPanelProps {
|
|
4
4
|
state: EmbedState;
|
|
5
5
|
position: Position;
|
|
@@ -11,6 +11,11 @@ interface EmbedPanelProps {
|
|
|
11
11
|
onToggleConsole: () => void;
|
|
12
12
|
onToggleNetwork: () => void;
|
|
13
13
|
onTabChange: (tab: EmbedState['activeTab']) => void;
|
|
14
|
+
onExpandPrompt?: (promptId: string | null) => void;
|
|
15
|
+
onHighlightElement?: (prompt: Prompt) => void;
|
|
16
|
+
onLoadComments?: (promptId: string) => Promise<void>;
|
|
17
|
+
onAddComment?: (promptId: string, content: string) => Promise<void>;
|
|
18
|
+
onOverlayModeChange?: (mode: OverlayMode) => void;
|
|
14
19
|
}
|
|
15
|
-
export declare function EmbedPanel({ state, position, onClose, onMinimize, onSubmitPrompt, onSelectElement, onClearElement, onToggleConsole, onToggleNetwork, onTabChange }: EmbedPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export declare function EmbedPanel({ state, position, onClose, onMinimize, onSubmitPrompt, onSelectElement, onClearElement, onToggleConsole, onToggleNetwork, onTabChange, onExpandPrompt, onHighlightElement, onLoadComments, onAddComment, onOverlayModeChange }: EmbedPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
16
21
|
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface GitCommitLinkProps {
|
|
2
|
+
sha: string | undefined | null;
|
|
3
|
+
url?: string | null;
|
|
4
|
+
branch?: string | null;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function GitCommitLink({ sha, url, branch, className }: GitCommitLinkProps): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
export {};
|
|
File without changes
|
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import type { OrquestaEmbedConfig } from '../core/config';
|
|
3
3
|
interface OrquestaEmbedProps extends OrquestaEmbedConfig {
|
|
4
4
|
children?: React.ReactNode;
|
|
5
|
+
enableGlobalRightClick?: boolean;
|
|
5
6
|
}
|
|
6
7
|
export declare function OrquestaEmbed(props: OrquestaEmbedProps): import("react/jsx-runtime").JSX.Element;
|
|
7
8
|
export {};
|
|
File without changes
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import type { Prompt } from '../core/config';
|
|
1
|
+
import type { Prompt, Comment } from '../core/config';
|
|
2
2
|
interface TimelineProps {
|
|
3
3
|
prompts: Prompt[];
|
|
4
4
|
currentPromptId?: string;
|
|
5
|
+
expandedPromptId?: string | null;
|
|
6
|
+
comments?: Record<string, Comment[]>;
|
|
7
|
+
isLoadingComments?: boolean;
|
|
5
8
|
onSelectPrompt?: (prompt: Prompt) => void;
|
|
9
|
+
onExpandPrompt?: (promptId: string | null) => void;
|
|
10
|
+
onHighlightElement?: (prompt: Prompt) => void;
|
|
11
|
+
onLoadComments?: (promptId: string) => Promise<void>;
|
|
12
|
+
onAddComment?: (promptId: string, content: string) => Promise<void>;
|
|
6
13
|
}
|
|
7
|
-
export declare function Timeline({ prompts, currentPromptId, onSelectPrompt }: TimelineProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare function Timeline({ prompts, currentPromptId, expandedPromptId, comments, isLoadingComments, onSelectPrompt, onExpandPrompt, onHighlightElement, onLoadComments, onAddComment }: TimelineProps): import("react/jsx-runtime").JSX.Element;
|
|
8
15
|
export {};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/core/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { OrquestaEmbedConfig, ElementContext } from './config';
|
|
1
|
+
import type { OrquestaEmbedConfig, Prompt, ElementContext, OverlayMode } from './config';
|
|
2
2
|
import { StateManager } from './state';
|
|
3
3
|
import { ConsoleCapture } from './console-capture';
|
|
4
4
|
import { NetworkCapture } from './network-capture';
|
|
@@ -27,7 +27,6 @@ export declare class OrquestaEmbedClient {
|
|
|
27
27
|
elementContext?: ElementContext;
|
|
28
28
|
}): Promise<string>;
|
|
29
29
|
private loadTimeline;
|
|
30
|
-
private loadDeployments;
|
|
31
30
|
open(): void;
|
|
32
31
|
close(): void;
|
|
33
32
|
toggle(): void;
|
|
@@ -37,4 +36,9 @@ export declare class OrquestaEmbedClient {
|
|
|
37
36
|
getConsoleCapture(): ConsoleCapture;
|
|
38
37
|
getNetworkCapture(): NetworkCapture;
|
|
39
38
|
getElementSelector(): ElementSelector;
|
|
39
|
+
loadComments(promptId: string): Promise<void>;
|
|
40
|
+
addComment(promptId: string, content: string): Promise<void>;
|
|
41
|
+
setOverlayMode(mode: OverlayMode): void;
|
|
42
|
+
highlightPromptElement(prompt: Prompt): void;
|
|
43
|
+
setupGlobalRightClick(onSelect: (context: ElementContext) => void): () => void;
|
|
40
44
|
}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -54,6 +54,11 @@ export interface NetworkEntry {
|
|
|
54
54
|
requestBody?: unknown;
|
|
55
55
|
responseBody?: unknown;
|
|
56
56
|
}
|
|
57
|
+
export interface Author {
|
|
58
|
+
id: string;
|
|
59
|
+
full_name: string | null;
|
|
60
|
+
avatar_url: string | null;
|
|
61
|
+
}
|
|
57
62
|
export interface Prompt {
|
|
58
63
|
id: string;
|
|
59
64
|
content: string;
|
|
@@ -62,8 +67,32 @@ export interface Prompt {
|
|
|
62
67
|
completed_at?: string;
|
|
63
68
|
user_id: string;
|
|
64
69
|
source: string;
|
|
65
|
-
element_context?: ElementContext
|
|
70
|
+
element_context?: ElementContext & {
|
|
71
|
+
rect?: unknown;
|
|
72
|
+
};
|
|
73
|
+
author?: Author | null;
|
|
74
|
+
git_branch?: string;
|
|
75
|
+
git_commit_sha?: string;
|
|
76
|
+
git_commit_url?: string;
|
|
77
|
+
comment_count?: number;
|
|
78
|
+
}
|
|
79
|
+
export interface Comment {
|
|
80
|
+
id: string;
|
|
81
|
+
content: string;
|
|
82
|
+
created_at: string;
|
|
83
|
+
parent_comment_id?: string | null;
|
|
84
|
+
author: Author | null;
|
|
85
|
+
}
|
|
86
|
+
export interface ElementMarker {
|
|
87
|
+
promptId: string;
|
|
88
|
+
selector: string;
|
|
89
|
+
rect: DOMRect | null;
|
|
90
|
+
content: string;
|
|
91
|
+
author: Author | null;
|
|
92
|
+
gitCommitSha: string | null;
|
|
93
|
+
commentCount: number;
|
|
66
94
|
}
|
|
95
|
+
export type OverlayMode = 'off' | 'single' | 'all';
|
|
67
96
|
export interface Deployment {
|
|
68
97
|
id: string;
|
|
69
98
|
status: string;
|
|
File without changes
|
|
@@ -2,22 +2,26 @@ import type { ElementContext } from './config';
|
|
|
2
2
|
export declare class ElementSelector {
|
|
3
3
|
private overlay;
|
|
4
4
|
private highlight;
|
|
5
|
-
private contextMenu;
|
|
6
5
|
private selectedElement;
|
|
7
6
|
private isActive;
|
|
8
7
|
private onSelect;
|
|
9
8
|
private onCancel;
|
|
9
|
+
private globalRightClickHandler;
|
|
10
|
+
private globalRightClickCallback;
|
|
11
|
+
setupGlobalRightClick(onSelect: (context: ElementContext) => void): () => void;
|
|
10
12
|
activate(onSelect: (context: ElementContext) => void, onCancel?: () => void): void;
|
|
11
13
|
deactivate(): void;
|
|
14
|
+
isSelecting(): boolean;
|
|
12
15
|
private createOverlay;
|
|
13
16
|
private removeOverlay;
|
|
14
17
|
private addListeners;
|
|
15
18
|
private removeListeners;
|
|
16
19
|
private handleMouseMove;
|
|
17
20
|
private handleClick;
|
|
18
|
-
private handleContextMenu;
|
|
19
21
|
private handleKeyDown;
|
|
20
|
-
|
|
22
|
+
highlightElement(selector: string): HTMLElement | null;
|
|
23
|
+
removeHighlight(): void;
|
|
24
|
+
findElement(selector: string, fallbackId?: string): HTMLElement | null;
|
|
21
25
|
getElementContext(el: HTMLElement): ElementContext;
|
|
22
26
|
private generateSelector;
|
|
23
27
|
}
|
|
File without changes
|
package/dist/core/state.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Prompt,
|
|
1
|
+
import type { Prompt, ElementContext, ConsoleEntry, NetworkEntry, Comment, ElementMarker, OverlayMode } from './config';
|
|
2
2
|
export interface EmbedState {
|
|
3
3
|
isConnected: boolean;
|
|
4
4
|
isConnecting: boolean;
|
|
@@ -7,15 +7,19 @@ export interface EmbedState {
|
|
|
7
7
|
projectName: string | null;
|
|
8
8
|
agentOnline: boolean;
|
|
9
9
|
isOpen: boolean;
|
|
10
|
-
activeTab: 'prompts' | 'timeline'
|
|
10
|
+
activeTab: 'prompts' | 'timeline';
|
|
11
11
|
isSelectingElement: boolean;
|
|
12
12
|
selectedElement: ElementContext | null;
|
|
13
13
|
currentPrompt: Prompt | null;
|
|
14
14
|
promptHistory: Prompt[];
|
|
15
15
|
isSubmitting: boolean;
|
|
16
16
|
outputLines: OutputLine[];
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
overlayMode: OverlayMode;
|
|
18
|
+
highlightedPromptId: string | null;
|
|
19
|
+
elementMarkers: ElementMarker[];
|
|
20
|
+
comments: Record<string, Comment[]>;
|
|
21
|
+
isLoadingComments: boolean;
|
|
22
|
+
expandedPromptId: string | null;
|
|
19
23
|
consoleLogs: ConsoleEntry[];
|
|
20
24
|
networkLogs: NetworkEntry[];
|
|
21
25
|
includeConsole: boolean;
|
|
@@ -50,7 +54,13 @@ export declare class StateManager {
|
|
|
50
54
|
setSelectedElement(element: ElementContext | null): void;
|
|
51
55
|
startElementSelection(): void;
|
|
52
56
|
cancelElementSelection(): void;
|
|
53
|
-
|
|
57
|
+
setOverlayMode(mode: OverlayMode): void;
|
|
58
|
+
setHighlightedPromptId(id: string | null): void;
|
|
59
|
+
setElementMarkers(markers: ElementMarker[]): void;
|
|
60
|
+
setCommentsForPrompt(promptId: string, comments: Comment[]): void;
|
|
61
|
+
addComment(promptId: string, comment: Comment): void;
|
|
62
|
+
setExpandedPromptId(id: string | null): void;
|
|
63
|
+
setLoadingComments(loading: boolean): void;
|
|
54
64
|
addConsoleLogs(logs: ConsoleEntry[]): void;
|
|
55
65
|
addNetworkLogs(logs: NetworkEntry[]): void;
|
|
56
66
|
toggleIncludeConsole(): void;
|
package/dist/core/storage.d.ts
CHANGED
|
File without changes
|
package/dist/embed.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[class*=" orquesta-"],[class^=orquesta-]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.orquesta-embed-panel{--orq-bg:#18181b;--orq-bg-secondary:#27272a;--orq-border:#3f3f46;--orq-text:#fafafa;--orq-text-muted:#a1a1aa;--orq-primary:#3b82f6;--orq-success:#22c55e;--orq-warning:#eab308;--orq-error:#ef4444}.orquesta-embed-panel ::-webkit-scrollbar{height:6px;width:6px}.orquesta-embed-panel ::-webkit-scrollbar-track{background:transparent}.orquesta-embed-panel ::-webkit-scrollbar-thumb{background:#3f3f46;border-radius:3px}.orquesta-embed-panel ::-webkit-scrollbar-thumb:hover{background:#52525b}@keyframes orquesta-spin{to{transform:rotate(1turn)}}@keyframes orquesta-pulse{0%,to{opacity:1}50%{opacity:.5}}.orquesta-embed-panel .animate-spin{animation:orquesta-spin 1s linear infinite}.orquesta-embed-panel .animate-pulse{animation:orquesta-pulse 2s ease-in-out infinite}.orquesta-embed-panel .line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.orquesta-embed-panel .line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.orquesta-embed-panel button:focus-visible,.orquesta-embed-panel input:focus-visible,.orquesta-embed-panel textarea:focus-visible{outline:2px solid var(--orq-primary);outline-offset:2px}#orquesta-element-highlight{animation:orquesta-highlight-pulse 1.5s ease-in-out infinite}@keyframes orquesta-highlight-pulse{0%,to{box-shadow:0 0 0 0 rgba(59,130,246,.4)}50%{box-shadow:0 0 0 4px rgba(59,130,246,.2)}}.orquesta-tooltip{background:#18181b;border:1px solid #3f3f46;border-radius:4px;color:#fafafa;font-size:12px;padding:4px 8px;pointer-events:none;position:absolute;white-space:nowrap;z-index:2147483647}.orquesta-embed-panel *{transition-duration:.15s;transition-property:color,background-color,border-color,opacity,transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.orquesta-embed-panel{animation:orquesta-panel-enter .2s ease-out}@keyframes orquesta-panel-enter{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.orquesta-embed-trigger{animation:orquesta-trigger-enter .3s ease-out}@keyframes orquesta-trigger-enter{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.orquesta-log-stream{background:#0a0a0a;border:1px solid #27272a;border-radius:6px;padding:8px}.orquesta-timeline button:hover{transform:translateX(2px)}@media (max-width:480px){.orquesta-embed-panel{bottom:8px!important;left:8px!important;max-height:70vh!important;position:fixed!important;right:8px!important;top:auto!important;width:auto!important}}
|
|
1
|
+
[class*=" orquesta-"],[class^=orquesta-]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.orquesta-embed-panel{--orq-bg:#18181b;--orq-bg-secondary:#27272a;--orq-border:#3f3f46;--orq-text:#fafafa;--orq-text-muted:#a1a1aa;--orq-primary:#3b82f6;--orq-success:#22c55e;--orq-warning:#eab308;--orq-error:#ef4444}.orquesta-embed-panel ::-webkit-scrollbar{height:6px;width:6px}.orquesta-embed-panel ::-webkit-scrollbar-track{background:transparent}.orquesta-embed-panel ::-webkit-scrollbar-thumb{background:#3f3f46;border-radius:3px}.orquesta-embed-panel ::-webkit-scrollbar-thumb:hover{background:#52525b}@keyframes orquesta-spin{to{transform:rotate(1turn)}}@keyframes orquesta-pulse{0%,to{opacity:1}50%{opacity:.5}}.orquesta-embed-panel .animate-spin{animation:orquesta-spin 1s linear infinite}.orquesta-embed-panel .animate-pulse{animation:orquesta-pulse 2s ease-in-out infinite}.orquesta-embed-panel .line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.orquesta-embed-panel .line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.orquesta-embed-panel button:focus-visible,.orquesta-embed-panel input:focus-visible,.orquesta-embed-panel textarea:focus-visible{outline:2px solid var(--orq-primary);outline-offset:2px}#orquesta-element-highlight{animation:orquesta-highlight-pulse 1.5s ease-in-out infinite}@keyframes orquesta-highlight-pulse{0%,to{box-shadow:0 0 0 0 rgba(59,130,246,.4)}50%{box-shadow:0 0 0 4px rgba(59,130,246,.2)}}.orquesta-tooltip{background:#18181b;border:1px solid #3f3f46;border-radius:4px;color:#fafafa;font-size:12px;padding:4px 8px;pointer-events:none;position:absolute;white-space:nowrap;z-index:2147483647}.orquesta-embed-panel *{transition-duration:.15s;transition-property:color,background-color,border-color,opacity,transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.orquesta-embed-panel{animation:orquesta-panel-enter .2s ease-out;background-color:#18181b!important;color:#fafafa!important}.orquesta-embed-panel *{color:inherit}.orquesta-embed-panel button,.orquesta-embed-panel input,.orquesta-embed-panel textarea{color:#fafafa}.orquesta-embed-panel .text-zinc-400,.orquesta-embed-panel .text-zinc-500{color:#a1a1aa!important}.orquesta-embed-panel .text-white{color:#fafafa!important}.orquesta-embed-panel .bg-zinc-900{background-color:#18181b!important}.orquesta-embed-panel .bg-zinc-800{background-color:#27272a!important}.orquesta-embed-panel .bg-zinc-700{background-color:#3f3f46!important}.orquesta-embed-panel .border-zinc-700{border-color:#3f3f46!important}.orquesta-embed-panel .border-zinc-800{border-color:#27272a!important}.orquesta-embed-panel input,.orquesta-embed-panel textarea{background-color:#27272a!important;border-color:#3f3f46!important;color:#fafafa!important}.orquesta-embed-panel input::placeholder,.orquesta-embed-panel textarea::placeholder{color:#71717a!important}.orquesta-embed-panel button{background-color:transparent}.orquesta-embed-panel button:hover{background-color:#3f3f46}.orquesta-embed-panel button.bg-blue-500,.orquesta-embed-panel button.bg-blue-600{background-color:#3b82f6!important}.orquesta-embed-panel button.bg-blue-500:hover,.orquesta-embed-panel button.bg-blue-600:hover{background-color:#2563eb!important}@keyframes orquesta-panel-enter{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.orquesta-embed-trigger{animation:orquesta-trigger-enter .3s ease-out}@keyframes orquesta-trigger-enter{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.orquesta-log-stream{background:#0a0a0a;border:1px solid #27272a;border-radius:6px;padding:8px}.orquesta-timeline button:hover{transform:translateX(2px)}@media (max-width:480px){.orquesta-embed-panel{bottom:8px!important;left:8px!important;max-height:70vh!important;position:fixed!important;right:8px!important;top:auto!important;width:auto!important}}
|