@wix/astro 0.2.13 → 0.2.15

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 (80) hide show
  1. package/dist/components/TailwindEditor/EditorPanel.d.ts +11 -0
  2. package/dist/components/TailwindEditor/EditorPanel.js +86 -0
  3. package/dist/components/TailwindEditor/dev-toolbar-app.d.ts +14 -0
  4. package/dist/components/TailwindEditor/dev-toolbar-app.js +39 -0
  5. package/dist/components/TailwindEditor/dev-toolbar.d.ts +13 -0
  6. package/dist/components/TailwindEditor/dev-toolbar.js +547 -0
  7. package/dist/components/TailwindEditor/index.d.ts +5 -0
  8. package/dist/components/TailwindEditor/index.js +155 -0
  9. package/dist/components/TailwindEditor/integration.d.ts +3 -0
  10. package/dist/components/TailwindEditor/integration.js +18 -0
  11. package/dist/components/TailwindEditor/types.d.ts +35 -0
  12. package/dist/components/TailwindEditor/types.js +2 -0
  13. package/dist/components/TailwindEditor/utils.d.ts +22 -0
  14. package/dist/components/TailwindEditor/utils.js +234 -0
  15. package/dist/components/login-helpers/bi-header-generator.d.ts +11 -0
  16. package/dist/components/login-helpers/bi-header-generator.js +18 -0
  17. package/dist/components/login-helpers/iframeUtils.d.ts +4 -0
  18. package/dist/components/login-helpers/iframeUtils.js +44 -0
  19. package/dist/components/login-helpers/login-helpers.d.ts +39 -0
  20. package/dist/components/login-helpers/login-helpers.js +117 -0
  21. package/dist/dev-toolbar/Editor/EditorPanel.d.ts +14 -0
  22. package/dist/dev-toolbar/Editor/EditorPanel.js +1273 -0
  23. package/dist/dev-toolbar/Editor/classes.d.ts +12 -0
  24. package/dist/dev-toolbar/Editor/classes.js +271 -0
  25. package/dist/dev-toolbar/Editor/dnd.d.ts +34 -0
  26. package/dist/dev-toolbar/Editor/dnd.js +1161 -0
  27. package/dist/dev-toolbar/Editor/index.d.ts +5 -0
  28. package/dist/dev-toolbar/Editor/index.js +136 -0
  29. package/dist/dev-toolbar/Editor/types.d.ts +42 -0
  30. package/dist/dev-toolbar/Editor/types.js +2 -0
  31. package/dist/dev-toolbar/agent-chat.d.ts +14 -0
  32. package/dist/dev-toolbar/agent-chat.js +362 -0
  33. package/dist/dev-toolbar/ai-agent-server.d.ts +1 -0
  34. package/dist/dev-toolbar/ai-agent-server.js +174 -0
  35. package/dist/dev-toolbar/ai-agent.d.ts +2 -0
  36. package/dist/dev-toolbar/ai-agent.js +171 -0
  37. package/dist/dev-toolbar/api-key-form.d.ts +7 -0
  38. package/dist/dev-toolbar/api-key-form.js +138 -0
  39. package/dist/dev-toolbar/astro-toolbar.d.ts +1156 -0
  40. package/dist/dev-toolbar/astro-toolbar.js +29 -0
  41. package/dist/dev-toolbar/editor.d.ts +2 -0
  42. package/dist/dev-toolbar/editor.js +19 -0
  43. package/dist/integration.d.ts +3 -1
  44. package/dist/integration.js +41 -10
  45. package/dist/routes/auth/callback.js +1 -1
  46. package/dist/src/auth-context.d.ts +5 -0
  47. package/dist/src/auth-context.js +3 -0
  48. package/dist/src/client.d.ts +15 -0
  49. package/dist/src/client.js +17 -0
  50. package/dist/src/entrypoints/server.d.ts +13 -0
  51. package/dist/src/entrypoints/server.js +37 -0
  52. package/dist/src/index.d.ts +5 -0
  53. package/dist/src/index.js +5 -0
  54. package/dist/src/integration.d.ts +8 -0
  55. package/dist/src/integration.js +229 -0
  56. package/dist/src/loaders/blog.d.ts +2 -0
  57. package/dist/src/loaders/blog.js +49 -0
  58. package/dist/src/loaders/index.d.ts +2 -0
  59. package/dist/src/loaders/index.js +3 -0
  60. package/dist/src/middleware.d.ts +2 -0
  61. package/dist/src/middleware.js +90 -0
  62. package/dist/src/routes/auth/callback.d.ts +3 -0
  63. package/dist/src/routes/auth/callback.js +53 -0
  64. package/dist/src/routes/auth/constants.d.ts +5 -0
  65. package/dist/src/routes/auth/constants.js +6 -0
  66. package/dist/src/routes/auth/login.d.ts +3 -0
  67. package/dist/src/routes/auth/login.js +27 -0
  68. package/dist/src/routes/auth/logout-callback.d.ts +3 -0
  69. package/dist/src/routes/auth/logout-callback.js +10 -0
  70. package/dist/src/routes/auth/logout.d.ts +3 -0
  71. package/dist/src/routes/auth/logout.js +11 -0
  72. package/dist/src/routes/auth/runtime.d.ts +5 -0
  73. package/dist/src/routes/auth/runtime.js +8 -0
  74. package/dist/src/runtime.d.ts +2 -0
  75. package/dist/src/runtime.js +9 -0
  76. package/dist/src/vite-plugins/sdk-context.d.ts +4 -0
  77. package/dist/src/vite-plugins/sdk-context.js +68 -0
  78. package/dist/vite-plugins/sdk-context.d.ts +3 -1
  79. package/dist/vite-plugins/sdk-context.js +51 -70
  80. package/package.json +6 -3
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ interface EditorProps {
3
+ }
4
+ declare const Editor: React.FC<EditorProps>;
5
+ export default Editor;
@@ -0,0 +1,136 @@
1
+ import { debounce } from "lodash";
2
+ import React, { useEffect, useState } from "react";
3
+ import EditorPanel from "./EditorPanel.js";
4
+ import { ButtonBar, endAllDrag, useDragLoaderInit } from "./dnd.js";
5
+ import { selectedElement, selectedTextNode, constructChangeSet, backupClasses, restoreClasses, syncClasses, handleArrowKeys, setSelectedElement, clearClassChanges, } from "./classes.js";
6
+ import { createPortal } from "react-dom";
7
+ let selectionMode = false;
8
+ async function onSaveChanges() {
9
+ let changes = constructChangeSet() || [];
10
+ // No need to get moveChanges since they are applied immediately
11
+ if (changes.length === 0)
12
+ return;
13
+ try {
14
+ // Only send regular changes - moveChanges are applied immediately
15
+ const response = await fetch("http://localhost:3000/api/chat/canvas/change", {
16
+ method: "POST",
17
+ headers: {
18
+ "Content-Type": "application/json",
19
+ },
20
+ body: JSON.stringify(changes),
21
+ });
22
+ if (!response.ok) {
23
+ console.error("Editor: HTTP error response:", response.status, response.statusText);
24
+ throw new Error(`HTTP error! status: ${response.status}`);
25
+ }
26
+ await response.json();
27
+ }
28
+ catch (error) {
29
+ console.error("Editor: Error applying changes:", error);
30
+ }
31
+ // No need to clear component move changes as they're cleared when applied
32
+ clearClassChanges();
33
+ }
34
+ // Handle arrow key presses to adjust margins
35
+ let debouncedSave = debounce(onSaveChanges, 500);
36
+ const Editor = ({}) => {
37
+ const [showPanel, setShowPanel] = useState(false);
38
+ const [pos, setPos] = useState(null);
39
+ // Initialize the drag loader
40
+ useDragLoaderInit();
41
+ function toggleEditMode() {
42
+ let toggle = document.querySelector(".edit-mode-toggle i");
43
+ selectionMode = !selectionMode;
44
+ if (selectionMode) {
45
+ document.body.style.userSelect = "none";
46
+ document.body.style.cursor = "crosshair";
47
+ toggle.classList.replace("fa-edit", "fa-eye");
48
+ document.addEventListener("click", selectElement, true);
49
+ }
50
+ else {
51
+ clearSelection();
52
+ document.body.style.userSelect = "";
53
+ document.body.style.cursor = "";
54
+ toggle.classList.replace("fa-eye", "fa-edit");
55
+ document.removeEventListener("click", selectElement, true);
56
+ }
57
+ }
58
+ function selectElement(e) {
59
+ if (!(e.target instanceof HTMLElement) ||
60
+ e.target.closest("#side-panel") ||
61
+ e.target.closest(".element-label button") ||
62
+ e.target.closest(".edit-mode-toggle"))
63
+ return;
64
+ e.preventDefault();
65
+ e.stopPropagation();
66
+ clearSelection();
67
+ highlight(setSelectedElement(e.target));
68
+ }
69
+ function highlight(el) {
70
+ if (!el)
71
+ return;
72
+ el.style.outline = "2px solid #4caf50"; //todo: make this absolutely positioned
73
+ const rect = el.getBoundingClientRect();
74
+ setPos({
75
+ x: window.scrollX + rect.left,
76
+ y: window.scrollY + rect.top - 20,
77
+ });
78
+ // Add a thin border around the selected element
79
+ el.style.outline = "2px solid blue";
80
+ el.dataset["selected"] = "true";
81
+ }
82
+ function clearSelection() {
83
+ setPos(null);
84
+ if (selectedElement)
85
+ selectedElement.style.outline = "";
86
+ endAllDrag();
87
+ setShowPanel(false);
88
+ setSelectedElement(null);
89
+ }
90
+ useEffect(() => {
91
+ // Create container if it doesn't exist
92
+ let container = document.querySelector('.editor-buttons-container');
93
+ if (!container) {
94
+ container = document.createElement('div');
95
+ container.className = 'editor-buttons-container';
96
+ document.body.appendChild(container);
97
+ }
98
+ else {
99
+ // Clear existing buttons to prevent duplicates
100
+ container.innerHTML = '';
101
+ }
102
+ let element = document.createElement("button");
103
+ element.className = "edit-mode-toggle";
104
+ element.innerHTML = "<i class='fa-regular fa-edit'></i>";
105
+ element.addEventListener("click", toggleEditMode);
106
+ container.appendChild(element);
107
+ let addButton = document.createElement("button");
108
+ addButton.classList.add("add-panel-toggle");
109
+ addButton.innerHTML = "<i class='fa-regular fa-plus'></i>";
110
+ container.appendChild(addButton);
111
+ document.addEventListener("keydown", handleArrowKeys.bind(0, debouncedSave));
112
+ // Return cleanup function
113
+ return () => {
114
+ element.removeEventListener("click", toggleEditMode);
115
+ };
116
+ }, []);
117
+ return (React.createElement(React.Fragment, null,
118
+ pos &&
119
+ createPortal(React.createElement("div", { className: "element-label", style: { left: `${pos.x}px`, top: `${pos.y}px` } },
120
+ React.createElement("span", null,
121
+ "<",
122
+ selectedElement?.tagName.toLowerCase(),
123
+ ">"),
124
+ React.createElement("button", { onClick: (e) => {
125
+ e.preventDefault();
126
+ e.stopPropagation();
127
+ setShowPanel(true);
128
+ } }, "Edit"),
129
+ React.createElement(ButtonBar, { el: selectedElement, onHighlight: highlight, dragButtonClassNames: "fa fa-arrows" })), document.body),
130
+ showPanel && (React.createElement(EditorPanel, { selectedElement: selectedElement, selectedTextNode: selectedTextNode, onSaveChanges: async () => {
131
+ await onSaveChanges();
132
+ clearSelection();
133
+ }, onMainComponentCheckbox: (e) => e.target.checked ? backupClasses(true) : restoreClasses(true), onChange: () => syncClasses(), onClose: () => clearSelection() }))));
134
+ };
135
+ export default Editor;
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGV2LXRvb2xiYXIvRWRpdG9yL2luZGV4LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNuRCxPQUFPLFdBQVcsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixpQkFBaUIsRUFDbEIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixjQUFjLEVBQ2QsV0FBVyxFQUNYLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsaUJBQWlCLEdBQ2xCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJekMsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO0FBRTFCLEtBQUssVUFBVSxhQUFhO0lBQzFCLElBQUksT0FBTyxHQUFHLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDO0lBRXpDLGdFQUFnRTtJQUNoRSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU87SUFFakMsSUFBSSxDQUFDO1FBQ0gsa0VBQWtFO1FBQ2xFLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUMxQiw4Q0FBOEMsRUFDOUM7WUFDRSxNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1NBQzlCLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7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
@@ -0,0 +1,42 @@
1
+ export type ChangeSetItem = {
2
+ file: string;
3
+ line: number;
4
+ instruction: {
5
+ type: string;
6
+ delta?: {
7
+ added: string[];
8
+ removed: string[];
9
+ };
10
+ textContent?: string;
11
+ propName?: string;
12
+ path?: string;
13
+ } | ComponentMoveInstruction;
14
+ };
15
+ export type ComponentMoveInstruction = {
16
+ type: "componentMove";
17
+ timestamp: string;
18
+ component: string;
19
+ toLine: number;
20
+ parentNode: string;
21
+ parentId: string | null;
22
+ originalParentNode?: string;
23
+ originalParentId?: string | null;
24
+ };
25
+ export type ClassChangeInstruction = {
26
+ type: "class_change";
27
+ propName?: string;
28
+ path?: string;
29
+ delta?: {
30
+ added: string[];
31
+ removed: string[];
32
+ };
33
+ };
34
+ export type TextChangeInstruction = {
35
+ type: "replace_text";
36
+ textContent: string;
37
+ };
38
+ export type SchemaMap = {
39
+ [componentName: string]: {
40
+ [selector: string]: ClassChangeInstruction;
41
+ };
42
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGV2LXRvb2xiYXIvRWRpdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ export type MessageRole = "user" | "assistant" | "tool";
3
+ export interface Message {
4
+ role: MessageRole;
5
+ content: string;
6
+ toolName?: string;
7
+ toolResult?: string;
8
+ }
9
+ export interface AgentChatProps {
10
+ messages: Message[];
11
+ isTyping: boolean;
12
+ onSendMessage: (message: string) => void;
13
+ }
14
+ export declare function AgentChat({ messages, isTyping, onSendMessage }: AgentChatProps): React.JSX.Element;
@@ -0,0 +1,362 @@
1
+ import React, { useEffect, useState, useRef } from "react";
2
+ import ReactMarkdown from 'react-markdown';
3
+ import remarkGfm from 'remark-gfm';
4
+ // Modern system font stack
5
+ const fontFamily = `-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"`;
6
+ // Custom components for react-markdown
7
+ const MarkdownComponents = {
8
+ // Keep consistent styling with our CSS
9
+ p: (props) => React.createElement("p", { style: { margin: '0 0 8px 0', fontSize: '14px' }, ...props }),
10
+ h1: (props) => React.createElement("h1", { style: { fontSize: '1.5em', fontWeight: 600, marginTop: '12px', marginBottom: '8px' }, ...props }),
11
+ h2: (props) => React.createElement("h2", { style: { fontSize: '1.3em', fontWeight: 600, marginTop: '12px', marginBottom: '8px' }, ...props }),
12
+ h3: (props) => React.createElement("h3", { style: { fontSize: '1.1em', fontWeight: 600, marginTop: '12px', marginBottom: '8px' }, ...props }),
13
+ ul: (props) => React.createElement("ul", { style: { margin: '8px 0', paddingLeft: '20px' }, ...props }),
14
+ ol: (props) => React.createElement("ol", { style: { margin: '8px 0', paddingLeft: '20px' }, ...props }),
15
+ blockquote: (props) => (React.createElement("blockquote", { style: { margin: '8px 0', paddingLeft: '12px', borderLeft: '3px solid #d1d5db', color: '#4b5563' }, ...props })),
16
+ code({ className, children, ...props }) {
17
+ // Special handling for code blocks
18
+ const match = /language-(\w+)/.exec(className || '');
19
+ return match ? (React.createElement("pre", { style: { backgroundColor: '#f3f4f6', padding: '8px', borderRadius: '4px', overflowX: 'auto', margin: '8px 0' } },
20
+ React.createElement("code", { style: {
21
+ fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',
22
+ fontSize: '0.9em',
23
+ backgroundColor: 'transparent',
24
+ padding: 0
25
+ }, ...props }, children))) : (React.createElement("code", { style: {
26
+ fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',
27
+ fontSize: '0.9em',
28
+ backgroundColor: '#f3f4f6',
29
+ padding: '2px 4px',
30
+ borderRadius: '3px'
31
+ }, ...props }, children));
32
+ },
33
+ a: (props) => React.createElement("a", { style: { color: '#2563eb', textDecoration: 'none' }, ...props }),
34
+ table: (props) => (React.createElement("table", { style: { borderCollapse: 'collapse', margin: '8px 0', overflowX: 'auto', display: 'block' }, ...props })),
35
+ th: (props) => React.createElement("th", { style: { border: '1px solid #d1d5db', padding: '6px 10px', backgroundColor: '#f9fafb' }, ...props }),
36
+ td: (props) => React.createElement("td", { style: { border: '1px solid #d1d5db', padding: '6px 10px' }, ...props })
37
+ };
38
+ export function AgentChat({ messages, isTyping, onSendMessage }) {
39
+ const [inputValue, setInputValue] = useState("");
40
+ const [isOpen, setIsOpen] = useState(true);
41
+ const [isVisible, setIsVisible] = useState(true);
42
+ const [buttonHovered, setButtonHovered] = useState(false);
43
+ const messagesContainerRef = useRef(null);
44
+ // Handle animation when opening/closing
45
+ useEffect(() => {
46
+ if (isOpen) {
47
+ // Small delay before making visible for animation
48
+ setTimeout(() => {
49
+ setIsVisible(true);
50
+ }, 50);
51
+ }
52
+ else {
53
+ setIsVisible(false);
54
+ }
55
+ }, [isOpen]);
56
+ const handleSendMessage = () => {
57
+ if (!inputValue.trim())
58
+ return;
59
+ // Call the onSendMessage prop with the input value
60
+ onSendMessage(inputValue);
61
+ // Clear input field
62
+ setInputValue("");
63
+ };
64
+ // Improved scroll to bottom on new message
65
+ useEffect(() => {
66
+ if (messagesContainerRef.current) {
67
+ // Use requestAnimationFrame to ensure DOM updates are complete
68
+ requestAnimationFrame(() => {
69
+ // Add a small delay to allow any rendering to complete
70
+ setTimeout(() => {
71
+ if (messagesContainerRef.current) {
72
+ messagesContainerRef.current.scrollTop = messagesContainerRef.current.scrollHeight;
73
+ }
74
+ }, 100);
75
+ });
76
+ }
77
+ }, [messages, isTyping]);
78
+ return (React.createElement("div", { style: {
79
+ height: '100%',
80
+ width: '100%',
81
+ overflow: 'hidden',
82
+ fontFamily: fontFamily
83
+ } },
84
+ React.createElement("button", { onClick: () => setIsOpen(!isOpen), style: {
85
+ position: 'fixed',
86
+ top: '50%',
87
+ right: 0,
88
+ transform: isOpen ? 'translateY(-50%) translateX(32px)' : 'translateY(-50%)',
89
+ height: '112px',
90
+ width: '32px',
91
+ backgroundColor: '#2563eb',
92
+ color: 'white',
93
+ borderRadius: '4px 0 0 4px',
94
+ display: 'flex',
95
+ alignItems: 'center',
96
+ justifyContent: 'center',
97
+ cursor: 'pointer',
98
+ zIndex: 40,
99
+ boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',
100
+ border: 'none',
101
+ transition: 'transform 0.3s ease',
102
+ fontFamily: fontFamily
103
+ }, title: isOpen ? "Close AI Assistant" : "Open AI Assistant" },
104
+ React.createElement("div", { style: {
105
+ transition: 'transform 0.3s ease',
106
+ transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)'
107
+ } },
108
+ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", style: { height: '20px', width: '20px' }, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" },
109
+ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" })))),
110
+ React.createElement("div", { style: {
111
+ position: 'fixed',
112
+ top: 0,
113
+ right: 0,
114
+ width: '350px',
115
+ height: '100%',
116
+ backgroundColor: 'white',
117
+ boxShadow: '-2px 0 10px rgba(0, 0, 0, 0.1)',
118
+ zIndex: 30,
119
+ display: 'flex',
120
+ flexDirection: 'column',
121
+ overflow: 'hidden',
122
+ borderLeft: '1px solid #e5e7eb',
123
+ transition: 'transform 0.3s ease',
124
+ transform: isVisible ? 'translateX(0)' : 'translateX(100%)',
125
+ fontFamily: fontFamily
126
+ } },
127
+ React.createElement("div", { style: {
128
+ backgroundColor: '#2563eb',
129
+ color: 'white',
130
+ padding: '16px',
131
+ display: 'flex',
132
+ justifyContent: 'space-between',
133
+ alignItems: 'center'
134
+ } },
135
+ React.createElement("h3", { style: {
136
+ fontWeight: 600,
137
+ fontSize: '16px',
138
+ display: 'flex',
139
+ alignItems: 'center',
140
+ gap: '8px',
141
+ margin: 0,
142
+ letterSpacing: '-0.01em',
143
+ fontFamily: fontFamily
144
+ } },
145
+ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", style: { height: '24px', width: '24px', marginRight: '4px' }, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" },
146
+ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z" })),
147
+ "Wix AI Assistant")),
148
+ React.createElement("div", { ref: messagesContainerRef, id: "messages-container", style: {
149
+ flex: 1,
150
+ overflowY: 'auto',
151
+ padding: '10px',
152
+ backgroundColor: '#f9fafb',
153
+ display: 'flex',
154
+ flexDirection: 'column',
155
+ gap: '16px',
156
+ fontFamily: fontFamily,
157
+ scrollBehavior: 'smooth'
158
+ } }, messages.length === 0 ? (React.createElement("div", { style: {
159
+ display: 'flex',
160
+ flexDirection: 'column',
161
+ alignItems: 'center',
162
+ justifyContent: 'center',
163
+ textAlign: 'center',
164
+ height: '100%',
165
+ padding: '20px',
166
+ color: '#6b7280'
167
+ } },
168
+ React.createElement("div", { style: {
169
+ backgroundColor: '#e5e7eb',
170
+ borderRadius: '50%',
171
+ width: '60px',
172
+ height: '60px',
173
+ display: 'flex',
174
+ alignItems: 'center',
175
+ justifyContent: 'center',
176
+ marginBottom: '16px'
177
+ } },
178
+ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", style: { height: '30px', width: '30px', color: '#4b5563' }, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor" },
179
+ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 10h.01M12 10h.01M16 10h.01M9 16H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-5l-5 5v-5z" }))),
180
+ React.createElement("h4", { style: {
181
+ fontSize: '16px',
182
+ fontWeight: 600,
183
+ margin: '0 0 8px 0',
184
+ color: '#374151'
185
+ } }, "No messages yet"),
186
+ React.createElement("p", { style: {
187
+ fontSize: '14px',
188
+ lineHeight: '1.5',
189
+ margin: 0,
190
+ maxWidth: '280px'
191
+ } }, "Start asking questions about your Wix project, get help with coding, or learn about best practices."))) : (React.createElement(React.Fragment, null,
192
+ messages.map((message, index) => (React.createElement("div", { key: index, style: {
193
+ display: 'flex',
194
+ width: '100%',
195
+ justifyContent: message.role === 'user' ? 'flex-end' : 'flex-start'
196
+ } },
197
+ message.role === 'assistant' && (React.createElement("div", { style: {
198
+ maxWidth: '95%',
199
+ paddingLeft: '4px',
200
+ paddingRight: '8px',
201
+ color: '#1f2937'
202
+ } },
203
+ React.createElement("div", { className: "markdown-content", style: {
204
+ fontSize: '14px',
205
+ fontFamily: fontFamily
206
+ } },
207
+ React.createElement(ReactMarkdown, { remarkPlugins: [remarkGfm], components: MarkdownComponents }, message.content)))),
208
+ message.role === 'user' && (React.createElement("div", { style: {
209
+ backgroundColor: '#2563eb',
210
+ color: 'white',
211
+ borderRadius: '10px',
212
+ padding: '8px 10px',
213
+ maxWidth: '85%',
214
+ boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)'
215
+ } },
216
+ React.createElement("p", { style: {
217
+ fontSize: '14px',
218
+ lineHeight: '1.4',
219
+ color: 'white',
220
+ margin: 0,
221
+ fontFamily: fontFamily
222
+ } }, message.content))),
223
+ message.role === 'tool' && (React.createElement("div", { style: {
224
+ backgroundColor: '#f3f4f6',
225
+ borderRadius: '6px',
226
+ padding: '8px 10px',
227
+ maxWidth: '95%',
228
+ width: '100%',
229
+ borderLeft: '3px solid #9ca3af',
230
+ marginLeft: '4px'
231
+ } },
232
+ React.createElement("div", { style: {
233
+ display: 'flex',
234
+ alignItems: 'center',
235
+ gap: '6px',
236
+ marginBottom: '6px'
237
+ } },
238
+ React.createElement("span", { style: {
239
+ fontSize: '11px',
240
+ fontWeight: 600,
241
+ backgroundColor: '#e5e7eb',
242
+ color: '#4b5563',
243
+ padding: '2px 6px',
244
+ borderRadius: '3px',
245
+ fontFamily: fontFamily
246
+ } }, message.toolName),
247
+ React.createElement("span", { style: {
248
+ fontSize: '11px',
249
+ color: '#6b7280',
250
+ fontFamily: fontFamily
251
+ } }, "Tool")),
252
+ React.createElement("p", { style: {
253
+ fontSize: '14px',
254
+ lineHeight: '1.4',
255
+ color: '#1f2937',
256
+ marginBottom: '6px',
257
+ marginTop: 0,
258
+ fontFamily: fontFamily
259
+ } }, message.content),
260
+ message.toolResult && (React.createElement("div", { style: {
261
+ backgroundColor: 'white',
262
+ padding: '6px',
263
+ borderRadius: '4px',
264
+ border: '1px solid #e5e7eb',
265
+ fontSize: '12px',
266
+ fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',
267
+ overflowX: 'auto'
268
+ } },
269
+ React.createElement("pre", { style: {
270
+ whiteSpace: 'pre-wrap',
271
+ margin: 0,
272
+ lineHeight: '1.4'
273
+ } }, message.toolResult)))))))),
274
+ isTyping && (React.createElement("div", { style: {
275
+ display: 'flex',
276
+ justifyContent: 'flex-start'
277
+ } },
278
+ React.createElement("div", { style: {
279
+ maxWidth: '95%',
280
+ paddingLeft: '4px',
281
+ paddingRight: '8px',
282
+ color: '#1f2937'
283
+ } },
284
+ React.createElement("div", { style: {
285
+ display: 'flex',
286
+ gap: '4px',
287
+ alignItems: 'center'
288
+ } },
289
+ React.createElement("div", { style: {
290
+ width: '6px',
291
+ height: '6px',
292
+ borderRadius: '50%',
293
+ backgroundColor: '#6b7280',
294
+ animation: 'pulseDot 1.5s infinite ease-in-out',
295
+ animationDelay: '0s'
296
+ } }),
297
+ React.createElement("div", { style: {
298
+ width: '6px',
299
+ height: '6px',
300
+ borderRadius: '50%',
301
+ backgroundColor: '#6b7280',
302
+ animation: 'pulseDot 1.5s infinite ease-in-out',
303
+ animationDelay: '0.2s'
304
+ } }),
305
+ React.createElement("div", { style: {
306
+ width: '6px',
307
+ height: '6px',
308
+ borderRadius: '50%',
309
+ backgroundColor: '#6b7280',
310
+ animation: 'pulseDot 1.5s infinite ease-in-out',
311
+ animationDelay: '0.4s'
312
+ } })))))))),
313
+ React.createElement("div", { style: {
314
+ borderTop: '1px solid #e5e7eb',
315
+ padding: '10px 12px',
316
+ backgroundColor: 'white'
317
+ } },
318
+ React.createElement("div", { style: {
319
+ display: 'flex',
320
+ gap: '6px'
321
+ } },
322
+ React.createElement("input", { type: "text", placeholder: "Ask me anything...", style: {
323
+ flex: 1,
324
+ border: '1px solid #d1d5db',
325
+ borderRadius: '10px',
326
+ padding: '12px 16px',
327
+ outline: 'none',
328
+ fontSize: '14px',
329
+ fontFamily: fontFamily,
330
+ color: '#374151',
331
+ lineHeight: '1.5',
332
+ transition: 'border-color 0.2s, box-shadow 0.2s'
333
+ }, value: inputValue, onChange: (e) => setInputValue(e.target.value), onKeyPress: (e) => e.key === 'Enter' && handleSendMessage(), onFocus: (e) => {
334
+ e.target.style.borderColor = '#93c5fd';
335
+ e.target.style.boxShadow = '0 0 0 3px rgba(59, 130, 246, 0.25)';
336
+ }, onBlur: (e) => {
337
+ e.target.style.borderColor = '#d1d5db';
338
+ e.target.style.boxShadow = 'none';
339
+ } }),
340
+ React.createElement("button", { onClick: handleSendMessage, style: {
341
+ backgroundColor: buttonHovered ? '#333333' : '#2d2d2d',
342
+ color: 'white',
343
+ borderRadius: '6px',
344
+ padding: '0 12px',
345
+ height: '36px',
346
+ cursor: 'pointer',
347
+ border: 'none',
348
+ display: 'flex',
349
+ alignItems: 'center',
350
+ justifyContent: 'center',
351
+ gap: '6px',
352
+ transition: 'background-color 0.2s',
353
+ fontFamily: fontFamily,
354
+ fontSize: '14px',
355
+ fontWeight: 500
356
+ }, onMouseOver: () => setButtonHovered(true), onMouseOut: () => setButtonHovered(false), title: "Send message (or press Enter)" },
357
+ "Send",
358
+ React.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { marginLeft: '2px' } },
359
+ React.createElement("path", { d: "M6 3.5C8.5 3.5 10.5 5.5 10.5 8", stroke: "white", strokeWidth: "1.2", strokeLinecap: "round" }),
360
+ React.createElement("path", { d: "M8.5 6L10.5 8L12.5 6", stroke: "white", strokeWidth: "1.2", strokeLinecap: "round", strokeLinejoin: "round" }))))))));
361
+ }
362
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtY2hhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZXYtdG9vbGJhci9hZ2VudC1jaGF0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzNELE9BQU8sYUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUVuQywyQkFBMkI7QUFDM0IsTUFBTSxVQUFVLEdBQUcsK0lBQStJLENBQUM7QUFrQm5LLHVDQUF1QztBQUN2QyxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLHVDQUF1QztJQUN2QyxDQUFDLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLDJCQUFHLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFNLEtBQUssR0FBSTtJQUNyRixFQUFFLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLDRCQUFJLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBTSxLQUFLLEdBQUk7SUFDNUgsRUFBRSxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyw0QkFBSSxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQU0sS0FBSyxHQUFJO0lBQzVILEVBQUUsRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsNEJBQUksS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxN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
@@ -0,0 +1 @@
1
+ export declare function setupAIAgentServer(toolbar: any): void;