@aipanel/ui 1.2.11 → 1.2.12

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 (49) hide show
  1. package/es/AI-panel-widget/composables/use-inspector.mjs +4 -4
  2. package/es/AI-panel-widget/composables/use-selection.mjs +4 -4
  3. package/es/AI-panel-widget/src/components/ChatPanel-sfc.css +1 -1
  4. package/es/AI-panel-widget/src/components/ChatPanel.vue.d.ts +3 -0
  5. package/es/AI-panel-widget/src/components/ChatPanel.vue.mjs +13 -4
  6. package/es/AI-panel-widget/src/components/Frame-sfc.css +1 -1
  7. package/es/AI-panel-widget/src/components/Header-sfc.css +1 -1
  8. package/es/AI-panel-widget/src/components/Header.vue.mjs +14 -5
  9. package/es/AI-panel-widget/src/components/ResizeHandle-sfc.css +1 -1
  10. package/es/AI-panel-widget/src/components/SelectedBubbles-sfc.css +1 -1
  11. package/es/AI-panel-widget/src/components/SelectedBubbles.vue.mjs +1 -1
  12. package/es/AI-panel-widget/src/components/SelectedNodes-sfc.css +1 -1
  13. package/es/AI-panel-widget/src/components/SessionList-sfc.css +1 -1
  14. package/es/AI-panel-widget/src/components/SessionList.vue.mjs +86 -67
  15. package/es/AI-panel-widget/src/context.d.ts +5 -1
  16. package/es/AI-panel-widget/src/index-sfc.css +1 -1
  17. package/es/AI-panel-widget/src/index.vue.d.ts +2 -0
  18. package/es/AI-panel-widget/src/index.vue.mjs +34 -2
  19. package/es/AI-panel-widget/src/types.d.ts +1 -1
  20. package/es/index.d.ts +1 -1
  21. package/es/index.mjs +1 -1
  22. package/lib/AI-panel-widget/composables/use-inspector.cjs +4 -4
  23. package/lib/AI-panel-widget/composables/use-selection.cjs +4 -4
  24. package/lib/AI-panel-widget/src/components/ChatPanel-sfc.css +1 -1
  25. package/lib/AI-panel-widget/src/components/ChatPanel.vue.cjs +13 -4
  26. package/lib/AI-panel-widget/src/components/ChatPanel.vue.d.ts +3 -0
  27. package/lib/AI-panel-widget/src/components/Frame-sfc.css +1 -1
  28. package/lib/AI-panel-widget/src/components/Header-sfc.css +1 -1
  29. package/lib/AI-panel-widget/src/components/Header.vue.cjs +14 -5
  30. package/lib/AI-panel-widget/src/components/ResizeHandle-sfc.css +1 -1
  31. package/lib/AI-panel-widget/src/components/SelectedBubbles-sfc.css +1 -1
  32. package/lib/AI-panel-widget/src/components/SelectedBubbles.vue.cjs +1 -1
  33. package/lib/AI-panel-widget/src/components/SelectedNodes-sfc.css +1 -1
  34. package/lib/AI-panel-widget/src/components/SessionList-sfc.css +1 -1
  35. package/lib/AI-panel-widget/src/components/SessionList.vue.cjs +86 -67
  36. package/lib/AI-panel-widget/src/context.d.ts +5 -1
  37. package/lib/AI-panel-widget/src/index-sfc.css +1 -1
  38. package/lib/AI-panel-widget/src/index.vue.cjs +34 -2
  39. package/lib/AI-panel-widget/src/index.vue.d.ts +2 -0
  40. package/lib/AI-panel-widget/src/types.d.ts +1 -1
  41. package/lib/index.cjs +1 -1
  42. package/lib/index.d.ts +1 -1
  43. package/package.json +2 -2
  44. package/es/AI-panel-widget/src/components/SplitTrigger-sfc.css +0 -1
  45. package/es/AI-panel-widget/src/components/SplitTrigger.vue.d.ts +0 -18
  46. package/es/AI-panel-widget/src/components/SplitTrigger.vue.mjs +0 -112
  47. package/lib/AI-panel-widget/src/components/SplitTrigger-sfc.css +0 -1
  48. package/lib/AI-panel-widget/src/components/SplitTrigger.vue.cjs +0 -131
  49. package/lib/AI-panel-widget/src/components/SplitTrigger.vue.d.ts +0 -18
@@ -1,5 +1,5 @@
1
1
  import { type Ref } from "vue";
2
- import type { AIPanelWidgetSessionItem, AIPanelSelectedElementItem, AIPanelRemoveSelectedPayload, AIPanelSessionThinkingState, DisplayMode } from "./types";
2
+ import type { AIPanelWidgetSessionItem, AIPanelSelectedElementItem, AIPanelRemoveSelectedPayload, AIPanelSessionThinkingState, DisplayMode, ProviderSidebarCollapseControl } from "./types";
3
3
  import type { FloatingBubbleOffset } from "./components/FloatingBubble/types";
4
4
  export interface AIPanelWidgetContext {
5
5
  theme: Ref<string>;
@@ -26,6 +26,10 @@ export interface AIPanelWidgetContext {
26
26
  reviewPanelVisible: Ref<boolean>;
27
27
  /** 是否支持代码审查面板(右上角 </> 按钮);由 Provider capabilities.reviewPanel 决定 */
28
28
  reviewPanelEnabled: Ref<boolean>;
29
+ /** Provider 接管会话侧栏(隐藏原生会话列表,Provider 自家侧栏渲染);由 capabilities.sidebar.takeover 决定 */
30
+ providerSidebar: Ref<boolean>;
31
+ /** 侧栏折叠开关归属(host=宿主左上角按钮驱动 / provider=Provider 自带开关);由 capabilities.sidebar.collapseControl 决定 */
32
+ sidebarCollapseControl: Ref<ProviderSidebarCollapseControl>;
29
33
  bubbleOffset: Ref<FloatingBubbleOffset | undefined>;
30
34
  mode: Ref<"bubble" | "split">;
31
35
  displayMode: Ref<DisplayMode>;
@@ -1 +1 @@
1
- .aipanel-widget{--ap-bg-main: #ffffff;--ap-bg-secondary: #f8f9fa;--ap-bg-tertiary: #f3f4f6;--ap-overlay-bg: rgba(255, 255, 255, .9);--ap-bg-inverse: #1e1e1e;--ap-text-primary: #282828;--ap-text-secondary: #4b5563;--ap-text-tertiary: #6b7280;--ap-text-placeholder: #9ca3af;--ap-text-inverse: #ffffff;--ap-border-primary: #e5e7eb;--ap-border-secondary: #d1d5db;--ap-primary: #3b82f6;--ap-primary-hover: #2563eb;--ap-primary-bg: rgba(59, 130, 246, .1);--ap-danger: #ef4444;--ap-danger-hover: #dc2626;--ap-danger-active: #b91c1c;--ap-success: #10b981;--ap-state-pending: #f59e0b;--ap-state-completed: #22c55e;--ap-state-ongoing: #5686fe;--ap-overlay: rgba(0, 0, 0, .5);--ap-tooltip-bg: #1e1e1e;--ap-dialog-overlay: rgba(0, 0, 0, .5);--ap-thinking-gradient-1: #10b981;--ap-thinking-gradient-2: #059669;--ap-thinking-glow: rgba(16, 185, 129, .3);--ap-thinking-glow-strong: rgba(16, 185, 129, .6);--ap-skeleton-bg: #e5e7eb;--ap-skeleton-gradient: linear-gradient(90deg, #e5e7eb 25%, #f3f4f6 50%, #e5e7eb 75%);--ap-shadow-sm: 0 2px 4px rgba(0, 0, 0, .1);--ap-shadow-md: 0 4px 12px rgba(0, 0, 0, .15);--ap-shadow-lg: 0 8px 32px rgba(0, 0, 0, .12);--ap-shadow-xl: 0 20px 60px rgba(0, 0, 0, .3);--ap-shadow-primary: 0 2px 4px rgba(59, 130, 246, .2);--ap-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .3);--ap-shadow-danger: 0 4px 12px rgba(239, 68, 68, .3);--ap-trigger-bg: #3b82f6;--ap-trigger-bg-hover: #2563eb;--ap-trigger-bg-active: #1d4ed8;--ap-trigger-shadow: 0 2px 8px rgba(59, 130, 246, .3);--ap-trigger-shadow-hover: 0 4px 12px rgba(59, 130, 246, .4);--ap-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}.aipanel-widget.aipanel-theme-dark{--ap-bg-main: #1a1a1a;--ap-bg-secondary: #1e1e1e;--ap-bg-tertiary: #282828;--ap-overlay-bg: rgba(26, 26, 26, .9);--ap-bg-inverse: #ffffff;--ap-text-primary: #f3f4f6;--ap-text-secondary: #d1d5db;--ap-text-tertiary: #9ca3af;--ap-text-placeholder: #6b7280;--ap-text-inverse: #282828;--ap-border-primary: #282828;--ap-border-secondary: #4b5563;--ap-primary: #3b82f6;--ap-primary-hover: #2563eb;--ap-primary-bg: rgba(59, 130, 246, .15);--ap-danger: #ef4444;--ap-danger-hover: #dc2626;--ap-danger-active: #b91c1c;--ap-success: #10b981;--ap-state-pending: #fbbf24;--ap-state-completed: #22c55e;--ap-state-ongoing: #5686fe;--ap-overlay: rgba(26, 26, 26, .9);--ap-tooltip-bg: #282828;--ap-dialog-overlay: rgba(0, 0, 0, .7);--ap-thinking-gradient-1: #34d399;--ap-thinking-gradient-2: #10b981;--ap-thinking-glow: rgba(52, 211, 153, .3);--ap-thinking-glow-strong: rgba(52, 211, 153, .6);--ap-skeleton-bg: #151515;--ap-skeleton-gradient: linear-gradient(90deg, #282828 25%, #4b5563 50%, #282828 75%);--ap-shadow-sm: 0 2px 4px rgba(0, 0, 0, .3);--ap-shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--ap-shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);--ap-shadow-xl: 0 20px 60px rgba(0, 0, 0, .6);--ap-shadow-primary: 0 2px 4px rgba(59, 130, 246, .3);--ap-shadow-primary-hover: 0 4px 6px rgba(59, 130, 246, .4);--ap-shadow-danger: 0 4px 12px rgba(239, 68, 68, .4);--ap-trigger-bg: #60a5fa;--ap-trigger-bg-hover: #3b82f6;--ap-trigger-bg-active: #2563eb;--ap-trigger-shadow: 0 2px 8px rgba(96, 165, 250, .4);--ap-trigger-shadow-hover: 0 4px 12px rgba(96, 165, 250, .5);--ap-trigger-shadow-active: 0 4px 12px rgba(96, 165, 250, .6)}.aipanel-chat{position:fixed;bottom:20px;width:700px;height:86vh;max-height:calc(100vh - 40px);background:var(--ap-bg-main);border-radius:16px;box-shadow:var(--ap-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}.aipanel-chat.open{opacity:1;visibility:visible;transform:translateZ(0) scale(1)}.aipanel-chat.no-transition,.aipanel-chat.no-transition.open{transition:none!important}.aipanel-chat.minimized{width:320px;height:320px}.aipanel-chat.minimized .aipanel-iframe-container{margin-top:-146px}.aipanel-chat-content{display:flex;flex:1;overflow:hidden}.aipanel-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 #3b82f666,0 0 0 2px #3b82f633;animation:slideDown .3s ease;z-index:10000000;display:flex;align-items:center;gap:10px}.aipanel-notification:before{content:"\1f4a1";font-size:16px}.aipanel-dialog-overlay{position:fixed;inset:0;background:var(--ap-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}}.aipanel-dialog{background:var(--ap-bg-main);border-radius:12px;padding:24px;min-width:320px;max-width:400px;box-shadow:var(--ap-shadow-xl);animation:scaleIn .2s ease}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.aipanel-dialog-content{margin-bottom:20px}.aipanel-dialog-message{font-size:15px;color:var(--ap-text-primary);line-height:1.5}.aipanel-dialog-actions{display:flex;gap:12px;justify-content:flex-end}.aipanel-dialog-btn{padding:10px 20px;border-radius:8px;border:none;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.aipanel-dialog-btn.cancel{background:var(--ap-bg-tertiary);color:var(--ap-text-primary)}.aipanel-dialog-btn.cancel:hover{background:var(--ap-text-primary);color:var(--ap-bg-main)}.aipanel-dialog-btn.confirm{background:var(--ap-danger);color:#fff}.aipanel-dialog-btn.confirm:hover{background:var(--ap-danger-hover)}@keyframes slideDown{0%{transform:translate(-50%) translateY(-100%);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.aipanel-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 #3b82f666,0 0 0 2px #3b82f633;animation:slideDown .3s ease;z-index:2147483647;display:flex;align-items:center;gap:10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.aipanel-page-notification:before{content:"\1f4a1";font-size:16px}.aipanel-element-highlight{position:fixed;pointer-events:none;z-index:999998;border-radius:4px}#vue-inspector-container{display:none!important}.aipanel-element-tooltip{position:fixed;background:var(--ap-tooltip-bg);color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;z-index:9999998;box-shadow:var(--ap-shadow-md);max-width:300px;pointer-events:none;line-height:1}.aipanel-tooltip-tag{font-weight:500;margin-bottom:4px;word-break:break-all}.aipanel-tooltip-file{font-size:11px;color:var(--ap-text-placeholder);word-break:break-all}.aipanel-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){.aipanel-chat{width:calc(100vw - 40px);height:calc(100vh - 100px)}}body.has-aipanel-split{transition:padding .3s ease;min-width:auto}body.has-aipanel-split-right{padding-right:var(--aipanel-split-width, 500px)}body.has-aipanel-split-left{padding-left:var(--aipanel-split-width, 500px)}.aipanel-widget.extension-mode{position:relative;width:100%;height:100%;display:flex}.aipanel-widget.extension-mode .aipanel-select-mode-hint,.aipanel-widget.extension-mode .aipanel-dialog-overlay{position:absolute}
1
+ .aipanel-widget{--ap-bg-main: #ffffff;--ap-bg-secondary: #f9fafb;--ap-bg-tertiary: #ebeef2;--ap-overlay-bg: rgba(249, 250, 251, .92);--ap-text-primary: #0f1115;--ap-text-secondary: #61666b;--ap-text-tertiary: #81858c;--ap-text-placeholder: #adb2b8;--ap-border-faint: rgba(15, 17, 21, .04);--ap-border-primary: rgba(15, 17, 21, .1);--ap-border-secondary: rgba(15, 17, 21, .12);--ap-hover-bg: rgba(38, 49, 72, .06);--ap-elevated-fill: #ffffff;--ap-elevated-hover: #f1f3f5;--ap-press-bg: rgba(38, 49, 72, .1);--ap-primary: #0f1115;--ap-primary-hover: #43454a;--ap-on-primary: #ffffff;--ap-accent: #4176e6;--ap-accent-hover: #5686fe;--ap-accent-bg: rgba(65, 118, 230, .1);--ap-danger: #ec1313;--ap-danger-hover: #c40f0f;--ap-state-pending: #f59e0b;--ap-state-completed: #22c55e;--ap-state-ongoing: #5686fe;--ap-tooltip-bg: #1e1e1e;--ap-dialog-overlay: rgba(0, 0, 0, .24);--ap-dialog-bg: #ffffff;--ap-scrollbar-thumb: #e5e5e5;--ap-scrollbar-thumb-hover: #d4d4d4;--ap-thinking-glow: rgba(86, 134, 254, .3);--ap-thinking-glow-strong: rgba(86, 134, 254, .55);--ap-skeleton-bg: rgba(15, 17, 21, .06);--ap-skeleton-gradient: linear-gradient( 90deg, rgba(15, 17, 21, .04) 25%, rgba(15, 17, 21, .1) 50%, rgba(15, 17, 21, .04) 75% );--ap-shadow-sm: 0 1px 2px rgba(15, 17, 21, .04), 0 1px 3px rgba(15, 17, 21, .06);--ap-shadow-md: 0 2px 8px rgba(15, 17, 21, .06), 0 4px 16px rgba(15, 17, 21, .06);--ap-shadow-lg: 0 0 0 .5px rgba(15, 17, 21, .06), 0 4px 16px rgba(15, 17, 21, .08), 0 16px 48px rgba(15, 17, 21, .1);--ap-shadow-xl: 0 0 0 .5px rgba(15, 17, 21, .08), 0 8px 32px rgba(15, 17, 21, .12), 0 24px 72px rgba(15, 17, 21, .14);--ap-shadow-accent: 0 1px 2px rgba(65, 118, 230, .14), 0 0 0 1px rgba(65, 118, 230, .18);position:fixed;z-index:999999;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.aipanel-widget.aipanel-theme-dark{--ap-bg-main: #151517;--ap-bg-secondary: #1b1b1c;--ap-bg-tertiary: #2c2c2e;--ap-overlay-bg: rgba(21, 21, 23, .92);--ap-text-primary: #f9fafb;--ap-text-secondary: #cfd3d6;--ap-text-tertiary: #adb2b8;--ap-text-placeholder: #81858c;--ap-border-faint: rgba(255, 255, 255, .06);--ap-border-primary: rgba(255, 255, 255, .12);--ap-border-secondary: rgba(255, 255, 255, .16);--ap-hover-bg: rgba(255, 255, 255, .08);--ap-elevated-fill: #43454a;--ap-elevated-hover: #353638;--ap-press-bg: rgba(255, 255, 255, .14);--ap-primary: #f9fafb;--ap-primary-hover: #ebeef2;--ap-on-primary: #0f1115;--ap-accent: #679efe;--ap-accent-hover: #5686fe;--ap-accent-bg: rgba(103, 158, 254, .16);--ap-danger: #f25a5a;--ap-danger-hover: #ff8383;--ap-state-pending: #f59e0b;--ap-state-completed: #22c55e;--ap-state-ongoing: #5686fe;--ap-tooltip-bg: #282828;--ap-dialog-overlay: rgba(0, 0, 0, .5);--ap-dialog-bg: #2c2c2e;--ap-scrollbar-thumb: #3c3c3d;--ap-scrollbar-thumb-hover: #545557;--ap-thinking-glow: rgba(103, 158, 254, .35);--ap-thinking-glow-strong: rgba(103, 158, 254, .6);--ap-skeleton-bg: rgba(255, 255, 255, .07);--ap-skeleton-gradient: linear-gradient( 90deg, rgba(255, 255, 255, .05) 25%, rgba(255, 255, 255, .12) 50%, rgba(255, 255, 255, .05) 75% );--ap-shadow-sm: 0 1px 2px rgba(0, 0, 0, .3), 0 1px 3px rgba(0, 0, 0, .24);--ap-shadow-md: 0 2px 8px rgba(0, 0, 0, .3), 0 4px 16px rgba(0, 0, 0, .2);--ap-shadow-lg: 0 0 0 .5px rgba(255, 255, 255, .06), 0 4px 16px rgba(0, 0, 0, .3), 0 16px 48px rgba(0, 0, 0, .25);--ap-shadow-xl: 0 0 0 .5px rgba(255, 255, 255, .08), 0 8px 32px rgba(0, 0, 0, .36), 0 24px 72px rgba(0, 0, 0, .3);--ap-shadow-accent: 0 1px 2px rgba(103, 158, 254, .2), 0 0 0 1px rgba(103, 158, 254, .25)}@supports not selector(::-webkit-scrollbar){.aipanel-widget,.aipanel-widget *{scrollbar-width:thin;scrollbar-color:var(--ap-scrollbar-thumb) transparent}}.aipanel-widget ::-webkit-scrollbar,.aipanel-widget *::-webkit-scrollbar{width:8px;height:8px}.aipanel-widget ::-webkit-scrollbar-track,.aipanel-widget *::-webkit-scrollbar-track{background:transparent}.aipanel-widget ::-webkit-scrollbar-thumb,.aipanel-widget *::-webkit-scrollbar-thumb{border-radius:4px;background:var(--ap-scrollbar-thumb)}.aipanel-widget ::-webkit-scrollbar-thumb:hover,.aipanel-widget *::-webkit-scrollbar-thumb:hover{background:var(--ap-scrollbar-thumb-hover)}.aipanel-widget ::-webkit-scrollbar-corner,.aipanel-widget *::-webkit-scrollbar-corner{background:transparent}.aipanel-chat{position:fixed;bottom:20px;width:700px;height:86vh;max-height:calc(100vh - 40px);background:var(--ap-bg-main);border-radius:16px;box-shadow:var(--ap-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}.aipanel-chat.open{opacity:1;visibility:visible;transform:translateZ(0) scale(1)}.aipanel-chat.no-transition,.aipanel-chat.no-transition.open{transition:none!important}.aipanel-chat.minimized{width:320px;height:320px}.aipanel-chat.minimized .aipanel-iframe-container{margin-top:-146px}.aipanel-chat-content{display:flex;flex:1;overflow:hidden}.aipanel-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 #3b82f666,0 0 0 2px #3b82f633;animation:slideDown .3s ease;z-index:10000000;display:flex;align-items:center;gap:10px}.aipanel-notification:before{content:"\1f4a1";font-size:16px}.aipanel-dialog-overlay{position:fixed;inset:0;background:var(--ap-dialog-overlay);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:9999999;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.aipanel-dialog{width:min(380px,100%);background:var(--ap-dialog-bg);border-radius:24px;padding:24px 24px 20px;box-shadow:var(--ap-shadow-xl);animation:scaleIn .2s ease}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.aipanel-dialog-content{margin-bottom:20px}.aipanel-dialog-message{font-size:14px;line-height:22px;font-weight:400;color:var(--ap-text-primary)}.aipanel-dialog-actions{display:flex;gap:8px;justify-content:flex-end}.aipanel-dialog-btn{height:36px;padding:0 20px;border-radius:999px;border:1px solid transparent;font-size:14px;line-height:22px;font-weight:500;cursor:pointer;transition:all .2s}.aipanel-dialog-btn.cancel{background:transparent;border-color:var(--ap-border-primary);color:var(--ap-text-secondary)}.aipanel-dialog-btn.cancel:hover{background:var(--ap-hover-bg);color:var(--ap-text-primary)}.aipanel-dialog-btn.confirm{background:var(--ap-danger);color:#fff}.aipanel-dialog-btn.confirm:hover{background:var(--ap-danger-hover)}@keyframes slideDown{0%{transform:translate(-50%) translateY(-100%);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.aipanel-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 #3b82f666,0 0 0 2px #3b82f633;animation:slideDown .3s ease;z-index:2147483647;display:flex;align-items:center;gap:10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.aipanel-page-notification:before{content:"\1f4a1";font-size:16px}.aipanel-element-highlight{position:fixed;pointer-events:none;z-index:999998;border-radius:4px}#vue-inspector-container{display:none!important}.aipanel-element-tooltip{position:fixed;background:var(--ap-tooltip-bg);color:#fff;padding:8px 12px;border-radius:6px;font-size:12px;z-index:9999998;box-shadow:var(--ap-shadow-md);max-width:300px;pointer-events:none;line-height:1}.aipanel-tooltip-tag{font-weight:500;margin-bottom:4px;word-break:break-all}.aipanel-tooltip-file{font-size:11px;color:var(--ap-text-placeholder);word-break:break-all}.aipanel-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){.aipanel-chat{width:calc(100vw - 40px);height:calc(100vh - 100px)}}body.has-aipanel-split{transition:padding .3s ease;min-width:auto}body.has-aipanel-split-right{padding-right:var(--aipanel-split-width, 500px)}body.has-aipanel-split-left{padding-left:var(--aipanel-split-width, 500px)}.aipanel-widget.extension-mode{position:relative;width:100%;height:100%;display:flex}.aipanel-widget.extension-mode .aipanel-select-mode-hint,.aipanel-widget.extension-mode .aipanel-dialog-overlay{position:absolute}
@@ -78,7 +78,9 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
78
78
  splitMode: { type: Object, required: false, default: void 0 },
79
79
  splitPanelWidth: { type: Number, required: false, default: 500 },
80
80
  hideBubble: { type: Boolean, required: false, default: false },
81
- reviewPanelEnabled: { type: Boolean, required: false, default: false }
81
+ reviewPanelEnabled: { type: Boolean, required: false, default: false },
82
+ providerSidebar: { type: Boolean, required: false, default: false },
83
+ sidebarCollapseControl: { type: String, required: false, default: "host" }
82
84
  },
83
85
  emits: ["update:open", "update:selectMode", "update:sessionListCollapsed", "update:currentSessionId", "update:selectedElements", "update:theme", "update:thinking", "update:splitPanelWidth", "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", "split-panel-width-change"],
84
86
  setup(__props, { expose: __expose, emit: __emit }) {
@@ -140,6 +142,14 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
140
142
  if (!iframeLoaded.value || !iframeReady.value) return;
141
143
  sendMessageToIframe(import_core.WIDGET_MSG.PROMPT_DOCK_VISIBILITY, { visible: promptDockVisible.value });
142
144
  sendMessageToIframe(import_core.WIDGET_MSG.MINIMIZE_STATE, { minimized: minimized.value });
145
+ sendMessageToIframe(import_core.WIDGET_MSG.SIDEBAR_MODE, {
146
+ mode: props.providerSidebar ? "provider" : "host"
147
+ });
148
+ if (props.providerSidebar && props.sidebarCollapseControl === "host") {
149
+ sendMessageToIframe(import_core.WIDGET_MSG.SIDEBAR_COLLAPSE, {
150
+ collapsed: localSessionListCollapsed.value
151
+ });
152
+ }
143
153
  if (props.reviewPanelEnabled) {
144
154
  sendMessageToIframe(import_core.WIDGET_MSG.REVIEW_PANEL_TOGGLE, { visible: reviewPanelVisible.value });
145
155
  }
@@ -166,6 +176,12 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
166
176
  localDisplayMode.value = val;
167
177
  }
168
178
  );
179
+ (0, import_vue2.watch)(
180
+ () => [props.providerSidebar, props.sidebarCollapseControl],
181
+ () => {
182
+ syncStateToIframe();
183
+ }
184
+ );
169
185
  const handleToggleDisplayMode = () => {
170
186
  if (localDisplayMode.value === "extension" || localDisplayMode.value === "extension-selector")
171
187
  return;
@@ -207,6 +223,9 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
207
223
  localSessionListCollapsed.value = collapsed;
208
224
  emit("update:sessionListCollapsed", collapsed);
209
225
  emit("toggle-session-list", collapsed);
226
+ if (props.providerSidebar && props.sidebarCollapseControl === "host") {
227
+ sendMessageToIframe(import_core.WIDGET_MSG.SIDEBAR_COLLAPSE, { collapsed });
228
+ }
210
229
  },
211
230
  onEmptyAction: () => {
212
231
  emit("empty-action");
@@ -387,6 +406,16 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
387
406
  iframeReady.value = true;
388
407
  syncStateToIframe();
389
408
  }
409
+ if (event.data?.type === import_core.WIDGET_MSG.SIDEBAR_STATE) {
410
+ if (props.providerSidebar && props.sidebarCollapseControl === "host") {
411
+ const collapsed = event.data.collapsed === true;
412
+ if (collapsed !== localSessionListCollapsed.value) {
413
+ localSessionListCollapsed.value = collapsed;
414
+ emit("update:sessionListCollapsed", collapsed);
415
+ emit("toggle-session-list", collapsed);
416
+ }
417
+ }
418
+ }
390
419
  };
391
420
  (0, import_vue2.onMounted)(() => {
392
421
  if (typeof window !== "undefined") {
@@ -532,6 +561,8 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
532
561
  promptDockVisible,
533
562
  reviewPanelVisible,
534
563
  reviewPanelEnabled: (0, import_vue2.toRef)(props, "reviewPanelEnabled"),
564
+ providerSidebar: (0, import_vue2.toRef)(props, "providerSidebar"),
565
+ sidebarCollapseControl: (0, import_vue2.toRef)(props, "sidebarCollapseControl"),
535
566
  bubbleOffset,
536
567
  mode: effectiveMode,
537
568
  displayMode: localDisplayMode,
@@ -652,6 +683,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
652
683
  "resolved-theme": $setup.resolvedTheme,
653
684
  "split-position": $setup.splitPosition,
654
685
  extension: $setup.isExtensionMode,
686
+ "provider-sidebar": $setup.props.providerSidebar,
655
687
  onResize: $setup.handleResize,
656
688
  onResizeStart: $setup.handleResizeStart,
657
689
  onResizeEnd: $setup.handleResizeEnd,
@@ -720,7 +752,7 @@ function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
720
752
  ]),
721
753
  key: "6"
722
754
  } : void 0
723
- ]), 1032, ["mode", "open", "minimized", "position-style", "animation-origin", "panel-width", "resizable", "min-width", "max-width", "no-transition", "dragging", "thinking", "resolved-theme", "split-position", "extension", "onResize", "onToggle"]),
755
+ ]), 1032, ["mode", "open", "minimized", "position-style", "animation-origin", "panel-width", "resizable", "min-width", "max-width", "no-transition", "dragging", "thinking", "resolved-theme", "split-position", "extension", "provider-sidebar", "onResize", "onToggle"]),
724
756
  (0, import_vue3.createVNode)($setup["SelectHint"])
725
757
  ],
726
758
  64
@@ -44,6 +44,8 @@ declare const __VLS_base: import("vue").DefineComponent<AIPanelWidgetProps, {
44
44
  selectEnabled: boolean;
45
45
  theme: import("@aipanel/core").AIPanelWidgetTheme;
46
46
  reviewPanelEnabled: boolean;
47
+ providerSidebar: boolean;
48
+ sidebarCollapseControl: import("@aipanel/core").ProviderSidebarCollapseControl;
47
49
  displayMode: import("@aipanel/core").DisplayMode;
48
50
  showSessionListSkeleton: boolean;
49
51
  sessionKey: string;
@@ -1 +1 @@
1
- export type { AIPanelWidgetTheme, AIPanelWidgetSession, AIPanelSelectedElement, AIPanelRemoveSelectedPayload, AIPanelWidgetSessionItem, AIPanelSelectedElementItem, AIPanelWidgetProps, AIPanelWidgetEmits, AIPanelSessionThinkingState, DisplayMode, SplitModeOptions, } from "@aipanel/core";
1
+ export type { AIPanelWidgetTheme, AIPanelWidgetSession, AIPanelSelectedElement, AIPanelRemoveSelectedPayload, AIPanelWidgetSessionItem, AIPanelSelectedElementItem, AIPanelWidgetProps, AIPanelWidgetEmits, AIPanelSessionThinkingState, DisplayMode, SplitModeOptions, ProviderSidebarCollapseControl, } from "@aipanel/core";
package/lib/index.cjs CHANGED
@@ -26,7 +26,7 @@ module.exports = __toCommonJS(lib_exports);
26
26
  var import_AI_panel_widget = require("./AI-panel-widget/index.cjs");
27
27
  __reExport(lib_exports, require("./AI-panel-widget/index.cjs"), module.exports);
28
28
  __reExport(lib_exports, require("./setup.cjs"), module.exports);
29
- const version = "1.2.11";
29
+ const version = "1.2.12";
30
30
  function install(app, options) {
31
31
  const components = [
32
32
  import_AI_panel_widget.AIPanelWidget
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { App } from 'vue';
2
- declare const version = "1.2.11";
2
+ declare const version = "1.2.12";
3
3
  declare function install(app: App<any>, options?: any): void;
4
4
  export { install, version, };
5
5
  export * from './AI-panel-widget';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aipanel/ui",
3
- "version": "1.2.11",
3
+ "version": "1.2.12",
4
4
  "description": "Reusable AIPanel widget components built with Pagoda CLI",
5
5
  "type": "module",
6
6
  "main": "lib/index.cjs",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "css-selector-generator": "^3.9.2",
34
- "@aipanel/core": "1.2.11"
34
+ "@aipanel/core": "1.2.12"
35
35
  },
36
36
  "scripts": {
37
37
  "build": "pagoda-cli build",
@@ -1 +0,0 @@
1
- .aipanel-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 #3b82f640;transition:right .3s ease,width .25s cubic-bezier(.4,0,.2,1),background .25s ease,box-shadow .25s ease;z-index:99998}.aipanel-split-trigger:hover{width:24px;background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:-3px 0 12px #3b82f659}.aipanel-split-trigger.open{width:20px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:8px 0 0 8px;box-shadow:-2px 0 8px #3b82f640}.aipanel-split-trigger.open:hover{width:24px;background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:-3px 0 12px #3b82f659}.aipanel-split-trigger-icon{display:flex;align-items:center;justify-content:center;transition:transform .25s ease}.aipanel-split-trigger:hover .aipanel-split-trigger-icon{transform:scale(1.1)}.aipanel-split-thinking-indicator{position:absolute;top:6px;right:6px;width:5px;height:5px;background:var(--ap-success);border-radius:50%;animation:aipanel-thinking-pulse 1.5s ease-in-out infinite;box-shadow:0 0 4px #10b98180}@keyframes aipanel-thinking-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.3)}}
@@ -1,18 +0,0 @@
1
- type __VLS_Props = {
2
- open?: boolean;
3
- thinking?: boolean;
4
- resolvedTheme?: "light" | "dark";
5
- panelWidth?: number;
6
- };
7
- declare const __VLS_export: 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
- declare const _default: typeof __VLS_export;
18
- export default _default;
@@ -1,112 +0,0 @@
1
- import "./SplitTrigger-sfc.css";
2
- import { defineComponent as _defineComponent } from "vue";
3
- import { computed } from "vue";
4
- const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
5
- ...{
6
- name: "SplitTrigger"
7
- },
8
- __name: "SplitTrigger",
9
- props: {
10
- open: { type: Boolean, required: false, default: false },
11
- thinking: { type: Boolean, required: false, default: false },
12
- resolvedTheme: { type: String, required: false, default: "light" },
13
- panelWidth: { type: Number, required: false, default: 500 }
14
- },
15
- emits: ["toggle"],
16
- setup(__props, { expose: __expose, emit: __emit }) {
17
- __expose();
18
- const props = __props;
19
- const emit = __emit;
20
- const buttonClasses = computed(() => [
21
- "aipanel-split-trigger",
22
- {
23
- open: props.open,
24
- thinking: props.thinking,
25
- "aipanel-theme-dark": props.resolvedTheme === "dark"
26
- }
27
- ]);
28
- const buttonStyle = computed(() => {
29
- if (props.open) {
30
- return {
31
- right: `${props.panelWidth}px`
32
- };
33
- }
34
- return {};
35
- });
36
- const handleClick = () => {
37
- emit("toggle");
38
- };
39
- const __returned__ = { props, emit, buttonClasses, buttonStyle, handleClick };
40
- Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
41
- return __returned__;
42
- }
43
- });
44
- import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from "vue";
45
- const _hoisted_1 = ["aria-expanded"];
46
- const _hoisted_2 = { class: "aipanel-split-trigger-icon" };
47
- const _hoisted_3 = {
48
- key: 0,
49
- viewBox: "0 0 24 24",
50
- width: "16",
51
- height: "16",
52
- fill: "none",
53
- stroke: "currentColor",
54
- "stroke-width": "2"
55
- };
56
- const _hoisted_4 = {
57
- key: 1,
58
- viewBox: "0 0 24 24",
59
- width: "16",
60
- height: "16",
61
- fill: "none",
62
- stroke: "currentColor",
63
- "stroke-width": "2"
64
- };
65
- const _hoisted_5 = {
66
- key: 0,
67
- class: "aipanel-split-thinking-indicator"
68
- };
69
- function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
70
- return _openBlock(), _createElementBlock("button", {
71
- class: _normalizeClass($setup.buttonClasses),
72
- style: _normalizeStyle($setup.buttonStyle),
73
- type: "button",
74
- "aria-expanded": $props.open,
75
- "aria-label": "\u6253\u5F00 AI \u52A9\u624B",
76
- onClick: $setup.handleClick
77
- }, [
78
- _createElementVNode("span", _hoisted_2, [
79
- $props.open ? (_openBlock(), _createElementBlock("svg", _hoisted_3, [..._cache[0] || (_cache[0] = [
80
- _createElementVNode(
81
- "path",
82
- {
83
- d: "M9 18l6-6-6-6",
84
- "stroke-linecap": "round",
85
- "stroke-linejoin": "round"
86
- },
87
- null,
88
- -1
89
- /* CACHED */
90
- )
91
- ])])) : (_openBlock(), _createElementBlock("svg", _hoisted_4, [..._cache[1] || (_cache[1] = [
92
- _createElementVNode(
93
- "path",
94
- {
95
- d: "M15 18l-6-6 6-6",
96
- "stroke-linecap": "round",
97
- "stroke-linejoin": "round"
98
- },
99
- null,
100
- -1
101
- /* CACHED */
102
- )
103
- ])]))
104
- ]),
105
- $props.thinking ? (_openBlock(), _createElementBlock("span", _hoisted_5)) : _createCommentVNode("v-if", true)
106
- ], 14, _hoisted_1);
107
- }
108
- __vue_sfc__.render = __vue_render__;
109
- var SplitTrigger_vue_default = __vue_sfc__;
110
- export {
111
- SplitTrigger_vue_default as default
112
- };
@@ -1 +0,0 @@
1
- .aipanel-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 #3b82f640;transition:right .3s ease,width .25s cubic-bezier(.4,0,.2,1),background .25s ease,box-shadow .25s ease;z-index:99998}.aipanel-split-trigger:hover{width:24px;background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:-3px 0 12px #3b82f659}.aipanel-split-trigger.open{width:20px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-radius:8px 0 0 8px;box-shadow:-2px 0 8px #3b82f640}.aipanel-split-trigger.open:hover{width:24px;background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:-3px 0 12px #3b82f659}.aipanel-split-trigger-icon{display:flex;align-items:center;justify-content:center;transition:transform .25s ease}.aipanel-split-trigger:hover .aipanel-split-trigger-icon{transform:scale(1.1)}.aipanel-split-thinking-indicator{position:absolute;top:6px;right:6px;width:5px;height:5px;background:var(--ap-success);border-radius:50%;animation:aipanel-thinking-pulse 1.5s ease-in-out infinite;box-shadow:0 0 4px #10b98180}@keyframes aipanel-thinking-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.3)}}
@@ -1,131 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var SplitTrigger_vue_exports = {};
19
- __export(SplitTrigger_vue_exports, {
20
- default: () => SplitTrigger_vue_default
21
- });
22
- module.exports = __toCommonJS(SplitTrigger_vue_exports);
23
- var import_SplitTrigger_sfc = require("./SplitTrigger-sfc.css");
24
- var import_vue = require("vue");
25
- var import_vue2 = require("vue");
26
- var import_vue3 = require("vue");
27
- const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
28
- ...{
29
- name: "SplitTrigger"
30
- },
31
- __name: "SplitTrigger",
32
- props: {
33
- open: { type: Boolean, required: false, default: false },
34
- thinking: { type: Boolean, required: false, default: false },
35
- resolvedTheme: { type: String, required: false, default: "light" },
36
- panelWidth: { type: Number, required: false, default: 500 }
37
- },
38
- emits: ["toggle"],
39
- setup(__props, { expose: __expose, emit: __emit }) {
40
- __expose();
41
- const props = __props;
42
- const emit = __emit;
43
- const buttonClasses = (0, import_vue2.computed)(() => [
44
- "aipanel-split-trigger",
45
- {
46
- open: props.open,
47
- thinking: props.thinking,
48
- "aipanel-theme-dark": props.resolvedTheme === "dark"
49
- }
50
- ]);
51
- const buttonStyle = (0, import_vue2.computed)(() => {
52
- if (props.open) {
53
- return {
54
- right: `${props.panelWidth}px`
55
- };
56
- }
57
- return {};
58
- });
59
- const handleClick = () => {
60
- emit("toggle");
61
- };
62
- const __returned__ = { props, emit, buttonClasses, buttonStyle, handleClick };
63
- Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
64
- return __returned__;
65
- }
66
- });
67
- const _hoisted_1 = ["aria-expanded"];
68
- const _hoisted_2 = { class: "aipanel-split-trigger-icon" };
69
- const _hoisted_3 = {
70
- key: 0,
71
- viewBox: "0 0 24 24",
72
- width: "16",
73
- height: "16",
74
- fill: "none",
75
- stroke: "currentColor",
76
- "stroke-width": "2"
77
- };
78
- const _hoisted_4 = {
79
- key: 1,
80
- viewBox: "0 0 24 24",
81
- width: "16",
82
- height: "16",
83
- fill: "none",
84
- stroke: "currentColor",
85
- "stroke-width": "2"
86
- };
87
- const _hoisted_5 = {
88
- key: 0,
89
- class: "aipanel-split-thinking-indicator"
90
- };
91
- function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
92
- return (0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("button", {
93
- class: (0, import_vue3.normalizeClass)($setup.buttonClasses),
94
- style: (0, import_vue3.normalizeStyle)($setup.buttonStyle),
95
- type: "button",
96
- "aria-expanded": $props.open,
97
- "aria-label": "\u6253\u5F00 AI \u52A9\u624B",
98
- onClick: $setup.handleClick
99
- }, [
100
- (0, import_vue3.createElementVNode)("span", _hoisted_2, [
101
- $props.open ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_3, [..._cache[0] || (_cache[0] = [
102
- (0, import_vue3.createElementVNode)(
103
- "path",
104
- {
105
- d: "M9 18l6-6-6-6",
106
- "stroke-linecap": "round",
107
- "stroke-linejoin": "round"
108
- },
109
- null,
110
- -1
111
- /* CACHED */
112
- )
113
- ])])) : ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("svg", _hoisted_4, [..._cache[1] || (_cache[1] = [
114
- (0, import_vue3.createElementVNode)(
115
- "path",
116
- {
117
- d: "M15 18l-6-6 6-6",
118
- "stroke-linecap": "round",
119
- "stroke-linejoin": "round"
120
- },
121
- null,
122
- -1
123
- /* CACHED */
124
- )
125
- ])]))
126
- ]),
127
- $props.thinking ? ((0, import_vue3.openBlock)(), (0, import_vue3.createElementBlock)("span", _hoisted_5)) : (0, import_vue3.createCommentVNode)("v-if", true)
128
- ], 14, _hoisted_1);
129
- }
130
- __vue_sfc__.render = __vue_render__;
131
- var SplitTrigger_vue_default = __vue_sfc__;
@@ -1,18 +0,0 @@
1
- type __VLS_Props = {
2
- open?: boolean;
3
- thinking?: boolean;
4
- resolvedTheme?: "light" | "dark";
5
- panelWidth?: number;
6
- };
7
- declare const __VLS_export: 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
- declare const _default: typeof __VLS_export;
18
- export default _default;