@vite-plugin-opencode-assistant/components 1.0.15 → 1.0.17

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.
@@ -1 +1 @@
1
- .opencode-button{width:44px;height:44px;border-radius:50%;background:var(--oc-trigger-bg);border:none;cursor:pointer;box-shadow:var(--oc-trigger-shadow);transition:all .3s ease;display:flex;align-items:center;justify-content:center;color:#fff;padding:0;position:relative}.opencode-button:before{content:"";position:absolute;top:-8px;left:-8px;right:-8px;bottom:-8px;border-radius:50%}.opencode-button:hover{transform:scale(1.1);box-shadow:var(--oc-trigger-shadow-hover);background:var(--oc-trigger-bg-hover)}.opencode-button.active{background:var(--oc-trigger-bg-active);box-shadow:var(--oc-trigger-shadow-active)}.opencode-button.active svg{transform:rotate(180deg)}.opencode-button svg{transition:transform .3s ease}.opencode-button.loading{animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}
1
+ .opencode-button{width:44px;height:44px;border-radius:50%;background:var(--oc-trigger-bg);border:none;cursor:pointer;box-shadow:var(--oc-trigger-shadow);transition:all .3s ease;display:flex;align-items:center;justify-content:center;color:#fff;padding:0;position:relative;overflow:visible}.opencode-button svg{transform:rotate(180deg);transition:transform .3s ease}.opencode-button:before{content:"";position:absolute;top:-8px;left:-8px;right:-8px;bottom:-8px;border-radius:50%}.opencode-button:hover{transform:scale(1.1);box-shadow:var(--oc-trigger-shadow-hover);background:var(--oc-trigger-bg-hover)}.opencode-button.thinking{background:linear-gradient(135deg,#667eea,#764ba2,#667eea);background-size:200% 200%;animation:thinking-gradient 2s ease infinite,thinking-pulse 2s ease-in-out infinite;box-shadow:0 0 20px rgba(102,126,234,.5),0 0 40px rgba(118,75,162,.3)}.opencode-button.thinking svg{animation:none}.opencode-button.thinking:before{content:"";position:absolute;top:50%;left:50%;width:100%;height:100%;border-radius:50%;background:radial-gradient(circle,rgba(102,126,234,.7) 0%,rgba(118,75,162,.5) 50%,transparent 70%);transform:translate(-50%,-50%);animation:ripple-wave 2s ease-out infinite;pointer-events:none}.opencode-button.thinking:after{content:"";position:absolute;top:50%;left:50%;width:100%;height:100%;border-radius:50%;background:radial-gradient(circle,rgba(118,75,162,.6) 0%,rgba(102,126,234,.4) 50%,transparent 70%);transform:translate(-50%,-50%);animation:ripple-wave 2s ease-out infinite;animation-delay:1s;pointer-events:none}@keyframes thinking-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes ripple-wave{0%{transform:translate(-50%,-50%) scale(1);opacity:.8}to{transform:translate(-50%,-50%) scale(2.5);opacity:0}}@keyframes thinking-pulse{0%,to{transform:scale(1)}50%{transform:scale(.9)}}.opencode-button.loading{animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}
@@ -28,8 +28,14 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
28
28
  __name: "Trigger",
29
29
  setup(__props, { expose: __expose }) {
30
30
  __expose();
31
- const { buttonActive: active, open, hotkeyLabel, handleToggle } = (0, import_context.useOpenCodeWidgetContext)();
32
- const __returned__ = { active, open, hotkeyLabel, handleToggle };
31
+ const {
32
+ buttonActive: active,
33
+ open,
34
+ hotkeyLabel,
35
+ thinking,
36
+ handleToggle
37
+ } = (0, import_context.useOpenCodeWidgetContext)();
38
+ const __returned__ = { active, open, hotkeyLabel, thinking, handleToggle };
33
39
  Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
34
40
  return __returned__;
35
41
  }
@@ -37,7 +43,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
37
43
  const _hoisted_1 = ["aria-expanded", "title"];
38
44
  function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
39
45
  return (0, import_vue2.openBlock)(), (0, import_vue2.createElementBlock)("button", {
40
- class: (0, import_vue2.normalizeClass)(["opencode-button", { active: $setup.active }]),
46
+ class: (0, import_vue2.normalizeClass)(["opencode-button", { active: $setup.active, thinking: $setup.thinking }]),
41
47
  type: "button",
42
48
  "aria-expanded": $setup.open,
43
49
  "aria-label": "\u6253\u5F00 AI \u52A9\u624B",
@@ -19,6 +19,7 @@ export interface OpenCodeWidgetContext {
19
19
  emptyStateActionText: Ref<string>;
20
20
  showClearAll: Ref<boolean>;
21
21
  open: Ref<boolean>;
22
+ thinking: Ref<boolean>;
22
23
  iframeSource: Ref<string>;
23
24
  buttonActive: Ref<boolean>;
24
25
  sessionListTitle: Ref<string>;
@@ -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-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: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--oc-trigger-bg-hover: linear-gradient(135deg, #764ba2 0%, #667eea 100%);--oc-trigger-bg-active: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);--oc-trigger-shadow: 0 4px 15px rgba(102, 126, 234, .4);--oc-trigger-shadow-hover: 0 6px 20px rgba(102, 126, 234, .6);--oc-trigger-shadow-active: 0 6px 20px rgba(240, 147, 251, .4);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-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: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--oc-trigger-bg-hover: linear-gradient(135deg, #764ba2 0%, #667eea 100%);--oc-trigger-bg-active: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);--oc-trigger-shadow: 0 4px 15px rgba(102, 126, 234, .5);--oc-trigger-shadow-hover: 0 6px 20px rgba(102, 126, 234, .7);--oc-trigger-shadow-active: 0 6px 20px rgba(240, 147, 251, .5)}.opencode-widget.bottom-right{bottom:20px;right:20px}.opencode-widget.bottom-left{bottom:20px;left:20px}.opencode-widget.top-right{top:20px;right:20px}.opencode-widget.top-left{top:20px;left:20px}.opencode-chat{position:absolute;width:700px;height:86vh;background:var(--oc-bg-main);border-radius:16px;box-shadow:var(--oc-shadow-lg);overflow:hidden;opacity:0;visibility:hidden;transform:translateY(20px) scale(.95);transition:all .3s ease;display:flex;flex-direction:column}.opencode-chat-content{display:flex;flex:1;overflow:hidden}.opencode-widget.bottom-right .opencode-chat{bottom:56px;right:0}.opencode-widget.bottom-left .opencode-chat{bottom:56px;left:0}.opencode-widget.top-right .opencode-chat{top:56px;right:0}.opencode-widget.top-left .opencode-chat{top:56px;left:0}.opencode-widget.bottom-right .opencode-selected-bubbles{bottom:56px;right:0}.opencode-widget.bottom-left .opencode-selected-bubbles{bottom:56px;left:0}.opencode-widget.top-right .opencode-selected-bubbles{top:56px;bottom:auto;right:0}.opencode-widget.top-left .opencode-selected-bubbles{top:56px;bottom:auto;left:0}.opencode-chat.open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}.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-element-highlight{position:fixed;pointer-events:none;z-index:999998;display:none;transition:all .1s ease;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;display:none;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-widget.bottom-right{bottom:20px;right:20px}.opencode-widget.bottom-left{bottom:20px;left:20px}.opencode-widget.top-right{top:20px;right:20px}.opencode-widget.top-left{top:20px;left:20px}.opencode-chat{position:absolute;width:700px;height:86vh;background:var(--oc-bg-main);border-radius:16px;box-shadow:var(--oc-shadow-lg);overflow:hidden;opacity:0;visibility:hidden;transform:translateY(20px) scale(.95);transition:all .3s ease;display:flex;flex-direction:column}.opencode-chat-content{display:flex;flex:1;overflow:hidden}.opencode-widget.bottom-right .opencode-chat{bottom:56px;right:0}.opencode-widget.bottom-left .opencode-chat{bottom:56px;left:0}.opencode-widget.top-right .opencode-chat{top:56px;right:0}.opencode-widget.top-left .opencode-chat{top:56px;left:0}.opencode-widget.bottom-right .opencode-selected-bubbles{bottom:56px;right:0}.opencode-widget.bottom-left .opencode-selected-bubbles{bottom:56px;left:0}.opencode-widget.top-right .opencode-selected-bubbles{top:56px;bottom:auto;right:0}.opencode-widget.top-left .opencode-selected-bubbles{top:56px;bottom:auto;left:0}.opencode-chat.open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}.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;display:none;transition:all .1s ease;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;display:none;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,27 +1,31 @@
1
1
  import type { OpenCodeWidgetProps } from "./types";
2
- declare var __VLS_4: {}, __VLS_12: {}, __VLS_14: {}, __VLS_16: {}, __VLS_21: {}, __VLS_26: {}, __VLS_28: {}, __VLS_30: {}, __VLS_32: {};
2
+ declare var __VLS_4: {}, __VLS_9: {}, __VLS_11: {}, __VLS_13: {}, __VLS_18: {}, __VLS_25: {}, __VLS_27: {}, __VLS_29: {}, __VLS_31: {};
3
3
  type __VLS_Slots = {} & {
4
4
  'button-icon'?: (props: typeof __VLS_4) => any;
5
5
  } & {
6
- 'session-toggle-icon'?: (props: typeof __VLS_12) => any;
6
+ 'session-toggle-icon'?: (props: typeof __VLS_9) => any;
7
7
  } & {
8
- 'select-icon'?: (props: typeof __VLS_14) => any;
8
+ 'select-icon'?: (props: typeof __VLS_11) => any;
9
9
  } & {
10
- 'close-icon'?: (props: typeof __VLS_16) => any;
10
+ 'close-icon'?: (props: typeof __VLS_13) => any;
11
11
  } & {
12
- 'sessions-empty'?: (props: typeof __VLS_21) => any;
12
+ 'sessions-empty'?: (props: typeof __VLS_18) => any;
13
13
  } & {
14
- 'empty-state'?: (props: typeof __VLS_26) => any;
14
+ 'empty-state'?: (props: typeof __VLS_25) => any;
15
15
  } & {
16
- loading?: (props: typeof __VLS_28) => any;
16
+ loading?: (props: typeof __VLS_27) => any;
17
17
  } & {
18
- error?: (props: typeof __VLS_30) => any;
18
+ error?: (props: typeof __VLS_29) => any;
19
19
  } & {
20
- content?: (props: typeof __VLS_32) => any;
20
+ content?: (props: typeof __VLS_31) => any;
21
21
  };
22
22
  declare const __VLS_component: import("vue").DefineComponent<OpenCodeWidgetProps, {
23
- showNotification: (message: string, duration?: number) => void;
23
+ showNotification: (message: string, options?: {
24
+ duration?: number;
25
+ mode?: "widget" | "page";
26
+ }) => void;
24
27
  showConfirmDialog: (message: string) => Promise<boolean>;
28
+ sendMessageToIframe: (type: string, data?: Record<string, unknown>) => void;
25
29
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
26
30
  close: () => any;
27
31
  toggle: (value: boolean) => any;
@@ -33,6 +37,7 @@ declare const __VLS_component: import("vue").DefineComponent<OpenCodeWidgetProps
33
37
  "update:currentSessionId": (value: string | null) => any;
34
38
  "update:selectedElements": (value: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement[]) => any;
35
39
  "update:theme": (value: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme) => any;
40
+ "update:thinking": (value: boolean) => any;
36
41
  "toggle-session-list": (value: boolean) => any;
37
42
  "toggle-select-mode": (value: boolean) => any;
38
43
  "toggle-theme": (value: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme) => any;
@@ -42,6 +47,7 @@ declare const __VLS_component: import("vue").DefineComponent<OpenCodeWidgetProps
42
47
  "clear-selected-nodes": () => any;
43
48
  "empty-action": () => any;
44
49
  "frame-loaded": () => any;
50
+ "thinking-change": (value: boolean) => any;
45
51
  }, string, import("vue").PublicProps, Readonly<OpenCodeWidgetProps> & Readonly<{
46
52
  onClose?: (() => any) | undefined;
47
53
  onToggle?: ((value: boolean) => any) | undefined;
@@ -53,6 +59,7 @@ declare const __VLS_component: import("vue").DefineComponent<OpenCodeWidgetProps
53
59
  "onUpdate:currentSessionId"?: ((value: string | null) => any) | undefined;
54
60
  "onUpdate:selectedElements"?: ((value: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement[]) => any) | undefined;
55
61
  "onUpdate:theme"?: ((value: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme) => any) | undefined;
62
+ "onUpdate:thinking"?: ((value: boolean) => any) | undefined;
56
63
  "onToggle-session-list"?: ((value: boolean) => any) | undefined;
57
64
  "onToggle-select-mode"?: ((value: boolean) => any) | undefined;
58
65
  "onToggle-theme"?: ((value: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme) => any) | undefined;
@@ -62,18 +69,19 @@ declare const __VLS_component: import("vue").DefineComponent<OpenCodeWidgetProps
62
69
  "onClear-selected-nodes"?: (() => any) | undefined;
63
70
  "onEmpty-action"?: (() => any) | undefined;
64
71
  "onFrame-loaded"?: (() => any) | undefined;
72
+ "onThinking-change"?: ((value: boolean) => any) | undefined;
65
73
  }>, {
66
74
  frameLoading: boolean;
67
75
  showEmptyState: boolean;
68
76
  showError: boolean;
69
77
  emptyStateText: string;
70
78
  emptyStateActionText: string;
71
- theme: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme;
72
79
  iframeSrc: string;
73
80
  title: string;
74
81
  sessionListCollapsed: boolean;
75
82
  selectMode: boolean;
76
83
  selectEnabled: boolean;
84
+ theme: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetTheme;
77
85
  selectShortcutLabel: string;
78
86
  showClearAll: boolean;
79
87
  showSessionListSkeleton: boolean;
@@ -81,6 +89,7 @@ declare const __VLS_component: import("vue").DefineComponent<OpenCodeWidgetProps
81
89
  sessions: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetSession[];
82
90
  open: boolean;
83
91
  hotkeyLabel: string;
92
+ thinking: boolean;
84
93
  position: import("@vite-plugin-opencode-assistant/shared").OpenCodeWidgetPosition;
85
94
  currentSessionId: string | null;
86
95
  selectedElements: import("@vite-plugin-opencode-assistant/shared").OpenCodeSelectedElement[];
@@ -53,7 +53,6 @@ var import_vue2 = require("vue");
53
53
  var import_Frame_vue = __toESM(require("./components/Frame.vue.js"));
54
54
  var import_Header_vue = __toESM(require("./components/Header.vue.js"));
55
55
  var import_SelectHint_vue = __toESM(require("./components/SelectHint.vue.js"));
56
- var import_SelectedBubbles_vue = __toESM(require("./components/SelectedBubbles.vue.js"));
57
56
  var import_SelectedNodes_vue = __toESM(require("./components/SelectedNodes.vue.js"));
58
57
  var import_SessionList_vue = __toESM(require("./components/SessionList.vue.js"));
59
58
  var import_Trigger_vue = __toESM(require("./components/Trigger.vue.js"));
@@ -89,19 +88,23 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
89
88
  currentSessionId: { type: [String, null], required: false, default: null },
90
89
  selectedElements: { type: Array, required: false, default: () => [] },
91
90
  showClearAll: { type: Boolean, required: false, default: true },
92
- selectEnabled: { type: Boolean, required: false, default: true }
91
+ selectEnabled: { type: Boolean, required: false, default: true },
92
+ thinking: { type: Boolean, required: false, default: false }
93
93
  },
94
- emits: ["update:open", "update:selectMode", "update:sessionListCollapsed", "update:currentSessionId", "update:selectedElements", "update:theme", "toggle", "close", "toggle-session-list", "toggle-select-mode", "toggle-theme", "create-session", "select-session", "delete-session", "click-selected-node", "remove-selected-node", "clear-selected-nodes", "empty-action", "frame-loaded"],
94
+ emits: ["update:open", "update:selectMode", "update:sessionListCollapsed", "update:currentSessionId", "update:selectedElements", "update:theme", "update:thinking", "toggle", "close", "toggle-session-list", "toggle-select-mode", "toggle-theme", "create-session", "select-session", "delete-session", "click-selected-node", "remove-selected-node", "clear-selected-nodes", "empty-action", "frame-loaded", "thinking-change"],
95
95
  setup(__props, { expose: __expose, emit: __emit }) {
96
96
  const props = __props;
97
97
  const emit = __emit;
98
98
  const slots = (0, import_vue2.useSlots)();
99
99
  const notificationMessage = (0, import_vue2.ref)("");
100
100
  const notificationVisible = (0, import_vue2.ref)(false);
101
+ const notificationMode = (0, import_vue2.ref)("widget");
101
102
  let notificationTimer = null;
102
- const showNotification = (message, duration = 3e3) => {
103
+ const showNotification = (message, options) => {
104
+ const { duration = 3e3, mode = "widget" } = options || {};
103
105
  notificationMessage.value = message;
104
106
  notificationVisible.value = true;
107
+ notificationMode.value = mode;
105
108
  if (notificationTimer) clearTimeout(notificationTimer);
106
109
  notificationTimer = setTimeout(() => {
107
110
  notificationVisible.value = false;
@@ -125,12 +128,18 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
125
128
  dialogVisible.value = false;
126
129
  if (dialogResolve) dialogResolve(false);
127
130
  };
131
+ const frameRef = (0, import_vue2.ref)(null);
132
+ const sendMessageToIframe = (type, data) => {
133
+ var _a;
134
+ (_a = frameRef.value) == null ? void 0 : _a.sendMessageToIframe(type, data);
135
+ };
128
136
  const handleFrameLoaded = () => {
129
137
  emit("frame-loaded");
130
138
  };
131
139
  __expose({
132
140
  showNotification,
133
- showConfirmDialog
141
+ showConfirmDialog,
142
+ sendMessageToIframe
134
143
  });
135
144
  const localSessionListCollapsed = (0, import_vue2.ref)(props.sessionListCollapsed);
136
145
  (0, import_vue2.watch)(
@@ -249,6 +258,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
249
258
  emptyStateActionText: (0, import_vue2.toRef)(props, "emptyStateActionText"),
250
259
  showClearAll: (0, import_vue2.toRef)(props, "showClearAll"),
251
260
  open: (0, import_vue2.toRef)(props, "open"),
261
+ thinking: (0, import_vue2.toRef)(props, "thinking"),
252
262
  iframeSource,
253
263
  buttonActive,
254
264
  sessionListTitle,
@@ -270,7 +280,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
270
280
  handleClearSelectedNodes,
271
281
  handleFrameLoaded
272
282
  });
273
- const __returned__ = { props, emit, slots, notificationMessage, notificationVisible, get notificationTimer() {
283
+ const __returned__ = { props, emit, slots, notificationMessage, notificationVisible, notificationMode, get notificationTimer() {
274
284
  return notificationTimer;
275
285
  }, set notificationTimer(v) {
276
286
  notificationTimer = v;
@@ -278,7 +288,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)(__spreadProp
278
288
  return dialogResolve;
279
289
  }, set dialogResolve(v) {
280
290
  dialogResolve = v;
281
- }, showConfirmDialog, handleDialogConfirm, handleDialogCancel, handleFrameLoaded, localSessionListCollapsed, buttonActive, containerClasses, iframeSource, sessionListTitle, resolvedTheme, handleClose, handleEmptyAction, handleToggle, handleToggleSessionList, handleToggleTheme, sessionItems, handleCreateSession, handleDeleteSession, handleSelectSession, bubbleVisible, hasSelectedElements, selectedElementItems, handleClearSelectedNodes, handleClickSelectedNode, handleRemoveSelectedNode, handleToggleSelectMode, highlightVisible, highlightStyle, tooltipVisible, tooltipStyle, tooltipContent, Frame: import_Frame_vue.default, Header: import_Header_vue.default, SelectHint: import_SelectHint_vue.default, SelectedBubbles: import_SelectedBubbles_vue.default, SelectedNodes: import_SelectedNodes_vue.default, SessionList: import_SessionList_vue.default, Trigger: import_Trigger_vue.default };
291
+ }, showConfirmDialog, handleDialogConfirm, handleDialogCancel, frameRef, sendMessageToIframe, handleFrameLoaded, localSessionListCollapsed, buttonActive, containerClasses, iframeSource, sessionListTitle, resolvedTheme, handleClose, handleEmptyAction, handleToggle, handleToggleSessionList, handleToggleTheme, sessionItems, handleCreateSession, handleDeleteSession, handleSelectSession, bubbleVisible, hasSelectedElements, selectedElementItems, handleClearSelectedNodes, handleClickSelectedNode, handleRemoveSelectedNode, handleToggleSelectMode, highlightVisible, highlightStyle, tooltipVisible, tooltipStyle, tooltipContent, Frame: import_Frame_vue.default, Header: import_Header_vue.default, SelectHint: import_SelectHint_vue.default, SelectedNodes: import_SelectedNodes_vue.default, SessionList: import_SessionList_vue.default, Trigger: import_Trigger_vue.default };
282
292
  Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
283
293
  return __returned__;
284
294
  }
@@ -292,7 +302,7 @@ const _hoisted_2 = { class: "opencode-chat-content" };
292
302
  const _hoisted_3 = { class: "opencode-tooltip-tag" };
293
303
  const _hoisted_4 = { class: "opencode-tooltip-file" };
294
304
  const _hoisted_5 = {
295
- key: 1,
305
+ key: 0,
296
306
  class: "opencode-dialog-overlay"
297
307
  };
298
308
  const _hoisted_6 = {
@@ -302,6 +312,11 @@ const _hoisted_6 = {
302
312
  };
303
313
  const _hoisted_7 = { class: "opencode-dialog-content" };
304
314
  const _hoisted_8 = { class: "opencode-dialog-message" };
315
+ const _hoisted_9 = {
316
+ key: 0,
317
+ class: "opencode-page-notification",
318
+ role: "alert"
319
+ };
305
320
  function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
306
321
  return (0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)(
307
322
  "div",
@@ -327,7 +342,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
327
342
  1024
328
343
  /* DYNAMIC_SLOTS */
329
344
  ),
330
- $setup.bubbleVisible ? ((0, import_vue3.openBlock)(), (0, import_vue3.createBlock)($setup["SelectedBubbles"], { key: 0 })) : (0, import_vue3.createCommentVNode)("v-if", true),
345
+ (0, import_vue3.createCommentVNode)(' <SelectedBubbles v-if="bubbleVisible" /> '),
331
346
  (0, import_vue3.withDirectives)((0, import_vue3.createElementVNode)(
332
347
  "div",
333
348
  {
@@ -367,7 +382,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
367
382
  /* DYNAMIC_SLOTS */
368
383
  ),
369
384
  (0, import_vue3.createCommentVNode)(" Notification "),
370
- $setup.notificationVisible ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)(
385
+ $setup.notificationVisible && $setup.notificationMode === "widget" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)(
371
386
  "div",
372
387
  _hoisted_1,
373
388
  (0, import_vue3.toDisplayString)($setup.notificationMessage),
@@ -392,7 +407,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
392
407
  }),
393
408
  (0, import_vue3.createVNode)(
394
409
  $setup["Frame"],
395
- null,
410
+ { ref: "frameRef" },
396
411
  (0, import_vue3.createSlots)({
397
412
  _: 2
398
413
  /* DYNAMIC */
@@ -426,8 +441,8 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
426
441
  key: "3"
427
442
  } : void 0
428
443
  ]),
429
- 1024
430
- /* DYNAMIC_SLOTS */
444
+ 1536
445
+ /* NEED_PATCH, DYNAMIC_SLOTS */
431
446
  ),
432
447
  (0, import_vue3.createVNode)($setup["SelectedNodes"])
433
448
  ])
@@ -506,7 +521,17 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
506
521
  }, "\u786E\u8BA4")
507
522
  ])
508
523
  ])
509
- ])) : (0, import_vue3.createCommentVNode)("v-if", true)
524
+ ])) : (0, import_vue3.createCommentVNode)("v-if", true),
525
+ (0, import_vue3.createCommentVNode)(" Page-level Notification "),
526
+ ((0, import_vue3.openBlock)(), (0, import_vue3.createBlock)(import_vue3.Teleport, { to: "body" }, [
527
+ $setup.notificationVisible && $setup.notificationMode === "page" ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)(
528
+ "div",
529
+ _hoisted_9,
530
+ (0, import_vue3.toDisplayString)($setup.notificationMessage),
531
+ 1
532
+ /* TEXT */
533
+ )) : (0, import_vue3.createCommentVNode)("v-if", true)
534
+ ]))
510
535
  ],
511
536
  2
512
537
  /* CLASS */
@@ -1 +1 @@
1
- {"$schema":"https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json","framework":"vue","name":"@vite-plugin-opencode-assistant/components","version":"1.0.15","contributions":{"html":{"tags":[{"name":"open-code","attributes":[{"name":"","default":"`'bottom-right'`","description":"挂件显示的位置","value":{"type":"`'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'`","kind":"expression"}},{"name":"","default":"`false`","description":"挂件是否打开","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`'light'`","description":"主题模式","value":{"type":"`'light' | 'dark' | 'auto'`","kind":"expression"}},{"name":"","default":"`'AI 助手'`","description":"助手头部显示的标题","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`''`","description":"Web UI URL 来源","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`false`","description":"是否进入选择页面元素模式","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`false`","description":"是否显示加载状态","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`[]`","description":"会话列表数据","value":{"type":"`OpenCodeWidgetSessionItem[]`","kind":"expression"}},{"name":"","default":"`null`","description":"当前选中的会话 ID","value":{"type":"`string | null`","kind":"expression"}},{"name":"","default":"`[]`","description":"已选中的元素列表","value":{"type":"`OpenCodeSelectedElement[]`","kind":"expression"}}],"events":[{"name":"`update:open`","description":"当挂件打开或关闭时触发","arguments":[{"name":"open","type":"en"},{"name":"boolean"}]},{"name":"","description":"点击触发挂件开关","arguments":[{"name":"open","type":"en"},{"name":"boolean"}]},{"name":"","description":"点击关闭按钮时触发","arguments":[]},{"name":"`toggle-select-mode`","description":"点击选择模式切换按钮时触发","arguments":[{"name":"mode","type":"de"},{"name":"boolean"}]},{"name":"`click-selected-node`","description":"点击已选中的气泡或节点卡片时触发","arguments":[{"name":"element","type":"nt"},{"name":"OpenCodeSelectedElement"}]},{"name":"`remove-selected-node`","description":"删除已选中的元素时触发","arguments":[{"name":"payload","type":"ad"},{"name":"OpenCodeRemoveSelectedPayload"}]},{"name":"`clear-selected-nodes`","description":"清空所有选中元素时触发","arguments":[]},{"name":"`create-session`","description":"点击创建新会话时触发","arguments":[]},{"name":"`select-session`","description":"选中某个历史会话时触发","arguments":[{"name":"session","type":"on"},{"name":"OpenCodeWidgetSessionItem"}]},{"name":"`delete-session`","description":"删除某个历史会话时触发","arguments":[{"name":"session","type":"on"},{"name":"OpenCodeWidgetSessionItem"}]}]}],"attributes":[]}},"js-types-syntax":"typescript"}
1
+ {"$schema":"https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json","framework":"vue","name":"@vite-plugin-opencode-assistant/components","version":"1.0.17","contributions":{"html":{"tags":[{"name":"open-code","attributes":[{"name":"","default":"`'bottom-right'`","description":"挂件显示的位置","value":{"type":"`'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'`","kind":"expression"}},{"name":"","default":"`false`","description":"挂件是否打开","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`'auto'`","description":"主题模式","value":{"type":"`'light' | 'dark' | 'auto'`","kind":"expression"}},{"name":"","default":"`'AI 助手'`","description":"助手头部显示的标题","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`'Ctrl+K'`","description":"快捷键提示文本","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`'按 ESC Ctrl+P 退出'`","description":"选择模式快捷键提示文本","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`false`","description":"是否进入选择页面元素模式","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`true`","description":"会话列表是否折叠","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`'id'`","description":"会话列表项的唯一键字段","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`false`","description":"iframe 是否显示加载状态","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`undefined`","description":"会话列表是否加载中","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`false`","description":"是否显示会话列表骨架屏","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`false`","description":"是否显示空状态","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`false`","description":"是否显示错误状态","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`'当前项目暂无会话'`","description":"空状态显示的文本","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`'立即创建'`","description":"空状态操作按钮文本","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`''`","description":"Web UI 的 URL 来源","value":{"type":"`string`","kind":"expression"}},{"name":"","default":"`[]`","description":"会话列表数据","value":{"type":"`OpenCodeWidgetSession[]`","kind":"expression"}},{"name":"","default":"`null`","description":"当前选中的会话 ID","value":{"type":"`string | null`","kind":"expression"}},{"name":"","default":"`[]`","description":"已选中的元素列表","value":{"type":"`OpenCodeSelectedElement[]`","kind":"expression"}},{"name":"","default":"`true`","description":"是否显示\"一键清空\"按钮","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`true`","description":"是否启用选择模式","value":{"type":"`boolean`","kind":"expression"}},{"name":"","default":"`false`","description":"是否显示思考状态(加载中)","value":{"type":"`boolean`","kind":"expression"}}],"events":[{"name":"`update:open`","description":"当挂件打开或关闭时触发","arguments":[{"name":"open","type":"en"},{"name":"boolean"}]},{"name":"`update:selectMode`","description":"当选择模式切换时触发","arguments":[{"name":"mode","type":"de"},{"name":"boolean"}]},{"name":"`update:sessionListCollapsed`","description":"当会话列表折叠状态改变时触发","arguments":[{"name":"collapsed","type":"ed"},{"name":"boolean"}]},{"name":"`update:currentSessionId`","description":"当选中的会话 ID 改变时触发","arguments":[{"name":"sessionId","type":"Id"},{"name":"string | null"}]},{"name":"`update:selectedElements`","description":"当已选中的元素列表改变时触发","arguments":[{"name":"elements","type":"ts"},{"name":"OpenCodeSelectedElement[]"}]},{"name":"`update:theme`","description":"当主题模式改变时触发","arguments":[{"name":"theme","type":"me"},{"name":"'light' | 'dark' | 'auto'"}]},{"name":"`update:thinking`","description":"当思考状态改变时触发","arguments":[{"name":"thinking","type":"ng"},{"name":"boolean"}]},{"name":"","description":"点击触发挂件开关","arguments":[{"name":"open","type":"en"},{"name":"boolean"}]},{"name":"","description":"点击关闭按钮时触发","arguments":[]},{"name":"`toggle-session-list`","description":"点击会话列表切换按钮时触发","arguments":[{"name":"collapsed","type":"ed"},{"name":"boolean"}]},{"name":"`toggle-select-mode`","description":"点击选择模式切换按钮时触发","arguments":[{"name":"mode","type":"de"},{"name":"boolean"}]},{"name":"`toggle-theme`","description":"点击主题切换按钮时触发","arguments":[{"name":"theme","type":"me"},{"name":"'light' | 'dark' | 'auto'"}]},{"name":"`create-session`","description":"点击创建新会话时触发","arguments":[]},{"name":"`select-session`","description":"选中某个历史会话时触发","arguments":[{"name":"session","type":"on"},{"name":"OpenCodeWidgetSession"}]},{"name":"`delete-session`","description":"删除某个历史会话时触发","arguments":[{"name":"session","type":"on"},{"name":"OpenCodeWidgetSession"}]},{"name":"`click-selected-node`","description":"点击已选中的气泡或节点卡片时触发","arguments":[{"name":"element","type":"nt"},{"name":"OpenCodeSelectedElement"}]},{"name":"`remove-selected-node`","description":"删除已选中的元素时触发","arguments":[{"name":"payload","type":"ad"},{"name":"OpenCodeRemoveSelectedPayload"}]},{"name":"`clear-selected-nodes`","description":"清空所有选中元素时触发","arguments":[]},{"name":"`empty-action`","description":"点击空状态操作按钮时触发","arguments":[]},{"name":"`frame-loaded`","description":"iframe 加载完成时触发","arguments":[]},{"name":"`thinking-change`","description":"思考状态改变时触发(用于显示加载动画)","arguments":[{"name":"thinking","type":"ng"},{"name":"boolean"}]}],"slots":[{"name":"`button-icon`","description":"自定义触发按钮图标"},{"name":"`session-toggle-icon`","description":"自定义会话列表切换图标"},{"name":"`select-icon`","description":"自定义选择模式切换图标"},{"name":"`close-icon`","description":"自定义关闭按钮图标"},{"name":"`theme-icon`","description":"自定义主题切换图标"},{"name":"`sessions-empty`","description":"自定义会话列表空状态"},{"name":"`empty-state`","description":"自定义 iframe 空状态"},{"name":"","description":"自定义 iframe 加载状态"},{"name":"","description":"自定义错误状态"},{"name":"","description":"自定义 iframe 内容"}]}],"attributes":[]}},"js-types-syntax":"typescript"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vite-plugin-opencode-assistant/components",
3
- "version": "1.0.15",
3
+ "version": "1.0.17",
4
4
  "description": "Reusable OpenCode widget components built with Pagoda CLI",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -30,7 +30,7 @@
30
30
  "vue": "^3.5.0"
31
31
  },
32
32
  "dependencies": {
33
- "@vite-plugin-opencode-assistant/shared": "1.0.15"
33
+ "@vite-plugin-opencode-assistant/shared": "1.0.17"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@vitejs/plugin-vue": "^6.0.5",
@@ -42,8 +42,8 @@
42
42
  },
43
43
  "scripts": {
44
44
  "build": "pagoda-cli build",
45
- "docs:dev": "pagoda-cli site",
46
- "docs:build": "pagoda-cli build-site",
45
+ "dev:site": "pagoda-cli site",
46
+ "build:site": "pagoda-cli build-site",
47
47
  "test": "vitest run"
48
48
  }
49
49
  }