@threadplane/chat 0.0.53 → 0.0.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, input, inject, TemplateRef, Directive, contentChildren, computed, ChangeDetectionStrategy, Component, signal, Injectable, ContentChild, effect, output, DOCUMENT, ViewEncapsulation, viewChild, model, contentChild, untracked, ElementRef, DestroyRef, makeEnvironmentProviders, Injector, runInInjectionContext,
|
|
2
|
+
import { InjectionToken, input, inject, TemplateRef, Directive, contentChildren, computed, ChangeDetectionStrategy, Component, signal, Injectable, ContentChild, effect, output, DOCUMENT, ViewEncapsulation, viewChild, model, contentChild, untracked, ElementRef, ViewContainerRef, DestroyRef, makeEnvironmentProviders, Injector, runInInjectionContext, SecurityContext } from '@angular/core';
|
|
3
3
|
import { NgTemplateOutlet, NgComponentOutlet, KeyValuePipe } from '@angular/common';
|
|
4
4
|
import { createPartialMarkdownParser, materialize } from '@cacheplane/partial-markdown';
|
|
5
5
|
import { views, RenderSpecComponent, toRenderRegistry, signalStateStore, withViews, RenderElementComponent, injectRenderHost } from '@threadplane/render';
|
|
@@ -264,25 +264,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
264
264
|
// libs/chat/src/lib/styles/chat-tokens.ts
|
|
265
265
|
// SPDX-License-Identifier: MIT
|
|
266
266
|
const LIGHT_TOKENS = `
|
|
267
|
-
--
|
|
268
|
-
--
|
|
269
|
-
--
|
|
270
|
-
--
|
|
271
|
-
--
|
|
272
|
-
--
|
|
273
|
-
--
|
|
274
|
-
--
|
|
275
|
-
--
|
|
276
|
-
--
|
|
277
|
-
--
|
|
278
|
-
--
|
|
279
|
-
--
|
|
280
|
-
--
|
|
281
|
-
--
|
|
282
|
-
--
|
|
283
|
-
--
|
|
284
|
-
--
|
|
285
|
-
--
|
|
267
|
+
--tplane-chat-bg: rgb(255, 255, 255);
|
|
268
|
+
--tplane-chat-surface: rgb(255, 255, 255);
|
|
269
|
+
--tplane-chat-surface-alt: rgb(251, 251, 251);
|
|
270
|
+
--tplane-chat-primary: rgb(28, 28, 28);
|
|
271
|
+
--tplane-chat-on-primary: rgb(255, 255, 255);
|
|
272
|
+
--tplane-chat-text: rgb(28, 28, 28);
|
|
273
|
+
--tplane-chat-text-muted: rgb(115, 115, 115);
|
|
274
|
+
--tplane-chat-separator: rgb(229, 229, 229);
|
|
275
|
+
--tplane-chat-muted: rgb(200, 200, 200);
|
|
276
|
+
--tplane-chat-error-bg: #fef2f2;
|
|
277
|
+
--tplane-chat-error-border: #fecaca;
|
|
278
|
+
--tplane-chat-error-text: #dc2626;
|
|
279
|
+
--tplane-chat-destructive: #dc2626;
|
|
280
|
+
--tplane-chat-warning-bg: #fffbeb;
|
|
281
|
+
--tplane-chat-warning-text: #b45309;
|
|
282
|
+
--tplane-chat-success: #16a34a;
|
|
283
|
+
--tplane-chat-shadow-sm: 0 1px 2px rgba(0,0,0,.05);
|
|
284
|
+
--tplane-chat-shadow-md: 0 4px 6px -1px rgba(0,0,0,.10), 0 2px 4px -1px rgba(0,0,0,.06);
|
|
285
|
+
--tplane-chat-shadow-lg: 0 10px 15px -3px rgba(0,0,0,.10), 0 4px 6px -2px rgba(0,0,0,.05);
|
|
286
286
|
|
|
287
287
|
/* --a2ui-* light variant */
|
|
288
288
|
--a2ui-primary: #4f8df5;
|
|
@@ -307,22 +307,22 @@ const LIGHT_TOKENS = `
|
|
|
307
307
|
--a2ui-elevation-5: 0 16px 32px rgba(0, 0, 0, 0.18);
|
|
308
308
|
`;
|
|
309
309
|
const DARK_TOKENS = `
|
|
310
|
-
--
|
|
311
|
-
--
|
|
312
|
-
--
|
|
313
|
-
--
|
|
314
|
-
--
|
|
315
|
-
--
|
|
316
|
-
--
|
|
317
|
-
--
|
|
318
|
-
--
|
|
319
|
-
--
|
|
320
|
-
--
|
|
321
|
-
--
|
|
322
|
-
--
|
|
323
|
-
--
|
|
324
|
-
--
|
|
325
|
-
--
|
|
310
|
+
--tplane-chat-bg: rgb(17, 17, 17);
|
|
311
|
+
--tplane-chat-surface: rgb(28, 28, 28);
|
|
312
|
+
--tplane-chat-surface-alt: rgb(44, 44, 44);
|
|
313
|
+
--tplane-chat-primary: rgb(255, 255, 255);
|
|
314
|
+
--tplane-chat-on-primary: rgb(28, 28, 28);
|
|
315
|
+
--tplane-chat-text: rgb(245, 245, 245);
|
|
316
|
+
--tplane-chat-text-muted: rgb(160, 160, 160);
|
|
317
|
+
--tplane-chat-separator: rgb(45, 45, 45);
|
|
318
|
+
--tplane-chat-muted: rgb(60, 60, 60);
|
|
319
|
+
--tplane-chat-error-bg: rgb(45, 21, 21);
|
|
320
|
+
--tplane-chat-error-border: #dc2626;
|
|
321
|
+
--tplane-chat-error-text: #fca5a5;
|
|
322
|
+
--tplane-chat-destructive: #ef4444;
|
|
323
|
+
--tplane-chat-warning-bg: rgb(45, 35, 21);
|
|
324
|
+
--tplane-chat-warning-text: #fbbf24;
|
|
325
|
+
--tplane-chat-success: #4ade80;
|
|
326
326
|
|
|
327
327
|
/* --a2ui-* dark variant (preserves current chat.css values) */
|
|
328
328
|
--a2ui-primary: #4f8df5;
|
|
@@ -347,46 +347,46 @@ const DARK_TOKENS = `
|
|
|
347
347
|
--a2ui-elevation-5: 0 16px 32px rgba(0, 0, 0, 0.5);
|
|
348
348
|
`;
|
|
349
349
|
const GEOMETRY_TOKENS = `
|
|
350
|
-
--
|
|
351
|
-
--
|
|
352
|
-
--
|
|
353
|
-
--
|
|
354
|
-
--
|
|
355
|
-
--
|
|
350
|
+
--tplane-chat-radius-bubble: 15px;
|
|
351
|
+
--tplane-chat-radius-input: 20px;
|
|
352
|
+
--tplane-chat-radius-card: 8px;
|
|
353
|
+
--tplane-chat-radius-button: 8px;
|
|
354
|
+
--tplane-chat-radius-launcher: 9999px;
|
|
355
|
+
--tplane-chat-max-width: 48rem;
|
|
356
356
|
`;
|
|
357
357
|
const TYPOGRAPHY_TOKENS = `
|
|
358
|
-
--
|
|
359
|
-
--
|
|
360
|
-
--
|
|
361
|
-
--
|
|
362
|
-
--
|
|
363
|
-
--
|
|
364
|
-
--
|
|
358
|
+
--tplane-chat-font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
359
|
+
--tplane-chat-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
360
|
+
--tplane-chat-font-size: 1rem;
|
|
361
|
+
--tplane-chat-font-size-sm: 0.875rem;
|
|
362
|
+
--tplane-chat-font-size-xs: 0.75rem;
|
|
363
|
+
--tplane-chat-line-height: 1.6;
|
|
364
|
+
--tplane-chat-line-height-tight: 1.5;
|
|
365
365
|
`;
|
|
366
366
|
const SPACING_TOKENS = `
|
|
367
|
-
--
|
|
368
|
-
--
|
|
369
|
-
--
|
|
370
|
-
--
|
|
371
|
-
--
|
|
372
|
-
--
|
|
373
|
-
--
|
|
374
|
-
--
|
|
375
|
-
--
|
|
376
|
-
--
|
|
377
|
-
--
|
|
378
|
-
--
|
|
367
|
+
--tplane-chat-space-1: 4px;
|
|
368
|
+
--tplane-chat-space-2: 8px;
|
|
369
|
+
--tplane-chat-space-3: 12px;
|
|
370
|
+
--tplane-chat-space-4: 16px;
|
|
371
|
+
--tplane-chat-space-5: 20px;
|
|
372
|
+
--tplane-chat-space-6: 24px;
|
|
373
|
+
--tplane-chat-space-8: 32px;
|
|
374
|
+
--tplane-chat-edge-pad: 16px;
|
|
375
|
+
--tplane-chat-input-gap: 0.75rem;
|
|
376
|
+
--tplane-chat-sidenav-width-expanded: 280px;
|
|
377
|
+
--tplane-chat-sidenav-width-collapsed: 56px;
|
|
378
|
+
--tplane-chat-sidenav-width-drawer: 280px;
|
|
379
379
|
`;
|
|
380
380
|
const LAYER_TOKENS = `
|
|
381
381
|
/* Z-index layers — documented for consumers + future primitives.
|
|
382
382
|
* Default values listed; overridable per-app via :root or :host.
|
|
383
383
|
* Modal layers sit above drawer so palettes/dialogs stay reachable
|
|
384
384
|
* when the drawer is open. */
|
|
385
|
-
--
|
|
386
|
-
--
|
|
387
|
-
--
|
|
388
|
-
--
|
|
389
|
-
--
|
|
385
|
+
--tplane-chat-z-overlay-content: 30; /* chat-sidebar panel, chat-popup window */
|
|
386
|
+
--tplane-chat-z-drawer-scrim: 1000; /* chat-sidenav-scrim backdrop */
|
|
387
|
+
--tplane-chat-z-drawer: 1001; /* chat-sidenav drawer mode host */
|
|
388
|
+
--tplane-chat-z-modal-scrim: 1100; /* chat-history-search-palette backdrop */
|
|
389
|
+
--tplane-chat-z-modal: 1101; /* chat-history-search-palette dialog */
|
|
390
390
|
`;
|
|
391
391
|
const EDGE_CLAIM_TOKENS = `
|
|
392
392
|
/* Edge-claim primitive — peer-aware panel coexistence.
|
|
@@ -396,51 +396,51 @@ const EDGE_CLAIM_TOKENS = `
|
|
|
396
396
|
not using chat-sidebar/chat-debug see zero overhead.
|
|
397
397
|
|
|
398
398
|
TWO LAYERS:
|
|
399
|
-
1. Per-component claim vars (--
|
|
399
|
+
1. Per-component claim vars (--tplane-chat-<component>-claim-<edge>)
|
|
400
400
|
are read by PEERS only — never by the component that wrote
|
|
401
401
|
them. This eliminates self-feedback (where a right-docked
|
|
402
402
|
panel would offset itself by reading its own claim).
|
|
403
403
|
2. Aggregate occupy-* vars are convenience reads for external
|
|
404
404
|
consumers and for cases where any-panel-on-edge matters. */
|
|
405
|
-
--
|
|
406
|
-
--
|
|
407
|
-
--
|
|
408
|
-
--
|
|
405
|
+
--tplane-chat-occupy-top: 0px;
|
|
406
|
+
--tplane-chat-occupy-right: 0px;
|
|
407
|
+
--tplane-chat-occupy-bottom: 0px;
|
|
408
|
+
--tplane-chat-occupy-left: 0px;
|
|
409
409
|
|
|
410
410
|
/* Per-component claims (peer-only reads). */
|
|
411
|
-
--
|
|
412
|
-
--
|
|
413
|
-
--
|
|
414
|
-
--
|
|
415
|
-
--
|
|
411
|
+
--tplane-chat-sidebar-claim-right: 0px;
|
|
412
|
+
--tplane-chat-debug-claim-top: 0px;
|
|
413
|
+
--tplane-chat-debug-claim-right: 0px;
|
|
414
|
+
--tplane-chat-debug-claim-bottom: 0px;
|
|
415
|
+
--tplane-chat-debug-claim-left: 0px;
|
|
416
416
|
|
|
417
417
|
/* Sizes the chat-debug dock contributes when it claims an edge.
|
|
418
418
|
Split by orientation so consumers can override independently. */
|
|
419
|
-
--
|
|
420
|
-
--
|
|
419
|
+
--tplane-chat-debug-panel-size-h: 40vh;
|
|
420
|
+
--tplane-chat-debug-panel-size-w: 420px;
|
|
421
421
|
`;
|
|
422
422
|
const KEYFRAMES = `
|
|
423
|
-
@keyframes
|
|
423
|
+
@keyframes tplane-chat-spin {
|
|
424
424
|
0% { transform: rotate(0deg); }
|
|
425
425
|
100% { transform: rotate(360deg); }
|
|
426
426
|
}
|
|
427
|
-
@keyframes
|
|
427
|
+
@keyframes tplane-chat-typing-dot {
|
|
428
428
|
0%, 80%, 100% { transform: scale(0.5); opacity: 0.5; }
|
|
429
429
|
40% { transform: scale(1); opacity: 1; }
|
|
430
430
|
}
|
|
431
|
-
@keyframes
|
|
431
|
+
@keyframes tplane-chat-pulse {
|
|
432
432
|
0%, 100% { opacity: 1; }
|
|
433
433
|
50% { opacity: 0.6; }
|
|
434
434
|
}
|
|
435
|
-
@keyframes
|
|
435
|
+
@keyframes tplane-chat-caret-blink {
|
|
436
436
|
0%, 50% { opacity: 1; }
|
|
437
437
|
50.01%, 100% { opacity: 0; }
|
|
438
438
|
}
|
|
439
|
-
@keyframes
|
|
439
|
+
@keyframes tplane-chat-caret-fade-in {
|
|
440
440
|
from { opacity: 0; }
|
|
441
441
|
to { opacity: 1; }
|
|
442
442
|
}
|
|
443
|
-
@keyframes
|
|
443
|
+
@keyframes tplane-chat-welcome-mount {
|
|
444
444
|
from { opacity: 0; transform: translateY(-8px); }
|
|
445
445
|
to { opacity: 1; transform: translateY(0); }
|
|
446
446
|
}
|
|
@@ -453,21 +453,21 @@ const KEYFRAMES = `
|
|
|
453
453
|
*
|
|
454
454
|
* Token *defaults* are NOT set on `:host` — they're set on `:root` via the
|
|
455
455
|
* shared style element below (`ensureChatRootStyles()`). That shift is what
|
|
456
|
-
* makes the documented `:root { --
|
|
456
|
+
* makes the documented `:root { --tplane-chat-*: ... }` consumer override
|
|
457
457
|
* actually work, because direct-on-host token settings would shadow
|
|
458
458
|
* inheritance regardless of CSS specificity.
|
|
459
459
|
*/
|
|
460
460
|
const CHAT_HOST_TOKENS = `
|
|
461
461
|
:host {
|
|
462
|
-
font-family: var(--
|
|
463
|
-
color: var(--
|
|
462
|
+
font-family: var(--tplane-chat-font-family);
|
|
463
|
+
color: var(--tplane-chat-text);
|
|
464
464
|
}
|
|
465
465
|
`;
|
|
466
466
|
// Note: @keyframes are NOT placed in CHAT_HOST_TOKENS. Angular's emulated
|
|
467
467
|
// view encapsulation scopes @keyframes names per-component, which can
|
|
468
468
|
// desynchronise from animation property references when styles are
|
|
469
469
|
// concatenated across helper strings. They're injected globally via
|
|
470
|
-
// ROOT_TOKEN_STYLES below so the names match what `animation:
|
|
470
|
+
// ROOT_TOKEN_STYLES below so the names match what `animation: tplane-chat-*`
|
|
471
471
|
// references in component styles (which Angular leaves untouched).
|
|
472
472
|
/**
|
|
473
473
|
* WCAG 2.3.3 — honor the OS-level "Reduce Motion" preference. Collapses
|
|
@@ -490,9 +490,9 @@ const REDUCED_MOTION_STYLES = `
|
|
|
490
490
|
}
|
|
491
491
|
|
|
492
492
|
.tcc__pill[data-status="running"] svg,
|
|
493
|
-
.
|
|
494
|
-
.
|
|
495
|
-
.
|
|
493
|
+
.tplane-chat-typing-dot,
|
|
494
|
+
.tplane-chat-caret,
|
|
495
|
+
.tplane-chat-welcome__pulse,
|
|
496
496
|
.chat-genui-skeleton,
|
|
497
497
|
.chat-debug__pill--active {
|
|
498
498
|
animation: none !important;
|
|
@@ -506,8 +506,8 @@ const REDUCED_MOTION_STYLES = `
|
|
|
506
506
|
`;
|
|
507
507
|
/**
|
|
508
508
|
* Token defaults written to `<head>` once on first chat-component
|
|
509
|
-
* construction. Wrapped in `@layer
|
|
510
|
-
* `:root { --
|
|
509
|
+
* construction. Wrapped in `@layer tplane-chat` so the consumer's unlayered
|
|
510
|
+
* `:root { --tplane-chat-*: ... }` rule beats the lib's defaults regardless
|
|
511
511
|
* of source order — the standard CSS pattern for framework defaults.
|
|
512
512
|
*
|
|
513
513
|
* Theme switching:
|
|
@@ -580,7 +580,7 @@ const A2UI_INVARIANT_TOKENS = `
|
|
|
580
580
|
--a2ui-border: var(--a2ui-outline);
|
|
581
581
|
`;
|
|
582
582
|
const ROOT_TOKEN_STYLES = `
|
|
583
|
-
@layer
|
|
583
|
+
@layer tplane-chat {
|
|
584
584
|
:root {
|
|
585
585
|
${LIGHT_TOKENS}
|
|
586
586
|
${GEOMETRY_TOKENS}
|
|
@@ -606,28 +606,28 @@ const ROOT_TOKEN_STYLES = `
|
|
|
606
606
|
chat-sidebar sets data-threadplane-chat-sidebar="open" while its panel is open.
|
|
607
607
|
chat-debug sets data-threadplane-chat-debug to its current dock while open. */
|
|
608
608
|
:root[data-threadplane-chat-sidebar="open"] {
|
|
609
|
-
--
|
|
610
|
-
--
|
|
609
|
+
--tplane-chat-sidebar-claim-right: var(--tplane-chat-sidebar-width-drawer, 28rem);
|
|
610
|
+
--tplane-chat-occupy-right: var(--tplane-chat-sidebar-width-drawer, 28rem);
|
|
611
611
|
}
|
|
612
612
|
:root[data-threadplane-chat-debug="bottom"] {
|
|
613
|
-
--
|
|
614
|
-
--
|
|
613
|
+
--tplane-chat-debug-claim-bottom: var(--tplane-chat-debug-panel-size-h, 40vh);
|
|
614
|
+
--tplane-chat-occupy-bottom: var(--tplane-chat-debug-panel-size-h, 40vh);
|
|
615
615
|
}
|
|
616
616
|
:root[data-threadplane-chat-debug="right"] {
|
|
617
|
-
--
|
|
618
|
-
--
|
|
617
|
+
--tplane-chat-debug-claim-right: var(--tplane-chat-debug-panel-size-w, 420px);
|
|
618
|
+
--tplane-chat-occupy-right: var(--tplane-chat-debug-panel-size-w, 420px);
|
|
619
619
|
}
|
|
620
620
|
:root[data-threadplane-chat-debug="left"] {
|
|
621
|
-
--
|
|
622
|
-
--
|
|
621
|
+
--tplane-chat-debug-claim-left: var(--tplane-chat-debug-panel-size-w, 420px);
|
|
622
|
+
--tplane-chat-occupy-left: var(--tplane-chat-debug-panel-size-w, 420px);
|
|
623
623
|
}
|
|
624
624
|
}
|
|
625
625
|
${KEYFRAMES}
|
|
626
626
|
${REDUCED_MOTION_STYLES}
|
|
627
627
|
`;
|
|
628
|
-
const STYLE_ELEMENT_ID = '
|
|
628
|
+
const STYLE_ELEMENT_ID = 'tplane-chat-root-tokens';
|
|
629
629
|
/**
|
|
630
|
-
* Idempotent: appends a `<style id="
|
|
630
|
+
* Idempotent: appends a `<style id="tplane-chat-root-tokens">` to `<head>`
|
|
631
631
|
* the first time it's called. Subsequent calls are no-ops.
|
|
632
632
|
*
|
|
633
633
|
* No-op outside the browser (server-side rendering).
|
|
@@ -665,8 +665,8 @@ const CHAT_MESSAGE_LIST_STYLES = `
|
|
|
665
665
|
display: flex;
|
|
666
666
|
flex-direction: column;
|
|
667
667
|
gap: 0;
|
|
668
|
-
padding: var(--
|
|
669
|
-
max-width: var(--
|
|
668
|
+
padding: var(--tplane-chat-space-4) var(--tplane-chat-space-6);
|
|
669
|
+
max-width: var(--tplane-chat-max-width);
|
|
670
670
|
margin: 0 auto;
|
|
671
671
|
width: 100%;
|
|
672
672
|
box-sizing: border-box;
|
|
@@ -711,7 +711,7 @@ class ChatMessageListComponent {
|
|
|
711
711
|
/>
|
|
712
712
|
}
|
|
713
713
|
}
|
|
714
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
714
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:flex;flex-direction:column;gap:0;padding:var(--tplane-chat-space-4) var(--tplane-chat-space-6);max-width:var(--tplane-chat-max-width);margin:0 auto;width:100%;box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
715
715
|
}
|
|
716
716
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatMessageListComponent, decorators: [{
|
|
717
717
|
type: Component,
|
|
@@ -725,7 +725,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
725
725
|
/>
|
|
726
726
|
}
|
|
727
727
|
}
|
|
728
|
-
`, styles: [":host{font-family:var(--
|
|
728
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:flex;flex-direction:column;gap:0;padding:var(--tplane-chat-space-4) var(--tplane-chat-space-6);max-width:var(--tplane-chat-max-width);margin:0 auto;width:100%;box-sizing:border-box}\n"] }]
|
|
729
729
|
}], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], messageTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => MessageTemplateDirective), { isSignal: true }] }] } });
|
|
730
730
|
|
|
731
731
|
// libs/chat/src/lib/styles/chat-message.styles.ts
|
|
@@ -752,9 +752,9 @@ const CHAT_MESSAGE_STYLES = `
|
|
|
752
752
|
display: block;
|
|
753
753
|
position: relative;
|
|
754
754
|
margin-top: 1.5rem;
|
|
755
|
-
color: var(--
|
|
755
|
+
color: var(--tplane-chat-text);
|
|
756
756
|
line-height: 1.55;
|
|
757
|
-
font-size: var(--
|
|
757
|
+
font-size: var(--tplane-chat-font-size);
|
|
758
758
|
max-width: 100%;
|
|
759
759
|
}
|
|
760
760
|
:host([data-role="assistant"]):first-child { margin-top: 0; }
|
|
@@ -762,12 +762,12 @@ const CHAT_MESSAGE_STYLES = `
|
|
|
762
762
|
.chat-message__bubble {
|
|
763
763
|
width: fit-content;
|
|
764
764
|
padding: 8px 12px;
|
|
765
|
-
border-radius: var(--
|
|
766
|
-
background: var(--
|
|
767
|
-
color: var(--
|
|
765
|
+
border-radius: var(--tplane-chat-radius-bubble);
|
|
766
|
+
background: var(--tplane-chat-primary);
|
|
767
|
+
color: var(--tplane-chat-on-primary);
|
|
768
768
|
white-space: pre-wrap;
|
|
769
|
-
line-height: var(--
|
|
770
|
-
font-size: var(--
|
|
769
|
+
line-height: var(--tplane-chat-line-height-tight);
|
|
770
|
+
font-size: var(--tplane-chat-font-size);
|
|
771
771
|
overflow-wrap: break-word;
|
|
772
772
|
}
|
|
773
773
|
|
|
@@ -785,12 +785,12 @@ const CHAT_MESSAGE_STYLES = `
|
|
|
785
785
|
margin-left: 4px;
|
|
786
786
|
margin-bottom: 2px;
|
|
787
787
|
background: radial-gradient(circle at 30% 30%,
|
|
788
|
-
var(--
|
|
789
|
-
var(--
|
|
788
|
+
var(--tplane-chat-text) 0%,
|
|
789
|
+
var(--tplane-chat-text-muted) 70%,
|
|
790
790
|
transparent 100%);
|
|
791
|
-
box-shadow: 0 0 6px var(--
|
|
792
|
-
animation:
|
|
793
|
-
|
|
791
|
+
box-shadow: 0 0 6px var(--tplane-chat-text-muted);
|
|
792
|
+
animation: tplane-chat-caret-fade-in 200ms ease-out 300ms forwards,
|
|
793
|
+
tplane-chat-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) 500ms infinite;
|
|
794
794
|
opacity: 0;
|
|
795
795
|
}
|
|
796
796
|
:host([data-role="assistant"][data-current="true"][data-streaming="true"]) .chat-message__caret {
|
|
@@ -823,14 +823,14 @@ const CHAT_MESSAGE_STYLES = `
|
|
|
823
823
|
height: 20px;
|
|
824
824
|
border: 0;
|
|
825
825
|
background: transparent;
|
|
826
|
-
color: var(--
|
|
826
|
+
color: var(--tplane-chat-primary);
|
|
827
827
|
cursor: pointer;
|
|
828
828
|
padding: 0;
|
|
829
829
|
transition: transform 200ms ease;
|
|
830
830
|
}
|
|
831
831
|
.chat-message__control-btn:hover { transform: scale(1.05); }
|
|
832
832
|
.chat-message__control-btn:focus-visible {
|
|
833
|
-
outline: 2px solid var(--
|
|
833
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
834
834
|
outline-offset: 2px;
|
|
835
835
|
border-radius: 4px;
|
|
836
836
|
}
|
|
@@ -1071,7 +1071,7 @@ class ChatMessageComponent {
|
|
|
1071
1071
|
<div class="chat-message__controls">
|
|
1072
1072
|
<ng-content select="[chatMessageControls]" />
|
|
1073
1073
|
</div>
|
|
1074
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
1074
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block}:host([data-role=\"user\"]){display:block;margin-top:.5rem}:host([data-role=\"user\"][data-prev-role=\"assistant\"]){margin-top:1.5rem}:host([data-role=\"user\"]) .chat-message__bubble{margin-left:auto;max-width:80%}:host([data-role=\"assistant\"]) .chat-message__bubble{max-width:80%}:host([data-role=\"assistant\"]){display:block;position:relative;margin-top:1.5rem;color:var(--tplane-chat-text);line-height:1.55;font-size:var(--tplane-chat-font-size);max-width:100%}:host([data-role=\"assistant\"]):first-child{margin-top:0}.chat-message__bubble{width:fit-content;padding:8px 12px;border-radius:var(--tplane-chat-radius-bubble);background:var(--tplane-chat-primary);color:var(--tplane-chat-on-primary);white-space:pre-wrap;line-height:var(--tplane-chat-line-height-tight);font-size:var(--tplane-chat-font-size);overflow-wrap:break-word}.chat-message__assistant-body{padding:0 12px 0 4px;overflow-wrap:break-word}.chat-message__caret{display:none;width:8px;height:8px;border-radius:50%;vertical-align:middle;margin-left:4px;margin-bottom:2px;background:radial-gradient(circle at 30% 30%,var(--tplane-chat-text) 0%,var(--tplane-chat-text-muted) 70%,transparent 100%);box-shadow:0 0 6px var(--tplane-chat-text-muted);animation:tplane-chat-caret-fade-in .2s ease-out .3s forwards,tplane-chat-pulse 2s cubic-bezier(.4,0,.6,1) .5s infinite;opacity:0}:host([data-role=\"assistant\"][data-current=\"true\"][data-streaming=\"true\"]) .chat-message__caret{display:inline-block}.chat-message__controls{display:none;gap:1rem;opacity:0;transition:opacity .2s ease;pointer-events:none}:host([data-role=\"assistant\"]) .chat-message__controls{display:flex}:host([data-role=\"assistant\"]:hover) .chat-message__controls,:host([data-role=\"assistant\"]:focus-within) .chat-message__controls,:host([data-current=\"true\"]) .chat-message__controls{opacity:1;pointer-events:auto}@media(max-width:768px){:host([data-role=\"assistant\"]) .chat-message__controls{opacity:1;pointer-events:auto}}.chat-message__control-btn{width:20px;height:20px;border:0;background:transparent;color:var(--tplane-chat-primary);cursor:pointer;padding:0;transition:transform .2s ease}.chat-message__control-btn:hover{transform:scale(1.05)}.chat-message__control-btn:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:2px;border-radius:4px}.chat-message__control-btn svg{width:16px;height:16px;pointer-events:none}\n"], dependencies: [{ kind: "component", type: ChatCitationsComponent, selector: "chat-citations", inputs: ["message", "heading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1075
1075
|
}
|
|
1076
1076
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatMessageComponent, decorators: [{
|
|
1077
1077
|
type: Component,
|
|
@@ -1091,7 +1091,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
1091
1091
|
<div class="chat-message__controls">
|
|
1092
1092
|
<ng-content select="[chatMessageControls]" />
|
|
1093
1093
|
</div>
|
|
1094
|
-
`, styles: [":host{font-family:var(--
|
|
1094
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block}:host([data-role=\"user\"]){display:block;margin-top:.5rem}:host([data-role=\"user\"][data-prev-role=\"assistant\"]){margin-top:1.5rem}:host([data-role=\"user\"]) .chat-message__bubble{margin-left:auto;max-width:80%}:host([data-role=\"assistant\"]) .chat-message__bubble{max-width:80%}:host([data-role=\"assistant\"]){display:block;position:relative;margin-top:1.5rem;color:var(--tplane-chat-text);line-height:1.55;font-size:var(--tplane-chat-font-size);max-width:100%}:host([data-role=\"assistant\"]):first-child{margin-top:0}.chat-message__bubble{width:fit-content;padding:8px 12px;border-radius:var(--tplane-chat-radius-bubble);background:var(--tplane-chat-primary);color:var(--tplane-chat-on-primary);white-space:pre-wrap;line-height:var(--tplane-chat-line-height-tight);font-size:var(--tplane-chat-font-size);overflow-wrap:break-word}.chat-message__assistant-body{padding:0 12px 0 4px;overflow-wrap:break-word}.chat-message__caret{display:none;width:8px;height:8px;border-radius:50%;vertical-align:middle;margin-left:4px;margin-bottom:2px;background:radial-gradient(circle at 30% 30%,var(--tplane-chat-text) 0%,var(--tplane-chat-text-muted) 70%,transparent 100%);box-shadow:0 0 6px var(--tplane-chat-text-muted);animation:tplane-chat-caret-fade-in .2s ease-out .3s forwards,tplane-chat-pulse 2s cubic-bezier(.4,0,.6,1) .5s infinite;opacity:0}:host([data-role=\"assistant\"][data-current=\"true\"][data-streaming=\"true\"]) .chat-message__caret{display:inline-block}.chat-message__controls{display:none;gap:1rem;opacity:0;transition:opacity .2s ease;pointer-events:none}:host([data-role=\"assistant\"]) .chat-message__controls{display:flex}:host([data-role=\"assistant\"]:hover) .chat-message__controls,:host([data-role=\"assistant\"]:focus-within) .chat-message__controls,:host([data-current=\"true\"]) .chat-message__controls{opacity:1;pointer-events:auto}@media(max-width:768px){:host([data-role=\"assistant\"]) .chat-message__controls{opacity:1;pointer-events:auto}}.chat-message__control-btn{width:20px;height:20px;border:0;background:transparent;color:var(--tplane-chat-primary);cursor:pointer;padding:0;transition:transform .2s ease}.chat-message__control-btn:hover{transform:scale(1.05)}.chat-message__control-btn:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:2px;border-radius:4px}.chat-message__control-btn svg{width:16px;height:16px;pointer-events:none}\n"] }]
|
|
1095
1095
|
}], ctorParameters: () => [], propDecorators: { role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: true }] }], current: [{ type: i0.Input, args: [{ isSignal: true, alias: "current", required: false }] }], streaming: [{ type: i0.Input, args: [{ isSignal: true, alias: "streaming", required: false }] }], prevRole: [{ type: i0.Input, args: [{ isSignal: true, alias: "prevRole", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }] } });
|
|
1096
1096
|
|
|
1097
1097
|
// libs/chat/src/lib/styles/chat-message-actions.styles.ts
|
|
@@ -1136,22 +1136,22 @@ const CHAT_MESSAGE_ACTIONS_STYLES = `
|
|
|
1136
1136
|
margin: 0;
|
|
1137
1137
|
border-radius: 6px;
|
|
1138
1138
|
background: transparent;
|
|
1139
|
-
color: var(--
|
|
1139
|
+
color: var(--tplane-chat-text-muted);
|
|
1140
1140
|
cursor: pointer;
|
|
1141
1141
|
transition: color 150ms ease, transform 150ms ease, background 150ms ease;
|
|
1142
1142
|
}
|
|
1143
1143
|
.chat-message-actions__btn:hover {
|
|
1144
|
-
color: var(--
|
|
1144
|
+
color: var(--tplane-chat-text);
|
|
1145
1145
|
transform: scale(1.05);
|
|
1146
|
-
background: var(--
|
|
1146
|
+
background: var(--tplane-chat-surface-alt);
|
|
1147
1147
|
}
|
|
1148
1148
|
.chat-message-actions__btn:focus-visible {
|
|
1149
|
-
outline: 2px solid var(--
|
|
1149
|
+
outline: 2px solid var(--tplane-chat-text-muted);
|
|
1150
1150
|
outline-offset: 2px;
|
|
1151
1151
|
}
|
|
1152
1152
|
.chat-message-actions__btn.is-active {
|
|
1153
|
-
color: var(--
|
|
1154
|
-
background: var(--
|
|
1153
|
+
color: var(--tplane-chat-text);
|
|
1154
|
+
background: var(--tplane-chat-surface-alt);
|
|
1155
1155
|
}
|
|
1156
1156
|
.chat-message-actions__btn svg {
|
|
1157
1157
|
width: 16px;
|
|
@@ -1162,7 +1162,7 @@ const CHAT_MESSAGE_ACTIONS_STYLES = `
|
|
|
1162
1162
|
font-size: 14px;
|
|
1163
1163
|
font-weight: 700;
|
|
1164
1164
|
line-height: 1;
|
|
1165
|
-
color: var(--
|
|
1165
|
+
color: var(--tplane-chat-success);
|
|
1166
1166
|
}
|
|
1167
1167
|
`;
|
|
1168
1168
|
|
|
@@ -1298,7 +1298,7 @@ class ChatMessageActionsComponent {
|
|
|
1298
1298
|
<path d="M17 13l-4 7a2 2 0 0 1-2 2h0a2 2 0 0 1-2-2v-4H4a2 2 0 0 1-2-2l2-7A2 2 0 0 1 6 5h11" />
|
|
1299
1299
|
</svg>
|
|
1300
1300
|
</button>
|
|
1301
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
1301
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:flex;gap:.5rem;padding:16px 0 12px;opacity:0;transition:opacity .2s ease;pointer-events:none}:host-context(chat-message[data-role=\"assistant\"]:hover),:host-context(chat-message[data-role=\"assistant\"]:focus-within),:host-context(chat-message[data-role=\"assistant\"][data-current=\"true\"]){opacity:1;pointer-events:auto}:host-context(chat-message[data-streaming=\"true\"]){opacity:0!important;pointer-events:none!important}@media(max-width:768px){:host-context(chat-message[data-role=\"assistant\"]){opacity:1;pointer-events:auto}}.chat-message-actions__btn{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:0;padding:0;margin:0;border-radius:6px;background:transparent;color:var(--tplane-chat-text-muted);cursor:pointer;transition:color .15s ease,transform .15s ease,background .15s ease}.chat-message-actions__btn:hover{color:var(--tplane-chat-text);transform:scale(1.05);background:var(--tplane-chat-surface-alt)}.chat-message-actions__btn:focus-visible{outline:2px solid var(--tplane-chat-text-muted);outline-offset:2px}.chat-message-actions__btn.is-active{color:var(--tplane-chat-text);background:var(--tplane-chat-surface-alt)}.chat-message-actions__btn svg{width:16px;height:16px;pointer-events:none}.chat-message-actions__check{font-size:14px;font-weight:700;line-height:1;color:var(--tplane-chat-success)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1302
1302
|
}
|
|
1303
1303
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatMessageActionsComponent, decorators: [{
|
|
1304
1304
|
type: Component,
|
|
@@ -1367,7 +1367,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
1367
1367
|
<path d="M17 13l-4 7a2 2 0 0 1-2 2h0a2 2 0 0 1-2-2v-4H4a2 2 0 0 1-2-2l2-7A2 2 0 0 1 6 5h11" />
|
|
1368
1368
|
</svg>
|
|
1369
1369
|
</button>
|
|
1370
|
-
`, styles: [":host{font-family:var(--
|
|
1370
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:flex;gap:.5rem;padding:16px 0 12px;opacity:0;transition:opacity .2s ease;pointer-events:none}:host-context(chat-message[data-role=\"assistant\"]:hover),:host-context(chat-message[data-role=\"assistant\"]:focus-within),:host-context(chat-message[data-role=\"assistant\"][data-current=\"true\"]){opacity:1;pointer-events:auto}:host-context(chat-message[data-streaming=\"true\"]){opacity:0!important;pointer-events:none!important}@media(max-width:768px){:host-context(chat-message[data-role=\"assistant\"]){opacity:1;pointer-events:auto}}.chat-message-actions__btn{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:0;padding:0;margin:0;border-radius:6px;background:transparent;color:var(--tplane-chat-text-muted);cursor:pointer;transition:color .15s ease,transform .15s ease,background .15s ease}.chat-message-actions__btn:hover{color:var(--tplane-chat-text);transform:scale(1.05);background:var(--tplane-chat-surface-alt)}.chat-message-actions__btn:focus-visible{outline:2px solid var(--tplane-chat-text-muted);outline-offset:2px}.chat-message-actions__btn.is-active{color:var(--tplane-chat-text);background:var(--tplane-chat-surface-alt)}.chat-message-actions__btn svg{width:16px;height:16px;pointer-events:none}.chat-message-actions__check{font-size:14px;font-weight:700;line-height:1;color:var(--tplane-chat-success)}\n"] }]
|
|
1371
1371
|
}], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], regenerate: [{ type: i0.Output, args: ["regenerate"] }], rate: [{ type: i0.Output, args: ["rate"] }], contentCopied: [{ type: i0.Output, args: ["contentCopied"] }] } });
|
|
1372
1372
|
|
|
1373
1373
|
// libs/chat/src/lib/styles/chat-window.styles.ts
|
|
@@ -1378,8 +1378,8 @@ const CHAT_WINDOW_STYLES = `
|
|
|
1378
1378
|
flex-direction: column;
|
|
1379
1379
|
min-height: 0;
|
|
1380
1380
|
height: 100%;
|
|
1381
|
-
background: var(--
|
|
1382
|
-
color: var(--
|
|
1381
|
+
background: var(--tplane-chat-bg);
|
|
1382
|
+
color: var(--tplane-chat-text);
|
|
1383
1383
|
}
|
|
1384
1384
|
.chat-window__header {
|
|
1385
1385
|
height: 56px;
|
|
@@ -1387,16 +1387,16 @@ const CHAT_WINDOW_STYLES = `
|
|
|
1387
1387
|
display: flex;
|
|
1388
1388
|
align-items: center;
|
|
1389
1389
|
justify-content: space-between;
|
|
1390
|
-
padding: 0 var(--
|
|
1391
|
-
border-bottom: 1px solid var(--
|
|
1390
|
+
padding: 0 var(--tplane-chat-space-6);
|
|
1391
|
+
border-bottom: 1px solid var(--tplane-chat-separator);
|
|
1392
1392
|
font-weight: 500;
|
|
1393
|
-
color: var(--
|
|
1393
|
+
color: var(--tplane-chat-primary);
|
|
1394
1394
|
}
|
|
1395
1395
|
.chat-window__header:empty { display: none; }
|
|
1396
1396
|
/* When the consumer doesn't project a header, balance the chat content
|
|
1397
1397
|
* with breathing room at the top equivalent to the input gap at the bottom. */
|
|
1398
1398
|
.chat-window__header:empty + .chat-window__body {
|
|
1399
|
-
padding-top: var(--
|
|
1399
|
+
padding-top: var(--tplane-chat-input-gap);
|
|
1400
1400
|
}
|
|
1401
1401
|
.chat-window__body {
|
|
1402
1402
|
flex: 1;
|
|
@@ -1408,7 +1408,7 @@ const CHAT_WINDOW_STYLES = `
|
|
|
1408
1408
|
.chat-window__footer {
|
|
1409
1409
|
position: relative;
|
|
1410
1410
|
flex-shrink: 0;
|
|
1411
|
-
margin-top: var(--
|
|
1411
|
+
margin-top: var(--tplane-chat-input-gap);
|
|
1412
1412
|
}
|
|
1413
1413
|
.chat-window__footer:empty { display: none; }
|
|
1414
1414
|
.chat-window__scroll-fade {
|
|
@@ -1417,7 +1417,7 @@ const CHAT_WINDOW_STYLES = `
|
|
|
1417
1417
|
right: 0;
|
|
1418
1418
|
bottom: 100%;
|
|
1419
1419
|
height: 32px;
|
|
1420
|
-
background: linear-gradient(180deg, transparent 0%, var(--
|
|
1420
|
+
background: linear-gradient(180deg, transparent 0%, var(--tplane-chat-bg) 100%);
|
|
1421
1421
|
pointer-events: none;
|
|
1422
1422
|
}
|
|
1423
1423
|
`;
|
|
@@ -1433,7 +1433,7 @@ class ChatWindowComponent {
|
|
|
1433
1433
|
<div class="chat-window__scroll-fade" aria-hidden="true"></div>
|
|
1434
1434
|
<ng-content select="[chatFooter]" />
|
|
1435
1435
|
</div>
|
|
1436
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
1436
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:flex;flex-direction:column;min-height:0;height:100%;background:var(--tplane-chat-bg);color:var(--tplane-chat-text)}.chat-window__header{height:56px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 var(--tplane-chat-space-6);border-bottom:1px solid var(--tplane-chat-separator);font-weight:500;color:var(--tplane-chat-primary)}.chat-window__header:empty{display:none}.chat-window__header:empty+.chat-window__body{padding-top:var(--tplane-chat-input-gap)}.chat-window__body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.chat-window__footer{position:relative;flex-shrink:0;margin-top:var(--tplane-chat-input-gap)}.chat-window__footer:empty{display:none}.chat-window__scroll-fade{position:absolute;left:0;right:0;bottom:100%;height:32px;background:linear-gradient(180deg,transparent 0%,var(--tplane-chat-bg) 100%);pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1437
1437
|
}
|
|
1438
1438
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatWindowComponent, decorators: [{
|
|
1439
1439
|
type: Component,
|
|
@@ -1444,20 +1444,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
1444
1444
|
<div class="chat-window__scroll-fade" aria-hidden="true"></div>
|
|
1445
1445
|
<ng-content select="[chatFooter]" />
|
|
1446
1446
|
</div>
|
|
1447
|
-
`, styles: [":host{font-family:var(--
|
|
1447
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:flex;flex-direction:column;min-height:0;height:100%;background:var(--tplane-chat-bg);color:var(--tplane-chat-text)}.chat-window__header{height:56px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 var(--tplane-chat-space-6);border-bottom:1px solid var(--tplane-chat-separator);font-weight:500;color:var(--tplane-chat-primary)}.chat-window__header:empty{display:none}.chat-window__header:empty+.chat-window__body{padding-top:var(--tplane-chat-input-gap)}.chat-window__body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.chat-window__footer{position:relative;flex-shrink:0;margin-top:var(--tplane-chat-input-gap)}.chat-window__footer:empty{display:none}.chat-window__scroll-fade{position:absolute;left:0;right:0;bottom:100%;height:32px;background:linear-gradient(180deg,transparent 0%,var(--tplane-chat-bg) 100%);pointer-events:none}\n"] }]
|
|
1448
1448
|
}] });
|
|
1449
1449
|
|
|
1450
1450
|
// libs/chat/src/lib/styles/chat-trace.styles.ts
|
|
1451
1451
|
// SPDX-License-Identifier: MIT
|
|
1452
1452
|
const CHAT_TRACE_STYLES = `
|
|
1453
|
-
:host { display: block; font-size: var(--
|
|
1453
|
+
:host { display: block; font-size: var(--tplane-chat-font-size-sm); }
|
|
1454
1454
|
.chat-trace__header {
|
|
1455
1455
|
display: flex;
|
|
1456
1456
|
align-items: center;
|
|
1457
1457
|
gap: 0.25rem;
|
|
1458
1458
|
cursor: pointer;
|
|
1459
1459
|
user-select: none;
|
|
1460
|
-
color: var(--
|
|
1460
|
+
color: var(--tplane-chat-text-muted);
|
|
1461
1461
|
background: transparent;
|
|
1462
1462
|
border: 0;
|
|
1463
1463
|
padding: 0;
|
|
@@ -1473,13 +1473,13 @@ const CHAT_TRACE_STYLES = `
|
|
|
1473
1473
|
}
|
|
1474
1474
|
:host([data-expanded="true"]) .chat-trace__chevron { transform: rotate(90deg); }
|
|
1475
1475
|
.chat-trace__label { display: flex; align-items: center; gap: 0.5rem; flex: 1; min-width: 0; }
|
|
1476
|
-
:host([data-state="running"]) .chat-trace__label { animation:
|
|
1477
|
-
:host([data-state="error"]) .chat-trace__label { color: var(--
|
|
1476
|
+
:host([data-state="running"]) .chat-trace__label { animation: tplane-chat-pulse 1.5s ease-in-out infinite; }
|
|
1477
|
+
:host([data-state="error"]) .chat-trace__label { color: var(--tplane-chat-error-text); }
|
|
1478
1478
|
.chat-trace__content {
|
|
1479
1479
|
padding-left: 1rem;
|
|
1480
1480
|
padding-top: 0.375rem;
|
|
1481
1481
|
margin-left: 0.375rem;
|
|
1482
|
-
border-left: 1px solid var(--
|
|
1482
|
+
border-left: 1px solid var(--tplane-chat-separator);
|
|
1483
1483
|
max-height: 250px;
|
|
1484
1484
|
overflow: auto;
|
|
1485
1485
|
}
|
|
@@ -1538,7 +1538,7 @@ class ChatTraceComponent {
|
|
|
1538
1538
|
@if (expanded()) {
|
|
1539
1539
|
<div class="chat-trace__content"><ng-content /></div>
|
|
1540
1540
|
}
|
|
1541
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
1541
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;font-size:var(--tplane-chat-font-size-sm)}.chat-trace__header{display:flex;align-items:center;gap:.25rem;cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--tplane-chat-text-muted);background:transparent;border:0;padding:0;width:100%;text-align:left;font:inherit}.chat-trace__chevron{width:12px;height:12px;transition:transform .2s ease;flex-shrink:0}:host([data-expanded=\"true\"]) .chat-trace__chevron{transform:rotate(90deg)}.chat-trace__label{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}:host([data-state=\"running\"]) .chat-trace__label{animation:tplane-chat-pulse 1.5s ease-in-out infinite}:host([data-state=\"error\"]) .chat-trace__label{color:var(--tplane-chat-error-text)}.chat-trace__content{padding-left:1rem;padding-top:.375rem;margin-left:.375rem;border-left:1px solid var(--tplane-chat-separator);max-height:250px;overflow:auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1542
1542
|
}
|
|
1543
1543
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatTraceComponent, decorators: [{
|
|
1544
1544
|
type: Component,
|
|
@@ -1564,7 +1564,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
1564
1564
|
@if (expanded()) {
|
|
1565
1565
|
<div class="chat-trace__content"><ng-content /></div>
|
|
1566
1566
|
}
|
|
1567
|
-
`, styles: [":host{font-family:var(--
|
|
1567
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;font-size:var(--tplane-chat-font-size-sm)}.chat-trace__header{display:flex;align-items:center;gap:.25rem;cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--tplane-chat-text-muted);background:transparent;border:0;padding:0;width:100%;text-align:left;font:inherit}.chat-trace__chevron{width:12px;height:12px;transition:transform .2s ease;flex-shrink:0}:host([data-expanded=\"true\"]) .chat-trace__chevron{transform:rotate(90deg)}.chat-trace__label{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}:host([data-state=\"running\"]) .chat-trace__label{animation:tplane-chat-pulse 1.5s ease-in-out infinite}:host([data-state=\"error\"]) .chat-trace__label{color:var(--tplane-chat-error-text)}.chat-trace__content{padding-left:1rem;padding-top:.375rem;margin-left:.375rem;border-left:1px solid var(--tplane-chat-separator);max-height:250px;overflow:auto}\n"] }]
|
|
1568
1568
|
}], ctorParameters: () => [], propDecorators: { state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], defaultExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultExpanded", required: false }] }] } });
|
|
1569
1569
|
|
|
1570
1570
|
// libs/chat/src/lib/styles/chat-reasoning.styles.ts
|
|
@@ -1584,16 +1584,16 @@ const CHAT_REASONING_STYLES = `
|
|
|
1584
1584
|
align-items: center;
|
|
1585
1585
|
gap: 0.5rem;
|
|
1586
1586
|
padding: 4px 10px;
|
|
1587
|
-
background: var(--
|
|
1588
|
-
border: 1px solid var(--
|
|
1587
|
+
background: var(--tplane-chat-surface-alt);
|
|
1588
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
1589
1589
|
border-radius: 9999px;
|
|
1590
|
-
color: var(--
|
|
1591
|
-
font-size: var(--
|
|
1590
|
+
color: var(--tplane-chat-text-muted);
|
|
1591
|
+
font-size: var(--tplane-chat-font-size-xs);
|
|
1592
1592
|
font-family: inherit;
|
|
1593
1593
|
cursor: pointer;
|
|
1594
1594
|
line-height: 1.2;
|
|
1595
1595
|
}
|
|
1596
|
-
.chat-reasoning__header:hover { color: var(--
|
|
1596
|
+
.chat-reasoning__header:hover { color: var(--tplane-chat-text); }
|
|
1597
1597
|
|
|
1598
1598
|
.chat-reasoning__chevron {
|
|
1599
1599
|
width: 10px;
|
|
@@ -1607,7 +1607,7 @@ const CHAT_REASONING_STYLES = `
|
|
|
1607
1607
|
width: 6px;
|
|
1608
1608
|
height: 6px;
|
|
1609
1609
|
border-radius: 50%;
|
|
1610
|
-
background: var(--
|
|
1610
|
+
background: var(--tplane-chat-text-muted);
|
|
1611
1611
|
animation: chat-reasoning-pulse 1.2s ease-in-out infinite;
|
|
1612
1612
|
}
|
|
1613
1613
|
@keyframes chat-reasoning-pulse {
|
|
@@ -1618,8 +1618,8 @@ const CHAT_REASONING_STYLES = `
|
|
|
1618
1618
|
.chat-reasoning__body {
|
|
1619
1619
|
margin-top: 0.5rem;
|
|
1620
1620
|
padding-left: 12px;
|
|
1621
|
-
border-left: 2px solid var(--
|
|
1622
|
-
color: var(--
|
|
1621
|
+
border-left: 2px solid var(--tplane-chat-separator);
|
|
1622
|
+
color: var(--tplane-chat-text-muted);
|
|
1623
1623
|
}
|
|
1624
1624
|
.chat-reasoning__body chat-streaming-md { font-size: 0.95em; }
|
|
1625
1625
|
`;
|
|
@@ -1639,7 +1639,7 @@ const CHAT_REASONING_STYLES = `
|
|
|
1639
1639
|
// rules, tables, images, bold (`strong`), italic (`em`), strikethrough
|
|
1640
1640
|
// (`del`/`s`).
|
|
1641
1641
|
const CHAT_MARKDOWN_STYLES = `
|
|
1642
|
-
chat-streaming-md { display: block; color: var(--
|
|
1642
|
+
chat-streaming-md { display: block; color: var(--tplane-chat-text); line-height: var(--tplane-chat-line-height); }
|
|
1643
1643
|
|
|
1644
1644
|
/* Headings */
|
|
1645
1645
|
chat-streaming-md h1, chat-streaming-md h2, chat-streaming-md h3, chat-streaming-md h4, chat-streaming-md h5, chat-streaming-md h6 {
|
|
@@ -1653,20 +1653,20 @@ const CHAT_MARKDOWN_STYLES = `
|
|
|
1653
1653
|
chat-streaming-md h2 { font-size: 1.25em; }
|
|
1654
1654
|
chat-streaming-md h3 { font-size: 1.1em; }
|
|
1655
1655
|
chat-streaming-md h4 { font-size: 1em; }
|
|
1656
|
-
chat-streaming-md h5, chat-streaming-md h6 { font-size: 0.95em; color: var(--
|
|
1656
|
+
chat-streaming-md h5, chat-streaming-md h6 { font-size: 0.95em; color: var(--tplane-chat-text-muted); }
|
|
1657
1657
|
|
|
1658
1658
|
/* Paragraphs and inline emphasis */
|
|
1659
|
-
chat-streaming-md p { margin: 0 0 0.75rem; line-height: 1.6; font-size: var(--
|
|
1659
|
+
chat-streaming-md p { margin: 0 0 0.75rem; line-height: 1.6; font-size: var(--tplane-chat-font-size); }
|
|
1660
1660
|
chat-streaming-md p:last-child { margin-bottom: 0; }
|
|
1661
1661
|
chat-streaming-md strong, chat-streaming-md b { font-weight: 700; }
|
|
1662
1662
|
chat-streaming-md em, chat-streaming-md i { font-style: italic; }
|
|
1663
|
-
chat-streaming-md del, chat-streaming-md s { text-decoration: line-through; color: var(--
|
|
1664
|
-
chat-streaming-md mark { background: var(--
|
|
1663
|
+
chat-streaming-md del, chat-streaming-md s { text-decoration: line-through; color: var(--tplane-chat-text-muted); }
|
|
1664
|
+
chat-streaming-md mark { background: var(--tplane-chat-surface-alt); padding: 0 2px; border-radius: 2px; }
|
|
1665
1665
|
chat-streaming-md sub { font-size: 0.75em; vertical-align: sub; }
|
|
1666
1666
|
chat-streaming-md sup { font-size: 0.75em; vertical-align: super; }
|
|
1667
1667
|
|
|
1668
1668
|
/* Links */
|
|
1669
|
-
chat-streaming-md a { color: var(--
|
|
1669
|
+
chat-streaming-md a { color: var(--tplane-chat-primary); text-decoration: underline; text-underline-offset: 2px; }
|
|
1670
1670
|
chat-streaming-md a:hover { text-decoration-thickness: 2px; }
|
|
1671
1671
|
|
|
1672
1672
|
/* Lists (CommonMark + GFM task lists) */
|
|
@@ -1676,7 +1676,7 @@ const CHAT_MARKDOWN_STYLES = `
|
|
|
1676
1676
|
chat-streaming-md ul ul { list-style: circle outside; }
|
|
1677
1677
|
chat-streaming-md ul ul ul { list-style: square outside; }
|
|
1678
1678
|
chat-streaming-md li { margin: 0.2rem 0; }
|
|
1679
|
-
chat-streaming-md li::marker { color: var(--
|
|
1679
|
+
chat-streaming-md li::marker { color: var(--tplane-chat-text-muted); }
|
|
1680
1680
|
chat-streaming-md li > p { margin: 0 0 0.25rem; }
|
|
1681
1681
|
chat-streaming-md li > ul, chat-streaming-md li > ol { margin: 0.25rem 0 0; }
|
|
1682
1682
|
/* GFM task lists: marked emits <li><input type="checkbox" disabled> ... */
|
|
@@ -1685,21 +1685,21 @@ const CHAT_MARKDOWN_STYLES = `
|
|
|
1685
1685
|
|
|
1686
1686
|
/* Code (inline + fenced) */
|
|
1687
1687
|
chat-streaming-md code {
|
|
1688
|
-
background: var(--
|
|
1689
|
-
color: var(--
|
|
1688
|
+
background: var(--tplane-chat-surface-alt);
|
|
1689
|
+
color: var(--tplane-chat-text);
|
|
1690
1690
|
padding: 1px 5px;
|
|
1691
1691
|
border-radius: 4px;
|
|
1692
|
-
font-family: var(--
|
|
1692
|
+
font-family: var(--tplane-chat-font-mono);
|
|
1693
1693
|
font-size: 0.9em;
|
|
1694
1694
|
}
|
|
1695
1695
|
chat-streaming-md pre {
|
|
1696
|
-
background: var(--
|
|
1697
|
-
color: var(--
|
|
1696
|
+
background: var(--tplane-chat-surface-alt);
|
|
1697
|
+
color: var(--tplane-chat-text);
|
|
1698
1698
|
padding: 12px 14px;
|
|
1699
|
-
border-radius: var(--
|
|
1699
|
+
border-radius: var(--tplane-chat-radius-card);
|
|
1700
1700
|
overflow-x: auto;
|
|
1701
|
-
font-family: var(--
|
|
1702
|
-
font-size: var(--
|
|
1701
|
+
font-family: var(--tplane-chat-font-mono);
|
|
1702
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
1703
1703
|
line-height: 1.5;
|
|
1704
1704
|
margin: 0 0 0.75rem;
|
|
1705
1705
|
}
|
|
@@ -1707,17 +1707,17 @@ const CHAT_MARKDOWN_STYLES = `
|
|
|
1707
1707
|
|
|
1708
1708
|
/* Blockquote */
|
|
1709
1709
|
chat-streaming-md blockquote {
|
|
1710
|
-
border-left: 3px solid var(--
|
|
1710
|
+
border-left: 3px solid var(--tplane-chat-separator);
|
|
1711
1711
|
padding: 0.25rem 0 0.25rem 12px;
|
|
1712
1712
|
margin: 0 0 0.75rem;
|
|
1713
|
-
color: var(--
|
|
1713
|
+
color: var(--tplane-chat-text-muted);
|
|
1714
1714
|
}
|
|
1715
1715
|
chat-streaming-md blockquote > :last-child { margin-bottom: 0; }
|
|
1716
1716
|
|
|
1717
1717
|
/* Horizontal rule */
|
|
1718
1718
|
chat-streaming-md hr {
|
|
1719
1719
|
border: none;
|
|
1720
|
-
border-top: 1px solid var(--
|
|
1720
|
+
border-top: 1px solid var(--tplane-chat-separator);
|
|
1721
1721
|
margin: 1rem 0;
|
|
1722
1722
|
}
|
|
1723
1723
|
|
|
@@ -1728,9 +1728,9 @@ const CHAT_MARKDOWN_STYLES = `
|
|
|
1728
1728
|
width: 100%;
|
|
1729
1729
|
font-size: 0.95em;
|
|
1730
1730
|
}
|
|
1731
|
-
chat-streaming-md thead { background: var(--
|
|
1731
|
+
chat-streaming-md thead { background: var(--tplane-chat-surface-alt); }
|
|
1732
1732
|
chat-streaming-md th, chat-streaming-md td {
|
|
1733
|
-
border: 1px solid var(--
|
|
1733
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
1734
1734
|
padding: 6px 10px;
|
|
1735
1735
|
text-align: left;
|
|
1736
1736
|
vertical-align: top;
|
|
@@ -1786,11 +1786,11 @@ const CHAT_MARKDOWN_STYLES = `
|
|
|
1786
1786
|
align-items: center;
|
|
1787
1787
|
gap: 0.4rem;
|
|
1788
1788
|
padding: 0.25rem 0.5rem;
|
|
1789
|
-
background: var(--
|
|
1790
|
-
border: 1px dashed var(--
|
|
1789
|
+
background: var(--tplane-chat-surface-alt);
|
|
1790
|
+
border: 1px dashed var(--tplane-chat-separator);
|
|
1791
1791
|
border-radius: 6px;
|
|
1792
1792
|
font-size: 0.9em;
|
|
1793
|
-
color: var(--
|
|
1793
|
+
color: var(--tplane-chat-text-muted, currentColor);
|
|
1794
1794
|
opacity: 0.85;
|
|
1795
1795
|
}
|
|
1796
1796
|
chat-streaming-md .chat-md-image__icon { font-size: 1em; line-height: 1; }
|
|
@@ -1799,7 +1799,7 @@ const CHAT_MARKDOWN_STYLES = `
|
|
|
1799
1799
|
on overflow; the raw fallback (KaTeX missing or invalid LaTeX) reads as
|
|
1800
1800
|
monospace so the source delimiters look intentional. */
|
|
1801
1801
|
chat-streaming-md .chat-md-math--display { display: block; margin: 0.5em 0; overflow-x: auto; }
|
|
1802
|
-
chat-streaming-md .chat-md-math--raw { font-family: var(--
|
|
1802
|
+
chat-streaming-md .chat-md-math--raw { font-family: var(--tplane-chat-font-mono, ui-monospace, monospace); }
|
|
1803
1803
|
`;
|
|
1804
1804
|
|
|
1805
1805
|
// libs/chat/src/lib/markdown/markdown-view-registry.ts
|
|
@@ -2477,8 +2477,15 @@ const IS_HEADER_ROW = new InjectionToken('IS_HEADER_ROW', {
|
|
|
2477
2477
|
// SPDX-License-Identifier: MIT
|
|
2478
2478
|
class MarkdownTableRowComponent {
|
|
2479
2479
|
node = input.required(...(ngDevMode ? [{ debugName: "node" }] : []));
|
|
2480
|
+
registry = inject(MARKDOWN_VIEW_REGISTRY);
|
|
2481
|
+
resolve(child) {
|
|
2482
|
+
const entry = this.registry[child.type];
|
|
2483
|
+
if (!entry)
|
|
2484
|
+
return null;
|
|
2485
|
+
return typeof entry === 'function' ? entry : entry.component;
|
|
2486
|
+
}
|
|
2480
2487
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: MarkdownTableRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2481
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
2488
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: MarkdownTableRowComponent, isStandalone: true, selector: "chat-md-table-row", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
|
|
2482
2489
|
{
|
|
2483
2490
|
provide: IS_HEADER_ROW,
|
|
2484
2491
|
useFactory: () => {
|
|
@@ -2488,20 +2495,30 @@ class MarkdownTableRowComponent {
|
|
|
2488
2495
|
},
|
|
2489
2496
|
], ngImport: i0, template: `
|
|
2490
2497
|
<tr class="chat-md-table-row" [class.chat-md-table-row--header]="node().isHeader">
|
|
2491
|
-
|
|
2498
|
+
@for (child of node().children; track $index) {
|
|
2499
|
+
@let comp = resolve(child);
|
|
2500
|
+
@if (comp) {
|
|
2501
|
+
<ng-container *ngComponentOutlet="comp; inputs: { node: child }" />
|
|
2502
|
+
}
|
|
2503
|
+
}
|
|
2492
2504
|
</tr>
|
|
2493
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
2505
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2494
2506
|
}
|
|
2495
2507
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: MarkdownTableRowComponent, decorators: [{
|
|
2496
2508
|
type: Component,
|
|
2497
2509
|
args: [{
|
|
2498
2510
|
selector: 'chat-md-table-row',
|
|
2499
2511
|
standalone: true,
|
|
2500
|
-
imports: [
|
|
2512
|
+
imports: [NgComponentOutlet],
|
|
2501
2513
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2502
2514
|
template: `
|
|
2503
2515
|
<tr class="chat-md-table-row" [class.chat-md-table-row--header]="node().isHeader">
|
|
2504
|
-
|
|
2516
|
+
@for (child of node().children; track $index) {
|
|
2517
|
+
@let comp = resolve(child);
|
|
2518
|
+
@if (comp) {
|
|
2519
|
+
<ng-container *ngComponentOutlet="comp; inputs: { node: child }" />
|
|
2520
|
+
}
|
|
2521
|
+
}
|
|
2505
2522
|
</tr>
|
|
2506
2523
|
`,
|
|
2507
2524
|
providers: [
|
|
@@ -2676,6 +2693,15 @@ const cacheplaneMarkdownViews = views({
|
|
|
2676
2693
|
|
|
2677
2694
|
// libs/chat/src/lib/streaming/streaming-markdown.component.ts
|
|
2678
2695
|
// SPDX-License-Identifier: MIT
|
|
2696
|
+
// How long streaming must be false AND content stable before we finalize the
|
|
2697
|
+
// parser. finish() is only needed to mark final node status (not used visually)
|
|
2698
|
+
// and to revert a genuinely-truncated trailing construct to CommonMark — the
|
|
2699
|
+
// live `parser.root` projection already renders everything during streaming, so
|
|
2700
|
+
// this delay has NO visual cost. It must comfortably exceed real inter-chunk
|
|
2701
|
+
// gaps (e.g. the pause between a table's header row and its delimiter row) and
|
|
2702
|
+
// any `streaming` flag flap, so finalize never fires mid-stream and reverts an
|
|
2703
|
+
// in-progress table to raw "| a | b |" text.
|
|
2704
|
+
const FINALIZE_DEBOUNCE_MS = 600;
|
|
2679
2705
|
/**
|
|
2680
2706
|
* Renders streaming markdown by walking a @cacheplane/partial-markdown AST
|
|
2681
2707
|
* through @threadplane/render's view registry.
|
|
@@ -2706,6 +2732,44 @@ class ChatStreamingMdComponent {
|
|
|
2706
2732
|
this.resolver.markdownDefs.set(r.citations ?? new Map());
|
|
2707
2733
|
}
|
|
2708
2734
|
});
|
|
2735
|
+
// Debounced finalization. `finish()` is terminal and DESTRUCTIVE: it reverts
|
|
2736
|
+
// an incomplete trailing construct to its CommonMark fallback — e.g. a table
|
|
2737
|
+
// header before its delimiter row becomes raw "| a | b |" paragraph text. We
|
|
2738
|
+
// must therefore never finalize while tokens are still arriving. The
|
|
2739
|
+
// `streaming` input is not a reliable "still arriving" signal — it can flap
|
|
2740
|
+
// false mid-stream, and at cold start it can read false for an entire live
|
|
2741
|
+
// stream — so we finalize only once streaming is false AND no new content
|
|
2742
|
+
// has arrived for a short, imperceptible window. Any new content or a
|
|
2743
|
+
// streaming=true flap re-arms the timer, so finalize fires exactly once,
|
|
2744
|
+
// after the stream truly stops. Until then the live `parser.root` projection
|
|
2745
|
+
// (0.5.x) renders the in-progress content, including streaming tables.
|
|
2746
|
+
let timer = null;
|
|
2747
|
+
effect((onCleanup) => {
|
|
2748
|
+
const isStreaming = this.streaming();
|
|
2749
|
+
this.content(); // re-arm whenever new content arrives
|
|
2750
|
+
if (timer) {
|
|
2751
|
+
clearTimeout(timer);
|
|
2752
|
+
timer = null;
|
|
2753
|
+
}
|
|
2754
|
+
if (isStreaming || this.finished)
|
|
2755
|
+
return;
|
|
2756
|
+
timer = setTimeout(() => {
|
|
2757
|
+
timer = null;
|
|
2758
|
+
if (this.streaming() || this.finished)
|
|
2759
|
+
return;
|
|
2760
|
+
if (!this.prior.endsWith('\n'))
|
|
2761
|
+
this.parser.push('\n');
|
|
2762
|
+
this.parser.finish();
|
|
2763
|
+
this.finished = true;
|
|
2764
|
+
this.finalizeTick.update((v) => v + 1);
|
|
2765
|
+
}, FINALIZE_DEBOUNCE_MS);
|
|
2766
|
+
onCleanup(() => {
|
|
2767
|
+
if (timer) {
|
|
2768
|
+
clearTimeout(timer);
|
|
2769
|
+
timer = null;
|
|
2770
|
+
}
|
|
2771
|
+
});
|
|
2772
|
+
});
|
|
2709
2773
|
}
|
|
2710
2774
|
// Parser instance is rebuilt only when content diverges from the prior
|
|
2711
2775
|
// prefix (rare). For the common streaming case where content extends the
|
|
@@ -2713,41 +2777,29 @@ class ChatStreamingMdComponent {
|
|
|
2713
2777
|
parser = createPartialMarkdownParser();
|
|
2714
2778
|
prior = '';
|
|
2715
2779
|
finished = false;
|
|
2780
|
+
// Bumped by the debounced finalizer so the `root` computed re-materializes
|
|
2781
|
+
// the now-finished parser tree.
|
|
2782
|
+
finalizeTick = signal(0, ...(ngDevMode ? [{ debugName: "finalizeTick" }] : []));
|
|
2716
2783
|
root = computed(() => {
|
|
2717
2784
|
const c = this.content();
|
|
2718
|
-
|
|
2785
|
+
this.finalizeTick(); // re-materialize after a debounced finalize
|
|
2719
2786
|
if (c !== this.prior) {
|
|
2720
|
-
|
|
2787
|
+
// Re-parse from scratch when the content diverged from the prior prefix,
|
|
2788
|
+
// OR when the parser was already finalized — finish() is terminal, so
|
|
2789
|
+
// pushing further deltas into a finished parser corrupts its state. A
|
|
2790
|
+
// transient `streaming=false` mid-stream that finalized early thus
|
|
2791
|
+
// recovers here: new content rebuilds an open, projecting parser.
|
|
2792
|
+
if (c.startsWith(this.prior) && !this.finished) {
|
|
2721
2793
|
this.parser.push(c.slice(this.prior.length));
|
|
2722
2794
|
}
|
|
2723
2795
|
else {
|
|
2724
|
-
// Content shrank or diverged — reset.
|
|
2725
2796
|
this.parser = createPartialMarkdownParser();
|
|
2726
2797
|
this.finished = false;
|
|
2727
2798
|
if (c.length > 0)
|
|
2728
2799
|
this.parser.push(c);
|
|
2729
2800
|
}
|
|
2730
|
-
if (!isStreaming && !this.finished) {
|
|
2731
|
-
// @cacheplane/partial-markdown@0.3 does not flush trailing text on
|
|
2732
|
-
// finish() unless the buffer ends with a newline. Plain LLM
|
|
2733
|
-
// responses often omit the trailing newline, which causes the
|
|
2734
|
-
// parser to emit a document with zero children — i.e. the message
|
|
2735
|
-
// renders empty. Push a sentinel newline first to force the open
|
|
2736
|
-
// paragraph closed before we finalize.
|
|
2737
|
-
if (!c.endsWith('\n'))
|
|
2738
|
-
this.parser.push('\n');
|
|
2739
|
-
this.parser.finish();
|
|
2740
|
-
this.finished = true;
|
|
2741
|
-
}
|
|
2742
2801
|
this.prior = c;
|
|
2743
2802
|
}
|
|
2744
|
-
else if (!isStreaming && !this.finished) {
|
|
2745
|
-
// Streaming flipped to false without new content; ensure parser is finalized.
|
|
2746
|
-
if (!this.prior.endsWith('\n'))
|
|
2747
|
-
this.parser.push('\n');
|
|
2748
|
-
this.parser.finish();
|
|
2749
|
-
this.finished = true;
|
|
2750
|
-
}
|
|
2751
2803
|
// Materialize for Angular reactivity: produces a NEW root reference when
|
|
2752
2804
|
// any descendant subtree changed; same reference when nothing changed
|
|
2753
2805
|
// (structural sharing). This is what makes signal-based CD propagate
|
|
@@ -2765,7 +2817,7 @@ class ChatStreamingMdComponent {
|
|
|
2765
2817
|
@if (root(); as r) {
|
|
2766
2818
|
<chat-md-children [parent]="r" />
|
|
2767
2819
|
}
|
|
2768
|
-
`, isInline: true, styles: ["chat-streaming-md{display:block;color:var(--
|
|
2820
|
+
`, isInline: true, styles: ["chat-streaming-md{display:block;color:var(--tplane-chat-text);line-height:var(--tplane-chat-line-height)}chat-streaming-md h1,chat-streaming-md h2,chat-streaming-md h3,chat-streaming-md h4,chat-streaming-md h5,chat-streaming-md h6{font-weight:600;line-height:1.25;margin:1.25rem 0 .75rem}chat-streaming-md h1:first-child,chat-streaming-md h2:first-child,chat-streaming-md h3:first-child,chat-streaming-md h4:first-child,chat-streaming-md h5:first-child,chat-streaming-md h6:first-child{margin-top:0}chat-streaming-md h1{font-size:1.5em;font-weight:700}chat-streaming-md h2{font-size:1.25em}chat-streaming-md h3{font-size:1.1em}chat-streaming-md h4{font-size:1em}chat-streaming-md h5,chat-streaming-md h6{font-size:.95em;color:var(--tplane-chat-text-muted)}chat-streaming-md p{margin:0 0 .75rem;line-height:1.6;font-size:var(--tplane-chat-font-size)}chat-streaming-md p:last-child{margin-bottom:0}chat-streaming-md strong,chat-streaming-md b{font-weight:700}chat-streaming-md em,chat-streaming-md i{font-style:italic}chat-streaming-md del,chat-streaming-md s{text-decoration:line-through;color:var(--tplane-chat-text-muted)}chat-streaming-md mark{background:var(--tplane-chat-surface-alt);padding:0 2px;border-radius:2px}chat-streaming-md sub{font-size:.75em;vertical-align:sub}chat-streaming-md sup{font-size:.75em;vertical-align:super}chat-streaming-md a{color:var(--tplane-chat-primary);text-decoration:underline;text-underline-offset:2px}chat-streaming-md a:hover{text-decoration-thickness:2px}chat-streaming-md ul,chat-streaming-md ol{margin:0 0 .75rem;padding-left:1.5rem}chat-streaming-md ul{list-style:disc outside}chat-streaming-md ol{list-style:decimal outside}chat-streaming-md ul ul{list-style:circle outside}chat-streaming-md ul ul ul{list-style:square outside}chat-streaming-md li{margin:.2rem 0}chat-streaming-md li::marker{color:var(--tplane-chat-text-muted)}chat-streaming-md li>p{margin:0 0 .25rem}chat-streaming-md li>ul,chat-streaming-md li>ol{margin:.25rem 0 0}chat-streaming-md li:has(>input[type=checkbox]){list-style:none;margin-left:-1.25rem}chat-streaming-md li>input[type=checkbox]{margin-right:.5rem;vertical-align:middle}chat-streaming-md code{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text);padding:1px 5px;border-radius:4px;font-family:var(--tplane-chat-font-mono);font-size:.9em}chat-streaming-md pre{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text);padding:12px 14px;border-radius:var(--tplane-chat-radius-card);overflow-x:auto;font-family:var(--tplane-chat-font-mono);font-size:var(--tplane-chat-font-size-sm);line-height:1.5;margin:0 0 .75rem}chat-streaming-md pre code{background:transparent;padding:0;border-radius:0;font-size:inherit}chat-streaming-md blockquote{border-left:3px solid var(--tplane-chat-separator);padding:.25rem 0 .25rem 12px;margin:0 0 .75rem;color:var(--tplane-chat-text-muted)}chat-streaming-md blockquote>:last-child{margin-bottom:0}chat-streaming-md hr{border:none;border-top:1px solid var(--tplane-chat-separator);margin:1rem 0}chat-streaming-md table{border-collapse:collapse;margin:0 0 .75rem;width:100%;font-size:.95em}chat-streaming-md thead{background:var(--tplane-chat-surface-alt)}chat-streaming-md th,chat-streaming-md td{border:1px solid var(--tplane-chat-separator);padding:6px 10px;text-align:left;vertical-align:top}chat-streaming-md th{font-weight:600}chat-streaming-md chat-md-table{display:block;overflow-x:auto;max-width:100%;margin:0 0 .75rem}chat-streaming-md chat-md-table-row{display:contents}chat-streaming-md chat-md-table-cell{display:contents}chat-streaming-md chat-md-table>table{margin:0}chat-streaming-md li.chat-md-list-item--task{list-style:none;margin-left:-1.25rem;display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem}chat-streaming-md li.chat-md-list-item--task>input[type=checkbox]{margin:0;flex:0 0 auto;transform:translateY(2px)}chat-streaming-md li.chat-md-list-item--task>chat-md-children{flex:1 1 auto;min-width:0}chat-streaming-md li.chat-md-list-item--task>chat-md-children>chat-md-paragraph:first-child>p{margin:0}chat-streaming-md img{max-width:100%;height:auto;border-radius:6px}chat-streaming-md .chat-md-image--broken{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .5rem;background:var(--tplane-chat-surface-alt);border:1px dashed var(--tplane-chat-separator);border-radius:6px;font-size:.9em;color:var(--tplane-chat-text-muted, currentColor);opacity:.85}chat-streaming-md .chat-md-image__icon{font-size:1em;line-height:1}chat-streaming-md .chat-md-image__alt{font-style:italic}chat-streaming-md .chat-md-math--display{display:block;margin:.5em 0;overflow-x:auto}chat-streaming-md .chat-md-math--raw{font-family:var(--tplane-chat-font-mono, ui-monospace, monospace)}\n"], dependencies: [{ kind: "component", type: MarkdownChildrenComponent, selector: "chat-md-children", inputs: ["parent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2769
2821
|
}
|
|
2770
2822
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatStreamingMdComponent, decorators: [{
|
|
2771
2823
|
type: Component,
|
|
@@ -2779,7 +2831,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
2779
2831
|
useFactory: (host) => host.resolvedRegistry(),
|
|
2780
2832
|
deps: [ChatStreamingMdComponent],
|
|
2781
2833
|
},
|
|
2782
|
-
], styles: ["chat-streaming-md{display:block;color:var(--
|
|
2834
|
+
], styles: ["chat-streaming-md{display:block;color:var(--tplane-chat-text);line-height:var(--tplane-chat-line-height)}chat-streaming-md h1,chat-streaming-md h2,chat-streaming-md h3,chat-streaming-md h4,chat-streaming-md h5,chat-streaming-md h6{font-weight:600;line-height:1.25;margin:1.25rem 0 .75rem}chat-streaming-md h1:first-child,chat-streaming-md h2:first-child,chat-streaming-md h3:first-child,chat-streaming-md h4:first-child,chat-streaming-md h5:first-child,chat-streaming-md h6:first-child{margin-top:0}chat-streaming-md h1{font-size:1.5em;font-weight:700}chat-streaming-md h2{font-size:1.25em}chat-streaming-md h3{font-size:1.1em}chat-streaming-md h4{font-size:1em}chat-streaming-md h5,chat-streaming-md h6{font-size:.95em;color:var(--tplane-chat-text-muted)}chat-streaming-md p{margin:0 0 .75rem;line-height:1.6;font-size:var(--tplane-chat-font-size)}chat-streaming-md p:last-child{margin-bottom:0}chat-streaming-md strong,chat-streaming-md b{font-weight:700}chat-streaming-md em,chat-streaming-md i{font-style:italic}chat-streaming-md del,chat-streaming-md s{text-decoration:line-through;color:var(--tplane-chat-text-muted)}chat-streaming-md mark{background:var(--tplane-chat-surface-alt);padding:0 2px;border-radius:2px}chat-streaming-md sub{font-size:.75em;vertical-align:sub}chat-streaming-md sup{font-size:.75em;vertical-align:super}chat-streaming-md a{color:var(--tplane-chat-primary);text-decoration:underline;text-underline-offset:2px}chat-streaming-md a:hover{text-decoration-thickness:2px}chat-streaming-md ul,chat-streaming-md ol{margin:0 0 .75rem;padding-left:1.5rem}chat-streaming-md ul{list-style:disc outside}chat-streaming-md ol{list-style:decimal outside}chat-streaming-md ul ul{list-style:circle outside}chat-streaming-md ul ul ul{list-style:square outside}chat-streaming-md li{margin:.2rem 0}chat-streaming-md li::marker{color:var(--tplane-chat-text-muted)}chat-streaming-md li>p{margin:0 0 .25rem}chat-streaming-md li>ul,chat-streaming-md li>ol{margin:.25rem 0 0}chat-streaming-md li:has(>input[type=checkbox]){list-style:none;margin-left:-1.25rem}chat-streaming-md li>input[type=checkbox]{margin-right:.5rem;vertical-align:middle}chat-streaming-md code{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text);padding:1px 5px;border-radius:4px;font-family:var(--tplane-chat-font-mono);font-size:.9em}chat-streaming-md pre{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text);padding:12px 14px;border-radius:var(--tplane-chat-radius-card);overflow-x:auto;font-family:var(--tplane-chat-font-mono);font-size:var(--tplane-chat-font-size-sm);line-height:1.5;margin:0 0 .75rem}chat-streaming-md pre code{background:transparent;padding:0;border-radius:0;font-size:inherit}chat-streaming-md blockquote{border-left:3px solid var(--tplane-chat-separator);padding:.25rem 0 .25rem 12px;margin:0 0 .75rem;color:var(--tplane-chat-text-muted)}chat-streaming-md blockquote>:last-child{margin-bottom:0}chat-streaming-md hr{border:none;border-top:1px solid var(--tplane-chat-separator);margin:1rem 0}chat-streaming-md table{border-collapse:collapse;margin:0 0 .75rem;width:100%;font-size:.95em}chat-streaming-md thead{background:var(--tplane-chat-surface-alt)}chat-streaming-md th,chat-streaming-md td{border:1px solid var(--tplane-chat-separator);padding:6px 10px;text-align:left;vertical-align:top}chat-streaming-md th{font-weight:600}chat-streaming-md chat-md-table{display:block;overflow-x:auto;max-width:100%;margin:0 0 .75rem}chat-streaming-md chat-md-table-row{display:contents}chat-streaming-md chat-md-table-cell{display:contents}chat-streaming-md chat-md-table>table{margin:0}chat-streaming-md li.chat-md-list-item--task{list-style:none;margin-left:-1.25rem;display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem}chat-streaming-md li.chat-md-list-item--task>input[type=checkbox]{margin:0;flex:0 0 auto;transform:translateY(2px)}chat-streaming-md li.chat-md-list-item--task>chat-md-children{flex:1 1 auto;min-width:0}chat-streaming-md li.chat-md-list-item--task>chat-md-children>chat-md-paragraph:first-child>p{margin:0}chat-streaming-md img{max-width:100%;height:auto;border-radius:6px}chat-streaming-md .chat-md-image--broken{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .5rem;background:var(--tplane-chat-surface-alt);border:1px dashed var(--tplane-chat-separator);border-radius:6px;font-size:.9em;color:var(--tplane-chat-text-muted, currentColor);opacity:.85}chat-streaming-md .chat-md-image__icon{font-size:1em;line-height:1}chat-streaming-md .chat-md-image__alt{font-style:italic}chat-streaming-md .chat-md-math--display{display:block;margin:.5em 0;overflow-x:auto}chat-streaming-md .chat-md-math--raw{font-family:var(--tplane-chat-font-mono, ui-monospace, monospace)}\n"] }]
|
|
2783
2835
|
}], ctorParameters: () => [], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }], streaming: [{ type: i0.Input, args: [{ isSignal: true, alias: "streaming", required: false }] }], viewRegistry: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewRegistry", required: false }] }] } });
|
|
2784
2836
|
|
|
2785
2837
|
// SPDX-License-Identifier: MIT
|
|
@@ -2892,7 +2944,7 @@ class ChatReasoningComponent {
|
|
|
2892
2944
|
<chat-streaming-md [content]="content()" [streaming]="isStreaming()" />
|
|
2893
2945
|
</div>
|
|
2894
2946
|
}
|
|
2895
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
2947
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;margin:0 0 .5rem}:host([data-has-content=\"false\"]){display:none}.chat-reasoning__header{display:inline-flex;align-items:center;gap:.5rem;padding:4px 10px;background:var(--tplane-chat-surface-alt);border:1px solid var(--tplane-chat-separator);border-radius:9999px;color:var(--tplane-chat-text-muted);font-size:var(--tplane-chat-font-size-xs);font-family:inherit;cursor:pointer;line-height:1.2}.chat-reasoning__header:hover{color:var(--tplane-chat-text)}.chat-reasoning__chevron{width:10px;height:10px;transition:transform .12s ease}:host([data-expanded=\"true\"]) .chat-reasoning__chevron{transform:rotate(90deg)}.chat-reasoning__pulse{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--tplane-chat-text-muted);animation:chat-reasoning-pulse 1.2s ease-in-out infinite}@keyframes chat-reasoning-pulse{0%,to{opacity:.3}50%{opacity:1}}.chat-reasoning__body{margin-top:.5rem;padding-left:12px;border-left:2px solid var(--tplane-chat-separator);color:var(--tplane-chat-text-muted)}.chat-reasoning__body chat-streaming-md{font-size:.95em}\n"], dependencies: [{ kind: "component", type: ChatStreamingMdComponent, selector: "chat-streaming-md", inputs: ["content", "streaming", "viewRegistry"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2896
2948
|
}
|
|
2897
2949
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatReasoningComponent, decorators: [{
|
|
2898
2950
|
type: Component,
|
|
@@ -2920,7 +2972,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
2920
2972
|
<chat-streaming-md [content]="content()" [streaming]="isStreaming()" />
|
|
2921
2973
|
</div>
|
|
2922
2974
|
}
|
|
2923
|
-
`, styles: [":host{font-family:var(--
|
|
2975
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;margin:0 0 .5rem}:host([data-has-content=\"false\"]){display:none}.chat-reasoning__header{display:inline-flex;align-items:center;gap:.5rem;padding:4px 10px;background:var(--tplane-chat-surface-alt);border:1px solid var(--tplane-chat-separator);border-radius:9999px;color:var(--tplane-chat-text-muted);font-size:var(--tplane-chat-font-size-xs);font-family:inherit;cursor:pointer;line-height:1.2}.chat-reasoning__header:hover{color:var(--tplane-chat-text)}.chat-reasoning__chevron{width:10px;height:10px;transition:transform .12s ease}:host([data-expanded=\"true\"]) .chat-reasoning__chevron{transform:rotate(90deg)}.chat-reasoning__pulse{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--tplane-chat-text-muted);animation:chat-reasoning-pulse 1.2s ease-in-out infinite}@keyframes chat-reasoning-pulse{0%,to{opacity:.3}50%{opacity:1}}.chat-reasoning__body{margin-top:.5rem;padding-left:12px;border-left:2px solid var(--tplane-chat-separator);color:var(--tplane-chat-text-muted)}.chat-reasoning__body chat-streaming-md{font-size:.95em}\n"] }]
|
|
2924
2976
|
}], ctorParameters: () => [], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }], isStreaming: [{ type: i0.Input, args: [{ isSignal: true, alias: "isStreaming", required: false }] }], durationMs: [{ type: i0.Input, args: [{ isSignal: true, alias: "durationMs", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], defaultExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultExpanded", required: false }] }] } });
|
|
2925
2977
|
|
|
2926
2978
|
// libs/chat/src/lib/styles/chat-launcher-button.styles.ts
|
|
@@ -2930,15 +2982,15 @@ const CHAT_LAUNCHER_BUTTON_STYLES = `
|
|
|
2930
2982
|
.chat-launcher-button {
|
|
2931
2983
|
width: 56px;
|
|
2932
2984
|
height: 56px;
|
|
2933
|
-
border-radius: var(--
|
|
2934
|
-
background: var(--
|
|
2935
|
-
color: var(--
|
|
2985
|
+
border-radius: var(--tplane-chat-radius-launcher);
|
|
2986
|
+
background: var(--tplane-chat-primary);
|
|
2987
|
+
color: var(--tplane-chat-on-primary);
|
|
2936
2988
|
border: 0;
|
|
2937
2989
|
cursor: pointer;
|
|
2938
2990
|
display: flex;
|
|
2939
2991
|
align-items: center;
|
|
2940
2992
|
justify-content: center;
|
|
2941
|
-
box-shadow: var(--
|
|
2993
|
+
box-shadow: var(--tplane-chat-shadow-md);
|
|
2942
2994
|
transition: transform 200ms ease;
|
|
2943
2995
|
}
|
|
2944
2996
|
.chat-launcher-button:hover { transform: scale(1.05); }
|
|
@@ -2961,7 +3013,7 @@ class ChatLauncherButtonComponent {
|
|
|
2961
3013
|
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
|
|
2962
3014
|
</svg>
|
|
2963
3015
|
</button>
|
|
2964
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
3016
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:inline-block}.chat-launcher-button{width:56px;height:56px;border-radius:var(--tplane-chat-radius-launcher);background:var(--tplane-chat-primary);color:var(--tplane-chat-on-primary);border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--tplane-chat-shadow-md);transition:transform .2s ease}.chat-launcher-button:hover{transform:scale(1.05)}.chat-launcher-button svg{width:24px;height:24px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2965
3017
|
}
|
|
2966
3018
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatLauncherButtonComponent, decorators: [{
|
|
2967
3019
|
type: Component,
|
|
@@ -2971,7 +3023,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
2971
3023
|
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
|
|
2972
3024
|
</svg>
|
|
2973
3025
|
</button>
|
|
2974
|
-
`, styles: [":host{font-family:var(--
|
|
3026
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:inline-block}.chat-launcher-button{width:56px;height:56px;border-radius:var(--tplane-chat-radius-launcher);background:var(--tplane-chat-primary);color:var(--tplane-chat-on-primary);border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--tplane-chat-shadow-md);transition:transform .2s ease}.chat-launcher-button:hover{transform:scale(1.05)}.chat-launcher-button svg{width:24px;height:24px}\n"] }]
|
|
2975
3027
|
}], propDecorators: { clicked: [{ type: i0.Output, args: ["clicked"] }] } });
|
|
2976
3028
|
|
|
2977
3029
|
// SPDX-License-Identifier: MIT
|
|
@@ -2980,11 +3032,11 @@ const CHAT_SUGGESTIONS_STYLES = `
|
|
|
2980
3032
|
.chat-suggestions { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; }
|
|
2981
3033
|
.chat-suggestion {
|
|
2982
3034
|
padding: 6px 10px;
|
|
2983
|
-
font-size: var(--
|
|
2984
|
-
border-radius: var(--
|
|
2985
|
-
border: 1px solid var(--
|
|
3035
|
+
font-size: var(--tplane-chat-font-size-xs);
|
|
3036
|
+
border-radius: var(--tplane-chat-radius-bubble);
|
|
3037
|
+
border: 1px solid var(--tplane-chat-muted);
|
|
2986
3038
|
background: transparent;
|
|
2987
|
-
color: var(--
|
|
3039
|
+
color: var(--tplane-chat-text);
|
|
2988
3040
|
cursor: pointer;
|
|
2989
3041
|
transition: transform 200ms ease;
|
|
2990
3042
|
}
|
|
@@ -3003,7 +3055,7 @@ class ChatSuggestionsComponent {
|
|
|
3003
3055
|
<button type="button" class="chat-suggestion" (click)="selected.emit(s)">{{ s }}</button>
|
|
3004
3056
|
}
|
|
3005
3057
|
</div>
|
|
3006
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
3058
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block}.chat-suggestions{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.chat-suggestion{padding:6px 10px;font-size:var(--tplane-chat-font-size-xs);border-radius:var(--tplane-chat-radius-bubble);border:1px solid var(--tplane-chat-muted);background:transparent;color:var(--tplane-chat-text);cursor:pointer;transition:transform .2s ease}.chat-suggestion:hover{transform:scale(1.03)}.chat-suggestion:disabled{cursor:wait;opacity:.6}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3007
3059
|
}
|
|
3008
3060
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSuggestionsComponent, decorators: [{
|
|
3009
3061
|
type: Component,
|
|
@@ -3013,7 +3065,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
3013
3065
|
<button type="button" class="chat-suggestion" (click)="selected.emit(s)">{{ s }}</button>
|
|
3014
3066
|
}
|
|
3015
3067
|
</div>
|
|
3016
|
-
`, styles: [":host{font-family:var(--
|
|
3068
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block}.chat-suggestions{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.chat-suggestion{padding:6px 10px;font-size:var(--tplane-chat-font-size-xs);border-radius:var(--tplane-chat-radius-bubble);border:1px solid var(--tplane-chat-muted);background:transparent;color:var(--tplane-chat-text);cursor:pointer;transition:transform .2s ease}.chat-suggestion:hover{transform:scale(1.03)}.chat-suggestion:disabled{cursor:wait;opacity:.6}\n"] }]
|
|
3017
3069
|
}], propDecorators: { suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }], selected: [{ type: i0.Output, args: ["selected"] }] } });
|
|
3018
3070
|
|
|
3019
3071
|
// libs/chat/src/lib/styles/chat-input.styles.ts
|
|
@@ -3022,13 +3074,13 @@ const CHAT_INPUT_STYLES = `
|
|
|
3022
3074
|
:host {
|
|
3023
3075
|
display: block;
|
|
3024
3076
|
width: 100%;
|
|
3025
|
-
padding: 0 var(--
|
|
3077
|
+
padding: 0 var(--tplane-chat-edge-pad);
|
|
3026
3078
|
box-sizing: border-box;
|
|
3027
3079
|
}
|
|
3028
3080
|
|
|
3029
3081
|
.chat-input__container {
|
|
3030
3082
|
width: 100%;
|
|
3031
|
-
max-width: var(--
|
|
3083
|
+
max-width: var(--tplane-chat-max-width);
|
|
3032
3084
|
margin: 0 auto;
|
|
3033
3085
|
}
|
|
3034
3086
|
|
|
@@ -3036,8 +3088,8 @@ const CHAT_INPUT_STYLES = `
|
|
|
3036
3088
|
display: flex;
|
|
3037
3089
|
align-items: center;
|
|
3038
3090
|
gap: 8px;
|
|
3039
|
-
background: var(--
|
|
3040
|
-
border: 1px solid var(--
|
|
3091
|
+
background: var(--tplane-chat-surface);
|
|
3092
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
3041
3093
|
border-radius: 9999px;
|
|
3042
3094
|
padding: 8px 8px 8px 16px;
|
|
3043
3095
|
min-height: 56px;
|
|
@@ -3050,7 +3102,7 @@ const CHAT_INPUT_STYLES = `
|
|
|
3050
3102
|
outline: none;
|
|
3051
3103
|
resize: none;
|
|
3052
3104
|
background: transparent;
|
|
3053
|
-
color: var(--
|
|
3105
|
+
color: var(--tplane-chat-text);
|
|
3054
3106
|
font: inherit;
|
|
3055
3107
|
font-size: 1rem;
|
|
3056
3108
|
line-height: 1.5;
|
|
@@ -3058,9 +3110,9 @@ const CHAT_INPUT_STYLES = `
|
|
|
3058
3110
|
field-sizing: content;
|
|
3059
3111
|
overflow-y: auto;
|
|
3060
3112
|
}
|
|
3061
|
-
.chat-input__textarea::placeholder { color: var(--
|
|
3113
|
+
.chat-input__textarea::placeholder { color: var(--tplane-chat-text-muted); }
|
|
3062
3114
|
.chat-input__textarea::-webkit-scrollbar { width: 4px; }
|
|
3063
|
-
.chat-input__textarea::-webkit-scrollbar-thumb { background: var(--
|
|
3115
|
+
.chat-input__textarea::-webkit-scrollbar-thumb { background: var(--tplane-chat-separator); border-radius: 4px; }
|
|
3064
3116
|
|
|
3065
3117
|
.chat-input__controls {
|
|
3066
3118
|
display: flex;
|
|
@@ -3083,20 +3135,20 @@ const CHAT_INPUT_STYLES = `
|
|
|
3083
3135
|
padding: 0;
|
|
3084
3136
|
}
|
|
3085
3137
|
.chat-input__send {
|
|
3086
|
-
background: var(--
|
|
3087
|
-
color: var(--
|
|
3138
|
+
background: var(--tplane-chat-text);
|
|
3139
|
+
color: var(--tplane-chat-bg);
|
|
3088
3140
|
}
|
|
3089
3141
|
.chat-input__send:disabled {
|
|
3090
3142
|
opacity: 0.35;
|
|
3091
3143
|
cursor: not-allowed;
|
|
3092
|
-
background: var(--
|
|
3144
|
+
background: var(--tplane-chat-text-muted);
|
|
3093
3145
|
}
|
|
3094
3146
|
.chat-input__send:not(:disabled):hover { transform: scale(1.05); }
|
|
3095
3147
|
.chat-input__send svg { width: 16px; height: 16px; }
|
|
3096
3148
|
|
|
3097
3149
|
.chat-input__send--stop {
|
|
3098
|
-
background: var(--
|
|
3099
|
-
color: var(--
|
|
3150
|
+
background: var(--tplane-chat-text-muted);
|
|
3151
|
+
color: var(--tplane-chat-bg);
|
|
3100
3152
|
}
|
|
3101
3153
|
.chat-input__send--stop:hover { transform: scale(1.05); }
|
|
3102
3154
|
.chat-input__send--stop svg { width: 14px; height: 14px; }
|
|
@@ -3256,7 +3308,7 @@ class ChatInputComponent {
|
|
|
3256
3308
|
</div>
|
|
3257
3309
|
<ng-content select="[chatInputFooter]" />
|
|
3258
3310
|
</div>
|
|
3259
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
3311
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;width:100%;padding:0 var(--tplane-chat-edge-pad);box-sizing:border-box}.chat-input__container{width:100%;max-width:var(--tplane-chat-max-width);margin:0 auto}.chat-input__pill{display:flex;align-items:center;gap:8px;background:var(--tplane-chat-surface);border:1px solid var(--tplane-chat-separator);border-radius:9999px;padding:8px 8px 8px 16px;min-height:56px;box-sizing:border-box}.chat-input__textarea{flex:1 1 auto;border:0;outline:none;resize:none;background:transparent;color:var(--tplane-chat-text);font:inherit;font-size:1rem;line-height:1.5;padding:0;field-sizing:content;overflow-y:auto}.chat-input__textarea::placeholder{color:var(--tplane-chat-text-muted)}.chat-input__textarea::-webkit-scrollbar{width:4px}.chat-input__textarea::-webkit-scrollbar-thumb{background:var(--tplane-chat-separator);border-radius:4px}.chat-input__controls{display:flex;align-items:center;gap:4px;flex:none}.chat-input__send,.chat-input__send--stop{width:36px;height:36px;border-radius:50%;border:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:opacity .15s ease,transform .15s ease,background .15s ease;padding:0}.chat-input__send{background:var(--tplane-chat-text);color:var(--tplane-chat-bg)}.chat-input__send:disabled{opacity:.35;cursor:not-allowed;background:var(--tplane-chat-text-muted)}.chat-input__send:not(:disabled):hover{transform:scale(1.05)}.chat-input__send svg{width:16px;height:16px}.chat-input__send--stop{background:var(--tplane-chat-text-muted);color:var(--tplane-chat-bg)}.chat-input__send--stop:hover{transform:scale(1.05)}.chat-input__send--stop svg{width:14px;height:14px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3260
3312
|
}
|
|
3261
3313
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatInputComponent, decorators: [{
|
|
3262
3314
|
type: Component,
|
|
@@ -3314,7 +3366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
3314
3366
|
</div>
|
|
3315
3367
|
<ng-content select="[chatInputFooter]" />
|
|
3316
3368
|
</div>
|
|
3317
|
-
`, styles: [":host{font-family:var(--
|
|
3369
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;width:100%;padding:0 var(--tplane-chat-edge-pad);box-sizing:border-box}.chat-input__container{width:100%;max-width:var(--tplane-chat-max-width);margin:0 auto}.chat-input__pill{display:flex;align-items:center;gap:8px;background:var(--tplane-chat-surface);border:1px solid var(--tplane-chat-separator);border-radius:9999px;padding:8px 8px 8px 16px;min-height:56px;box-sizing:border-box}.chat-input__textarea{flex:1 1 auto;border:0;outline:none;resize:none;background:transparent;color:var(--tplane-chat-text);font:inherit;font-size:1rem;line-height:1.5;padding:0;field-sizing:content;overflow-y:auto}.chat-input__textarea::placeholder{color:var(--tplane-chat-text-muted)}.chat-input__textarea::-webkit-scrollbar{width:4px}.chat-input__textarea::-webkit-scrollbar-thumb{background:var(--tplane-chat-separator);border-radius:4px}.chat-input__controls{display:flex;align-items:center;gap:4px;flex:none}.chat-input__send,.chat-input__send--stop{width:36px;height:36px;border-radius:50%;border:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:opacity .15s ease,transform .15s ease,background .15s ease;padding:0}.chat-input__send{background:var(--tplane-chat-text);color:var(--tplane-chat-bg)}.chat-input__send:disabled{opacity:.35;cursor:not-allowed;background:var(--tplane-chat-text-muted)}.chat-input__send:not(:disabled):hover{transform:scale(1.05)}.chat-input__send svg{width:16px;height:16px}.chat-input__send--stop{background:var(--tplane-chat-text-muted);color:var(--tplane-chat-bg)}.chat-input__send--stop:hover{transform:scale(1.05)}.chat-input__send--stop svg{width:14px;height:14px}\n"] }]
|
|
3318
3370
|
}], ctorParameters: () => [], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], submitOnEnter: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitOnEnter", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], showStopButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showStopButton", required: false }] }], submitted: [{ type: i0.Output, args: ["submitted"] }], stopped: [{ type: i0.Output, args: ["stopped"] }], textareaEl: [{ type: i0.ViewChild, args: ['textareaEl', { isSignal: true }] }] } });
|
|
3319
3371
|
|
|
3320
3372
|
// SPDX-License-Identifier: MIT
|
|
@@ -3324,8 +3376,8 @@ const CHAT_TYPING_INDICATOR_STYLES = `
|
|
|
3324
3376
|
message renders. */
|
|
3325
3377
|
:host {
|
|
3326
3378
|
display: block;
|
|
3327
|
-
padding: 0 var(--
|
|
3328
|
-
max-width: var(--
|
|
3379
|
+
padding: 0 var(--tplane-chat-space-6) var(--tplane-chat-space-3);
|
|
3380
|
+
max-width: var(--tplane-chat-max-width);
|
|
3329
3381
|
margin: 0 auto;
|
|
3330
3382
|
width: 100%;
|
|
3331
3383
|
box-sizing: border-box;
|
|
@@ -3335,8 +3387,8 @@ const CHAT_TYPING_INDICATOR_STYLES = `
|
|
|
3335
3387
|
width: 6px;
|
|
3336
3388
|
height: 6px;
|
|
3337
3389
|
border-radius: 50%;
|
|
3338
|
-
background: var(--
|
|
3339
|
-
animation:
|
|
3390
|
+
background: var(--tplane-chat-text-muted);
|
|
3391
|
+
animation: tplane-chat-typing-dot 1.4s ease-in-out infinite both;
|
|
3340
3392
|
}
|
|
3341
3393
|
.chat-typing__dot:nth-child(2) { animation-delay: 0.2s; }
|
|
3342
3394
|
.chat-typing__dot:nth-child(3) { animation-delay: 0.4s; }
|
|
@@ -3384,7 +3436,7 @@ class ChatTypingIndicatorComponent {
|
|
|
3384
3436
|
<span class="chat-typing__dot"></span>
|
|
3385
3437
|
</div>
|
|
3386
3438
|
}
|
|
3387
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
3439
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;padding:0 var(--tplane-chat-space-6) var(--tplane-chat-space-3);max-width:var(--tplane-chat-max-width);margin:0 auto;width:100%;box-sizing:border-box}.chat-typing__dots{display:inline-flex;gap:4px;align-items:center}.chat-typing__dot{width:6px;height:6px;border-radius:50%;background:var(--tplane-chat-text-muted);animation:tplane-chat-typing-dot 1.4s ease-in-out infinite both}.chat-typing__dot:nth-child(2){animation-delay:.2s}.chat-typing__dot:nth-child(3){animation-delay:.4s}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3388
3440
|
}
|
|
3389
3441
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatTypingIndicatorComponent, decorators: [{
|
|
3390
3442
|
type: Component,
|
|
@@ -3396,7 +3448,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
3396
3448
|
<span class="chat-typing__dot"></span>
|
|
3397
3449
|
</div>
|
|
3398
3450
|
}
|
|
3399
|
-
`, styles: [":host{font-family:var(--
|
|
3451
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;padding:0 var(--tplane-chat-space-6) var(--tplane-chat-space-3);max-width:var(--tplane-chat-max-width);margin:0 auto;width:100%;box-sizing:border-box}.chat-typing__dots{display:inline-flex;gap:4px;align-items:center}.chat-typing__dot{width:6px;height:6px;border-radius:50%;background:var(--tplane-chat-text-muted);animation:tplane-chat-typing-dot 1.4s ease-in-out infinite both}.chat-typing__dot:nth-child(2){animation-delay:.2s}.chat-typing__dot:nth-child(3){animation-delay:.4s}\n"] }]
|
|
3400
3452
|
}], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }] } });
|
|
3401
3453
|
|
|
3402
3454
|
// libs/chat/src/lib/styles/chat-history-search-palette.styles.ts
|
|
@@ -3407,7 +3459,7 @@ const CHAT_HISTORY_SEARCH_PALETTE_STYLES = `
|
|
|
3407
3459
|
position: fixed;
|
|
3408
3460
|
inset: 0;
|
|
3409
3461
|
background: rgba(0, 0, 0, 0.4);
|
|
3410
|
-
z-index: var(--
|
|
3462
|
+
z-index: var(--tplane-chat-z-modal-scrim, 1100);
|
|
3411
3463
|
border: 0;
|
|
3412
3464
|
padding: 0;
|
|
3413
3465
|
cursor: pointer;
|
|
@@ -3419,11 +3471,11 @@ const CHAT_HISTORY_SEARCH_PALETTE_STYLES = `
|
|
|
3419
3471
|
transform: translateX(-50%);
|
|
3420
3472
|
width: min(560px, 90vw);
|
|
3421
3473
|
max-height: 70vh;
|
|
3422
|
-
background: var(--
|
|
3423
|
-
border: 1px solid var(--
|
|
3474
|
+
background: var(--tplane-chat-bg);
|
|
3475
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
3424
3476
|
border-radius: 12px;
|
|
3425
3477
|
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.25);
|
|
3426
|
-
z-index: var(--
|
|
3478
|
+
z-index: var(--tplane-chat-z-modal, 1101);
|
|
3427
3479
|
display: flex;
|
|
3428
3480
|
flex-direction: column;
|
|
3429
3481
|
overflow: hidden;
|
|
@@ -3433,12 +3485,12 @@ const CHAT_HISTORY_SEARCH_PALETTE_STYLES = `
|
|
|
3433
3485
|
align-items: center;
|
|
3434
3486
|
gap: 8px;
|
|
3435
3487
|
padding: 12px 16px;
|
|
3436
|
-
border-bottom: 1px solid var(--
|
|
3488
|
+
border-bottom: 1px solid var(--tplane-chat-separator);
|
|
3437
3489
|
}
|
|
3438
3490
|
.chat-history-search-palette__icon {
|
|
3439
3491
|
width: 18px;
|
|
3440
3492
|
height: 18px;
|
|
3441
|
-
color: var(--
|
|
3493
|
+
color: var(--tplane-chat-text-muted);
|
|
3442
3494
|
flex-shrink: 0;
|
|
3443
3495
|
}
|
|
3444
3496
|
.chat-history-search-palette__input {
|
|
@@ -3446,22 +3498,22 @@ const CHAT_HISTORY_SEARCH_PALETTE_STYLES = `
|
|
|
3446
3498
|
border: 0;
|
|
3447
3499
|
outline: none;
|
|
3448
3500
|
background: transparent;
|
|
3449
|
-
color: var(--
|
|
3501
|
+
color: var(--tplane-chat-text);
|
|
3450
3502
|
font: inherit;
|
|
3451
3503
|
font-size: 1rem;
|
|
3452
3504
|
}
|
|
3453
3505
|
.chat-history-search-palette__input::placeholder {
|
|
3454
|
-
color: var(--
|
|
3506
|
+
color: var(--tplane-chat-text-muted);
|
|
3455
3507
|
}
|
|
3456
3508
|
.chat-history-search-palette__close {
|
|
3457
3509
|
background: transparent;
|
|
3458
3510
|
border: 0;
|
|
3459
3511
|
padding: 4px;
|
|
3460
|
-
color: var(--
|
|
3512
|
+
color: var(--tplane-chat-text-muted);
|
|
3461
3513
|
cursor: pointer;
|
|
3462
3514
|
border-radius: 4px;
|
|
3463
3515
|
}
|
|
3464
|
-
.chat-history-search-palette__close:hover { color: var(--
|
|
3516
|
+
.chat-history-search-palette__close:hover { color: var(--tplane-chat-text); }
|
|
3465
3517
|
.chat-history-search-palette__list {
|
|
3466
3518
|
flex: 1 1 auto;
|
|
3467
3519
|
overflow-y: auto;
|
|
@@ -3477,23 +3529,23 @@ const CHAT_HISTORY_SEARCH_PALETTE_STYLES = `
|
|
|
3477
3529
|
cursor: pointer;
|
|
3478
3530
|
}
|
|
3479
3531
|
.chat-history-search-palette__row[aria-selected="true"] {
|
|
3480
|
-
background: var(--
|
|
3532
|
+
background: var(--tplane-chat-surface-alt);
|
|
3481
3533
|
}
|
|
3482
3534
|
.chat-history-search-palette__row-title {
|
|
3483
|
-
color: var(--
|
|
3484
|
-
font-size: var(--
|
|
3535
|
+
color: var(--tplane-chat-text);
|
|
3536
|
+
font-size: var(--tplane-chat-font-size);
|
|
3485
3537
|
}
|
|
3486
3538
|
.chat-history-search-palette__row-subtitle {
|
|
3487
|
-
color: var(--
|
|
3488
|
-
font-size: var(--
|
|
3539
|
+
color: var(--tplane-chat-text-muted);
|
|
3540
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
3489
3541
|
margin-top: 2px;
|
|
3490
3542
|
}
|
|
3491
3543
|
.chat-history-search-palette__empty,
|
|
3492
3544
|
.chat-history-search-palette__hint {
|
|
3493
3545
|
padding: 24px 16px;
|
|
3494
|
-
color: var(--
|
|
3546
|
+
color: var(--tplane-chat-text-muted);
|
|
3495
3547
|
text-align: center;
|
|
3496
|
-
font-size: var(--
|
|
3548
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
3497
3549
|
}
|
|
3498
3550
|
.chat-history-search-palette__skeleton {
|
|
3499
3551
|
padding: 8px 4px;
|
|
@@ -3501,9 +3553,9 @@ const CHAT_HISTORY_SEARCH_PALETTE_STYLES = `
|
|
|
3501
3553
|
.chat-history-search-palette__skeleton-row {
|
|
3502
3554
|
height: 36px;
|
|
3503
3555
|
margin: 4px 0;
|
|
3504
|
-
background: var(--
|
|
3556
|
+
background: var(--tplane-chat-surface-alt);
|
|
3505
3557
|
border-radius: 8px;
|
|
3506
|
-
animation:
|
|
3558
|
+
animation: tplane-chat-pulse 1.4s ease-in-out infinite;
|
|
3507
3559
|
}
|
|
3508
3560
|
`;
|
|
3509
3561
|
|
|
@@ -3656,7 +3708,7 @@ class ChatHistorySearchPaletteComponent {
|
|
|
3656
3708
|
}
|
|
3657
3709
|
</div>
|
|
3658
3710
|
}
|
|
3659
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
3711
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:contents}.chat-history-search-palette__scrim{position:fixed;inset:0;background:#0006;z-index:var(--tplane-chat-z-modal-scrim, 1100);border:0;padding:0;cursor:pointer}.chat-history-search-palette{position:fixed;top:15vh;left:50%;transform:translate(-50%);width:min(560px,90vw);max-height:70vh;background:var(--tplane-chat-bg);border:1px solid var(--tplane-chat-separator);border-radius:12px;box-shadow:0 16px 48px #00000040;z-index:var(--tplane-chat-z-modal, 1101);display:flex;flex-direction:column;overflow:hidden}.chat-history-search-palette__input-row{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--tplane-chat-separator)}.chat-history-search-palette__icon{width:18px;height:18px;color:var(--tplane-chat-text-muted);flex-shrink:0}.chat-history-search-palette__input{flex:1 1 auto;border:0;outline:none;background:transparent;color:var(--tplane-chat-text);font:inherit;font-size:1rem}.chat-history-search-palette__input::placeholder{color:var(--tplane-chat-text-muted)}.chat-history-search-palette__close{background:transparent;border:0;padding:4px;color:var(--tplane-chat-text-muted);cursor:pointer;border-radius:4px}.chat-history-search-palette__close:hover{color:var(--tplane-chat-text)}.chat-history-search-palette__list{flex:1 1 auto;overflow-y:auto;padding:4px;margin:0;list-style:none}.chat-history-search-palette__row{display:flex;flex-direction:column;padding:10px 12px;border-radius:8px;cursor:pointer}.chat-history-search-palette__row[aria-selected=true]{background:var(--tplane-chat-surface-alt)}.chat-history-search-palette__row-title{color:var(--tplane-chat-text);font-size:var(--tplane-chat-font-size)}.chat-history-search-palette__row-subtitle{color:var(--tplane-chat-text-muted);font-size:var(--tplane-chat-font-size-sm);margin-top:2px}.chat-history-search-palette__empty,.chat-history-search-palette__hint{padding:24px 16px;color:var(--tplane-chat-text-muted);text-align:center;font-size:var(--tplane-chat-font-size-sm)}.chat-history-search-palette__skeleton{padding:8px 4px}.chat-history-search-palette__skeleton-row{height:36px;margin:4px 0;background:var(--tplane-chat-surface-alt);border-radius:8px;animation:tplane-chat-pulse 1.4s ease-in-out infinite}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3660
3712
|
}
|
|
3661
3713
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatHistorySearchPaletteComponent, decorators: [{
|
|
3662
3714
|
type: Component,
|
|
@@ -3738,7 +3790,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
3738
3790
|
}
|
|
3739
3791
|
</div>
|
|
3740
3792
|
}
|
|
3741
|
-
`, styles: [":host{font-family:var(--
|
|
3793
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:contents}.chat-history-search-palette__scrim{position:fixed;inset:0;background:#0006;z-index:var(--tplane-chat-z-modal-scrim, 1100);border:0;padding:0;cursor:pointer}.chat-history-search-palette{position:fixed;top:15vh;left:50%;transform:translate(-50%);width:min(560px,90vw);max-height:70vh;background:var(--tplane-chat-bg);border:1px solid var(--tplane-chat-separator);border-radius:12px;box-shadow:0 16px 48px #00000040;z-index:var(--tplane-chat-z-modal, 1101);display:flex;flex-direction:column;overflow:hidden}.chat-history-search-palette__input-row{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--tplane-chat-separator)}.chat-history-search-palette__icon{width:18px;height:18px;color:var(--tplane-chat-text-muted);flex-shrink:0}.chat-history-search-palette__input{flex:1 1 auto;border:0;outline:none;background:transparent;color:var(--tplane-chat-text);font:inherit;font-size:1rem}.chat-history-search-palette__input::placeholder{color:var(--tplane-chat-text-muted)}.chat-history-search-palette__close{background:transparent;border:0;padding:4px;color:var(--tplane-chat-text-muted);cursor:pointer;border-radius:4px}.chat-history-search-palette__close:hover{color:var(--tplane-chat-text)}.chat-history-search-palette__list{flex:1 1 auto;overflow-y:auto;padding:4px;margin:0;list-style:none}.chat-history-search-palette__row{display:flex;flex-direction:column;padding:10px 12px;border-radius:8px;cursor:pointer}.chat-history-search-palette__row[aria-selected=true]{background:var(--tplane-chat-surface-alt)}.chat-history-search-palette__row-title{color:var(--tplane-chat-text);font-size:var(--tplane-chat-font-size)}.chat-history-search-palette__row-subtitle{color:var(--tplane-chat-text-muted);font-size:var(--tplane-chat-font-size-sm);margin-top:2px}.chat-history-search-palette__empty,.chat-history-search-palette__hint{padding:24px 16px;color:var(--tplane-chat-text-muted);text-align:center;font-size:var(--tplane-chat-font-size-sm)}.chat-history-search-palette__skeleton{padding:8px 4px}.chat-history-search-palette__skeleton-row{height:36px;margin:4px 0;background:var(--tplane-chat-surface-alt);border-radius:8px;animation:tplane-chat-pulse 1.4s ease-in-out infinite}\n"] }]
|
|
3742
3794
|
}], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], query: [{ type: i0.Input, args: [{ isSignal: true, alias: "query", required: false }] }, { type: i0.Output, args: ["queryChange"] }], results: [{ type: i0.Input, args: [{ isSignal: true, alias: "results", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], threadSelected: [{ type: i0.Output, args: ["threadSelected"] }], closed: [{ type: i0.Output, args: ["closed"] }], inputEl: [{ type: i0.ViewChild, args: ['inputEl', { isSignal: true }] }] } });
|
|
3743
3795
|
|
|
3744
3796
|
// libs/chat/src/lib/styles/chat-overflow-menu.styles.ts
|
|
@@ -3761,8 +3813,8 @@ const CHAT_OVERFLOW_MENU_STYLES = `
|
|
|
3761
3813
|
padding: 4px;
|
|
3762
3814
|
margin: 0;
|
|
3763
3815
|
list-style: none;
|
|
3764
|
-
background: var(--
|
|
3765
|
-
border: 1px solid var(--
|
|
3816
|
+
background: var(--tplane-chat-bg);
|
|
3817
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
3766
3818
|
border-radius: 8px;
|
|
3767
3819
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
|
3768
3820
|
}
|
|
@@ -3770,23 +3822,23 @@ const CHAT_OVERFLOW_MENU_STYLES = `
|
|
|
3770
3822
|
display: block;
|
|
3771
3823
|
padding: 8px 12px;
|
|
3772
3824
|
border-radius: 4px;
|
|
3773
|
-
color: var(--
|
|
3774
|
-
font-size: var(--
|
|
3825
|
+
color: var(--tplane-chat-text);
|
|
3826
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
3775
3827
|
cursor: pointer;
|
|
3776
3828
|
user-select: none;
|
|
3777
3829
|
}
|
|
3778
3830
|
.chat-overflow-menu__item:hover {
|
|
3779
|
-
background: var(--
|
|
3831
|
+
background: var(--tplane-chat-surface-alt);
|
|
3780
3832
|
}
|
|
3781
3833
|
.chat-overflow-menu__item:focus-visible {
|
|
3782
|
-
outline: 2px solid var(--
|
|
3834
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
3783
3835
|
outline-offset: -2px;
|
|
3784
3836
|
}
|
|
3785
3837
|
.chat-overflow-menu__item--destructive {
|
|
3786
|
-
color: var(--
|
|
3838
|
+
color: var(--tplane-chat-error-text);
|
|
3787
3839
|
}
|
|
3788
3840
|
.chat-overflow-menu__item--disabled {
|
|
3789
|
-
color: var(--
|
|
3841
|
+
color: var(--tplane-chat-text-muted);
|
|
3790
3842
|
cursor: not-allowed;
|
|
3791
3843
|
pointer-events: none;
|
|
3792
3844
|
}
|
|
@@ -3892,7 +3944,7 @@ class ChatOverflowMenuComponent {
|
|
|
3892
3944
|
}
|
|
3893
3945
|
</ul>
|
|
3894
3946
|
}
|
|
3895
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
3947
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:contents}.chat-overflow-menu__scrim{position:fixed;inset:0;background:transparent;z-index:59;border:0;padding:0;cursor:default}.chat-overflow-menu{position:fixed;z-index:60;min-width:160px;padding:4px;margin:0;list-style:none;background:var(--tplane-chat-bg);border:1px solid var(--tplane-chat-separator);border-radius:8px;box-shadow:0 8px 24px #00000026}.chat-overflow-menu__item{display:block;padding:8px 12px;border-radius:4px;color:var(--tplane-chat-text);font-size:var(--tplane-chat-font-size-sm);cursor:pointer;-webkit-user-select:none;user-select:none}.chat-overflow-menu__item:hover{background:var(--tplane-chat-surface-alt)}.chat-overflow-menu__item:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:-2px}.chat-overflow-menu__item--destructive{color:var(--tplane-chat-error-text)}.chat-overflow-menu__item--disabled{color:var(--tplane-chat-text-muted);cursor:not-allowed;pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3896
3948
|
}
|
|
3897
3949
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatOverflowMenuComponent, decorators: [{
|
|
3898
3950
|
type: Component,
|
|
@@ -3930,7 +3982,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
3930
3982
|
}
|
|
3931
3983
|
</ul>
|
|
3932
3984
|
}
|
|
3933
|
-
`, styles: [":host{font-family:var(--
|
|
3985
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:contents}.chat-overflow-menu__scrim{position:fixed;inset:0;background:transparent;z-index:59;border:0;padding:0;cursor:default}.chat-overflow-menu{position:fixed;z-index:60;min-width:160px;padding:4px;margin:0;list-style:none;background:var(--tplane-chat-bg);border:1px solid var(--tplane-chat-separator);border-radius:8px;box-shadow:0 8px 24px #00000026}.chat-overflow-menu__item{display:block;padding:8px 12px;border-radius:4px;color:var(--tplane-chat-text);font-size:var(--tplane-chat-font-size-sm);cursor:pointer;-webkit-user-select:none;user-select:none}.chat-overflow-menu__item:hover{background:var(--tplane-chat-surface-alt)}.chat-overflow-menu__item:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:-2px}.chat-overflow-menu__item--destructive{color:var(--tplane-chat-error-text)}.chat-overflow-menu__item--disabled{color:var(--tplane-chat-text-muted);cursor:not-allowed;pointer-events:none}\n"] }]
|
|
3934
3986
|
}], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], anchor: [{ type: i0.Input, args: [{ isSignal: true, alias: "anchor", required: false }] }], anchorPos: [{ type: i0.Input, args: [{ isSignal: true, alias: "anchorPos", required: false }] }], itemSelected: [{ type: i0.Output, args: ["itemSelected"] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
3935
3987
|
|
|
3936
3988
|
// libs/chat/src/lib/styles/chat-confirm-dialog.styles.ts
|
|
@@ -3954,21 +4006,21 @@ const CHAT_CONFIRM_DIALOG_STYLES = `
|
|
|
3954
4006
|
width: min(420px, 90vw);
|
|
3955
4007
|
z-index: 71;
|
|
3956
4008
|
padding: 20px;
|
|
3957
|
-
background: var(--
|
|
3958
|
-
border: 1px solid var(--
|
|
4009
|
+
background: var(--tplane-chat-bg);
|
|
4010
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
3959
4011
|
border-radius: 12px;
|
|
3960
4012
|
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.25);
|
|
3961
4013
|
}
|
|
3962
4014
|
.chat-confirm-dialog__title {
|
|
3963
4015
|
margin: 0 0 8px 0;
|
|
3964
|
-
color: var(--
|
|
4016
|
+
color: var(--tplane-chat-text);
|
|
3965
4017
|
font-size: 1.125rem;
|
|
3966
4018
|
font-weight: 600;
|
|
3967
4019
|
}
|
|
3968
4020
|
.chat-confirm-dialog__body {
|
|
3969
4021
|
margin: 0 0 16px 0;
|
|
3970
|
-
color: var(--
|
|
3971
|
-
font-size: var(--
|
|
4022
|
+
color: var(--tplane-chat-text-muted);
|
|
4023
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
3972
4024
|
line-height: 1.5;
|
|
3973
4025
|
}
|
|
3974
4026
|
.chat-confirm-dialog__actions {
|
|
@@ -3981,20 +4033,20 @@ const CHAT_CONFIRM_DIALOG_STYLES = `
|
|
|
3981
4033
|
padding: 8px 16px;
|
|
3982
4034
|
border-radius: 6px;
|
|
3983
4035
|
font: inherit;
|
|
3984
|
-
font-size: var(--
|
|
4036
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
3985
4037
|
cursor: pointer;
|
|
3986
|
-
border: 1px solid var(--
|
|
3987
|
-
background: var(--
|
|
3988
|
-
color: var(--
|
|
4038
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
4039
|
+
background: var(--tplane-chat-bg);
|
|
4040
|
+
color: var(--tplane-chat-text);
|
|
3989
4041
|
}
|
|
3990
|
-
.chat-confirm-dialog__cancel:hover { background: var(--
|
|
4042
|
+
.chat-confirm-dialog__cancel:hover { background: var(--tplane-chat-surface-alt); }
|
|
3991
4043
|
.chat-confirm-dialog__confirm {
|
|
3992
|
-
background: var(--
|
|
3993
|
-
color: var(--
|
|
4044
|
+
background: var(--tplane-chat-text);
|
|
4045
|
+
color: var(--tplane-chat-bg);
|
|
3994
4046
|
border-color: transparent;
|
|
3995
4047
|
}
|
|
3996
4048
|
.chat-confirm-dialog__confirm--destructive {
|
|
3997
|
-
background: var(--
|
|
4049
|
+
background: var(--tplane-chat-destructive);
|
|
3998
4050
|
color: #fff;
|
|
3999
4051
|
border-color: transparent;
|
|
4000
4052
|
}
|
|
@@ -4003,7 +4055,7 @@ const CHAT_CONFIRM_DIALOG_STYLES = `
|
|
|
4003
4055
|
}
|
|
4004
4056
|
.chat-confirm-dialog__cancel:focus-visible,
|
|
4005
4057
|
.chat-confirm-dialog__confirm:focus-visible {
|
|
4006
|
-
outline: 2px solid var(--
|
|
4058
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
4007
4059
|
outline-offset: 2px;
|
|
4008
4060
|
}
|
|
4009
4061
|
`;
|
|
@@ -4075,7 +4127,7 @@ class ChatConfirmDialogComponent {
|
|
|
4075
4127
|
</div>
|
|
4076
4128
|
</div>
|
|
4077
4129
|
}
|
|
4078
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
4130
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:contents}.chat-confirm-dialog__scrim{position:fixed;inset:0;background:#0006;z-index:70;border:0;padding:0;cursor:pointer}.chat-confirm-dialog{position:fixed;top:30vh;left:50%;transform:translate(-50%);width:min(420px,90vw);z-index:71;padding:20px;background:var(--tplane-chat-bg);border:1px solid var(--tplane-chat-separator);border-radius:12px;box-shadow:0 16px 48px #00000040}.chat-confirm-dialog__title{margin:0 0 8px;color:var(--tplane-chat-text);font-size:1.125rem;font-weight:600}.chat-confirm-dialog__body{margin:0 0 16px;color:var(--tplane-chat-text-muted);font-size:var(--tplane-chat-font-size-sm);line-height:1.5}.chat-confirm-dialog__actions{display:flex;justify-content:flex-end;gap:8px}.chat-confirm-dialog__cancel,.chat-confirm-dialog__confirm{padding:8px 16px;border-radius:6px;font:inherit;font-size:var(--tplane-chat-font-size-sm);cursor:pointer;border:1px solid var(--tplane-chat-separator);background:var(--tplane-chat-bg);color:var(--tplane-chat-text)}.chat-confirm-dialog__cancel:hover{background:var(--tplane-chat-surface-alt)}.chat-confirm-dialog__confirm{background:var(--tplane-chat-text);color:var(--tplane-chat-bg);border-color:transparent}.chat-confirm-dialog__confirm--destructive{background:var(--tplane-chat-destructive);color:#fff;border-color:transparent}.chat-confirm-dialog__confirm--destructive:hover{filter:brightness(1.1)}.chat-confirm-dialog__cancel:focus-visible,.chat-confirm-dialog__confirm:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:2px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4079
4131
|
}
|
|
4080
4132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatConfirmDialogComponent, decorators: [{
|
|
4081
4133
|
type: Component,
|
|
@@ -4116,7 +4168,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4116
4168
|
</div>
|
|
4117
4169
|
</div>
|
|
4118
4170
|
}
|
|
4119
|
-
`, styles: [":host{font-family:var(--
|
|
4171
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:contents}.chat-confirm-dialog__scrim{position:fixed;inset:0;background:#0006;z-index:70;border:0;padding:0;cursor:pointer}.chat-confirm-dialog{position:fixed;top:30vh;left:50%;transform:translate(-50%);width:min(420px,90vw);z-index:71;padding:20px;background:var(--tplane-chat-bg);border:1px solid var(--tplane-chat-separator);border-radius:12px;box-shadow:0 16px 48px #00000040}.chat-confirm-dialog__title{margin:0 0 8px;color:var(--tplane-chat-text);font-size:1.125rem;font-weight:600}.chat-confirm-dialog__body{margin:0 0 16px;color:var(--tplane-chat-text-muted);font-size:var(--tplane-chat-font-size-sm);line-height:1.5}.chat-confirm-dialog__actions{display:flex;justify-content:flex-end;gap:8px}.chat-confirm-dialog__cancel,.chat-confirm-dialog__confirm{padding:8px 16px;border-radius:6px;font:inherit;font-size:var(--tplane-chat-font-size-sm);cursor:pointer;border:1px solid var(--tplane-chat-separator);background:var(--tplane-chat-bg);color:var(--tplane-chat-text)}.chat-confirm-dialog__cancel:hover{background:var(--tplane-chat-surface-alt)}.chat-confirm-dialog__confirm{background:var(--tplane-chat-text);color:var(--tplane-chat-bg);border-color:transparent}.chat-confirm-dialog__confirm--destructive{background:var(--tplane-chat-destructive);color:#fff;border-color:transparent}.chat-confirm-dialog__confirm--destructive:hover{filter:brightness(1.1)}.chat-confirm-dialog__cancel:focus-visible,.chat-confirm-dialog__confirm:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:2px}\n"] }]
|
|
4120
4172
|
}], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], body: [{ type: i0.Input, args: [{ isSignal: true, alias: "body", required: false }] }], confirmLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmLabel", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelLabel", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], confirmed: [{ type: i0.Output, args: ["confirmed"] }], cancelled: [{ type: i0.Output, args: ["cancelled"] }], cancelBtn: [{ type: i0.ViewChild, args: ['cancelBtn', { isSignal: true }] }] } });
|
|
4121
4173
|
|
|
4122
4174
|
// libs/chat/src/lib/styles/chat-scroll-bubble.styles.ts
|
|
@@ -4140,9 +4192,9 @@ const CHAT_SCROLL_BUBBLE_STYLES = `
|
|
|
4140
4192
|
height: 36px;
|
|
4141
4193
|
padding: 0 12px;
|
|
4142
4194
|
border-radius: 9999px;
|
|
4143
|
-
background: var(--
|
|
4144
|
-
border: 1px solid var(--
|
|
4145
|
-
color: var(--
|
|
4195
|
+
background: var(--tplane-chat-surface);
|
|
4196
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
4197
|
+
color: var(--tplane-chat-text);
|
|
4146
4198
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
|
|
4147
4199
|
cursor: pointer;
|
|
4148
4200
|
transition: transform 150ms ease, box-shadow 150ms ease;
|
|
@@ -4153,8 +4205,8 @@ const CHAT_SCROLL_BUBBLE_STYLES = `
|
|
|
4153
4205
|
width: 6px;
|
|
4154
4206
|
height: 6px;
|
|
4155
4207
|
border-radius: 50%;
|
|
4156
|
-
background: var(--
|
|
4157
|
-
animation:
|
|
4208
|
+
background: var(--tplane-chat-text-muted);
|
|
4209
|
+
animation: tplane-chat-typing-dot 1.4s ease-in-out infinite both;
|
|
4158
4210
|
}
|
|
4159
4211
|
.chat-scroll-bubble__dot:nth-child(2) { animation-delay: 0.2s; }
|
|
4160
4212
|
.chat-scroll-bubble__dot:nth-child(3) { animation-delay: 0.4s; }
|
|
@@ -4194,7 +4246,7 @@ class ChatScrollBubbleComponent {
|
|
|
4194
4246
|
</svg>
|
|
4195
4247
|
}
|
|
4196
4248
|
</button>
|
|
4197
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
4249
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:8px;z-index:2;pointer-events:none}.chat-scroll-bubble{pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 12px;border-radius:9999px;background:var(--tplane-chat-surface);border:1px solid var(--tplane-chat-separator);color:var(--tplane-chat-text);box-shadow:0 2px 8px #0000001f;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.chat-scroll-bubble:hover{transform:scale(1.05)}.chat-scroll-bubble__dots{display:inline-flex;gap:4px;align-items:center}.chat-scroll-bubble__dot{width:6px;height:6px;border-radius:50%;background:var(--tplane-chat-text-muted);animation:tplane-chat-typing-dot 1.4s ease-in-out infinite both}.chat-scroll-bubble__dot:nth-child(2){animation-delay:.2s}.chat-scroll-bubble__dot:nth-child(3){animation-delay:.4s}.chat-scroll-bubble__arrow{width:16px;height:16px;display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4198
4250
|
}
|
|
4199
4251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatScrollBubbleComponent, decorators: [{
|
|
4200
4252
|
type: Component,
|
|
@@ -4220,7 +4272,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4220
4272
|
</svg>
|
|
4221
4273
|
}
|
|
4222
4274
|
</button>
|
|
4223
|
-
`, styles: [":host{font-family:var(--
|
|
4275
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:8px;z-index:2;pointer-events:none}.chat-scroll-bubble{pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 12px;border-radius:9999px;background:var(--tplane-chat-surface);border:1px solid var(--tplane-chat-separator);color:var(--tplane-chat-text);box-shadow:0 2px 8px #0000001f;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.chat-scroll-bubble:hover{transform:scale(1.05)}.chat-scroll-bubble__dots{display:inline-flex;gap:4px;align-items:center}.chat-scroll-bubble__dot{width:6px;height:6px;border-radius:50%;background:var(--tplane-chat-text-muted);animation:tplane-chat-typing-dot 1.4s ease-in-out infinite both}.chat-scroll-bubble__dot:nth-child(2){animation-delay:.2s}.chat-scroll-bubble__dot:nth-child(3){animation-delay:.4s}.chat-scroll-bubble__arrow{width:16px;height:16px;display:block}\n"] }]
|
|
4224
4276
|
}], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: true }] }], clicked: [{ type: i0.Output, args: ["clicked"] }] } });
|
|
4225
4277
|
|
|
4226
4278
|
// SPDX-License-Identifier: MIT
|
|
@@ -4230,34 +4282,34 @@ const CHAT_ERROR_STYLES = `
|
|
|
4230
4282
|
display: flex;
|
|
4231
4283
|
align-items: flex-start;
|
|
4232
4284
|
gap: 0.5rem;
|
|
4233
|
-
background: var(--
|
|
4234
|
-
border: 1px solid var(--
|
|
4235
|
-
color: var(--
|
|
4236
|
-
border-radius: var(--
|
|
4285
|
+
background: var(--tplane-chat-error-bg);
|
|
4286
|
+
border: 1px solid var(--tplane-chat-error-border);
|
|
4287
|
+
color: var(--tplane-chat-error-text);
|
|
4288
|
+
border-radius: var(--tplane-chat-radius-card);
|
|
4237
4289
|
padding: 8px 12px;
|
|
4238
|
-
font-size: var(--
|
|
4239
|
-
margin: 0 var(--
|
|
4290
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
4291
|
+
margin: 0 var(--tplane-chat-space-6) var(--tplane-chat-space-2);
|
|
4240
4292
|
}
|
|
4241
4293
|
.chat-error__icon { flex-shrink: 0; width: 16px; height: 16px; margin-top: 2px; }
|
|
4242
4294
|
.chat-error__msg { flex: 1; min-width: 0; word-break: break-word; }
|
|
4243
4295
|
.chat-error__retry {
|
|
4244
4296
|
flex-shrink: 0;
|
|
4245
4297
|
background: transparent;
|
|
4246
|
-
color: var(--
|
|
4247
|
-
border: 1px solid var(--
|
|
4248
|
-
border-radius: var(--
|
|
4298
|
+
color: var(--tplane-chat-error-text);
|
|
4299
|
+
border: 1px solid var(--tplane-chat-error-border);
|
|
4300
|
+
border-radius: var(--tplane-chat-radius-card);
|
|
4249
4301
|
padding: 2px 10px;
|
|
4250
|
-
font-size: var(--
|
|
4302
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
4251
4303
|
cursor: pointer;
|
|
4252
4304
|
transition: background 150ms ease, color 150ms ease;
|
|
4253
4305
|
white-space: nowrap;
|
|
4254
4306
|
}
|
|
4255
4307
|
.chat-error__retry:hover {
|
|
4256
|
-
background: var(--
|
|
4257
|
-
color: var(--
|
|
4308
|
+
background: var(--tplane-chat-error-border);
|
|
4309
|
+
color: var(--tplane-chat-error-text);
|
|
4258
4310
|
}
|
|
4259
4311
|
.chat-error__retry:focus-visible {
|
|
4260
|
-
outline: 2px solid var(--
|
|
4312
|
+
outline: 2px solid var(--tplane-chat-error-border);
|
|
4261
4313
|
outline-offset: 2px;
|
|
4262
4314
|
}
|
|
4263
4315
|
`;
|
|
@@ -4301,7 +4353,7 @@ class ChatErrorComponent {
|
|
|
4301
4353
|
}
|
|
4302
4354
|
</div>
|
|
4303
4355
|
}
|
|
4304
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
4356
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block}.chat-error{display:flex;align-items:flex-start;gap:.5rem;background:var(--tplane-chat-error-bg);border:1px solid var(--tplane-chat-error-border);color:var(--tplane-chat-error-text);border-radius:var(--tplane-chat-radius-card);padding:8px 12px;font-size:var(--tplane-chat-font-size-sm);margin:0 var(--tplane-chat-space-6) var(--tplane-chat-space-2)}.chat-error__icon{flex-shrink:0;width:16px;height:16px;margin-top:2px}.chat-error__msg{flex:1;min-width:0;word-break:break-word}.chat-error__retry{flex-shrink:0;background:transparent;color:var(--tplane-chat-error-text);border:1px solid var(--tplane-chat-error-border);border-radius:var(--tplane-chat-radius-card);padding:2px 10px;font-size:var(--tplane-chat-font-size-sm);cursor:pointer;transition:background .15s ease,color .15s ease;white-space:nowrap}.chat-error__retry:hover{background:var(--tplane-chat-error-border);color:var(--tplane-chat-error-text)}.chat-error__retry:focus-visible{outline:2px solid var(--tplane-chat-error-border);outline-offset:2px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4305
4357
|
}
|
|
4306
4358
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatErrorComponent, decorators: [{
|
|
4307
4359
|
type: Component,
|
|
@@ -4317,20 +4369,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4317
4369
|
}
|
|
4318
4370
|
</div>
|
|
4319
4371
|
}
|
|
4320
|
-
`, styles: [":host{font-family:var(--
|
|
4372
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block}.chat-error{display:flex;align-items:flex-start;gap:.5rem;background:var(--tplane-chat-error-bg);border:1px solid var(--tplane-chat-error-border);color:var(--tplane-chat-error-text);border-radius:var(--tplane-chat-radius-card);padding:8px 12px;font-size:var(--tplane-chat-font-size-sm);margin:0 var(--tplane-chat-space-6) var(--tplane-chat-space-2)}.chat-error__icon{flex-shrink:0;width:16px;height:16px;margin-top:2px}.chat-error__msg{flex:1;min-width:0;word-break:break-word}.chat-error__retry{flex-shrink:0;background:transparent;color:var(--tplane-chat-error-text);border:1px solid var(--tplane-chat-error-border);border-radius:var(--tplane-chat-radius-card);padding:2px 10px;font-size:var(--tplane-chat-font-size-sm);cursor:pointer;transition:background .15s ease,color .15s ease;white-space:nowrap}.chat-error__retry:hover{background:var(--tplane-chat-error-border);color:var(--tplane-chat-error-text)}.chat-error__retry:focus-visible{outline:2px solid var(--tplane-chat-error-border);outline-offset:2px}\n"] }]
|
|
4321
4373
|
}], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }] } });
|
|
4322
4374
|
|
|
4323
4375
|
// SPDX-License-Identifier: MIT
|
|
4324
4376
|
const CHAT_INTERRUPT_STYLES = `
|
|
4325
4377
|
:host { display: block; }
|
|
4326
4378
|
.chat-interrupt {
|
|
4327
|
-
background: var(--
|
|
4328
|
-
color: var(--
|
|
4329
|
-
border-left: 3px solid var(--
|
|
4330
|
-
border-radius: var(--
|
|
4379
|
+
background: var(--tplane-chat-warning-bg);
|
|
4380
|
+
color: var(--tplane-chat-warning-text);
|
|
4381
|
+
border-left: 3px solid var(--tplane-chat-warning-text);
|
|
4382
|
+
border-radius: var(--tplane-chat-radius-card);
|
|
4331
4383
|
padding: 12px 16px;
|
|
4332
|
-
margin: 0 var(--
|
|
4333
|
-
font-size: var(--
|
|
4384
|
+
margin: 0 var(--tplane-chat-space-6) var(--tplane-chat-space-2);
|
|
4385
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
4334
4386
|
}
|
|
4335
4387
|
.chat-interrupt__title { font-weight: 600; margin: 0 0 4px; display: flex; align-items: center; gap: 6px; }
|
|
4336
4388
|
.chat-interrupt__body { margin: 0 0 8px; opacity: 0.95; }
|
|
@@ -4382,7 +4434,7 @@ class ChatInterruptComponent {
|
|
|
4382
4434
|
}
|
|
4383
4435
|
</div>
|
|
4384
4436
|
}
|
|
4385
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
4437
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block}.chat-interrupt{background:var(--tplane-chat-warning-bg);color:var(--tplane-chat-warning-text);border-left:3px solid var(--tplane-chat-warning-text);border-radius:var(--tplane-chat-radius-card);padding:12px 16px;margin:0 var(--tplane-chat-space-6) var(--tplane-chat-space-2);font-size:var(--tplane-chat-font-size-sm)}.chat-interrupt__title{font-weight:600;margin:0 0 4px;display:flex;align-items:center;gap:6px}.chat-interrupt__body{margin:0 0 8px;opacity:.95}.chat-interrupt__actions{display:flex;gap:8px;flex-wrap:wrap}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4386
4438
|
}
|
|
4387
4439
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatInterruptComponent, decorators: [{
|
|
4388
4440
|
type: Component,
|
|
@@ -4405,7 +4457,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4405
4457
|
}
|
|
4406
4458
|
</div>
|
|
4407
4459
|
}
|
|
4408
|
-
`, styles: [":host{font-family:var(--
|
|
4460
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block}.chat-interrupt{background:var(--tplane-chat-warning-bg);color:var(--tplane-chat-warning-text);border-left:3px solid var(--tplane-chat-warning-text);border-radius:var(--tplane-chat-radius-card);padding:12px 16px;margin:0 var(--tplane-chat-space-6) var(--tplane-chat-space-2);font-size:var(--tplane-chat-font-size-sm)}.chat-interrupt__title{font-weight:600;margin:0 0 4px;display:flex;align-items:center;gap:6px}.chat-interrupt__body{margin:0 0 8px;opacity:.95}.chat-interrupt__actions{display:flex;gap:8px;flex-wrap:wrap}\n"] }]
|
|
4409
4461
|
}], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], templateRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
|
|
4410
4462
|
|
|
4411
4463
|
// libs/chat/src/lib/compositions/chat-tool-call-card/chat-tool-call-card.component.ts
|
|
@@ -4488,7 +4540,7 @@ class ChatToolCallCardComponent {
|
|
|
4488
4540
|
</div>
|
|
4489
4541
|
}
|
|
4490
4542
|
</chat-trace>
|
|
4491
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
4543
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block}.tcc__name{font-family:var(--tplane-chat-font-mono);font-size:var(--tplane-chat-font-size-sm, 13px);color:var(--tplane-chat-text-muted);font-weight:400;padding-left:2px}.tcc__pill{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border-radius:9999px;background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text-muted);font-size:10px;font-weight:500;margin-left:6px;line-height:1.4}.tcc__pill svg{width:10px;height:10px}.tcc__pill[data-status=running] svg{animation:tcc-spin .8s linear infinite}@keyframes tcc-spin{to{transform:rotate(360deg)}}.tcc__section{padding:8px 0}.tcc__section+.tcc__section{border-top:1px solid var(--tplane-chat-separator)}.tcc__section-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--tplane-chat-text-muted);margin:0 0 4px}.tcc__section-body{font-family:var(--tplane-chat-font-mono);font-size:var(--tplane-chat-font-size-xs);color:var(--tplane-chat-text);white-space:pre-wrap;overflow-x:auto;margin:0}\n"], dependencies: [{ kind: "component", type: ChatTraceComponent, selector: "chat-trace", inputs: ["state", "defaultExpanded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4492
4544
|
}
|
|
4493
4545
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatToolCallCardComponent, decorators: [{
|
|
4494
4546
|
type: Component,
|
|
@@ -4528,7 +4580,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4528
4580
|
</div>
|
|
4529
4581
|
}
|
|
4530
4582
|
</chat-trace>
|
|
4531
|
-
`, styles: [":host{font-family:var(--
|
|
4583
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block}.tcc__name{font-family:var(--tplane-chat-font-mono);font-size:var(--tplane-chat-font-size-sm, 13px);color:var(--tplane-chat-text-muted);font-weight:400;padding-left:2px}.tcc__pill{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border-radius:9999px;background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text-muted);font-size:10px;font-weight:500;margin-left:6px;line-height:1.4}.tcc__pill svg{width:10px;height:10px}.tcc__pill[data-status=running] svg{animation:tcc-spin .8s linear infinite}@keyframes tcc-spin{to{transform:rotate(360deg)}}.tcc__section{padding:8px 0}.tcc__section+.tcc__section{border-top:1px solid var(--tplane-chat-separator)}.tcc__section-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--tplane-chat-text-muted);margin:0 0 4px}.tcc__section-body{font-family:var(--tplane-chat-font-mono);font-size:var(--tplane-chat-font-size-xs);color:var(--tplane-chat-text);white-space:pre-wrap;overflow-x:auto;margin:0}\n"] }]
|
|
4532
4584
|
}], propDecorators: { toolCall: [{ type: i0.Input, args: [{ isSignal: true, alias: "toolCall", required: true }] }], defaultCollapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultCollapsed", required: false }] }] } });
|
|
4533
4585
|
|
|
4534
4586
|
// libs/chat/src/lib/compositions/chat-subagent-card/chat-subagent-card.component.ts
|
|
@@ -4541,10 +4593,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4541
4593
|
*/
|
|
4542
4594
|
function statusColor(status) {
|
|
4543
4595
|
switch (status) {
|
|
4544
|
-
case 'pending': return 'background: var(--
|
|
4545
|
-
case 'running': return 'background: var(--
|
|
4546
|
-
case 'complete': return 'color: var(--
|
|
4547
|
-
case 'error': return 'background: var(--
|
|
4596
|
+
case 'pending': return 'background: var(--tplane-chat-surface-alt); color: var(--tplane-chat-text-muted);';
|
|
4597
|
+
case 'running': return 'background: var(--tplane-chat-warning-bg); color: var(--tplane-chat-warning-text);';
|
|
4598
|
+
case 'complete': return 'color: var(--tplane-chat-success);';
|
|
4599
|
+
case 'error': return 'background: var(--tplane-chat-error-bg); color: var(--tplane-chat-error-text);';
|
|
4548
4600
|
}
|
|
4549
4601
|
}
|
|
4550
4602
|
function statusToTraceState(s) {
|
|
@@ -4595,7 +4647,7 @@ class ChatSubagentCardComponent {
|
|
|
4595
4647
|
</div>
|
|
4596
4648
|
}
|
|
4597
4649
|
</chat-trace>
|
|
4598
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
4650
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block}.sac__name{color:var(--tplane-chat-text);font-weight:500;font-size:var(--tplane-chat-font-size-sm)}.sac__id{font-family:var(--tplane-chat-font-mono);font-size:var(--tplane-chat-font-size-xs);color:var(--tplane-chat-text-muted);margin-left:4px}.sac__pill{padding:1px 8px;border-radius:9999px;font-size:11px;font-weight:500;margin-left:4px}.sac__pill[data-status=pending]{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text-muted)}.sac__pill[data-status=running]{background:var(--tplane-chat-warning-bg);color:var(--tplane-chat-warning-text)}.sac__pill[data-status=complete]{color:var(--tplane-chat-success)}.sac__pill[data-status=error]{background:var(--tplane-chat-error-bg);color:var(--tplane-chat-error-text)}.sac__count{font-size:var(--tplane-chat-font-size-xs);color:var(--tplane-chat-text-muted)}.sac__msg{padding:6px 0}.sac__msg+.sac__msg{border-top:1px solid var(--tplane-chat-separator)}.sac__reasoning{font-size:var(--tplane-chat-font-size-xs);color:var(--tplane-chat-text-muted);font-style:italic;margin-bottom:4px}\n"], dependencies: [{ kind: "component", type: ChatTraceComponent, selector: "chat-trace", inputs: ["state", "defaultExpanded"] }, { kind: "component", type: ChatToolCallCardComponent, selector: "chat-tool-call-card", inputs: ["toolCall", "defaultCollapsed"] }, { kind: "component", type: ChatStreamingMdComponent, selector: "chat-streaming-md", inputs: ["content", "streaming", "viewRegistry"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4599
4651
|
}
|
|
4600
4652
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSubagentCardComponent, decorators: [{
|
|
4601
4653
|
type: Component,
|
|
@@ -4621,7 +4673,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4621
4673
|
</div>
|
|
4622
4674
|
}
|
|
4623
4675
|
</chat-trace>
|
|
4624
|
-
`, styles: [":host{font-family:var(--
|
|
4676
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block}.sac__name{color:var(--tplane-chat-text);font-weight:500;font-size:var(--tplane-chat-font-size-sm)}.sac__id{font-family:var(--tplane-chat-font-mono);font-size:var(--tplane-chat-font-size-xs);color:var(--tplane-chat-text-muted);margin-left:4px}.sac__pill{padding:1px 8px;border-radius:9999px;font-size:11px;font-weight:500;margin-left:4px}.sac__pill[data-status=pending]{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text-muted)}.sac__pill[data-status=running]{background:var(--tplane-chat-warning-bg);color:var(--tplane-chat-warning-text)}.sac__pill[data-status=complete]{color:var(--tplane-chat-success)}.sac__pill[data-status=error]{background:var(--tplane-chat-error-bg);color:var(--tplane-chat-error-text)}.sac__count{font-size:var(--tplane-chat-font-size-xs);color:var(--tplane-chat-text-muted)}.sac__msg{padding:6px 0}.sac__msg+.sac__msg{border-top:1px solid var(--tplane-chat-separator)}.sac__reasoning{font-size:var(--tplane-chat-font-size-xs);color:var(--tplane-chat-text-muted);font-style:italic;margin-bottom:4px}\n"] }]
|
|
4625
4677
|
}], propDecorators: { subagent: [{ type: i0.Input, args: [{ isSignal: true, alias: "subagent", required: true }] }] } });
|
|
4626
4678
|
|
|
4627
4679
|
// libs/chat/src/lib/primitives/chat-tool-calls/chat-tool-call-template.directive.ts
|
|
@@ -4835,7 +4887,7 @@ class ChatToolCallsComponent {
|
|
|
4835
4887
|
}
|
|
4836
4888
|
}
|
|
4837
4889
|
}
|
|
4838
|
-
`, isInline: true, styles: [":host{display:block;margin-bottom:20px}.ctc__group{border:1px solid var(--
|
|
4890
|
+
`, isInline: true, styles: [":host{display:block;margin-bottom:20px}.ctc__group{border:1px solid var(--tplane-chat-separator);border-radius:var(--tplane-chat-radius-card);margin:0 0 4px}.ctc__group-header{display:flex;align-items:center;gap:.5rem;width:100%;padding:8px 12px;background:transparent;border:0;font:inherit;color:var(--tplane-chat-text);cursor:pointer;text-align:left}.ctc__group-chevron{width:10px;height:10px;transition:transform .12s ease}.ctc__group[data-expanded=true] .ctc__group-chevron{transform:rotate(90deg)}.ctc__group-body{padding:0 12px 8px;border-top:1px solid var(--tplane-chat-separator)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ChatToolCallCardComponent, selector: "chat-tool-call-card", inputs: ["toolCall", "defaultCollapsed"] }, { kind: "component", type: ChatSubagentCardComponent, selector: "chat-subagent-card", inputs: ["subagent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4839
4891
|
}
|
|
4840
4892
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatToolCallsComponent, decorators: [{
|
|
4841
4893
|
type: Component,
|
|
@@ -4874,24 +4926,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4874
4926
|
}
|
|
4875
4927
|
}
|
|
4876
4928
|
}
|
|
4877
|
-
`, styles: [":host{display:block;margin-bottom:20px}.ctc__group{border:1px solid var(--
|
|
4929
|
+
`, styles: [":host{display:block;margin-bottom:20px}.ctc__group{border:1px solid var(--tplane-chat-separator);border-radius:var(--tplane-chat-radius-card);margin:0 0 4px}.ctc__group-header{display:flex;align-items:center;gap:.5rem;width:100%;padding:8px 12px;background:transparent;border:0;font:inherit;color:var(--tplane-chat-text);cursor:pointer;text-align:left}.ctc__group-chevron{width:10px;height:10px;transition:transform .12s ease}.ctc__group[data-expanded=true] .ctc__group-chevron{transform:rotate(90deg)}.ctc__group-body{padding:0 12px 8px;border-top:1px solid var(--tplane-chat-separator)}\n"] }]
|
|
4878
4930
|
}], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], grouping: [{ type: i0.Input, args: [{ isSignal: true, alias: "grouping", required: false }] }], groupSummary: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupSummary", required: false }] }], excludeToolNames: [{ type: i0.Input, args: [{ isSignal: true, alias: "excludeToolNames", required: false }] }], templates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => ChatToolCallTemplateDirective), { isSignal: true }] }] } });
|
|
4879
4931
|
|
|
4880
4932
|
// SPDX-License-Identifier: MIT
|
|
4881
4933
|
const CHAT_GENERATIVE_UI_STYLES = `
|
|
4882
4934
|
:host {
|
|
4883
4935
|
display: block;
|
|
4884
|
-
color: var(--
|
|
4885
|
-
font-size: var(--
|
|
4886
|
-
line-height: var(--
|
|
4936
|
+
color: var(--tplane-chat-text);
|
|
4937
|
+
font-size: var(--tplane-chat-font-size);
|
|
4938
|
+
line-height: var(--tplane-chat-line-height);
|
|
4887
4939
|
}
|
|
4888
4940
|
.chat-generative-ui__error {
|
|
4889
|
-
color: var(--
|
|
4890
|
-
background: var(--
|
|
4891
|
-
border: 1px solid var(--
|
|
4892
|
-
border-radius: var(--
|
|
4941
|
+
color: var(--tplane-chat-error-text);
|
|
4942
|
+
background: var(--tplane-chat-error-bg);
|
|
4943
|
+
border: 1px solid var(--tplane-chat-error-border);
|
|
4944
|
+
border-radius: var(--tplane-chat-radius-card);
|
|
4893
4945
|
padding: 8px 12px;
|
|
4894
|
-
font-size: var(--
|
|
4946
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
4895
4947
|
}
|
|
4896
4948
|
`;
|
|
4897
4949
|
|
|
@@ -5011,7 +5063,7 @@ class ChatGenerativeUiComponent {
|
|
|
5011
5063
|
(events)="events.emit($event)"
|
|
5012
5064
|
/>
|
|
5013
5065
|
}
|
|
5014
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
5066
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;color:var(--tplane-chat-text);font-size:var(--tplane-chat-font-size);line-height:var(--tplane-chat-line-height)}.chat-generative-ui__error{color:var(--tplane-chat-error-text);background:var(--tplane-chat-error-bg);border:1px solid var(--tplane-chat-error-border);border-radius:var(--tplane-chat-radius-card);padding:8px 12px;font-size:var(--tplane-chat-font-size-sm)}\n"], dependencies: [{ kind: "component", type: RenderSpecComponent, selector: "render-spec", inputs: ["spec", "registry", "store", "functions", "handlers", "loading"], outputs: ["events"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5015
5067
|
}
|
|
5016
5068
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatGenerativeUiComponent, decorators: [{
|
|
5017
5069
|
type: Component,
|
|
@@ -5026,7 +5078,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
5026
5078
|
(events)="events.emit($event)"
|
|
5027
5079
|
/>
|
|
5028
5080
|
}
|
|
5029
|
-
`, styles: [":host{font-family:var(--
|
|
5081
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;color:var(--tplane-chat-text);font-size:var(--tplane-chat-font-size);line-height:var(--tplane-chat-line-height)}.chat-generative-ui__error{color:var(--tplane-chat-error-text);background:var(--tplane-chat-error-bg);border:1px solid var(--tplane-chat-error-border);border-radius:var(--tplane-chat-radius-card);padding:8px 12px;font-size:var(--tplane-chat-font-size-sm)}\n"] }]
|
|
5030
5082
|
}], ctorParameters: () => [], propDecorators: { spec: [{ type: i0.Input, args: [{ isSignal: true, alias: "spec", required: false }] }], registry: [{ type: i0.Input, args: [{ isSignal: true, alias: "registry", required: false }] }], store: [{ type: i0.Input, args: [{ isSignal: true, alias: "store", required: false }] }], handlers: [{ type: i0.Input, args: [{ isSignal: true, alias: "handlers", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], events: [{ type: i0.Output, args: ["events"] }] } });
|
|
5031
5083
|
|
|
5032
5084
|
// libs/chat/src/lib/primitives/chat-tool-views/chat-tool-views.component.ts
|
|
@@ -5167,7 +5219,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
5167
5219
|
|
|
5168
5220
|
// SPDX-License-Identifier: MIT
|
|
5169
5221
|
const CHAT_THREAD_LIST_STYLES = `
|
|
5170
|
-
:host { display: block; padding: var(--
|
|
5222
|
+
:host { display: block; padding: var(--tplane-chat-space-2); }
|
|
5171
5223
|
.chat-thread-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; }
|
|
5172
5224
|
.chat-thread-list__item {
|
|
5173
5225
|
display: flex;
|
|
@@ -5175,10 +5227,10 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5175
5227
|
gap: 2px;
|
|
5176
5228
|
min-height: 36px;
|
|
5177
5229
|
padding: 8px 12px;
|
|
5178
|
-
border-radius: var(--
|
|
5230
|
+
border-radius: var(--tplane-chat-radius-button);
|
|
5179
5231
|
cursor: pointer;
|
|
5180
|
-
color: var(--
|
|
5181
|
-
font-size: var(--
|
|
5232
|
+
color: var(--tplane-chat-text);
|
|
5233
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
5182
5234
|
background: transparent;
|
|
5183
5235
|
border: 0;
|
|
5184
5236
|
text-align: left;
|
|
@@ -5186,9 +5238,9 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5186
5238
|
box-sizing: border-box;
|
|
5187
5239
|
transition: background-color 150ms ease;
|
|
5188
5240
|
}
|
|
5189
|
-
.chat-thread-list__item:hover { background: color-mix(in srgb, var(--
|
|
5241
|
+
.chat-thread-list__item:hover { background: color-mix(in srgb, var(--tplane-chat-text) 5%, transparent); }
|
|
5190
5242
|
.chat-thread-list__item[data-active="true"] {
|
|
5191
|
-
background: var(--
|
|
5243
|
+
background: var(--tplane-chat-surface-alt);
|
|
5192
5244
|
font-weight: 500;
|
|
5193
5245
|
}
|
|
5194
5246
|
.chat-thread-list__item-title {
|
|
@@ -5199,24 +5251,24 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5199
5251
|
}
|
|
5200
5252
|
.chat-thread-list__item-time {
|
|
5201
5253
|
font-size: 11px;
|
|
5202
|
-
color: var(--
|
|
5254
|
+
color: var(--tplane-chat-text-muted);
|
|
5203
5255
|
display: block;
|
|
5204
5256
|
}
|
|
5205
5257
|
.chat-thread-list__new {
|
|
5206
5258
|
display: block;
|
|
5207
5259
|
width: 100%;
|
|
5208
5260
|
height: 36px;
|
|
5209
|
-
margin-bottom: var(--
|
|
5210
|
-
border: 1px dashed var(--
|
|
5211
|
-
border-radius: var(--
|
|
5261
|
+
margin-bottom: var(--tplane-chat-space-2);
|
|
5262
|
+
border: 1px dashed var(--tplane-chat-separator);
|
|
5263
|
+
border-radius: var(--tplane-chat-radius-button);
|
|
5212
5264
|
background: transparent;
|
|
5213
|
-
color: var(--
|
|
5265
|
+
color: var(--tplane-chat-primary);
|
|
5214
5266
|
cursor: pointer;
|
|
5215
|
-
font-size: var(--
|
|
5267
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
5216
5268
|
box-sizing: border-box;
|
|
5217
5269
|
transition: background 150ms ease;
|
|
5218
5270
|
}
|
|
5219
|
-
.chat-thread-list__new:hover { background: var(--
|
|
5271
|
+
.chat-thread-list__new:hover { background: var(--tplane-chat-surface-alt); }
|
|
5220
5272
|
.chat-thread-list__item-wrap {
|
|
5221
5273
|
position: relative;
|
|
5222
5274
|
display: flex;
|
|
@@ -5233,7 +5285,7 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5233
5285
|
height: 28px;
|
|
5234
5286
|
border: 0;
|
|
5235
5287
|
background: transparent;
|
|
5236
|
-
color: var(--
|
|
5288
|
+
color: var(--tplane-chat-text-muted);
|
|
5237
5289
|
border-radius: 4px;
|
|
5238
5290
|
cursor: pointer;
|
|
5239
5291
|
opacity: 0;
|
|
@@ -5247,12 +5299,12 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5247
5299
|
opacity: 1;
|
|
5248
5300
|
}
|
|
5249
5301
|
.chat-thread-list__kebab:hover {
|
|
5250
|
-
background: var(--
|
|
5251
|
-
color: var(--
|
|
5302
|
+
background: var(--tplane-chat-surface-alt);
|
|
5303
|
+
color: var(--tplane-chat-text);
|
|
5252
5304
|
}
|
|
5253
5305
|
.chat-thread-list__kebab:focus-visible {
|
|
5254
5306
|
opacity: 1;
|
|
5255
|
-
outline: 2px solid var(--
|
|
5307
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
5256
5308
|
outline-offset: 2px;
|
|
5257
5309
|
}
|
|
5258
5310
|
.chat-thread-list__initial {
|
|
@@ -5262,8 +5314,8 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5262
5314
|
border-radius: 50%;
|
|
5263
5315
|
align-items: center;
|
|
5264
5316
|
justify-content: center;
|
|
5265
|
-
background: var(--
|
|
5266
|
-
color: var(--
|
|
5317
|
+
background: var(--tplane-chat-surface-alt);
|
|
5318
|
+
color: var(--tplane-chat-text);
|
|
5267
5319
|
font-weight: 500;
|
|
5268
5320
|
font-size: 13px;
|
|
5269
5321
|
flex-shrink: 0;
|
|
@@ -5272,18 +5324,18 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5272
5324
|
width: 11px;
|
|
5273
5325
|
height: 11px;
|
|
5274
5326
|
margin-right: 4px;
|
|
5275
|
-
color: var(--
|
|
5327
|
+
color: var(--tplane-chat-text-muted);
|
|
5276
5328
|
vertical-align: -1px;
|
|
5277
5329
|
display: inline-block;
|
|
5278
5330
|
}
|
|
5279
5331
|
.chat-thread-list__edit {
|
|
5280
5332
|
flex: 1 1 auto;
|
|
5281
|
-
border: 1px solid var(--
|
|
5282
|
-
border-radius: var(--
|
|
5283
|
-
background: var(--
|
|
5284
|
-
color: var(--
|
|
5333
|
+
border: 1px solid var(--tplane-chat-primary);
|
|
5334
|
+
border-radius: var(--tplane-chat-radius-button);
|
|
5335
|
+
background: var(--tplane-chat-bg);
|
|
5336
|
+
color: var(--tplane-chat-text);
|
|
5285
5337
|
font: inherit;
|
|
5286
|
-
font-size: var(--
|
|
5338
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
5287
5339
|
padding: 6px 10px;
|
|
5288
5340
|
min-height: 36px;
|
|
5289
5341
|
outline: none;
|
|
@@ -5314,7 +5366,7 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5314
5366
|
display: inline-flex;
|
|
5315
5367
|
align-items: center;
|
|
5316
5368
|
justify-content: center;
|
|
5317
|
-
color: var(--
|
|
5369
|
+
color: var(--tplane-chat-text-muted);
|
|
5318
5370
|
font-size: 11px;
|
|
5319
5371
|
line-height: 1;
|
|
5320
5372
|
letter-spacing: -1px;
|
|
@@ -5345,7 +5397,7 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5345
5397
|
left: 4px;
|
|
5346
5398
|
right: 4px;
|
|
5347
5399
|
height: 2px;
|
|
5348
|
-
background: var(--
|
|
5400
|
+
background: var(--tplane-chat-primary);
|
|
5349
5401
|
border-radius: 1px;
|
|
5350
5402
|
pointer-events: none;
|
|
5351
5403
|
}
|
|
@@ -5913,7 +5965,7 @@ class ChatThreadListComponent {
|
|
|
5913
5965
|
(confirmed)="performDelete()"
|
|
5914
5966
|
(cancelled)="confirmDeleteId.set(null)"
|
|
5915
5967
|
/>
|
|
5916
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
5968
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;padding:var(--tplane-chat-space-2)}.chat-thread-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px}.chat-thread-list__item{display:flex;flex-direction:column;gap:2px;min-height:36px;padding:8px 12px;border-radius:var(--tplane-chat-radius-button);cursor:pointer;color:var(--tplane-chat-text);font-size:var(--tplane-chat-font-size-sm);background:transparent;border:0;text-align:left;width:100%;box-sizing:border-box;transition:background-color .15s ease}.chat-thread-list__item:hover{background:color-mix(in srgb,var(--tplane-chat-text) 5%,transparent)}.chat-thread-list__item[data-active=true]{background:var(--tplane-chat-surface-alt);font-weight:500}.chat-thread-list__item-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.chat-thread-list__item-time{font-size:11px;color:var(--tplane-chat-text-muted);display:block}.chat-thread-list__new{display:block;width:100%;height:36px;margin-bottom:var(--tplane-chat-space-2);border:1px dashed var(--tplane-chat-separator);border-radius:var(--tplane-chat-radius-button);background:transparent;color:var(--tplane-chat-primary);cursor:pointer;font-size:var(--tplane-chat-font-size-sm);box-sizing:border-box;transition:background .15s ease}.chat-thread-list__new:hover{background:var(--tplane-chat-surface-alt)}.chat-thread-list__item-wrap{position:relative;display:flex;align-items:center;gap:4px}.chat-thread-list__item-wrap .chat-thread-list__item{flex:1 1 auto;min-width:0}.chat-thread-list__kebab{flex-shrink:0;width:28px;height:28px;border:0;background:transparent;color:var(--tplane-chat-text-muted);border-radius:4px;cursor:pointer;opacity:0;transition:opacity .1s ease;padding:0;line-height:1;font-size:18px}.chat-thread-list__item-wrap:hover .chat-thread-list__kebab,.chat-thread-list__item-wrap:focus-within .chat-thread-list__kebab{opacity:1}.chat-thread-list__kebab:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}.chat-thread-list__kebab:focus-visible{opacity:1;outline:2px solid var(--tplane-chat-primary);outline-offset:2px}.chat-thread-list__initial{display:none;width:28px;height:28px;border-radius:50%;align-items:center;justify-content:center;background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text);font-weight:500;font-size:13px;flex-shrink:0}.chat-thread-list__item-pin{width:11px;height:11px;margin-right:4px;color:var(--tplane-chat-text-muted);vertical-align:-1px;display:inline-block}.chat-thread-list__edit{flex:1 1 auto;border:1px solid var(--tplane-chat-primary);border-radius:var(--tplane-chat-radius-button);background:var(--tplane-chat-bg);color:var(--tplane-chat-text);font:inherit;font-size:var(--tplane-chat-font-size-sm);padding:6px 10px;min-height:36px;outline:none;box-sizing:border-box}.chat-thread-list__pin-slot{position:relative;display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;margin-right:4px;flex-shrink:0;vertical-align:-1px}.chat-thread-list__pin-slot .chat-thread-list__item-pin{position:absolute;inset:0;width:13px;height:13px;opacity:1;transition:opacity .1s ease}.chat-thread-list__pin-slot .chat-thread-list__grip{position:absolute;inset:0;display:inline-flex;align-items:center;justify-content:center;color:var(--tplane-chat-text-muted);font-size:11px;line-height:1;letter-spacing:-1px;opacity:0;transition:opacity .1s ease;-webkit-user-select:none;user-select:none;pointer-events:none}.chat-thread-list__item-wrap:hover .chat-thread-list__pin-slot .chat-thread-list__item-pin,.chat-thread-list__item-wrap:focus-within .chat-thread-list__pin-slot .chat-thread-list__item-pin{opacity:0}.chat-thread-list__item-wrap:hover .chat-thread-list__pin-slot .chat-thread-list__grip,.chat-thread-list__item-wrap:focus-within .chat-thread-list__pin-slot .chat-thread-list__grip{opacity:1}.chat-thread-list__item-wrap[draggable=true]{cursor:grab}.chat-thread-list__item-wrap[draggable=true]:active{cursor:grabbing}.chat-thread-list__item-wrap[data-dragging=true]{opacity:.4}.chat-thread-list__item-wrap[data-drop-position=before]:before,.chat-thread-list__item-wrap[data-drop-position=after]:after{content:\"\";position:absolute;left:4px;right:4px;height:2px;background:var(--tplane-chat-primary);border-radius:1px;pointer-events:none}.chat-thread-list__item-wrap[data-drop-position=before]:before{top:-1px}.chat-thread-list__item-wrap[data-drop-position=after]:after{bottom:-1px}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ChatOverflowMenuComponent, selector: "chat-overflow-menu", inputs: ["open", "items", "anchor", "anchorPos"], outputs: ["itemSelected", "closed"] }, { kind: "component", type: ChatConfirmDialogComponent, selector: "chat-confirm-dialog", inputs: ["open", "title", "body", "confirmLabel", "cancelLabel", "tone"], outputs: ["confirmed", "cancelled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5917
5969
|
}
|
|
5918
5970
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatThreadListComponent, decorators: [{
|
|
5919
5971
|
type: Component,
|
|
@@ -6023,13 +6075,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
6023
6075
|
(confirmed)="performDelete()"
|
|
6024
6076
|
(cancelled)="confirmDeleteId.set(null)"
|
|
6025
6077
|
/>
|
|
6026
|
-
`, styles: [":host{font-family:var(--
|
|
6078
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;padding:var(--tplane-chat-space-2)}.chat-thread-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px}.chat-thread-list__item{display:flex;flex-direction:column;gap:2px;min-height:36px;padding:8px 12px;border-radius:var(--tplane-chat-radius-button);cursor:pointer;color:var(--tplane-chat-text);font-size:var(--tplane-chat-font-size-sm);background:transparent;border:0;text-align:left;width:100%;box-sizing:border-box;transition:background-color .15s ease}.chat-thread-list__item:hover{background:color-mix(in srgb,var(--tplane-chat-text) 5%,transparent)}.chat-thread-list__item[data-active=true]{background:var(--tplane-chat-surface-alt);font-weight:500}.chat-thread-list__item-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.chat-thread-list__item-time{font-size:11px;color:var(--tplane-chat-text-muted);display:block}.chat-thread-list__new{display:block;width:100%;height:36px;margin-bottom:var(--tplane-chat-space-2);border:1px dashed var(--tplane-chat-separator);border-radius:var(--tplane-chat-radius-button);background:transparent;color:var(--tplane-chat-primary);cursor:pointer;font-size:var(--tplane-chat-font-size-sm);box-sizing:border-box;transition:background .15s ease}.chat-thread-list__new:hover{background:var(--tplane-chat-surface-alt)}.chat-thread-list__item-wrap{position:relative;display:flex;align-items:center;gap:4px}.chat-thread-list__item-wrap .chat-thread-list__item{flex:1 1 auto;min-width:0}.chat-thread-list__kebab{flex-shrink:0;width:28px;height:28px;border:0;background:transparent;color:var(--tplane-chat-text-muted);border-radius:4px;cursor:pointer;opacity:0;transition:opacity .1s ease;padding:0;line-height:1;font-size:18px}.chat-thread-list__item-wrap:hover .chat-thread-list__kebab,.chat-thread-list__item-wrap:focus-within .chat-thread-list__kebab{opacity:1}.chat-thread-list__kebab:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}.chat-thread-list__kebab:focus-visible{opacity:1;outline:2px solid var(--tplane-chat-primary);outline-offset:2px}.chat-thread-list__initial{display:none;width:28px;height:28px;border-radius:50%;align-items:center;justify-content:center;background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text);font-weight:500;font-size:13px;flex-shrink:0}.chat-thread-list__item-pin{width:11px;height:11px;margin-right:4px;color:var(--tplane-chat-text-muted);vertical-align:-1px;display:inline-block}.chat-thread-list__edit{flex:1 1 auto;border:1px solid var(--tplane-chat-primary);border-radius:var(--tplane-chat-radius-button);background:var(--tplane-chat-bg);color:var(--tplane-chat-text);font:inherit;font-size:var(--tplane-chat-font-size-sm);padding:6px 10px;min-height:36px;outline:none;box-sizing:border-box}.chat-thread-list__pin-slot{position:relative;display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;margin-right:4px;flex-shrink:0;vertical-align:-1px}.chat-thread-list__pin-slot .chat-thread-list__item-pin{position:absolute;inset:0;width:13px;height:13px;opacity:1;transition:opacity .1s ease}.chat-thread-list__pin-slot .chat-thread-list__grip{position:absolute;inset:0;display:inline-flex;align-items:center;justify-content:center;color:var(--tplane-chat-text-muted);font-size:11px;line-height:1;letter-spacing:-1px;opacity:0;transition:opacity .1s ease;-webkit-user-select:none;user-select:none;pointer-events:none}.chat-thread-list__item-wrap:hover .chat-thread-list__pin-slot .chat-thread-list__item-pin,.chat-thread-list__item-wrap:focus-within .chat-thread-list__pin-slot .chat-thread-list__item-pin{opacity:0}.chat-thread-list__item-wrap:hover .chat-thread-list__pin-slot .chat-thread-list__grip,.chat-thread-list__item-wrap:focus-within .chat-thread-list__pin-slot .chat-thread-list__grip{opacity:1}.chat-thread-list__item-wrap[draggable=true]{cursor:grab}.chat-thread-list__item-wrap[draggable=true]:active{cursor:grabbing}.chat-thread-list__item-wrap[data-dragging=true]{opacity:.4}.chat-thread-list__item-wrap[data-drop-position=before]:before,.chat-thread-list__item-wrap[data-drop-position=after]:after{content:\"\";position:absolute;left:4px;right:4px;height:2px;background:var(--tplane-chat-primary);border-radius:1px;pointer-events:none}.chat-thread-list__item-wrap[data-drop-position=before]:before{top:-1px}.chat-thread-list__item-wrap[data-drop-position=after]:after{bottom:-1px}\n"] }]
|
|
6027
6079
|
}], propDecorators: { threads: [{ type: i0.Input, args: [{ isSignal: true, alias: "threads", required: true }] }], activeThreadId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeThreadId", required: false }] }], showNewThreadButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showNewThreadButton", required: false }] }], actions: [{ type: i0.Input, args: [{ isSignal: true, alias: "actions", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], projects: [{ type: i0.Input, args: [{ isSignal: true, alias: "projects", required: false }] }], threadSelected: [{ type: i0.Output, args: ["threadSelected"] }], newThreadRequested: [{ type: i0.Output, args: ["newThreadRequested"] }], templateRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], editInput: [{ type: i0.ViewChild, args: ['editInput', { isSignal: true }] }] } });
|
|
6028
6080
|
|
|
6029
6081
|
// libs/chat/src/lib/styles/chat-project-list.styles.ts
|
|
6030
6082
|
// SPDX-License-Identifier: MIT
|
|
6031
6083
|
const CHAT_PROJECT_LIST_STYLES = `
|
|
6032
|
-
:host { display: block; padding: var(--
|
|
6084
|
+
:host { display: block; padding: var(--tplane-chat-space-2); }
|
|
6033
6085
|
.chat-project-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; }
|
|
6034
6086
|
.chat-project-list__item-wrap {
|
|
6035
6087
|
position: relative;
|
|
@@ -6042,10 +6094,10 @@ const CHAT_PROJECT_LIST_STYLES = `
|
|
|
6042
6094
|
min-width: 0;
|
|
6043
6095
|
min-height: 32px;
|
|
6044
6096
|
padding: 6px 12px;
|
|
6045
|
-
border-radius: var(--
|
|
6097
|
+
border-radius: var(--tplane-chat-radius-button);
|
|
6046
6098
|
cursor: pointer;
|
|
6047
|
-
color: var(--
|
|
6048
|
-
font-size: var(--
|
|
6099
|
+
color: var(--tplane-chat-text);
|
|
6100
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
6049
6101
|
background: transparent;
|
|
6050
6102
|
border: 0;
|
|
6051
6103
|
text-align: left;
|
|
@@ -6055,9 +6107,9 @@ const CHAT_PROJECT_LIST_STYLES = `
|
|
|
6055
6107
|
text-overflow: ellipsis;
|
|
6056
6108
|
white-space: nowrap;
|
|
6057
6109
|
}
|
|
6058
|
-
.chat-project-list__item:hover { background: color-mix(in srgb, var(--
|
|
6110
|
+
.chat-project-list__item:hover { background: color-mix(in srgb, var(--tplane-chat-text) 5%, transparent); }
|
|
6059
6111
|
.chat-project-list__item[data-active="true"] {
|
|
6060
|
-
background: var(--
|
|
6112
|
+
background: var(--tplane-chat-surface-alt);
|
|
6061
6113
|
font-weight: 500;
|
|
6062
6114
|
}
|
|
6063
6115
|
.chat-project-list__kebab {
|
|
@@ -6066,7 +6118,7 @@ const CHAT_PROJECT_LIST_STYLES = `
|
|
|
6066
6118
|
height: 28px;
|
|
6067
6119
|
border: 0;
|
|
6068
6120
|
background: transparent;
|
|
6069
|
-
color: var(--
|
|
6121
|
+
color: var(--tplane-chat-text-muted);
|
|
6070
6122
|
border-radius: 4px;
|
|
6071
6123
|
cursor: pointer;
|
|
6072
6124
|
opacity: 0;
|
|
@@ -6080,35 +6132,35 @@ const CHAT_PROJECT_LIST_STYLES = `
|
|
|
6080
6132
|
opacity: 1;
|
|
6081
6133
|
}
|
|
6082
6134
|
.chat-project-list__kebab:hover {
|
|
6083
|
-
background: var(--
|
|
6084
|
-
color: var(--
|
|
6135
|
+
background: var(--tplane-chat-surface-alt);
|
|
6136
|
+
color: var(--tplane-chat-text);
|
|
6085
6137
|
}
|
|
6086
6138
|
.chat-project-list__kebab:focus-visible {
|
|
6087
6139
|
opacity: 1;
|
|
6088
|
-
outline: 2px solid var(--
|
|
6140
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
6089
6141
|
outline-offset: 2px;
|
|
6090
6142
|
}
|
|
6091
6143
|
.chat-project-list__edit {
|
|
6092
6144
|
flex: 1 1 auto;
|
|
6093
|
-
border: 1px solid var(--
|
|
6094
|
-
border-radius: var(--
|
|
6095
|
-
background: var(--
|
|
6096
|
-
color: var(--
|
|
6145
|
+
border: 1px solid var(--tplane-chat-primary);
|
|
6146
|
+
border-radius: var(--tplane-chat-radius-button);
|
|
6147
|
+
background: var(--tplane-chat-bg);
|
|
6148
|
+
color: var(--tplane-chat-text);
|
|
6097
6149
|
font: inherit;
|
|
6098
|
-
font-size: var(--
|
|
6150
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
6099
6151
|
padding: 6px 10px;
|
|
6100
6152
|
min-height: 32px;
|
|
6101
6153
|
outline: none;
|
|
6102
6154
|
box-sizing: border-box;
|
|
6103
6155
|
}
|
|
6104
6156
|
.chat-project-list__new {
|
|
6105
|
-
background: var(--
|
|
6106
|
-
color: var(--
|
|
6157
|
+
background: var(--tplane-chat-surface-alt);
|
|
6158
|
+
color: var(--tplane-chat-text);
|
|
6107
6159
|
border: 0;
|
|
6108
6160
|
padding: 10px 16px;
|
|
6109
6161
|
border-radius: 8px;
|
|
6110
6162
|
font-family: inherit;
|
|
6111
|
-
font-size: var(--
|
|
6163
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
6112
6164
|
font-weight: 400;
|
|
6113
6165
|
display: flex;
|
|
6114
6166
|
align-items: center;
|
|
@@ -6117,8 +6169,8 @@ const CHAT_PROJECT_LIST_STYLES = `
|
|
|
6117
6169
|
width: 100%;
|
|
6118
6170
|
}
|
|
6119
6171
|
.chat-project-list__new:hover {
|
|
6120
|
-
background: color-mix(in srgb, var(--
|
|
6121
|
-
color: var(--
|
|
6172
|
+
background: color-mix(in srgb, var(--tplane-chat-text) 8%, var(--tplane-chat-surface-alt));
|
|
6173
|
+
color: var(--tplane-chat-text);
|
|
6122
6174
|
}
|
|
6123
6175
|
`;
|
|
6124
6176
|
|
|
@@ -6358,7 +6410,7 @@ class ChatProjectListComponent {
|
|
|
6358
6410
|
(confirmed)="performDelete()"
|
|
6359
6411
|
(cancelled)="confirmDeleteId.set(null)"
|
|
6360
6412
|
/>
|
|
6361
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
6413
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;padding:var(--tplane-chat-space-2)}.chat-project-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px}.chat-project-list__item-wrap{position:relative;display:flex;align-items:center;gap:4px}.chat-project-list__item{flex:1 1 auto;min-width:0;min-height:32px;padding:6px 12px;border-radius:var(--tplane-chat-radius-button);cursor:pointer;color:var(--tplane-chat-text);font-size:var(--tplane-chat-font-size-sm);background:transparent;border:0;text-align:left;box-sizing:border-box;transition:background-color .15s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-project-list__item:hover{background:color-mix(in srgb,var(--tplane-chat-text) 5%,transparent)}.chat-project-list__item[data-active=true]{background:var(--tplane-chat-surface-alt);font-weight:500}.chat-project-list__kebab{flex-shrink:0;width:28px;height:28px;border:0;background:transparent;color:var(--tplane-chat-text-muted);border-radius:4px;cursor:pointer;opacity:0;transition:opacity .1s ease;padding:0;line-height:1;font-size:18px}.chat-project-list__item-wrap:hover .chat-project-list__kebab,.chat-project-list__item-wrap:focus-within .chat-project-list__kebab{opacity:1}.chat-project-list__kebab:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}.chat-project-list__kebab:focus-visible{opacity:1;outline:2px solid var(--tplane-chat-primary);outline-offset:2px}.chat-project-list__edit{flex:1 1 auto;border:1px solid var(--tplane-chat-primary);border-radius:var(--tplane-chat-radius-button);background:var(--tplane-chat-bg);color:var(--tplane-chat-text);font:inherit;font-size:var(--tplane-chat-font-size-sm);padding:6px 10px;min-height:32px;outline:none;box-sizing:border-box}.chat-project-list__new{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text);border:0;padding:10px 16px;border-radius:8px;font-family:inherit;font-size:var(--tplane-chat-font-size-sm);font-weight:400;display:flex;align-items:center;gap:8px;cursor:pointer;width:100%}.chat-project-list__new:hover{background:color-mix(in srgb,var(--tplane-chat-text) 8%,var(--tplane-chat-surface-alt));color:var(--tplane-chat-text)}\n"], dependencies: [{ kind: "component", type: ChatOverflowMenuComponent, selector: "chat-overflow-menu", inputs: ["open", "items", "anchor", "anchorPos"], outputs: ["itemSelected", "closed"] }, { kind: "component", type: ChatConfirmDialogComponent, selector: "chat-confirm-dialog", inputs: ["open", "title", "body", "confirmLabel", "cancelLabel", "tone"], outputs: ["confirmed", "cancelled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6362
6414
|
}
|
|
6363
6415
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatProjectListComponent, decorators: [{
|
|
6364
6416
|
type: Component,
|
|
@@ -6439,7 +6491,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
6439
6491
|
(confirmed)="performDelete()"
|
|
6440
6492
|
(cancelled)="confirmDeleteId.set(null)"
|
|
6441
6493
|
/>
|
|
6442
|
-
`, styles: [":host{font-family:var(--
|
|
6494
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;padding:var(--tplane-chat-space-2)}.chat-project-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px}.chat-project-list__item-wrap{position:relative;display:flex;align-items:center;gap:4px}.chat-project-list__item{flex:1 1 auto;min-width:0;min-height:32px;padding:6px 12px;border-radius:var(--tplane-chat-radius-button);cursor:pointer;color:var(--tplane-chat-text);font-size:var(--tplane-chat-font-size-sm);background:transparent;border:0;text-align:left;box-sizing:border-box;transition:background-color .15s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-project-list__item:hover{background:color-mix(in srgb,var(--tplane-chat-text) 5%,transparent)}.chat-project-list__item[data-active=true]{background:var(--tplane-chat-surface-alt);font-weight:500}.chat-project-list__kebab{flex-shrink:0;width:28px;height:28px;border:0;background:transparent;color:var(--tplane-chat-text-muted);border-radius:4px;cursor:pointer;opacity:0;transition:opacity .1s ease;padding:0;line-height:1;font-size:18px}.chat-project-list__item-wrap:hover .chat-project-list__kebab,.chat-project-list__item-wrap:focus-within .chat-project-list__kebab{opacity:1}.chat-project-list__kebab:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}.chat-project-list__kebab:focus-visible{opacity:1;outline:2px solid var(--tplane-chat-primary);outline-offset:2px}.chat-project-list__edit{flex:1 1 auto;border:1px solid var(--tplane-chat-primary);border-radius:var(--tplane-chat-radius-button);background:var(--tplane-chat-bg);color:var(--tplane-chat-text);font:inherit;font-size:var(--tplane-chat-font-size-sm);padding:6px 10px;min-height:32px;outline:none;box-sizing:border-box}.chat-project-list__new{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text);border:0;padding:10px 16px;border-radius:8px;font-family:inherit;font-size:var(--tplane-chat-font-size-sm);font-weight:400;display:flex;align-items:center;gap:8px;cursor:pointer;width:100%}.chat-project-list__new:hover{background:color-mix(in srgb,var(--tplane-chat-text) 8%,var(--tplane-chat-surface-alt));color:var(--tplane-chat-text)}\n"] }]
|
|
6443
6495
|
}], ctorParameters: () => [], propDecorators: { projects: [{ type: i0.Input, args: [{ isSignal: true, alias: "projects", required: true }] }], activeProjectId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeProjectId", required: false }] }], showNewProjectButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showNewProjectButton", required: false }] }], actions: [{ type: i0.Input, args: [{ isSignal: true, alias: "actions", required: false }] }], projectSelected: [{ type: i0.Output, args: ["projectSelected"] }], newProjectRequested: [{ type: i0.Output, args: ["newProjectRequested"] }], createInput: [{ type: i0.ViewChild, args: ['createInput', { isSignal: true }] }], editInput: [{ type: i0.ViewChild, args: ['editInput', { isSignal: true }] }] } });
|
|
6444
6496
|
|
|
6445
6497
|
// SPDX-License-Identifier: MIT
|
|
@@ -6457,7 +6509,7 @@ class ChatGenuiSkeletonComponent {
|
|
|
6457
6509
|
<div class="chat-genui-skeleton__row"></div>
|
|
6458
6510
|
</div>
|
|
6459
6511
|
</div>
|
|
6460
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
6512
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;width:100%}.chat-genui-skeleton{border:1px solid var(--tplane-chat-separator);border-radius:10px;padding:14px;background:var(--tplane-chat-surface-alt)}.chat-genui-skeleton__label{font-size:12px;color:var(--tplane-chat-text-muted);margin-bottom:10px;display:flex;align-items:center;gap:6px}.chat-genui-skeleton__rows{display:flex;flex-direction:column;gap:8px}.chat-genui-skeleton__row{height:10px;border-radius:5px;background:linear-gradient(90deg,var(--tplane-chat-separator) 0%,color-mix(in srgb,var(--tplane-chat-separator) 70%,transparent) 50%,var(--tplane-chat-separator) 100%);background-size:200% 100%;animation:chat-genui-skeleton-shimmer 1.4s ease-in-out infinite}.chat-genui-skeleton__row:nth-child(1){width:70%}.chat-genui-skeleton__row:nth-child(2){width:90%}.chat-genui-skeleton__row:nth-child(3){width:50%}@keyframes chat-genui-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6461
6513
|
}
|
|
6462
6514
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatGenuiSkeletonComponent, decorators: [{
|
|
6463
6515
|
type: Component,
|
|
@@ -6473,7 +6525,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
6473
6525
|
<div class="chat-genui-skeleton__row"></div>
|
|
6474
6526
|
</div>
|
|
6475
6527
|
</div>
|
|
6476
|
-
`, styles: [":host{font-family:var(--
|
|
6528
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;width:100%}.chat-genui-skeleton{border:1px solid var(--tplane-chat-separator);border-radius:10px;padding:14px;background:var(--tplane-chat-surface-alt)}.chat-genui-skeleton__label{font-size:12px;color:var(--tplane-chat-text-muted);margin-bottom:10px;display:flex;align-items:center;gap:6px}.chat-genui-skeleton__rows{display:flex;flex-direction:column;gap:8px}.chat-genui-skeleton__row{height:10px;border-radius:5px;background:linear-gradient(90deg,var(--tplane-chat-separator) 0%,color-mix(in srgb,var(--tplane-chat-separator) 70%,transparent) 50%,var(--tplane-chat-separator) 100%);background-size:200% 100%;animation:chat-genui-skeleton-shimmer 1.4s ease-in-out infinite}.chat-genui-skeleton__row:nth-child(1){width:70%}.chat-genui-skeleton__row:nth-child(2){width:90%}.chat-genui-skeleton__row:nth-child(3){width:50%}@keyframes chat-genui-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}\n"] }]
|
|
6477
6529
|
}] });
|
|
6478
6530
|
|
|
6479
6531
|
// SPDX-License-Identifier: MIT
|
|
@@ -6527,17 +6579,17 @@ const CHAT_WELCOME_STYLES = `
|
|
|
6527
6579
|
justify-content: center;
|
|
6528
6580
|
width: 100%;
|
|
6529
6581
|
min-height: 0;
|
|
6530
|
-
padding: var(--
|
|
6582
|
+
padding: var(--tplane-chat-welcome-padding, 24px);
|
|
6531
6583
|
box-sizing: border-box;
|
|
6532
|
-
animation:
|
|
6584
|
+
animation: tplane-chat-welcome-mount 200ms ease-out both;
|
|
6533
6585
|
}
|
|
6534
6586
|
.chat-welcome__inner {
|
|
6535
6587
|
display: flex;
|
|
6536
6588
|
flex-direction: column;
|
|
6537
6589
|
align-items: center;
|
|
6538
|
-
gap: var(--
|
|
6590
|
+
gap: var(--tplane-chat-welcome-gap, 1.25rem);
|
|
6539
6591
|
width: 100%;
|
|
6540
|
-
max-width: var(--
|
|
6592
|
+
max-width: var(--tplane-chat-welcome-max-width, 36rem);
|
|
6541
6593
|
text-align: center;
|
|
6542
6594
|
}
|
|
6543
6595
|
.chat-welcome__beacon {
|
|
@@ -6546,17 +6598,17 @@ const CHAT_WELCOME_STYLES = `
|
|
|
6546
6598
|
height: 14px;
|
|
6547
6599
|
border-radius: 50%;
|
|
6548
6600
|
background: radial-gradient(circle at 30% 30%,
|
|
6549
|
-
var(--
|
|
6550
|
-
var(--
|
|
6601
|
+
var(--tplane-chat-text) 0%,
|
|
6602
|
+
var(--tplane-chat-text-muted) 70%,
|
|
6551
6603
|
transparent 100%);
|
|
6552
|
-
animation:
|
|
6604
|
+
animation: tplane-chat-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
6553
6605
|
margin-bottom: 8px;
|
|
6554
6606
|
}
|
|
6555
6607
|
.chat-welcome__title {
|
|
6556
6608
|
margin: 0;
|
|
6557
6609
|
font-size: 1.25rem;
|
|
6558
6610
|
font-weight: 500;
|
|
6559
|
-
color: var(--
|
|
6611
|
+
color: var(--tplane-chat-text);
|
|
6560
6612
|
line-height: 1.3;
|
|
6561
6613
|
}
|
|
6562
6614
|
@media (min-width: 768px) {
|
|
@@ -6594,23 +6646,23 @@ const CHAT_WELCOME_SUGGESTION_STYLES = `
|
|
|
6594
6646
|
align-items: center;
|
|
6595
6647
|
gap: 0.5rem;
|
|
6596
6648
|
padding: 10px 16px;
|
|
6597
|
-
background: var(--
|
|
6598
|
-
border: 1px solid var(--
|
|
6649
|
+
background: var(--tplane-chat-surface);
|
|
6650
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
6599
6651
|
border-radius: 9999px;
|
|
6600
|
-
color: var(--
|
|
6652
|
+
color: var(--tplane-chat-text);
|
|
6601
6653
|
font-family: inherit;
|
|
6602
|
-
font-size: var(--
|
|
6654
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
6603
6655
|
text-align: center;
|
|
6604
6656
|
cursor: pointer;
|
|
6605
6657
|
transition: background 150ms ease, border-color 150ms ease, transform 120ms ease;
|
|
6606
6658
|
}
|
|
6607
6659
|
.chat-welcome-suggestion:hover {
|
|
6608
|
-
background: var(--
|
|
6609
|
-
border-color: var(--
|
|
6660
|
+
background: var(--tplane-chat-surface-alt);
|
|
6661
|
+
border-color: var(--tplane-chat-text-muted);
|
|
6610
6662
|
}
|
|
6611
6663
|
.chat-welcome-suggestion:active { transform: scale(0.98); }
|
|
6612
6664
|
.chat-welcome-suggestion:focus-visible {
|
|
6613
|
-
outline: 2px solid var(--
|
|
6665
|
+
outline: 2px solid var(--tplane-chat-text-muted);
|
|
6614
6666
|
outline-offset: 2px;
|
|
6615
6667
|
}
|
|
6616
6668
|
.chat-welcome-suggestion__label { white-space: nowrap; }
|
|
@@ -6629,9 +6681,9 @@ const CHAT_WELCOME_SUGGESTION_STYLES = `
|
|
|
6629
6681
|
* [chatWelcomeSuggestions] — projects suggestion rows below the input
|
|
6630
6682
|
*
|
|
6631
6683
|
* Host CSS variables (override on :host or any ancestor):
|
|
6632
|
-
* --
|
|
6633
|
-
* --
|
|
6634
|
-
* --
|
|
6684
|
+
* --tplane-chat-welcome-max-width default 36rem
|
|
6685
|
+
* --tplane-chat-welcome-gap default 1.25rem
|
|
6686
|
+
* --tplane-chat-welcome-padding default 24px
|
|
6635
6687
|
*/
|
|
6636
6688
|
class ChatWelcomeComponent {
|
|
6637
6689
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatWelcomeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -6646,7 +6698,7 @@ class ChatWelcomeComponent {
|
|
|
6646
6698
|
<ng-content select="[chatWelcomeSuggestions]" />
|
|
6647
6699
|
</div>
|
|
6648
6700
|
</div>
|
|
6649
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
6701
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:flex;flex:1 1 auto;align-items:center;justify-content:center;width:100%;min-height:0;padding:var(--tplane-chat-welcome-padding, 24px);box-sizing:border-box;animation:tplane-chat-welcome-mount .2s ease-out both}.chat-welcome__inner{display:flex;flex-direction:column;align-items:center;gap:var(--tplane-chat-welcome-gap, 1.25rem);width:100%;max-width:var(--tplane-chat-welcome-max-width, 36rem);text-align:center}.chat-welcome__beacon{display:inline-block;width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 30% 30%,var(--tplane-chat-text) 0%,var(--tplane-chat-text-muted) 70%,transparent 100%);animation:tplane-chat-pulse 2s cubic-bezier(.4,0,.6,1) infinite;margin-bottom:8px}.chat-welcome__title{margin:0;font-size:1.25rem;font-weight:500;color:var(--tplane-chat-text);line-height:1.3}@media(min-width:768px){.chat-welcome__title{font-size:1.5rem}}.chat-welcome__input{width:100%;margin-top:.5rem}.chat-welcome__suggestions{width:100%;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:4px}.chat-welcome__suggestions>div{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.chat-welcome__suggestions:empty{display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6650
6702
|
}
|
|
6651
6703
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatWelcomeComponent, decorators: [{
|
|
6652
6704
|
type: Component,
|
|
@@ -6661,7 +6713,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
6661
6713
|
<ng-content select="[chatWelcomeSuggestions]" />
|
|
6662
6714
|
</div>
|
|
6663
6715
|
</div>
|
|
6664
|
-
`, styles: [":host{font-family:var(--
|
|
6716
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:flex;flex:1 1 auto;align-items:center;justify-content:center;width:100%;min-height:0;padding:var(--tplane-chat-welcome-padding, 24px);box-sizing:border-box;animation:tplane-chat-welcome-mount .2s ease-out both}.chat-welcome__inner{display:flex;flex-direction:column;align-items:center;gap:var(--tplane-chat-welcome-gap, 1.25rem);width:100%;max-width:var(--tplane-chat-welcome-max-width, 36rem);text-align:center}.chat-welcome__beacon{display:inline-block;width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 30% 30%,var(--tplane-chat-text) 0%,var(--tplane-chat-text-muted) 70%,transparent 100%);animation:tplane-chat-pulse 2s cubic-bezier(.4,0,.6,1) infinite;margin-bottom:8px}.chat-welcome__title{margin:0;font-size:1.25rem;font-weight:500;color:var(--tplane-chat-text);line-height:1.3}@media(min-width:768px){.chat-welcome__title{font-size:1.5rem}}.chat-welcome__input{width:100%;margin-top:.5rem}.chat-welcome__suggestions{width:100%;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:4px}.chat-welcome__suggestions>div{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.chat-welcome__suggestions:empty{display:none}\n"] }]
|
|
6665
6717
|
}] });
|
|
6666
6718
|
|
|
6667
6719
|
// SPDX-License-Identifier: MIT
|
|
@@ -6684,7 +6736,7 @@ class ChatWelcomeSuggestionComponent {
|
|
|
6684
6736
|
<span class="chat-welcome-suggestion__label">{{ label() }}</span>
|
|
6685
6737
|
<span class="chat-welcome-suggestion__chevron" aria-hidden="true">›</span>
|
|
6686
6738
|
</button>
|
|
6687
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
6739
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:inline-block}.chat-welcome-suggestion{display:inline-flex;align-items:center;gap:.5rem;padding:10px 16px;background:var(--tplane-chat-surface);border:1px solid var(--tplane-chat-separator);border-radius:9999px;color:var(--tplane-chat-text);font-family:inherit;font-size:var(--tplane-chat-font-size-sm);text-align:center;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .12s ease}.chat-welcome-suggestion:hover{background:var(--tplane-chat-surface-alt);border-color:var(--tplane-chat-text-muted)}.chat-welcome-suggestion:active{transform:scale(.98)}.chat-welcome-suggestion:focus-visible{outline:2px solid var(--tplane-chat-text-muted);outline-offset:2px}.chat-welcome-suggestion__label{white-space:nowrap}.chat-welcome-suggestion__chevron{display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6688
6740
|
}
|
|
6689
6741
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatWelcomeSuggestionComponent, decorators: [{
|
|
6690
6742
|
type: Component,
|
|
@@ -6700,9 +6752,286 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
6700
6752
|
<span class="chat-welcome-suggestion__label">{{ label() }}</span>
|
|
6701
6753
|
<span class="chat-welcome-suggestion__chevron" aria-hidden="true">›</span>
|
|
6702
6754
|
</button>
|
|
6703
|
-
`, styles: [":host{font-family:var(--
|
|
6755
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:inline-block}.chat-welcome-suggestion{display:inline-flex;align-items:center;gap:.5rem;padding:10px 16px;background:var(--tplane-chat-surface);border:1px solid var(--tplane-chat-separator);border-radius:9999px;color:var(--tplane-chat-text);font-family:inherit;font-size:var(--tplane-chat-font-size-sm);text-align:center;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .12s ease}.chat-welcome-suggestion:hover{background:var(--tplane-chat-surface-alt);border-color:var(--tplane-chat-text-muted)}.chat-welcome-suggestion:active{transform:scale(.98)}.chat-welcome-suggestion:focus-visible{outline:2px solid var(--tplane-chat-text-muted);outline-offset:2px}.chat-welcome-suggestion__label{white-space:nowrap}.chat-welcome-suggestion__chevron{display:none}\n"] }]
|
|
6704
6756
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], selected: [{ type: i0.Output, args: ["selected"] }] } });
|
|
6705
6757
|
|
|
6758
|
+
// libs/chat/src/lib/primitives/overlay/overlay-container.ts
|
|
6759
|
+
// SPDX-License-Identifier: MIT
|
|
6760
|
+
const CONTAINER_CLASS = 'chat-overlay-container';
|
|
6761
|
+
const STYLE_ID = 'chat-overlay-structure';
|
|
6762
|
+
// Structural CSS, injected once into <head> (same pattern as ROOT_TOKEN_STYLES
|
|
6763
|
+
// in chat-tokens.ts) so consumers need not import any stylesheet.
|
|
6764
|
+
const STRUCTURE_CSS = `
|
|
6765
|
+
.${CONTAINER_CLASS} {
|
|
6766
|
+
position: fixed;
|
|
6767
|
+
inset: 0;
|
|
6768
|
+
z-index: 1000;
|
|
6769
|
+
pointer-events: none;
|
|
6770
|
+
}
|
|
6771
|
+
.chat-overlay-pane {
|
|
6772
|
+
position: absolute;
|
|
6773
|
+
pointer-events: auto;
|
|
6774
|
+
}
|
|
6775
|
+
`;
|
|
6776
|
+
/** Returns the single shared overlay container appended to <body>, creating it
|
|
6777
|
+
* (and injecting structural CSS) on first call. */
|
|
6778
|
+
function getOverlayContainer(doc) {
|
|
6779
|
+
const existing = doc.querySelector('.' + CONTAINER_CLASS);
|
|
6780
|
+
if (existing)
|
|
6781
|
+
return existing;
|
|
6782
|
+
if (!doc.getElementById(STYLE_ID)) {
|
|
6783
|
+
const style = doc.createElement('style');
|
|
6784
|
+
style.id = STYLE_ID;
|
|
6785
|
+
style.textContent = STRUCTURE_CSS;
|
|
6786
|
+
doc.head.appendChild(style);
|
|
6787
|
+
}
|
|
6788
|
+
const container = doc.createElement('div');
|
|
6789
|
+
container.className = CONTAINER_CLASS;
|
|
6790
|
+
doc.body.appendChild(container);
|
|
6791
|
+
return container;
|
|
6792
|
+
}
|
|
6793
|
+
|
|
6794
|
+
// libs/chat/src/lib/primitives/overlay/connected-position.ts
|
|
6795
|
+
// SPDX-License-Identifier: MIT
|
|
6796
|
+
//
|
|
6797
|
+
// Minimal port of CDK's FlexibleConnectedPositionStrategy fit logic
|
|
6798
|
+
// (~/repos/components/src/cdk/overlay/position/flexible-connected-position-strategy.ts):
|
|
6799
|
+
// _getOriginPoint + _getOverlayPoint + _getOverlayFit + _pushOverlayOnScreen.
|
|
6800
|
+
// Omits flexible-dimensions, grow-after-open, RTL, and virtual-keyboard handling.
|
|
6801
|
+
function originPoint(origin, pos) {
|
|
6802
|
+
const x = pos.originX === 'center' ? origin.left + origin.width / 2 : pos.originX === 'start' ? origin.left : origin.right;
|
|
6803
|
+
const y = pos.originY === 'center' ? origin.top + origin.height / 2 : pos.originY === 'top' ? origin.top : origin.bottom;
|
|
6804
|
+
return { x, y };
|
|
6805
|
+
}
|
|
6806
|
+
function overlayPoint(origin, size, pos) {
|
|
6807
|
+
let x = origin.x;
|
|
6808
|
+
if (pos.overlayX === 'center')
|
|
6809
|
+
x -= size.width / 2;
|
|
6810
|
+
else if (pos.overlayX === 'end')
|
|
6811
|
+
x -= size.width;
|
|
6812
|
+
let y = origin.y;
|
|
6813
|
+
if (pos.overlayY === 'center')
|
|
6814
|
+
y -= size.height / 2;
|
|
6815
|
+
else if (pos.overlayY === 'bottom')
|
|
6816
|
+
y -= size.height;
|
|
6817
|
+
return { x: x + (pos.offsetX ?? 0), y: y + (pos.offsetY ?? 0) };
|
|
6818
|
+
}
|
|
6819
|
+
function fitArea(point, size, viewport) {
|
|
6820
|
+
const left = point.x;
|
|
6821
|
+
const right = point.x + size.width;
|
|
6822
|
+
const top = point.y;
|
|
6823
|
+
const bottom = point.y + size.height;
|
|
6824
|
+
const visibleW = Math.max(0, Math.min(right, viewport.right) - Math.max(left, viewport.left));
|
|
6825
|
+
const visibleH = Math.max(0, Math.min(bottom, viewport.bottom) - Math.max(top, viewport.top));
|
|
6826
|
+
const fits = left >= viewport.left && right <= viewport.right && top >= viewport.top && bottom <= viewport.bottom;
|
|
6827
|
+
return { area: visibleW * visibleH, fits };
|
|
6828
|
+
}
|
|
6829
|
+
function pushOnScreen(point, size, viewport) {
|
|
6830
|
+
const maxLeft = viewport.right - size.width;
|
|
6831
|
+
const maxTop = viewport.bottom - size.height;
|
|
6832
|
+
return {
|
|
6833
|
+
x: Math.max(viewport.left, Math.min(point.x, maxLeft)),
|
|
6834
|
+
y: Math.max(viewport.top, Math.min(point.y, maxTop)),
|
|
6835
|
+
};
|
|
6836
|
+
}
|
|
6837
|
+
/** Sensible fallback when no positions are supplied: below the origin, start-aligned. */
|
|
6838
|
+
const DEFAULT_POSITION = { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' };
|
|
6839
|
+
function computeConnectedPosition(args) {
|
|
6840
|
+
const { originRect, overlaySize, viewport, positions } = args;
|
|
6841
|
+
// An empty positions array (the directive's input default) must still anchor to
|
|
6842
|
+
// the trigger rather than crash on best! / render at 0,0.
|
|
6843
|
+
const list = positions.length ? positions : [DEFAULT_POSITION];
|
|
6844
|
+
let best = null;
|
|
6845
|
+
for (const pos of list) {
|
|
6846
|
+
const point = overlayPoint(originPoint(originRect, pos), overlaySize, pos);
|
|
6847
|
+
const { area, fits } = fitArea(point, overlaySize, viewport);
|
|
6848
|
+
if (fits) {
|
|
6849
|
+
return { top: point.y, left: point.x, position: pos };
|
|
6850
|
+
}
|
|
6851
|
+
if (!best || area > best.area)
|
|
6852
|
+
best = { point, pos, area };
|
|
6853
|
+
}
|
|
6854
|
+
const pushed = pushOnScreen(best.point, overlaySize, viewport);
|
|
6855
|
+
return { top: pushed.y, left: pushed.x, position: best.pos };
|
|
6856
|
+
}
|
|
6857
|
+
function narrowViewport(win, margin) {
|
|
6858
|
+
return {
|
|
6859
|
+
left: margin,
|
|
6860
|
+
top: margin,
|
|
6861
|
+
right: win.innerWidth - margin,
|
|
6862
|
+
bottom: win.innerHeight - margin,
|
|
6863
|
+
width: win.innerWidth - 2 * margin,
|
|
6864
|
+
height: win.innerHeight - 2 * margin,
|
|
6865
|
+
};
|
|
6866
|
+
}
|
|
6867
|
+
|
|
6868
|
+
// libs/chat/src/lib/primitives/overlay/connected-overlay.directive.ts
|
|
6869
|
+
// SPDX-License-Identifier: MIT
|
|
6870
|
+
/* eslint-disable @angular-eslint/no-input-rename, @angular-eslint/no-output-rename --
|
|
6871
|
+
* The `chatOverlay*` binding aliases ARE the intended public API: they namespace
|
|
6872
|
+
* the directive's inputs/outputs under the `chatOverlay` prefix (mirroring Angular
|
|
6873
|
+
* CDK's `cdkConnectedOverlay*` convention) rather than exposing bare names like
|
|
6874
|
+
* `open`/`positions` on an `<ng-template>`. The internal property names stay
|
|
6875
|
+
* concise, so aliasing here is deliberate, not a rename to avoid. */
|
|
6876
|
+
/** Marks the anchor element a connected overlay positions against. */
|
|
6877
|
+
class ChatOverlayOriginDirective {
|
|
6878
|
+
elementRef = inject(ElementRef);
|
|
6879
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatOverlayOriginDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6880
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.6", type: ChatOverlayOriginDirective, isStandalone: true, selector: "[chatOverlayOrigin]", exportAs: ["chatOverlayOrigin"], ngImport: i0 });
|
|
6881
|
+
}
|
|
6882
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatOverlayOriginDirective, decorators: [{
|
|
6883
|
+
type: Directive,
|
|
6884
|
+
args: [{
|
|
6885
|
+
selector: '[chatOverlayOrigin]',
|
|
6886
|
+
standalone: true,
|
|
6887
|
+
exportAs: 'chatOverlayOrigin',
|
|
6888
|
+
}]
|
|
6889
|
+
}] });
|
|
6890
|
+
const VIEWPORT_MARGIN = 8;
|
|
6891
|
+
/**
|
|
6892
|
+
* Applied to an `<ng-template>`. When `chatOverlayOpen` is true, the template
|
|
6893
|
+
* content is portaled into the shared body-level overlay container and
|
|
6894
|
+
* positioned connected to `chatOverlayOrigin`, repositioning live on
|
|
6895
|
+
* scroll/resize. Closes on outside mousedown (via the `chatOverlayOutsideClick`
|
|
6896
|
+
* output) and Tab; returns focus to the origin when focus was inside the pane.
|
|
6897
|
+
*
|
|
6898
|
+
* NOTE: the directive does not own the open state — it only emits. To fully
|
|
6899
|
+
* close the overlay, consumers MUST handle BOTH `(chatOverlayOutsideClick)` and
|
|
6900
|
+
* `(chatOverlayDetach)`. Tab-close (and Escape, when the consumer routes it)
|
|
6901
|
+
* surface through `chatOverlayDetach`, so wiring only `chatOverlayOutsideClick`
|
|
6902
|
+
* leaves the overlay stuck open on Tab.
|
|
6903
|
+
*/
|
|
6904
|
+
class ChatConnectedOverlayDirective {
|
|
6905
|
+
origin = input.required({ ...(ngDevMode ? { debugName: "origin" } : {}), alias: 'chatOverlayOrigin' });
|
|
6906
|
+
open = input(false, { ...(ngDevMode ? { debugName: "open" } : {}), alias: 'chatOverlayOpen' });
|
|
6907
|
+
positions = input([], { ...(ngDevMode ? { debugName: "positions" } : {}), alias: 'chatOverlayPositions' });
|
|
6908
|
+
panelClass = input('', { ...(ngDevMode ? { debugName: "panelClass" } : {}), alias: 'chatOverlayPanelClass' });
|
|
6909
|
+
/** Emits the pane element once attached (consumers focus content from it). */
|
|
6910
|
+
attached = output({ alias: 'chatOverlayAttached' });
|
|
6911
|
+
outsideClick = output({ alias: 'chatOverlayOutsideClick' });
|
|
6912
|
+
detached = output({ alias: 'chatOverlayDetach' });
|
|
6913
|
+
templateRef = inject((TemplateRef));
|
|
6914
|
+
viewContainerRef = inject(ViewContainerRef);
|
|
6915
|
+
document = inject(DOCUMENT);
|
|
6916
|
+
pane = null;
|
|
6917
|
+
viewRef = null;
|
|
6918
|
+
resizeObs = null;
|
|
6919
|
+
rafId = 0;
|
|
6920
|
+
previouslyFocused = null;
|
|
6921
|
+
onScrollOrResize = () => this.scheduleReposition();
|
|
6922
|
+
onDocMouseDown = (e) => {
|
|
6923
|
+
if (!this.pane)
|
|
6924
|
+
return;
|
|
6925
|
+
const path = e.composedPath();
|
|
6926
|
+
if (path.includes(this.pane) || path.includes(this.origin().elementRef.nativeElement))
|
|
6927
|
+
return;
|
|
6928
|
+
this.outsideClick.emit(e);
|
|
6929
|
+
};
|
|
6930
|
+
onKeydown = (e) => {
|
|
6931
|
+
if (e.key !== 'Tab' || !this.pane)
|
|
6932
|
+
return;
|
|
6933
|
+
const active = this.document.activeElement;
|
|
6934
|
+
if (this.pane.contains(active) || active === this.origin().elementRef.nativeElement) {
|
|
6935
|
+
this.detached.emit();
|
|
6936
|
+
}
|
|
6937
|
+
};
|
|
6938
|
+
constructor() {
|
|
6939
|
+
effect(() => {
|
|
6940
|
+
if (this.open())
|
|
6941
|
+
this.attach();
|
|
6942
|
+
else
|
|
6943
|
+
this.dispose();
|
|
6944
|
+
});
|
|
6945
|
+
inject(DestroyRef).onDestroy(() => this.dispose());
|
|
6946
|
+
}
|
|
6947
|
+
attach() {
|
|
6948
|
+
if (this.pane)
|
|
6949
|
+
return;
|
|
6950
|
+
const win = this.document.defaultView;
|
|
6951
|
+
if (!win)
|
|
6952
|
+
return; // SSR / detached document
|
|
6953
|
+
this.previouslyFocused = this.document.activeElement;
|
|
6954
|
+
const pane = this.document.createElement('div');
|
|
6955
|
+
pane.className = 'chat-overlay-pane';
|
|
6956
|
+
for (const c of this.normalizePanelClass())
|
|
6957
|
+
pane.classList.add(c);
|
|
6958
|
+
getOverlayContainer(this.document).appendChild(pane);
|
|
6959
|
+
this.viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef);
|
|
6960
|
+
this.viewRef.detectChanges();
|
|
6961
|
+
for (const node of this.viewRef.rootNodes)
|
|
6962
|
+
pane.appendChild(node);
|
|
6963
|
+
this.pane = pane;
|
|
6964
|
+
this.reposition();
|
|
6965
|
+
win.addEventListener('scroll', this.onScrollOrResize, { capture: true, passive: true });
|
|
6966
|
+
win.addEventListener('resize', this.onScrollOrResize, { passive: true });
|
|
6967
|
+
this.document.addEventListener('mousedown', this.onDocMouseDown, true);
|
|
6968
|
+
this.document.addEventListener('keydown', this.onKeydown, true);
|
|
6969
|
+
if (typeof win.ResizeObserver === 'function') {
|
|
6970
|
+
this.resizeObs = new win.ResizeObserver(() => this.scheduleReposition());
|
|
6971
|
+
this.resizeObs.observe(this.origin().elementRef.nativeElement);
|
|
6972
|
+
this.resizeObs.observe(pane);
|
|
6973
|
+
}
|
|
6974
|
+
this.attached.emit(pane);
|
|
6975
|
+
}
|
|
6976
|
+
scheduleReposition() {
|
|
6977
|
+
const win = this.document.defaultView;
|
|
6978
|
+
if (!win || !this.pane)
|
|
6979
|
+
return;
|
|
6980
|
+
if (this.rafId)
|
|
6981
|
+
win.cancelAnimationFrame(this.rafId);
|
|
6982
|
+
this.rafId = win.requestAnimationFrame(() => this.reposition());
|
|
6983
|
+
}
|
|
6984
|
+
reposition() {
|
|
6985
|
+
const win = this.document.defaultView;
|
|
6986
|
+
if (!win || !this.pane)
|
|
6987
|
+
return;
|
|
6988
|
+
const r = this.pane.getBoundingClientRect();
|
|
6989
|
+
const result = computeConnectedPosition({
|
|
6990
|
+
originRect: this.origin().elementRef.nativeElement.getBoundingClientRect(),
|
|
6991
|
+
overlaySize: { width: r.width, height: r.height },
|
|
6992
|
+
viewport: narrowViewport(win, VIEWPORT_MARGIN),
|
|
6993
|
+
positions: this.positions(),
|
|
6994
|
+
});
|
|
6995
|
+
this.pane.style.top = `${Math.round(result.top)}px`;
|
|
6996
|
+
this.pane.style.left = `${Math.round(result.left)}px`;
|
|
6997
|
+
}
|
|
6998
|
+
dispose() {
|
|
6999
|
+
const win = this.document.defaultView;
|
|
7000
|
+
if (this.rafId && win)
|
|
7001
|
+
win.cancelAnimationFrame(this.rafId);
|
|
7002
|
+
this.rafId = 0;
|
|
7003
|
+
if (win) {
|
|
7004
|
+
win.removeEventListener('scroll', this.onScrollOrResize, { capture: true });
|
|
7005
|
+
win.removeEventListener('resize', this.onScrollOrResize);
|
|
7006
|
+
}
|
|
7007
|
+
this.document.removeEventListener('mousedown', this.onDocMouseDown, true);
|
|
7008
|
+
this.document.removeEventListener('keydown', this.onKeydown, true);
|
|
7009
|
+
this.resizeObs?.disconnect();
|
|
7010
|
+
this.resizeObs = null;
|
|
7011
|
+
const focusWasInPane = !!this.pane && this.pane.contains(this.document.activeElement);
|
|
7012
|
+
this.viewRef?.destroy();
|
|
7013
|
+
this.viewRef = null;
|
|
7014
|
+
this.pane?.remove();
|
|
7015
|
+
this.pane = null;
|
|
7016
|
+
if (focusWasInPane && this.previouslyFocused)
|
|
7017
|
+
this.previouslyFocused.focus();
|
|
7018
|
+
this.previouslyFocused = null;
|
|
7019
|
+
}
|
|
7020
|
+
normalizePanelClass() {
|
|
7021
|
+
const pc = this.panelClass();
|
|
7022
|
+
return Array.isArray(pc) ? pc : pc ? [pc] : [];
|
|
7023
|
+
}
|
|
7024
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatConnectedOverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7025
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.6", type: ChatConnectedOverlayDirective, isStandalone: true, selector: "[chatConnectedOverlay]", inputs: { origin: { classPropertyName: "origin", publicName: "chatOverlayOrigin", isSignal: true, isRequired: true, transformFunction: null }, open: { classPropertyName: "open", publicName: "chatOverlayOpen", isSignal: true, isRequired: false, transformFunction: null }, positions: { classPropertyName: "positions", publicName: "chatOverlayPositions", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "chatOverlayPanelClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { attached: "chatOverlayAttached", outsideClick: "chatOverlayOutsideClick", detached: "chatOverlayDetach" }, ngImport: i0 });
|
|
7026
|
+
}
|
|
7027
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatConnectedOverlayDirective, decorators: [{
|
|
7028
|
+
type: Directive,
|
|
7029
|
+
args: [{
|
|
7030
|
+
selector: '[chatConnectedOverlay]',
|
|
7031
|
+
standalone: true,
|
|
7032
|
+
}]
|
|
7033
|
+
}], ctorParameters: () => [], propDecorators: { origin: [{ type: i0.Input, args: [{ isSignal: true, alias: "chatOverlayOrigin", required: true }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "chatOverlayOpen", required: false }] }], positions: [{ type: i0.Input, args: [{ isSignal: true, alias: "chatOverlayPositions", required: false }] }], panelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "chatOverlayPanelClass", required: false }] }], attached: [{ type: i0.Output, args: ["chatOverlayAttached"] }], outsideClick: [{ type: i0.Output, args: ["chatOverlayOutsideClick"] }], detached: [{ type: i0.Output, args: ["chatOverlayDetach"] }] } });
|
|
7034
|
+
|
|
6706
7035
|
// libs/chat/src/lib/styles/chat-select.styles.ts
|
|
6707
7036
|
// SPDX-License-Identifier: MIT
|
|
6708
7037
|
const CHAT_SELECT_STYLES = `
|
|
@@ -6716,9 +7045,9 @@ const CHAT_SELECT_STYLES = `
|
|
|
6716
7045
|
border: 0;
|
|
6717
7046
|
border-radius: 9999px;
|
|
6718
7047
|
background: transparent;
|
|
6719
|
-
color: var(--
|
|
7048
|
+
color: var(--tplane-chat-text-muted);
|
|
6720
7049
|
font: inherit;
|
|
6721
|
-
font-size: var(--
|
|
7050
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
6722
7051
|
display: inline-flex;
|
|
6723
7052
|
align-items: center;
|
|
6724
7053
|
gap: 4px;
|
|
@@ -6726,8 +7055,8 @@ const CHAT_SELECT_STYLES = `
|
|
|
6726
7055
|
transition: background 120ms ease, color 120ms ease;
|
|
6727
7056
|
}
|
|
6728
7057
|
.chat-select__trigger:hover:not(:disabled) {
|
|
6729
|
-
background: var(--
|
|
6730
|
-
color: var(--
|
|
7058
|
+
background: var(--tplane-chat-surface-alt);
|
|
7059
|
+
color: var(--tplane-chat-text);
|
|
6731
7060
|
}
|
|
6732
7061
|
.chat-select__trigger:disabled {
|
|
6733
7062
|
opacity: 0.5;
|
|
@@ -6742,19 +7071,21 @@ const CHAT_SELECT_STYLES = `
|
|
|
6742
7071
|
.chat-select__trigger.is-open .chat-select__chevron {
|
|
6743
7072
|
transform: rotate(180deg);
|
|
6744
7073
|
}
|
|
7074
|
+
/* The menu is rendered inside the chat connected-overlay pane (a body-level
|
|
7075
|
+
portal), so it no longer positions itself — the overlay primitive places
|
|
7076
|
+
the pane. It keeps only its own box styling here. Min/max width can be
|
|
7077
|
+
overridden per consumer via the overlay panelClass (see chat-select
|
|
7078
|
+
panelClass input). */
|
|
6745
7079
|
.chat-select__menu {
|
|
6746
|
-
position: absolute;
|
|
6747
|
-
bottom: calc(100% + 8px);
|
|
6748
|
-
right: 0;
|
|
6749
7080
|
min-width: 180px;
|
|
6750
7081
|
max-height: 320px;
|
|
6751
7082
|
overflow-y: auto;
|
|
6752
|
-
background: var(--
|
|
6753
|
-
border: 1px solid var(--
|
|
7083
|
+
background: var(--tplane-chat-surface);
|
|
7084
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
6754
7085
|
border-radius: 12px;
|
|
6755
|
-
box-shadow: var(--
|
|
7086
|
+
box-shadow: var(--tplane-chat-shadow-lg);
|
|
6756
7087
|
padding: 4px;
|
|
6757
|
-
|
|
7088
|
+
box-sizing: border-box;
|
|
6758
7089
|
}
|
|
6759
7090
|
.chat-select__option {
|
|
6760
7091
|
display: flex;
|
|
@@ -6767,24 +7098,24 @@ const CHAT_SELECT_STYLES = `
|
|
|
6767
7098
|
background: transparent;
|
|
6768
7099
|
padding: 8px 10px;
|
|
6769
7100
|
border-radius: 8px;
|
|
6770
|
-
color: var(--
|
|
7101
|
+
color: var(--tplane-chat-text);
|
|
6771
7102
|
font: inherit;
|
|
6772
|
-
font-size: var(--
|
|
7103
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
6773
7104
|
cursor: pointer;
|
|
6774
7105
|
}
|
|
6775
7106
|
.chat-select__option-desc {
|
|
6776
|
-
font-size: var(--
|
|
6777
|
-
color: var(--
|
|
7107
|
+
font-size: var(--tplane-chat-font-size-xs);
|
|
7108
|
+
color: var(--tplane-chat-text-muted);
|
|
6778
7109
|
line-height: 1.3;
|
|
6779
7110
|
white-space: normal;
|
|
6780
7111
|
}
|
|
6781
7112
|
.chat-select__option:hover:not(:disabled),
|
|
6782
7113
|
.chat-select__option:focus-visible {
|
|
6783
|
-
background: var(--
|
|
7114
|
+
background: var(--tplane-chat-surface-alt);
|
|
6784
7115
|
outline: none;
|
|
6785
7116
|
}
|
|
6786
7117
|
.chat-select__option.is-active {
|
|
6787
|
-
background: var(--
|
|
7118
|
+
background: var(--tplane-chat-surface-alt);
|
|
6788
7119
|
font-weight: 500;
|
|
6789
7120
|
}
|
|
6790
7121
|
.chat-select__option:disabled {
|
|
@@ -6795,16 +7126,16 @@ const CHAT_SELECT_STYLES = `
|
|
|
6795
7126
|
|
|
6796
7127
|
// libs/chat/src/lib/primitives/chat-select/chat-select.component.ts
|
|
6797
7128
|
// SPDX-License-Identifier: MIT
|
|
7129
|
+
// Unique listbox id per instance, for aria-controls (multiple selects per page).
|
|
7130
|
+
let nextChatSelectId = 0;
|
|
6798
7131
|
/**
|
|
6799
|
-
* Generic single-select dropdown.
|
|
6800
|
-
* (
|
|
7132
|
+
* Generic single-select dropdown. The menu renders through the chat
|
|
7133
|
+
* connected-overlay primitive (a body-level portal), so it is never clipped by
|
|
7134
|
+
* an ancestor's `overflow` and never trapped by an ancestor `transform`.
|
|
6801
7135
|
*
|
|
6802
|
-
* Inputs:
|
|
6803
|
-
*
|
|
6804
|
-
*
|
|
6805
|
-
* placeholder — trigger label when no option matches; default 'Select'
|
|
6806
|
-
* disabled — disables the trigger; default false
|
|
6807
|
-
* menuLabel — aria-label for the popover; defaults to placeholder
|
|
7136
|
+
* Inputs: options (required), value (two-way), placeholder, disabled, menuLabel,
|
|
7137
|
+
* panelClass (extra class(es) on the overlay pane — the menu is portaled, so
|
|
7138
|
+
* `::ng-deep chat-select .chat-select__menu` no longer reaches it).
|
|
6808
7139
|
*/
|
|
6809
7140
|
class ChatSelectComponent {
|
|
6810
7141
|
options = input.required(...(ngDevMode ? [{ debugName: "options" }] : []));
|
|
@@ -6812,43 +7143,34 @@ class ChatSelectComponent {
|
|
|
6812
7143
|
placeholder = input('Select', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
6813
7144
|
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
6814
7145
|
menuLabel = input(undefined, ...(ngDevMode ? [{ debugName: "menuLabel" }] : []));
|
|
7146
|
+
panelClass = input('', ...(ngDevMode ? [{ debugName: "panelClass" }] : []));
|
|
6815
7147
|
open = signal(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
|
|
7148
|
+
menuId = `chat-select-menu-${nextChatSelectId++}`;
|
|
7149
|
+
// Above-right preferred (input pill sits at the bottom), then below, then the
|
|
7150
|
+
// left-aligned variants. The positioner flips/clamps to keep it in view.
|
|
7151
|
+
overlayPositions = [
|
|
7152
|
+
{ originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -8 },
|
|
7153
|
+
{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 8 },
|
|
7154
|
+
{ originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -8 },
|
|
7155
|
+
{ originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 8 },
|
|
7156
|
+
];
|
|
7157
|
+
panelClasses = computed(() => {
|
|
7158
|
+
const extra = this.panelClass();
|
|
7159
|
+
const list = Array.isArray(extra) ? extra : extra ? [extra] : [];
|
|
7160
|
+
return ['chat-select__overlay', ...list];
|
|
7161
|
+
}, ...(ngDevMode ? [{ debugName: "panelClasses" }] : []));
|
|
6816
7162
|
currentLabel = computed(() => {
|
|
6817
7163
|
const v = this.value();
|
|
6818
|
-
|
|
6819
|
-
return match?.label ?? this.placeholder();
|
|
7164
|
+
return this.options().find((o) => o.value === v)?.label ?? this.placeholder();
|
|
6820
7165
|
}, ...(ngDevMode ? [{ debugName: "currentLabel" }] : []));
|
|
6821
7166
|
hostEl = inject(ElementRef).nativeElement;
|
|
6822
7167
|
document = inject(DOCUMENT);
|
|
6823
|
-
|
|
6824
|
-
|
|
6825
|
-
|
|
6826
|
-
|
|
6827
|
-
|
|
6828
|
-
|
|
6829
|
-
if (!win)
|
|
6830
|
-
return;
|
|
6831
|
-
if (isOpen && !onDocClick) {
|
|
6832
|
-
onDocClick = (e) => {
|
|
6833
|
-
const path = e.composedPath?.() ?? [];
|
|
6834
|
-
if (!path.includes(this.hostEl)) {
|
|
6835
|
-
this.open.set(false);
|
|
6836
|
-
}
|
|
6837
|
-
};
|
|
6838
|
-
win.addEventListener('mousedown', onDocClick, true);
|
|
6839
|
-
}
|
|
6840
|
-
else if (!isOpen && onDocClick) {
|
|
6841
|
-
win.removeEventListener('mousedown', onDocClick, true);
|
|
6842
|
-
onDocClick = null;
|
|
6843
|
-
}
|
|
6844
|
-
});
|
|
6845
|
-
this.destroyRef.onDestroy(() => {
|
|
6846
|
-
if (onDocClick) {
|
|
6847
|
-
const win = this.document.defaultView;
|
|
6848
|
-
win?.removeEventListener('mousedown', onDocClick, true);
|
|
6849
|
-
onDocClick = null;
|
|
6850
|
-
}
|
|
6851
|
-
});
|
|
7168
|
+
// The overlay primitive emits the pane element on attach; options live there
|
|
7169
|
+
// (portaled out of the host), so option queries go through it.
|
|
7170
|
+
menuPane = null;
|
|
7171
|
+
onAttached(pane) {
|
|
7172
|
+
this.menuPane = pane;
|
|
7173
|
+
this.focusOption(0);
|
|
6852
7174
|
}
|
|
6853
7175
|
toggle() {
|
|
6854
7176
|
if (this.disabled())
|
|
@@ -6864,10 +7186,6 @@ class ChatSelectComponent {
|
|
|
6864
7186
|
onTriggerKeydown(e) {
|
|
6865
7187
|
if (this.disabled())
|
|
6866
7188
|
return;
|
|
6867
|
-
// Escape closes an open menu when focus is still on the trigger
|
|
6868
|
-
// (e.g. user clicked to open, then pressed Escape without arrowing
|
|
6869
|
-
// into the menu). Caught by live browser smoke — without this, click
|
|
6870
|
-
// + Escape leaves the menu open until the user clicks outside.
|
|
6871
7189
|
if (e.key === 'Escape' && this.open()) {
|
|
6872
7190
|
e.preventDefault();
|
|
6873
7191
|
this.open.set(false);
|
|
@@ -6876,14 +7194,14 @@ class ChatSelectComponent {
|
|
|
6876
7194
|
if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {
|
|
6877
7195
|
e.preventDefault();
|
|
6878
7196
|
this.open.set(true);
|
|
6879
|
-
|
|
7197
|
+
// focus happens in onAttached once the pane is live
|
|
6880
7198
|
}
|
|
6881
7199
|
}
|
|
6882
7200
|
onMenuKeydown(e) {
|
|
6883
7201
|
if (e.key === 'Escape') {
|
|
6884
7202
|
e.preventDefault();
|
|
6885
7203
|
this.open.set(false);
|
|
6886
|
-
this.
|
|
7204
|
+
this.queryTrigger()?.focus();
|
|
6887
7205
|
return;
|
|
6888
7206
|
}
|
|
6889
7207
|
if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
|
|
@@ -6900,11 +7218,7 @@ class ChatSelectComponent {
|
|
|
6900
7218
|
}
|
|
6901
7219
|
}
|
|
6902
7220
|
focusOption(index) {
|
|
6903
|
-
|
|
6904
|
-
opts[index]?.focus();
|
|
6905
|
-
}
|
|
6906
|
-
focusTrigger() {
|
|
6907
|
-
this.queryTrigger()?.focus();
|
|
7221
|
+
this.queryOptions()[index]?.focus();
|
|
6908
7222
|
}
|
|
6909
7223
|
moveFocus(dir) {
|
|
6910
7224
|
const opts = this.queryOptions().filter((b) => !b.disabled);
|
|
@@ -6912,24 +7226,27 @@ class ChatSelectComponent {
|
|
|
6912
7226
|
return;
|
|
6913
7227
|
const active = this.document.activeElement;
|
|
6914
7228
|
const idx = active ? opts.indexOf(active) : -1;
|
|
6915
|
-
|
|
6916
|
-
opts[next]?.focus();
|
|
7229
|
+
opts[(idx + dir + opts.length) % opts.length]?.focus();
|
|
6917
7230
|
}
|
|
6918
7231
|
queryOptions() {
|
|
6919
|
-
|
|
7232
|
+
const root = this.menuPane;
|
|
7233
|
+
return root ? Array.from(root.querySelectorAll('.chat-select__option')) : [];
|
|
6920
7234
|
}
|
|
6921
7235
|
queryTrigger() {
|
|
6922
7236
|
return this.hostEl.querySelector('.chat-select__trigger');
|
|
6923
7237
|
}
|
|
6924
7238
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6925
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: ChatSelectComponent, isStandalone: true, selector: "chat-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, menuLabel: { classPropertyName: "menuLabel", publicName: "menuLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, ngImport: i0, template: `
|
|
7239
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: ChatSelectComponent, isStandalone: true, selector: "chat-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, menuLabel: { classPropertyName: "menuLabel", publicName: "menuLabel", isSignal: true, isRequired: false, transformFunction: null }, panelClass: { classPropertyName: "panelClass", publicName: "panelClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, ngImport: i0, template: `
|
|
6926
7240
|
<button
|
|
6927
7241
|
type="button"
|
|
6928
7242
|
class="chat-select__trigger"
|
|
7243
|
+
chatOverlayOrigin
|
|
7244
|
+
#origin="chatOverlayOrigin"
|
|
6929
7245
|
[class.is-open]="open()"
|
|
6930
7246
|
[disabled]="disabled()"
|
|
6931
7247
|
[attr.aria-haspopup]="'listbox'"
|
|
6932
7248
|
[attr.aria-expanded]="open()"
|
|
7249
|
+
[attr.aria-controls]="open() ? menuId : null"
|
|
6933
7250
|
(click)="toggle()"
|
|
6934
7251
|
(keydown)="onTriggerKeydown($event)"
|
|
6935
7252
|
>
|
|
@@ -6938,11 +7255,21 @@ class ChatSelectComponent {
|
|
|
6938
7255
|
<path d="M4 6l4 4 4-4" stroke="currentColor" fill="none" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
6939
7256
|
</svg>
|
|
6940
7257
|
</button>
|
|
6941
|
-
|
|
7258
|
+
<ng-template
|
|
7259
|
+
chatConnectedOverlay
|
|
7260
|
+
[chatOverlayOrigin]="origin"
|
|
7261
|
+
[chatOverlayOpen]="open()"
|
|
7262
|
+
[chatOverlayPositions]="overlayPositions"
|
|
7263
|
+
[chatOverlayPanelClass]="panelClasses()"
|
|
7264
|
+
(chatOverlayAttached)="onAttached($event)"
|
|
7265
|
+
(chatOverlayOutsideClick)="open.set(false)"
|
|
7266
|
+
(chatOverlayDetach)="open.set(false)"
|
|
7267
|
+
>
|
|
6942
7268
|
<div
|
|
6943
7269
|
class="chat-select__menu"
|
|
6944
7270
|
role="listbox"
|
|
6945
7271
|
tabindex="-1"
|
|
7272
|
+
[id]="menuId"
|
|
6946
7273
|
[attr.aria-label]="menuLabel() ?? placeholder()"
|
|
6947
7274
|
(keydown)="onMenuKeydown($event)"
|
|
6948
7275
|
>
|
|
@@ -6963,19 +7290,22 @@ class ChatSelectComponent {
|
|
|
6963
7290
|
</button>
|
|
6964
7291
|
}
|
|
6965
7292
|
</div>
|
|
6966
|
-
|
|
6967
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
7293
|
+
</ng-template>
|
|
7294
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:inline-block;position:relative}.chat-select__trigger{height:32px;padding:0 10px;border:0;border-radius:9999px;background:transparent;color:var(--tplane-chat-text-muted);font:inherit;font-size:var(--tplane-chat-font-size-sm);display:inline-flex;align-items:center;gap:4px;cursor:pointer;transition:background .12s ease,color .12s ease}.chat-select__trigger:hover:not(:disabled){background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}.chat-select__trigger:disabled{opacity:.5;cursor:not-allowed}.chat-select__chevron{width:12px;height:12px;transition:transform .12s ease;flex:none}.chat-select__trigger.is-open .chat-select__chevron{transform:rotate(180deg)}.chat-select__menu{min-width:180px;max-height:320px;overflow-y:auto;background:var(--tplane-chat-surface);border:1px solid var(--tplane-chat-separator);border-radius:12px;box-shadow:var(--tplane-chat-shadow-lg);padding:4px;box-sizing:border-box}.chat-select__option{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;border:0;background:transparent;padding:8px 10px;border-radius:8px;color:var(--tplane-chat-text);font:inherit;font-size:var(--tplane-chat-font-size-sm);cursor:pointer}.chat-select__option-desc{font-size:var(--tplane-chat-font-size-xs);color:var(--tplane-chat-text-muted);line-height:1.3;white-space:normal}.chat-select__option:hover:not(:disabled),.chat-select__option:focus-visible{background:var(--tplane-chat-surface-alt);outline:none}.chat-select__option.is-active{background:var(--tplane-chat-surface-alt);font-weight:500}.chat-select__option:disabled{opacity:.4;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: ChatConnectedOverlayDirective, selector: "[chatConnectedOverlay]", inputs: ["chatOverlayOrigin", "chatOverlayOpen", "chatOverlayPositions", "chatOverlayPanelClass"], outputs: ["chatOverlayAttached", "chatOverlayOutsideClick", "chatOverlayDetach"] }, { kind: "directive", type: ChatOverlayOriginDirective, selector: "[chatOverlayOrigin]", exportAs: ["chatOverlayOrigin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
6968
7295
|
}
|
|
6969
7296
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSelectComponent, decorators: [{
|
|
6970
7297
|
type: Component,
|
|
6971
|
-
args: [{ selector: 'chat-select', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
7298
|
+
args: [{ selector: 'chat-select', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ChatConnectedOverlayDirective, ChatOverlayOriginDirective], template: `
|
|
6972
7299
|
<button
|
|
6973
7300
|
type="button"
|
|
6974
7301
|
class="chat-select__trigger"
|
|
7302
|
+
chatOverlayOrigin
|
|
7303
|
+
#origin="chatOverlayOrigin"
|
|
6975
7304
|
[class.is-open]="open()"
|
|
6976
7305
|
[disabled]="disabled()"
|
|
6977
7306
|
[attr.aria-haspopup]="'listbox'"
|
|
6978
7307
|
[attr.aria-expanded]="open()"
|
|
7308
|
+
[attr.aria-controls]="open() ? menuId : null"
|
|
6979
7309
|
(click)="toggle()"
|
|
6980
7310
|
(keydown)="onTriggerKeydown($event)"
|
|
6981
7311
|
>
|
|
@@ -6984,11 +7314,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
6984
7314
|
<path d="M4 6l4 4 4-4" stroke="currentColor" fill="none" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
6985
7315
|
</svg>
|
|
6986
7316
|
</button>
|
|
6987
|
-
|
|
7317
|
+
<ng-template
|
|
7318
|
+
chatConnectedOverlay
|
|
7319
|
+
[chatOverlayOrigin]="origin"
|
|
7320
|
+
[chatOverlayOpen]="open()"
|
|
7321
|
+
[chatOverlayPositions]="overlayPositions"
|
|
7322
|
+
[chatOverlayPanelClass]="panelClasses()"
|
|
7323
|
+
(chatOverlayAttached)="onAttached($event)"
|
|
7324
|
+
(chatOverlayOutsideClick)="open.set(false)"
|
|
7325
|
+
(chatOverlayDetach)="open.set(false)"
|
|
7326
|
+
>
|
|
6988
7327
|
<div
|
|
6989
7328
|
class="chat-select__menu"
|
|
6990
7329
|
role="listbox"
|
|
6991
7330
|
tabindex="-1"
|
|
7331
|
+
[id]="menuId"
|
|
6992
7332
|
[attr.aria-label]="menuLabel() ?? placeholder()"
|
|
6993
7333
|
(keydown)="onMenuKeydown($event)"
|
|
6994
7334
|
>
|
|
@@ -7009,9 +7349,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
7009
7349
|
</button>
|
|
7010
7350
|
}
|
|
7011
7351
|
</div>
|
|
7012
|
-
|
|
7013
|
-
`, styles: [":host{font-family:var(--
|
|
7014
|
-
}],
|
|
7352
|
+
</ng-template>
|
|
7353
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:inline-block;position:relative}.chat-select__trigger{height:32px;padding:0 10px;border:0;border-radius:9999px;background:transparent;color:var(--tplane-chat-text-muted);font:inherit;font-size:var(--tplane-chat-font-size-sm);display:inline-flex;align-items:center;gap:4px;cursor:pointer;transition:background .12s ease,color .12s ease}.chat-select__trigger:hover:not(:disabled){background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}.chat-select__trigger:disabled{opacity:.5;cursor:not-allowed}.chat-select__chevron{width:12px;height:12px;transition:transform .12s ease;flex:none}.chat-select__trigger.is-open .chat-select__chevron{transform:rotate(180deg)}.chat-select__menu{min-width:180px;max-height:320px;overflow-y:auto;background:var(--tplane-chat-surface);border:1px solid var(--tplane-chat-separator);border-radius:12px;box-shadow:var(--tplane-chat-shadow-lg);padding:4px;box-sizing:border-box}.chat-select__option{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;border:0;background:transparent;padding:8px 10px;border-radius:8px;color:var(--tplane-chat-text);font:inherit;font-size:var(--tplane-chat-font-size-sm);cursor:pointer}.chat-select__option-desc{font-size:var(--tplane-chat-font-size-xs);color:var(--tplane-chat-text-muted);line-height:1.3;white-space:normal}.chat-select__option:hover:not(:disabled),.chat-select__option:focus-visible{background:var(--tplane-chat-surface-alt);outline:none}.chat-select__option.is-active{background:var(--tplane-chat-surface-alt);font-weight:500}.chat-select__option:disabled{opacity:.4;cursor:not-allowed}\n"] }]
|
|
7354
|
+
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], menuLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuLabel", required: false }] }], panelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelClass", required: false }] }] } });
|
|
7015
7355
|
|
|
7016
7356
|
// SPDX-License-Identifier: MIT
|
|
7017
7357
|
const PACKAGE_NAME = '@threadplane/chat';
|
|
@@ -7513,7 +7853,7 @@ class A2uiDefaultFallbackComponent {
|
|
|
7513
7853
|
<div class="a2ui-default-fallback__row"></div>
|
|
7514
7854
|
</div>
|
|
7515
7855
|
</div>
|
|
7516
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
7856
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;width:100%}.a2ui-default-fallback{border:1px solid var(--tplane-chat-separator);border-radius:10px;padding:14px;background:var(--tplane-chat-surface-alt)}.a2ui-default-fallback__label{font-size:12px;color:var(--tplane-chat-text-muted);margin-bottom:10px;display:flex;align-items:center;gap:6px}.a2ui-default-fallback__rows{display:flex;flex-direction:column;gap:8px}.a2ui-default-fallback__row{height:10px;border-radius:5px;background:linear-gradient(90deg,var(--tplane-chat-separator) 0%,color-mix(in srgb,var(--tplane-chat-separator) 70%,transparent) 50%,var(--tplane-chat-separator) 100%);background-size:200% 100%;animation:a2ui-default-fallback-shimmer 1.4s ease-in-out infinite}.a2ui-default-fallback__row:nth-child(1){width:70%}.a2ui-default-fallback__row:nth-child(2){width:90%}.a2ui-default-fallback__row:nth-child(3){width:50%}@keyframes a2ui-default-fallback-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7517
7857
|
}
|
|
7518
7858
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: A2uiDefaultFallbackComponent, decorators: [{
|
|
7519
7859
|
type: Component,
|
|
@@ -7529,7 +7869,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
7529
7869
|
<div class="a2ui-default-fallback__row"></div>
|
|
7530
7870
|
</div>
|
|
7531
7871
|
</div>
|
|
7532
|
-
`, styles: [":host{font-family:var(--
|
|
7872
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;width:100%}.a2ui-default-fallback{border:1px solid var(--tplane-chat-separator);border-radius:10px;padding:14px;background:var(--tplane-chat-surface-alt)}.a2ui-default-fallback__label{font-size:12px;color:var(--tplane-chat-text-muted);margin-bottom:10px;display:flex;align-items:center;gap:6px}.a2ui-default-fallback__rows{display:flex;flex-direction:column;gap:8px}.a2ui-default-fallback__row{height:10px;border-radius:5px;background:linear-gradient(90deg,var(--tplane-chat-separator) 0%,color-mix(in srgb,var(--tplane-chat-separator) 70%,transparent) 50%,var(--tplane-chat-separator) 100%);background-size:200% 100%;animation:a2ui-default-fallback-shimmer 1.4s ease-in-out infinite}.a2ui-default-fallback__row:nth-child(1){width:70%}.a2ui-default-fallback__row:nth-child(2){width:90%}.a2ui-default-fallback__row:nth-child(3){width:50%}@keyframes a2ui-default-fallback-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}\n"] }]
|
|
7533
7873
|
}] });
|
|
7534
7874
|
|
|
7535
7875
|
// SPDX-License-Identifier: MIT
|
|
@@ -8070,7 +8410,7 @@ function isTraceEnabled() {
|
|
|
8070
8410
|
function trace(...args) {
|
|
8071
8411
|
if (isTraceEnabled()) {
|
|
8072
8412
|
// eslint-disable-next-line no-console
|
|
8073
|
-
console.debug('[
|
|
8413
|
+
console.debug('[tplane-chat-stream]', ...args);
|
|
8074
8414
|
}
|
|
8075
8415
|
}
|
|
8076
8416
|
|
|
@@ -9064,8 +9404,8 @@ class ChatComponent {
|
|
|
9064
9404
|
return last?.role === 'assistant';
|
|
9065
9405
|
}, ...(ngDevMode ? [{ debugName: "currentAssistantStreaming" }] : []));
|
|
9066
9406
|
constructor() {
|
|
9067
|
-
// Inject the chat lib's root CSS custom properties (--
|
|
9068
|
-
// --
|
|
9407
|
+
// Inject the chat lib's root CSS custom properties (--tplane-chat-bg,
|
|
9408
|
+
// --tplane-chat-surface, --tplane-chat-radius-input, etc.) the first
|
|
9069
9409
|
// time any chat composition is constructed. The module-eval side
|
|
9070
9410
|
// effect that previously handled this is unreliable under
|
|
9071
9411
|
// aggressive production tree-shaking — bundlers that don't see
|
|
@@ -9697,7 +10037,7 @@ class ChatComponent {
|
|
|
9697
10037
|
</div>
|
|
9698
10038
|
</div>
|
|
9699
10039
|
}
|
|
9700
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
10040
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;max-height:100%;overflow:hidden;background:var(--tplane-chat-bg)}:host>chat-welcome{display:flex;flex:1 1 auto;width:100%}.chat-shell{display:flex;flex:1;min-height:0;overflow:hidden}.chat-shell__sidebar{width:240px;flex-shrink:0;border-right:1px solid var(--tplane-chat-separator);background:var(--tplane-chat-surface-alt);overflow-y:auto;display:none}@media(min-width:768px){.chat-shell__sidebar{display:block}}.chat-shell__main{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}.chat-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:60px 20px;color:var(--tplane-chat-text-muted);text-align:center;flex:1;min-height:0}.chat-empty[hidden]{display:none}.chat-empty__title{font-size:1.125rem;font-weight:500;color:var(--tplane-chat-text);margin:0}.chat-empty__sub{margin:0;font-size:var(--tplane-chat-font-size-sm)}.chat-scroll{flex:1;min-height:0;overflow-y:auto;padding-top:var(--tplane-chat-edge-pad)}.chat-scroll::-webkit-scrollbar{width:6px}.chat-scroll::-webkit-scrollbar-thumb{background:var(--tplane-chat-separator);border-radius:10px}[chatFooter]{padding-bottom:var(--tplane-chat-edge-pad)}.chat-footer-wrap{position:relative}\n"], dependencies: [{ kind: "component", type: ChatWindowComponent, selector: "chat-window" }, { kind: "component", type: ChatMessageListComponent, selector: "chat-message-list", inputs: ["agent"] }, { kind: "directive", type: MessageTemplateDirective, selector: "ng-template[chatMessageTemplate]", inputs: ["chatMessageTemplate"] }, { kind: "component", type: ChatMessageComponent, selector: "chat-message", inputs: ["role", "current", "streaming", "prevRole", "message"] }, { kind: "component", type: ChatInputComponent, selector: "chat-input", inputs: ["agent", "submitOnEnter", "placeholder", "showStopButton"], outputs: ["submitted", "stopped"] }, { kind: "component", type: ChatTypingIndicatorComponent, selector: "chat-typing-indicator", inputs: ["agent"] }, { kind: "component", type: ChatErrorComponent, selector: "chat-error", inputs: ["agent"] }, { kind: "component", type: ChatThreadListComponent, selector: "chat-thread-list", inputs: ["threads", "activeThreadId", "showNewThreadButton", "actions", "mode", "projects"], outputs: ["threadSelected", "newThreadRequested"] }, { kind: "component", type: ChatGenerativeUiComponent, selector: "chat-generative-ui", inputs: ["spec", "registry", "store", "handlers", "loading"], outputs: ["events"] }, { kind: "component", type: ChatStreamingMdComponent, selector: "chat-streaming-md", inputs: ["content", "streaming", "viewRegistry"] }, { kind: "component", type: ChatToolCallsComponent, selector: "chat-tool-calls", inputs: ["agent", "message", "grouping", "groupSummary", "excludeToolNames"] }, { kind: "component", type: ChatToolViewsComponent, selector: "chat-tool-views", inputs: ["agent", "message", "views", "store", "handlers"], outputs: ["events"] }, { kind: "component", type: A2uiSurfaceComponent, selector: "a2ui-surface", inputs: ["surface", "state", "catalog", "handlers", "surfaceFallback"], outputs: ["events", "action"] }, { kind: "component", type: ChatMessageActionsComponent, selector: "chat-message-actions", inputs: ["content", "disabled"], outputs: ["regenerate", "rate", "contentCopied"] }, { kind: "component", type: ChatWelcomeComponent, selector: "chat-welcome" }, { kind: "component", type: ChatSelectComponent, selector: "chat-select", inputs: ["options", "value", "placeholder", "disabled", "menuLabel", "panelClass"], outputs: ["valueChange"] }, { kind: "component", type: ChatReasoningComponent, selector: "chat-reasoning", inputs: ["content", "isStreaming", "durationMs", "label", "defaultExpanded"] }, { kind: "component", type: ChatScrollBubbleComponent, selector: "chat-scroll-bubble", inputs: ["mode"], outputs: ["clicked"] }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
9701
10041
|
}
|
|
9702
10042
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatComponent, decorators: [{
|
|
9703
10043
|
type: Component,
|
|
@@ -9881,7 +10221,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
9881
10221
|
</div>
|
|
9882
10222
|
</div>
|
|
9883
10223
|
}
|
|
9884
|
-
`, styles: [":host{font-family:var(--
|
|
10224
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;max-height:100%;overflow:hidden;background:var(--tplane-chat-bg)}:host>chat-welcome{display:flex;flex:1 1 auto;width:100%}.chat-shell{display:flex;flex:1;min-height:0;overflow:hidden}.chat-shell__sidebar{width:240px;flex-shrink:0;border-right:1px solid var(--tplane-chat-separator);background:var(--tplane-chat-surface-alt);overflow-y:auto;display:none}@media(min-width:768px){.chat-shell__sidebar{display:block}}.chat-shell__main{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}.chat-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:60px 20px;color:var(--tplane-chat-text-muted);text-align:center;flex:1;min-height:0}.chat-empty[hidden]{display:none}.chat-empty__title{font-size:1.125rem;font-weight:500;color:var(--tplane-chat-text);margin:0}.chat-empty__sub{margin:0;font-size:var(--tplane-chat-font-size-sm)}.chat-scroll{flex:1;min-height:0;overflow-y:auto;padding-top:var(--tplane-chat-edge-pad)}.chat-scroll::-webkit-scrollbar{width:6px}.chat-scroll::-webkit-scrollbar-thumb{background:var(--tplane-chat-separator);border-radius:10px}[chatFooter]{padding-bottom:var(--tplane-chat-edge-pad)}.chat-footer-wrap{position:relative}\n"] }]
|
|
9885
10225
|
}], ctorParameters: () => [], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], views: [{ type: i0.Input, args: [{ isSignal: true, alias: "views", required: false }] }], clientTools: [{ type: i0.Input, args: [{ isSignal: true, alias: "clientTools", required: false }] }], store: [{ type: i0.Input, args: [{ isSignal: true, alias: "store", required: false }] }], handlers: [{ type: i0.Input, args: [{ isSignal: true, alias: "handlers", required: false }] }], threads: [{ type: i0.Input, args: [{ isSignal: true, alias: "threads", required: false }] }], activeThreadId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeThreadId", required: false }] }], welcomeDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "welcomeDisabled", required: false }] }], modelOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "modelOptions", required: false }] }], showModelPicker: [{ type: i0.Input, args: [{ isSignal: true, alias: "showModelPicker", required: false }] }], selectedModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedModel", required: false }] }, { type: i0.Output, args: ["selectedModelChange"] }], modelPickerPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "modelPickerPlaceholder", required: false }] }], genuiToolNames: [{ type: i0.Input, args: [{ isSignal: true, alias: "genuiToolNames", required: false }] }], threadSelected: [{ type: i0.Output, args: ["threadSelected"] }], renderEvent: [{ type: i0.Output, args: ["renderEvent"] }], regenerate: [{ type: i0.Output, args: ["regenerate"] }], rate: [{ type: i0.Output, args: ["rate"] }], messageCopy: [{ type: i0.Output, args: ["messageCopy"] }], scrollContainer: [{ type: i0.ViewChild, args: ['scrollContainer', { isSignal: true }] }] } });
|
|
9886
10226
|
|
|
9887
10227
|
// libs/chat/src/lib/compositions/chat-popup/chat-popup.component.ts
|
|
@@ -9969,7 +10309,7 @@ class ChatPopupComponent {
|
|
|
9969
10309
|
<ng-content select="[chatWelcomeSuggestions]" chatWelcomeSuggestions />
|
|
9970
10310
|
</chat>
|
|
9971
10311
|
</div>
|
|
9972
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
10312
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{position:fixed;bottom:1rem;right:1rem;z-index:var(--tplane-chat-z-overlay-content, 30)}.chat-popup__launcher{position:relative}.chat-popup__window{position:fixed;bottom:5rem;right:1rem;width:24rem;height:600px;max-height:calc(100vh - 6rem);background:var(--tplane-chat-bg);border:1px solid var(--tplane-chat-separator);border-radius:.75rem;box-shadow:0 5px 40px #00000029;transform-origin:bottom right;transform:scale(.95) translateY(20px);opacity:0;pointer-events:none;transition:transform .2s ease-out,opacity .1s ease-out;overflow:hidden;display:flex;flex-direction:column}.chat-popup__window[data-open=true]{transform:scale(1) translateY(0);opacity:1;pointer-events:auto}@media(max-width:640px){.chat-popup__window{inset:0 auto auto 0;width:100vw;height:100vh;max-height:100vh;border-radius:0}}.chat-popup__close{position:absolute;top:8px;right:8px;width:32px;height:32px;background:transparent;border:0;cursor:pointer;color:var(--tplane-chat-text-muted);border-radius:50%;z-index:1;display:flex;align-items:center;justify-content:center}.chat-popup__close:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}\n"], dependencies: [{ kind: "component", type: ChatComponent, selector: "chat", inputs: ["agent", "views", "clientTools", "store", "handlers", "threads", "activeThreadId", "welcomeDisabled", "modelOptions", "showModelPicker", "selectedModel", "modelPickerPlaceholder", "genuiToolNames"], outputs: ["selectedModelChange", "threadSelected", "renderEvent", "regenerate", "rate", "messageCopy"] }, { kind: "component", type: ChatLauncherButtonComponent, selector: "chat-launcher-button", outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
9973
10313
|
}
|
|
9974
10314
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatPopupComponent, decorators: [{
|
|
9975
10315
|
type: Component,
|
|
@@ -9994,7 +10334,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
9994
10334
|
<ng-content select="[chatWelcomeSuggestions]" chatWelcomeSuggestions />
|
|
9995
10335
|
</chat>
|
|
9996
10336
|
</div>
|
|
9997
|
-
`, styles: [":host{font-family:var(--
|
|
10337
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{position:fixed;bottom:1rem;right:1rem;z-index:var(--tplane-chat-z-overlay-content, 30)}.chat-popup__launcher{position:relative}.chat-popup__window{position:fixed;bottom:5rem;right:1rem;width:24rem;height:600px;max-height:calc(100vh - 6rem);background:var(--tplane-chat-bg);border:1px solid var(--tplane-chat-separator);border-radius:.75rem;box-shadow:0 5px 40px #00000029;transform-origin:bottom right;transform:scale(.95) translateY(20px);opacity:0;pointer-events:none;transition:transform .2s ease-out,opacity .1s ease-out;overflow:hidden;display:flex;flex-direction:column}.chat-popup__window[data-open=true]{transform:scale(1) translateY(0);opacity:1;pointer-events:auto}@media(max-width:640px){.chat-popup__window{inset:0 auto auto 0;width:100vw;height:100vh;max-height:100vh;border-radius:0}}.chat-popup__close{position:absolute;top:8px;right:8px;width:32px;height:32px;background:transparent;border:0;cursor:pointer;color:var(--tplane-chat-text-muted);border-radius:50%;z-index:1;display:flex;align-items:center;justify-content:center}.chat-popup__close:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}\n"] }]
|
|
9998
10338
|
}], ctorParameters: () => [], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], views: [{ type: i0.Input, args: [{ isSignal: true, alias: "views", required: false }] }], clientTools: [{ type: i0.Input, args: [{ isSignal: true, alias: "clientTools", required: false }] }], modelOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "modelOptions", required: false }] }], showModelPicker: [{ type: i0.Input, args: [{ isSignal: true, alias: "showModelPicker", required: false }] }], selectedModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedModel", required: false }] }, { type: i0.Output, args: ["selectedModelChange"] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], shortcut: [{ type: i0.Input, args: [{ isSignal: true, alias: "shortcut", required: false }] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }] } });
|
|
9999
10339
|
|
|
10000
10340
|
// libs/chat/src/lib/compositions/chat-sidebar/chat-sidebar.component.ts
|
|
@@ -10030,8 +10370,8 @@ class ChatSidebarComponent {
|
|
|
10030
10370
|
// for the full rationale. Idempotent + lifecycle-guaranteed.
|
|
10031
10371
|
ensureChatRootStyles();
|
|
10032
10372
|
// Publish the right-edge claim while the panel is open. Peer panels
|
|
10033
|
-
// (e.g. chat-debug) read --
|
|
10034
|
-
effect(() => {
|
|
10373
|
+
// (e.g. chat-debug) read --tplane-chat-occupy-right to leave room.
|
|
10374
|
+
effect((onCleanup) => {
|
|
10035
10375
|
if (typeof document === 'undefined')
|
|
10036
10376
|
return;
|
|
10037
10377
|
const html = document.documentElement;
|
|
@@ -10041,6 +10381,11 @@ class ChatSidebarComponent {
|
|
|
10041
10381
|
else {
|
|
10042
10382
|
delete html.dataset['threadplaneChatSidebar'];
|
|
10043
10383
|
}
|
|
10384
|
+
// Clear the global claim when the sidebar is destroyed (not just closed).
|
|
10385
|
+
// Without this, unmounting while open (e.g. switching demo modes) leaves
|
|
10386
|
+
// data-threadplane-chat-sidebar="open" stuck on <html>, so peer panels
|
|
10387
|
+
// keep reserving --tplane-chat-occupy-right and a phantom gap persists.
|
|
10388
|
+
onCleanup(() => { delete html.dataset['threadplaneChatSidebar']; });
|
|
10044
10389
|
});
|
|
10045
10390
|
effect((onCleanup) => {
|
|
10046
10391
|
const closeOnEscape = this.closeOnEscape();
|
|
@@ -10087,7 +10432,7 @@ class ChatSidebarComponent {
|
|
|
10087
10432
|
<ng-content select="[chatWelcomeSuggestions]" chatWelcomeSuggestions />
|
|
10088
10433
|
</chat>
|
|
10089
10434
|
</aside>
|
|
10090
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
10435
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:flex;height:100%;min-height:0}.chat-sidebar__content{flex:1 1 auto;min-width:0;min-height:0;transition:margin-right .3s ease}:host([data-push=\"true\"][data-open=\"true\"]) .chat-sidebar__content{margin-right:var(--tplane-chat-sidebar-width-drawer, 28rem)}@media(max-width:640px){:host([data-push=\"true\"][data-open=\"true\"]) .chat-sidebar__content{margin-right:0}}.chat-sidebar__panel{position:fixed;top:0;right:0;bottom:var(--tplane-chat-debug-claim-bottom, 0);width:var(--tplane-chat-sidebar-width-drawer, 28rem);background:var(--tplane-chat-bg);border-left:1px solid var(--tplane-chat-separator);box-shadow:-8px 0 32px #00000014;transform:translate(100%);transition:transform .2s ease-out,bottom .2s ease-out;z-index:var(--tplane-chat-z-overlay-content, 30);display:flex;flex-direction:column}.chat-sidebar__panel[data-open=true]{transform:translate(0)}@media(max-width:640px){.chat-sidebar__panel{width:100vw}}.chat-sidebar__panel-header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border-bottom:1px solid var(--tplane-chat-separator);min-height:48px}.chat-sidebar__panel-title{min-width:0;flex:1 1 auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--tplane-chat-text);font-weight:500;font-size:var(--tplane-chat-font-size-sm)}.chat-sidebar__close{flex:0 0 auto;width:32px;height:32px;background:transparent;border:0;cursor:pointer;color:var(--tplane-chat-text-muted);border-radius:50%;display:flex;align-items:center;justify-content:center}.chat-sidebar__close:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}.chat-sidebar__launcher{position:fixed;bottom:calc(1rem + var(--tplane-chat-debug-claim-bottom, 0));right:1rem;z-index:var(--tplane-chat-z-overlay-content, 30);transition:bottom .2s ease-out}:host([data-open=\"true\"]) .chat-sidebar__launcher{display:none}\n"], dependencies: [{ kind: "component", type: ChatComponent, selector: "chat", inputs: ["agent", "views", "clientTools", "store", "handlers", "threads", "activeThreadId", "welcomeDisabled", "modelOptions", "showModelPicker", "selectedModel", "modelPickerPlaceholder", "genuiToolNames"], outputs: ["selectedModelChange", "threadSelected", "renderEvent", "regenerate", "rate", "messageCopy"] }, { kind: "component", type: ChatLauncherButtonComponent, selector: "chat-launcher-button", outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10091
10436
|
}
|
|
10092
10437
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSidebarComponent, decorators: [{
|
|
10093
10438
|
type: Component,
|
|
@@ -10121,7 +10466,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
10121
10466
|
<ng-content select="[chatWelcomeSuggestions]" chatWelcomeSuggestions />
|
|
10122
10467
|
</chat>
|
|
10123
10468
|
</aside>
|
|
10124
|
-
`, styles: [":host{font-family:var(--
|
|
10469
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:flex;height:100%;min-height:0}.chat-sidebar__content{flex:1 1 auto;min-width:0;min-height:0;transition:margin-right .3s ease}:host([data-push=\"true\"][data-open=\"true\"]) .chat-sidebar__content{margin-right:var(--tplane-chat-sidebar-width-drawer, 28rem)}@media(max-width:640px){:host([data-push=\"true\"][data-open=\"true\"]) .chat-sidebar__content{margin-right:0}}.chat-sidebar__panel{position:fixed;top:0;right:0;bottom:var(--tplane-chat-debug-claim-bottom, 0);width:var(--tplane-chat-sidebar-width-drawer, 28rem);background:var(--tplane-chat-bg);border-left:1px solid var(--tplane-chat-separator);box-shadow:-8px 0 32px #00000014;transform:translate(100%);transition:transform .2s ease-out,bottom .2s ease-out;z-index:var(--tplane-chat-z-overlay-content, 30);display:flex;flex-direction:column}.chat-sidebar__panel[data-open=true]{transform:translate(0)}@media(max-width:640px){.chat-sidebar__panel{width:100vw}}.chat-sidebar__panel-header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border-bottom:1px solid var(--tplane-chat-separator);min-height:48px}.chat-sidebar__panel-title{min-width:0;flex:1 1 auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--tplane-chat-text);font-weight:500;font-size:var(--tplane-chat-font-size-sm)}.chat-sidebar__close{flex:0 0 auto;width:32px;height:32px;background:transparent;border:0;cursor:pointer;color:var(--tplane-chat-text-muted);border-radius:50%;display:flex;align-items:center;justify-content:center}.chat-sidebar__close:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}.chat-sidebar__launcher{position:fixed;bottom:calc(1rem + var(--tplane-chat-debug-claim-bottom, 0));right:1rem;z-index:var(--tplane-chat-z-overlay-content, 30);transition:bottom .2s ease-out}:host([data-open=\"true\"]) .chat-sidebar__launcher{display:none}\n"] }]
|
|
10125
10470
|
}], ctorParameters: () => [], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], views: [{ type: i0.Input, args: [{ isSignal: true, alias: "views", required: false }] }], clientTools: [{ type: i0.Input, args: [{ isSignal: true, alias: "clientTools", required: false }] }], modelOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "modelOptions", required: false }] }], showModelPicker: [{ type: i0.Input, args: [{ isSignal: true, alias: "showModelPicker", required: false }] }], selectedModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedModel", required: false }] }, { type: i0.Output, args: ["selectedModelChange"] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], pushContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "pushContent", required: false }] }] } });
|
|
10126
10471
|
|
|
10127
10472
|
// libs/chat/src/lib/compositions/chat-timeline-slider/chat-timeline-slider.component.ts
|
|
@@ -10172,7 +10517,7 @@ class ChatTimelineSliderComponent {
|
|
|
10172
10517
|
}
|
|
10173
10518
|
</ul>
|
|
10174
10519
|
}
|
|
10175
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
10520
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;padding:var(--tplane-chat-space-2)}.timeline-slider__header{display:flex;align-items:center;justify-content:space-between;padding:0 var(--tplane-chat-space-1) var(--tplane-chat-space-2)}.timeline-slider__title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--tplane-chat-text-muted);margin:0}.timeline-slider__count{font-size:var(--tplane-chat-font-size-xs);color:var(--tplane-chat-text-muted)}.timeline-slider__empty{text-align:center;padding:var(--tplane-chat-space-4);color:var(--tplane-chat-text-muted);font-size:var(--tplane-chat-font-size-xs)}.timeline-slider__list{list-style:none;padding-left:12px;margin:0;border-left:1px solid var(--tplane-chat-separator);display:flex;flex-direction:column;gap:2px}.timeline-slider__entry{display:flex;align-items:center;gap:8px;padding:6px 8px;margin-left:-1px;border-left:2px solid transparent;border-radius:var(--tplane-chat-radius-button);cursor:default;color:var(--tplane-chat-text-muted);font-size:var(--tplane-chat-font-size-sm);transition:background .15s ease}.timeline-slider__entry:hover{background:color-mix(in srgb,var(--tplane-chat-text) 5%,transparent)}.timeline-slider__entry[data-active=true]{border-left-color:var(--tplane-chat-primary);color:var(--tplane-chat-text)}.timeline-slider__index{width:22px;height:22px;border-radius:9999px;background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text-muted);font-size:11px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.timeline-slider__entry[data-active=true] .timeline-slider__index{background:var(--tplane-chat-primary);color:var(--tplane-chat-on-primary)}.timeline-slider__body{flex:1;min-width:0}.timeline-slider__label{font-weight:500;color:var(--tplane-chat-text);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--tplane-chat-font-size-sm)}.timeline-slider__id{font-family:var(--tplane-chat-font-mono);font-size:11px;color:var(--tplane-chat-text-muted);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-slider__actions{display:flex;gap:4px;flex-shrink:0}.timeline-slider__btn{padding:2px 8px;font-size:var(--tplane-chat-font-size-xs);border-radius:var(--tplane-chat-radius-button);background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text);border:0;cursor:pointer;transition:background .15s ease}.timeline-slider__btn:hover{background:color-mix(in srgb,var(--tplane-chat-text) 8%,transparent)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10176
10521
|
}
|
|
10177
10522
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatTimelineSliderComponent, decorators: [{
|
|
10178
10523
|
type: Component,
|
|
@@ -10206,7 +10551,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
10206
10551
|
}
|
|
10207
10552
|
</ul>
|
|
10208
10553
|
}
|
|
10209
|
-
`, styles: [":host{font-family:var(--
|
|
10554
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;padding:var(--tplane-chat-space-2)}.timeline-slider__header{display:flex;align-items:center;justify-content:space-between;padding:0 var(--tplane-chat-space-1) var(--tplane-chat-space-2)}.timeline-slider__title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--tplane-chat-text-muted);margin:0}.timeline-slider__count{font-size:var(--tplane-chat-font-size-xs);color:var(--tplane-chat-text-muted)}.timeline-slider__empty{text-align:center;padding:var(--tplane-chat-space-4);color:var(--tplane-chat-text-muted);font-size:var(--tplane-chat-font-size-xs)}.timeline-slider__list{list-style:none;padding-left:12px;margin:0;border-left:1px solid var(--tplane-chat-separator);display:flex;flex-direction:column;gap:2px}.timeline-slider__entry{display:flex;align-items:center;gap:8px;padding:6px 8px;margin-left:-1px;border-left:2px solid transparent;border-radius:var(--tplane-chat-radius-button);cursor:default;color:var(--tplane-chat-text-muted);font-size:var(--tplane-chat-font-size-sm);transition:background .15s ease}.timeline-slider__entry:hover{background:color-mix(in srgb,var(--tplane-chat-text) 5%,transparent)}.timeline-slider__entry[data-active=true]{border-left-color:var(--tplane-chat-primary);color:var(--tplane-chat-text)}.timeline-slider__index{width:22px;height:22px;border-radius:9999px;background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text-muted);font-size:11px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.timeline-slider__entry[data-active=true] .timeline-slider__index{background:var(--tplane-chat-primary);color:var(--tplane-chat-on-primary)}.timeline-slider__body{flex:1;min-width:0}.timeline-slider__label{font-weight:500;color:var(--tplane-chat-text);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--tplane-chat-font-size-sm)}.timeline-slider__id{font-family:var(--tplane-chat-font-mono);font-size:11px;color:var(--tplane-chat-text-muted);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-slider__actions{display:flex;gap:4px;flex-shrink:0}.timeline-slider__btn{padding:2px 8px;font-size:var(--tplane-chat-font-size-xs);border-radius:var(--tplane-chat-radius-button);background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text);border:0;cursor:pointer;transition:background .15s ease}.timeline-slider__btn:hover{background:color-mix(in srgb,var(--tplane-chat-text) 8%,transparent)}\n"] }]
|
|
10210
10555
|
}], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], replayRequested: [{ type: i0.Output, args: ["replayRequested"] }], forkRequested: [{ type: i0.Output, args: ["forkRequested"] }] } });
|
|
10211
10556
|
|
|
10212
10557
|
// libs/chat/src/lib/styles/chat-sidenav.styles.ts
|
|
@@ -10232,10 +10577,10 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10232
10577
|
z-index: 100;
|
|
10233
10578
|
}
|
|
10234
10579
|
:host([data-mode="expanded"]) {
|
|
10235
|
-
width: var(--
|
|
10580
|
+
width: var(--tplane-chat-sidenav-width-expanded);
|
|
10236
10581
|
}
|
|
10237
10582
|
:host([data-mode="collapsed"]) {
|
|
10238
|
-
width: var(--
|
|
10583
|
+
width: var(--tplane-chat-sidenav-width-collapsed);
|
|
10239
10584
|
}
|
|
10240
10585
|
:host([data-mode="expanded"]) .chat-sidenav {
|
|
10241
10586
|
width: 100%;
|
|
@@ -10248,8 +10593,8 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10248
10593
|
top: 0;
|
|
10249
10594
|
left: 0;
|
|
10250
10595
|
bottom: 0;
|
|
10251
|
-
width: var(--
|
|
10252
|
-
z-index: var(--
|
|
10596
|
+
width: var(--tplane-chat-sidenav-width-drawer);
|
|
10597
|
+
z-index: var(--tplane-chat-z-drawer, 1001);
|
|
10253
10598
|
}
|
|
10254
10599
|
:host([data-mode="drawer"][data-open="true"]) {
|
|
10255
10600
|
box-shadow: 8px 0 32px rgba(0, 0, 0, 0.18);
|
|
@@ -10258,8 +10603,8 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10258
10603
|
display: flex;
|
|
10259
10604
|
flex-direction: column;
|
|
10260
10605
|
height: 100%;
|
|
10261
|
-
background: var(--
|
|
10262
|
-
border-right: 1px solid var(--
|
|
10606
|
+
background: var(--tplane-chat-bg);
|
|
10607
|
+
border-right: 1px solid var(--tplane-chat-separator);
|
|
10263
10608
|
box-sizing: border-box;
|
|
10264
10609
|
overflow: hidden;
|
|
10265
10610
|
}
|
|
@@ -10274,7 +10619,7 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10274
10619
|
}
|
|
10275
10620
|
.chat-sidenav__header {
|
|
10276
10621
|
flex-shrink: 0;
|
|
10277
|
-
padding: var(--
|
|
10622
|
+
padding: var(--tplane-chat-space-3);
|
|
10278
10623
|
}
|
|
10279
10624
|
/* Collapse the header slot when the consumer doesn't project content
|
|
10280
10625
|
* — matches the chat-window pattern. Avoids 24px of dead space above
|
|
@@ -10287,15 +10632,15 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10287
10632
|
align-items: center;
|
|
10288
10633
|
justify-content: space-between;
|
|
10289
10634
|
gap: 4px;
|
|
10290
|
-
padding: var(--
|
|
10291
|
-
border-bottom: 1px solid var(--
|
|
10635
|
+
padding: var(--tplane-chat-space-2) var(--tplane-chat-space-3);
|
|
10636
|
+
border-bottom: 1px solid var(--tplane-chat-separator);
|
|
10292
10637
|
}
|
|
10293
10638
|
:host([data-mode="collapsed"]) .chat-sidenav__topbar {
|
|
10294
10639
|
flex-direction: column;
|
|
10295
10640
|
align-items: center;
|
|
10296
10641
|
justify-content: center;
|
|
10297
10642
|
gap: 4px;
|
|
10298
|
-
padding: var(--
|
|
10643
|
+
padding: var(--tplane-chat-space-2) 0;
|
|
10299
10644
|
}
|
|
10300
10645
|
.chat-sidenav__topbar .chat-sidenav__action--close {
|
|
10301
10646
|
width: 36px;
|
|
@@ -10313,7 +10658,7 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10313
10658
|
border: 0;
|
|
10314
10659
|
padding: 12px 18px;
|
|
10315
10660
|
border-radius: 8px;
|
|
10316
|
-
font-size: var(--
|
|
10661
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
10317
10662
|
font-weight: 600;
|
|
10318
10663
|
display: flex;
|
|
10319
10664
|
align-items: center;
|
|
@@ -10322,7 +10667,7 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10322
10667
|
width: 100%;
|
|
10323
10668
|
}
|
|
10324
10669
|
.chat-sidenav__action--new:focus-visible {
|
|
10325
|
-
outline: 2px solid var(--
|
|
10670
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
10326
10671
|
outline-offset: 2px;
|
|
10327
10672
|
}
|
|
10328
10673
|
/* Collapsed mode: shrink to 32×32 icon-only square. */
|
|
@@ -10341,11 +10686,11 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10341
10686
|
display: flex;
|
|
10342
10687
|
flex-direction: column;
|
|
10343
10688
|
gap: 4px;
|
|
10344
|
-
padding: var(--
|
|
10689
|
+
padding: var(--tplane-chat-space-3);
|
|
10345
10690
|
}
|
|
10346
10691
|
:host([data-mode="collapsed"]) .chat-sidenav__actions {
|
|
10347
10692
|
align-items: center;
|
|
10348
|
-
padding: var(--
|
|
10693
|
+
padding: var(--tplane-chat-space-2);
|
|
10349
10694
|
}
|
|
10350
10695
|
.chat-sidenav__action {
|
|
10351
10696
|
display: flex;
|
|
@@ -10355,17 +10700,17 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10355
10700
|
padding: 8px 12px;
|
|
10356
10701
|
border: 0;
|
|
10357
10702
|
background: transparent;
|
|
10358
|
-
color: var(--
|
|
10703
|
+
color: var(--tplane-chat-text);
|
|
10359
10704
|
border-radius: 8px;
|
|
10360
10705
|
cursor: pointer;
|
|
10361
10706
|
font-family: inherit;
|
|
10362
|
-
font-size: var(--
|
|
10707
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
10363
10708
|
font-weight: 400;
|
|
10364
10709
|
text-align: left;
|
|
10365
10710
|
}
|
|
10366
|
-
.chat-sidenav__action:hover { background: var(--
|
|
10711
|
+
.chat-sidenav__action:hover { background: var(--tplane-chat-surface-alt); }
|
|
10367
10712
|
.chat-sidenav__action:focus-visible {
|
|
10368
|
-
outline: 2px solid var(--
|
|
10713
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
10369
10714
|
outline-offset: 2px;
|
|
10370
10715
|
}
|
|
10371
10716
|
:host([data-mode="collapsed"]) .chat-sidenav__action {
|
|
@@ -10383,15 +10728,15 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10383
10728
|
collapsed-mode overrides (which are :host-prefixed, higher
|
|
10384
10729
|
specificity, so they still apply). */
|
|
10385
10730
|
.chat-sidenav__action.chat-sidenav__action--new {
|
|
10386
|
-
background: var(--
|
|
10387
|
-
color: var(--
|
|
10731
|
+
background: var(--tplane-chat-text);
|
|
10732
|
+
color: var(--tplane-chat-bg);
|
|
10388
10733
|
border-radius: 8px;
|
|
10389
10734
|
padding: 12px 18px;
|
|
10390
10735
|
font-weight: 600;
|
|
10391
|
-
font-size: var(--
|
|
10736
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
10392
10737
|
}
|
|
10393
10738
|
.chat-sidenav__action.chat-sidenav__action--new:hover {
|
|
10394
|
-
background: var(--
|
|
10739
|
+
background: var(--tplane-chat-text);
|
|
10395
10740
|
filter: brightness(0.92);
|
|
10396
10741
|
}
|
|
10397
10742
|
.chat-sidenav__action-icon {
|
|
@@ -10411,7 +10756,7 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10411
10756
|
.chat-sidenav__threads-heading {
|
|
10412
10757
|
padding: 8px 12px 4px;
|
|
10413
10758
|
font-size: 11px;
|
|
10414
|
-
color: var(--
|
|
10759
|
+
color: var(--tplane-chat-text-muted);
|
|
10415
10760
|
text-transform: uppercase;
|
|
10416
10761
|
letter-spacing: 0.4px;
|
|
10417
10762
|
}
|
|
@@ -10423,7 +10768,7 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10423
10768
|
align-items: center;
|
|
10424
10769
|
justify-content: space-between;
|
|
10425
10770
|
padding: 10px 12px;
|
|
10426
|
-
border-top: 1px solid var(--
|
|
10771
|
+
border-top: 1px solid var(--tplane-chat-separator);
|
|
10427
10772
|
gap: 8px;
|
|
10428
10773
|
flex-shrink: 0;
|
|
10429
10774
|
}
|
|
@@ -10444,18 +10789,18 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10444
10789
|
border: 0;
|
|
10445
10790
|
border-radius: 8px;
|
|
10446
10791
|
background: transparent;
|
|
10447
|
-
color: var(--
|
|
10792
|
+
color: var(--tplane-chat-text-muted);
|
|
10448
10793
|
cursor: pointer;
|
|
10449
10794
|
font: inherit;
|
|
10450
10795
|
font-size: 12px;
|
|
10451
10796
|
font-weight: 500;
|
|
10452
10797
|
}
|
|
10453
10798
|
.chat-sidenav__debug:hover {
|
|
10454
|
-
background: var(--
|
|
10455
|
-
color: var(--
|
|
10799
|
+
background: var(--tplane-chat-surface-alt);
|
|
10800
|
+
color: var(--tplane-chat-text);
|
|
10456
10801
|
}
|
|
10457
10802
|
.chat-sidenav__debug:focus-visible {
|
|
10458
|
-
outline: 2px solid var(--
|
|
10803
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
10459
10804
|
outline-offset: 2px;
|
|
10460
10805
|
}
|
|
10461
10806
|
.chat-sidenav__debug-dot {
|
|
@@ -10486,15 +10831,15 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10486
10831
|
border-radius: 8px;
|
|
10487
10832
|
border: 0;
|
|
10488
10833
|
background: transparent;
|
|
10489
|
-
color: var(--
|
|
10834
|
+
color: var(--tplane-chat-text-muted);
|
|
10490
10835
|
cursor: pointer;
|
|
10491
10836
|
display: flex;
|
|
10492
10837
|
align-items: center;
|
|
10493
10838
|
justify-content: center;
|
|
10494
10839
|
}
|
|
10495
10840
|
.chat-sidenav__toggle:hover {
|
|
10496
|
-
background: var(--
|
|
10497
|
-
color: var(--
|
|
10841
|
+
background: var(--tplane-chat-surface-alt);
|
|
10842
|
+
color: var(--tplane-chat-text);
|
|
10498
10843
|
}
|
|
10499
10844
|
/* Collapsed mode: footer becomes a vertical stack; debug stays visible. */
|
|
10500
10845
|
:host([data-mode="collapsed"]) .chat-sidenav__footer {
|
|
@@ -10540,18 +10885,18 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10540
10885
|
border: 0;
|
|
10541
10886
|
border-radius: 8px;
|
|
10542
10887
|
background: transparent;
|
|
10543
|
-
color: var(--
|
|
10888
|
+
color: var(--tplane-chat-text);
|
|
10544
10889
|
font: inherit;
|
|
10545
|
-
font-size: var(--
|
|
10890
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
10546
10891
|
text-align: left;
|
|
10547
10892
|
cursor: pointer;
|
|
10548
10893
|
}
|
|
10549
10894
|
.chat-sidenav__archived-heading:hover {
|
|
10550
|
-
background: var(--
|
|
10551
|
-
color: var(--
|
|
10895
|
+
background: var(--tplane-chat-surface-alt);
|
|
10896
|
+
color: var(--tplane-chat-text);
|
|
10552
10897
|
}
|
|
10553
10898
|
.chat-sidenav__archived-heading:focus-visible {
|
|
10554
|
-
outline: 2px solid var(--
|
|
10899
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
10555
10900
|
outline-offset: 2px;
|
|
10556
10901
|
}
|
|
10557
10902
|
.chat-sidenav__archived-chevron {
|
|
@@ -10565,8 +10910,8 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10565
10910
|
}
|
|
10566
10911
|
.chat-sidenav__archived-empty {
|
|
10567
10912
|
padding: 8px 12px;
|
|
10568
|
-
color: var(--
|
|
10569
|
-
font-size: var(--
|
|
10913
|
+
color: var(--tplane-chat-text-muted);
|
|
10914
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
10570
10915
|
}
|
|
10571
10916
|
:host([data-mode="collapsed"]) .chat-sidenav__archived { display: none; }
|
|
10572
10917
|
.chat-sidenav__projects { flex-shrink: 0; }
|
|
@@ -11018,7 +11363,7 @@ class ChatSidenavComponent {
|
|
|
11018
11363
|
</div>
|
|
11019
11364
|
</nav>
|
|
11020
11365
|
<ng-container #debugHost />
|
|
11021
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
11366
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;height:100%}:host([data-mode=\"expanded\"]),:host([data-mode=\"collapsed\"]){position:fixed;top:0;left:0;bottom:0;z-index:100}:host([data-mode=\"expanded\"]){width:var(--tplane-chat-sidenav-width-expanded)}:host([data-mode=\"collapsed\"]){width:var(--tplane-chat-sidenav-width-collapsed)}:host([data-mode=\"expanded\"]) .chat-sidenav{width:100%}:host([data-mode=\"collapsed\"]) .chat-sidenav{width:100%}:host([data-mode=\"drawer\"]){position:fixed;top:0;left:0;bottom:0;width:var(--tplane-chat-sidenav-width-drawer);z-index:var(--tplane-chat-z-drawer, 1001)}:host([data-mode=\"drawer\"][data-open=\"true\"]){box-shadow:8px 0 32px #0000002e}.chat-sidenav{display:flex;flex-direction:column;height:100%;background:var(--tplane-chat-bg);border-right:1px solid var(--tplane-chat-separator);box-sizing:border-box;overflow:hidden}:host([data-mode=\"drawer\"]) .chat-sidenav{width:100%;height:100%;transition:transform .2s ease;transform:translate(-100%)}:host([data-mode=\"drawer\"][data-open=\"true\"]) .chat-sidenav{transform:translate(0)}.chat-sidenav__header{flex-shrink:0;padding:var(--tplane-chat-space-3)}.chat-sidenav__header:empty{display:none}.chat-sidenav__topbar{flex-shrink:0;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:4px;padding:var(--tplane-chat-space-2) var(--tplane-chat-space-3);border-bottom:1px solid var(--tplane-chat-separator)}:host([data-mode=\"collapsed\"]) .chat-sidenav__topbar{flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:var(--tplane-chat-space-2) 0}.chat-sidenav__topbar .chat-sidenav__action--close{width:36px;height:36px;padding:0;justify-content:center;flex:0 0 auto}.chat-sidenav__topbar .chat-sidenav__action--close .chat-sidenav__action-label{display:none}.chat-sidenav__action--new{border:0;padding:12px 18px;border-radius:8px;font-size:var(--tplane-chat-font-size-sm);font-weight:600;display:flex;align-items:center;gap:8px;cursor:pointer;width:100%}.chat-sidenav__action--new:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:2px}:host([data-mode=\"collapsed\"]) .chat-sidenav__action--new{width:32px;height:32px;padding:0;border-radius:10px;justify-content:center}:host([data-mode=\"collapsed\"]) .chat-sidenav__action--new .chat-sidenav__action-label{display:none}.chat-sidenav__actions{flex-shrink:0;display:flex;flex-direction:column;gap:4px;padding:var(--tplane-chat-space-3)}:host([data-mode=\"collapsed\"]) .chat-sidenav__actions{align-items:center;padding:var(--tplane-chat-space-2)}.chat-sidenav__action{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:0;background:transparent;color:var(--tplane-chat-text);border-radius:8px;cursor:pointer;font-family:inherit;font-size:var(--tplane-chat-font-size-sm);font-weight:400;text-align:left}.chat-sidenav__action:hover{background:var(--tplane-chat-surface-alt)}.chat-sidenav__action:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:2px}:host([data-mode=\"collapsed\"]) .chat-sidenav__action{width:36px;height:36px;padding:0;justify-content:center}:host([data-mode=\"collapsed\"]) .chat-sidenav__action-label{display:none}.chat-sidenav__action.chat-sidenav__action--new{background:var(--tplane-chat-text);color:var(--tplane-chat-bg);border-radius:8px;padding:12px 18px;font-weight:600;font-size:var(--tplane-chat-font-size-sm)}.chat-sidenav__action.chat-sidenav__action--new:hover{background:var(--tplane-chat-text);filter:brightness(.92)}.chat-sidenav__action-icon{width:16px;height:16px;flex-shrink:0}.chat-sidenav__primary,.chat-sidenav__sections{flex-shrink:0}.chat-sidenav__threads{flex:1 1 auto;min-height:0;overflow-y:auto}.chat-sidenav__threads-heading{padding:8px 12px 4px;font-size:11px;color:var(--tplane-chat-text-muted);text-transform:uppercase;letter-spacing:.4px}:host([data-mode=\"collapsed\"]) .chat-sidenav__threads-heading{display:none}.chat-sidenav__footer{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-top:1px solid var(--tplane-chat-separator);gap:8px;flex-shrink:0}.chat-sidenav__footer-left{display:flex;align-items:center;gap:4px;min-height:28px}.chat-sidenav__debug{height:28px;min-width:28px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 9px;border:0;border-radius:8px;background:transparent;color:var(--tplane-chat-text-muted);cursor:pointer;font:inherit;font-size:12px;font-weight:500}.chat-sidenav__debug:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}.chat-sidenav__debug:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:2px}.chat-sidenav__debug-dot{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 8px color-mix(in srgb,#22c55e 60%,transparent);flex:0 0 auto}.chat-sidenav__debug-dot--streaming{animation:chat-sidenav-debug-pulse 1.2s ease-in-out infinite}@keyframes chat-sidenav-debug-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.85)}}.chat-sidenav__footer-right{display:flex;align-items:center;gap:4px;margin-left:auto}.chat-sidenav__toggle{width:28px;height:28px;border-radius:8px;border:0;background:transparent;color:var(--tplane-chat-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center}.chat-sidenav__toggle:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}:host([data-mode=\"collapsed\"]) .chat-sidenav__footer{flex-direction:column;align-items:center;padding:10px 4px}:host([data-mode=\"collapsed\"]) .chat-sidenav__footer-left{display:flex;flex-direction:column;align-items:center;min-height:28px}:host([data-mode=\"collapsed\"]) .chat-sidenav__debug{width:28px;padding:0}:host([data-mode=\"collapsed\"]) .chat-sidenav__debug-label,:host([data-mode=\"collapsed\"]) .chat-sidenav__footer-left>:not(.chat-sidenav__debug){display:none}:host([data-mode=\"collapsed\"]) .chat-sidenav__footer-right{flex-direction:column}.chat-sidenav__account{display:none}.chat-sidenav__account:has(>*){display:flex;align-items:center;gap:4px}.chat-sidenav__archived{flex-shrink:0}.chat-sidenav__archived-heading{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:0;border-radius:8px;background:transparent;color:var(--tplane-chat-text);font:inherit;font-size:var(--tplane-chat-font-size-sm);text-align:left;cursor:pointer}.chat-sidenav__archived-heading:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}.chat-sidenav__archived-heading:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:2px}.chat-sidenav__archived-chevron{width:12px;height:12px;transition:transform .15s ease;flex-shrink:0}.chat-sidenav__archived[data-open=true] .chat-sidenav__archived-chevron{transform:rotate(90deg)}.chat-sidenav__archived-empty{padding:8px 12px;color:var(--tplane-chat-text-muted);font-size:var(--tplane-chat-font-size-sm)}:host([data-mode=\"collapsed\"]) .chat-sidenav__archived{display:none}.chat-sidenav__projects{flex-shrink:0}:host([data-mode=\"collapsed\"]) .chat-sidenav__projects{display:none}:host([data-mode=\"collapsed\"]) .chat-thread-list__initial{display:inline-flex}:host([data-mode=\"collapsed\"]) .chat-thread-list__item-title{display:none}:host([data-mode=\"collapsed\"]) .chat-thread-list__item-time{display:none}:host([data-mode=\"collapsed\"]) .chat-thread-list__kebab{display:none}:host([data-mode=\"collapsed\"]) .chat-thread-list__grip{display:none}:host([data-mode=\"collapsed\"]) .chat-thread-list__item-wrap{justify-content:center}:host([data-mode=\"collapsed\"]) .chat-thread-list__item{padding:6px;justify-content:center;align-items:center;flex-direction:row}:host([data-mode=\"collapsed\"]) .chat-thread-list__new{display:none}:host([data-mode=\"collapsed\"]) .chat-sidenav__action--search{width:32px;height:32px;padding:0;border-radius:10px;justify-content:center;background:transparent}:host([data-mode=\"collapsed\"]) .chat-sidenav__action--search .chat-sidenav__action-label{display:none}:host([data-mode=\"collapsed\"]) .chat-sidenav__threads,:host([data-mode=\"collapsed\"]) .chat-sidenav__projects,:host([data-mode=\"collapsed\"]) .chat-sidenav__archived,:host([data-mode=\"collapsed\"]) .chat-sidenav__sections,:host([data-mode=\"collapsed\"]) .chat-sidenav__primary{display:none}:host([data-mode=\"collapsed\"]) .chat-sidenav__topbar,:host([data-mode=\"collapsed\"]) .chat-sidenav__actions{padding:8px 4px;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "component", type: ChatThreadListComponent, selector: "chat-thread-list", inputs: ["threads", "activeThreadId", "showNewThreadButton", "actions", "mode", "projects"], outputs: ["threadSelected", "newThreadRequested"] }, { kind: "component", type: ChatProjectListComponent, selector: "chat-project-list", inputs: ["projects", "activeProjectId", "showNewProjectButton", "actions"], outputs: ["projectSelected", "newProjectRequested"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11022
11367
|
}
|
|
11023
11368
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSidenavComponent, decorators: [{
|
|
11024
11369
|
type: Component,
|
|
@@ -11262,7 +11607,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
11262
11607
|
</div>
|
|
11263
11608
|
</nav>
|
|
11264
11609
|
<ng-container #debugHost />
|
|
11265
|
-
`, styles: [":host{font-family:var(--
|
|
11610
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:block;height:100%}:host([data-mode=\"expanded\"]),:host([data-mode=\"collapsed\"]){position:fixed;top:0;left:0;bottom:0;z-index:100}:host([data-mode=\"expanded\"]){width:var(--tplane-chat-sidenav-width-expanded)}:host([data-mode=\"collapsed\"]){width:var(--tplane-chat-sidenav-width-collapsed)}:host([data-mode=\"expanded\"]) .chat-sidenav{width:100%}:host([data-mode=\"collapsed\"]) .chat-sidenav{width:100%}:host([data-mode=\"drawer\"]){position:fixed;top:0;left:0;bottom:0;width:var(--tplane-chat-sidenav-width-drawer);z-index:var(--tplane-chat-z-drawer, 1001)}:host([data-mode=\"drawer\"][data-open=\"true\"]){box-shadow:8px 0 32px #0000002e}.chat-sidenav{display:flex;flex-direction:column;height:100%;background:var(--tplane-chat-bg);border-right:1px solid var(--tplane-chat-separator);box-sizing:border-box;overflow:hidden}:host([data-mode=\"drawer\"]) .chat-sidenav{width:100%;height:100%;transition:transform .2s ease;transform:translate(-100%)}:host([data-mode=\"drawer\"][data-open=\"true\"]) .chat-sidenav{transform:translate(0)}.chat-sidenav__header{flex-shrink:0;padding:var(--tplane-chat-space-3)}.chat-sidenav__header:empty{display:none}.chat-sidenav__topbar{flex-shrink:0;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:4px;padding:var(--tplane-chat-space-2) var(--tplane-chat-space-3);border-bottom:1px solid var(--tplane-chat-separator)}:host([data-mode=\"collapsed\"]) .chat-sidenav__topbar{flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:var(--tplane-chat-space-2) 0}.chat-sidenav__topbar .chat-sidenav__action--close{width:36px;height:36px;padding:0;justify-content:center;flex:0 0 auto}.chat-sidenav__topbar .chat-sidenav__action--close .chat-sidenav__action-label{display:none}.chat-sidenav__action--new{border:0;padding:12px 18px;border-radius:8px;font-size:var(--tplane-chat-font-size-sm);font-weight:600;display:flex;align-items:center;gap:8px;cursor:pointer;width:100%}.chat-sidenav__action--new:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:2px}:host([data-mode=\"collapsed\"]) .chat-sidenav__action--new{width:32px;height:32px;padding:0;border-radius:10px;justify-content:center}:host([data-mode=\"collapsed\"]) .chat-sidenav__action--new .chat-sidenav__action-label{display:none}.chat-sidenav__actions{flex-shrink:0;display:flex;flex-direction:column;gap:4px;padding:var(--tplane-chat-space-3)}:host([data-mode=\"collapsed\"]) .chat-sidenav__actions{align-items:center;padding:var(--tplane-chat-space-2)}.chat-sidenav__action{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:0;background:transparent;color:var(--tplane-chat-text);border-radius:8px;cursor:pointer;font-family:inherit;font-size:var(--tplane-chat-font-size-sm);font-weight:400;text-align:left}.chat-sidenav__action:hover{background:var(--tplane-chat-surface-alt)}.chat-sidenav__action:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:2px}:host([data-mode=\"collapsed\"]) .chat-sidenav__action{width:36px;height:36px;padding:0;justify-content:center}:host([data-mode=\"collapsed\"]) .chat-sidenav__action-label{display:none}.chat-sidenav__action.chat-sidenav__action--new{background:var(--tplane-chat-text);color:var(--tplane-chat-bg);border-radius:8px;padding:12px 18px;font-weight:600;font-size:var(--tplane-chat-font-size-sm)}.chat-sidenav__action.chat-sidenav__action--new:hover{background:var(--tplane-chat-text);filter:brightness(.92)}.chat-sidenav__action-icon{width:16px;height:16px;flex-shrink:0}.chat-sidenav__primary,.chat-sidenav__sections{flex-shrink:0}.chat-sidenav__threads{flex:1 1 auto;min-height:0;overflow-y:auto}.chat-sidenav__threads-heading{padding:8px 12px 4px;font-size:11px;color:var(--tplane-chat-text-muted);text-transform:uppercase;letter-spacing:.4px}:host([data-mode=\"collapsed\"]) .chat-sidenav__threads-heading{display:none}.chat-sidenav__footer{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-top:1px solid var(--tplane-chat-separator);gap:8px;flex-shrink:0}.chat-sidenav__footer-left{display:flex;align-items:center;gap:4px;min-height:28px}.chat-sidenav__debug{height:28px;min-width:28px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 9px;border:0;border-radius:8px;background:transparent;color:var(--tplane-chat-text-muted);cursor:pointer;font:inherit;font-size:12px;font-weight:500}.chat-sidenav__debug:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}.chat-sidenav__debug:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:2px}.chat-sidenav__debug-dot{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 8px color-mix(in srgb,#22c55e 60%,transparent);flex:0 0 auto}.chat-sidenav__debug-dot--streaming{animation:chat-sidenav-debug-pulse 1.2s ease-in-out infinite}@keyframes chat-sidenav-debug-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.85)}}.chat-sidenav__footer-right{display:flex;align-items:center;gap:4px;margin-left:auto}.chat-sidenav__toggle{width:28px;height:28px;border-radius:8px;border:0;background:transparent;color:var(--tplane-chat-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center}.chat-sidenav__toggle:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}:host([data-mode=\"collapsed\"]) .chat-sidenav__footer{flex-direction:column;align-items:center;padding:10px 4px}:host([data-mode=\"collapsed\"]) .chat-sidenav__footer-left{display:flex;flex-direction:column;align-items:center;min-height:28px}:host([data-mode=\"collapsed\"]) .chat-sidenav__debug{width:28px;padding:0}:host([data-mode=\"collapsed\"]) .chat-sidenav__debug-label,:host([data-mode=\"collapsed\"]) .chat-sidenav__footer-left>:not(.chat-sidenav__debug){display:none}:host([data-mode=\"collapsed\"]) .chat-sidenav__footer-right{flex-direction:column}.chat-sidenav__account{display:none}.chat-sidenav__account:has(>*){display:flex;align-items:center;gap:4px}.chat-sidenav__archived{flex-shrink:0}.chat-sidenav__archived-heading{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:0;border-radius:8px;background:transparent;color:var(--tplane-chat-text);font:inherit;font-size:var(--tplane-chat-font-size-sm);text-align:left;cursor:pointer}.chat-sidenav__archived-heading:hover{background:var(--tplane-chat-surface-alt);color:var(--tplane-chat-text)}.chat-sidenav__archived-heading:focus-visible{outline:2px solid var(--tplane-chat-primary);outline-offset:2px}.chat-sidenav__archived-chevron{width:12px;height:12px;transition:transform .15s ease;flex-shrink:0}.chat-sidenav__archived[data-open=true] .chat-sidenav__archived-chevron{transform:rotate(90deg)}.chat-sidenav__archived-empty{padding:8px 12px;color:var(--tplane-chat-text-muted);font-size:var(--tplane-chat-font-size-sm)}:host([data-mode=\"collapsed\"]) .chat-sidenav__archived{display:none}.chat-sidenav__projects{flex-shrink:0}:host([data-mode=\"collapsed\"]) .chat-sidenav__projects{display:none}:host([data-mode=\"collapsed\"]) .chat-thread-list__initial{display:inline-flex}:host([data-mode=\"collapsed\"]) .chat-thread-list__item-title{display:none}:host([data-mode=\"collapsed\"]) .chat-thread-list__item-time{display:none}:host([data-mode=\"collapsed\"]) .chat-thread-list__kebab{display:none}:host([data-mode=\"collapsed\"]) .chat-thread-list__grip{display:none}:host([data-mode=\"collapsed\"]) .chat-thread-list__item-wrap{justify-content:center}:host([data-mode=\"collapsed\"]) .chat-thread-list__item{padding:6px;justify-content:center;align-items:center;flex-direction:row}:host([data-mode=\"collapsed\"]) .chat-thread-list__new{display:none}:host([data-mode=\"collapsed\"]) .chat-sidenav__action--search{width:32px;height:32px;padding:0;border-radius:10px;justify-content:center;background:transparent}:host([data-mode=\"collapsed\"]) .chat-sidenav__action--search .chat-sidenav__action-label{display:none}:host([data-mode=\"collapsed\"]) .chat-sidenav__threads,:host([data-mode=\"collapsed\"]) .chat-sidenav__projects,:host([data-mode=\"collapsed\"]) .chat-sidenav__archived,:host([data-mode=\"collapsed\"]) .chat-sidenav__sections,:host([data-mode=\"collapsed\"]) .chat-sidenav__primary{display:none}:host([data-mode=\"collapsed\"]) .chat-sidenav__topbar,:host([data-mode=\"collapsed\"]) .chat-sidenav__actions{padding:8px 4px;align-items:center;justify-content:center}\n"] }]
|
|
11266
11611
|
}], ctorParameters: () => [], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], threads: [{ type: i0.Input, args: [{ isSignal: true, alias: "threads", required: false }] }], activeThreadId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeThreadId", required: false }] }], actions: [{ type: i0.Input, args: [{ isSignal: true, alias: "actions", required: false }] }], archivedThreads: [{ type: i0.Input, args: [{ isSignal: true, alias: "archivedThreads", required: false }] }], projects: [{ type: i0.Input, args: [{ isSignal: true, alias: "projects", required: false }] }], selectedProjectId: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedProjectId", required: false }] }], projectActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "projectActions", required: false }] }], agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: false }] }], debug: [{ type: i0.Input, args: [{ isSignal: true, alias: "debug", required: false }] }], newChat: [{ type: i0.Output, args: ["newChat"] }], threadSelected: [{ type: i0.Output, args: ["threadSelected"] }], searchOpened: [{ type: i0.Output, args: ["searchOpened"] }], openChange: [{ type: i0.Output, args: ["openChange"] }], modeChange: [{ type: i0.Output, args: ["modeChange"] }], projectSelected: [{ type: i0.Output, args: ["projectSelected"] }], newProjectRequested: [{ type: i0.Output, args: ["newProjectRequested"] }], debugHost: [{ type: i0.ViewChild, args: ['debugHost', { ...{
|
|
11267
11612
|
read: ViewContainerRef,
|
|
11268
11613
|
}, isSignal: true }] }] } });
|
|
@@ -11293,7 +11638,7 @@ class ChatSidenavScrimComponent {
|
|
|
11293
11638
|
(click)="dismiss.emit()"
|
|
11294
11639
|
></button>
|
|
11295
11640
|
}
|
|
11296
|
-
`, isInline: true, styles: [":host{display:contents}.chat-sidenav-scrim__button{position:fixed;inset:0;background:#0006;z-index:var(--
|
|
11641
|
+
`, isInline: true, styles: [":host{display:contents}.chat-sidenav-scrim__button{position:fixed;inset:0;background:#0006;z-index:var(--tplane-chat-z-drawer-scrim, 1000);border:0;padding:0;cursor:pointer}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11297
11642
|
}
|
|
11298
11643
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSidenavScrimComponent, decorators: [{
|
|
11299
11644
|
type: Component,
|
|
@@ -11306,7 +11651,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
11306
11651
|
(click)="dismiss.emit()"
|
|
11307
11652
|
></button>
|
|
11308
11653
|
}
|
|
11309
|
-
`, styles: [":host{display:contents}.chat-sidenav-scrim__button{position:fixed;inset:0;background:#0006;z-index:var(--
|
|
11654
|
+
`, styles: [":host{display:contents}.chat-sidenav-scrim__button{position:fixed;inset:0;background:#0006;z-index:var(--tplane-chat-z-drawer-scrim, 1000);border:0;padding:0;cursor:pointer}\n"] }]
|
|
11310
11655
|
}], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], dismiss: [{ type: i0.Output, args: ["dismiss"] }] } });
|
|
11311
11656
|
|
|
11312
11657
|
// SPDX-License-Identifier: MIT
|
|
@@ -11357,7 +11702,7 @@ class ChatInterruptPanelComponent {
|
|
|
11357
11702
|
</div>
|
|
11358
11703
|
</div>
|
|
11359
11704
|
}
|
|
11360
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
11705
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ".chat-interrupt-panel{background:var(--tplane-chat-surface);color:var(--tplane-chat-text);border:1px solid var(--tplane-chat-separator);border-radius:var(--tplane-chat-radius-card);padding:14px 16px;font-size:var(--tplane-chat-font-size-sm)}.chat-interrupt-panel__eyebrow{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--tplane-chat-warning-text);margin:0 0 8px;display:flex;align-items:center;gap:6px}.chat-interrupt-panel__dot{width:6px;height:6px;border-radius:999px;background:var(--tplane-chat-warning-text);flex:0 0 6px}.chat-interrupt-panel__body{margin:0 0 12px;color:var(--tplane-chat-text);white-space:pre-wrap}.chat-interrupt-panel__actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.btn{border:0;padding:6px 14px;border-radius:var(--tplane-chat-radius-button);font-size:12px;font-weight:500;cursor:pointer;transition:transform .2s ease,opacity .2s ease}.btn:hover{transform:scale(1.03)}.btn-primary{background:var(--tplane-chat-primary);color:var(--tplane-chat-on-primary)}.btn-secondary{background:transparent;color:var(--tplane-chat-text);border:1px solid var(--tplane-chat-separator)}.btn-text{background:transparent;color:var(--tplane-chat-text-muted);padding:6px 10px}.btn-text:hover{color:var(--tplane-chat-text)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11361
11706
|
}
|
|
11362
11707
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatInterruptPanelComponent, decorators: [{
|
|
11363
11708
|
type: Component,
|
|
@@ -11377,7 +11722,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
11377
11722
|
</div>
|
|
11378
11723
|
</div>
|
|
11379
11724
|
}
|
|
11380
|
-
`, styles: [":host{font-family:var(--
|
|
11725
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ".chat-interrupt-panel{background:var(--tplane-chat-surface);color:var(--tplane-chat-text);border:1px solid var(--tplane-chat-separator);border-radius:var(--tplane-chat-radius-card);padding:14px 16px;font-size:var(--tplane-chat-font-size-sm)}.chat-interrupt-panel__eyebrow{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--tplane-chat-warning-text);margin:0 0 8px;display:flex;align-items:center;gap:6px}.chat-interrupt-panel__dot{width:6px;height:6px;border-radius:999px;background:var(--tplane-chat-warning-text);flex:0 0 6px}.chat-interrupt-panel__body{margin:0 0 12px;color:var(--tplane-chat-text);white-space:pre-wrap}.chat-interrupt-panel__actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.btn{border:0;padding:6px 14px;border-radius:var(--tplane-chat-radius-button);font-size:12px;font-weight:500;cursor:pointer;transition:transform .2s ease,opacity .2s ease}.btn:hover{transform:scale(1.03)}.btn-primary{background:var(--tplane-chat-primary);color:var(--tplane-chat-on-primary)}.btn-secondary{background:transparent;color:var(--tplane-chat-text);border:1px solid var(--tplane-chat-separator)}.btn-text{background:transparent;color:var(--tplane-chat-text-muted);padding:6px 10px}.btn-text:hover{color:var(--tplane-chat-text)}\n"] }]
|
|
11381
11726
|
}], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], action: [{ type: i0.Output, args: ["action"] }] } });
|
|
11382
11727
|
|
|
11383
11728
|
// SPDX-License-Identifier: MIT
|
|
@@ -11465,7 +11810,7 @@ class ChatApprovalCardComponent {
|
|
|
11465
11810
|
<button type="button" class="btn btn-primary" (click)="emit('approve')">Approve</button>
|
|
11466
11811
|
</div>
|
|
11467
11812
|
</dialog>
|
|
11468
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
11813
|
+
`, isInline: true, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:contents}dialog.chat-approval-card{width:440px;max-width:calc(100vw - 32px);margin:auto;padding:0;border:0;border-radius:12px;background:var(--tplane-chat-surface);color:var(--tplane-chat-text);box-shadow:0 20px 50px #0000002e}dialog.chat-approval-card::backdrop{background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.chat-approval-card__header{padding:14px 16px 12px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--tplane-chat-separator)}.chat-approval-card__header h4{margin:0;font-size:14px;font-weight:600;color:var(--tplane-chat-text)}.chat-approval-card__header svg{color:var(--tplane-chat-warning-text);width:16px;height:16px;flex:0 0 16px}.chat-approval-card__body{padding:14px 16px;font-size:var(--tplane-chat-font-size-sm, 13px);color:var(--tplane-chat-text)}.chat-approval-card__actions{padding:8px 16px 14px;display:flex;gap:6px;justify-content:flex-end;align-items:center}.btn{border:0;padding:6px 14px;border-radius:8px;font-size:12px;font-weight:500;cursor:pointer;transition:transform .2s ease,opacity .2s ease}.btn:hover{transform:scale(1.03)}.btn-primary{background:var(--tplane-chat-primary);color:var(--tplane-chat-on-primary)}.btn-secondary{background:transparent;color:var(--tplane-chat-text);border:1px solid var(--tplane-chat-separator)}.btn-text{background:transparent;color:var(--tplane-chat-text-muted);padding:6px 10px}.btn-text:hover{color:var(--tplane-chat-text)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11469
11814
|
}
|
|
11470
11815
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatApprovalCardComponent, decorators: [{
|
|
11471
11816
|
type: Component,
|
|
@@ -11490,7 +11835,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
11490
11835
|
<button type="button" class="btn btn-primary" (click)="emit('approve')">Approve</button>
|
|
11491
11836
|
</div>
|
|
11492
11837
|
</dialog>
|
|
11493
|
-
`, styles: [":host{font-family:var(--
|
|
11838
|
+
`, styles: [":host{font-family:var(--tplane-chat-font-family);color:var(--tplane-chat-text)}\n", ":host{display:contents}dialog.chat-approval-card{width:440px;max-width:calc(100vw - 32px);margin:auto;padding:0;border:0;border-radius:12px;background:var(--tplane-chat-surface);color:var(--tplane-chat-text);box-shadow:0 20px 50px #0000002e}dialog.chat-approval-card::backdrop{background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.chat-approval-card__header{padding:14px 16px 12px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--tplane-chat-separator)}.chat-approval-card__header h4{margin:0;font-size:14px;font-weight:600;color:var(--tplane-chat-text)}.chat-approval-card__header svg{color:var(--tplane-chat-warning-text);width:16px;height:16px;flex:0 0 16px}.chat-approval-card__body{padding:14px 16px;font-size:var(--tplane-chat-font-size-sm, 13px);color:var(--tplane-chat-text)}.chat-approval-card__actions{padding:8px 16px 14px;display:flex;gap:6px;justify-content:flex-end;align-items:center}.btn{border:0;padding:6px 14px;border-radius:8px;font-size:12px;font-weight:500;cursor:pointer;transition:transform .2s ease,opacity .2s ease}.btn:hover{transform:scale(1.03)}.btn-primary{background:var(--tplane-chat-primary);color:var(--tplane-chat-on-primary)}.btn-secondary{background:transparent;color:var(--tplane-chat-text);border:1px solid var(--tplane-chat-separator)}.btn-text{background:transparent;color:var(--tplane-chat-text-muted);padding:6px 10px}.btn-text:hover{color:var(--tplane-chat-text)}\n"] }]
|
|
11494
11839
|
}], ctorParameters: () => [], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], matchKind: [{ type: i0.Input, args: [{ isSignal: true, alias: "matchKind", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], showEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "showEdit", required: false }] }], action: [{ type: i0.Output, args: ["action"] }], bodyTemplate: [{ type: i0.ContentChild, args: ['body', { isSignal: true }] }], dialogRef: [{ type: i0.ViewChild, args: ['dialogEl', { isSignal: true }] }] } });
|
|
11495
11840
|
|
|
11496
11841
|
// SPDX-License-Identifier: MIT
|
|
@@ -12813,5 +13158,5 @@ function mockAgent(opts = {}) {
|
|
|
12813
13158
|
* Generated bundle index. Do not edit.
|
|
12814
13159
|
*/
|
|
12815
13160
|
|
|
12816
|
-
export { A2uiAudioPlayerComponent, A2uiButtonComponent, A2uiCardComponent, A2uiCheckBoxComponent, A2uiColumnComponent, A2uiDateTimeInputComponent, A2uiDividerComponent, A2uiIconComponent, A2uiImageComponent, A2uiListComponent, A2uiModalComponent, A2uiMultipleChoiceComponent, A2uiRowComponent, A2uiSliderComponent, A2uiSurfaceComponent, A2uiTabsComponent, A2uiTextComponent, A2uiTextFieldComponent, A2uiVideoComponent, AGENT_ERROR_MESSAGES, AgentError, CHAT_CONFIG, CHAT_LIFECYCLE, ChatApprovalCardComponent, ChatCitationCardTemplateDirective, ChatCitationsCardComponent, ChatCitationsComponent, ChatComponent, ChatConfirmDialogComponent, ChatErrorComponent, ChatGenerativeUiComponent, ChatGenuiSkeletonComponent, ChatHistorySearchPaletteComponent, ChatInputComponent, ChatInterruptComponent, ChatInterruptPanelComponent, ChatLauncherButtonComponent, ChatMessageActionsComponent, ChatMessageComponent, ChatMessageListComponent, ChatOverflowMenuComponent, ChatPopupComponent, ChatProjectListComponent, ChatReasoningComponent, ChatScrollBubbleComponent, ChatSelectComponent, ChatSidebarComponent, ChatSidenavComponent, ChatSidenavScrimComponent, ChatStreamingMdComponent, ChatSubagentCardComponent, ChatSubagentsComponent, ChatSuggestionsComponent, ChatThreadListComponent, ChatTimelineComponent, ChatTimelineSliderComponent, ChatToolCallCardComponent, ChatToolCallTemplateDirective, ChatToolCallsComponent, ChatToolViewsComponent, ChatTraceComponent, ChatTypingIndicatorComponent, ChatWelcomeComponent, ChatWelcomeSuggestionComponent, ChatWindowComponent, CitationsResolverService, IS_HEADER_ROW, MARKDOWN_VIEW_REGISTRY, MarkdownAutolinkComponent, MarkdownBlockquoteComponent, MarkdownChildrenComponent, MarkdownCitationReferenceComponent, MarkdownCodeBlockComponent, MarkdownDocumentComponent, MarkdownEmphasisComponent, MarkdownHardBreakComponent, MarkdownHeadingComponent, MarkdownHtmlComponent, MarkdownImageComponent, MarkdownInlineCodeComponent, MarkdownLinkComponent, MarkdownListComponent, MarkdownListItemComponent, MarkdownMathComponent, MarkdownParagraphComponent, MarkdownSoftBreakComponent, MarkdownStrikethroughComponent, MarkdownStrongComponent, MarkdownTableCellComponent, MarkdownTableComponent, MarkdownTableRowComponent, MarkdownTextComponent, MarkdownThematicBreakComponent, MessageTemplateDirective, a2uiBasicCatalog, action, ask, buildA2uiActionMessage, cacheplaneMarkdownViews, createA2uiSurfaceStore, createAgentRef, createContentClassifier, createParseTreeStore, createPartialArgsBridge, deriveJsonSchema, emitBinding, executeFunctionTool, extractErrorMessage, formatDuration, getInterrupt, getMessageType, injectThreadRouting, isAbortError, isAssistantMessage, isSystemMessage, isToolMessage, isTyping, isUserMessage, messageContent, mockAgent, normalizeEnvelopeArgs, normalizeViewEntry, provideChat, renderMarkdown, startClientToolExecutor, statusColor, submitMessage, toAgentError, toClientToolSpecs, tools, validateArgs, view };
|
|
13161
|
+
export { A2uiAudioPlayerComponent, A2uiButtonComponent, A2uiCardComponent, A2uiCheckBoxComponent, A2uiColumnComponent, A2uiDateTimeInputComponent, A2uiDividerComponent, A2uiIconComponent, A2uiImageComponent, A2uiListComponent, A2uiModalComponent, A2uiMultipleChoiceComponent, A2uiRowComponent, A2uiSliderComponent, A2uiSurfaceComponent, A2uiTabsComponent, A2uiTextComponent, A2uiTextFieldComponent, A2uiVideoComponent, AGENT_ERROR_MESSAGES, AgentError, CHAT_CONFIG, CHAT_LIFECYCLE, ChatApprovalCardComponent, ChatCitationCardTemplateDirective, ChatCitationsCardComponent, ChatCitationsComponent, ChatComponent, ChatConfirmDialogComponent, ChatConnectedOverlayDirective, ChatErrorComponent, ChatGenerativeUiComponent, ChatGenuiSkeletonComponent, ChatHistorySearchPaletteComponent, ChatInputComponent, ChatInterruptComponent, ChatInterruptPanelComponent, ChatLauncherButtonComponent, ChatMessageActionsComponent, ChatMessageComponent, ChatMessageListComponent, ChatOverflowMenuComponent, ChatOverlayOriginDirective, ChatPopupComponent, ChatProjectListComponent, ChatReasoningComponent, ChatScrollBubbleComponent, ChatSelectComponent, ChatSidebarComponent, ChatSidenavComponent, ChatSidenavScrimComponent, ChatStreamingMdComponent, ChatSubagentCardComponent, ChatSubagentsComponent, ChatSuggestionsComponent, ChatThreadListComponent, ChatTimelineComponent, ChatTimelineSliderComponent, ChatToolCallCardComponent, ChatToolCallTemplateDirective, ChatToolCallsComponent, ChatToolViewsComponent, ChatTraceComponent, ChatTypingIndicatorComponent, ChatWelcomeComponent, ChatWelcomeSuggestionComponent, ChatWindowComponent, CitationsResolverService, IS_HEADER_ROW, MARKDOWN_VIEW_REGISTRY, MarkdownAutolinkComponent, MarkdownBlockquoteComponent, MarkdownChildrenComponent, MarkdownCitationReferenceComponent, MarkdownCodeBlockComponent, MarkdownDocumentComponent, MarkdownEmphasisComponent, MarkdownHardBreakComponent, MarkdownHeadingComponent, MarkdownHtmlComponent, MarkdownImageComponent, MarkdownInlineCodeComponent, MarkdownLinkComponent, MarkdownListComponent, MarkdownListItemComponent, MarkdownMathComponent, MarkdownParagraphComponent, MarkdownSoftBreakComponent, MarkdownStrikethroughComponent, MarkdownStrongComponent, MarkdownTableCellComponent, MarkdownTableComponent, MarkdownTableRowComponent, MarkdownTextComponent, MarkdownThematicBreakComponent, MessageTemplateDirective, a2uiBasicCatalog, action, ask, buildA2uiActionMessage, cacheplaneMarkdownViews, createA2uiSurfaceStore, createAgentRef, createContentClassifier, createParseTreeStore, createPartialArgsBridge, deriveJsonSchema, emitBinding, executeFunctionTool, extractErrorMessage, formatDuration, getInterrupt, getMessageType, injectThreadRouting, isAbortError, isAssistantMessage, isSystemMessage, isToolMessage, isTyping, isUserMessage, messageContent, mockAgent, normalizeEnvelopeArgs, normalizeViewEntry, provideChat, renderMarkdown, startClientToolExecutor, statusColor, submitMessage, toAgentError, toClientToolSpecs, tools, validateArgs, view };
|
|
12817
13162
|
//# sourceMappingURL=threadplane-chat.mjs.map
|