@mcp-elements/angular 0.1.0 → 0.1.2

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 (44) hide show
  1. package/dist/index.d.ts +506 -0
  2. package/dist/index.js +2738 -0
  3. package/dist/index.js.map +1 -0
  4. package/package.json +28 -11
  5. package/src/accordion.component.ts +0 -74
  6. package/src/ai-badge.component.ts +0 -26
  7. package/src/alert.component.ts +0 -25
  8. package/src/avatar.component.ts +0 -24
  9. package/src/badge.component.ts +0 -17
  10. package/src/button.component.ts +0 -27
  11. package/src/card.component.ts +0 -46
  12. package/src/chat-bubble.component.ts +0 -53
  13. package/src/chips.component.ts +0 -33
  14. package/src/counter.component.ts +0 -48
  15. package/src/dialog.component.ts +0 -42
  16. package/src/drawer.component.ts +0 -48
  17. package/src/dropdown-menu.component.ts +0 -62
  18. package/src/feedback.component.ts +0 -71
  19. package/src/index.ts +0 -86
  20. package/src/input.component.ts +0 -46
  21. package/src/loader.component.ts +0 -12
  22. package/src/mcp/index.ts +0 -9
  23. package/src/mcp/mcp-app-frame.component.ts +0 -60
  24. package/src/mcp/mcp-consent-dialog.component.ts +0 -63
  25. package/src/mcp/mcp-resource-browser.component.ts +0 -86
  26. package/src/mcp/mcp-scope-inspector.component.ts +0 -81
  27. package/src/mcp/mcp-server-status.component.ts +0 -44
  28. package/src/mcp/mcp-tool-call.component.ts +0 -105
  29. package/src/mcp/mcp-tool-form.component.ts +0 -127
  30. package/src/password-input.component.ts +0 -35
  31. package/src/popover.component.ts +0 -40
  32. package/src/progress.component.ts +0 -20
  33. package/src/prompt-input.component.ts +0 -70
  34. package/src/select.component.ts +0 -106
  35. package/src/separator.component.ts +0 -15
  36. package/src/skeleton.component.ts +0 -11
  37. package/src/source-card.component.ts +0 -34
  38. package/src/streaming-text.component.ts +0 -43
  39. package/src/suggestion-chips.component.ts +0 -23
  40. package/src/switch.component.ts +0 -32
  41. package/src/tabs.component.ts +0 -95
  42. package/src/textarea.component.ts +0 -22
  43. package/src/toast.component.ts +0 -62
  44. package/src/tooltip.directive.ts +0 -63
package/dist/index.js ADDED
@@ -0,0 +1,2738 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/button.component.ts
5
+ import { Component, computed, input } from "@angular/core";
6
+ function _ts_decorate(decorators, target, key, desc) {
7
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
10
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
11
+ }
12
+ __name(_ts_decorate, "_ts_decorate");
13
+ var SnxButtonComponent = class {
14
+ static {
15
+ __name(this, "SnxButtonComponent");
16
+ }
17
+ variant = input("primary");
18
+ size = input("md");
19
+ disabled = input(false);
20
+ type = input("button");
21
+ class = input("");
22
+ classes = computed(() => [
23
+ "mcpe-btn",
24
+ `mcpe-btn-${this.variant()}`,
25
+ `mcpe-btn-${this.size()}`,
26
+ this.class()
27
+ ].filter(Boolean).join(" "));
28
+ };
29
+ SnxButtonComponent = _ts_decorate([
30
+ Component({
31
+ selector: "mcpe-button",
32
+ standalone: true,
33
+ template: `
34
+ <button [class]="classes()" [disabled]="disabled()" [type]="type()">
35
+ <ng-content />
36
+ </button>
37
+ `
38
+ })
39
+ ], SnxButtonComponent);
40
+
41
+ // src/badge.component.ts
42
+ import { Component as Component2, computed as computed2, input as input2 } from "@angular/core";
43
+ function _ts_decorate2(decorators, target, key, desc) {
44
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
45
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
46
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
47
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
48
+ }
49
+ __name(_ts_decorate2, "_ts_decorate");
50
+ var SnxBadgeComponent = class {
51
+ static {
52
+ __name(this, "SnxBadgeComponent");
53
+ }
54
+ variant = input2("default");
55
+ class = input2("");
56
+ classes = computed2(() => [
57
+ "mcpe-badge",
58
+ `mcpe-badge-${this.variant()}`,
59
+ this.class()
60
+ ].filter(Boolean).join(" "));
61
+ };
62
+ SnxBadgeComponent = _ts_decorate2([
63
+ Component2({
64
+ selector: "mcpe-badge",
65
+ standalone: true,
66
+ template: `<span [class]="classes()"><ng-content /></span>`
67
+ })
68
+ ], SnxBadgeComponent);
69
+
70
+ // src/card.component.ts
71
+ import { Component as Component3, input as input3, computed as computed3 } from "@angular/core";
72
+ function _ts_decorate3(decorators, target, key, desc) {
73
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
74
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
75
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
76
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
77
+ }
78
+ __name(_ts_decorate3, "_ts_decorate");
79
+ var SnxCardComponent = class {
80
+ static {
81
+ __name(this, "SnxCardComponent");
82
+ }
83
+ class = input3("");
84
+ classes = computed3(() => [
85
+ "mcpe-card",
86
+ this.class()
87
+ ].filter(Boolean).join(" "));
88
+ };
89
+ SnxCardComponent = _ts_decorate3([
90
+ Component3({
91
+ selector: "mcpe-card",
92
+ standalone: true,
93
+ template: `<div [class]="classes()"><ng-content /></div>`
94
+ })
95
+ ], SnxCardComponent);
96
+ var SnxCardHeaderComponent = class {
97
+ static {
98
+ __name(this, "SnxCardHeaderComponent");
99
+ }
100
+ };
101
+ SnxCardHeaderComponent = _ts_decorate3([
102
+ Component3({
103
+ selector: "mcpe-card-header",
104
+ standalone: true,
105
+ template: `<div class="mcpe-card-header"><ng-content /></div>`
106
+ })
107
+ ], SnxCardHeaderComponent);
108
+ var SnxCardTitleComponent = class {
109
+ static {
110
+ __name(this, "SnxCardTitleComponent");
111
+ }
112
+ };
113
+ SnxCardTitleComponent = _ts_decorate3([
114
+ Component3({
115
+ selector: "mcpe-card-title",
116
+ standalone: true,
117
+ template: `<h3 class="mcpe-card-title"><ng-content /></h3>`
118
+ })
119
+ ], SnxCardTitleComponent);
120
+ var SnxCardDescriptionComponent = class {
121
+ static {
122
+ __name(this, "SnxCardDescriptionComponent");
123
+ }
124
+ };
125
+ SnxCardDescriptionComponent = _ts_decorate3([
126
+ Component3({
127
+ selector: "mcpe-card-description",
128
+ standalone: true,
129
+ template: `<p class="mcpe-card-description"><ng-content /></p>`
130
+ })
131
+ ], SnxCardDescriptionComponent);
132
+ var SnxCardContentComponent = class {
133
+ static {
134
+ __name(this, "SnxCardContentComponent");
135
+ }
136
+ };
137
+ SnxCardContentComponent = _ts_decorate3([
138
+ Component3({
139
+ selector: "mcpe-card-content",
140
+ standalone: true,
141
+ template: `<div class="mcpe-card-content"><ng-content /></div>`
142
+ })
143
+ ], SnxCardContentComponent);
144
+ var SnxCardFooterComponent = class {
145
+ static {
146
+ __name(this, "SnxCardFooterComponent");
147
+ }
148
+ };
149
+ SnxCardFooterComponent = _ts_decorate3([
150
+ Component3({
151
+ selector: "mcpe-card-footer",
152
+ standalone: true,
153
+ template: `<div class="mcpe-card-footer"><ng-content /></div>`
154
+ })
155
+ ], SnxCardFooterComponent);
156
+
157
+ // src/input.component.ts
158
+ import { Component as Component4, input as input4, computed as computed4, forwardRef } from "@angular/core";
159
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
160
+ function _ts_decorate4(decorators, target, key, desc) {
161
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
162
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
163
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
164
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
165
+ }
166
+ __name(_ts_decorate4, "_ts_decorate");
167
+ var SnxInputComponent = class {
168
+ static {
169
+ __name(this, "SnxInputComponent");
170
+ }
171
+ type = input4("text");
172
+ placeholder = input4("");
173
+ disabled = input4(false);
174
+ value = input4("");
175
+ class = input4("");
176
+ classes = computed4(() => [
177
+ "mcpe-input",
178
+ this.class()
179
+ ].filter(Boolean).join(" "));
180
+ onChange = /* @__PURE__ */ __name(() => {
181
+ }, "onChange");
182
+ onTouched = /* @__PURE__ */ __name(() => {
183
+ }, "onTouched");
184
+ onInput(event) {
185
+ const value = event.target.value;
186
+ this.onChange(value);
187
+ }
188
+ writeValue(value) {
189
+ }
190
+ registerOnChange(fn) {
191
+ this.onChange = fn;
192
+ }
193
+ registerOnTouched(fn) {
194
+ this.onTouched = fn;
195
+ }
196
+ };
197
+ SnxInputComponent = _ts_decorate4([
198
+ Component4({
199
+ selector: "mcpe-input",
200
+ standalone: true,
201
+ template: `
202
+ <input
203
+ [class]="classes()"
204
+ [type]="type()"
205
+ [placeholder]="placeholder()"
206
+ [disabled]="disabled()"
207
+ [value]="value()"
208
+ (input)="onInput($event)"
209
+ (blur)="onTouched()"
210
+ />
211
+ `,
212
+ providers: [
213
+ {
214
+ provide: NG_VALUE_ACCESSOR,
215
+ useExisting: forwardRef(() => SnxInputComponent),
216
+ multi: true
217
+ }
218
+ ]
219
+ })
220
+ ], SnxInputComponent);
221
+
222
+ // src/textarea.component.ts
223
+ import { Component as Component5, input as input5, computed as computed5 } from "@angular/core";
224
+ function _ts_decorate5(decorators, target, key, desc) {
225
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
226
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
227
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
228
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
229
+ }
230
+ __name(_ts_decorate5, "_ts_decorate");
231
+ var SnxTextareaComponent = class {
232
+ static {
233
+ __name(this, "SnxTextareaComponent");
234
+ }
235
+ placeholder = input5("");
236
+ disabled = input5(false);
237
+ rows = input5(3);
238
+ class = input5("");
239
+ classes = computed5(() => [
240
+ "mcpe-textarea",
241
+ this.class()
242
+ ].filter(Boolean).join(" "));
243
+ };
244
+ SnxTextareaComponent = _ts_decorate5([
245
+ Component5({
246
+ selector: "mcpe-textarea",
247
+ standalone: true,
248
+ template: `
249
+ <textarea
250
+ [class]="classes()"
251
+ [placeholder]="placeholder()"
252
+ [disabled]="disabled()"
253
+ [rows]="rows()"
254
+ ><ng-content /></textarea>
255
+ `
256
+ })
257
+ ], SnxTextareaComponent);
258
+
259
+ // src/avatar.component.ts
260
+ import { Component as Component6, input as input6, computed as computed6, signal } from "@angular/core";
261
+ function _ts_decorate6(decorators, target, key, desc) {
262
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
263
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
264
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
265
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
266
+ }
267
+ __name(_ts_decorate6, "_ts_decorate");
268
+ var SnxAvatarComponent = class {
269
+ static {
270
+ __name(this, "SnxAvatarComponent");
271
+ }
272
+ src = input6("");
273
+ alt = input6("");
274
+ fallback = input6("");
275
+ class = input6("");
276
+ hasError = signal(false);
277
+ classes = computed6(() => [
278
+ "mcpe-avatar",
279
+ this.class()
280
+ ].filter(Boolean).join(" "));
281
+ };
282
+ SnxAvatarComponent = _ts_decorate6([
283
+ Component6({
284
+ selector: "mcpe-avatar",
285
+ standalone: true,
286
+ template: `
287
+ <div [class]="classes()">
288
+ @if (src() && !hasError()) {
289
+ <img [src]="src()" [alt]="alt()" class="mcpe-avatar-image" (error)="hasError.set(true)" />
290
+ } @else {
291
+ <span class="mcpe-avatar-fallback">{{ fallback() }}</span>
292
+ }
293
+ </div>
294
+ `
295
+ })
296
+ ], SnxAvatarComponent);
297
+
298
+ // src/separator.component.ts
299
+ import { Component as Component7, input as input7, computed as computed7 } from "@angular/core";
300
+ function _ts_decorate7(decorators, target, key, desc) {
301
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
302
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
303
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
304
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
305
+ }
306
+ __name(_ts_decorate7, "_ts_decorate");
307
+ var SnxSeparatorComponent = class {
308
+ static {
309
+ __name(this, "SnxSeparatorComponent");
310
+ }
311
+ orientation = input7("horizontal");
312
+ class = input7("");
313
+ classes = computed7(() => [
314
+ "mcpe-separator",
315
+ `mcpe-separator-${this.orientation()}`,
316
+ this.class()
317
+ ].filter(Boolean).join(" "));
318
+ };
319
+ SnxSeparatorComponent = _ts_decorate7([
320
+ Component7({
321
+ selector: "mcpe-separator",
322
+ standalone: true,
323
+ template: `<div [class]="classes()" role="separator" [attr.aria-orientation]="orientation()"></div>`
324
+ })
325
+ ], SnxSeparatorComponent);
326
+
327
+ // src/skeleton.component.ts
328
+ import { Component as Component8, input as input8, computed as computed8 } from "@angular/core";
329
+ function _ts_decorate8(decorators, target, key, desc) {
330
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
331
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
332
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
333
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
334
+ }
335
+ __name(_ts_decorate8, "_ts_decorate");
336
+ var SnxSkeletonComponent = class {
337
+ static {
338
+ __name(this, "SnxSkeletonComponent");
339
+ }
340
+ class = input8("");
341
+ classes = computed8(() => [
342
+ "mcpe-skeleton",
343
+ this.class()
344
+ ].filter(Boolean).join(" "));
345
+ };
346
+ SnxSkeletonComponent = _ts_decorate8([
347
+ Component8({
348
+ selector: "mcpe-skeleton",
349
+ standalone: true,
350
+ template: `<div [class]="classes()"></div>`
351
+ })
352
+ ], SnxSkeletonComponent);
353
+
354
+ // src/dialog.component.ts
355
+ import { Component as Component9, input as input9, output, signal as signal2 } from "@angular/core";
356
+ function _ts_decorate9(decorators, target, key, desc) {
357
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
358
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
359
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
360
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
361
+ }
362
+ __name(_ts_decorate9, "_ts_decorate");
363
+ var SnxDialogComponent = class {
364
+ static {
365
+ __name(this, "SnxDialogComponent");
366
+ }
367
+ modal = input9(true);
368
+ open = signal2(false);
369
+ openChange = output();
370
+ toggle() {
371
+ this.open.update((v) => !v);
372
+ this.openChange.emit(this.open());
373
+ }
374
+ close() {
375
+ this.open.set(false);
376
+ this.openChange.emit(false);
377
+ }
378
+ show() {
379
+ this.open.set(true);
380
+ this.openChange.emit(true);
381
+ }
382
+ };
383
+ SnxDialogComponent = _ts_decorate9([
384
+ Component9({
385
+ selector: "mcpe-dialog",
386
+ standalone: true,
387
+ template: `
388
+ @if (open()) {
389
+ <div class="mcpe-dialog-overlay" (click)="close()">
390
+ <div
391
+ #content
392
+ class="mcpe-dialog-content"
393
+ role="dialog"
394
+ [attr.aria-modal]="modal()"
395
+ (click)="$event.stopPropagation()"
396
+ (keydown.escape)="close()"
397
+ >
398
+ <ng-content />
399
+ <button class="mcpe-dialog-close" (click)="close()" type="button" aria-label="Close">
400
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
401
+ <path d="M18 6 6 18" /><path d="m6 6 12 12" />
402
+ </svg>
403
+ </button>
404
+ </div>
405
+ </div>
406
+ }
407
+ `
408
+ })
409
+ ], SnxDialogComponent);
410
+
411
+ // src/tabs.component.ts
412
+ import { Component as Component10, input as input10, output as output2, signal as signal3, computed as computed9, effect } from "@angular/core";
413
+ import { createTabs } from "@mcp-elements/core";
414
+ function _ts_decorate10(decorators, target, key, desc) {
415
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
416
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
417
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
418
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
419
+ }
420
+ __name(_ts_decorate10, "_ts_decorate");
421
+ function _ts_metadata(k, v) {
422
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
423
+ }
424
+ __name(_ts_metadata, "_ts_metadata");
425
+ var SnxTabsComponent = class {
426
+ static {
427
+ __name(this, "SnxTabsComponent");
428
+ }
429
+ items = input10([]);
430
+ defaultValue = input10("");
431
+ activeValue = signal3("");
432
+ api = computed9(() => createTabs(this.items(), {
433
+ defaultValue: this.defaultValue(),
434
+ onValueChange: /* @__PURE__ */ __name((v) => this.activeValue.set(v), "onValueChange")
435
+ }));
436
+ constructor() {
437
+ effect(() => {
438
+ const def = this.defaultValue();
439
+ const items = this.items();
440
+ if (def) {
441
+ this.activeValue.set(def);
442
+ } else if (items.length > 0) {
443
+ this.activeValue.set(items[0].value);
444
+ }
445
+ });
446
+ }
447
+ getTabProps(value) {
448
+ return this.api().getTriggerProps(value, this.activeValue());
449
+ }
450
+ getPanelProps(value) {
451
+ return this.api().getPanelProps(value, this.activeValue());
452
+ }
453
+ isActive(value) {
454
+ return this.activeValue() === value;
455
+ }
456
+ select(value) {
457
+ this.activeValue.set(value);
458
+ }
459
+ };
460
+ SnxTabsComponent = _ts_decorate10([
461
+ Component10({
462
+ selector: "mcpe-tabs",
463
+ standalone: true,
464
+ template: `<div><ng-content /></div>`
465
+ }),
466
+ _ts_metadata("design:type", Function),
467
+ _ts_metadata("design:paramtypes", [])
468
+ ], SnxTabsComponent);
469
+ var SnxTabsListComponent = class {
470
+ static {
471
+ __name(this, "SnxTabsListComponent");
472
+ }
473
+ };
474
+ SnxTabsListComponent = _ts_decorate10([
475
+ Component10({
476
+ selector: "mcpe-tabs-list",
477
+ standalone: true,
478
+ template: `<div role="tablist" class="mcpe-tabs-list"><ng-content /></div>`
479
+ })
480
+ ], SnxTabsListComponent);
481
+ var SnxTabsTriggerComponent = class {
482
+ static {
483
+ __name(this, "SnxTabsTriggerComponent");
484
+ }
485
+ isActive = input10(false);
486
+ onClick = output2();
487
+ class = input10("");
488
+ classes = computed9(() => [
489
+ "mcpe-tabs-trigger",
490
+ this.isActive() ? "mcpe-tabs-trigger-active" : "",
491
+ this.class()
492
+ ].filter(Boolean).join(" "));
493
+ };
494
+ SnxTabsTriggerComponent = _ts_decorate10([
495
+ Component10({
496
+ selector: "mcpe-tabs-trigger",
497
+ standalone: true,
498
+ template: `
499
+ <button
500
+ role="tab"
501
+ [class]="classes()"
502
+ [attr.aria-selected]="isActive()"
503
+ [attr.tabindex]="isActive() ? 0 : -1"
504
+ (click)="onClick.emit()"
505
+ >
506
+ <ng-content />
507
+ </button>
508
+ `
509
+ })
510
+ ], SnxTabsTriggerComponent);
511
+ var SnxTabsContentComponent = class {
512
+ static {
513
+ __name(this, "SnxTabsContentComponent");
514
+ }
515
+ isActive = input10(false);
516
+ };
517
+ SnxTabsContentComponent = _ts_decorate10([
518
+ Component10({
519
+ selector: "mcpe-tabs-content",
520
+ standalone: true,
521
+ template: `
522
+ @if (isActive()) {
523
+ <div role="tabpanel" class="mcpe-tabs-content"><ng-content /></div>
524
+ }
525
+ `
526
+ })
527
+ ], SnxTabsContentComponent);
528
+
529
+ // src/accordion.component.ts
530
+ import { Component as Component11, input as input11, output as output3, signal as signal4, computed as computed10 } from "@angular/core";
531
+ import { createAccordion } from "@mcp-elements/core";
532
+ function _ts_decorate11(decorators, target, key, desc) {
533
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
534
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
535
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
536
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
537
+ }
538
+ __name(_ts_decorate11, "_ts_decorate");
539
+ var SnxAccordionComponent = class {
540
+ static {
541
+ __name(this, "SnxAccordionComponent");
542
+ }
543
+ items = input11([]);
544
+ type = input11("single");
545
+ collapsible = input11(false);
546
+ expandedValues = signal4([]);
547
+ api = computed10(() => createAccordion(this.items(), {
548
+ type: this.type(),
549
+ collapsible: this.collapsible(),
550
+ onValueChange: /* @__PURE__ */ __name((v) => this.expandedValues.set(v), "onValueChange")
551
+ }));
552
+ isExpanded(value) {
553
+ return this.expandedValues().includes(value);
554
+ }
555
+ toggle(value) {
556
+ const props = this.api().getTriggerProps(value, this.expandedValues());
557
+ props.onClick();
558
+ }
559
+ };
560
+ SnxAccordionComponent = _ts_decorate11([
561
+ Component11({
562
+ selector: "mcpe-accordion",
563
+ standalone: true,
564
+ template: `<div><ng-content /></div>`
565
+ })
566
+ ], SnxAccordionComponent);
567
+ var SnxAccordionItemComponent = class {
568
+ static {
569
+ __name(this, "SnxAccordionItemComponent");
570
+ }
571
+ };
572
+ SnxAccordionItemComponent = _ts_decorate11([
573
+ Component11({
574
+ selector: "mcpe-accordion-item",
575
+ standalone: true,
576
+ template: `<div class="mcpe-accordion-item"><ng-content /></div>`
577
+ })
578
+ ], SnxAccordionItemComponent);
579
+ var SnxAccordionTriggerComponent = class {
580
+ static {
581
+ __name(this, "SnxAccordionTriggerComponent");
582
+ }
583
+ isExpanded = input11(false);
584
+ onClick = output3();
585
+ };
586
+ SnxAccordionTriggerComponent = _ts_decorate11([
587
+ Component11({
588
+ selector: "mcpe-accordion-trigger",
589
+ standalone: true,
590
+ template: `
591
+ <h3>
592
+ <button
593
+ [class]="'mcpe-accordion-trigger'"
594
+ [attr.aria-expanded]="isExpanded()"
595
+ (click)="onClick.emit()"
596
+ >
597
+ <ng-content />
598
+ <svg class="mcpe-accordion-chevron" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
599
+ <path d="m6 9 6 6 6-6" />
600
+ </svg>
601
+ </button>
602
+ </h3>
603
+ `
604
+ })
605
+ ], SnxAccordionTriggerComponent);
606
+ var SnxAccordionContentComponent = class {
607
+ static {
608
+ __name(this, "SnxAccordionContentComponent");
609
+ }
610
+ isExpanded = input11(false);
611
+ };
612
+ SnxAccordionContentComponent = _ts_decorate11([
613
+ Component11({
614
+ selector: "mcpe-accordion-content",
615
+ standalone: true,
616
+ template: `
617
+ @if (isExpanded()) {
618
+ <div role="region" class="mcpe-accordion-content"><ng-content /></div>
619
+ }
620
+ `
621
+ })
622
+ ], SnxAccordionContentComponent);
623
+
624
+ // src/select.component.ts
625
+ import { Component as Component12, input as input12, output as output4, signal as signal5, computed as computed11, viewChild } from "@angular/core";
626
+ function _ts_decorate12(decorators, target, key, desc) {
627
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
628
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
629
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
630
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
631
+ }
632
+ __name(_ts_decorate12, "_ts_decorate");
633
+ var SnxSelectComponent = class {
634
+ static {
635
+ __name(this, "SnxSelectComponent");
636
+ }
637
+ options = input12([]);
638
+ placeholder = input12("Select...");
639
+ valueChange = output4();
640
+ isOpen = signal5(false);
641
+ selectedValue = signal5(null);
642
+ highlightedIndex = signal5(0);
643
+ container = viewChild("container");
644
+ selectedLabel = computed11(() => {
645
+ const val = this.selectedValue();
646
+ return this.options().find((o) => o.value === val)?.label ?? "";
647
+ });
648
+ toggle() {
649
+ this.isOpen.update((v) => !v);
650
+ }
651
+ selectOption(option) {
652
+ if (option.disabled) return;
653
+ this.selectedValue.set(option.value);
654
+ this.valueChange.emit(option.value);
655
+ this.isOpen.set(false);
656
+ }
657
+ getItemClasses(option, index) {
658
+ return [
659
+ "mcpe-select-item",
660
+ index === this.highlightedIndex() ? "mcpe-select-item-active" : "",
661
+ option.value === this.selectedValue() ? "mcpe-select-item-selected" : ""
662
+ ].filter(Boolean).join(" ");
663
+ }
664
+ onKeyDown(event) {
665
+ const opts = this.options().filter((o) => !o.disabled);
666
+ if (event.key === "ArrowDown") {
667
+ event.preventDefault();
668
+ if (!this.isOpen()) {
669
+ this.isOpen.set(true);
670
+ return;
671
+ }
672
+ this.highlightedIndex.update((i) => (i + 1) % opts.length);
673
+ } else if (event.key === "ArrowUp") {
674
+ event.preventDefault();
675
+ this.highlightedIndex.update((i) => (i - 1 + opts.length) % opts.length);
676
+ } else if (event.key === "Enter" || event.key === " ") {
677
+ event.preventDefault();
678
+ if (this.isOpen()) {
679
+ const opt = opts[this.highlightedIndex()];
680
+ if (opt) this.selectOption(opt);
681
+ } else {
682
+ this.isOpen.set(true);
683
+ }
684
+ } else if (event.key === "Escape") {
685
+ this.isOpen.set(false);
686
+ }
687
+ }
688
+ onDocumentClick(event) {
689
+ const el = this.container()?.nativeElement;
690
+ if (el && !el.contains(event.target)) {
691
+ this.isOpen.set(false);
692
+ }
693
+ }
694
+ };
695
+ SnxSelectComponent = _ts_decorate12([
696
+ Component12({
697
+ selector: "mcpe-select",
698
+ standalone: true,
699
+ template: `
700
+ <div class="relative" #container>
701
+ <button
702
+ class="mcpe-select-trigger"
703
+ [attr.aria-expanded]="isOpen()"
704
+ aria-haspopup="listbox"
705
+ (click)="toggle()"
706
+ (keydown)="onKeyDown($event)"
707
+ >
708
+ <span>{{ selectedLabel() || placeholder() }}</span>
709
+ <svg class="h-4 w-4 opacity-50" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
710
+ <path d="m6 9 6 6 6-6" />
711
+ </svg>
712
+ </button>
713
+ @if (isOpen()) {
714
+ <div class="mcpe-select-content absolute top-full mt-1 w-full">
715
+ <div class="mcpe-select-viewport" role="listbox">
716
+ @for (option of options(); track option.value; let i = $index) {
717
+ <div
718
+ role="option"
719
+ [attr.aria-selected]="option.value === selectedValue()"
720
+ [attr.aria-disabled]="option.disabled"
721
+ [class]="getItemClasses(option, i)"
722
+ (click)="selectOption(option)"
723
+ (mouseenter)="highlightedIndex.set(i)"
724
+ >
725
+ {{ option.label }}
726
+ </div>
727
+ }
728
+ </div>
729
+ </div>
730
+ }
731
+ </div>
732
+ `,
733
+ host: {
734
+ "(document:click)": "onDocumentClick($event)"
735
+ }
736
+ })
737
+ ], SnxSelectComponent);
738
+
739
+ // src/tooltip.directive.ts
740
+ import { Directive, input as input13, HostListener, ElementRef, Renderer2 } from "@angular/core";
741
+ function _ts_decorate13(decorators, target, key, desc) {
742
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
743
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
744
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
745
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
746
+ }
747
+ __name(_ts_decorate13, "_ts_decorate");
748
+ function _ts_metadata2(k, v) {
749
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
750
+ }
751
+ __name(_ts_metadata2, "_ts_metadata");
752
+ var SnxTooltipDirective = class {
753
+ static {
754
+ __name(this, "SnxTooltipDirective");
755
+ }
756
+ el;
757
+ renderer;
758
+ mcpeTooltip = input13("");
759
+ tooltipDelay = input13(700);
760
+ tooltipEl = null;
761
+ timeoutId = null;
762
+ constructor(el, renderer) {
763
+ this.el = el;
764
+ this.renderer = renderer;
765
+ }
766
+ onShow() {
767
+ this.clearDelay();
768
+ this.timeoutId = setTimeout(() => this.show(), this.tooltipDelay());
769
+ }
770
+ onHide() {
771
+ this.clearDelay();
772
+ this.hide();
773
+ }
774
+ show() {
775
+ if (this.tooltipEl) return;
776
+ this.tooltipEl = this.renderer.createElement("div");
777
+ this.renderer.addClass(this.tooltipEl, "mcpe-tooltip-content");
778
+ this.renderer.setStyle(this.tooltipEl, "position", "absolute");
779
+ this.renderer.setStyle(this.tooltipEl, "bottom", "100%");
780
+ this.renderer.setStyle(this.tooltipEl, "left", "50%");
781
+ this.renderer.setStyle(this.tooltipEl, "transform", "translateX(-50%)");
782
+ this.renderer.setStyle(this.tooltipEl, "margin-bottom", "0.5rem");
783
+ const text = this.renderer.createText(this.mcpeTooltip());
784
+ this.renderer.appendChild(this.tooltipEl, text);
785
+ this.renderer.setStyle(this.el.nativeElement, "position", "relative");
786
+ this.renderer.appendChild(this.el.nativeElement, this.tooltipEl);
787
+ }
788
+ hide() {
789
+ if (this.tooltipEl) {
790
+ this.renderer.removeChild(this.el.nativeElement, this.tooltipEl);
791
+ this.tooltipEl = null;
792
+ }
793
+ }
794
+ clearDelay() {
795
+ if (this.timeoutId !== null) {
796
+ clearTimeout(this.timeoutId);
797
+ this.timeoutId = null;
798
+ }
799
+ }
800
+ ngOnDestroy() {
801
+ this.clearDelay();
802
+ this.hide();
803
+ }
804
+ };
805
+ _ts_decorate13([
806
+ HostListener("mouseenter"),
807
+ HostListener("focus"),
808
+ _ts_metadata2("design:type", Function),
809
+ _ts_metadata2("design:paramtypes", []),
810
+ _ts_metadata2("design:returntype", void 0)
811
+ ], SnxTooltipDirective.prototype, "onShow", null);
812
+ _ts_decorate13([
813
+ HostListener("mouseleave"),
814
+ HostListener("blur"),
815
+ _ts_metadata2("design:type", Function),
816
+ _ts_metadata2("design:paramtypes", []),
817
+ _ts_metadata2("design:returntype", void 0)
818
+ ], SnxTooltipDirective.prototype, "onHide", null);
819
+ SnxTooltipDirective = _ts_decorate13([
820
+ Directive({
821
+ selector: "[mcpeTooltip]",
822
+ standalone: true
823
+ }),
824
+ _ts_metadata2("design:type", Function),
825
+ _ts_metadata2("design:paramtypes", [
826
+ typeof ElementRef === "undefined" ? Object : ElementRef,
827
+ typeof Renderer2 === "undefined" ? Object : Renderer2
828
+ ])
829
+ ], SnxTooltipDirective);
830
+
831
+ // src/popover.component.ts
832
+ import { Component as Component13, signal as signal6, viewChild as viewChild2 } from "@angular/core";
833
+ function _ts_decorate14(decorators, target, key, desc) {
834
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
835
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
836
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
837
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
838
+ }
839
+ __name(_ts_decorate14, "_ts_decorate");
840
+ var SnxPopoverComponent = class {
841
+ static {
842
+ __name(this, "SnxPopoverComponent");
843
+ }
844
+ isOpen = signal6(false);
845
+ container = viewChild2("container");
846
+ toggle() {
847
+ this.isOpen.update((v) => !v);
848
+ }
849
+ close() {
850
+ this.isOpen.set(false);
851
+ }
852
+ show() {
853
+ this.isOpen.set(true);
854
+ }
855
+ onDocumentClick(event) {
856
+ const el = this.container()?.nativeElement;
857
+ if (el && !el.contains(event.target)) {
858
+ this.isOpen.set(false);
859
+ }
860
+ }
861
+ };
862
+ SnxPopoverComponent = _ts_decorate14([
863
+ Component13({
864
+ selector: "mcpe-popover",
865
+ standalone: true,
866
+ template: `
867
+ <div class="relative inline-block" #container>
868
+ <div (click)="toggle()">
869
+ <ng-content select="[trigger]" />
870
+ </div>
871
+ @if (isOpen()) {
872
+ <div
873
+ class="mcpe-popover-content absolute top-full mt-2"
874
+ role="dialog"
875
+ (keydown.escape)="close()"
876
+ >
877
+ <ng-content />
878
+ </div>
879
+ }
880
+ </div>
881
+ `,
882
+ host: {
883
+ "(document:click)": "onDocumentClick($event)"
884
+ }
885
+ })
886
+ ], SnxPopoverComponent);
887
+
888
+ // src/toast.component.ts
889
+ import { Component as Component14, Injectable, signal as signal7 } from "@angular/core";
890
+ function _ts_decorate15(decorators, target, key, desc) {
891
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
892
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
893
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
894
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
895
+ }
896
+ __name(_ts_decorate15, "_ts_decorate");
897
+ function _ts_metadata3(k, v) {
898
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
899
+ }
900
+ __name(_ts_metadata3, "_ts_metadata");
901
+ var SnxToastService = class {
902
+ static {
903
+ __name(this, "SnxToastService");
904
+ }
905
+ toasts = signal7([]);
906
+ counter = 0;
907
+ show(toast, duration = 5e3) {
908
+ const id = `toast-${++this.counter}`;
909
+ this.toasts.update((t) => [
910
+ ...t,
911
+ {
912
+ id,
913
+ ...toast
914
+ }
915
+ ]);
916
+ if (duration > 0) {
917
+ setTimeout(() => this.dismiss(id), duration);
918
+ }
919
+ return id;
920
+ }
921
+ success(title, description) {
922
+ return this.show({
923
+ title,
924
+ description,
925
+ variant: "success"
926
+ });
927
+ }
928
+ error(title, description) {
929
+ return this.show({
930
+ title,
931
+ description,
932
+ variant: "destructive"
933
+ });
934
+ }
935
+ dismiss(id) {
936
+ this.toasts.update((t) => t.filter((x) => x.id !== id));
937
+ }
938
+ };
939
+ SnxToastService = _ts_decorate15([
940
+ Injectable({
941
+ providedIn: "root"
942
+ })
943
+ ], SnxToastService);
944
+ var SnxToasterComponent = class {
945
+ static {
946
+ __name(this, "SnxToasterComponent");
947
+ }
948
+ toastService;
949
+ constructor(toastService) {
950
+ this.toastService = toastService;
951
+ }
952
+ };
953
+ SnxToasterComponent = _ts_decorate15([
954
+ Component14({
955
+ selector: "mcpe-toaster",
956
+ standalone: true,
957
+ template: `
958
+ <div class="mcpe-toaster mcpe-toaster-bottom-right">
959
+ @for (t of toastService.toasts(); track t.id) {
960
+ <div
961
+ [class]="'mcpe-toast group' + (t.variant === 'destructive' ? ' mcpe-toast-destructive' : '') + (t.variant === 'success' ? ' mcpe-toast-success' : '')"
962
+ >
963
+ <span class="mcpe-toast-icon" aria-hidden="true">
964
+ @switch (t.variant) {
965
+ @case ('success') {
966
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21.801 10A10 10 0 1 1 17 3.335" /><path d="m9 11 3 3L22 4" /></svg>
967
+ }
968
+ @case ('destructive') {
969
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10" /><line x1="12" x2="12" y1="8" y2="12" /><line x1="12" x2="12.01" y1="16" y2="16" /></svg>
970
+ }
971
+ @default {
972
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10" /><path d="M12 16v-4" /><path d="M12 8h.01" /></svg>
973
+ }
974
+ }
975
+ </span>
976
+ <div class="mcpe-toast-body">
977
+ @if (t.title) { <div class="mcpe-toast-title">{{ t.title }}</div> }
978
+ @if (t.description) { <div class="mcpe-toast-description">{{ t.description }}</div> }
979
+ </div>
980
+ <button class="mcpe-toast-close" (click)="toastService.dismiss(t.id)" type="button" aria-label="Close">
981
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
982
+ <path d="M18 6 6 18" /><path d="m6 6 12 12" />
983
+ </svg>
984
+ </button>
985
+ </div>
986
+ }
987
+ </div>
988
+ `
989
+ }),
990
+ _ts_metadata3("design:type", Function),
991
+ _ts_metadata3("design:paramtypes", [
992
+ typeof SnxToastService === "undefined" ? Object : SnxToastService
993
+ ])
994
+ ], SnxToasterComponent);
995
+
996
+ // src/drawer.component.ts
997
+ import { Component as Component15, input as input14, output as output5, signal as signal8 } from "@angular/core";
998
+ function _ts_decorate16(decorators, target, key, desc) {
999
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1000
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1001
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1002
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1003
+ }
1004
+ __name(_ts_decorate16, "_ts_decorate");
1005
+ var SnxDrawerComponent = class {
1006
+ static {
1007
+ __name(this, "SnxDrawerComponent");
1008
+ }
1009
+ side = input14("right");
1010
+ open = signal8(false);
1011
+ openChange = output5();
1012
+ show() {
1013
+ this.open.set(true);
1014
+ this.openChange.emit(true);
1015
+ }
1016
+ close() {
1017
+ this.open.set(false);
1018
+ this.openChange.emit(false);
1019
+ }
1020
+ toggle() {
1021
+ this.open.update((v) => !v);
1022
+ this.openChange.emit(this.open());
1023
+ }
1024
+ };
1025
+ SnxDrawerComponent = _ts_decorate16([
1026
+ Component15({
1027
+ selector: "mcpe-drawer",
1028
+ standalone: true,
1029
+ template: `
1030
+ @if (open()) {
1031
+ <div class="mcpe-drawer-overlay" (click)="close()"></div>
1032
+ <div
1033
+ [class]="'mcpe-drawer-content mcpe-drawer-content-' + side()"
1034
+ role="dialog"
1035
+ aria-modal="true"
1036
+ (keydown.escape)="close()"
1037
+ >
1038
+ <ng-content />
1039
+ <button class="mcpe-drawer-close" (click)="close()" aria-label="Close">
1040
+ <svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1041
+ <path d="M18 6 6 18" /><path d="m6 6 12 12" />
1042
+ </svg>
1043
+ </button>
1044
+ </div>
1045
+ }
1046
+ `
1047
+ })
1048
+ ], SnxDrawerComponent);
1049
+ var SnxDrawerHeaderComponent = class {
1050
+ static {
1051
+ __name(this, "SnxDrawerHeaderComponent");
1052
+ }
1053
+ };
1054
+ SnxDrawerHeaderComponent = _ts_decorate16([
1055
+ Component15({
1056
+ selector: "mcpe-drawer-header",
1057
+ standalone: true,
1058
+ template: `<div class="mcpe-drawer-header"><ng-content /></div>`
1059
+ })
1060
+ ], SnxDrawerHeaderComponent);
1061
+ var SnxDrawerFooterComponent = class {
1062
+ static {
1063
+ __name(this, "SnxDrawerFooterComponent");
1064
+ }
1065
+ };
1066
+ SnxDrawerFooterComponent = _ts_decorate16([
1067
+ Component15({
1068
+ selector: "mcpe-drawer-footer",
1069
+ standalone: true,
1070
+ template: `<div class="mcpe-drawer-footer"><ng-content /></div>`
1071
+ })
1072
+ ], SnxDrawerFooterComponent);
1073
+ var SnxDrawerTitleComponent = class {
1074
+ static {
1075
+ __name(this, "SnxDrawerTitleComponent");
1076
+ }
1077
+ };
1078
+ SnxDrawerTitleComponent = _ts_decorate16([
1079
+ Component15({
1080
+ selector: "mcpe-drawer-title",
1081
+ standalone: true,
1082
+ template: `<h2 class="mcpe-drawer-title"><ng-content /></h2>`
1083
+ })
1084
+ ], SnxDrawerTitleComponent);
1085
+ var SnxDrawerDescriptionComponent = class {
1086
+ static {
1087
+ __name(this, "SnxDrawerDescriptionComponent");
1088
+ }
1089
+ };
1090
+ SnxDrawerDescriptionComponent = _ts_decorate16([
1091
+ Component15({
1092
+ selector: "mcpe-drawer-description",
1093
+ standalone: true,
1094
+ template: `<p class="mcpe-drawer-description"><ng-content /></p>`
1095
+ })
1096
+ ], SnxDrawerDescriptionComponent);
1097
+ var SnxDrawerBodyComponent = class {
1098
+ static {
1099
+ __name(this, "SnxDrawerBodyComponent");
1100
+ }
1101
+ };
1102
+ SnxDrawerBodyComponent = _ts_decorate16([
1103
+ Component15({
1104
+ selector: "mcpe-drawer-body",
1105
+ standalone: true,
1106
+ template: `<div class="mcpe-drawer-body"><ng-content /></div>`
1107
+ })
1108
+ ], SnxDrawerBodyComponent);
1109
+
1110
+ // src/dropdown-menu.component.ts
1111
+ import { Component as Component16, input as input15, signal as signal9, viewChild as viewChild3 } from "@angular/core";
1112
+ function _ts_decorate17(decorators, target, key, desc) {
1113
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1114
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1115
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1116
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1117
+ }
1118
+ __name(_ts_decorate17, "_ts_decorate");
1119
+ var SnxDropdownMenuComponent = class {
1120
+ static {
1121
+ __name(this, "SnxDropdownMenuComponent");
1122
+ }
1123
+ items = input15([]);
1124
+ isOpen = signal9(false);
1125
+ container = viewChild3("container");
1126
+ toggle() {
1127
+ this.isOpen.update((v) => !v);
1128
+ }
1129
+ close() {
1130
+ this.isOpen.set(false);
1131
+ }
1132
+ selectItem(item) {
1133
+ if (!item.disabled) this.isOpen.set(false);
1134
+ }
1135
+ onDocumentClick(event) {
1136
+ const el = this.container()?.nativeElement;
1137
+ if (el && !el.contains(event.target)) this.isOpen.set(false);
1138
+ }
1139
+ };
1140
+ SnxDropdownMenuComponent = _ts_decorate17([
1141
+ Component16({
1142
+ selector: "mcpe-dropdown-menu",
1143
+ standalone: true,
1144
+ template: `
1145
+ <div class="relative inline-block" #container>
1146
+ <div (click)="toggle()">
1147
+ <ng-content select="[trigger]" />
1148
+ </div>
1149
+ @if (isOpen()) {
1150
+ <div class="mcpe-dropdown-menu-content absolute top-full mt-1 right-0" role="menu">
1151
+ @for (item of items(); track item.id) {
1152
+ @if (item.type === 'separator') {
1153
+ <div class="mcpe-dropdown-menu-separator" role="separator"></div>
1154
+ } @else if (item.type === 'label') {
1155
+ <div class="mcpe-dropdown-menu-label">{{ item.label }}</div>
1156
+ } @else {
1157
+ <div
1158
+ role="menuitem"
1159
+ [class]="'mcpe-dropdown-menu-item' + (item.disabled ? ' opacity-50 pointer-events-none' : '')"
1160
+ (click)="selectItem(item)"
1161
+ [attr.aria-disabled]="item.disabled"
1162
+ >
1163
+ <span class="flex-1">{{ item.label }}</span>
1164
+ @if (item.shortcut) {
1165
+ <span class="mcpe-dropdown-menu-shortcut">{{ item.shortcut }}</span>
1166
+ }
1167
+ </div>
1168
+ }
1169
+ }
1170
+ </div>
1171
+ }
1172
+ </div>
1173
+ `,
1174
+ host: {
1175
+ "(document:click)": "onDocumentClick($event)"
1176
+ }
1177
+ })
1178
+ ], SnxDropdownMenuComponent);
1179
+
1180
+ // src/switch.component.ts
1181
+ import { Component as Component17, input as input16, output as output6, signal as signal10 } from "@angular/core";
1182
+ function _ts_decorate18(decorators, target, key, desc) {
1183
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1184
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1185
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1186
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1187
+ }
1188
+ __name(_ts_decorate18, "_ts_decorate");
1189
+ var SnxSwitchComponent = class {
1190
+ static {
1191
+ __name(this, "SnxSwitchComponent");
1192
+ }
1193
+ checked = signal10(false);
1194
+ disabled = input16(false);
1195
+ checkedChange = output6();
1196
+ toggle() {
1197
+ if (this.disabled()) return;
1198
+ this.checked.update((v) => !v);
1199
+ this.checkedChange.emit(this.checked());
1200
+ }
1201
+ };
1202
+ SnxSwitchComponent = _ts_decorate18([
1203
+ Component17({
1204
+ selector: "mcpe-switch",
1205
+ standalone: true,
1206
+ template: `
1207
+ <button
1208
+ type="button"
1209
+ role="switch"
1210
+ [attr.aria-checked]="checked()"
1211
+ [attr.aria-disabled]="disabled()"
1212
+ [disabled]="disabled()"
1213
+ [class]="'mcpe-switch'"
1214
+ (click)="toggle()"
1215
+ (keydown.space)="$event.preventDefault(); toggle()"
1216
+ (keydown.enter)="$event.preventDefault(); toggle()"
1217
+ >
1218
+ <span class="mcpe-switch-thumb"></span>
1219
+ </button>
1220
+ `
1221
+ })
1222
+ ], SnxSwitchComponent);
1223
+
1224
+ // src/progress.component.ts
1225
+ import { Component as Component18, input as input17, computed as computed12 } from "@angular/core";
1226
+ function _ts_decorate19(decorators, target, key, desc) {
1227
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1228
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1229
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1230
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1231
+ }
1232
+ __name(_ts_decorate19, "_ts_decorate");
1233
+ var SnxProgressComponent = class {
1234
+ static {
1235
+ __name(this, "SnxProgressComponent");
1236
+ }
1237
+ value = input17(0);
1238
+ max = input17(100);
1239
+ transform = computed12(() => {
1240
+ const pct = Math.min(Math.max(this.value() / this.max() * 100, 0), 100);
1241
+ return `translateX(-${100 - pct}%)`;
1242
+ });
1243
+ };
1244
+ SnxProgressComponent = _ts_decorate19([
1245
+ Component18({
1246
+ selector: "mcpe-progress",
1247
+ standalone: true,
1248
+ template: `
1249
+ <div class="mcpe-progress" role="progressbar"
1250
+ [attr.aria-valuenow]="value()" [attr.aria-valuemin]="0" [attr.aria-valuemax]="max()">
1251
+ <div class="mcpe-progress-indicator" [style.transform]="transform()"></div>
1252
+ </div>
1253
+ `
1254
+ })
1255
+ ], SnxProgressComponent);
1256
+
1257
+ // src/loader.component.ts
1258
+ import { Component as Component19, input as input18, computed as computed13 } from "@angular/core";
1259
+ function _ts_decorate20(decorators, target, key, desc) {
1260
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1261
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1262
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1263
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1264
+ }
1265
+ __name(_ts_decorate20, "_ts_decorate");
1266
+ var SnxLoaderComponent = class {
1267
+ static {
1268
+ __name(this, "SnxLoaderComponent");
1269
+ }
1270
+ size = input18("md");
1271
+ variant = input18("primary");
1272
+ classes = computed13(() => `mcpe-loader mcpe-loader-${this.size()} mcpe-loader-${this.variant()}`);
1273
+ };
1274
+ SnxLoaderComponent = _ts_decorate20([
1275
+ Component19({
1276
+ selector: "mcpe-loader",
1277
+ standalone: true,
1278
+ template: `<div [class]="classes()" role="status" aria-label="Loading"><span class="sr-only">Loading...</span></div>`
1279
+ })
1280
+ ], SnxLoaderComponent);
1281
+
1282
+ // src/chips.component.ts
1283
+ import { Component as Component20, input as input19, output as output7, computed as computed14 } from "@angular/core";
1284
+ function _ts_decorate21(decorators, target, key, desc) {
1285
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1286
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1287
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1288
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1289
+ }
1290
+ __name(_ts_decorate21, "_ts_decorate");
1291
+ var SnxChipComponent = class {
1292
+ static {
1293
+ __name(this, "SnxChipComponent");
1294
+ }
1295
+ variant = input19("default");
1296
+ removable = input19(false);
1297
+ remove = output7();
1298
+ classes = computed14(() => [
1299
+ "mcpe-chip",
1300
+ `mcpe-chip-${this.variant()}`,
1301
+ this.removable() ? "mcpe-chip-removable" : ""
1302
+ ].filter(Boolean).join(" "));
1303
+ };
1304
+ SnxChipComponent = _ts_decorate21([
1305
+ Component20({
1306
+ selector: "mcpe-chip",
1307
+ standalone: true,
1308
+ template: `
1309
+ <span [class]="classes()">
1310
+ <ng-content />
1311
+ @if (removable()) {
1312
+ <button type="button" class="mcpe-chip-remove" (click)="remove.emit()" aria-label="Remove">
1313
+ <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1314
+ <path d="M18 6 6 18" /><path d="m6 6 12 12" />
1315
+ </svg>
1316
+ </button>
1317
+ }
1318
+ </span>
1319
+ `
1320
+ })
1321
+ ], SnxChipComponent);
1322
+ var SnxChipsComponent = class {
1323
+ static {
1324
+ __name(this, "SnxChipsComponent");
1325
+ }
1326
+ };
1327
+ SnxChipsComponent = _ts_decorate21([
1328
+ Component20({
1329
+ selector: "mcpe-chips",
1330
+ standalone: true,
1331
+ template: `<div class="mcpe-chips"><ng-content /></div>`
1332
+ })
1333
+ ], SnxChipsComponent);
1334
+
1335
+ // src/password-input.component.ts
1336
+ import { Component as Component21, input as input20, signal as signal11 } from "@angular/core";
1337
+ function _ts_decorate22(decorators, target, key, desc) {
1338
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1339
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1340
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1341
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1342
+ }
1343
+ __name(_ts_decorate22, "_ts_decorate");
1344
+ var SnxPasswordInputComponent = class {
1345
+ static {
1346
+ __name(this, "SnxPasswordInputComponent");
1347
+ }
1348
+ placeholder = input20("");
1349
+ disabled = input20(false);
1350
+ showPassword = signal11(false);
1351
+ };
1352
+ SnxPasswordInputComponent = _ts_decorate22([
1353
+ Component21({
1354
+ selector: "mcpe-password-input",
1355
+ standalone: true,
1356
+ template: `
1357
+ <div class="mcpe-password-input-wrapper">
1358
+ <input
1359
+ [type]="showPassword() ? 'text' : 'password'"
1360
+ class="mcpe-password-input"
1361
+ [placeholder]="placeholder()"
1362
+ [disabled]="disabled()"
1363
+ />
1364
+ <button type="button" class="mcpe-password-toggle" (click)="showPassword.update(v => !v)"
1365
+ [attr.aria-label]="showPassword() ? 'Hide password' : 'Show password'" tabindex="-1">
1366
+ @if (showPassword()) {
1367
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1368
+ <path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24" />
1369
+ <line x1="1" y1="1" x2="23" y2="23" />
1370
+ </svg>
1371
+ } @else {
1372
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1373
+ <path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" />
1374
+ <circle cx="12" cy="12" r="3" />
1375
+ </svg>
1376
+ }
1377
+ </button>
1378
+ </div>
1379
+ `
1380
+ })
1381
+ ], SnxPasswordInputComponent);
1382
+
1383
+ // src/counter.component.ts
1384
+ import { Component as Component22, input as input21, output as output8, signal as signal12 } from "@angular/core";
1385
+ function _ts_decorate23(decorators, target, key, desc) {
1386
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1387
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1388
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1389
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1390
+ }
1391
+ __name(_ts_decorate23, "_ts_decorate");
1392
+ var SnxCounterComponent = class {
1393
+ static {
1394
+ __name(this, "SnxCounterComponent");
1395
+ }
1396
+ value = signal12(0);
1397
+ min = input21(0);
1398
+ max = input21(99);
1399
+ step = input21(1);
1400
+ disabled = input21(false);
1401
+ valueChange = output8();
1402
+ decrement() {
1403
+ this.value.update((v) => Math.max(this.min(), v - this.step()));
1404
+ this.valueChange.emit(this.value());
1405
+ }
1406
+ increment() {
1407
+ this.value.update((v) => Math.min(this.max(), v + this.step()));
1408
+ this.valueChange.emit(this.value());
1409
+ }
1410
+ onInput(event) {
1411
+ const num = parseInt(event.target.value, 10);
1412
+ if (!isNaN(num)) {
1413
+ this.value.set(Math.max(this.min(), Math.min(this.max(), num)));
1414
+ this.valueChange.emit(this.value());
1415
+ }
1416
+ }
1417
+ };
1418
+ SnxCounterComponent = _ts_decorate23([
1419
+ Component22({
1420
+ selector: "mcpe-counter",
1421
+ standalone: true,
1422
+ template: `
1423
+ <div class="mcpe-counter">
1424
+ <button type="button" class="mcpe-counter-button" (click)="decrement()"
1425
+ [disabled]="disabled() || value() <= min()" aria-label="Decrease">
1426
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1427
+ <path d="M5 12h14" />
1428
+ </svg>
1429
+ </button>
1430
+ <input type="text" inputmode="numeric" class="mcpe-counter-input"
1431
+ [value]="value()" (change)="onInput($event)" [disabled]="disabled()" aria-label="Count" />
1432
+ <button type="button" class="mcpe-counter-button" (click)="increment()"
1433
+ [disabled]="disabled() || value() >= max()" aria-label="Increase">
1434
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1435
+ <path d="M5 12h14" /><path d="M12 5v14" />
1436
+ </svg>
1437
+ </button>
1438
+ </div>
1439
+ `
1440
+ })
1441
+ ], SnxCounterComponent);
1442
+
1443
+ // src/alert.component.ts
1444
+ import { Component as Component23, input as input22, computed as computed15 } from "@angular/core";
1445
+ function _ts_decorate24(decorators, target, key, desc) {
1446
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1447
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1448
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1449
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1450
+ }
1451
+ __name(_ts_decorate24, "_ts_decorate");
1452
+ var SnxAlertComponent = class {
1453
+ static {
1454
+ __name(this, "SnxAlertComponent");
1455
+ }
1456
+ variant = input22("default");
1457
+ classes = computed15(() => `mcpe-alert mcpe-alert-${this.variant()}`);
1458
+ };
1459
+ SnxAlertComponent = _ts_decorate24([
1460
+ Component23({
1461
+ selector: "mcpe-alert",
1462
+ standalone: true,
1463
+ template: `<div [class]="classes()" role="alert"><ng-content /></div>`
1464
+ })
1465
+ ], SnxAlertComponent);
1466
+ var SnxAlertTitleComponent = class {
1467
+ static {
1468
+ __name(this, "SnxAlertTitleComponent");
1469
+ }
1470
+ };
1471
+ SnxAlertTitleComponent = _ts_decorate24([
1472
+ Component23({
1473
+ selector: "mcpe-alert-title",
1474
+ standalone: true,
1475
+ template: `<h5 class="mcpe-alert-title"><ng-content /></h5>`
1476
+ })
1477
+ ], SnxAlertTitleComponent);
1478
+ var SnxAlertDescriptionComponent = class {
1479
+ static {
1480
+ __name(this, "SnxAlertDescriptionComponent");
1481
+ }
1482
+ };
1483
+ SnxAlertDescriptionComponent = _ts_decorate24([
1484
+ Component23({
1485
+ selector: "mcpe-alert-description",
1486
+ standalone: true,
1487
+ template: `<div class="mcpe-alert-description"><ng-content /></div>`
1488
+ })
1489
+ ], SnxAlertDescriptionComponent);
1490
+
1491
+ // src/prompt-input.component.ts
1492
+ import { Component as Component24, input as input23, output as output9, computed as computed16 } from "@angular/core";
1493
+ function _ts_decorate25(decorators, target, key, desc) {
1494
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1495
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1496
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1497
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1498
+ }
1499
+ __name(_ts_decorate25, "_ts_decorate");
1500
+ var SnxPromptInputComponent = class {
1501
+ static {
1502
+ __name(this, "SnxPromptInputComponent");
1503
+ }
1504
+ class = input23("");
1505
+ classes = computed16(() => [
1506
+ "mcpe-prompt-input",
1507
+ this.class()
1508
+ ].filter(Boolean).join(" "));
1509
+ };
1510
+ SnxPromptInputComponent = _ts_decorate25([
1511
+ Component24({
1512
+ selector: "mcpe-prompt-input",
1513
+ standalone: true,
1514
+ template: `<div [class]="classes()"><ng-content /></div>`
1515
+ })
1516
+ ], SnxPromptInputComponent);
1517
+ var SnxPromptInputTextareaComponent = class {
1518
+ static {
1519
+ __name(this, "SnxPromptInputTextareaComponent");
1520
+ }
1521
+ placeholder = input23("");
1522
+ rows = input23(3);
1523
+ };
1524
+ SnxPromptInputTextareaComponent = _ts_decorate25([
1525
+ Component24({
1526
+ selector: "mcpe-prompt-input-textarea",
1527
+ standalone: true,
1528
+ template: `<textarea class="mcpe-prompt-input-textarea" [placeholder]="placeholder()" [rows]="rows()"></textarea>`
1529
+ })
1530
+ ], SnxPromptInputTextareaComponent);
1531
+ var SnxPromptInputFooterComponent = class {
1532
+ static {
1533
+ __name(this, "SnxPromptInputFooterComponent");
1534
+ }
1535
+ };
1536
+ SnxPromptInputFooterComponent = _ts_decorate25([
1537
+ Component24({
1538
+ selector: "mcpe-prompt-input-footer",
1539
+ standalone: true,
1540
+ template: `<div class="mcpe-prompt-input-footer"><ng-content /></div>`
1541
+ })
1542
+ ], SnxPromptInputFooterComponent);
1543
+ var SnxPromptInputActionsComponent = class {
1544
+ static {
1545
+ __name(this, "SnxPromptInputActionsComponent");
1546
+ }
1547
+ };
1548
+ SnxPromptInputActionsComponent = _ts_decorate25([
1549
+ Component24({
1550
+ selector: "mcpe-prompt-input-actions",
1551
+ standalone: true,
1552
+ template: `<div class="mcpe-prompt-input-actions"><ng-content /></div>`
1553
+ })
1554
+ ], SnxPromptInputActionsComponent);
1555
+ var SnxPromptInputCharCountComponent = class {
1556
+ static {
1557
+ __name(this, "SnxPromptInputCharCountComponent");
1558
+ }
1559
+ count = input23(0);
1560
+ max = input23(void 0);
1561
+ };
1562
+ SnxPromptInputCharCountComponent = _ts_decorate25([
1563
+ Component24({
1564
+ selector: "mcpe-prompt-input-char-count",
1565
+ standalone: true,
1566
+ template: `<span class="mcpe-prompt-input-char-count">{{ count() }}@if (max()) { / {{ max() }} }</span>`
1567
+ })
1568
+ ], SnxPromptInputCharCountComponent);
1569
+ var SnxPromptInputAttachmentsComponent = class {
1570
+ static {
1571
+ __name(this, "SnxPromptInputAttachmentsComponent");
1572
+ }
1573
+ };
1574
+ SnxPromptInputAttachmentsComponent = _ts_decorate25([
1575
+ Component24({
1576
+ selector: "mcpe-prompt-input-attachments",
1577
+ standalone: true,
1578
+ template: `<div class="mcpe-prompt-input-attachments"><ng-content /></div>`
1579
+ })
1580
+ ], SnxPromptInputAttachmentsComponent);
1581
+ var SnxPromptInputAttachmentComponent = class {
1582
+ static {
1583
+ __name(this, "SnxPromptInputAttachmentComponent");
1584
+ }
1585
+ remove = output9();
1586
+ };
1587
+ SnxPromptInputAttachmentComponent = _ts_decorate25([
1588
+ Component24({
1589
+ selector: "mcpe-prompt-input-attachment",
1590
+ standalone: true,
1591
+ template: `
1592
+ <span class="mcpe-prompt-input-attachment">
1593
+ <ng-content />
1594
+ <button type="button" class="mcpe-prompt-input-attachment-remove" (click)="remove.emit()" aria-label="Remove">
1595
+ <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1596
+ <path d="M18 6 6 18" /><path d="m6 6 12 12" />
1597
+ </svg>
1598
+ </button>
1599
+ </span>
1600
+ `
1601
+ })
1602
+ ], SnxPromptInputAttachmentComponent);
1603
+
1604
+ // src/chat-bubble.component.ts
1605
+ import { Component as Component25, input as input24, computed as computed17 } from "@angular/core";
1606
+ function _ts_decorate26(decorators, target, key, desc) {
1607
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1608
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1609
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1610
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1611
+ }
1612
+ __name(_ts_decorate26, "_ts_decorate");
1613
+ var SnxChatBubbleComponent = class {
1614
+ static {
1615
+ __name(this, "SnxChatBubbleComponent");
1616
+ }
1617
+ variant = input24("ai");
1618
+ class = input24("");
1619
+ classes = computed17(() => [
1620
+ "mcpe-chat-bubble",
1621
+ `mcpe-chat-bubble-${this.variant()}`,
1622
+ this.class()
1623
+ ].filter(Boolean).join(" "));
1624
+ };
1625
+ SnxChatBubbleComponent = _ts_decorate26([
1626
+ Component25({
1627
+ selector: "mcpe-chat-bubble",
1628
+ standalone: true,
1629
+ template: `<div [class]="classes()"><ng-content /></div>`
1630
+ })
1631
+ ], SnxChatBubbleComponent);
1632
+ var SnxChatBubbleAvatarComponent = class {
1633
+ static {
1634
+ __name(this, "SnxChatBubbleAvatarComponent");
1635
+ }
1636
+ src = input24.required();
1637
+ alt = input24("");
1638
+ };
1639
+ SnxChatBubbleAvatarComponent = _ts_decorate26([
1640
+ Component25({
1641
+ selector: "mcpe-chat-bubble-avatar",
1642
+ standalone: true,
1643
+ template: `<img class="mcpe-chat-bubble-avatar" [src]="src()" [alt]="alt()" />`
1644
+ })
1645
+ ], SnxChatBubbleAvatarComponent);
1646
+ var SnxChatBubbleContentComponent = class {
1647
+ static {
1648
+ __name(this, "SnxChatBubbleContentComponent");
1649
+ }
1650
+ };
1651
+ SnxChatBubbleContentComponent = _ts_decorate26([
1652
+ Component25({
1653
+ selector: "mcpe-chat-bubble-content",
1654
+ standalone: true,
1655
+ template: `<div class="mcpe-chat-bubble-content"><ng-content /></div>`
1656
+ })
1657
+ ], SnxChatBubbleContentComponent);
1658
+ var SnxChatBubbleTimestampComponent = class {
1659
+ static {
1660
+ __name(this, "SnxChatBubbleTimestampComponent");
1661
+ }
1662
+ };
1663
+ SnxChatBubbleTimestampComponent = _ts_decorate26([
1664
+ Component25({
1665
+ selector: "mcpe-chat-bubble-timestamp",
1666
+ standalone: true,
1667
+ template: `<span class="mcpe-chat-bubble-timestamp"><ng-content /></span>`
1668
+ })
1669
+ ], SnxChatBubbleTimestampComponent);
1670
+ var SnxChatBubbleTypingComponent = class {
1671
+ static {
1672
+ __name(this, "SnxChatBubbleTypingComponent");
1673
+ }
1674
+ };
1675
+ SnxChatBubbleTypingComponent = _ts_decorate26([
1676
+ Component25({
1677
+ selector: "mcpe-chat-bubble-typing",
1678
+ standalone: true,
1679
+ template: `
1680
+ <div class="mcpe-chat-bubble-typing">
1681
+ <span class="mcpe-chat-bubble-typing-dot"></span>
1682
+ <span class="mcpe-chat-bubble-typing-dot"></span>
1683
+ <span class="mcpe-chat-bubble-typing-dot"></span>
1684
+ </div>
1685
+ `
1686
+ })
1687
+ ], SnxChatBubbleTypingComponent);
1688
+
1689
+ // src/ai-badge.component.ts
1690
+ import { Component as Component26, input as input25, computed as computed18 } from "@angular/core";
1691
+ function _ts_decorate27(decorators, target, key, desc) {
1692
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1693
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1694
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1695
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1696
+ }
1697
+ __name(_ts_decorate27, "_ts_decorate");
1698
+ var SnxAiBadgeComponent = class {
1699
+ static {
1700
+ __name(this, "SnxAiBadgeComponent");
1701
+ }
1702
+ variant = input25("default");
1703
+ showIcon = input25(true);
1704
+ class = input25("");
1705
+ classes = computed18(() => [
1706
+ "mcpe-ai-badge",
1707
+ `mcpe-ai-badge-${this.variant()}`,
1708
+ this.class()
1709
+ ].filter(Boolean).join(" "));
1710
+ };
1711
+ SnxAiBadgeComponent = _ts_decorate27([
1712
+ Component26({
1713
+ selector: "mcpe-ai-badge",
1714
+ standalone: true,
1715
+ template: `
1716
+ <span [class]="classes()">
1717
+ @if (showIcon()) {
1718
+ <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1719
+ <path d="M12 3l1.912 5.813a2 2 0 0 0 1.275 1.275L21 12l-5.813 1.912a2 2 0 0 0-1.275 1.275L12 21l-1.912-5.813a2 2 0 0 1-1.275-1.275L3 12l5.813-1.912a2 2 0 0 1 1.275-1.275L12 3z" />
1720
+ </svg>
1721
+ }
1722
+ <ng-content />
1723
+ </span>
1724
+ `
1725
+ })
1726
+ ], SnxAiBadgeComponent);
1727
+
1728
+ // src/suggestion-chips.component.ts
1729
+ import { Component as Component27, input as input26, computed as computed19 } from "@angular/core";
1730
+ function _ts_decorate28(decorators, target, key, desc) {
1731
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1732
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1733
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1734
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1735
+ }
1736
+ __name(_ts_decorate28, "_ts_decorate");
1737
+ var SnxSuggestionChipsComponent = class {
1738
+ static {
1739
+ __name(this, "SnxSuggestionChipsComponent");
1740
+ }
1741
+ };
1742
+ SnxSuggestionChipsComponent = _ts_decorate28([
1743
+ Component27({
1744
+ selector: "mcpe-suggestion-chips",
1745
+ standalone: true,
1746
+ template: `<div class="mcpe-suggestion-chips"><ng-content /></div>`
1747
+ })
1748
+ ], SnxSuggestionChipsComponent);
1749
+ var SnxSuggestionChipComponent = class {
1750
+ static {
1751
+ __name(this, "SnxSuggestionChipComponent");
1752
+ }
1753
+ variant = input26("default");
1754
+ class = input26("");
1755
+ classes = computed19(() => [
1756
+ "mcpe-suggestion-chip",
1757
+ `mcpe-suggestion-chip-${this.variant()}`,
1758
+ this.class()
1759
+ ].filter(Boolean).join(" "));
1760
+ };
1761
+ SnxSuggestionChipComponent = _ts_decorate28([
1762
+ Component27({
1763
+ selector: "mcpe-suggestion-chip",
1764
+ standalone: true,
1765
+ template: `<button [class]="classes()" type="button"><ng-content /></button>`
1766
+ })
1767
+ ], SnxSuggestionChipComponent);
1768
+
1769
+ // src/source-card.component.ts
1770
+ import { Component as Component28, input as input27 } from "@angular/core";
1771
+ function _ts_decorate29(decorators, target, key, desc) {
1772
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1773
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1774
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1775
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1776
+ }
1777
+ __name(_ts_decorate29, "_ts_decorate");
1778
+ var SnxSourceCardsComponent = class {
1779
+ static {
1780
+ __name(this, "SnxSourceCardsComponent");
1781
+ }
1782
+ };
1783
+ SnxSourceCardsComponent = _ts_decorate29([
1784
+ Component28({
1785
+ selector: "mcpe-source-cards",
1786
+ standalone: true,
1787
+ template: `<div class="mcpe-source-cards"><ng-content /></div>`
1788
+ })
1789
+ ], SnxSourceCardsComponent);
1790
+ var SnxSourceCardComponent = class {
1791
+ static {
1792
+ __name(this, "SnxSourceCardComponent");
1793
+ }
1794
+ href = input27.required();
1795
+ favicon = input27("");
1796
+ title = input27("");
1797
+ domain = input27("");
1798
+ index = input27(void 0);
1799
+ };
1800
+ SnxSourceCardComponent = _ts_decorate29([
1801
+ Component28({
1802
+ selector: "mcpe-source-card",
1803
+ standalone: true,
1804
+ template: `
1805
+ <a [href]="href()" class="mcpe-source-card" target="_blank" rel="noopener noreferrer">
1806
+ @if (favicon()) {
1807
+ <img class="mcpe-source-card-favicon" [src]="favicon()" [alt]="domain()" />
1808
+ }
1809
+ <div class="mcpe-source-card-body">
1810
+ <p class="mcpe-source-card-title">{{ title() }}</p>
1811
+ <p class="mcpe-source-card-domain">{{ domain() }}</p>
1812
+ </div>
1813
+ @if (index()) {
1814
+ <span class="mcpe-source-card-index">{{ index() }}</span>
1815
+ }
1816
+ </a>
1817
+ `
1818
+ })
1819
+ ], SnxSourceCardComponent);
1820
+
1821
+ // src/streaming-text.component.ts
1822
+ import { Component as Component29 } from "@angular/core";
1823
+ function _ts_decorate30(decorators, target, key, desc) {
1824
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1825
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1826
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1827
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1828
+ }
1829
+ __name(_ts_decorate30, "_ts_decorate");
1830
+ var SnxStreamingTextComponent = class {
1831
+ static {
1832
+ __name(this, "SnxStreamingTextComponent");
1833
+ }
1834
+ };
1835
+ SnxStreamingTextComponent = _ts_decorate30([
1836
+ Component29({
1837
+ selector: "mcpe-streaming-text",
1838
+ standalone: true,
1839
+ template: `<div class="mcpe-streaming-text-cursor"><ng-content /></div>`
1840
+ })
1841
+ ], SnxStreamingTextComponent);
1842
+ var SnxStreamingTextFadeInComponent = class {
1843
+ static {
1844
+ __name(this, "SnxStreamingTextFadeInComponent");
1845
+ }
1846
+ };
1847
+ SnxStreamingTextFadeInComponent = _ts_decorate30([
1848
+ Component29({
1849
+ selector: "mcpe-streaming-text-fade-in",
1850
+ standalone: true,
1851
+ template: `<span class="mcpe-streaming-text-fade-in"><ng-content /></span>`
1852
+ })
1853
+ ], SnxStreamingTextFadeInComponent);
1854
+ var SnxStreamingTextWordComponent = class {
1855
+ static {
1856
+ __name(this, "SnxStreamingTextWordComponent");
1857
+ }
1858
+ };
1859
+ SnxStreamingTextWordComponent = _ts_decorate30([
1860
+ Component29({
1861
+ selector: "mcpe-streaming-text-word",
1862
+ standalone: true,
1863
+ template: `<span class="mcpe-streaming-text-word"><ng-content /></span>`
1864
+ })
1865
+ ], SnxStreamingTextWordComponent);
1866
+ var SnxStreamingTextLineComponent = class {
1867
+ static {
1868
+ __name(this, "SnxStreamingTextLineComponent");
1869
+ }
1870
+ };
1871
+ SnxStreamingTextLineComponent = _ts_decorate30([
1872
+ Component29({
1873
+ selector: "mcpe-streaming-text-line",
1874
+ standalone: true,
1875
+ template: `<div class="mcpe-streaming-text-line"><ng-content /></div>`
1876
+ })
1877
+ ], SnxStreamingTextLineComponent);
1878
+ var SnxStreamingTextSkeletonComponent = class {
1879
+ static {
1880
+ __name(this, "SnxStreamingTextSkeletonComponent");
1881
+ }
1882
+ };
1883
+ SnxStreamingTextSkeletonComponent = _ts_decorate30([
1884
+ Component29({
1885
+ selector: "mcpe-streaming-text-skeleton",
1886
+ standalone: true,
1887
+ template: `<div class="mcpe-streaming-text-skeleton"><ng-content /></div>`
1888
+ })
1889
+ ], SnxStreamingTextSkeletonComponent);
1890
+ var SnxStreamingTextSkeletonLineComponent = class {
1891
+ static {
1892
+ __name(this, "SnxStreamingTextSkeletonLineComponent");
1893
+ }
1894
+ };
1895
+ SnxStreamingTextSkeletonLineComponent = _ts_decorate30([
1896
+ Component29({
1897
+ selector: "mcpe-streaming-text-skeleton-line",
1898
+ standalone: true,
1899
+ template: `<div class="mcpe-streaming-text-skeleton-line"></div>`
1900
+ })
1901
+ ], SnxStreamingTextSkeletonLineComponent);
1902
+
1903
+ // src/feedback.component.ts
1904
+ import { Component as Component30, input as input28, computed as computed20 } from "@angular/core";
1905
+ function _ts_decorate31(decorators, target, key, desc) {
1906
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1907
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1908
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1909
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1910
+ }
1911
+ __name(_ts_decorate31, "_ts_decorate");
1912
+ var SnxFeedbackComponent = class {
1913
+ static {
1914
+ __name(this, "SnxFeedbackComponent");
1915
+ }
1916
+ };
1917
+ SnxFeedbackComponent = _ts_decorate31([
1918
+ Component30({
1919
+ selector: "mcpe-feedback",
1920
+ standalone: true,
1921
+ template: `<div class="mcpe-feedback"><ng-content /></div>`
1922
+ })
1923
+ ], SnxFeedbackComponent);
1924
+ var SnxFeedbackButtonComponent = class {
1925
+ static {
1926
+ __name(this, "SnxFeedbackButtonComponent");
1927
+ }
1928
+ feedbackType = input28.required({
1929
+ alias: "type"
1930
+ });
1931
+ selected = input28(false);
1932
+ class = input28("");
1933
+ classes = computed20(() => [
1934
+ "mcpe-feedback-btn",
1935
+ `mcpe-feedback-btn-${this.feedbackType()}`,
1936
+ this.selected() ? "mcpe-feedback-btn-selected" : "",
1937
+ this.class()
1938
+ ].filter(Boolean).join(" "));
1939
+ };
1940
+ SnxFeedbackButtonComponent = _ts_decorate31([
1941
+ Component30({
1942
+ selector: "mcpe-feedback-btn",
1943
+ standalone: true,
1944
+ template: `
1945
+ <button [class]="classes()" type="button">
1946
+ @if (feedbackType() === 'up') {
1947
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1948
+ <path d="M7 10v12"/><path d="M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z"/>
1949
+ </svg>
1950
+ } @else {
1951
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
1952
+ <path d="M17 14V2"/><path d="M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z"/>
1953
+ </svg>
1954
+ }
1955
+ </button>
1956
+ `
1957
+ })
1958
+ ], SnxFeedbackButtonComponent);
1959
+ var SnxFeedbackSeparatorComponent = class {
1960
+ static {
1961
+ __name(this, "SnxFeedbackSeparatorComponent");
1962
+ }
1963
+ };
1964
+ SnxFeedbackSeparatorComponent = _ts_decorate31([
1965
+ Component30({
1966
+ selector: "mcpe-feedback-separator",
1967
+ standalone: true,
1968
+ template: `<span class="mcpe-feedback-separator"></span>`
1969
+ })
1970
+ ], SnxFeedbackSeparatorComponent);
1971
+ var SnxFeedbackFormComponent = class {
1972
+ static {
1973
+ __name(this, "SnxFeedbackFormComponent");
1974
+ }
1975
+ };
1976
+ SnxFeedbackFormComponent = _ts_decorate31([
1977
+ Component30({
1978
+ selector: "mcpe-feedback-form",
1979
+ standalone: true,
1980
+ template: `<div class="mcpe-feedback-form"><ng-content /></div>`
1981
+ })
1982
+ ], SnxFeedbackFormComponent);
1983
+ var SnxFeedbackInputComponent = class {
1984
+ static {
1985
+ __name(this, "SnxFeedbackInputComponent");
1986
+ }
1987
+ placeholder = input28("Add a comment...");
1988
+ };
1989
+ SnxFeedbackInputComponent = _ts_decorate31([
1990
+ Component30({
1991
+ selector: "mcpe-feedback-input",
1992
+ standalone: true,
1993
+ template: `<input class="mcpe-feedback-input" [placeholder]="placeholder()" />`
1994
+ })
1995
+ ], SnxFeedbackInputComponent);
1996
+ var SnxFeedbackSubmitComponent = class {
1997
+ static {
1998
+ __name(this, "SnxFeedbackSubmitComponent");
1999
+ }
2000
+ };
2001
+ SnxFeedbackSubmitComponent = _ts_decorate31([
2002
+ Component30({
2003
+ selector: "mcpe-feedback-submit",
2004
+ standalone: true,
2005
+ template: `<button class="mcpe-feedback-submit" type="button"><ng-content /></button>`
2006
+ })
2007
+ ], SnxFeedbackSubmitComponent);
2008
+
2009
+ // src/mcp/mcp-server-status.component.ts
2010
+ import { Component as Component31, input as input29, computed as computed21 } from "@angular/core";
2011
+ import { cn } from "@mcp-elements/core";
2012
+ function _ts_decorate32(decorators, target, key, desc) {
2013
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2014
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2015
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2016
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2017
+ }
2018
+ __name(_ts_decorate32, "_ts_decorate");
2019
+ var STATUS_LABELS = {
2020
+ connected: "Connected",
2021
+ connecting: "Connecting",
2022
+ disconnected: "Disconnected",
2023
+ error: "Error"
2024
+ };
2025
+ var McpeMcpServerStatusComponent = class {
2026
+ static {
2027
+ __name(this, "McpeMcpServerStatusComponent");
2028
+ }
2029
+ status = input29.required();
2030
+ serverName = input29();
2031
+ class = input29("");
2032
+ classes = computed21(() => cn("mcpe-mcp-server-status", `mcpe-mcp-server-status-${this.status()}`, this.class()));
2033
+ label = computed21(() => {
2034
+ const s = this.serverName();
2035
+ const statusLabel = STATUS_LABELS[this.status()];
2036
+ return s ? `${s} \xB7 ${statusLabel}` : statusLabel;
2037
+ });
2038
+ ariaLabel = computed21(() => {
2039
+ const s = this.serverName();
2040
+ const statusLabel = STATUS_LABELS[this.status()];
2041
+ return s ? `${s}: ${statusLabel}` : statusLabel;
2042
+ });
2043
+ };
2044
+ McpeMcpServerStatusComponent = _ts_decorate32([
2045
+ Component31({
2046
+ selector: "mcpe-mcp-server-status",
2047
+ standalone: true,
2048
+ template: `
2049
+ <span
2050
+ [class]="classes()"
2051
+ role="status"
2052
+ aria-live="polite"
2053
+ [attr.aria-label]="ariaLabel()"
2054
+ >
2055
+ <span class="mcpe-mcp-server-status-dot" aria-hidden="true"></span>
2056
+ {{ label() }}
2057
+ </span>
2058
+ `
2059
+ })
2060
+ ], McpeMcpServerStatusComponent);
2061
+
2062
+ // src/mcp/mcp-tool-call.component.ts
2063
+ import { Component as Component32, input as input30, output as output10, signal as signal13, effect as effect2, computed as computed22 } from "@angular/core";
2064
+ import { CommonModule } from "@angular/common";
2065
+ import { cn as cn2 } from "@mcp-elements/core";
2066
+ function _ts_decorate33(decorators, target, key, desc) {
2067
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2068
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2069
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2070
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2071
+ }
2072
+ __name(_ts_decorate33, "_ts_decorate");
2073
+ function _ts_metadata4(k, v) {
2074
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2075
+ }
2076
+ __name(_ts_metadata4, "_ts_metadata");
2077
+ var STATUS_LABELS2 = {
2078
+ idle: "idle",
2079
+ pending: "pending",
2080
+ running: "running",
2081
+ done: "done",
2082
+ error: "error",
2083
+ cancelled: "cancelled"
2084
+ };
2085
+ var McpeMcpToolCallComponent = class {
2086
+ static {
2087
+ __name(this, "McpeMcpToolCallComponent");
2088
+ }
2089
+ state = input30.required();
2090
+ toolName = input30();
2091
+ args = input30();
2092
+ onRetry = output10();
2093
+ class = input30("");
2094
+ statusLabels = STATUS_LABELS2;
2095
+ snap = signal13({
2096
+ status: "idle"
2097
+ });
2098
+ _unsub;
2099
+ constructor() {
2100
+ effect2(() => {
2101
+ this._unsub?.();
2102
+ const s = this.state();
2103
+ this.snap.set({
2104
+ status: s.status,
2105
+ tool: s.tool,
2106
+ args: s.args,
2107
+ result: s.result,
2108
+ error: s.error,
2109
+ startedAt: s.startedAt,
2110
+ endedAt: s.endedAt
2111
+ });
2112
+ this._unsub = s.subscribe((snapshot) => this.snap.set({
2113
+ ...snapshot
2114
+ }));
2115
+ });
2116
+ }
2117
+ ngOnDestroy() {
2118
+ this._unsub?.();
2119
+ }
2120
+ classes = computed22(() => cn2("mcpe-mcp-tool-call", this.class()));
2121
+ badgeClass = computed22(() => cn2("mcpe-mcp-tool-call-badge", `mcpe-mcp-tool-call-badge-${this.snap().status}`));
2122
+ displayName = computed22(() => this.snap().tool ?? this.toolName() ?? "unknown");
2123
+ displayArgs = computed22(() => this.snap().args ?? this.args());
2124
+ textBlocks = computed22(() => this.snap().result?.content.filter((c) => c.type === "text").map((c) => c.text) ?? []);
2125
+ };
2126
+ McpeMcpToolCallComponent = _ts_decorate33([
2127
+ Component32({
2128
+ selector: "mcpe-mcp-tool-call",
2129
+ standalone: true,
2130
+ imports: [
2131
+ CommonModule
2132
+ ],
2133
+ template: `
2134
+ <div [class]="classes()">
2135
+ <!-- Header -->
2136
+ <div class="mcpe-mcp-tool-call-header">
2137
+ <div class="mcpe-mcp-tool-call-name">
2138
+ <span class="mcpe-mcp-tool-call-icon" aria-hidden="true">fn</span>
2139
+ <span class="mcpe-mcp-tool-call-title">{{ displayName() }}</span>
2140
+ </div>
2141
+ <span [class]="badgeClass()">
2142
+ @if (snap().status === 'running') {
2143
+ <svg class="animate-spin h-3 w-3" fill="none" viewBox="0 0 24 24" aria-hidden="true">
2144
+ <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"/>
2145
+ <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"/>
2146
+ </svg>
2147
+ }
2148
+ {{ statusLabels[snap().status] }}
2149
+ </span>
2150
+ </div>
2151
+ <!-- Args -->
2152
+ @if (displayArgs()) {
2153
+ <pre class="mcpe-mcp-tool-call-args">{{ displayArgs() | json }}</pre>
2154
+ }
2155
+ <!-- Progress bar -->
2156
+ @if (snap().status === 'running') {
2157
+ <div class="mcpe-mcp-tool-call-progress" role="progressbar" aria-label="Tool running">
2158
+ <div class="mcpe-mcp-tool-call-progress-bar" style="width: 60%"></div>
2159
+ </div>
2160
+ }
2161
+ <!-- Result -->
2162
+ @if (snap().status === 'done' && snap().result) {
2163
+ <div class="mcpe-mcp-tool-call-result mcpe-mcp-tool-call-result-done">
2164
+ @for (block of textBlocks(); track $index) {
2165
+ <p class="whitespace-pre-wrap text-sm">{{ block }}</p>
2166
+ }
2167
+ </div>
2168
+ }
2169
+ <!-- Error -->
2170
+ @if (snap().status === 'error' && snap().error) {
2171
+ <div class="mcpe-mcp-tool-call-result mcpe-mcp-tool-call-result-error">
2172
+ <p class="text-sm">{{ snap().error?.message }}</p>
2173
+ <button (click)="onRetry.emit()" class="text-xs underline underline-offset-2">Retry</button>
2174
+ </div>
2175
+ }
2176
+ </div>
2177
+ `
2178
+ }),
2179
+ _ts_metadata4("design:type", Function),
2180
+ _ts_metadata4("design:paramtypes", [])
2181
+ ], McpeMcpToolCallComponent);
2182
+
2183
+ // src/mcp/mcp-tool-form.component.ts
2184
+ import { Component as Component33, input as input31, output as output11, signal as signal14, computed as computed23 } from "@angular/core";
2185
+ import { CommonModule as CommonModule2 } from "@angular/common";
2186
+ import { cn as cn3, schemaToFields } from "@mcp-elements/core";
2187
+ function _ts_decorate34(decorators, target, key, desc) {
2188
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2189
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2190
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2191
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2192
+ }
2193
+ __name(_ts_decorate34, "_ts_decorate");
2194
+ var McpeMcpToolFormComponent = class {
2195
+ static {
2196
+ __name(this, "McpeMcpToolFormComponent");
2197
+ }
2198
+ schema = input31.required();
2199
+ loading = input31(false);
2200
+ submitLabel = input31("Run");
2201
+ class = input31("");
2202
+ onSubmit = output11();
2203
+ fields = computed23(() => schemaToFields(this.schema()));
2204
+ values = signal14({});
2205
+ ngOnInit() {
2206
+ const defaults = {};
2207
+ for (const f of this.fields()) {
2208
+ if (f.defaultValue !== void 0) defaults[f.key] = f.defaultValue;
2209
+ }
2210
+ this.values.set(defaults);
2211
+ }
2212
+ classes = computed23(() => cn3("mcpe-mcp-tool-form", this.class()));
2213
+ setValue(key, value) {
2214
+ this.values.update((v) => ({
2215
+ ...v,
2216
+ [key]: value
2217
+ }));
2218
+ }
2219
+ onInputChange(key, event) {
2220
+ this.setValue(key, event.target.value);
2221
+ }
2222
+ onNumberChange(key, event) {
2223
+ this.setValue(key, event.target.valueAsNumber);
2224
+ }
2225
+ onCheckChange(key, event) {
2226
+ this.setValue(key, event.target.checked);
2227
+ }
2228
+ getStr(key) {
2229
+ const v = this.values()[key];
2230
+ return v == null ? "" : String(v);
2231
+ }
2232
+ getBool(key) {
2233
+ return Boolean(this.values()[key]);
2234
+ }
2235
+ labelClass(field) {
2236
+ return cn3("mcpe-mcp-tool-form-label", field.required ? "mcpe-mcp-tool-form-label-required" : "");
2237
+ }
2238
+ inputType(field) {
2239
+ switch (field.kind) {
2240
+ case "email":
2241
+ return "email";
2242
+ case "url":
2243
+ return "url";
2244
+ case "date":
2245
+ return "date";
2246
+ default:
2247
+ return "text";
2248
+ }
2249
+ }
2250
+ handleSubmit() {
2251
+ this.onSubmit.emit(this.values());
2252
+ }
2253
+ };
2254
+ McpeMcpToolFormComponent = _ts_decorate34([
2255
+ Component33({
2256
+ selector: "mcpe-mcp-tool-form",
2257
+ standalone: true,
2258
+ imports: [
2259
+ CommonModule2
2260
+ ],
2261
+ template: `
2262
+ <form [class]="classes()" (ngSubmit)="handleSubmit()">
2263
+ @if (fields().length === 0) {
2264
+ <p class="text-sm text-muted-foreground">This tool takes no inputs.</p>
2265
+ }
2266
+ @for (field of fields(); track field.key) {
2267
+ <div class="mcpe-mcp-tool-form-field">
2268
+ <label
2269
+ [for]="field.key"
2270
+ [class]="labelClass(field)"
2271
+ >{{ field.label }}</label>
2272
+ @switch (field.kind) {
2273
+ @case ('switch') {
2274
+ <input type="checkbox" [id]="field.key" class="mcpe-switch"
2275
+ [checked]="getBool(field.key)"
2276
+ (change)="onCheckChange(field.key, $event)" />
2277
+ }
2278
+ @case ('select') {
2279
+ <select [id]="field.key" class="mcpe-select"
2280
+ [value]="getStr(field.key)"
2281
+ (change)="onInputChange(field.key, $event)">
2282
+ <option value="">Select\u2026</option>
2283
+ @for (opt of field.options ?? []; track opt.value) {
2284
+ <option [value]="opt.value">{{ opt.label }}</option>
2285
+ }
2286
+ </select>
2287
+ }
2288
+ @case ('textarea') {
2289
+ <textarea [id]="field.key" class="mcpe-textarea" rows="4"
2290
+ [value]="getStr(field.key)"
2291
+ (input)="onInputChange(field.key, $event)"></textarea>
2292
+ }
2293
+ @case ('number') {
2294
+ <input type="number" [id]="field.key" class="mcpe-input"
2295
+ [value]="getStr(field.key)"
2296
+ (input)="onNumberChange(field.key, $event)" />
2297
+ }
2298
+ @default {
2299
+ <input [type]="inputType(field)" [id]="field.key" class="mcpe-input"
2300
+ [value]="getStr(field.key)"
2301
+ (input)="onInputChange(field.key, $event)" />
2302
+ }
2303
+ }
2304
+ @if (field.help) {
2305
+ <p class="mcpe-mcp-tool-form-help">{{ field.help }}</p>
2306
+ }
2307
+ </div>
2308
+ }
2309
+ <div class="mcpe-mcp-tool-form-submit">
2310
+ <button type="submit" class="mcpe-btn mcpe-btn-primary mcpe-btn-sm" [disabled]="loading()">
2311
+ {{ loading() ? 'Running\u2026' : submitLabel() }}
2312
+ </button>
2313
+ </div>
2314
+ </form>
2315
+ `
2316
+ })
2317
+ ], McpeMcpToolFormComponent);
2318
+
2319
+ // src/mcp/mcp-consent-dialog.component.ts
2320
+ import { Component as Component34, input as input32, output as output12, computed as computed24 } from "@angular/core";
2321
+ import { CommonModule as CommonModule3 } from "@angular/common";
2322
+ import { parseScopes } from "@mcp-elements/core";
2323
+ function _ts_decorate35(decorators, target, key, desc) {
2324
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2325
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2326
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2327
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2328
+ }
2329
+ __name(_ts_decorate35, "_ts_decorate");
2330
+ var McpeMcpConsentDialogComponent = class {
2331
+ static {
2332
+ __name(this, "McpeMcpConsentDialogComponent");
2333
+ }
2334
+ open = input32.required();
2335
+ serverName = input32.required();
2336
+ serverIcon = input32();
2337
+ scopes = input32([]);
2338
+ onApprove = output12();
2339
+ onDeny = output12();
2340
+ parsedScopes = computed24(() => parseScopes(this.scopes().join(" ")));
2341
+ approve() {
2342
+ this.onApprove.emit();
2343
+ }
2344
+ deny() {
2345
+ this.onDeny.emit();
2346
+ }
2347
+ };
2348
+ McpeMcpConsentDialogComponent = _ts_decorate35([
2349
+ Component34({
2350
+ selector: "mcpe-mcp-consent-dialog",
2351
+ standalone: true,
2352
+ imports: [
2353
+ CommonModule3
2354
+ ],
2355
+ template: `
2356
+ @if (open()) {
2357
+ <div class="mcpe-dialog-overlay" (click)="deny()">
2358
+ <div class="mcpe-dialog-content" role="dialog" aria-modal="true" [attr.aria-label]="'Allow ' + serverName() + '?'" (click)="$event.stopPropagation()">
2359
+ <div class="mcpe-mcp-consent-dialog">
2360
+ <div class="mcpe-dialog-header">
2361
+ <h2 class="mcpe-dialog-title">Permission Request</h2>
2362
+ <p class="mcpe-dialog-description">Review and approve the permissions this server is requesting.</p>
2363
+ </div>
2364
+ <!-- Server info -->
2365
+ <div class="mcpe-mcp-consent-dialog-server">
2366
+ <div class="mcpe-mcp-consent-dialog-icon" aria-hidden="true">
2367
+ @if (serverIcon()) {
2368
+ <img [src]="serverIcon()" alt="" />
2369
+ } @else {
2370
+ {{ serverName()[0]?.toUpperCase() ?? '?' }}
2371
+ }
2372
+ </div>
2373
+ <div class="mcpe-mcp-consent-dialog-server-text">
2374
+ <p class="mcpe-mcp-consent-dialog-server-name">{{ serverName() }}</p>
2375
+ <p class="mcpe-mcp-consent-dialog-server-meta">is requesting access to</p>
2376
+ </div>
2377
+ </div>
2378
+ <!-- Scopes -->
2379
+ <div class="mcpe-mcp-consent-dialog-scopes" role="list" aria-label="Requested permissions">
2380
+ @for (s of parsedScopes(); track s.raw) {
2381
+ <div class="mcpe-mcp-consent-dialog-scope-item" role="listitem">
2382
+ <span class="mcpe-mcp-consent-dialog-scope-resource">{{ s.resource }}</span>
2383
+ <div class="mcpe-mcp-consent-dialog-scope-perms">
2384
+ @for (p of s.permissions; track p) {
2385
+ <span class="mcpe-mcp-consent-dialog-scope-perm" [attr.data-perm]="p.toLowerCase()">{{ p }}</span>
2386
+ }
2387
+ </div>
2388
+ </div>
2389
+ }
2390
+ </div>
2391
+ <!-- Actions -->
2392
+ <div class="mcpe-mcp-consent-dialog-actions">
2393
+ <button class="mcpe-btn mcpe-btn-outline" (click)="deny()">Deny</button>
2394
+ <button class="mcpe-btn mcpe-btn-primary" (click)="approve()">Allow</button>
2395
+ </div>
2396
+ </div>
2397
+ </div>
2398
+ </div>
2399
+ }
2400
+ `
2401
+ })
2402
+ ], McpeMcpConsentDialogComponent);
2403
+
2404
+ // src/mcp/mcp-scope-inspector.component.ts
2405
+ import { Component as Component35, input as input33, signal as signal15, computed as computed25 } from "@angular/core";
2406
+ import { CommonModule as CommonModule4 } from "@angular/common";
2407
+ import { cn as cn4, parseScopes as parseScopes2 } from "@mcp-elements/core";
2408
+ function _ts_decorate36(decorators, target, key, desc) {
2409
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2410
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2411
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2412
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2413
+ }
2414
+ __name(_ts_decorate36, "_ts_decorate");
2415
+ var McpeMcpScopeInspectorComponent = class {
2416
+ static {
2417
+ __name(this, "McpeMcpScopeInspectorComponent");
2418
+ }
2419
+ scopes = input33("");
2420
+ descriptions = input33({});
2421
+ class = input33("");
2422
+ openKeys = signal15(/* @__PURE__ */ new Set());
2423
+ parsedScopes = computed25(() => {
2424
+ const s = this.scopes();
2425
+ return typeof s === "string" ? parseScopes2(s) : s;
2426
+ });
2427
+ classes = computed25(() => cn4("mcpe-mcp-scope-inspector", this.class()));
2428
+ toggle(key) {
2429
+ this.openKeys.update((prev) => {
2430
+ const next = new Set(prev);
2431
+ if (next.has(key)) next.delete(key);
2432
+ else next.add(key);
2433
+ return next;
2434
+ });
2435
+ }
2436
+ isOpen(key) {
2437
+ return this.openKeys().has(key);
2438
+ }
2439
+ chevronClass(key) {
2440
+ return cn4("mcpe-mcp-scope-inspector-chevron", this.isOpen(key) ? "mcpe-mcp-scope-inspector-chevron-open" : "");
2441
+ }
2442
+ getDescription(s) {
2443
+ const d = this.descriptions();
2444
+ return d[s.raw] ?? d[s.resource] ?? s.description;
2445
+ }
2446
+ };
2447
+ McpeMcpScopeInspectorComponent = _ts_decorate36([
2448
+ Component35({
2449
+ selector: "mcpe-mcp-scope-inspector",
2450
+ standalone: true,
2451
+ imports: [
2452
+ CommonModule4
2453
+ ],
2454
+ template: `
2455
+ <div [class]="classes()" role="list">
2456
+ @for (s of parsedScopes(); track s.raw) {
2457
+ <div class="mcpe-mcp-scope-inspector-item" role="listitem">
2458
+ <button
2459
+ type="button"
2460
+ class="mcpe-mcp-scope-inspector-trigger"
2461
+ [attr.aria-expanded]="isOpen(s.raw)"
2462
+ (click)="toggle(s.raw)"
2463
+ >
2464
+ <div class="flex items-center gap-3">
2465
+ <span class="mcpe-mcp-scope-inspector-resource">{{ s.resource }}</span>
2466
+ <div class="mcpe-mcp-scope-inspector-perms">
2467
+ @for (p of s.permissions; track p) {
2468
+ <span class="mcpe-mcp-scope-inspector-perm" [attr.data-perm]="p.toLowerCase()">{{ p }}</span>
2469
+ }
2470
+ </div>
2471
+ </div>
2472
+ <svg
2473
+ [class]="chevronClass(s.raw)"
2474
+ xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"
2475
+ fill="none" stroke="currentColor" stroke-width="2"
2476
+ stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
2477
+ <path d="m6 9 6 6 6-6"/>
2478
+ </svg>
2479
+ </button>
2480
+ @if (isOpen(s.raw) && getDescription(s)) {
2481
+ <div role="region" class="mcpe-mcp-scope-inspector-body">
2482
+ {{ getDescription(s) }}
2483
+ </div>
2484
+ }
2485
+ </div>
2486
+ }
2487
+ </div>
2488
+ `
2489
+ })
2490
+ ], McpeMcpScopeInspectorComponent);
2491
+
2492
+ // src/mcp/mcp-resource-browser.component.ts
2493
+ import { Component as Component36, input as input34, output as output13, computed as computed26 } from "@angular/core";
2494
+ import { CommonModule as CommonModule5 } from "@angular/common";
2495
+ import { cn as cn5 } from "@mcp-elements/core";
2496
+ function _ts_decorate37(decorators, target, key, desc) {
2497
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2498
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2499
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2500
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2501
+ }
2502
+ __name(_ts_decorate37, "_ts_decorate");
2503
+ function mimeTypeLabel(mimeType) {
2504
+ if (!mimeType) return "res";
2505
+ if (mimeType.includes("json")) return "json";
2506
+ if (mimeType.includes("text")) return "txt";
2507
+ if (mimeType.includes("image")) return "img";
2508
+ if (mimeType.includes("pdf")) return "pdf";
2509
+ return mimeType.split("/")[1]?.slice(0, 4) ?? "res";
2510
+ }
2511
+ __name(mimeTypeLabel, "mimeTypeLabel");
2512
+ var McpeMcpResourceBrowserComponent = class {
2513
+ static {
2514
+ __name(this, "McpeMcpResourceBrowserComponent");
2515
+ }
2516
+ resources = input34([]);
2517
+ selectedUri = input34();
2518
+ loading = input34(false);
2519
+ class = input34("");
2520
+ onSelect = output13();
2521
+ skeletonItems = [
2522
+ 1,
2523
+ 2,
2524
+ 3,
2525
+ 4
2526
+ ];
2527
+ classes = computed26(() => cn5("mcpe-mcp-resource-browser", this.class()));
2528
+ itemClass(uri) {
2529
+ return cn5("mcpe-mcp-resource-browser-item w-full text-left", this.selectedUri() === uri ? "mcpe-mcp-resource-browser-item-selected" : "");
2530
+ }
2531
+ mimeLabel(mimeType) {
2532
+ return mimeTypeLabel(mimeType);
2533
+ }
2534
+ select(r) {
2535
+ this.onSelect.emit(r);
2536
+ }
2537
+ };
2538
+ McpeMcpResourceBrowserComponent = _ts_decorate37([
2539
+ Component36({
2540
+ selector: "mcpe-mcp-resource-browser",
2541
+ standalone: true,
2542
+ imports: [
2543
+ CommonModule5
2544
+ ],
2545
+ template: `
2546
+ @if (loading()) {
2547
+ <div [class]="classes()">
2548
+ @for (n of skeletonItems; track n) {
2549
+ <div class="flex items-center gap-3 px-3 py-2.5">
2550
+ <div class="h-8 w-8 rounded-md animate-pulse bg-muted"></div>
2551
+ <div class="h-4 flex-1 rounded animate-pulse bg-muted"></div>
2552
+ </div>
2553
+ }
2554
+ </div>
2555
+ } @else if (resources().length === 0) {
2556
+ <div [class]="classes()">
2557
+ <p class="mcpe-mcp-resource-browser-empty">No resources available</p>
2558
+ </div>
2559
+ } @else {
2560
+ <div [class]="classes()" role="list">
2561
+ @for (r of resources(); track r.uri) {
2562
+ <button
2563
+ type="button"
2564
+ role="listitem"
2565
+ [class]="itemClass(r.uri)"
2566
+ [attr.aria-selected]="selectedUri() === r.uri"
2567
+ [attr.aria-label]="r.name"
2568
+ (click)="select(r)"
2569
+ >
2570
+ <span class="mcpe-mcp-resource-browser-icon" aria-hidden="true">{{ mimeLabel(r.mimeType) }}</span>
2571
+ <span class="mcpe-mcp-resource-browser-name">{{ r.name }}</span>
2572
+ @if (r.mimeType) {
2573
+ <span class="mcpe-mcp-resource-browser-type">{{ r.mimeType.split('/')[0] }}</span>
2574
+ }
2575
+ </button>
2576
+ }
2577
+ </div>
2578
+ }
2579
+ `
2580
+ })
2581
+ ], McpeMcpResourceBrowserComponent);
2582
+
2583
+ // src/mcp/mcp-app-frame.component.ts
2584
+ import { Component as Component37, input as input35, output as output14, effect as effect3, computed as computed27, viewChild as viewChild4 } from "@angular/core";
2585
+ import { cn as cn6, createAppBridge } from "@mcp-elements/core";
2586
+ function _ts_decorate38(decorators, target, key, desc) {
2587
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2588
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2589
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2590
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2591
+ }
2592
+ __name(_ts_decorate38, "_ts_decorate");
2593
+ function _ts_metadata5(k, v) {
2594
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2595
+ }
2596
+ __name(_ts_metadata5, "_ts_metadata");
2597
+ var McpeMcpAppFrameComponent = class {
2598
+ static {
2599
+ __name(this, "McpeMcpAppFrameComponent");
2600
+ }
2601
+ src = input35.required();
2602
+ height = input35(480);
2603
+ sandbox = input35("allow-scripts allow-same-origin");
2604
+ class = input35("");
2605
+ onMessage = output14();
2606
+ frame = viewChild4("frame");
2607
+ _unsub;
2608
+ _removeListener;
2609
+ constructor() {
2610
+ effect3(() => {
2611
+ this._cleanup();
2612
+ const bridge = createAppBridge({
2613
+ postMessage: /* @__PURE__ */ __name((env) => {
2614
+ this.frame()?.nativeElement?.contentWindow?.postMessage(env, "*");
2615
+ }, "postMessage")
2616
+ });
2617
+ const unsub = bridge.onMessage((env) => this.onMessage.emit(env));
2618
+ const handler = /* @__PURE__ */ __name((e) => bridge.receive(e.data), "handler");
2619
+ window.addEventListener("message", handler);
2620
+ this._unsub = unsub;
2621
+ this._removeListener = () => window.removeEventListener("message", handler);
2622
+ });
2623
+ }
2624
+ _cleanup() {
2625
+ this._unsub?.();
2626
+ this._removeListener?.();
2627
+ this._unsub = void 0;
2628
+ this._removeListener = void 0;
2629
+ }
2630
+ ngOnDestroy() {
2631
+ this._cleanup();
2632
+ }
2633
+ classes = computed27(() => cn6("mcpe-mcp-app-frame", this.class()));
2634
+ };
2635
+ McpeMcpAppFrameComponent = _ts_decorate38([
2636
+ Component37({
2637
+ selector: "mcpe-mcp-app-frame",
2638
+ standalone: true,
2639
+ template: `
2640
+ <div [class]="classes()">
2641
+ <iframe
2642
+ #frame
2643
+ [src]="src()"
2644
+ [sandbox]="sandbox()"
2645
+ [style.height.px]="height()"
2646
+ title="MCP App"
2647
+ aria-label="MCP App frame"
2648
+ style="display:block;width:100%;border:none"
2649
+ ></iframe>
2650
+ </div>
2651
+ `
2652
+ }),
2653
+ _ts_metadata5("design:type", Function),
2654
+ _ts_metadata5("design:paramtypes", [])
2655
+ ], McpeMcpAppFrameComponent);
2656
+ export {
2657
+ McpeMcpAppFrameComponent,
2658
+ McpeMcpConsentDialogComponent,
2659
+ McpeMcpResourceBrowserComponent,
2660
+ McpeMcpScopeInspectorComponent,
2661
+ McpeMcpServerStatusComponent,
2662
+ McpeMcpToolCallComponent,
2663
+ McpeMcpToolFormComponent,
2664
+ SnxAccordionComponent,
2665
+ SnxAccordionContentComponent,
2666
+ SnxAccordionItemComponent,
2667
+ SnxAccordionTriggerComponent,
2668
+ SnxAiBadgeComponent,
2669
+ SnxAlertComponent,
2670
+ SnxAlertDescriptionComponent,
2671
+ SnxAlertTitleComponent,
2672
+ SnxAvatarComponent,
2673
+ SnxBadgeComponent,
2674
+ SnxButtonComponent,
2675
+ SnxCardComponent,
2676
+ SnxCardContentComponent,
2677
+ SnxCardDescriptionComponent,
2678
+ SnxCardFooterComponent,
2679
+ SnxCardHeaderComponent,
2680
+ SnxCardTitleComponent,
2681
+ SnxChatBubbleAvatarComponent,
2682
+ SnxChatBubbleComponent,
2683
+ SnxChatBubbleContentComponent,
2684
+ SnxChatBubbleTimestampComponent,
2685
+ SnxChatBubbleTypingComponent,
2686
+ SnxChipComponent,
2687
+ SnxChipsComponent,
2688
+ SnxCounterComponent,
2689
+ SnxDialogComponent,
2690
+ SnxDrawerBodyComponent,
2691
+ SnxDrawerComponent,
2692
+ SnxDrawerDescriptionComponent,
2693
+ SnxDrawerFooterComponent,
2694
+ SnxDrawerHeaderComponent,
2695
+ SnxDrawerTitleComponent,
2696
+ SnxDropdownMenuComponent,
2697
+ SnxFeedbackButtonComponent,
2698
+ SnxFeedbackComponent,
2699
+ SnxFeedbackFormComponent,
2700
+ SnxFeedbackInputComponent,
2701
+ SnxFeedbackSeparatorComponent,
2702
+ SnxFeedbackSubmitComponent,
2703
+ SnxInputComponent,
2704
+ SnxLoaderComponent,
2705
+ SnxPasswordInputComponent,
2706
+ SnxPopoverComponent,
2707
+ SnxProgressComponent,
2708
+ SnxPromptInputActionsComponent,
2709
+ SnxPromptInputAttachmentComponent,
2710
+ SnxPromptInputAttachmentsComponent,
2711
+ SnxPromptInputCharCountComponent,
2712
+ SnxPromptInputComponent,
2713
+ SnxPromptInputFooterComponent,
2714
+ SnxPromptInputTextareaComponent,
2715
+ SnxSelectComponent,
2716
+ SnxSeparatorComponent,
2717
+ SnxSkeletonComponent,
2718
+ SnxSourceCardComponent,
2719
+ SnxSourceCardsComponent,
2720
+ SnxStreamingTextComponent,
2721
+ SnxStreamingTextFadeInComponent,
2722
+ SnxStreamingTextLineComponent,
2723
+ SnxStreamingTextSkeletonComponent,
2724
+ SnxStreamingTextSkeletonLineComponent,
2725
+ SnxStreamingTextWordComponent,
2726
+ SnxSuggestionChipComponent,
2727
+ SnxSuggestionChipsComponent,
2728
+ SnxSwitchComponent,
2729
+ SnxTabsComponent,
2730
+ SnxTabsContentComponent,
2731
+ SnxTabsListComponent,
2732
+ SnxTabsTriggerComponent,
2733
+ SnxTextareaComponent,
2734
+ SnxToastService,
2735
+ SnxToasterComponent,
2736
+ SnxTooltipDirective
2737
+ };
2738
+ //# sourceMappingURL=index.js.map