hermesbuttons 1.0.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.
package/dist/index.js ADDED
@@ -0,0 +1,921 @@
1
+ 'use strict';var f=`<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="hb-icon">
2
+ <!-- Wing helmet -->
3
+ <path d="M12 2C8.5 2 6 4.5 6 7c0 1.5.5 2.8 1.5 3.8L6 14h12l-1.5-3.2C17.5 9.8 18 8.5 18 7c0-2.5-2.5-5-6-5z" fill="currentColor" opacity="0.2"/>
4
+ <path d="M12 2C8.5 2 6 4.5 6 7c0 1.5.5 2.8 1.5 3.8L6 14h12l-1.5-3.2C17.5 9.8 18 8.5 18 7c0-2.5-2.5-5-6-5z" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linejoin="round"/>
5
+ <!-- Wings -->
6
+ <path d="M6 6.5C4.5 5 2 5 2 7s1.5 3 3 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
7
+ <path d="M18 6.5C19.5 5 22 5 22 7s-1.5 3-3 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
8
+ <!-- Caduceus staff -->
9
+ <line x1="12" y1="14" x2="12" y2="22" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>
10
+ <!-- Snakes -->
11
+ <path d="M9.5 16c1.5 1 3.5 1 5 0" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" fill="none"/>
12
+ <path d="M9.5 19c1.5 1 3.5 1 5 0" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" fill="none"/>
13
+ <!-- Eye -->
14
+ <circle cx="12" cy="7.5" r="1.5" fill="currentColor"/>
15
+ </svg>`,x=`<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="hb-icon">
16
+ <!-- Brain/memory symbol -->
17
+ <path d="M12 3C8 3 5 6 5 9c0 2 1 3.5 2 4.5V16a2 2 0 002 2h6a2 2 0 002-2v-2.5c1-1 2-2.5 2-4.5 0-3-3-6-7-6z" fill="currentColor" opacity="0.15"/>
18
+ <path d="M12 3C8 3 5 6 5 9c0 2 1 3.5 2 4.5V16a2 2 0 002 2h6a2 2 0 002-2v-2.5c1-1 2-2.5 2-4.5 0-3-3-6-7-6z" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linejoin="round"/>
19
+ <!-- Neural connections -->
20
+ <path d="M9 9.5c0-1 .5-2 1.5-2.5M15 9.5c0-1-.5-2-1.5-2.5M10.5 11c.5.5 1.5 1 3 0" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" fill="none"/>
21
+ <!-- Growing roots -->
22
+ <path d="M9 18v2M12 18v3M15 18v2" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
23
+ <!-- Sparkle -->
24
+ <circle cx="8" cy="6" r="0.8" fill="currentColor"/>
25
+ <circle cx="16" cy="6" r="0.8" fill="currentColor"/>
26
+ </svg>`,k=`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="hb-icon-sm">
27
+ <rect x="5" y="5" width="8" height="8" rx="1.5" stroke="currentColor" stroke-width="1.5" fill="none"/>
28
+ <path d="M3 10V3.5A1.5 1.5 0 014.5 2H10" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
29
+ </svg>`,L=`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="hb-icon-sm">
30
+ <path d="M3 8.5l3.5 3.5L13 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
31
+ </svg>`;var R=`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="hb-icon-sm">
32
+ <path d="M4 4l8 8m0-8l-8 8" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
33
+ </svg>`;var n="#7C3AED",m="#6D28D9",A="#5B21B6",H="#14B8A6",y={branded:{bg:n,text:"#FFFFFF",border:"transparent",surface:"#FFFFFF",surfaceText:"#1A1025",muted:"#7C7589",primary:n,primaryText:"#FFFFFF",codeBg:"#1A1025",codeText:"#F3EEFF"},"branded-alt":{bg:H,text:"#FFFFFF",border:"transparent",surface:"#FFFFFF",surfaceText:"#1A1025",muted:"#7C7589",primary:H,primaryText:"#FFFFFF",codeBg:"#1A1025",codeText:"#F3EEFF"},dark:{bg:"#1A1025",text:"#F3EEFF",border:"#2D2440",surface:"#231A35",surfaceText:"#F3EEFF",muted:"#9F95B0",primary:n,primaryText:"#FFFFFF",codeBg:"#0F0A18",codeText:"#F3EEFF"},light:{bg:"#FFFFFF",text:"#1A1025",border:"#E8E0F0",surface:"#FAF8FF",surfaceText:"#1A1025",muted:"#7C7589",primary:n,primaryText:"#FFFFFF",codeBg:"#1A1025",codeText:"#F3EEFF"}};function p(r){return r!=="system"?y[r]:typeof window>"u"?y.light:window.matchMedia("(prefers-color-scheme: dark)").matches?y.dark:y.light}function u(r){return `
34
+ --hb-bg: ${r.bg};
35
+ --hb-text: ${r.text};
36
+ --hb-border: ${r.border};
37
+ --hb-surface: ${r.surface};
38
+ --hb-surface-text: ${r.surfaceText};
39
+ --hb-muted: ${r.muted};
40
+ --hb-primary: ${r.primary};
41
+ --hb-primary-text: ${r.primaryText};
42
+ --hb-code-bg: ${r.codeBg};
43
+ --hb-code-text: ${r.codeText};
44
+ `}var _={rounded:{sm:"0.375rem",md:"0.5rem",lg:"0.625rem"},pill:{sm:"999px",md:"999px",lg:"999px"},square:{sm:"0",md:"0",lg:"0"}},F={sm:{height:"2rem",fontSize:"0.75rem",iconSize:"0.875rem",padding:"0 0.75rem",ccPadding:"0 0.5rem",gap:"0.375rem",radius:"0.375rem"},md:{height:"2.5rem",fontSize:"0.875rem",iconSize:"1.125rem",padding:"0 1rem",ccPadding:"0 0.75rem",gap:"0.5rem",radius:"0.5rem"},lg:{height:"3rem",fontSize:"1rem",iconSize:"1.375rem",padding:"0 1.25rem",ccPadding:"0 1rem",gap:"0.625rem",radius:"0.625rem"}};var z=`
45
+ :host {
46
+ position: fixed;
47
+ inset: 0;
48
+ z-index: 999999;
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
53
+ }
54
+
55
+ * { box-sizing: border-box; margin: 0; padding: 0; }
56
+
57
+ .hb-backdrop {
58
+ position: absolute;
59
+ inset: 0;
60
+ background: rgba(0, 0, 0, 0.5);
61
+ backdrop-filter: blur(4px);
62
+ -webkit-backdrop-filter: blur(4px);
63
+ animation: hb-fade-in 0.15s ease-out;
64
+ }
65
+
66
+ .hb-dialog {
67
+ position: relative;
68
+ width: 90%;
69
+ max-width: 460px;
70
+ background: var(--hb-surface);
71
+ color: var(--hb-surface-text);
72
+ border-radius: 16px;
73
+ box-shadow: 0 24px 48px -12px rgba(0, 0, 0, 0.25), 0 0 0 1px var(--hb-border);
74
+ overflow: hidden;
75
+ animation: hb-scale-in 0.2s ease-out;
76
+ }
77
+
78
+ .hb-dialog-header {
79
+ display: flex;
80
+ align-items: center;
81
+ gap: 12px;
82
+ padding: 20px 24px 16px;
83
+ border-bottom: 1px solid var(--hb-border);
84
+ }
85
+
86
+ .hb-dialog-header-icon {
87
+ width: 36px;
88
+ height: 36px;
89
+ color: var(--hb-primary);
90
+ flex-shrink: 0;
91
+ }
92
+
93
+ .hb-dialog-header-text {
94
+ flex: 1;
95
+ min-width: 0;
96
+ }
97
+
98
+ .hb-dialog-title {
99
+ font-size: 16px;
100
+ font-weight: 600;
101
+ line-height: 1.3;
102
+ color: var(--hb-surface-text);
103
+ }
104
+
105
+ .hb-dialog-description {
106
+ font-size: 13px;
107
+ color: var(--hb-muted);
108
+ margin-top: 2px;
109
+ line-height: 1.4;
110
+ }
111
+
112
+ .hb-dialog-close {
113
+ width: 32px;
114
+ height: 32px;
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: center;
118
+ border: none;
119
+ background: transparent;
120
+ color: var(--hb-muted);
121
+ cursor: pointer;
122
+ border-radius: 8px;
123
+ flex-shrink: 0;
124
+ transition: background 0.15s, color 0.15s;
125
+ }
126
+
127
+ .hb-dialog-close:hover {
128
+ background: var(--hb-border);
129
+ color: var(--hb-surface-text);
130
+ }
131
+
132
+ .hb-dialog-close svg { width: 14px; height: 14px; }
133
+
134
+ .hb-dialog-body { padding: 20px 24px; }
135
+
136
+ .hb-step {
137
+ display: flex;
138
+ gap: 12px;
139
+ margin-bottom: 16px;
140
+ }
141
+
142
+ .hb-step:last-child { margin-bottom: 0; }
143
+
144
+ .hb-step-num {
145
+ width: 24px;
146
+ height: 24px;
147
+ border-radius: 50%;
148
+ background: var(--hb-primary);
149
+ color: var(--hb-primary-text);
150
+ font-size: 12px;
151
+ font-weight: 600;
152
+ display: flex;
153
+ align-items: center;
154
+ justify-content: center;
155
+ flex-shrink: 0;
156
+ margin-top: 1px;
157
+ }
158
+
159
+ .hb-step-content {
160
+ flex: 1;
161
+ min-width: 0;
162
+ }
163
+
164
+ .hb-step-label {
165
+ font-size: 13px;
166
+ font-weight: 500;
167
+ color: var(--hb-surface-text);
168
+ margin-bottom: 8px;
169
+ line-height: 1.4;
170
+ }
171
+
172
+ .hb-code-block {
173
+ display: flex;
174
+ align-items: center;
175
+ background: var(--hb-code-bg);
176
+ color: var(--hb-code-text);
177
+ border-radius: 10px;
178
+ padding: 2px 2px 2px 14px;
179
+ font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', Consolas, 'Liberation Mono', Menlo, monospace;
180
+ font-size: 13px;
181
+ line-height: 1.5;
182
+ gap: 8px;
183
+ overflow: hidden;
184
+ }
185
+
186
+ .hb-code-text {
187
+ flex: 1;
188
+ overflow-x: auto;
189
+ white-space: nowrap;
190
+ padding: 10px 0;
191
+ scrollbar-width: none;
192
+ }
193
+
194
+ .hb-code-text::-webkit-scrollbar { display: none; }
195
+
196
+ .hb-code-prefix {
197
+ color: var(--hb-muted);
198
+ user-select: none;
199
+ margin-right: 6px;
200
+ }
201
+
202
+ .hb-copy-btn {
203
+ display: flex;
204
+ align-items: center;
205
+ justify-content: center;
206
+ gap: 6px;
207
+ height: 36px;
208
+ min-width: 36px;
209
+ padding: 0 12px;
210
+ border: none;
211
+ background: var(--hb-primary);
212
+ color: var(--hb-primary-text);
213
+ cursor: pointer;
214
+ border-radius: 8px;
215
+ font-family: inherit;
216
+ font-size: 12px;
217
+ font-weight: 500;
218
+ flex-shrink: 0;
219
+ transition: background 0.15s, transform 0.1s;
220
+ white-space: nowrap;
221
+ }
222
+
223
+ .hb-copy-btn:hover { background: ${m}; }
224
+ .hb-copy-btn:active { transform: scale(0.96); }
225
+ .hb-copy-btn svg { width: 14px; height: 14px; }
226
+
227
+ .hb-copy-btn[data-copied="true"] {
228
+ background: #16a34a;
229
+ }
230
+
231
+ .hb-dialog-footer {
232
+ padding: 16px 24px 20px;
233
+ display: flex;
234
+ flex-direction: column;
235
+ gap: 10px;
236
+ }
237
+
238
+ .hb-action-btn {
239
+ display: flex;
240
+ align-items: center;
241
+ justify-content: center;
242
+ gap: 8px;
243
+ width: 100%;
244
+ height: 44px;
245
+ border: none;
246
+ background: var(--hb-primary);
247
+ color: var(--hb-primary-text);
248
+ cursor: pointer;
249
+ border-radius: 10px;
250
+ font-family: inherit;
251
+ font-size: 14px;
252
+ font-weight: 600;
253
+ transition: background 0.15s, transform 0.1s;
254
+ }
255
+
256
+ .hb-action-btn:hover { background: ${m}; }
257
+ .hb-action-btn:active { transform: scale(0.98); }
258
+ .hb-action-btn svg { width: 16px; height: 16px; }
259
+
260
+ .hb-hint {
261
+ font-size: 12px;
262
+ color: var(--hb-muted);
263
+ text-align: center;
264
+ line-height: 1.4;
265
+ }
266
+
267
+ .hb-hint kbd {
268
+ display: inline-block;
269
+ padding: 1px 5px;
270
+ font-family: inherit;
271
+ font-size: 11px;
272
+ background: var(--hb-border);
273
+ border-radius: 4px;
274
+ border: 1px solid var(--hb-border);
275
+ }
276
+
277
+ @keyframes hb-fade-in {
278
+ from { opacity: 0; }
279
+ to { opacity: 1; }
280
+ }
281
+
282
+ @keyframes hb-scale-in {
283
+ from { opacity: 0; transform: scale(0.95) translateY(8px); }
284
+ to { opacity: 1; transform: scale(1) translateY(0); }
285
+ }
286
+
287
+ @media (max-width: 480px) {
288
+ .hb-dialog {
289
+ width: 96%;
290
+ max-width: none;
291
+ border-radius: 14px;
292
+ max-height: 90dvh;
293
+ overflow-y: auto;
294
+ overscroll-behavior: contain;
295
+ }
296
+
297
+ .hb-dialog-header { padding: 16px 16px 12px; gap: 10px; }
298
+ .hb-dialog-header-icon { width: 28px; height: 28px; }
299
+ .hb-dialog-body { padding: 16px; }
300
+ .hb-dialog-footer { padding: 12px 16px 16px; }
301
+
302
+ .hb-step { gap: 10px; margin-bottom: 14px; }
303
+ .hb-step-num { width: 22px; height: 22px; font-size: 11px; }
304
+ .hb-step-label { font-size: 12px; margin-bottom: 6px; }
305
+
306
+ .hb-code-block { font-size: 12px; padding: 2px 2px 2px 10px; border-radius: 8px; }
307
+ .hb-copy-btn { height: 32px; padding: 0 10px; font-size: 11px; border-radius: 6px; }
308
+ .hb-action-btn { height: 40px; font-size: 13px; border-radius: 8px; }
309
+ .hb-hint { font-size: 11px; }
310
+ }
311
+
312
+ @media (max-width: 360px) {
313
+ .hb-dialog { width: 100%; border-radius: 12px 12px 0 0; align-self: flex-end; }
314
+ .hb-copy-btn span { display: none; }
315
+ .hb-copy-btn { min-width: 32px; padding: 0 8px; }
316
+ }
317
+
318
+ @supports (padding: env(safe-area-inset-bottom)) {
319
+ .hb-dialog-footer { padding-bottom: calc(20px + env(safe-area-inset-bottom)); }
320
+ }
321
+ `,T=class extends HTMLElement{constructor(){super();this._mqCleanup=null;this.attachShadow({mode:"open"});}set options(t){this._options=t,this.render();}get options(){return this._options}disconnectedCallback(){this._mqCleanup?.(),this._mqCleanup=null;}resolvePopupTokens(){let{theme:t}=this._options;if(t==="dark"||t==="light")return p(t);let a=typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches;if(t==="system")return a?p("dark"):p("light");let e=a?p("dark"):p("light"),o=p(t);return {...e,primary:o.primary,primaryText:o.primaryText}}render(){if(!this.shadowRoot||!this._options)return;let{variant:t,title:a,description:e,command:o,fullCommand:s,skillUrl:h}=this._options,d=this.resolvePopupTokens(),c=t==="hermes"?f:x,l=t==="hermes",g=s||o;this.shadowRoot.innerHTML=`
322
+ <style>${z}</style>
323
+ <div style="${u(d)}">
324
+ <div class="hb-backdrop" data-action="close"></div>
325
+ <div class="hb-dialog" role="dialog" aria-modal="true" aria-labelledby="hb-dialog-title">
326
+ <div class="hb-dialog-header">
327
+ <div class="hb-dialog-header-icon">${c}</div>
328
+ <div class="hb-dialog-header-text">
329
+ <div class="hb-dialog-title" id="hb-dialog-title">${a}</div>
330
+ ${e?`<div class="hb-dialog-description">${e}</div>`:""}
331
+ </div>
332
+ <button class="hb-dialog-close" data-action="close" aria-label="Close">${R}</button>
333
+ </div>
334
+ <div class="hb-dialog-body">
335
+ ${l?this.renderHermesTerminalBody(g):this.renderHermesSkillBody(o,h)}
336
+ </div>
337
+ <div class="hb-dialog-footer">
338
+ ${l?`
339
+ <div class="hb-hint">Press <kbd>\u2318</kbd>+<kbd>V</kbd> or <kbd>Ctrl</kbd>+<kbd>V</kbd> in your terminal to run</div>
340
+ `:`
341
+ <div class="hb-hint">Press <kbd>\u2318</kbd>+<kbd>V</kbd> or <kbd>Ctrl</kbd>+<kbd>V</kbd> in your Hermes session to run</div>
342
+ `}
343
+ </div>
344
+ </div>
345
+ </div>
346
+ `,this.setupListeners(),this.setupSystemThemeWatch();}renderHermesTerminalBody(t){return `
347
+ <div class="hb-step">
348
+ <div class="hb-step-num">1</div>
349
+ <div class="hb-step-content">
350
+ <div class="hb-step-label">Copy this command to your clipboard</div>
351
+ <div class="hb-code-block">
352
+ <div class="hb-code-text"><span class="hb-code-prefix">$</span>${this.escapeHtml(t)}</div>
353
+ <button class="hb-copy-btn" data-action="copy" data-command="${this.escapeAttr(t)}">${k}<span>Copy</span></button>
354
+ </div>
355
+ </div>
356
+ </div>
357
+ <div class="hb-step">
358
+ <div class="hb-step-num">2</div>
359
+ <div class="hb-step-content">
360
+ <div class="hb-step-label">Paste and run in your terminal</div>
361
+ </div>
362
+ </div>
363
+ `}renderHermesSkillBody(t,a){let e="";if(a){let o=`Install the skill from ${a} and run ${t}`;e+=`
364
+ <div class="hb-step">
365
+ <div class="hb-step-num">1</div>
366
+ <div class="hb-step-content">
367
+ <div class="hb-step-label">Copy this prompt to your clipboard</div>
368
+ <div class="hb-code-block">
369
+ <div class="hb-code-text">${this.escapeHtml(o)}</div>
370
+ <button class="hb-copy-btn" data-action="copy" data-command="${this.escapeAttr(o)}">${k}<span>Copy</span></button>
371
+ </div>
372
+ </div>
373
+ </div>
374
+ <div class="hb-step">
375
+ <div class="hb-step-num">2</div>
376
+ <div class="hb-step-content">
377
+ <div class="hb-step-label">Paste into a Hermes session \u2014 the agent will fetch the skill and set it up for you</div>
378
+ </div>
379
+ </div>
380
+ `;}else e+=`
381
+ <div class="hb-step">
382
+ <div class="hb-step-num">1</div>
383
+ <div class="hb-step-content">
384
+ <div class="hb-step-label">Copy this command to your clipboard</div>
385
+ <div class="hb-code-block">
386
+ <div class="hb-code-text">${this.escapeHtml(t)}</div>
387
+ <button class="hb-copy-btn" data-action="copy" data-command="${this.escapeAttr(t)}">${k}<span>Copy</span></button>
388
+ </div>
389
+ </div>
390
+ </div>
391
+ <div class="hb-step">
392
+ <div class="hb-step-num">2</div>
393
+ <div class="hb-step-content">
394
+ <div class="hb-step-label">Paste and send in your Hermes session</div>
395
+ </div>
396
+ </div>
397
+ `;return e}setupListeners(){this.shadowRoot&&(this.shadowRoot.addEventListener("click",t=>{let a=t.target.closest("[data-action]");if(!a)return;let e=a.dataset.action;if(e==="close")this.close();else if(e==="copy"){let o=a.dataset.command||"";this.copyToClipboard(o,a);}}),this.shadowRoot.addEventListener("keydown",t=>{t.key==="Escape"&&this.close();}));}setupSystemThemeWatch(){this._mqCleanup?.(),this._mqCleanup=null;let t=this._options.theme;if(!(t==="system"||t==="branded"||t==="branded-alt")||typeof window>"u")return;let e=window.matchMedia("(prefers-color-scheme: dark)"),o=()=>this.render();e.addEventListener("change",o),this._mqCleanup=()=>e.removeEventListener("change",o);}async copyToClipboard(t,a){try{await navigator.clipboard.writeText(t);let e=a.querySelector("span"),o=a;a.setAttribute("data-copied","true"),e&&(e.textContent="Copied!"),o.innerHTML=`${L}<span>Copied!</span>`,this._options.onCopy?.(t),setTimeout(()=>{a.setAttribute("data-copied","false"),o.innerHTML=`${k}<span>Copy</span>`;},2e3);}catch{let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),this._options.onCopy?.(t);}}close(){let t=this.shadowRoot?.querySelector(".hb-dialog"),a=this.shadowRoot?.querySelector(".hb-backdrop");t&&(t.style.animation="hb-scale-in 0.15s ease-in reverse"),a&&(a.style.animation="hb-fade-in 0.15s ease-in reverse"),setTimeout(()=>{this._options.onClose?.(),this.remove();},140);}escapeHtml(t){let a=document.createElement("div");return a.textContent=t,a.innerHTML}escapeAttr(t){return t.replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}};typeof customElements<"u"&&!customElements.get("hermes-popup-dialog")&&customElements.define("hermes-popup-dialog",T);function w(r){let i=document.createElement("hermes-popup-dialog");return i.options=r,document.body.appendChild(i),i}var D=`
398
+ :host {
399
+ display: inline-block;
400
+ vertical-align: middle;
401
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
402
+ -webkit-tap-highlight-color: transparent;
403
+ }
404
+
405
+ * { box-sizing: border-box; margin: 0; padding: 0; }
406
+
407
+ .hb-btn {
408
+ display: inline-flex;
409
+ align-items: center;
410
+ gap: var(--hb-gap);
411
+ height: var(--hb-height);
412
+ min-height: 44px;
413
+ padding: var(--hb-padding);
414
+ border: 1.5px solid var(--hb-border);
415
+ background: var(--hb-bg);
416
+ color: var(--hb-text);
417
+ font-family: inherit;
418
+ font-size: var(--hb-font-size);
419
+ font-weight: 600;
420
+ line-height: 1;
421
+ border-radius: var(--hb-radius);
422
+ cursor: pointer;
423
+ user-select: none;
424
+ white-space: nowrap;
425
+ touch-action: manipulation;
426
+ transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, transform 0.1s ease, color 0.15s ease;
427
+ text-decoration: none;
428
+ -webkit-font-smoothing: antialiased;
429
+ }
430
+
431
+ @media (pointer: fine) {
432
+ .hb-btn { min-height: unset; }
433
+ }
434
+
435
+ /* \u2500\u2500\u2500 FILLED \u2500\u2500\u2500 */
436
+
437
+ :host([data-variant="filled"][data-theme="branded"]) .hb-btn,
438
+ :host([data-variant="filled"][data-theme="branded-alt"]) .hb-btn {
439
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
440
+ }
441
+ :host([data-variant="filled"][data-theme="branded"]) .hb-btn:hover {
442
+ background: ${m};
443
+ box-shadow: 0 2px 8px rgba(124, 58, 237, 0.35);
444
+ }
445
+ :host([data-variant="filled"][data-theme="branded"]) .hb-btn:active {
446
+ background: ${A};
447
+ transform: scale(0.98);
448
+ }
449
+ :host([data-variant="filled"][data-theme="branded-alt"]) .hb-btn:hover {
450
+ background: #0D9488;
451
+ box-shadow: 0 2px 8px rgba(20, 184, 166, 0.35);
452
+ }
453
+ :host([data-variant="filled"][data-theme="branded-alt"]) .hb-btn:active {
454
+ background: #0F766E;
455
+ transform: scale(0.98);
456
+ }
457
+
458
+ :host([data-variant="filled"][data-theme="dark"]) .hb-btn {
459
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
460
+ }
461
+ :host([data-variant="filled"][data-theme="dark"]) .hb-btn:hover {
462
+ background: #292524;
463
+ border-color: #57534E;
464
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
465
+ }
466
+ :host([data-variant="filled"][data-theme="dark"]) .hb-btn:active {
467
+ background: #1C1917;
468
+ transform: scale(0.98);
469
+ }
470
+
471
+ :host([data-variant="filled"][data-theme="light"]) .hb-btn {
472
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.04);
473
+ }
474
+ :host([data-variant="filled"][data-theme="light"]) .hb-btn:hover {
475
+ border-color: #D6D3D1;
476
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
477
+ }
478
+ :host([data-variant="filled"][data-theme="light"]) .hb-btn:active {
479
+ background: #FAFAF9;
480
+ transform: scale(0.98);
481
+ }
482
+
483
+ /* \u2500\u2500\u2500 OUTLINE \u2500\u2500\u2500 */
484
+
485
+ :host([data-variant="outline"][data-theme="branded"]) .hb-btn {
486
+ background: transparent;
487
+ border-color: ${n};
488
+ color: ${n};
489
+ }
490
+ :host([data-variant="outline"][data-theme="branded"]) .hb-btn:hover {
491
+ background: rgba(124, 58, 237, 0.08);
492
+ box-shadow: 0 2px 8px rgba(124, 58, 237, 0.15);
493
+ }
494
+ :host([data-variant="outline"][data-theme="branded"]) .hb-btn:active {
495
+ background: rgba(124, 58, 237, 0.14);
496
+ transform: scale(0.98);
497
+ }
498
+
499
+ :host([data-variant="outline"][data-theme="branded-alt"]) .hb-btn {
500
+ background: transparent;
501
+ border-color: #14B8A6;
502
+ color: #14B8A6;
503
+ }
504
+ :host([data-variant="outline"][data-theme="branded-alt"]) .hb-btn:hover {
505
+ background: rgba(20, 184, 166, 0.08);
506
+ box-shadow: 0 2px 8px rgba(20, 184, 166, 0.15);
507
+ }
508
+ :host([data-variant="outline"][data-theme="branded-alt"]) .hb-btn:active {
509
+ background: rgba(20, 184, 166, 0.14);
510
+ transform: scale(0.98);
511
+ }
512
+
513
+ :host([data-variant="outline"][data-theme="dark"]) .hb-btn {
514
+ background: transparent;
515
+ border-color: #57534E;
516
+ color: #F5F0EB;
517
+ }
518
+ :host([data-variant="outline"][data-theme="dark"]) .hb-btn:hover {
519
+ border-color: ${n};
520
+ background: rgba(124, 58, 237, 0.08);
521
+ }
522
+ :host([data-variant="outline"][data-theme="dark"]) .hb-btn:active {
523
+ background: rgba(124, 58, 237, 0.14);
524
+ transform: scale(0.98);
525
+ }
526
+
527
+ :host([data-variant="outline"][data-theme="light"]) .hb-btn {
528
+ background: transparent;
529
+ border-color: #D6D3D1;
530
+ color: #1C1917;
531
+ }
532
+ :host([data-variant="outline"][data-theme="light"]) .hb-btn:hover {
533
+ border-color: ${n};
534
+ background: rgba(124, 58, 237, 0.05);
535
+ }
536
+ :host([data-variant="outline"][data-theme="light"]) .hb-btn:active {
537
+ background: rgba(124, 58, 237, 0.1);
538
+ transform: scale(0.98);
539
+ }
540
+
541
+ /* \u2500\u2500\u2500 GHOST \u2500\u2500\u2500 */
542
+
543
+ :host([data-variant="ghost"]) .hb-btn {
544
+ background: transparent;
545
+ border-color: transparent;
546
+ }
547
+
548
+ :host([data-variant="ghost"][data-theme="branded"]) .hb-btn {
549
+ color: ${n};
550
+ }
551
+ :host([data-variant="ghost"][data-theme="branded"]) .hb-btn:hover {
552
+ background: rgba(124, 58, 237, 0.1);
553
+ }
554
+ :host([data-variant="ghost"][data-theme="branded"]) .hb-btn:active {
555
+ background: rgba(124, 58, 237, 0.16);
556
+ transform: scale(0.98);
557
+ }
558
+
559
+ :host([data-variant="ghost"][data-theme="branded-alt"]) .hb-btn {
560
+ color: #14B8A6;
561
+ }
562
+ :host([data-variant="ghost"][data-theme="branded-alt"]) .hb-btn:hover {
563
+ background: rgba(20, 184, 166, 0.1);
564
+ }
565
+ :host([data-variant="ghost"][data-theme="branded-alt"]) .hb-btn:active {
566
+ background: rgba(20, 184, 166, 0.16);
567
+ transform: scale(0.98);
568
+ }
569
+
570
+ :host([data-variant="ghost"][data-theme="dark"]) .hb-btn {
571
+ color: #F5F0EB;
572
+ }
573
+ :host([data-variant="ghost"][data-theme="dark"]) .hb-btn:hover {
574
+ background: rgba(255, 255, 255, 0.06);
575
+ }
576
+ :host([data-variant="ghost"][data-theme="dark"]) .hb-btn:active {
577
+ background: rgba(255, 255, 255, 0.1);
578
+ transform: scale(0.98);
579
+ }
580
+
581
+ :host([data-variant="ghost"][data-theme="light"]) .hb-btn {
582
+ color: #1C1917;
583
+ }
584
+ :host([data-variant="ghost"][data-theme="light"]) .hb-btn:hover {
585
+ background: rgba(0, 0, 0, 0.04);
586
+ }
587
+ :host([data-variant="ghost"][data-theme="light"]) .hb-btn:active {
588
+ background: rgba(0, 0, 0, 0.08);
589
+ transform: scale(0.98);
590
+ }
591
+
592
+ /* \u2500\u2500\u2500 FOCUS \u2500\u2500\u2500 */
593
+
594
+ .hb-btn:focus-visible {
595
+ outline: 2px solid var(--hb-focus-color, ${n});
596
+ outline-offset: 2px;
597
+ }
598
+
599
+ /* \u2500\u2500\u2500 ICON \u2500\u2500\u2500 */
600
+
601
+ .hb-btn-icon {
602
+ width: var(--hb-icon-size);
603
+ height: var(--hb-icon-size);
604
+ flex-shrink: 0;
605
+ display: flex;
606
+ align-items: center;
607
+ justify-content: center;
608
+ }
609
+
610
+ .hb-btn-icon svg { width: 100%; height: 100%; }
611
+
612
+ :host([data-variant="filled"][data-theme="branded"]) .hb-btn-icon,
613
+ :host([data-variant="filled"][data-theme="branded-alt"]) .hb-btn-icon {
614
+ color: #FFFFFF;
615
+ --hb-icon-accent: rgba(255,255,255,0.2);
616
+ }
617
+ :host([data-variant="filled"][data-theme="dark"]) .hb-btn-icon {
618
+ color: var(--hb-accent-color, ${n});
619
+ }
620
+ :host([data-variant="filled"][data-theme="light"]) .hb-btn-icon {
621
+ color: var(--hb-accent-color, ${n});
622
+ }
623
+
624
+ :host([data-variant="outline"]) .hb-btn-icon,
625
+ :host([data-variant="ghost"]) .hb-btn-icon {
626
+ color: var(--hb-accent-color, ${n});
627
+ }
628
+
629
+ /* \u2500\u2500\u2500 LABEL \u2500\u2500\u2500 */
630
+
631
+ .hb-btn-label {
632
+ letter-spacing: -0.01em;
633
+ }
634
+ `,C=class extends HTMLElement{constructor(){super();this._options={command:"",theme:"branded",size:"md",variant:"filled",popup:true,promptFlag:true};this._mqCleanup=null;this._rendered=false;this.attachShadow({mode:"open"});}connectedCallback(){this.syncFromAttributes(),this.render(),this.updateLightDOM();}disconnectedCallback(){this._mqCleanup?.(),this._mqCleanup=null;}attributeChangedCallback(){this._rendered&&(this.syncFromAttributes(),this.render(),this.updateLightDOM());}set options(t){this._options={...this._options,...t},this.render(),this.updateLightDOM();}get options(){return this._options}syncFromAttributes(){let t=this.getAttribute("command"),a=this.getAttribute("theme"),e=this.getAttribute("size"),o=this.getAttribute("variant"),s=this.getAttribute("shape"),h=this.getAttribute("popup"),d=this.getAttribute("prompt-flag"),c=this.getAttribute("popup-title"),l=this.getAttribute("popup-description");t!==null&&(this._options.command=t),a&&(this._options.theme=a),e&&(this._options.size=e),o&&(this._options.variant=o),s&&(this._options.shape=s),h!==null&&(this._options.popup=h!=="false"),d!==null&&(this._options.promptFlag=d!=="false"),c!==null&&(this._options.popupTitle=c),l!==null&&(this._options.popupDescription=l);}updateLightDOM(){let{command:t}=this._options,a=this.getFullCommand();this.setAttribute("role","button"),this.setAttribute("tabindex","0"),this.setAttribute("aria-label",`Run on Hermes: ${t}`),this._options.popup!==false?this.setAttribute("aria-haspopup","dialog"):this.removeAttribute("aria-haspopup");let e=this.querySelector("a[data-hb-crawl]");e||(e=document.createElement("a"),e.setAttribute("data-hb-crawl",""),e.setAttribute("aria-hidden","true"),e.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;",this.appendChild(e)),e.href=`https://hermes.ai/run?command=${encodeURIComponent(a)}`,e.textContent=`Run on Hermes: ${t}`,e.setAttribute("data-platform","hermes"),e.setAttribute("data-command",t),e.setAttribute("data-full-command",a);}getResolvedTheme(){return this._options.theme||"branded"}getFullCommand(){let{command:t,promptFlag:a}=this._options;return a===false?t:`hermes -p "${t}"`}render(){if(!this.shadowRoot)return;let t=this.getResolvedTheme(),a=t==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":t,e=this._options.variant||"filled",o=p(t),s=this._options.size||"md",h=this._options.shape||"rounded",d=F[s],c=_[h][s];this.setAttribute("data-theme",a),this.setAttribute("data-variant",e);let l=e!=="filled"?"transparent":o.bg,g=e==="ghost"?"transparent":e==="outline"?o.primary:o.border,O=e!=="filled"?o.primary:o.text;this.shadowRoot.innerHTML=`
635
+ <style>${D}</style>
636
+ <button
637
+ class="hb-btn"
638
+ type="button"
639
+ style="
640
+ ${u(o)}
641
+ --hb-bg: ${l};
642
+ --hb-border: ${g};
643
+ --hb-text: ${O};
644
+ --hb-accent-color: ${o.primary};
645
+ --hb-focus-color: ${o.primary};
646
+ --hb-height: ${d.height};
647
+ --hb-font-size: ${d.fontSize};
648
+ --hb-icon-size: ${d.iconSize};
649
+ --hb-padding: ${d.ccPadding};
650
+ --hb-gap: ${d.gap};
651
+ --hb-radius: ${c};
652
+ "
653
+ aria-label="Run on Hermes: ${this._options.command.replace(/"/g,"&quot;")}"
654
+ >
655
+ <span class="hb-btn-icon" aria-hidden="true">${f}</span>
656
+ <span class="hb-btn-label">Run on Hermes</span>
657
+ </button>
658
+ `;let v=this.shadowRoot.querySelector(".hb-btn");v.addEventListener("click",()=>this.handleClick()),v.addEventListener("keydown",b=>{(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),this.handleClick());}),this._rendered=true,this.setupSystemThemeWatch();}handleClick(){let{popup:t,command:a,popupTitle:e,popupDescription:o}=this._options,s=this.getFullCommand();if(this.dispatchEvent(new CustomEvent("hb-open",{bubbles:true,composed:true,detail:{command:a,fullCommand:s}})),t===false){navigator.clipboard.writeText(s).then(()=>{this._options.onCopy?.(s),this.dispatchEvent(new CustomEvent("hb-copy",{bubbles:true,composed:true,detail:{command:s}}));});return}w({variant:"hermes",theme:this.getResolvedTheme(),title:e||"Run on Hermes",description:o||"Execute this command in your terminal to get started with Hermes Agent.",command:a,fullCommand:s,onCopy:h=>{this._options.onCopy?.(h),this.dispatchEvent(new CustomEvent("hb-copy",{bubbles:true,composed:true,detail:{command:h}}));},onClose:()=>{this.dispatchEvent(new CustomEvent("hb-close",{bubbles:true,composed:true}));}});}setupSystemThemeWatch(){if(this._mqCleanup?.(),this._mqCleanup=null,this.getResolvedTheme()!=="system"||typeof window>"u")return;let t=window.matchMedia("(prefers-color-scheme: dark)"),a=()=>this.render();t.addEventListener("change",a),this._mqCleanup=()=>t.removeEventListener("change",a);}};C.observedAttributes=["command","theme","size","variant","shape","popup","prompt-flag","popup-title","popup-description"];function S(r="hermes-button"){typeof customElements>"u"||customElements.get(r)||customElements.define(r,C);}S();function P(r){let i=document.createElement("hermes-button");return i.options=r,i}var I=`
659
+ :host {
660
+ display: inline-block;
661
+ vertical-align: middle;
662
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
663
+ -webkit-tap-highlight-color: transparent;
664
+ }
665
+
666
+ * { box-sizing: border-box; margin: 0; padding: 0; }
667
+
668
+ .hb-btn {
669
+ display: inline-flex;
670
+ align-items: center;
671
+ gap: var(--hb-gap);
672
+ height: var(--hb-height);
673
+ min-height: 44px;
674
+ padding: var(--hb-padding);
675
+ border: 1.5px solid var(--hb-border);
676
+ background: var(--hb-bg);
677
+ color: var(--hb-text);
678
+ font-family: inherit;
679
+ font-size: var(--hb-font-size);
680
+ font-weight: 600;
681
+ line-height: 1;
682
+ border-radius: var(--hb-radius);
683
+ cursor: pointer;
684
+ user-select: none;
685
+ white-space: nowrap;
686
+ touch-action: manipulation;
687
+ transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, transform 0.1s ease, color 0.15s ease;
688
+ text-decoration: none;
689
+ -webkit-font-smoothing: antialiased;
690
+ }
691
+
692
+ @media (pointer: fine) {
693
+ .hb-btn { min-height: unset; }
694
+ }
695
+
696
+ /* \u2500\u2500\u2500 FILLED \u2500\u2500\u2500 */
697
+
698
+ :host([data-variant="filled"][data-theme="branded"]) .hb-btn,
699
+ :host([data-variant="filled"][data-theme="branded-alt"]) .hb-btn {
700
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
701
+ }
702
+ :host([data-variant="filled"][data-theme="branded"]) .hb-btn:hover {
703
+ background: ${m};
704
+ box-shadow: 0 2px 8px rgba(124, 58, 237, 0.35);
705
+ }
706
+ :host([data-variant="filled"][data-theme="branded"]) .hb-btn:active {
707
+ background: ${A};
708
+ transform: scale(0.98);
709
+ }
710
+ :host([data-variant="filled"][data-theme="branded-alt"]) .hb-btn:hover {
711
+ background: #0D9488;
712
+ box-shadow: 0 2px 8px rgba(20, 184, 166, 0.35);
713
+ }
714
+ :host([data-variant="filled"][data-theme="branded-alt"]) .hb-btn:active {
715
+ background: #0F766E;
716
+ transform: scale(0.98);
717
+ }
718
+
719
+ :host([data-variant="filled"][data-theme="dark"]) .hb-btn {
720
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
721
+ }
722
+ :host([data-variant="filled"][data-theme="dark"]) .hb-btn:hover {
723
+ background: #292524;
724
+ border-color: #57534E;
725
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
726
+ }
727
+ :host([data-variant="filled"][data-theme="dark"]) .hb-btn:active {
728
+ background: #1C1917;
729
+ transform: scale(0.98);
730
+ }
731
+
732
+ :host([data-variant="filled"][data-theme="light"]) .hb-btn {
733
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.04);
734
+ }
735
+ :host([data-variant="filled"][data-theme="light"]) .hb-btn:hover {
736
+ border-color: #D6D3D1;
737
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
738
+ }
739
+ :host([data-variant="filled"][data-theme="light"]) .hb-btn:active {
740
+ background: #FAFAF9;
741
+ transform: scale(0.98);
742
+ }
743
+
744
+ /* \u2500\u2500\u2500 OUTLINE \u2500\u2500\u2500 */
745
+
746
+ :host([data-variant="outline"][data-theme="branded"]) .hb-btn {
747
+ background: transparent;
748
+ border-color: ${n};
749
+ color: ${n};
750
+ }
751
+ :host([data-variant="outline"][data-theme="branded"]) .hb-btn:hover {
752
+ background: rgba(124, 58, 237, 0.08);
753
+ box-shadow: 0 2px 8px rgba(124, 58, 237, 0.15);
754
+ }
755
+ :host([data-variant="outline"][data-theme="branded"]) .hb-btn:active {
756
+ background: rgba(124, 58, 237, 0.14);
757
+ transform: scale(0.98);
758
+ }
759
+
760
+ :host([data-variant="outline"][data-theme="branded-alt"]) .hb-btn {
761
+ background: transparent;
762
+ border-color: #14B8A6;
763
+ color: #14B8A6;
764
+ }
765
+ :host([data-variant="outline"][data-theme="branded-alt"]) .hb-btn:hover {
766
+ background: rgba(20, 184, 166, 0.08);
767
+ box-shadow: 0 2px 8px rgba(20, 184, 166, 0.15);
768
+ }
769
+ :host([data-variant="outline"][data-theme="branded-alt"]) .hb-btn:active {
770
+ background: rgba(20, 184, 166, 0.14);
771
+ transform: scale(0.98);
772
+ }
773
+
774
+ :host([data-variant="outline"][data-theme="dark"]) .hb-btn {
775
+ background: transparent;
776
+ border-color: #57534E;
777
+ color: #F5F0EB;
778
+ }
779
+ :host([data-variant="outline"][data-theme="dark"]) .hb-btn:hover {
780
+ border-color: ${n};
781
+ background: rgba(124, 58, 237, 0.08);
782
+ }
783
+ :host([data-variant="outline"][data-theme="dark"]) .hb-btn:active {
784
+ background: rgba(124, 58, 237, 0.14);
785
+ transform: scale(0.98);
786
+ }
787
+
788
+ :host([data-variant="outline"][data-theme="light"]) .hb-btn {
789
+ background: transparent;
790
+ border-color: #D6D3D1;
791
+ color: #1C1917;
792
+ }
793
+ :host([data-variant="outline"][data-theme="light"]) .hb-btn:hover {
794
+ border-color: ${n};
795
+ background: rgba(124, 58, 237, 0.05);
796
+ }
797
+ :host([data-variant="outline"][data-theme="light"]) .hb-btn:active {
798
+ background: rgba(124, 58, 237, 0.1);
799
+ transform: scale(0.98);
800
+ }
801
+
802
+ /* \u2500\u2500\u2500 GHOST \u2500\u2500\u2500 */
803
+
804
+ :host([data-variant="ghost"]) .hb-btn {
805
+ background: transparent;
806
+ border-color: transparent;
807
+ }
808
+
809
+ :host([data-variant="ghost"][data-theme="branded"]) .hb-btn {
810
+ color: ${n};
811
+ }
812
+ :host([data-variant="ghost"][data-theme="branded"]) .hb-btn:hover {
813
+ background: rgba(124, 58, 237, 0.1);
814
+ }
815
+ :host([data-variant="ghost"][data-theme="branded"]) .hb-btn:active {
816
+ background: rgba(124, 58, 237, 0.16);
817
+ transform: scale(0.98);
818
+ }
819
+
820
+ :host([data-variant="ghost"][data-theme="branded-alt"]) .hb-btn {
821
+ color: #14B8A6;
822
+ }
823
+ :host([data-variant="ghost"][data-theme="branded-alt"]) .hb-btn:hover {
824
+ background: rgba(20, 184, 166, 0.1);
825
+ }
826
+ :host([data-variant="ghost"][data-theme="branded-alt"]) .hb-btn:active {
827
+ background: rgba(20, 184, 166, 0.16);
828
+ transform: scale(0.98);
829
+ }
830
+
831
+ :host([data-variant="ghost"][data-theme="dark"]) .hb-btn {
832
+ color: #F5F0EB;
833
+ }
834
+ :host([data-variant="ghost"][data-theme="dark"]) .hb-btn:hover {
835
+ background: rgba(255, 255, 255, 0.06);
836
+ }
837
+ :host([data-variant="ghost"][data-theme="dark"]) .hb-btn:active {
838
+ background: rgba(255, 255, 255, 0.1);
839
+ transform: scale(0.98);
840
+ }
841
+
842
+ :host([data-variant="ghost"][data-theme="light"]) .hb-btn {
843
+ color: #1C1917;
844
+ }
845
+ :host([data-variant="ghost"][data-theme="light"]) .hb-btn:hover {
846
+ background: rgba(0, 0, 0, 0.04);
847
+ }
848
+ :host([data-variant="ghost"][data-theme="light"]) .hb-btn:active {
849
+ background: rgba(0, 0, 0, 0.08);
850
+ transform: scale(0.98);
851
+ }
852
+
853
+ /* \u2500\u2500\u2500 FOCUS \u2500\u2500\u2500 */
854
+
855
+ .hb-btn:focus-visible {
856
+ outline: 2px solid var(--hb-focus-color, ${n});
857
+ outline-offset: 2px;
858
+ }
859
+
860
+ /* \u2500\u2500\u2500 ICON \u2500\u2500\u2500 */
861
+
862
+ .hb-btn-icon {
863
+ width: var(--hb-icon-size);
864
+ height: var(--hb-icon-size);
865
+ flex-shrink: 0;
866
+ display: flex;
867
+ align-items: center;
868
+ justify-content: center;
869
+ }
870
+
871
+ .hb-btn-icon svg { width: 100%; height: 100%; }
872
+
873
+ :host([data-variant="filled"][data-theme="branded"]) .hb-btn-icon,
874
+ :host([data-variant="filled"][data-theme="branded-alt"]) .hb-btn-icon {
875
+ color: #FFFFFF;
876
+ --hb-icon-accent: rgba(255,255,255,0.2);
877
+ }
878
+ :host([data-variant="filled"][data-theme="dark"]) .hb-btn-icon {
879
+ color: var(--hb-accent-color, ${n});
880
+ }
881
+ :host([data-variant="filled"][data-theme="light"]) .hb-btn-icon {
882
+ color: var(--hb-accent-color, ${n});
883
+ }
884
+
885
+ :host([data-variant="outline"]) .hb-btn-icon,
886
+ :host([data-variant="ghost"]) .hb-btn-icon {
887
+ color: var(--hb-accent-color, ${n});
888
+ }
889
+
890
+ /* \u2500\u2500\u2500 LABEL \u2500\u2500\u2500 */
891
+
892
+ .hb-btn-label {
893
+ letter-spacing: -0.01em;
894
+ }
895
+ `,E=class extends HTMLElement{constructor(){super();this._options={command:"",theme:"branded",size:"md",variant:"filled",popup:true};this._mqCleanup=null;this._rendered=false;this.attachShadow({mode:"open"});}connectedCallback(){this.syncFromAttributes(),this.render(),this.updateLightDOM();}disconnectedCallback(){this._mqCleanup?.(),this._mqCleanup=null;}attributeChangedCallback(){this._rendered&&(this.syncFromAttributes(),this.render(),this.updateLightDOM());}set options(t){this._options={...this._options,...t},this.render(),this.updateLightDOM();}get options(){return this._options}syncFromAttributes(){let t=this.getAttribute("command"),a=this.getAttribute("skill-url"),e=this.getAttribute("theme"),o=this.getAttribute("size"),s=this.getAttribute("variant"),h=this.getAttribute("shape"),d=this.getAttribute("popup"),c=this.getAttribute("popup-title"),l=this.getAttribute("popup-description");t!==null&&(this._options.command=t),a!==null&&(this._options.skillUrl=a),e&&(this._options.theme=e),o&&(this._options.size=o),s&&(this._options.variant=s),h&&(this._options.shape=h),d!==null&&(this._options.popup=d!=="false"),c!==null&&(this._options.popupTitle=c),l!==null&&(this._options.popupDescription=l);}updateLightDOM(){let{command:t,skillUrl:a}=this._options;this.setAttribute("role","button"),this.setAttribute("tabindex","0"),this.setAttribute("aria-label",`Run on Hermes Skills: ${t}`),this._options.popup!==false?this.setAttribute("aria-haspopup","dialog"):this.removeAttribute("aria-haspopup");let e=this.querySelector("a[data-hb-crawl]");e||(e=document.createElement("a"),e.setAttribute("data-hb-crawl",""),e.setAttribute("aria-hidden","true"),e.style.cssText="position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;",this.appendChild(e)),e.textContent=`Run on Hermes Skills: ${t}`,e.setAttribute("data-platform","hermes-skill"),e.setAttribute("data-command",t),a?(e.href=a,e.setAttribute("data-skill-url",a)):(e.href=`https://hermes.ai/skills?command=${encodeURIComponent(t)}`,e.removeAttribute("data-skill-url"));}getResolvedTheme(){return this._options.theme||"branded"}render(){if(!this.shadowRoot)return;let t=this.getResolvedTheme(),a=t==="system"?typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":t,e=this._options.variant||"filled",o=p(t),s=this._options.size||"md",h=this._options.shape||"rounded",d=F[s],c=_[h][s];this.setAttribute("data-theme",a),this.setAttribute("data-variant",e);let l=e!=="filled"?"transparent":o.bg,g=e==="ghost"?"transparent":e==="outline"?o.primary:o.border,O=e!=="filled"?o.primary:o.text;this.shadowRoot.innerHTML=`
896
+ <style>${I}</style>
897
+ <button
898
+ class="hb-btn"
899
+ type="button"
900
+ style="
901
+ ${u(o)}
902
+ --hb-bg: ${l};
903
+ --hb-border: ${g};
904
+ --hb-text: ${O};
905
+ --hb-accent-color: ${o.primary};
906
+ --hb-focus-color: ${o.primary};
907
+ --hb-height: ${d.height};
908
+ --hb-font-size: ${d.fontSize};
909
+ --hb-icon-size: ${d.iconSize};
910
+ --hb-padding: ${d.padding};
911
+ --hb-gap: ${d.gap};
912
+ --hb-radius: ${c};
913
+ "
914
+ aria-label="Run on Hermes Skills: ${this._options.command.replace(/"/g,"&quot;")}"
915
+ >
916
+ <span class="hb-btn-icon" aria-hidden="true">${x}</span>
917
+ <span class="hb-btn-label">Run on Hermes Skills</span>
918
+ </button>
919
+ `;let v=this.shadowRoot.querySelector(".hb-btn");v.addEventListener("click",()=>this.handleClick()),v.addEventListener("keydown",b=>{(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),this.handleClick());}),this._rendered=true,this.setupSystemThemeWatch();}handleClick(){let{popup:t,command:a,skillUrl:e,popupTitle:o,popupDescription:s}=this._options;if(this.dispatchEvent(new CustomEvent("hb-open",{bubbles:true,composed:true,detail:{command:a}})),t===false){navigator.clipboard.writeText(a).then(()=>{this._options.onCopy?.(a),this.dispatchEvent(new CustomEvent("hb-copy",{bubbles:true,composed:true,detail:{command:a}}));});return}w({variant:"hermes-skill",theme:this.getResolvedTheme(),title:o||"Run on Hermes Skills",description:s||"Copy and paste into a Hermes session to get started.",command:a,skillUrl:e,onCopy:h=>{this._options.onCopy?.(h),this.dispatchEvent(new CustomEvent("hb-copy",{bubbles:true,composed:true,detail:{command:h}}));},onClose:()=>{this.dispatchEvent(new CustomEvent("hb-close",{bubbles:true,composed:true}));}});}setupSystemThemeWatch(){if(this._mqCleanup?.(),this._mqCleanup=null,this.getResolvedTheme()!=="system"||typeof window>"u")return;let t=window.matchMedia("(prefers-color-scheme: dark)"),a=()=>this.render();t.addEventListener("change",a),this._mqCleanup=()=>t.removeEventListener("change",a);}};E.observedAttributes=["command","skill-url","theme","size","variant","shape","popup","popup-title","popup-description"];function $(r="hermes-skill-button"){typeof customElements>"u"||customElements.get(r)||customElements.define(r,E);}$();function N(r){let i=document.createElement("hermes-skill-button");return i.options=r,i}function B(){if(typeof document>"u")return [];let r=[];return document.querySelectorAll("hermes-button").forEach(i=>{let t=i.getAttribute("command")||"",o=i.getAttribute("prompt-flag")!=="false"?`hermes -p "${t}"`:t;r.push({platform:"hermes",command:t,fullCommand:o});}),document.querySelectorAll("hermes-skill-button").forEach(i=>{let t=i.getAttribute("command")||"",a=i.getAttribute("skill-url")||void 0;r.push({platform:"hermes-skill",command:t,...a&&{skillUrl:a}});}),r}function M(){let r=B();return r.length===0?{}:{"@context":"https://schema.org","@type":"WebPage",potentialAction:r.map(t=>{if(t.platform==="hermes")return {"@type":"Action",name:`Run on Hermes: ${t.command}`,description:t.command,target:{"@type":"EntryPoint",urlTemplate:`https://hermes.ai/run?command=${encodeURIComponent(t.fullCommand||t.command)}`,actionPlatform:"https://hermes.ai/run"},object:{"@type":"SoftwareSourceCode",runtimePlatform:"Hermes Agent",text:t.fullCommand||t.command}};let a={"@type":"EntryPoint",actionPlatform:"https://hermes.ai/skills"};t.skillUrl?a.urlTemplate=t.skillUrl:a.urlTemplate=`https://hermes.ai/skills?command=${encodeURIComponent(t.command)}`;let e={"@type":"Action",name:`Run on Hermes Skills: ${t.command}`,description:t.command,target:a};return t.skillUrl&&(e.object={"@type":"SoftwareApplication",name:t.command,downloadUrl:t.skillUrl,applicationCategory:"AI Skill",operatingSystem:"Hermes Agent"}),e})}}function q(){if(typeof document>"u")return;let r=document.querySelector("script[data-hermesbuttons-jsonld]");r&&r.remove();let i=M();if(!i||!("potentialAction"in i))return;let t=document.createElement("script");t.type="application/ld+json",t.setAttribute("data-hermesbuttons-jsonld",""),t.textContent=JSON.stringify(i,null,2),document.head.appendChild(t);}function nt(){S(),$();}
920
+ exports.ALT_BRAND_COLOR=H;exports.BRAND_COLOR=n;exports.HERMES_ICON=f;exports.HERMES_SKILL_ICON=x;exports.HermesButton=C;exports.HermesPopupDialog=T;exports.HermesSkillButton=E;exports.createHermesButton=P;exports.createHermesSkillButton=N;exports.discoverButtons=B;exports.generateStructuredData=M;exports.injectStructuredData=q;exports.register=nt;exports.registerHermesButton=S;exports.registerHermesSkillButton=$;exports.resolveTheme=p;exports.showPopup=w;exports.themes=y;//# sourceMappingURL=index.js.map
921
+ //# sourceMappingURL=index.js.map