@vite-plugin-opencode-assistant/components 1.0.37 → 1.0.39

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 (47) hide show
  1. package/es/index.d.ts +1 -1
  2. package/es/index.js +1 -1
  3. package/es/open-code-widget/composables/use-persist-state.d.ts +2 -0
  4. package/es/open-code-widget/composables/use-persist-state.js +24 -9
  5. package/es/open-code-widget/composables/use-split.d.ts +24 -0
  6. package/es/open-code-widget/composables/use-split.js +90 -0
  7. package/es/open-code-widget/src/components/ChatPanel-sfc.css +1 -0
  8. package/es/open-code-widget/src/components/ChatPanel.vue.d.ts +180 -0
  9. package/es/open-code-widget/src/components/ChatPanel.vue.js +288 -0
  10. package/es/open-code-widget/src/components/Header.vue.js +13 -8
  11. package/es/open-code-widget/src/components/ResizeHandle-sfc.css +1 -0
  12. package/es/open-code-widget/src/components/ResizeHandle.vue.d.ts +19 -0
  13. package/es/open-code-widget/src/components/ResizeHandle.vue.js +91 -0
  14. package/es/open-code-widget/src/components/SplitTrigger-sfc.css +1 -0
  15. package/es/open-code-widget/src/components/SplitTrigger.vue.d.ts +17 -0
  16. package/es/open-code-widget/src/components/SplitTrigger.vue.js +130 -0
  17. package/es/open-code-widget/src/context.d.ts +1 -0
  18. package/es/open-code-widget/src/index-sfc.css +1 -1
  19. package/es/open-code-widget/src/index.vue.d.ts +16 -53
  20. package/es/open-code-widget/src/index.vue.js +150 -140
  21. package/es/open-code-widget/src/types.d.ts +1 -1
  22. package/lib/@vite-plugin-opencode-assistant/components.cjs.js +806 -248
  23. package/lib/@vite-plugin-opencode-assistant/components.es.js +802 -244
  24. package/lib/components.css +5 -3
  25. package/lib/index.d.ts +1 -1
  26. package/lib/index.js +1 -1
  27. package/lib/open-code-widget/composables/use-persist-state.d.ts +2 -0
  28. package/lib/open-code-widget/composables/use-persist-state.js +24 -9
  29. package/lib/open-code-widget/composables/use-split.d.ts +24 -0
  30. package/lib/open-code-widget/composables/use-split.js +109 -0
  31. package/lib/open-code-widget/src/components/ChatPanel-sfc.css +1 -0
  32. package/lib/open-code-widget/src/components/ChatPanel.vue.d.ts +180 -0
  33. package/lib/open-code-widget/src/components/ChatPanel.vue.js +315 -0
  34. package/lib/open-code-widget/src/components/Header.vue.js +12 -7
  35. package/lib/open-code-widget/src/components/ResizeHandle-sfc.css +1 -0
  36. package/lib/open-code-widget/src/components/ResizeHandle.vue.d.ts +19 -0
  37. package/lib/open-code-widget/src/components/ResizeHandle.vue.js +108 -0
  38. package/lib/open-code-widget/src/components/SplitTrigger-sfc.css +1 -0
  39. package/lib/open-code-widget/src/components/SplitTrigger.vue.d.ts +17 -0
  40. package/lib/open-code-widget/src/components/SplitTrigger.vue.js +147 -0
  41. package/lib/open-code-widget/src/context.d.ts +1 -0
  42. package/lib/open-code-widget/src/index-sfc.css +1 -1
  43. package/lib/open-code-widget/src/index.vue.d.ts +16 -53
  44. package/lib/open-code-widget/src/index.vue.js +149 -139
  45. package/lib/open-code-widget/src/types.d.ts +1 -1
  46. package/lib/web-types.json +1 -1
  47. package/package.json +2 -2
@@ -16,6 +16,7 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
16
16
  resolvedTheme,
17
17
  minimized,
18
18
  promptDockVisible,
19
+ mode,
19
20
  handleToggleSessionList,
20
21
  handleToggleSelectMode,
21
22
  handleToggleTheme,
@@ -23,6 +24,7 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
23
24
  handleToggleMinimize,
24
25
  handleTogglePromptDock
25
26
  } = useOpenCodeWidgetContext();
27
+ const isSplitMode = computed(() => mode.value === "split");
26
28
  const themeIconTitle = computed(() => {
27
29
  const themeLabels = {
28
30
  auto: "\u81EA\u52A8",
@@ -39,12 +41,12 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
39
41
  };
40
42
  return `\u5207\u6362\u4E3B\u9898 - \u5F53\u524D: ${themeLabels[theme.value]}`;
41
43
  });
42
- const __returned__ = { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, minimized, promptDockVisible, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleClose, handleToggleMinimize, handleTogglePromptDock, themeIconTitle, themeIconLabel };
44
+ const __returned__ = { title, sessionListTitle, sessionListCollapsed, selectMode, selectEnabled, theme, resolvedTheme, minimized, promptDockVisible, mode, handleToggleSessionList, handleToggleSelectMode, handleToggleTheme, handleClose, handleToggleMinimize, handleTogglePromptDock, isSplitMode, themeIconTitle, themeIconLabel };
43
45
  Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
44
46
  return __returned__;
45
47
  }
46
48
  });
47
- import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createStaticVNode as _createStaticVNode } from "vue";
49
+ import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createStaticVNode as _createStaticVNode } from "vue";
48
50
  const _hoisted_1 = { class: "opencode-chat-header" };
49
51
  const _hoisted_2 = { class: "opencode-chat-header-left" };
50
52
  const _hoisted_3 = ["title", "aria-label", "aria-expanded"];
@@ -203,7 +205,8 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
203
205
  /* TEXT */
204
206
  ),
205
207
  _createElementVNode("div", _hoisted_10, [
206
- _createElementVNode("button", {
208
+ !$setup.isSplitMode ? (_openBlock(), _createElementBlock("button", {
209
+ key: 0,
207
210
  class: "opencode-header-btn prompt-dock",
208
211
  type: "button",
209
212
  title: $setup.promptDockVisible ? "\u9690\u85CF\u5BF9\u8BDD\u6846" : "\u663E\u793A\u5BF9\u8BDD\u6846",
@@ -230,8 +233,9 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
230
233
  /* CACHED */
231
234
  ))
232
235
  ])
233
- ], 8, _hoisted_11),
234
- _createElementVNode("button", {
236
+ ], 8, _hoisted_11)) : _createCommentVNode("v-if", true),
237
+ !$setup.isSplitMode ? (_openBlock(), _createElementBlock("button", {
238
+ key: 1,
235
239
  class: "opencode-header-btn minimize",
236
240
  type: "button",
237
241
  title: $setup.minimized ? "\u5C55\u5F00" : "\u6700\u5C0F\u5316",
@@ -258,8 +262,9 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
258
262
  )
259
263
  ])]))
260
264
  ])
261
- ], 8, _hoisted_12),
262
- _createElementVNode("button", {
265
+ ], 8, _hoisted_12)) : _createCommentVNode("v-if", true),
266
+ !$setup.isSplitMode ? (_openBlock(), _createElementBlock("button", {
267
+ key: 2,
263
268
  class: "opencode-header-btn close",
264
269
  type: "button",
265
270
  title: "\u5173\u95ED",
@@ -285,7 +290,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
285
290
  /* CACHED */
286
291
  ))
287
292
  ])
288
- ])
293
+ ])) : _createCommentVNode("v-if", true)
289
294
  ])
290
295
  ]);
291
296
  }
@@ -0,0 +1 @@
1
+ .opencode-resize-handle{position:absolute;left:0;top:0;bottom:0;width:6px;cursor:col-resize;background:transparent;z-index:10;transition:background .2s ease}.opencode-resize-handle:hover,.opencode-resize-handle.resizing{background:var(--oc-primary-bg)}.opencode-resize-handle:after{content:"";position:absolute;left:2px;top:50%;transform:translateY(-50%);width:2px;height:40px;background:var(--oc-border-secondary);border-radius:1px;opacity:0;transition:opacity .2s ease}.opencode-resize-handle:hover:after,.opencode-resize-handle.resizing:after{opacity:1}
@@ -0,0 +1,19 @@
1
+ type __VLS_Props = {
2
+ width: number;
3
+ minWidth?: number;
4
+ maxWidth?: number;
5
+ };
6
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
7
+ resize: (width: number) => any;
8
+ "resize-start": () => any;
9
+ "resize-end": () => any;
10
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
11
+ onResize?: ((width: number) => any) | undefined;
12
+ "onResize-start"?: (() => any) | undefined;
13
+ "onResize-end"?: (() => any) | undefined;
14
+ }>, {
15
+ width: number;
16
+ minWidth: number;
17
+ maxWidth: number;
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ export default _default;
@@ -0,0 +1,91 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import "./ResizeHandle-sfc.css";
21
+ import { defineComponent as _defineComponent } from "vue";
22
+ import { ref, onUnmounted } from "vue";
23
+ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValues({}, {
24
+ name: "ResizeHandle"
25
+ }), {
26
+ __name: "ResizeHandle",
27
+ props: {
28
+ width: { type: Number, required: true, default: 500 },
29
+ minWidth: { type: Number, required: false, default: 400 },
30
+ maxWidth: { type: Number, required: false, default: 800 }
31
+ },
32
+ emits: ["resize", "resize-start", "resize-end"],
33
+ setup(__props, { expose: __expose, emit: __emit }) {
34
+ __expose();
35
+ const props = __props;
36
+ const emit = __emit;
37
+ const isResizing = ref(false);
38
+ const startX = ref(0);
39
+ const startWidth = ref(0);
40
+ const handleMouseDown = (e) => {
41
+ e.preventDefault();
42
+ isResizing.value = true;
43
+ startX.value = e.clientX;
44
+ startWidth.value = props.width;
45
+ emit("resize-start");
46
+ document.addEventListener("mousemove", handleMouseMove);
47
+ document.addEventListener("mouseup", handleMouseUp);
48
+ };
49
+ const handleMouseMove = (e) => {
50
+ if (!isResizing.value) return;
51
+ const deltaX = startX.value - e.clientX;
52
+ const newWidth = Math.max(props.minWidth, Math.min(props.maxWidth, startWidth.value + deltaX));
53
+ emit("resize", newWidth);
54
+ };
55
+ const handleMouseUp = () => {
56
+ isResizing.value = false;
57
+ emit("resize-end");
58
+ document.removeEventListener("mousemove", handleMouseMove);
59
+ document.removeEventListener("mouseup", handleMouseUp);
60
+ };
61
+ const handleDoubleClick = () => {
62
+ emit("resize", 500);
63
+ };
64
+ onUnmounted(() => {
65
+ document.removeEventListener("mousemove", handleMouseMove);
66
+ document.removeEventListener("mouseup", handleMouseUp);
67
+ });
68
+ const __returned__ = { props, emit, isResizing, startX, startWidth, handleMouseDown, handleMouseMove, handleMouseUp, handleDoubleClick };
69
+ Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
70
+ return __returned__;
71
+ }
72
+ }));
73
+ import { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue";
74
+ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
75
+ return _openBlock(), _createElementBlock(
76
+ "div",
77
+ {
78
+ class: _normalizeClass(["opencode-resize-handle", { resizing: $setup.isResizing }]),
79
+ onMousedown: $setup.handleMouseDown,
80
+ onDblclick: $setup.handleDoubleClick
81
+ },
82
+ null,
83
+ 34
84
+ /* CLASS, NEED_HYDRATION */
85
+ );
86
+ }
87
+ __vue_sfc__.render = __vue_render__;
88
+ var ResizeHandle_vue_default = __vue_sfc__;
89
+ export {
90
+ ResizeHandle_vue_default as default
91
+ };
@@ -0,0 +1 @@
1
+ .opencode-split-trigger{position:fixed;right:0;top:50%;transform:translateY(-50%);width:20px;height:48px;background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:8px 0 0 8px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:-2px 0 8px rgba(59,130,246,.25);transition:right .3s ease,width .25s cubic-bezier(.4,0,.2,1),background .25s ease,box-shadow .25s ease;z-index:99998}.opencode-split-trigger:hover{width:24px;background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:-3px 0 12px rgba(59,130,246,.35)}.opencode-split-trigger.open{width:20px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:8px 0 0 8px;box-shadow:-2px 0 8px rgba(59,130,246,.25)}.opencode-split-trigger.open:hover{width:24px;background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:-3px 0 12px rgba(59,130,246,.35)}.opencode-split-trigger-icon{display:flex;align-items:center;justify-content:center;transition:transform .25s ease}.opencode-split-trigger:hover .opencode-split-trigger-icon{transform:scale(1.1)}.opencode-split-thinking-indicator{position:absolute;top:6px;right:6px;width:5px;height:5px;background:var(--oc-success);border-radius:50%;animation:opencode-thinking-pulse 1.5s ease-in-out infinite;box-shadow:0 0 4px rgba(16,185,129,.5)}@keyframes opencode-thinking-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.3)}}
@@ -0,0 +1,17 @@
1
+ type __VLS_Props = {
2
+ open?: boolean;
3
+ thinking?: boolean;
4
+ resolvedTheme?: "light" | "dark";
5
+ panelWidth?: number;
6
+ };
7
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
8
+ toggle: () => any;
9
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
10
+ onToggle?: (() => any) | undefined;
11
+ }>, {
12
+ resolvedTheme: "light" | "dark";
13
+ thinking: boolean;
14
+ open: boolean;
15
+ panelWidth: number;
16
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ export default _default;
@@ -0,0 +1,130 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import "./SplitTrigger-sfc.css";
21
+ import { defineComponent as _defineComponent } from "vue";
22
+ import { computed } from "vue";
23
+ const __vue_sfc__ = /* @__PURE__ */ _defineComponent(__spreadProps(__spreadValues({}, {
24
+ name: "SplitTrigger"
25
+ }), {
26
+ __name: "SplitTrigger",
27
+ props: {
28
+ open: { type: Boolean, required: false, default: false },
29
+ thinking: { type: Boolean, required: false, default: false },
30
+ resolvedTheme: { type: String, required: false, default: "light" },
31
+ panelWidth: { type: Number, required: false, default: 500 }
32
+ },
33
+ emits: ["toggle"],
34
+ setup(__props, { expose: __expose, emit: __emit }) {
35
+ __expose();
36
+ const props = __props;
37
+ const emit = __emit;
38
+ const buttonClasses = computed(() => [
39
+ "opencode-split-trigger",
40
+ {
41
+ open: props.open,
42
+ thinking: props.thinking,
43
+ "opencode-theme-dark": props.resolvedTheme === "dark"
44
+ }
45
+ ]);
46
+ const buttonStyle = computed(() => {
47
+ if (props.open) {
48
+ return {
49
+ right: `${props.panelWidth}px`
50
+ };
51
+ }
52
+ return {};
53
+ });
54
+ const handleClick = () => {
55
+ emit("toggle");
56
+ };
57
+ const __returned__ = { props, emit, buttonClasses, buttonStyle, handleClick };
58
+ Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
59
+ return __returned__;
60
+ }
61
+ }));
62
+ import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
63
+ const _hoisted_1 = ["aria-expanded"];
64
+ const _hoisted_2 = { class: "opencode-split-trigger-icon" };
65
+ const _hoisted_3 = {
66
+ key: 0,
67
+ viewBox: "0 0 24 24",
68
+ width: "16",
69
+ height: "16",
70
+ fill: "none",
71
+ stroke: "currentColor",
72
+ "stroke-width": "2"
73
+ };
74
+ const _hoisted_4 = {
75
+ key: 1,
76
+ viewBox: "0 0 24 24",
77
+ width: "16",
78
+ height: "16",
79
+ fill: "none",
80
+ stroke: "currentColor",
81
+ "stroke-width": "2"
82
+ };
83
+ const _hoisted_5 = {
84
+ key: 0,
85
+ class: "opencode-split-thinking-indicator"
86
+ };
87
+ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
88
+ return _openBlock(), _createElementBlock("button", {
89
+ class: _normalizeClass($setup.buttonClasses),
90
+ style: _normalizeStyle($setup.buttonStyle),
91
+ type: "button",
92
+ "aria-expanded": $props.open,
93
+ "aria-label": "\u6253\u5F00 AI \u52A9\u624B",
94
+ onClick: $setup.handleClick
95
+ }, [
96
+ _createElementVNode("span", _hoisted_2, [
97
+ $props.open ? (_openBlock(), _createElementBlock("svg", _hoisted_3, [..._cache[0] || (_cache[0] = [
98
+ _createElementVNode(
99
+ "path",
100
+ {
101
+ d: "M9 18l6-6-6-6",
102
+ "stroke-linecap": "round",
103
+ "stroke-linejoin": "round"
104
+ },
105
+ null,
106
+ -1
107
+ /* CACHED */
108
+ )
109
+ ])])) : (_openBlock(), _createElementBlock("svg", _hoisted_4, [..._cache[1] || (_cache[1] = [
110
+ _createElementVNode(
111
+ "path",
112
+ {
113
+ d: "M15 18l-6-6 6-6",
114
+ "stroke-linecap": "round",
115
+ "stroke-linejoin": "round"
116
+ },
117
+ null,
118
+ -1
119
+ /* CACHED */
120
+ )
121
+ ])]))
122
+ ]),
123
+ $props.thinking ? (_openBlock(), _createElementBlock("span", _hoisted_5)) : _createCommentVNode("v-if", true)
124
+ ], 14, _hoisted_1);
125
+ }
126
+ __vue_sfc__.render = __vue_render__;
127
+ var SplitTrigger_vue_default = __vue_sfc__;
128
+ export {
129
+ SplitTrigger_vue_default as default
130
+ };
@@ -24,6 +24,7 @@ export interface OpenCodeWidgetContext {
24
24
  minimized: Ref<boolean>;
25
25
  promptDockVisible: Ref<boolean>;
26
26
  bubbleOffset: Ref<FloatingBubbleOffset | undefined>;
27
+ mode: Ref<"bubble" | "split">;
27
28
  sessionStates: Ref<Record<string, OpencodeSessionThinkingState>>;
28
29
  iframeSource: Ref<string>;
29
30
  buttonActive: Ref<boolean>;
@@ -1 +1 @@
1
- .opencode-widget{--oc-bg-main: #ffffff;--oc-bg-secondary: #f8f9fa;--oc-bg-tertiary: #f3f4f6;--oc-overlay-bg: rgba(255, 255, 255, .9);--oc-bg-inverse: #1e1e1e;--oc-text-primary: #282828;--oc-text-secondary: #4b5563;--oc-text-tertiary: #6b7280;--oc-text-placeholder: #9ca3af;--oc-text-inverse: #ffffff;--oc-border-primary: #e5e7eb;--oc-border-secondary: #d1d5db;--oc-primary: #3b82f6;--oc-primary-hover: #2563eb;--oc-primary-bg: rgba(59, 130, 246, .1);--oc-danger: #ef4444;--oc-danger-hover: #dc2626;--oc-danger-active: #b91c1c;--oc-success: #10b981;--oc-overlay: rgba(0, 0, 0, .5);--oc-tooltip-bg: #1e1e1e;--oc-dialog-overlay: rgba(0, 0, 0, .5);--oc-thinking-gradient-1: #10b981;--oc-thinking-gradient-2: #059669;--oc-thinking-glow: rgba(16, 185, 129, .3);--oc-thinking-glow-strong: rgba(16, 185, 129, .6);--oc-skeleton-bg: #e5e7eb;--oc-skeleton-gradient: linear-gradient(90deg, #e5e7eb 25%, #f3f4f6 50%, #e5e7eb 75%);--oc-shadow-sm: 0 2px 4px rgba(0, 0, 0, .1);--oc-shadow-md: 0 4px 12px rgba(0, 0, 0, .15);--oc-shadow-lg: 0 8px 32px rgba(0, 0, 0, .12);--oc-shadow-xl: 0 20px 60px rgba(0, 0, 0, .3);--oc-shadow-primary: 0 2px 4px rgba(59, 130, 246, .2);--oc-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .3);--oc-shadow-danger: 0 4px 12px rgba(239, 68, 68, .3);--oc-trigger-bg: #3b82f6;--oc-trigger-bg-hover: #2563eb;--oc-trigger-bg-active: #1d4ed8;--oc-trigger-shadow: 0 2px 8px rgba(59, 130, 246, .3);--oc-trigger-shadow-hover: 0 4px 12px rgba(59, 130, 246, .4);--oc-trigger-shadow-active: 0 4px 12px rgba(59, 130, 246, .5);position:fixed;z-index:999999;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.opencode-widget.opencode-theme-dark{--oc-bg-main: #1a1a1a;--oc-bg-secondary: #1e1e1e;--oc-bg-tertiary: #282828;--oc-overlay-bg: rgba(26, 26, 26, .9);--oc-bg-inverse: #ffffff;--oc-text-primary: #f3f4f6;--oc-text-secondary: #d1d5db;--oc-text-tertiary: #9ca3af;--oc-text-placeholder: #6b7280;--oc-text-inverse: #282828;--oc-border-primary: #282828;--oc-border-secondary: #4b5563;--oc-primary: #3b82f6;--oc-primary-hover: #2563eb;--oc-primary-bg: rgba(59, 130, 246, .15);--oc-danger: #ef4444;--oc-danger-hover: #dc2626;--oc-danger-active: #b91c1c;--oc-success: #10b981;--oc-overlay: rgba(26, 26, 26, .9);--oc-tooltip-bg: #282828;--oc-dialog-overlay: rgba(0, 0, 0, .7);--oc-thinking-gradient-1: #34d399;--oc-thinking-gradient-2: #10b981;--oc-thinking-glow: rgba(52, 211, 153, .3);--oc-thinking-glow-strong: rgba(52, 211, 153, .6);--oc-skeleton-bg: #151515;--oc-skeleton-gradient: linear-gradient(90deg, #282828 25%, #4b5563 50%, #282828 75%);--oc-shadow-sm: 0 2px 4px rgba(0, 0, 0, .3);--oc-shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--oc-shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);--oc-shadow-xl: 0 20px 60px rgba(0, 0, 0, .6);--oc-shadow-primary: 0 2px 4px rgba(59, 130, 246, .3);--oc-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .4);--oc-shadow-danger: 0 4px 12px rgba(239, 68, 68, .4);--oc-trigger-bg: #60a5fa;--oc-trigger-bg-hover: #3b82f6;--oc-trigger-bg-active: #2563eb;--oc-trigger-shadow: 0 2px 8px rgba(96, 165, 250, .4);--oc-trigger-shadow-hover: 0 4px 12px rgba(96, 165, 250, .5);--oc-trigger-shadow-active: 0 4px 12px rgba(96, 165, 250, .6)}.opencode-chat{position:fixed;bottom:20px;width:700px;height:86vh;max-height:calc(100vh - 40px);background:var(--oc-bg-main);border-radius:16px;box-shadow:var(--oc-shadow-lg);overflow:hidden;opacity:0;visibility:hidden;transform:translate3d(var(---chatAnimationOrigin\.x),var(---chatAnimationOrigin\.y),0) scale(.95);transition:all .3s ease;display:flex;flex-direction:column;z-index:99999}.opencode-chat.open{opacity:1;visibility:visible;transform:translateZ(0) scale(1)}.opencode-chat.no-transition,.opencode-chat.no-transition.open{transition:none!important}.opencode-chat.minimized{width:300px;height:300px}.opencode-chat.minimized .opencode-iframe-container{margin-top:-146px}.opencode-chat-content{display:flex;flex:1;overflow:hidden}.opencode-notification{position:absolute;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 16px rgba(59,130,246,.4),0 0 0 2px rgba(59,130,246,.2);animation:slideDown .3s ease;z-index:10000000;display:flex;align-items:center;gap:10px}.opencode-notification:before{content:"\1f4a1";font-size:16px}.opencode-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--oc-dialog-overlay);display:flex;align-items:center;justify-content:center;z-index:9999999;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.opencode-dialog{background:var(--oc-bg-main);border-radius:12px;padding:24px;min-width:320px;max-width:400px;box-shadow:var(--oc-shadow-xl);animation:scaleIn .2s ease}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.opencode-dialog-content{margin-bottom:20px}.opencode-dialog-message{font-size:15px;color:var(--oc-text-primary);line-height:1.5}.opencode-dialog-actions{display:flex;gap:12px;justify-content:flex-end}.opencode-dialog-btn{padding:10px 20px;border-radius:8px;border:none;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.opencode-dialog-btn.cancel{background:var(--oc-bg-tertiary);color:var(--oc-text-primary)}.opencode-dialog-btn.cancel:hover{background:var(--oc-text-primary);color:var(--oc-bg-main)}.opencode-dialog-btn.confirm{background:var(--oc-danger);color:#fff}.opencode-dialog-btn.confirm:hover{background:var(--oc-danger-hover)}@keyframes slideDown{0%{transform:translate(-50%) translateY(-100%);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.opencode-page-notification{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 16px rgba(59,130,246,.4),0 0 0 2px rgba(59,130,246,.2);animation:slideDown .3s ease;z-index:2147483647;display:flex;align-items:center;gap:10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.opencode-page-notification:before{content:"\1f4a1";font-size:16px}.opencode-element-highlight{position:fixed;pointer-events:none;z-index:999998;border-radius:4px}#vue-inspector-container{display:none!important}.opencode-element-tooltip{position:fixed;background:var(--oc-tooltip-bg);color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;z-index:9999998;box-shadow:var(--oc-shadow-md);max-width:300px;pointer-events:none}.opencode-tooltip-tag{font-weight:500;margin-bottom:4px;word-break:break-all}.opencode-tooltip-file{font-size:11px;color:var(--oc-text-placeholder);word-break:break-all}.opencode-element-highlight-temp{position:absolute;pointer-events:none;z-index:999998;border-radius:4px;animation:highlight-pulse 2s ease-out forwards}@keyframes highlight-pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.02)}to{opacity:0;transform:scale(1)}}@media(max-width:768px){.opencode-chat{width:calc(100vw - 40px);height:calc(100vh - 100px)}}
1
+ .opencode-widget{--oc-bg-main: #ffffff;--oc-bg-secondary: #f8f9fa;--oc-bg-tertiary: #f3f4f6;--oc-overlay-bg: rgba(255, 255, 255, .9);--oc-bg-inverse: #1e1e1e;--oc-text-primary: #282828;--oc-text-secondary: #4b5563;--oc-text-tertiary: #6b7280;--oc-text-placeholder: #9ca3af;--oc-text-inverse: #ffffff;--oc-border-primary: #e5e7eb;--oc-border-secondary: #d1d5db;--oc-primary: #3b82f6;--oc-primary-hover: #2563eb;--oc-primary-bg: rgba(59, 130, 246, .1);--oc-danger: #ef4444;--oc-danger-hover: #dc2626;--oc-danger-active: #b91c1c;--oc-success: #10b981;--oc-overlay: rgba(0, 0, 0, .5);--oc-tooltip-bg: #1e1e1e;--oc-dialog-overlay: rgba(0, 0, 0, .5);--oc-thinking-gradient-1: #10b981;--oc-thinking-gradient-2: #059669;--oc-thinking-glow: rgba(16, 185, 129, .3);--oc-thinking-glow-strong: rgba(16, 185, 129, .6);--oc-skeleton-bg: #e5e7eb;--oc-skeleton-gradient: linear-gradient(90deg, #e5e7eb 25%, #f3f4f6 50%, #e5e7eb 75%);--oc-shadow-sm: 0 2px 4px rgba(0, 0, 0, .1);--oc-shadow-md: 0 4px 12px rgba(0, 0, 0, .15);--oc-shadow-lg: 0 8px 32px rgba(0, 0, 0, .12);--oc-shadow-xl: 0 20px 60px rgba(0, 0, 0, .3);--oc-shadow-primary: 0 2px 4px rgba(59, 130, 246, .2);--oc-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .3);--oc-shadow-danger: 0 4px 12px rgba(239, 68, 68, .3);--oc-trigger-bg: #3b82f6;--oc-trigger-bg-hover: #2563eb;--oc-trigger-bg-active: #1d4ed8;--oc-trigger-shadow: 0 2px 8px rgba(59, 130, 246, .3);--oc-trigger-shadow-hover: 0 4px 12px rgba(59, 130, 246, .4);--oc-trigger-shadow-active: 0 4px 12px rgba(59, 130, 246, .5);position:fixed;z-index:999999;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.opencode-widget.opencode-theme-dark{--oc-bg-main: #1a1a1a;--oc-bg-secondary: #1e1e1e;--oc-bg-tertiary: #282828;--oc-overlay-bg: rgba(26, 26, 26, .9);--oc-bg-inverse: #ffffff;--oc-text-primary: #f3f4f6;--oc-text-secondary: #d1d5db;--oc-text-tertiary: #9ca3af;--oc-text-placeholder: #6b7280;--oc-text-inverse: #282828;--oc-border-primary: #282828;--oc-border-secondary: #4b5563;--oc-primary: #3b82f6;--oc-primary-hover: #2563eb;--oc-primary-bg: rgba(59, 130, 246, .15);--oc-danger: #ef4444;--oc-danger-hover: #dc2626;--oc-danger-active: #b91c1c;--oc-success: #10b981;--oc-overlay: rgba(26, 26, 26, .9);--oc-tooltip-bg: #282828;--oc-dialog-overlay: rgba(0, 0, 0, .7);--oc-thinking-gradient-1: #34d399;--oc-thinking-gradient-2: #10b981;--oc-thinking-glow: rgba(52, 211, 153, .3);--oc-thinking-glow-strong: rgba(52, 211, 153, .6);--oc-skeleton-bg: #151515;--oc-skeleton-gradient: linear-gradient(90deg, #282828 25%, #4b5563 50%, #282828 75%);--oc-shadow-sm: 0 2px 4px rgba(0, 0, 0, .3);--oc-shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--oc-shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);--oc-shadow-xl: 0 20px 60px rgba(0, 0, 0, .6);--oc-shadow-primary: 0 2px 4px rgba(59, 130, 246, .3);--oc-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .4);--oc-shadow-danger: 0 4px 12px rgba(239, 68, 68, .4);--oc-trigger-bg: #60a5fa;--oc-trigger-bg-hover: #3b82f6;--oc-trigger-bg-active: #2563eb;--oc-trigger-shadow: 0 2px 8px rgba(96, 165, 250, .4);--oc-trigger-shadow-hover: 0 4px 12px rgba(96, 165, 250, .5);--oc-trigger-shadow-active: 0 4px 12px rgba(96, 165, 250, .6)}.opencode-chat{position:fixed;bottom:20px;width:700px;height:86vh;max-height:calc(100vh - 40px);background:var(--oc-bg-main);border-radius:16px;box-shadow:var(--oc-shadow-lg);overflow:hidden;opacity:0;visibility:hidden;transform:translate3d(var(---chatAnimationOrigin\.x),var(---chatAnimationOrigin\.y),0) scale(.95);transition:all .3s ease;display:flex;flex-direction:column;z-index:99999}.opencode-chat.open{opacity:1;visibility:visible;transform:translateZ(0) scale(1)}.opencode-chat.no-transition,.opencode-chat.no-transition.open{transition:none!important}.opencode-chat.minimized{width:300px;height:300px}.opencode-chat.minimized .opencode-iframe-container{margin-top:-146px}.opencode-chat-content{display:flex;flex:1;overflow:hidden}.opencode-notification{position:absolute;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 16px rgba(59,130,246,.4),0 0 0 2px rgba(59,130,246,.2);animation:slideDown .3s ease;z-index:10000000;display:flex;align-items:center;gap:10px}.opencode-notification:before{content:"\1f4a1";font-size:16px}.opencode-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--oc-dialog-overlay);display:flex;align-items:center;justify-content:center;z-index:9999999;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.opencode-dialog{background:var(--oc-bg-main);border-radius:12px;padding:24px;min-width:320px;max-width:400px;box-shadow:var(--oc-shadow-xl);animation:scaleIn .2s ease}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.opencode-dialog-content{margin-bottom:20px}.opencode-dialog-message{font-size:15px;color:var(--oc-text-primary);line-height:1.5}.opencode-dialog-actions{display:flex;gap:12px;justify-content:flex-end}.opencode-dialog-btn{padding:10px 20px;border-radius:8px;border:none;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.opencode-dialog-btn.cancel{background:var(--oc-bg-tertiary);color:var(--oc-text-primary)}.opencode-dialog-btn.cancel:hover{background:var(--oc-text-primary);color:var(--oc-bg-main)}.opencode-dialog-btn.confirm{background:var(--oc-danger);color:#fff}.opencode-dialog-btn.confirm:hover{background:var(--oc-danger-hover)}@keyframes slideDown{0%{transform:translate(-50%) translateY(-100%);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.opencode-page-notification{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:10px;font-size:14px;font-weight:500;box-shadow:0 4px 16px rgba(59,130,246,.4),0 0 0 2px rgba(59,130,246,.2);animation:slideDown .3s ease;z-index:2147483647;display:flex;align-items:center;gap:10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.opencode-page-notification:before{content:"\1f4a1";font-size:16px}.opencode-element-highlight{position:fixed;pointer-events:none;z-index:999998;border-radius:4px}#vue-inspector-container{display:none!important}.opencode-element-tooltip{position:fixed;background:var(--oc-tooltip-bg);color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;z-index:9999998;box-shadow:var(--oc-shadow-md);max-width:300px;pointer-events:none}.opencode-tooltip-tag{font-weight:500;margin-bottom:4px;word-break:break-all}.opencode-tooltip-file{font-size:11px;color:var(--oc-text-placeholder);word-break:break-all}.opencode-element-highlight-temp{position:absolute;pointer-events:none;z-index:999998;border-radius:4px;animation:highlight-pulse 2s ease-out forwards}@keyframes highlight-pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.02)}to{opacity:0;transform:scale(1)}}@media(max-width:768px){.opencode-chat{width:calc(100vw - 40px);height:calc(100vh - 100px)}}body.has-opencode-split{padding-right:var(--opencode-split-width, 500px);transition:padding-right .3s ease;min-width:auto}body.has-opencode-split *:not(.opencode-chat):not(.opencode-chat *){max-width:calc(100vw - var(--opencode-split-width, 500px))!important}
@@ -1,23 +1,23 @@
1
1
  import type { OpenCodeWidgetProps } from "./types";
2
- declare var __VLS_11: {}, __VLS_16: {}, __VLS_18: {}, __VLS_20: {}, __VLS_25: {}, __VLS_32: {}, __VLS_34: {}, __VLS_36: {}, __VLS_38: {};
2
+ declare var __VLS_11: {}, __VLS_25: {}, __VLS_27: {}, __VLS_29: {}, __VLS_31: {}, __VLS_33: {}, __VLS_35: {}, __VLS_37: {}, __VLS_39: {};
3
3
  type __VLS_Slots = {} & {
4
4
  'button-icon'?: (props: typeof __VLS_11) => any;
5
5
  } & {
6
- 'session-toggle-icon'?: (props: typeof __VLS_16) => any;
6
+ 'session-toggle-icon'?: (props: typeof __VLS_25) => any;
7
7
  } & {
8
- 'select-icon'?: (props: typeof __VLS_18) => any;
8
+ 'select-icon'?: (props: typeof __VLS_27) => any;
9
9
  } & {
10
- 'close-icon'?: (props: typeof __VLS_20) => any;
10
+ 'close-icon'?: (props: typeof __VLS_29) => any;
11
11
  } & {
12
- 'sessions-empty'?: (props: typeof __VLS_25) => any;
12
+ 'sessions-empty'?: (props: typeof __VLS_31) => any;
13
13
  } & {
14
- 'empty-state'?: (props: typeof __VLS_32) => any;
14
+ 'empty-state'?: (props: typeof __VLS_33) => any;
15
15
  } & {
16
- loading?: (props: typeof __VLS_34) => any;
16
+ loading?: (props: typeof __VLS_35) => any;
17
17
  } & {
18
- error?: (props: typeof __VLS_36) => any;
18
+ error?: (props: typeof __VLS_37) => any;
19
19
  } & {
20
- content?: (props: typeof __VLS_38) => any;
20
+ content?: (props: typeof __VLS_39) => any;
21
21
  };
22
22
  declare const __VLS_component: import("vue").DefineComponent<OpenCodeWidgetProps, {
23
23
  showNotification: (message: string, options?: {
@@ -27,49 +27,9 @@ declare const __VLS_component: import("vue").DefineComponent<OpenCodeWidgetProps
27
27
  showConfirmDialog: (message: string) => Promise<boolean>;
28
28
  sendMessageToIframe: (type: string, data?: Record<string, unknown>) => void;
29
29
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
30
- close: () => any;
31
- toggle: (value: boolean) => any;
32
- "create-session": () => any;
33
- "update:open": (value: boolean) => any;
34
- "delete-session": (session: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetSession) => any;
35
- "update:selectMode": (value: boolean) => any;
36
- "update:sessionListCollapsed": (value: boolean) => any;
37
- "update:currentSessionId": (value: string | null) => any;
38
- "update:selectedElements": (value: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement[]) => any;
39
- "update:theme": (value: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme) => any;
40
- "update:thinking": (value: boolean) => any;
41
- "toggle-session-list": (value: boolean) => any;
42
- "toggle-select-mode": (value: boolean) => any;
43
- "toggle-theme": (value: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme) => any;
44
- "select-session": (session: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetSession) => any;
45
- "click-selected-node": (element: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement) => any;
46
- "remove-selected-node": (payload: import("@vite-plugin-opencode-assistant/shared").OpenCodeRemoveSelectedPayload) => any;
47
- "clear-selected-nodes": () => any;
48
- "empty-action": () => any;
49
- "frame-loaded": () => any;
50
- "thinking-change": (value: boolean) => any;
30
+ [x: string]: any;
51
31
  }, string, import("vue").PublicProps, Readonly<OpenCodeWidgetProps> & Readonly<{
52
- onClose?: (() => any) | undefined;
53
- onToggle?: ((value: boolean) => any) | undefined;
54
- "onCreate-session"?: (() => any) | undefined;
55
- "onUpdate:open"?: ((value: boolean) => any) | undefined;
56
- "onDelete-session"?: ((session: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetSession) => any) | undefined;
57
- "onUpdate:selectMode"?: ((value: boolean) => any) | undefined;
58
- "onUpdate:sessionListCollapsed"?: ((value: boolean) => any) | undefined;
59
- "onUpdate:currentSessionId"?: ((value: string | null) => any) | undefined;
60
- "onUpdate:selectedElements"?: ((value: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement[]) => any) | undefined;
61
- "onUpdate:theme"?: ((value: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme) => any) | undefined;
62
- "onUpdate:thinking"?: ((value: boolean) => any) | undefined;
63
- "onToggle-session-list"?: ((value: boolean) => any) | undefined;
64
- "onToggle-select-mode"?: ((value: boolean) => any) | undefined;
65
- "onToggle-theme"?: ((value: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme) => any) | undefined;
66
- "onSelect-session"?: ((session: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetSession) => any) | undefined;
67
- "onClick-selected-node"?: ((element: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement) => any) | undefined;
68
- "onRemove-selected-node"?: ((payload: import("@vite-plugin-opencode-assistant/shared").OpenCodeRemoveSelectedPayload) => any) | undefined;
69
- "onClear-selected-nodes"?: (() => any) | undefined;
70
- "onEmpty-action"?: (() => any) | undefined;
71
- "onFrame-loaded"?: (() => any) | undefined;
72
- "onThinking-change"?: ((value: boolean) => any) | undefined;
32
+ [x: `on${Capitalize<any>}`]: ((...args: any) => any) | undefined;
73
33
  }>, {
74
34
  frameLoading: boolean;
75
35
  showEmptyState: boolean;
@@ -82,16 +42,19 @@ declare const __VLS_component: import("vue").DefineComponent<OpenCodeWidgetProps
82
42
  selectMode: boolean;
83
43
  selectEnabled: boolean;
84
44
  theme: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme;
85
- selectShortcutLabel: string;
86
- showClearAll: boolean;
87
45
  showSessionListSkeleton: boolean;
88
46
  sessionKey: string;
89
47
  sessions: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetSession[];
90
48
  thinking: boolean;
49
+ showClearAll: boolean;
91
50
  open: boolean;
51
+ selectShortcutLabel: string;
92
52
  hotkeyLabel: string;
53
+ splitPanelWidth: number;
93
54
  currentSessionId: string | null;
94
55
  selectedElements: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement[];
56
+ displayMode: import("@vite-plugin-opencode-assistant/shared").DisplayMode;
57
+ splitMode: import("@vite-plugin-opencode-assistant/shared").SplitModeOptions;
95
58
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
96
59
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
97
60
  export default _default;