@oro.ad/nuxt-claude-devtools 1.3.0 → 1.5.0

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 (111) hide show
  1. package/README.md +2 -1
  2. package/dist/client/200.html +1 -1
  3. package/dist/client/404.html +1 -1
  4. package/dist/client/_nuxt/{COus5Ssl.js → 0BAoaFXM.js} +1 -1
  5. package/dist/client/_nuxt/{B_BoWmnX.js → 88aFj9mk.js} +1 -1
  6. package/dist/client/_nuxt/{DolUcBed.js → B5vRr8Ti.js} +1 -1
  7. package/dist/client/_nuxt/{CDQtmRaX.js → BI4BFakr.js} +1 -1
  8. package/dist/client/_nuxt/{CPA0s6N9.js → BJuQJ8yP.js} +1 -1
  9. package/dist/client/_nuxt/{BB1-kxmm.js → BMxGt8ZG.js} +1 -1
  10. package/dist/client/_nuxt/{TQi6eIO6.js → Baq9Hzkz.js} +1 -1
  11. package/dist/client/_nuxt/{DbJLoP3G.js → Bf779K50.js} +1 -1
  12. package/dist/client/_nuxt/BmF8r-gh.js +1 -0
  13. package/dist/client/_nuxt/BryQ1L4F.js +1 -0
  14. package/dist/client/_nuxt/{V4UvAcd3.js → BsG0VKct.js} +1 -1
  15. package/dist/client/_nuxt/Bt-DdLhQ.js +12 -0
  16. package/dist/client/_nuxt/{CHeJJZL9.js → C6Xm_PzB.js} +1 -1
  17. package/dist/client/_nuxt/{DC_XB519.js → C8AkZ-W3.js} +1 -1
  18. package/dist/client/_nuxt/{BSVkH7b6.js → CEM1iRz_.js} +1 -1
  19. package/dist/client/_nuxt/{BcZxFXBD.js → CETmet01.js} +1 -1
  20. package/dist/client/_nuxt/CG1tBJBN.js +1 -0
  21. package/dist/client/_nuxt/{D2l4TRxW.js → CXOn8Upj.js} +1 -1
  22. package/dist/client/_nuxt/CYomf6PL.js +1 -0
  23. package/dist/client/_nuxt/{DEys9N1G.js → CrhTgxiU.js} +1 -1
  24. package/dist/client/_nuxt/{BYp73eMl.js → CtWfW1XP.js} +1 -1
  25. package/dist/client/_nuxt/{d8BPa19J.js → CuUOvg0u.js} +1 -1
  26. package/dist/client/_nuxt/CxYvL5O5.js +1 -0
  27. package/dist/client/_nuxt/D8DUrd91.js +1 -0
  28. package/dist/client/_nuxt/{DSt96JPY.js → DFkDlupw.js} +2 -2
  29. package/dist/client/_nuxt/{B8uzckkK.js → DG-9quB_.js} +1 -1
  30. package/dist/client/_nuxt/DHlhBFAg.js +1 -0
  31. package/dist/client/_nuxt/{BnXQTjo-.js → DJw5U4z8.js} +1 -1
  32. package/dist/client/_nuxt/{M6QPYocW.js → DRReoGGV.js} +1 -1
  33. package/dist/client/_nuxt/{DGQ4s7ae.js → DSMailoF.js} +1 -1
  34. package/dist/client/_nuxt/{qbS8UemQ.js → DUPgidXP.js} +1 -1
  35. package/dist/client/_nuxt/{QumocfwJ.js → D_JyZ6Hh.js} +1 -1
  36. package/dist/client/_nuxt/{BAb1fJOF.js → Dgm9zqhP.js} +2 -2
  37. package/dist/client/_nuxt/builds/latest.json +1 -1
  38. package/dist/client/_nuxt/builds/meta/9c3f4183-f791-4377-86dc-370ce38cc49b.json +1 -0
  39. package/dist/client/_nuxt/{C--9REmc.js → h1c4XpR7.js} +1 -1
  40. package/dist/client/_nuxt/kN0L7CSs.js +1 -0
  41. package/dist/client/_nuxt/{BMZIbUUD.js → n4TwJfzb.js} +1 -1
  42. package/dist/client/_nuxt/zY60w9UT.js +1 -0
  43. package/dist/client/agents/index.html +1 -1
  44. package/dist/client/commands/index.html +1 -1
  45. package/dist/client/docs/index.html +1 -1
  46. package/dist/client/index.html +1 -1
  47. package/dist/client/mcp/index.html +1 -1
  48. package/dist/client/plugins/index.html +1 -1
  49. package/dist/client/settings/index.html +1 -1
  50. package/dist/client/skills/index.html +1 -1
  51. package/dist/module.json +1 -1
  52. package/dist/module.mjs +0 -4
  53. package/dist/runtime/overlay/components/ChatOverlay.d.vue.ts +0 -1
  54. package/dist/runtime/overlay/components/ChatOverlay.vue +221 -731
  55. package/dist/runtime/overlay/components/ChatOverlay.vue.d.ts +0 -1
  56. package/dist/runtime/overlay/components/MarkdownContent.vue +1 -1
  57. package/dist/runtime/overlay/components/ToolCallBlock.vue +1 -1
  58. package/dist/runtime/overlay/components/chat/ChatHeader.d.vue.ts +18 -0
  59. package/dist/runtime/overlay/components/chat/ChatHeader.vue +82 -0
  60. package/dist/runtime/overlay/components/chat/ChatHeader.vue.d.ts +18 -0
  61. package/dist/runtime/overlay/components/chat/ChatInput.d.vue.ts +22 -0
  62. package/dist/runtime/overlay/components/chat/ChatInput.vue +526 -0
  63. package/dist/runtime/overlay/components/chat/ChatInput.vue.d.ts +22 -0
  64. package/dist/runtime/overlay/components/chat/ChatMessages.d.vue.ts +13 -0
  65. package/dist/runtime/overlay/components/chat/ChatMessages.vue +160 -0
  66. package/dist/runtime/overlay/components/chat/ChatMessages.vue.d.ts +13 -0
  67. package/dist/runtime/overlay/components/chat/ClaudeBadge.d.vue.ts +22 -0
  68. package/dist/runtime/overlay/components/chat/ClaudeBadge.vue +85 -0
  69. package/dist/runtime/overlay/components/chat/ClaudeBadge.vue.d.ts +22 -0
  70. package/dist/runtime/overlay/components/chat/HistoryPanel.d.vue.ts +17 -0
  71. package/dist/runtime/overlay/components/chat/HistoryPanel.vue +65 -0
  72. package/dist/runtime/overlay/components/chat/HistoryPanel.vue.d.ts +17 -0
  73. package/dist/runtime/overlay/components/chat/NicknameModal.d.vue.ts +13 -0
  74. package/dist/runtime/overlay/components/chat/NicknameModal.vue +89 -0
  75. package/dist/runtime/overlay/components/chat/NicknameModal.vue.d.ts +13 -0
  76. package/dist/runtime/overlay/components/chat/index.d.ts +6 -0
  77. package/dist/runtime/overlay/components/chat/index.js +6 -0
  78. package/dist/runtime/overlay/composables/index.d.ts +3 -0
  79. package/dist/runtime/overlay/composables/index.js +3 -0
  80. package/dist/runtime/overlay/composables/useMessageContext.d.ts +25 -0
  81. package/dist/runtime/overlay/composables/useMessageContext.js +29 -0
  82. package/dist/runtime/overlay/composables/useMobileSwipe.d.ts +15 -0
  83. package/dist/runtime/overlay/composables/useMobileSwipe.js +79 -0
  84. package/dist/runtime/overlay/composables/usePanelInteraction.d.ts +30 -0
  85. package/dist/runtime/overlay/composables/usePanelInteraction.js +184 -0
  86. package/dist/runtime/overlay/composables/usePanelPosition.d.ts +69 -0
  87. package/dist/runtime/overlay/composables/usePanelPosition.js +147 -0
  88. package/dist/runtime/server/claude-session.d.ts +11 -0
  89. package/dist/runtime/server/claude-session.js +166 -6
  90. package/dist/runtime/shared/composables/useClaudeChat.d.ts +7 -3
  91. package/dist/runtime/shared/composables/useClaudeChat.js +27 -251
  92. package/dist/runtime/shared/composables/useClaudeChatCore.d.ts +40 -0
  93. package/dist/runtime/shared/composables/useClaudeChatCore.js +350 -0
  94. package/dist/runtime/shared/composables/useMessageContext.d.ts +54 -0
  95. package/dist/runtime/shared/composables/useMessageContext.js +195 -0
  96. package/dist/runtime/shared/composables/useShare.d.ts +14 -4
  97. package/dist/runtime/shared/composables/useShare.js +57 -35
  98. package/dist/runtime/shared/composables/useVoiceInput.js +40 -11
  99. package/dist/runtime/shared/types.d.ts +36 -0
  100. package/dist/runtime/types.d.ts +14 -0
  101. package/package.json +1 -1
  102. package/dist/client/_nuxt/BSF2Vz9o.js +0 -1
  103. package/dist/client/_nuxt/BflmC3YB.js +0 -1
  104. package/dist/client/_nuxt/CRkq21kc.js +0 -1
  105. package/dist/client/_nuxt/Cgba93Y9.js +0 -1
  106. package/dist/client/_nuxt/DH8Ugy8E.js +0 -1
  107. package/dist/client/_nuxt/DeGmaFBY.js +0 -1
  108. package/dist/client/_nuxt/DgfRwrFR.js +0 -1
  109. package/dist/client/_nuxt/builds/meta/2be12f06-336a-4fdd-b982-2f6c682c14a6.json +0 -1
  110. package/dist/client/_nuxt/wDw60tEC.js +0 -10
  111. package/dist/client/_nuxt/xEjB6ozD.js +0 -1
@@ -1,5 +1,4 @@
1
1
  type __VLS_Props = {
2
- /** Custom socket URL (for tunnel) */
3
2
  socketUrl?: string;
4
3
  };
5
4
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -27,5 +27,5 @@ const renderedContent = computed(() => {
27
27
  </template>
28
28
 
29
29
  <style>
30
- .markdown-content{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.625;word-break:break-word}.markdown-content h1{font-size:1.25rem;font-weight:700;margin-bottom:.5rem;margin-top:1rem}.markdown-content h2{font-size:1.125rem;font-weight:700;margin-bottom:.5rem;margin-top:.75rem}.markdown-content h3{font-size:1rem;font-weight:600;margin-bottom:.25rem;margin-top:.5rem}.markdown-content p{margin:.5rem 0}.markdown-content ol,.markdown-content ul{margin:.5rem 0 .5rem 1rem}.markdown-content ul{list-style-type:disc}.markdown-content ol{list-style-type:decimal}.markdown-content li{margin:.25rem 0}.markdown-content code{background:hsla(0,0%,100%,.1);border-radius:4px;font-family:SF Mono,Monaco,Cascadia Code,Consolas,monospace;font-size:.75rem;padding:.125rem .375rem}.markdown-content pre{background:rgba(0,0,0,.3);border-radius:8px;margin:.5rem 0;overflow-x:auto;padding:.75rem}.markdown-content pre code{background:transparent;font-size:.8rem;line-height:1.5;padding:0}.markdown-content blockquote{border-left:4px solid hsla(0,0%,100%,.2);color:var(--claude-text-muted,#a0a0a0);font-style:italic;margin:.5rem 0;padding-left:1rem}.markdown-content a{color:#3b82f6;text-decoration:none}.markdown-content a:hover{text-decoration:underline}.markdown-content table{border-collapse:collapse;font-size:.875rem;margin:.5rem 0;width:100%}.markdown-content td,.markdown-content th{border:1px solid hsla(0,0%,100%,.15);padding:.5rem .75rem;text-align:left}.markdown-content th{background:hsla(0,0%,100%,.05);font-weight:600}.markdown-content tr:nth-child(2n){background:hsla(0,0%,100%,.02)}.markdown-content hr{border:none;border-top:1px solid hsla(0,0%,100%,.15);margin:1rem 0}.markdown-content img{border-radius:8px;height:auto;max-width:100%}.markdown-content>:first-child{margin-top:0}.markdown-content>:last-child{margin-bottom:0}
30
+ .markdown-content{color:hsla(0,0%,100%,.92);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.7;word-break:break-word}.markdown-content h1{background:linear-gradient(135deg,#fff,hsla(0,0%,100%,.75));-webkit-background-clip:text;background-clip:text;font-size:1.35rem;margin-bottom:.625rem;margin-top:1.25rem}.markdown-content h1,.markdown-content h2{font-weight:700;-webkit-text-fill-color:transparent}.markdown-content h2{background:linear-gradient(135deg,#fff,hsla(0,0%,100%,.8));-webkit-background-clip:text;background-clip:text;font-size:1.2rem;margin-bottom:.5rem;margin-top:1rem}.markdown-content h3{color:hsla(0,0%,100%,.95);font-size:1.05rem;font-weight:600;margin-bottom:.375rem;margin-top:.75rem}.markdown-content p{margin:.625rem 0}.markdown-content ol,.markdown-content ul{margin:.625rem 0 .625rem 1.25rem}.markdown-content ul{list-style-type:disc}.markdown-content ol{list-style-type:decimal}.markdown-content li{color:hsla(0,0%,100%,.88);margin:.375rem 0}.markdown-content li::marker{color:rgba(254,154,0,.7)}.markdown-content code{background:rgba(254,154,0,.12);border:1px solid rgba(254,154,0,.2);border-radius:6px;color:#fcd34d;font-family:JetBrains Mono,Fira Code,SF Mono,Monaco,monospace;font-size:.8rem;padding:.15rem .45rem}.markdown-content pre{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:rgba(0,0,0,.35);border:1px solid hsla(0,0%,100%,.08);border-radius:12px;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05);margin:.75rem 0;overflow-x:auto;padding:1rem 1.125rem}.markdown-content pre code{background:transparent;border:none;color:#e2e8f0;font-size:.825rem;line-height:1.6;padding:0}.markdown-content blockquote{background:rgba(254,154,0,.08);border-left:3px solid rgba(254,154,0,.5);border-radius:0 10px 10px 0;color:hsla(0,0%,100%,.7);font-style:italic;margin:.75rem 0;padding:.75rem 1rem .75rem 1.25rem}.markdown-content blockquote p{margin:0}.markdown-content a{border-bottom:1px solid transparent;color:#fbbf24;text-decoration:none;transition:all .2s ease}.markdown-content a:hover{border-bottom-color:rgba(254,154,0,.5);color:#fcd34d;text-shadow:0 0 12px rgba(254,154,0,.4)}.markdown-content table{border:1px solid hsla(0,0%,100%,.1);border-collapse:separate;border-radius:10px;border-spacing:0;font-size:.875rem;margin:.75rem 0;overflow:hidden;width:100%}.markdown-content td,.markdown-content th{border:none;border-bottom:1px solid hsla(0,0%,100%,.08);padding:.625rem .875rem;text-align:left}.markdown-content th{background:rgba(254,154,0,.15);color:hsla(0,0%,100%,.95);font-size:.8rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase}.markdown-content tr:last-child td{border-bottom:none}.markdown-content tr:nth-child(2n){background:hsla(0,0%,100%,.03)}.markdown-content tr:hover{background:rgba(254,154,0,.08)}.markdown-content hr{background:linear-gradient(90deg,transparent,rgba(254,154,0,.4) 20%,rgba(59,130,246,.4) 80%,transparent);border:none;height:1px;margin:1.25rem 0}.markdown-content img{border:1px solid hsla(0,0%,100%,.1);border-radius:12px;box-shadow:0 8px 25px rgba(0,0,0,.3);height:auto;max-width:100%}.markdown-content strong{color:hsla(0,0%,100%,.98);font-weight:600}.markdown-content em{color:hsla(0,0%,100%,.85)}.markdown-content>:first-child{margin-top:0}.markdown-content>:last-child{margin-bottom:0}
31
31
  </style>
@@ -73,5 +73,5 @@ const resultPreview = computed(() => {
73
73
  </template>
74
74
 
75
75
  <style>
76
- .claude-tool-block{background:rgba(0,0,0,.2);border-radius:6px;margin:8px 0;overflow:hidden}.claude-tool-header{align-items:center;background:transparent;border:none;color:var(--claude-text);cursor:pointer;display:flex;font-size:13px;gap:8px;padding:8px 12px;text-align:left;transition:background .15s;width:100%}.claude-tool-header:hover{background:hsla(0,0%,100%,.05)}.claude-tool-icon{font-size:12px}.claude-tool-name{color:var(--claude-primary);flex:1;font-family:monospace}.claude-tool-expand{color:var(--claude-text-muted);font-size:10px}.claude-tool-details{padding:0 12px 12px}.claude-tool-section{margin-top:8px}.claude-tool-section-title{align-items:center;color:var(--claude-text-muted);display:flex;font-size:11px;gap:8px;margin-bottom:4px}.claude-tool-error-badge{background:#ef4444;border-radius:4px;color:#fff;font-size:10px;padding:1px 6px}.claude-tool-code{background:#0d0d0d;border-radius:4px;font-family:SF Mono,Monaco,monospace;font-size:11px;margin:0;max-height:200px;overflow-x:auto;overflow-y:auto;padding:8px;white-space:pre-wrap;word-break:break-all}
76
+ .claude-tool-block{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:rgba(0,0,0,.25);border:1px solid hsla(0,0%,100%,.08);border-radius:10px;margin:10px 0;overflow:hidden;transition:all .2s ease}.claude-tool-block:hover{border-color:rgba(254,154,0,.2);box-shadow:0 4px 15px rgba(0,0,0,.2)}.claude-tool-header{align-items:center;background:transparent;border:none;color:hsla(0,0%,100%,.9);cursor:pointer;display:flex;font-size:13px;gap:10px;padding:10px 14px;text-align:left;transition:all .15s ease;width:100%}.claude-tool-header:hover{background:rgba(254,154,0,.1)}.claude-tool-icon{filter:drop-shadow(0 0 6px currentColor);font-size:13px}.claude-tool-name{color:#fbbf24;flex:1;font-family:JetBrains Mono,Fira Code,monospace;font-size:12px;text-shadow:0 0 15px rgba(254,154,0,.4)}.claude-tool-expand{color:hsla(0,0%,100%,.4);font-size:10px;transition:transform .2s ease}.claude-tool-header:hover .claude-tool-expand{color:hsla(0,0%,100%,.6)}.claude-tool-details{animation:tool-details-in .2s ease-out;padding:0 14px 14px}@keyframes tool-details-in{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.claude-tool-section{margin-top:12px}.claude-tool-section-title{align-items:center;color:hsla(0,0%,100%,.5);display:flex;font-size:11px;font-weight:500;gap:8px;letter-spacing:.04em;margin-bottom:6px;text-transform:uppercase}.claude-tool-error-badge{background:linear-gradient(135deg,#ef4444,#dc2626);border-radius:6px;box-shadow:0 2px 8px rgba(239,68,68,.3);color:#fff;font-size:10px;font-weight:500;letter-spacing:.02em;padding:2px 8px;text-transform:uppercase}.claude-tool-code{background:rgba(0,0,0,.4);border:1px solid hsla(0,0%,100%,.06);border-radius:8px;color:hsla(0,0%,100%,.8);font-family:JetBrains Mono,Fira Code,SF Mono,Monaco,monospace;font-size:11px;line-height:1.5;margin:0;max-height:200px;overflow-x:auto;overflow-y:auto;padding:10px 12px;white-space:pre-wrap;word-break:break-all}.claude-tool-code::-webkit-scrollbar{height:4px;width:4px}.claude-tool-code::-webkit-scrollbar-track{background:transparent}.claude-tool-code::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.15);border-radius:2px}.claude-tool-code::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.25)}
77
77
  </style>
@@ -0,0 +1,18 @@
1
+ type __VLS_Props = {
2
+ statusColor: 'green' | 'blue' | 'red';
3
+ showShareCopied: boolean;
4
+ isMobile: boolean;
5
+ };
6
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
+ newChat: () => any;
8
+ share: () => any;
9
+ history: () => any;
10
+ dragStart: (e: MouseEvent) => any;
11
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
12
+ onNewChat?: (() => any) | undefined;
13
+ onShare?: (() => any) | undefined;
14
+ onHistory?: (() => any) | undefined;
15
+ onDragStart?: ((e: MouseEvent) => any) | undefined;
16
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
@@ -0,0 +1,82 @@
1
+ <script setup>
2
+ defineProps({
3
+ statusColor: { type: String, required: true },
4
+ showShareCopied: { type: Boolean, required: true },
5
+ isMobile: { type: Boolean, required: true }
6
+ });
7
+ const emit = defineEmits(["share", "history", "newChat", "dragStart"]);
8
+ </script>
9
+
10
+ <template>
11
+ <div class="claude-header">
12
+ <div
13
+ :class="['claude-header-left', { 'claude-header-draggable': !isMobile }]"
14
+ @mousedown="(e) => !isMobile && emit('dragStart', e)"
15
+ >
16
+ <span class="claude-header-title">Claude</span>
17
+ <span :class="['claude-status-dot', `claude-status-dot-${statusColor}`]" />
18
+ </div>
19
+ <div class="claude-header-actions">
20
+ <!-- Share button -->
21
+ <button
22
+ :class="{ 'claude-btn-success': showShareCopied }"
23
+ :title="showShareCopied ? 'Link copied!' : 'Share chat'"
24
+ class="claude-btn-icon"
25
+ @click="emit('share')"
26
+ >
27
+ <svg
28
+ v-if="showShareCopied"
29
+ fill="currentColor"
30
+ height="18"
31
+ viewBox="0 0 24 24"
32
+ width="18"
33
+ >
34
+ <path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z" />
35
+ </svg>
36
+ <svg
37
+ v-else
38
+ fill="currentColor"
39
+ height="18"
40
+ viewBox="0 0 24 24"
41
+ width="18"
42
+ >
43
+ <path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92z" />
44
+ </svg>
45
+ </button>
46
+ <!-- History button -->
47
+ <button
48
+ class="claude-btn-icon"
49
+ title="History"
50
+ @click="emit('history')"
51
+ >
52
+ <svg
53
+ fill="currentColor"
54
+ height="18"
55
+ viewBox="0 0 24 24"
56
+ width="18"
57
+ >
58
+ <path d="M13 3a9 9 0 0 0-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42A8.954 8.954 0 0 0 13 21a9 9 0 0 0 0-18zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z" />
59
+ </svg>
60
+ </button>
61
+ <!-- New chat button -->
62
+ <button
63
+ class="claude-btn-icon"
64
+ title="New chat"
65
+ @click="emit('newChat')"
66
+ >
67
+ <svg
68
+ fill="currentColor"
69
+ height="18"
70
+ viewBox="0 0 24 24"
71
+ width="18"
72
+ >
73
+ <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
74
+ </svg>
75
+ </button>
76
+ </div>
77
+ </div>
78
+ </template>
79
+
80
+ <style>
81
+ .claude-header{align-items:center;background:transparent;display:flex;flex-shrink:0;justify-content:space-between;left:0;padding:16px 20px;pointer-events:none;position:absolute;right:0;top:0;z-index:10}.claude-header>*{pointer-events:auto}.claude-header-draggable{cursor:grab}.claude-header-draggable:active{cursor:grabbing}.claude-header-left{align-items:center;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background:rgba(0,0,0,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:var(--claude-radius-sm);box-shadow:0 4px 12px rgba(0,0,0,.3);display:flex;gap:10px;padding:8px 14px}.claude-header-title{color:hsla(0,0%,100%,.95);font-size:15px;font-weight:600}.claude-status-dot{border-radius:50%;flex-shrink:0;height:8px;width:8px}.claude-status-dot-green{background:#4ade80;box-shadow:0 0 8px rgba(74,222,128,.6)}.claude-status-dot-blue{animation:claude-status-pulse 1.5s ease-in-out infinite;background:#fbbf24;box-shadow:0 0 8px rgba(251,191,36,.6)}.claude-status-dot-red{background:#f87171;box-shadow:0 0 8px hsla(0,91%,71%,.6)}@keyframes claude-status-pulse{0%,to{opacity:1}50%{opacity:.5}}.claude-header-actions{display:flex;gap:8px}.claude-btn-icon{align-items:center;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background:rgba(0,0,0,.4);border:1px solid hsla(0,0%,100%,.1);border-radius:var(--claude-radius-sm);box-shadow:0 4px 12px rgba(0,0,0,.3);color:hsla(0,0%,100%,.7);cursor:pointer;display:flex;height:38px;justify-content:center;transition:all .2s ease;width:38px}.claude-btn-icon:hover{background:rgba(0,0,0,.5);border-color:hsla(0,0%,100%,.2);box-shadow:0 6px 16px rgba(0,0,0,.4);color:#fff;transform:translateY(-2px)}.claude-btn-success{background:rgba(74,222,128,.2)!important;border-color:rgba(74,222,128,.3)!important;color:#4ade80!important}@media (max-width:640px){.claude-header{padding:6px 16px;top:36px}.claude-header-left{padding:8px 12px}.claude-btn-icon{height:44px;width:44px}}
82
+ </style>
@@ -0,0 +1,18 @@
1
+ type __VLS_Props = {
2
+ statusColor: 'green' | 'blue' | 'red';
3
+ showShareCopied: boolean;
4
+ isMobile: boolean;
5
+ };
6
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
+ newChat: () => any;
8
+ share: () => any;
9
+ history: () => any;
10
+ dragStart: (e: MouseEvent) => any;
11
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
12
+ onNewChat?: (() => any) | undefined;
13
+ onShare?: (() => any) | undefined;
14
+ onHistory?: (() => any) | undefined;
15
+ onDragStart?: ((e: MouseEvent) => any) | undefined;
16
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
@@ -0,0 +1,22 @@
1
+ import type { ImageAttachment, SlashCommand } from '../../../shared/types.js';
2
+ type __VLS_Props = {
3
+ isConnected: boolean;
4
+ isProcessing: boolean;
5
+ isRecording: boolean;
6
+ isSpeechSupported: boolean;
7
+ commands: SlashCommand[];
8
+ };
9
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
10
+ focus: () => void | undefined;
11
+ appendText: (text: string) => void;
12
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
+ submit: (message: string, attachments?: ImageAttachment[] | undefined) => any;
14
+ stop: () => any;
15
+ voiceInput: () => any;
16
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
17
+ onSubmit?: ((message: string, attachments?: ImageAttachment[] | undefined) => any) | undefined;
18
+ onStop?: (() => any) | undefined;
19
+ onVoiceInput?: (() => any) | undefined;
20
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
21
+ declare const _default: typeof __VLS_export;
22
+ export default _default;