@threadplane/chat 0.0.53 → 0.0.54
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
|
|
@@ -2676,6 +2676,15 @@ const cacheplaneMarkdownViews = views({
|
|
|
2676
2676
|
|
|
2677
2677
|
// libs/chat/src/lib/streaming/streaming-markdown.component.ts
|
|
2678
2678
|
// SPDX-License-Identifier: MIT
|
|
2679
|
+
// How long streaming must be false AND content stable before we finalize the
|
|
2680
|
+
// parser. finish() is only needed to mark final node status (not used visually)
|
|
2681
|
+
// and to revert a genuinely-truncated trailing construct to CommonMark — the
|
|
2682
|
+
// live `parser.root` projection already renders everything during streaming, so
|
|
2683
|
+
// this delay has NO visual cost. It must comfortably exceed real inter-chunk
|
|
2684
|
+
// gaps (e.g. the pause between a table's header row and its delimiter row) and
|
|
2685
|
+
// any `streaming` flag flap, so finalize never fires mid-stream and reverts an
|
|
2686
|
+
// in-progress table to raw "| a | b |" text.
|
|
2687
|
+
const FINALIZE_DEBOUNCE_MS = 600;
|
|
2679
2688
|
/**
|
|
2680
2689
|
* Renders streaming markdown by walking a @cacheplane/partial-markdown AST
|
|
2681
2690
|
* through @threadplane/render's view registry.
|
|
@@ -2706,6 +2715,44 @@ class ChatStreamingMdComponent {
|
|
|
2706
2715
|
this.resolver.markdownDefs.set(r.citations ?? new Map());
|
|
2707
2716
|
}
|
|
2708
2717
|
});
|
|
2718
|
+
// Debounced finalization. `finish()` is terminal and DESTRUCTIVE: it reverts
|
|
2719
|
+
// an incomplete trailing construct to its CommonMark fallback — e.g. a table
|
|
2720
|
+
// header before its delimiter row becomes raw "| a | b |" paragraph text. We
|
|
2721
|
+
// must therefore never finalize while tokens are still arriving. The
|
|
2722
|
+
// `streaming` input is not a reliable "still arriving" signal — it can flap
|
|
2723
|
+
// false mid-stream, and at cold start it can read false for an entire live
|
|
2724
|
+
// stream — so we finalize only once streaming is false AND no new content
|
|
2725
|
+
// has arrived for a short, imperceptible window. Any new content or a
|
|
2726
|
+
// streaming=true flap re-arms the timer, so finalize fires exactly once,
|
|
2727
|
+
// after the stream truly stops. Until then the live `parser.root` projection
|
|
2728
|
+
// (0.5.x) renders the in-progress content, including streaming tables.
|
|
2729
|
+
let timer = null;
|
|
2730
|
+
effect((onCleanup) => {
|
|
2731
|
+
const isStreaming = this.streaming();
|
|
2732
|
+
this.content(); // re-arm whenever new content arrives
|
|
2733
|
+
if (timer) {
|
|
2734
|
+
clearTimeout(timer);
|
|
2735
|
+
timer = null;
|
|
2736
|
+
}
|
|
2737
|
+
if (isStreaming || this.finished)
|
|
2738
|
+
return;
|
|
2739
|
+
timer = setTimeout(() => {
|
|
2740
|
+
timer = null;
|
|
2741
|
+
if (this.streaming() || this.finished)
|
|
2742
|
+
return;
|
|
2743
|
+
if (!this.prior.endsWith('\n'))
|
|
2744
|
+
this.parser.push('\n');
|
|
2745
|
+
this.parser.finish();
|
|
2746
|
+
this.finished = true;
|
|
2747
|
+
this.finalizeTick.update((v) => v + 1);
|
|
2748
|
+
}, FINALIZE_DEBOUNCE_MS);
|
|
2749
|
+
onCleanup(() => {
|
|
2750
|
+
if (timer) {
|
|
2751
|
+
clearTimeout(timer);
|
|
2752
|
+
timer = null;
|
|
2753
|
+
}
|
|
2754
|
+
});
|
|
2755
|
+
});
|
|
2709
2756
|
}
|
|
2710
2757
|
// Parser instance is rebuilt only when content diverges from the prior
|
|
2711
2758
|
// prefix (rare). For the common streaming case where content extends the
|
|
@@ -2713,41 +2760,29 @@ class ChatStreamingMdComponent {
|
|
|
2713
2760
|
parser = createPartialMarkdownParser();
|
|
2714
2761
|
prior = '';
|
|
2715
2762
|
finished = false;
|
|
2763
|
+
// Bumped by the debounced finalizer so the `root` computed re-materializes
|
|
2764
|
+
// the now-finished parser tree.
|
|
2765
|
+
finalizeTick = signal(0, ...(ngDevMode ? [{ debugName: "finalizeTick" }] : []));
|
|
2716
2766
|
root = computed(() => {
|
|
2717
2767
|
const c = this.content();
|
|
2718
|
-
|
|
2768
|
+
this.finalizeTick(); // re-materialize after a debounced finalize
|
|
2719
2769
|
if (c !== this.prior) {
|
|
2720
|
-
|
|
2770
|
+
// Re-parse from scratch when the content diverged from the prior prefix,
|
|
2771
|
+
// OR when the parser was already finalized — finish() is terminal, so
|
|
2772
|
+
// pushing further deltas into a finished parser corrupts its state. A
|
|
2773
|
+
// transient `streaming=false` mid-stream that finalized early thus
|
|
2774
|
+
// recovers here: new content rebuilds an open, projecting parser.
|
|
2775
|
+
if (c.startsWith(this.prior) && !this.finished) {
|
|
2721
2776
|
this.parser.push(c.slice(this.prior.length));
|
|
2722
2777
|
}
|
|
2723
2778
|
else {
|
|
2724
|
-
// Content shrank or diverged — reset.
|
|
2725
2779
|
this.parser = createPartialMarkdownParser();
|
|
2726
2780
|
this.finished = false;
|
|
2727
2781
|
if (c.length > 0)
|
|
2728
2782
|
this.parser.push(c);
|
|
2729
2783
|
}
|
|
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
2784
|
this.prior = c;
|
|
2743
2785
|
}
|
|
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
2786
|
// Materialize for Angular reactivity: produces a NEW root reference when
|
|
2752
2787
|
// any descendant subtree changed; same reference when nothing changed
|
|
2753
2788
|
// (structural sharing). This is what makes signal-based CD propagate
|
|
@@ -2765,7 +2800,7 @@ class ChatStreamingMdComponent {
|
|
|
2765
2800
|
@if (root(); as r) {
|
|
2766
2801
|
<chat-md-children [parent]="r" />
|
|
2767
2802
|
}
|
|
2768
|
-
`, isInline: true, styles: ["chat-streaming-md{display:block;color:var(--
|
|
2803
|
+
`, 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
2804
|
}
|
|
2770
2805
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatStreamingMdComponent, decorators: [{
|
|
2771
2806
|
type: Component,
|
|
@@ -2779,7 +2814,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
2779
2814
|
useFactory: (host) => host.resolvedRegistry(),
|
|
2780
2815
|
deps: [ChatStreamingMdComponent],
|
|
2781
2816
|
},
|
|
2782
|
-
], styles: ["chat-streaming-md{display:block;color:var(--
|
|
2817
|
+
], 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
2818
|
}], 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
2819
|
|
|
2785
2820
|
// SPDX-License-Identifier: MIT
|
|
@@ -2892,7 +2927,7 @@ class ChatReasoningComponent {
|
|
|
2892
2927
|
<chat-streaming-md [content]="content()" [streaming]="isStreaming()" />
|
|
2893
2928
|
</div>
|
|
2894
2929
|
}
|
|
2895
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
2930
|
+
`, 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
2931
|
}
|
|
2897
2932
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatReasoningComponent, decorators: [{
|
|
2898
2933
|
type: Component,
|
|
@@ -2920,7 +2955,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
2920
2955
|
<chat-streaming-md [content]="content()" [streaming]="isStreaming()" />
|
|
2921
2956
|
</div>
|
|
2922
2957
|
}
|
|
2923
|
-
`, styles: [":host{font-family:var(--
|
|
2958
|
+
`, 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
2959
|
}], 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
2960
|
|
|
2926
2961
|
// libs/chat/src/lib/styles/chat-launcher-button.styles.ts
|
|
@@ -2930,15 +2965,15 @@ const CHAT_LAUNCHER_BUTTON_STYLES = `
|
|
|
2930
2965
|
.chat-launcher-button {
|
|
2931
2966
|
width: 56px;
|
|
2932
2967
|
height: 56px;
|
|
2933
|
-
border-radius: var(--
|
|
2934
|
-
background: var(--
|
|
2935
|
-
color: var(--
|
|
2968
|
+
border-radius: var(--tplane-chat-radius-launcher);
|
|
2969
|
+
background: var(--tplane-chat-primary);
|
|
2970
|
+
color: var(--tplane-chat-on-primary);
|
|
2936
2971
|
border: 0;
|
|
2937
2972
|
cursor: pointer;
|
|
2938
2973
|
display: flex;
|
|
2939
2974
|
align-items: center;
|
|
2940
2975
|
justify-content: center;
|
|
2941
|
-
box-shadow: var(--
|
|
2976
|
+
box-shadow: var(--tplane-chat-shadow-md);
|
|
2942
2977
|
transition: transform 200ms ease;
|
|
2943
2978
|
}
|
|
2944
2979
|
.chat-launcher-button:hover { transform: scale(1.05); }
|
|
@@ -2961,7 +2996,7 @@ class ChatLauncherButtonComponent {
|
|
|
2961
2996
|
<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
2997
|
</svg>
|
|
2963
2998
|
</button>
|
|
2964
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
2999
|
+
`, 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
3000
|
}
|
|
2966
3001
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatLauncherButtonComponent, decorators: [{
|
|
2967
3002
|
type: Component,
|
|
@@ -2971,7 +3006,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
2971
3006
|
<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
3007
|
</svg>
|
|
2973
3008
|
</button>
|
|
2974
|
-
`, styles: [":host{font-family:var(--
|
|
3009
|
+
`, 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
3010
|
}], propDecorators: { clicked: [{ type: i0.Output, args: ["clicked"] }] } });
|
|
2976
3011
|
|
|
2977
3012
|
// SPDX-License-Identifier: MIT
|
|
@@ -2980,11 +3015,11 @@ const CHAT_SUGGESTIONS_STYLES = `
|
|
|
2980
3015
|
.chat-suggestions { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; }
|
|
2981
3016
|
.chat-suggestion {
|
|
2982
3017
|
padding: 6px 10px;
|
|
2983
|
-
font-size: var(--
|
|
2984
|
-
border-radius: var(--
|
|
2985
|
-
border: 1px solid var(--
|
|
3018
|
+
font-size: var(--tplane-chat-font-size-xs);
|
|
3019
|
+
border-radius: var(--tplane-chat-radius-bubble);
|
|
3020
|
+
border: 1px solid var(--tplane-chat-muted);
|
|
2986
3021
|
background: transparent;
|
|
2987
|
-
color: var(--
|
|
3022
|
+
color: var(--tplane-chat-text);
|
|
2988
3023
|
cursor: pointer;
|
|
2989
3024
|
transition: transform 200ms ease;
|
|
2990
3025
|
}
|
|
@@ -3003,7 +3038,7 @@ class ChatSuggestionsComponent {
|
|
|
3003
3038
|
<button type="button" class="chat-suggestion" (click)="selected.emit(s)">{{ s }}</button>
|
|
3004
3039
|
}
|
|
3005
3040
|
</div>
|
|
3006
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
3041
|
+
`, 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
3042
|
}
|
|
3008
3043
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSuggestionsComponent, decorators: [{
|
|
3009
3044
|
type: Component,
|
|
@@ -3013,7 +3048,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
3013
3048
|
<button type="button" class="chat-suggestion" (click)="selected.emit(s)">{{ s }}</button>
|
|
3014
3049
|
}
|
|
3015
3050
|
</div>
|
|
3016
|
-
`, styles: [":host{font-family:var(--
|
|
3051
|
+
`, 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
3052
|
}], propDecorators: { suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }], selected: [{ type: i0.Output, args: ["selected"] }] } });
|
|
3018
3053
|
|
|
3019
3054
|
// libs/chat/src/lib/styles/chat-input.styles.ts
|
|
@@ -3022,13 +3057,13 @@ const CHAT_INPUT_STYLES = `
|
|
|
3022
3057
|
:host {
|
|
3023
3058
|
display: block;
|
|
3024
3059
|
width: 100%;
|
|
3025
|
-
padding: 0 var(--
|
|
3060
|
+
padding: 0 var(--tplane-chat-edge-pad);
|
|
3026
3061
|
box-sizing: border-box;
|
|
3027
3062
|
}
|
|
3028
3063
|
|
|
3029
3064
|
.chat-input__container {
|
|
3030
3065
|
width: 100%;
|
|
3031
|
-
max-width: var(--
|
|
3066
|
+
max-width: var(--tplane-chat-max-width);
|
|
3032
3067
|
margin: 0 auto;
|
|
3033
3068
|
}
|
|
3034
3069
|
|
|
@@ -3036,8 +3071,8 @@ const CHAT_INPUT_STYLES = `
|
|
|
3036
3071
|
display: flex;
|
|
3037
3072
|
align-items: center;
|
|
3038
3073
|
gap: 8px;
|
|
3039
|
-
background: var(--
|
|
3040
|
-
border: 1px solid var(--
|
|
3074
|
+
background: var(--tplane-chat-surface);
|
|
3075
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
3041
3076
|
border-radius: 9999px;
|
|
3042
3077
|
padding: 8px 8px 8px 16px;
|
|
3043
3078
|
min-height: 56px;
|
|
@@ -3050,7 +3085,7 @@ const CHAT_INPUT_STYLES = `
|
|
|
3050
3085
|
outline: none;
|
|
3051
3086
|
resize: none;
|
|
3052
3087
|
background: transparent;
|
|
3053
|
-
color: var(--
|
|
3088
|
+
color: var(--tplane-chat-text);
|
|
3054
3089
|
font: inherit;
|
|
3055
3090
|
font-size: 1rem;
|
|
3056
3091
|
line-height: 1.5;
|
|
@@ -3058,9 +3093,9 @@ const CHAT_INPUT_STYLES = `
|
|
|
3058
3093
|
field-sizing: content;
|
|
3059
3094
|
overflow-y: auto;
|
|
3060
3095
|
}
|
|
3061
|
-
.chat-input__textarea::placeholder { color: var(--
|
|
3096
|
+
.chat-input__textarea::placeholder { color: var(--tplane-chat-text-muted); }
|
|
3062
3097
|
.chat-input__textarea::-webkit-scrollbar { width: 4px; }
|
|
3063
|
-
.chat-input__textarea::-webkit-scrollbar-thumb { background: var(--
|
|
3098
|
+
.chat-input__textarea::-webkit-scrollbar-thumb { background: var(--tplane-chat-separator); border-radius: 4px; }
|
|
3064
3099
|
|
|
3065
3100
|
.chat-input__controls {
|
|
3066
3101
|
display: flex;
|
|
@@ -3083,20 +3118,20 @@ const CHAT_INPUT_STYLES = `
|
|
|
3083
3118
|
padding: 0;
|
|
3084
3119
|
}
|
|
3085
3120
|
.chat-input__send {
|
|
3086
|
-
background: var(--
|
|
3087
|
-
color: var(--
|
|
3121
|
+
background: var(--tplane-chat-text);
|
|
3122
|
+
color: var(--tplane-chat-bg);
|
|
3088
3123
|
}
|
|
3089
3124
|
.chat-input__send:disabled {
|
|
3090
3125
|
opacity: 0.35;
|
|
3091
3126
|
cursor: not-allowed;
|
|
3092
|
-
background: var(--
|
|
3127
|
+
background: var(--tplane-chat-text-muted);
|
|
3093
3128
|
}
|
|
3094
3129
|
.chat-input__send:not(:disabled):hover { transform: scale(1.05); }
|
|
3095
3130
|
.chat-input__send svg { width: 16px; height: 16px; }
|
|
3096
3131
|
|
|
3097
3132
|
.chat-input__send--stop {
|
|
3098
|
-
background: var(--
|
|
3099
|
-
color: var(--
|
|
3133
|
+
background: var(--tplane-chat-text-muted);
|
|
3134
|
+
color: var(--tplane-chat-bg);
|
|
3100
3135
|
}
|
|
3101
3136
|
.chat-input__send--stop:hover { transform: scale(1.05); }
|
|
3102
3137
|
.chat-input__send--stop svg { width: 14px; height: 14px; }
|
|
@@ -3256,7 +3291,7 @@ class ChatInputComponent {
|
|
|
3256
3291
|
</div>
|
|
3257
3292
|
<ng-content select="[chatInputFooter]" />
|
|
3258
3293
|
</div>
|
|
3259
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
3294
|
+
`, 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
3295
|
}
|
|
3261
3296
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatInputComponent, decorators: [{
|
|
3262
3297
|
type: Component,
|
|
@@ -3314,7 +3349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
3314
3349
|
</div>
|
|
3315
3350
|
<ng-content select="[chatInputFooter]" />
|
|
3316
3351
|
</div>
|
|
3317
|
-
`, styles: [":host{font-family:var(--
|
|
3352
|
+
`, 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
3353
|
}], 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
3354
|
|
|
3320
3355
|
// SPDX-License-Identifier: MIT
|
|
@@ -3324,8 +3359,8 @@ const CHAT_TYPING_INDICATOR_STYLES = `
|
|
|
3324
3359
|
message renders. */
|
|
3325
3360
|
:host {
|
|
3326
3361
|
display: block;
|
|
3327
|
-
padding: 0 var(--
|
|
3328
|
-
max-width: var(--
|
|
3362
|
+
padding: 0 var(--tplane-chat-space-6) var(--tplane-chat-space-3);
|
|
3363
|
+
max-width: var(--tplane-chat-max-width);
|
|
3329
3364
|
margin: 0 auto;
|
|
3330
3365
|
width: 100%;
|
|
3331
3366
|
box-sizing: border-box;
|
|
@@ -3335,8 +3370,8 @@ const CHAT_TYPING_INDICATOR_STYLES = `
|
|
|
3335
3370
|
width: 6px;
|
|
3336
3371
|
height: 6px;
|
|
3337
3372
|
border-radius: 50%;
|
|
3338
|
-
background: var(--
|
|
3339
|
-
animation:
|
|
3373
|
+
background: var(--tplane-chat-text-muted);
|
|
3374
|
+
animation: tplane-chat-typing-dot 1.4s ease-in-out infinite both;
|
|
3340
3375
|
}
|
|
3341
3376
|
.chat-typing__dot:nth-child(2) { animation-delay: 0.2s; }
|
|
3342
3377
|
.chat-typing__dot:nth-child(3) { animation-delay: 0.4s; }
|
|
@@ -3384,7 +3419,7 @@ class ChatTypingIndicatorComponent {
|
|
|
3384
3419
|
<span class="chat-typing__dot"></span>
|
|
3385
3420
|
</div>
|
|
3386
3421
|
}
|
|
3387
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
3422
|
+
`, 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
3423
|
}
|
|
3389
3424
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatTypingIndicatorComponent, decorators: [{
|
|
3390
3425
|
type: Component,
|
|
@@ -3396,7 +3431,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
3396
3431
|
<span class="chat-typing__dot"></span>
|
|
3397
3432
|
</div>
|
|
3398
3433
|
}
|
|
3399
|
-
`, styles: [":host{font-family:var(--
|
|
3434
|
+
`, 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
3435
|
}], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }] } });
|
|
3401
3436
|
|
|
3402
3437
|
// libs/chat/src/lib/styles/chat-history-search-palette.styles.ts
|
|
@@ -3407,7 +3442,7 @@ const CHAT_HISTORY_SEARCH_PALETTE_STYLES = `
|
|
|
3407
3442
|
position: fixed;
|
|
3408
3443
|
inset: 0;
|
|
3409
3444
|
background: rgba(0, 0, 0, 0.4);
|
|
3410
|
-
z-index: var(--
|
|
3445
|
+
z-index: var(--tplane-chat-z-modal-scrim, 1100);
|
|
3411
3446
|
border: 0;
|
|
3412
3447
|
padding: 0;
|
|
3413
3448
|
cursor: pointer;
|
|
@@ -3419,11 +3454,11 @@ const CHAT_HISTORY_SEARCH_PALETTE_STYLES = `
|
|
|
3419
3454
|
transform: translateX(-50%);
|
|
3420
3455
|
width: min(560px, 90vw);
|
|
3421
3456
|
max-height: 70vh;
|
|
3422
|
-
background: var(--
|
|
3423
|
-
border: 1px solid var(--
|
|
3457
|
+
background: var(--tplane-chat-bg);
|
|
3458
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
3424
3459
|
border-radius: 12px;
|
|
3425
3460
|
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.25);
|
|
3426
|
-
z-index: var(--
|
|
3461
|
+
z-index: var(--tplane-chat-z-modal, 1101);
|
|
3427
3462
|
display: flex;
|
|
3428
3463
|
flex-direction: column;
|
|
3429
3464
|
overflow: hidden;
|
|
@@ -3433,12 +3468,12 @@ const CHAT_HISTORY_SEARCH_PALETTE_STYLES = `
|
|
|
3433
3468
|
align-items: center;
|
|
3434
3469
|
gap: 8px;
|
|
3435
3470
|
padding: 12px 16px;
|
|
3436
|
-
border-bottom: 1px solid var(--
|
|
3471
|
+
border-bottom: 1px solid var(--tplane-chat-separator);
|
|
3437
3472
|
}
|
|
3438
3473
|
.chat-history-search-palette__icon {
|
|
3439
3474
|
width: 18px;
|
|
3440
3475
|
height: 18px;
|
|
3441
|
-
color: var(--
|
|
3476
|
+
color: var(--tplane-chat-text-muted);
|
|
3442
3477
|
flex-shrink: 0;
|
|
3443
3478
|
}
|
|
3444
3479
|
.chat-history-search-palette__input {
|
|
@@ -3446,22 +3481,22 @@ const CHAT_HISTORY_SEARCH_PALETTE_STYLES = `
|
|
|
3446
3481
|
border: 0;
|
|
3447
3482
|
outline: none;
|
|
3448
3483
|
background: transparent;
|
|
3449
|
-
color: var(--
|
|
3484
|
+
color: var(--tplane-chat-text);
|
|
3450
3485
|
font: inherit;
|
|
3451
3486
|
font-size: 1rem;
|
|
3452
3487
|
}
|
|
3453
3488
|
.chat-history-search-palette__input::placeholder {
|
|
3454
|
-
color: var(--
|
|
3489
|
+
color: var(--tplane-chat-text-muted);
|
|
3455
3490
|
}
|
|
3456
3491
|
.chat-history-search-palette__close {
|
|
3457
3492
|
background: transparent;
|
|
3458
3493
|
border: 0;
|
|
3459
3494
|
padding: 4px;
|
|
3460
|
-
color: var(--
|
|
3495
|
+
color: var(--tplane-chat-text-muted);
|
|
3461
3496
|
cursor: pointer;
|
|
3462
3497
|
border-radius: 4px;
|
|
3463
3498
|
}
|
|
3464
|
-
.chat-history-search-palette__close:hover { color: var(--
|
|
3499
|
+
.chat-history-search-palette__close:hover { color: var(--tplane-chat-text); }
|
|
3465
3500
|
.chat-history-search-palette__list {
|
|
3466
3501
|
flex: 1 1 auto;
|
|
3467
3502
|
overflow-y: auto;
|
|
@@ -3477,23 +3512,23 @@ const CHAT_HISTORY_SEARCH_PALETTE_STYLES = `
|
|
|
3477
3512
|
cursor: pointer;
|
|
3478
3513
|
}
|
|
3479
3514
|
.chat-history-search-palette__row[aria-selected="true"] {
|
|
3480
|
-
background: var(--
|
|
3515
|
+
background: var(--tplane-chat-surface-alt);
|
|
3481
3516
|
}
|
|
3482
3517
|
.chat-history-search-palette__row-title {
|
|
3483
|
-
color: var(--
|
|
3484
|
-
font-size: var(--
|
|
3518
|
+
color: var(--tplane-chat-text);
|
|
3519
|
+
font-size: var(--tplane-chat-font-size);
|
|
3485
3520
|
}
|
|
3486
3521
|
.chat-history-search-palette__row-subtitle {
|
|
3487
|
-
color: var(--
|
|
3488
|
-
font-size: var(--
|
|
3522
|
+
color: var(--tplane-chat-text-muted);
|
|
3523
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
3489
3524
|
margin-top: 2px;
|
|
3490
3525
|
}
|
|
3491
3526
|
.chat-history-search-palette__empty,
|
|
3492
3527
|
.chat-history-search-palette__hint {
|
|
3493
3528
|
padding: 24px 16px;
|
|
3494
|
-
color: var(--
|
|
3529
|
+
color: var(--tplane-chat-text-muted);
|
|
3495
3530
|
text-align: center;
|
|
3496
|
-
font-size: var(--
|
|
3531
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
3497
3532
|
}
|
|
3498
3533
|
.chat-history-search-palette__skeleton {
|
|
3499
3534
|
padding: 8px 4px;
|
|
@@ -3501,9 +3536,9 @@ const CHAT_HISTORY_SEARCH_PALETTE_STYLES = `
|
|
|
3501
3536
|
.chat-history-search-palette__skeleton-row {
|
|
3502
3537
|
height: 36px;
|
|
3503
3538
|
margin: 4px 0;
|
|
3504
|
-
background: var(--
|
|
3539
|
+
background: var(--tplane-chat-surface-alt);
|
|
3505
3540
|
border-radius: 8px;
|
|
3506
|
-
animation:
|
|
3541
|
+
animation: tplane-chat-pulse 1.4s ease-in-out infinite;
|
|
3507
3542
|
}
|
|
3508
3543
|
`;
|
|
3509
3544
|
|
|
@@ -3656,7 +3691,7 @@ class ChatHistorySearchPaletteComponent {
|
|
|
3656
3691
|
}
|
|
3657
3692
|
</div>
|
|
3658
3693
|
}
|
|
3659
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
3694
|
+
`, 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
3695
|
}
|
|
3661
3696
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatHistorySearchPaletteComponent, decorators: [{
|
|
3662
3697
|
type: Component,
|
|
@@ -3738,7 +3773,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
3738
3773
|
}
|
|
3739
3774
|
</div>
|
|
3740
3775
|
}
|
|
3741
|
-
`, styles: [":host{font-family:var(--
|
|
3776
|
+
`, 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
3777
|
}], 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
3778
|
|
|
3744
3779
|
// libs/chat/src/lib/styles/chat-overflow-menu.styles.ts
|
|
@@ -3761,8 +3796,8 @@ const CHAT_OVERFLOW_MENU_STYLES = `
|
|
|
3761
3796
|
padding: 4px;
|
|
3762
3797
|
margin: 0;
|
|
3763
3798
|
list-style: none;
|
|
3764
|
-
background: var(--
|
|
3765
|
-
border: 1px solid var(--
|
|
3799
|
+
background: var(--tplane-chat-bg);
|
|
3800
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
3766
3801
|
border-radius: 8px;
|
|
3767
3802
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
|
3768
3803
|
}
|
|
@@ -3770,23 +3805,23 @@ const CHAT_OVERFLOW_MENU_STYLES = `
|
|
|
3770
3805
|
display: block;
|
|
3771
3806
|
padding: 8px 12px;
|
|
3772
3807
|
border-radius: 4px;
|
|
3773
|
-
color: var(--
|
|
3774
|
-
font-size: var(--
|
|
3808
|
+
color: var(--tplane-chat-text);
|
|
3809
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
3775
3810
|
cursor: pointer;
|
|
3776
3811
|
user-select: none;
|
|
3777
3812
|
}
|
|
3778
3813
|
.chat-overflow-menu__item:hover {
|
|
3779
|
-
background: var(--
|
|
3814
|
+
background: var(--tplane-chat-surface-alt);
|
|
3780
3815
|
}
|
|
3781
3816
|
.chat-overflow-menu__item:focus-visible {
|
|
3782
|
-
outline: 2px solid var(--
|
|
3817
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
3783
3818
|
outline-offset: -2px;
|
|
3784
3819
|
}
|
|
3785
3820
|
.chat-overflow-menu__item--destructive {
|
|
3786
|
-
color: var(--
|
|
3821
|
+
color: var(--tplane-chat-error-text);
|
|
3787
3822
|
}
|
|
3788
3823
|
.chat-overflow-menu__item--disabled {
|
|
3789
|
-
color: var(--
|
|
3824
|
+
color: var(--tplane-chat-text-muted);
|
|
3790
3825
|
cursor: not-allowed;
|
|
3791
3826
|
pointer-events: none;
|
|
3792
3827
|
}
|
|
@@ -3892,7 +3927,7 @@ class ChatOverflowMenuComponent {
|
|
|
3892
3927
|
}
|
|
3893
3928
|
</ul>
|
|
3894
3929
|
}
|
|
3895
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
3930
|
+
`, 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
3931
|
}
|
|
3897
3932
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatOverflowMenuComponent, decorators: [{
|
|
3898
3933
|
type: Component,
|
|
@@ -3930,7 +3965,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
3930
3965
|
}
|
|
3931
3966
|
</ul>
|
|
3932
3967
|
}
|
|
3933
|
-
`, styles: [":host{font-family:var(--
|
|
3968
|
+
`, 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
3969
|
}], 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
3970
|
|
|
3936
3971
|
// libs/chat/src/lib/styles/chat-confirm-dialog.styles.ts
|
|
@@ -3954,21 +3989,21 @@ const CHAT_CONFIRM_DIALOG_STYLES = `
|
|
|
3954
3989
|
width: min(420px, 90vw);
|
|
3955
3990
|
z-index: 71;
|
|
3956
3991
|
padding: 20px;
|
|
3957
|
-
background: var(--
|
|
3958
|
-
border: 1px solid var(--
|
|
3992
|
+
background: var(--tplane-chat-bg);
|
|
3993
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
3959
3994
|
border-radius: 12px;
|
|
3960
3995
|
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.25);
|
|
3961
3996
|
}
|
|
3962
3997
|
.chat-confirm-dialog__title {
|
|
3963
3998
|
margin: 0 0 8px 0;
|
|
3964
|
-
color: var(--
|
|
3999
|
+
color: var(--tplane-chat-text);
|
|
3965
4000
|
font-size: 1.125rem;
|
|
3966
4001
|
font-weight: 600;
|
|
3967
4002
|
}
|
|
3968
4003
|
.chat-confirm-dialog__body {
|
|
3969
4004
|
margin: 0 0 16px 0;
|
|
3970
|
-
color: var(--
|
|
3971
|
-
font-size: var(--
|
|
4005
|
+
color: var(--tplane-chat-text-muted);
|
|
4006
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
3972
4007
|
line-height: 1.5;
|
|
3973
4008
|
}
|
|
3974
4009
|
.chat-confirm-dialog__actions {
|
|
@@ -3981,20 +4016,20 @@ const CHAT_CONFIRM_DIALOG_STYLES = `
|
|
|
3981
4016
|
padding: 8px 16px;
|
|
3982
4017
|
border-radius: 6px;
|
|
3983
4018
|
font: inherit;
|
|
3984
|
-
font-size: var(--
|
|
4019
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
3985
4020
|
cursor: pointer;
|
|
3986
|
-
border: 1px solid var(--
|
|
3987
|
-
background: var(--
|
|
3988
|
-
color: var(--
|
|
4021
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
4022
|
+
background: var(--tplane-chat-bg);
|
|
4023
|
+
color: var(--tplane-chat-text);
|
|
3989
4024
|
}
|
|
3990
|
-
.chat-confirm-dialog__cancel:hover { background: var(--
|
|
4025
|
+
.chat-confirm-dialog__cancel:hover { background: var(--tplane-chat-surface-alt); }
|
|
3991
4026
|
.chat-confirm-dialog__confirm {
|
|
3992
|
-
background: var(--
|
|
3993
|
-
color: var(--
|
|
4027
|
+
background: var(--tplane-chat-text);
|
|
4028
|
+
color: var(--tplane-chat-bg);
|
|
3994
4029
|
border-color: transparent;
|
|
3995
4030
|
}
|
|
3996
4031
|
.chat-confirm-dialog__confirm--destructive {
|
|
3997
|
-
background: var(--
|
|
4032
|
+
background: var(--tplane-chat-destructive);
|
|
3998
4033
|
color: #fff;
|
|
3999
4034
|
border-color: transparent;
|
|
4000
4035
|
}
|
|
@@ -4003,7 +4038,7 @@ const CHAT_CONFIRM_DIALOG_STYLES = `
|
|
|
4003
4038
|
}
|
|
4004
4039
|
.chat-confirm-dialog__cancel:focus-visible,
|
|
4005
4040
|
.chat-confirm-dialog__confirm:focus-visible {
|
|
4006
|
-
outline: 2px solid var(--
|
|
4041
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
4007
4042
|
outline-offset: 2px;
|
|
4008
4043
|
}
|
|
4009
4044
|
`;
|
|
@@ -4075,7 +4110,7 @@ class ChatConfirmDialogComponent {
|
|
|
4075
4110
|
</div>
|
|
4076
4111
|
</div>
|
|
4077
4112
|
}
|
|
4078
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
4113
|
+
`, 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
4114
|
}
|
|
4080
4115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatConfirmDialogComponent, decorators: [{
|
|
4081
4116
|
type: Component,
|
|
@@ -4116,7 +4151,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4116
4151
|
</div>
|
|
4117
4152
|
</div>
|
|
4118
4153
|
}
|
|
4119
|
-
`, styles: [":host{font-family:var(--
|
|
4154
|
+
`, 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
4155
|
}], 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
4156
|
|
|
4122
4157
|
// libs/chat/src/lib/styles/chat-scroll-bubble.styles.ts
|
|
@@ -4140,9 +4175,9 @@ const CHAT_SCROLL_BUBBLE_STYLES = `
|
|
|
4140
4175
|
height: 36px;
|
|
4141
4176
|
padding: 0 12px;
|
|
4142
4177
|
border-radius: 9999px;
|
|
4143
|
-
background: var(--
|
|
4144
|
-
border: 1px solid var(--
|
|
4145
|
-
color: var(--
|
|
4178
|
+
background: var(--tplane-chat-surface);
|
|
4179
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
4180
|
+
color: var(--tplane-chat-text);
|
|
4146
4181
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
|
|
4147
4182
|
cursor: pointer;
|
|
4148
4183
|
transition: transform 150ms ease, box-shadow 150ms ease;
|
|
@@ -4153,8 +4188,8 @@ const CHAT_SCROLL_BUBBLE_STYLES = `
|
|
|
4153
4188
|
width: 6px;
|
|
4154
4189
|
height: 6px;
|
|
4155
4190
|
border-radius: 50%;
|
|
4156
|
-
background: var(--
|
|
4157
|
-
animation:
|
|
4191
|
+
background: var(--tplane-chat-text-muted);
|
|
4192
|
+
animation: tplane-chat-typing-dot 1.4s ease-in-out infinite both;
|
|
4158
4193
|
}
|
|
4159
4194
|
.chat-scroll-bubble__dot:nth-child(2) { animation-delay: 0.2s; }
|
|
4160
4195
|
.chat-scroll-bubble__dot:nth-child(3) { animation-delay: 0.4s; }
|
|
@@ -4194,7 +4229,7 @@ class ChatScrollBubbleComponent {
|
|
|
4194
4229
|
</svg>
|
|
4195
4230
|
}
|
|
4196
4231
|
</button>
|
|
4197
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
4232
|
+
`, 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
4233
|
}
|
|
4199
4234
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatScrollBubbleComponent, decorators: [{
|
|
4200
4235
|
type: Component,
|
|
@@ -4220,7 +4255,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4220
4255
|
</svg>
|
|
4221
4256
|
}
|
|
4222
4257
|
</button>
|
|
4223
|
-
`, styles: [":host{font-family:var(--
|
|
4258
|
+
`, 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
4259
|
}], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: true }] }], clicked: [{ type: i0.Output, args: ["clicked"] }] } });
|
|
4225
4260
|
|
|
4226
4261
|
// SPDX-License-Identifier: MIT
|
|
@@ -4230,34 +4265,34 @@ const CHAT_ERROR_STYLES = `
|
|
|
4230
4265
|
display: flex;
|
|
4231
4266
|
align-items: flex-start;
|
|
4232
4267
|
gap: 0.5rem;
|
|
4233
|
-
background: var(--
|
|
4234
|
-
border: 1px solid var(--
|
|
4235
|
-
color: var(--
|
|
4236
|
-
border-radius: var(--
|
|
4268
|
+
background: var(--tplane-chat-error-bg);
|
|
4269
|
+
border: 1px solid var(--tplane-chat-error-border);
|
|
4270
|
+
color: var(--tplane-chat-error-text);
|
|
4271
|
+
border-radius: var(--tplane-chat-radius-card);
|
|
4237
4272
|
padding: 8px 12px;
|
|
4238
|
-
font-size: var(--
|
|
4239
|
-
margin: 0 var(--
|
|
4273
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
4274
|
+
margin: 0 var(--tplane-chat-space-6) var(--tplane-chat-space-2);
|
|
4240
4275
|
}
|
|
4241
4276
|
.chat-error__icon { flex-shrink: 0; width: 16px; height: 16px; margin-top: 2px; }
|
|
4242
4277
|
.chat-error__msg { flex: 1; min-width: 0; word-break: break-word; }
|
|
4243
4278
|
.chat-error__retry {
|
|
4244
4279
|
flex-shrink: 0;
|
|
4245
4280
|
background: transparent;
|
|
4246
|
-
color: var(--
|
|
4247
|
-
border: 1px solid var(--
|
|
4248
|
-
border-radius: var(--
|
|
4281
|
+
color: var(--tplane-chat-error-text);
|
|
4282
|
+
border: 1px solid var(--tplane-chat-error-border);
|
|
4283
|
+
border-radius: var(--tplane-chat-radius-card);
|
|
4249
4284
|
padding: 2px 10px;
|
|
4250
|
-
font-size: var(--
|
|
4285
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
4251
4286
|
cursor: pointer;
|
|
4252
4287
|
transition: background 150ms ease, color 150ms ease;
|
|
4253
4288
|
white-space: nowrap;
|
|
4254
4289
|
}
|
|
4255
4290
|
.chat-error__retry:hover {
|
|
4256
|
-
background: var(--
|
|
4257
|
-
color: var(--
|
|
4291
|
+
background: var(--tplane-chat-error-border);
|
|
4292
|
+
color: var(--tplane-chat-error-text);
|
|
4258
4293
|
}
|
|
4259
4294
|
.chat-error__retry:focus-visible {
|
|
4260
|
-
outline: 2px solid var(--
|
|
4295
|
+
outline: 2px solid var(--tplane-chat-error-border);
|
|
4261
4296
|
outline-offset: 2px;
|
|
4262
4297
|
}
|
|
4263
4298
|
`;
|
|
@@ -4301,7 +4336,7 @@ class ChatErrorComponent {
|
|
|
4301
4336
|
}
|
|
4302
4337
|
</div>
|
|
4303
4338
|
}
|
|
4304
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
4339
|
+
`, 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
4340
|
}
|
|
4306
4341
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatErrorComponent, decorators: [{
|
|
4307
4342
|
type: Component,
|
|
@@ -4317,20 +4352,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4317
4352
|
}
|
|
4318
4353
|
</div>
|
|
4319
4354
|
}
|
|
4320
|
-
`, styles: [":host{font-family:var(--
|
|
4355
|
+
`, 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
4356
|
}], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }] } });
|
|
4322
4357
|
|
|
4323
4358
|
// SPDX-License-Identifier: MIT
|
|
4324
4359
|
const CHAT_INTERRUPT_STYLES = `
|
|
4325
4360
|
:host { display: block; }
|
|
4326
4361
|
.chat-interrupt {
|
|
4327
|
-
background: var(--
|
|
4328
|
-
color: var(--
|
|
4329
|
-
border-left: 3px solid var(--
|
|
4330
|
-
border-radius: var(--
|
|
4362
|
+
background: var(--tplane-chat-warning-bg);
|
|
4363
|
+
color: var(--tplane-chat-warning-text);
|
|
4364
|
+
border-left: 3px solid var(--tplane-chat-warning-text);
|
|
4365
|
+
border-radius: var(--tplane-chat-radius-card);
|
|
4331
4366
|
padding: 12px 16px;
|
|
4332
|
-
margin: 0 var(--
|
|
4333
|
-
font-size: var(--
|
|
4367
|
+
margin: 0 var(--tplane-chat-space-6) var(--tplane-chat-space-2);
|
|
4368
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
4334
4369
|
}
|
|
4335
4370
|
.chat-interrupt__title { font-weight: 600; margin: 0 0 4px; display: flex; align-items: center; gap: 6px; }
|
|
4336
4371
|
.chat-interrupt__body { margin: 0 0 8px; opacity: 0.95; }
|
|
@@ -4382,7 +4417,7 @@ class ChatInterruptComponent {
|
|
|
4382
4417
|
}
|
|
4383
4418
|
</div>
|
|
4384
4419
|
}
|
|
4385
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
4420
|
+
`, 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
4421
|
}
|
|
4387
4422
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatInterruptComponent, decorators: [{
|
|
4388
4423
|
type: Component,
|
|
@@ -4405,7 +4440,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4405
4440
|
}
|
|
4406
4441
|
</div>
|
|
4407
4442
|
}
|
|
4408
|
-
`, styles: [":host{font-family:var(--
|
|
4443
|
+
`, 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
4444
|
}], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], templateRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
|
|
4410
4445
|
|
|
4411
4446
|
// libs/chat/src/lib/compositions/chat-tool-call-card/chat-tool-call-card.component.ts
|
|
@@ -4488,7 +4523,7 @@ class ChatToolCallCardComponent {
|
|
|
4488
4523
|
</div>
|
|
4489
4524
|
}
|
|
4490
4525
|
</chat-trace>
|
|
4491
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
4526
|
+
`, 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
4527
|
}
|
|
4493
4528
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatToolCallCardComponent, decorators: [{
|
|
4494
4529
|
type: Component,
|
|
@@ -4528,7 +4563,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4528
4563
|
</div>
|
|
4529
4564
|
}
|
|
4530
4565
|
</chat-trace>
|
|
4531
|
-
`, styles: [":host{font-family:var(--
|
|
4566
|
+
`, 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
4567
|
}], propDecorators: { toolCall: [{ type: i0.Input, args: [{ isSignal: true, alias: "toolCall", required: true }] }], defaultCollapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultCollapsed", required: false }] }] } });
|
|
4533
4568
|
|
|
4534
4569
|
// libs/chat/src/lib/compositions/chat-subagent-card/chat-subagent-card.component.ts
|
|
@@ -4541,10 +4576,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4541
4576
|
*/
|
|
4542
4577
|
function statusColor(status) {
|
|
4543
4578
|
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(--
|
|
4579
|
+
case 'pending': return 'background: var(--tplane-chat-surface-alt); color: var(--tplane-chat-text-muted);';
|
|
4580
|
+
case 'running': return 'background: var(--tplane-chat-warning-bg); color: var(--tplane-chat-warning-text);';
|
|
4581
|
+
case 'complete': return 'color: var(--tplane-chat-success);';
|
|
4582
|
+
case 'error': return 'background: var(--tplane-chat-error-bg); color: var(--tplane-chat-error-text);';
|
|
4548
4583
|
}
|
|
4549
4584
|
}
|
|
4550
4585
|
function statusToTraceState(s) {
|
|
@@ -4595,7 +4630,7 @@ class ChatSubagentCardComponent {
|
|
|
4595
4630
|
</div>
|
|
4596
4631
|
}
|
|
4597
4632
|
</chat-trace>
|
|
4598
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
4633
|
+
`, 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
4634
|
}
|
|
4600
4635
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSubagentCardComponent, decorators: [{
|
|
4601
4636
|
type: Component,
|
|
@@ -4621,7 +4656,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4621
4656
|
</div>
|
|
4622
4657
|
}
|
|
4623
4658
|
</chat-trace>
|
|
4624
|
-
`, styles: [":host{font-family:var(--
|
|
4659
|
+
`, 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
4660
|
}], propDecorators: { subagent: [{ type: i0.Input, args: [{ isSignal: true, alias: "subagent", required: true }] }] } });
|
|
4626
4661
|
|
|
4627
4662
|
// libs/chat/src/lib/primitives/chat-tool-calls/chat-tool-call-template.directive.ts
|
|
@@ -4835,7 +4870,7 @@ class ChatToolCallsComponent {
|
|
|
4835
4870
|
}
|
|
4836
4871
|
}
|
|
4837
4872
|
}
|
|
4838
|
-
`, isInline: true, styles: [":host{display:block;margin-bottom:20px}.ctc__group{border:1px solid var(--
|
|
4873
|
+
`, 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
4874
|
}
|
|
4840
4875
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatToolCallsComponent, decorators: [{
|
|
4841
4876
|
type: Component,
|
|
@@ -4874,24 +4909,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
4874
4909
|
}
|
|
4875
4910
|
}
|
|
4876
4911
|
}
|
|
4877
|
-
`, styles: [":host{display:block;margin-bottom:20px}.ctc__group{border:1px solid var(--
|
|
4912
|
+
`, 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
4913
|
}], 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
4914
|
|
|
4880
4915
|
// SPDX-License-Identifier: MIT
|
|
4881
4916
|
const CHAT_GENERATIVE_UI_STYLES = `
|
|
4882
4917
|
:host {
|
|
4883
4918
|
display: block;
|
|
4884
|
-
color: var(--
|
|
4885
|
-
font-size: var(--
|
|
4886
|
-
line-height: var(--
|
|
4919
|
+
color: var(--tplane-chat-text);
|
|
4920
|
+
font-size: var(--tplane-chat-font-size);
|
|
4921
|
+
line-height: var(--tplane-chat-line-height);
|
|
4887
4922
|
}
|
|
4888
4923
|
.chat-generative-ui__error {
|
|
4889
|
-
color: var(--
|
|
4890
|
-
background: var(--
|
|
4891
|
-
border: 1px solid var(--
|
|
4892
|
-
border-radius: var(--
|
|
4924
|
+
color: var(--tplane-chat-error-text);
|
|
4925
|
+
background: var(--tplane-chat-error-bg);
|
|
4926
|
+
border: 1px solid var(--tplane-chat-error-border);
|
|
4927
|
+
border-radius: var(--tplane-chat-radius-card);
|
|
4893
4928
|
padding: 8px 12px;
|
|
4894
|
-
font-size: var(--
|
|
4929
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
4895
4930
|
}
|
|
4896
4931
|
`;
|
|
4897
4932
|
|
|
@@ -5011,7 +5046,7 @@ class ChatGenerativeUiComponent {
|
|
|
5011
5046
|
(events)="events.emit($event)"
|
|
5012
5047
|
/>
|
|
5013
5048
|
}
|
|
5014
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
5049
|
+
`, 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
5050
|
}
|
|
5016
5051
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatGenerativeUiComponent, decorators: [{
|
|
5017
5052
|
type: Component,
|
|
@@ -5026,7 +5061,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
5026
5061
|
(events)="events.emit($event)"
|
|
5027
5062
|
/>
|
|
5028
5063
|
}
|
|
5029
|
-
`, styles: [":host{font-family:var(--
|
|
5064
|
+
`, 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
5065
|
}], 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
5066
|
|
|
5032
5067
|
// libs/chat/src/lib/primitives/chat-tool-views/chat-tool-views.component.ts
|
|
@@ -5167,7 +5202,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
5167
5202
|
|
|
5168
5203
|
// SPDX-License-Identifier: MIT
|
|
5169
5204
|
const CHAT_THREAD_LIST_STYLES = `
|
|
5170
|
-
:host { display: block; padding: var(--
|
|
5205
|
+
:host { display: block; padding: var(--tplane-chat-space-2); }
|
|
5171
5206
|
.chat-thread-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; }
|
|
5172
5207
|
.chat-thread-list__item {
|
|
5173
5208
|
display: flex;
|
|
@@ -5175,10 +5210,10 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5175
5210
|
gap: 2px;
|
|
5176
5211
|
min-height: 36px;
|
|
5177
5212
|
padding: 8px 12px;
|
|
5178
|
-
border-radius: var(--
|
|
5213
|
+
border-radius: var(--tplane-chat-radius-button);
|
|
5179
5214
|
cursor: pointer;
|
|
5180
|
-
color: var(--
|
|
5181
|
-
font-size: var(--
|
|
5215
|
+
color: var(--tplane-chat-text);
|
|
5216
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
5182
5217
|
background: transparent;
|
|
5183
5218
|
border: 0;
|
|
5184
5219
|
text-align: left;
|
|
@@ -5186,9 +5221,9 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5186
5221
|
box-sizing: border-box;
|
|
5187
5222
|
transition: background-color 150ms ease;
|
|
5188
5223
|
}
|
|
5189
|
-
.chat-thread-list__item:hover { background: color-mix(in srgb, var(--
|
|
5224
|
+
.chat-thread-list__item:hover { background: color-mix(in srgb, var(--tplane-chat-text) 5%, transparent); }
|
|
5190
5225
|
.chat-thread-list__item[data-active="true"] {
|
|
5191
|
-
background: var(--
|
|
5226
|
+
background: var(--tplane-chat-surface-alt);
|
|
5192
5227
|
font-weight: 500;
|
|
5193
5228
|
}
|
|
5194
5229
|
.chat-thread-list__item-title {
|
|
@@ -5199,24 +5234,24 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5199
5234
|
}
|
|
5200
5235
|
.chat-thread-list__item-time {
|
|
5201
5236
|
font-size: 11px;
|
|
5202
|
-
color: var(--
|
|
5237
|
+
color: var(--tplane-chat-text-muted);
|
|
5203
5238
|
display: block;
|
|
5204
5239
|
}
|
|
5205
5240
|
.chat-thread-list__new {
|
|
5206
5241
|
display: block;
|
|
5207
5242
|
width: 100%;
|
|
5208
5243
|
height: 36px;
|
|
5209
|
-
margin-bottom: var(--
|
|
5210
|
-
border: 1px dashed var(--
|
|
5211
|
-
border-radius: var(--
|
|
5244
|
+
margin-bottom: var(--tplane-chat-space-2);
|
|
5245
|
+
border: 1px dashed var(--tplane-chat-separator);
|
|
5246
|
+
border-radius: var(--tplane-chat-radius-button);
|
|
5212
5247
|
background: transparent;
|
|
5213
|
-
color: var(--
|
|
5248
|
+
color: var(--tplane-chat-primary);
|
|
5214
5249
|
cursor: pointer;
|
|
5215
|
-
font-size: var(--
|
|
5250
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
5216
5251
|
box-sizing: border-box;
|
|
5217
5252
|
transition: background 150ms ease;
|
|
5218
5253
|
}
|
|
5219
|
-
.chat-thread-list__new:hover { background: var(--
|
|
5254
|
+
.chat-thread-list__new:hover { background: var(--tplane-chat-surface-alt); }
|
|
5220
5255
|
.chat-thread-list__item-wrap {
|
|
5221
5256
|
position: relative;
|
|
5222
5257
|
display: flex;
|
|
@@ -5233,7 +5268,7 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5233
5268
|
height: 28px;
|
|
5234
5269
|
border: 0;
|
|
5235
5270
|
background: transparent;
|
|
5236
|
-
color: var(--
|
|
5271
|
+
color: var(--tplane-chat-text-muted);
|
|
5237
5272
|
border-radius: 4px;
|
|
5238
5273
|
cursor: pointer;
|
|
5239
5274
|
opacity: 0;
|
|
@@ -5247,12 +5282,12 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5247
5282
|
opacity: 1;
|
|
5248
5283
|
}
|
|
5249
5284
|
.chat-thread-list__kebab:hover {
|
|
5250
|
-
background: var(--
|
|
5251
|
-
color: var(--
|
|
5285
|
+
background: var(--tplane-chat-surface-alt);
|
|
5286
|
+
color: var(--tplane-chat-text);
|
|
5252
5287
|
}
|
|
5253
5288
|
.chat-thread-list__kebab:focus-visible {
|
|
5254
5289
|
opacity: 1;
|
|
5255
|
-
outline: 2px solid var(--
|
|
5290
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
5256
5291
|
outline-offset: 2px;
|
|
5257
5292
|
}
|
|
5258
5293
|
.chat-thread-list__initial {
|
|
@@ -5262,8 +5297,8 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5262
5297
|
border-radius: 50%;
|
|
5263
5298
|
align-items: center;
|
|
5264
5299
|
justify-content: center;
|
|
5265
|
-
background: var(--
|
|
5266
|
-
color: var(--
|
|
5300
|
+
background: var(--tplane-chat-surface-alt);
|
|
5301
|
+
color: var(--tplane-chat-text);
|
|
5267
5302
|
font-weight: 500;
|
|
5268
5303
|
font-size: 13px;
|
|
5269
5304
|
flex-shrink: 0;
|
|
@@ -5272,18 +5307,18 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5272
5307
|
width: 11px;
|
|
5273
5308
|
height: 11px;
|
|
5274
5309
|
margin-right: 4px;
|
|
5275
|
-
color: var(--
|
|
5310
|
+
color: var(--tplane-chat-text-muted);
|
|
5276
5311
|
vertical-align: -1px;
|
|
5277
5312
|
display: inline-block;
|
|
5278
5313
|
}
|
|
5279
5314
|
.chat-thread-list__edit {
|
|
5280
5315
|
flex: 1 1 auto;
|
|
5281
|
-
border: 1px solid var(--
|
|
5282
|
-
border-radius: var(--
|
|
5283
|
-
background: var(--
|
|
5284
|
-
color: var(--
|
|
5316
|
+
border: 1px solid var(--tplane-chat-primary);
|
|
5317
|
+
border-radius: var(--tplane-chat-radius-button);
|
|
5318
|
+
background: var(--tplane-chat-bg);
|
|
5319
|
+
color: var(--tplane-chat-text);
|
|
5285
5320
|
font: inherit;
|
|
5286
|
-
font-size: var(--
|
|
5321
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
5287
5322
|
padding: 6px 10px;
|
|
5288
5323
|
min-height: 36px;
|
|
5289
5324
|
outline: none;
|
|
@@ -5314,7 +5349,7 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5314
5349
|
display: inline-flex;
|
|
5315
5350
|
align-items: center;
|
|
5316
5351
|
justify-content: center;
|
|
5317
|
-
color: var(--
|
|
5352
|
+
color: var(--tplane-chat-text-muted);
|
|
5318
5353
|
font-size: 11px;
|
|
5319
5354
|
line-height: 1;
|
|
5320
5355
|
letter-spacing: -1px;
|
|
@@ -5345,7 +5380,7 @@ const CHAT_THREAD_LIST_STYLES = `
|
|
|
5345
5380
|
left: 4px;
|
|
5346
5381
|
right: 4px;
|
|
5347
5382
|
height: 2px;
|
|
5348
|
-
background: var(--
|
|
5383
|
+
background: var(--tplane-chat-primary);
|
|
5349
5384
|
border-radius: 1px;
|
|
5350
5385
|
pointer-events: none;
|
|
5351
5386
|
}
|
|
@@ -5913,7 +5948,7 @@ class ChatThreadListComponent {
|
|
|
5913
5948
|
(confirmed)="performDelete()"
|
|
5914
5949
|
(cancelled)="confirmDeleteId.set(null)"
|
|
5915
5950
|
/>
|
|
5916
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
5951
|
+
`, 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
5952
|
}
|
|
5918
5953
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatThreadListComponent, decorators: [{
|
|
5919
5954
|
type: Component,
|
|
@@ -6023,13 +6058,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
6023
6058
|
(confirmed)="performDelete()"
|
|
6024
6059
|
(cancelled)="confirmDeleteId.set(null)"
|
|
6025
6060
|
/>
|
|
6026
|
-
`, styles: [":host{font-family:var(--
|
|
6061
|
+
`, 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
6062
|
}], 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
6063
|
|
|
6029
6064
|
// libs/chat/src/lib/styles/chat-project-list.styles.ts
|
|
6030
6065
|
// SPDX-License-Identifier: MIT
|
|
6031
6066
|
const CHAT_PROJECT_LIST_STYLES = `
|
|
6032
|
-
:host { display: block; padding: var(--
|
|
6067
|
+
:host { display: block; padding: var(--tplane-chat-space-2); }
|
|
6033
6068
|
.chat-project-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; }
|
|
6034
6069
|
.chat-project-list__item-wrap {
|
|
6035
6070
|
position: relative;
|
|
@@ -6042,10 +6077,10 @@ const CHAT_PROJECT_LIST_STYLES = `
|
|
|
6042
6077
|
min-width: 0;
|
|
6043
6078
|
min-height: 32px;
|
|
6044
6079
|
padding: 6px 12px;
|
|
6045
|
-
border-radius: var(--
|
|
6080
|
+
border-radius: var(--tplane-chat-radius-button);
|
|
6046
6081
|
cursor: pointer;
|
|
6047
|
-
color: var(--
|
|
6048
|
-
font-size: var(--
|
|
6082
|
+
color: var(--tplane-chat-text);
|
|
6083
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
6049
6084
|
background: transparent;
|
|
6050
6085
|
border: 0;
|
|
6051
6086
|
text-align: left;
|
|
@@ -6055,9 +6090,9 @@ const CHAT_PROJECT_LIST_STYLES = `
|
|
|
6055
6090
|
text-overflow: ellipsis;
|
|
6056
6091
|
white-space: nowrap;
|
|
6057
6092
|
}
|
|
6058
|
-
.chat-project-list__item:hover { background: color-mix(in srgb, var(--
|
|
6093
|
+
.chat-project-list__item:hover { background: color-mix(in srgb, var(--tplane-chat-text) 5%, transparent); }
|
|
6059
6094
|
.chat-project-list__item[data-active="true"] {
|
|
6060
|
-
background: var(--
|
|
6095
|
+
background: var(--tplane-chat-surface-alt);
|
|
6061
6096
|
font-weight: 500;
|
|
6062
6097
|
}
|
|
6063
6098
|
.chat-project-list__kebab {
|
|
@@ -6066,7 +6101,7 @@ const CHAT_PROJECT_LIST_STYLES = `
|
|
|
6066
6101
|
height: 28px;
|
|
6067
6102
|
border: 0;
|
|
6068
6103
|
background: transparent;
|
|
6069
|
-
color: var(--
|
|
6104
|
+
color: var(--tplane-chat-text-muted);
|
|
6070
6105
|
border-radius: 4px;
|
|
6071
6106
|
cursor: pointer;
|
|
6072
6107
|
opacity: 0;
|
|
@@ -6080,35 +6115,35 @@ const CHAT_PROJECT_LIST_STYLES = `
|
|
|
6080
6115
|
opacity: 1;
|
|
6081
6116
|
}
|
|
6082
6117
|
.chat-project-list__kebab:hover {
|
|
6083
|
-
background: var(--
|
|
6084
|
-
color: var(--
|
|
6118
|
+
background: var(--tplane-chat-surface-alt);
|
|
6119
|
+
color: var(--tplane-chat-text);
|
|
6085
6120
|
}
|
|
6086
6121
|
.chat-project-list__kebab:focus-visible {
|
|
6087
6122
|
opacity: 1;
|
|
6088
|
-
outline: 2px solid var(--
|
|
6123
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
6089
6124
|
outline-offset: 2px;
|
|
6090
6125
|
}
|
|
6091
6126
|
.chat-project-list__edit {
|
|
6092
6127
|
flex: 1 1 auto;
|
|
6093
|
-
border: 1px solid var(--
|
|
6094
|
-
border-radius: var(--
|
|
6095
|
-
background: var(--
|
|
6096
|
-
color: var(--
|
|
6128
|
+
border: 1px solid var(--tplane-chat-primary);
|
|
6129
|
+
border-radius: var(--tplane-chat-radius-button);
|
|
6130
|
+
background: var(--tplane-chat-bg);
|
|
6131
|
+
color: var(--tplane-chat-text);
|
|
6097
6132
|
font: inherit;
|
|
6098
|
-
font-size: var(--
|
|
6133
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
6099
6134
|
padding: 6px 10px;
|
|
6100
6135
|
min-height: 32px;
|
|
6101
6136
|
outline: none;
|
|
6102
6137
|
box-sizing: border-box;
|
|
6103
6138
|
}
|
|
6104
6139
|
.chat-project-list__new {
|
|
6105
|
-
background: var(--
|
|
6106
|
-
color: var(--
|
|
6140
|
+
background: var(--tplane-chat-surface-alt);
|
|
6141
|
+
color: var(--tplane-chat-text);
|
|
6107
6142
|
border: 0;
|
|
6108
6143
|
padding: 10px 16px;
|
|
6109
6144
|
border-radius: 8px;
|
|
6110
6145
|
font-family: inherit;
|
|
6111
|
-
font-size: var(--
|
|
6146
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
6112
6147
|
font-weight: 400;
|
|
6113
6148
|
display: flex;
|
|
6114
6149
|
align-items: center;
|
|
@@ -6117,8 +6152,8 @@ const CHAT_PROJECT_LIST_STYLES = `
|
|
|
6117
6152
|
width: 100%;
|
|
6118
6153
|
}
|
|
6119
6154
|
.chat-project-list__new:hover {
|
|
6120
|
-
background: color-mix(in srgb, var(--
|
|
6121
|
-
color: var(--
|
|
6155
|
+
background: color-mix(in srgb, var(--tplane-chat-text) 8%, var(--tplane-chat-surface-alt));
|
|
6156
|
+
color: var(--tplane-chat-text);
|
|
6122
6157
|
}
|
|
6123
6158
|
`;
|
|
6124
6159
|
|
|
@@ -6358,7 +6393,7 @@ class ChatProjectListComponent {
|
|
|
6358
6393
|
(confirmed)="performDelete()"
|
|
6359
6394
|
(cancelled)="confirmDeleteId.set(null)"
|
|
6360
6395
|
/>
|
|
6361
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
6396
|
+
`, 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
6397
|
}
|
|
6363
6398
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatProjectListComponent, decorators: [{
|
|
6364
6399
|
type: Component,
|
|
@@ -6439,7 +6474,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
6439
6474
|
(confirmed)="performDelete()"
|
|
6440
6475
|
(cancelled)="confirmDeleteId.set(null)"
|
|
6441
6476
|
/>
|
|
6442
|
-
`, styles: [":host{font-family:var(--
|
|
6477
|
+
`, 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
6478
|
}], 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
6479
|
|
|
6445
6480
|
// SPDX-License-Identifier: MIT
|
|
@@ -6457,7 +6492,7 @@ class ChatGenuiSkeletonComponent {
|
|
|
6457
6492
|
<div class="chat-genui-skeleton__row"></div>
|
|
6458
6493
|
</div>
|
|
6459
6494
|
</div>
|
|
6460
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
6495
|
+
`, 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
6496
|
}
|
|
6462
6497
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatGenuiSkeletonComponent, decorators: [{
|
|
6463
6498
|
type: Component,
|
|
@@ -6473,7 +6508,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
6473
6508
|
<div class="chat-genui-skeleton__row"></div>
|
|
6474
6509
|
</div>
|
|
6475
6510
|
</div>
|
|
6476
|
-
`, styles: [":host{font-family:var(--
|
|
6511
|
+
`, 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
6512
|
}] });
|
|
6478
6513
|
|
|
6479
6514
|
// SPDX-License-Identifier: MIT
|
|
@@ -6527,17 +6562,17 @@ const CHAT_WELCOME_STYLES = `
|
|
|
6527
6562
|
justify-content: center;
|
|
6528
6563
|
width: 100%;
|
|
6529
6564
|
min-height: 0;
|
|
6530
|
-
padding: var(--
|
|
6565
|
+
padding: var(--tplane-chat-welcome-padding, 24px);
|
|
6531
6566
|
box-sizing: border-box;
|
|
6532
|
-
animation:
|
|
6567
|
+
animation: tplane-chat-welcome-mount 200ms ease-out both;
|
|
6533
6568
|
}
|
|
6534
6569
|
.chat-welcome__inner {
|
|
6535
6570
|
display: flex;
|
|
6536
6571
|
flex-direction: column;
|
|
6537
6572
|
align-items: center;
|
|
6538
|
-
gap: var(--
|
|
6573
|
+
gap: var(--tplane-chat-welcome-gap, 1.25rem);
|
|
6539
6574
|
width: 100%;
|
|
6540
|
-
max-width: var(--
|
|
6575
|
+
max-width: var(--tplane-chat-welcome-max-width, 36rem);
|
|
6541
6576
|
text-align: center;
|
|
6542
6577
|
}
|
|
6543
6578
|
.chat-welcome__beacon {
|
|
@@ -6546,17 +6581,17 @@ const CHAT_WELCOME_STYLES = `
|
|
|
6546
6581
|
height: 14px;
|
|
6547
6582
|
border-radius: 50%;
|
|
6548
6583
|
background: radial-gradient(circle at 30% 30%,
|
|
6549
|
-
var(--
|
|
6550
|
-
var(--
|
|
6584
|
+
var(--tplane-chat-text) 0%,
|
|
6585
|
+
var(--tplane-chat-text-muted) 70%,
|
|
6551
6586
|
transparent 100%);
|
|
6552
|
-
animation:
|
|
6587
|
+
animation: tplane-chat-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
6553
6588
|
margin-bottom: 8px;
|
|
6554
6589
|
}
|
|
6555
6590
|
.chat-welcome__title {
|
|
6556
6591
|
margin: 0;
|
|
6557
6592
|
font-size: 1.25rem;
|
|
6558
6593
|
font-weight: 500;
|
|
6559
|
-
color: var(--
|
|
6594
|
+
color: var(--tplane-chat-text);
|
|
6560
6595
|
line-height: 1.3;
|
|
6561
6596
|
}
|
|
6562
6597
|
@media (min-width: 768px) {
|
|
@@ -6594,23 +6629,23 @@ const CHAT_WELCOME_SUGGESTION_STYLES = `
|
|
|
6594
6629
|
align-items: center;
|
|
6595
6630
|
gap: 0.5rem;
|
|
6596
6631
|
padding: 10px 16px;
|
|
6597
|
-
background: var(--
|
|
6598
|
-
border: 1px solid var(--
|
|
6632
|
+
background: var(--tplane-chat-surface);
|
|
6633
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
6599
6634
|
border-radius: 9999px;
|
|
6600
|
-
color: var(--
|
|
6635
|
+
color: var(--tplane-chat-text);
|
|
6601
6636
|
font-family: inherit;
|
|
6602
|
-
font-size: var(--
|
|
6637
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
6603
6638
|
text-align: center;
|
|
6604
6639
|
cursor: pointer;
|
|
6605
6640
|
transition: background 150ms ease, border-color 150ms ease, transform 120ms ease;
|
|
6606
6641
|
}
|
|
6607
6642
|
.chat-welcome-suggestion:hover {
|
|
6608
|
-
background: var(--
|
|
6609
|
-
border-color: var(--
|
|
6643
|
+
background: var(--tplane-chat-surface-alt);
|
|
6644
|
+
border-color: var(--tplane-chat-text-muted);
|
|
6610
6645
|
}
|
|
6611
6646
|
.chat-welcome-suggestion:active { transform: scale(0.98); }
|
|
6612
6647
|
.chat-welcome-suggestion:focus-visible {
|
|
6613
|
-
outline: 2px solid var(--
|
|
6648
|
+
outline: 2px solid var(--tplane-chat-text-muted);
|
|
6614
6649
|
outline-offset: 2px;
|
|
6615
6650
|
}
|
|
6616
6651
|
.chat-welcome-suggestion__label { white-space: nowrap; }
|
|
@@ -6629,9 +6664,9 @@ const CHAT_WELCOME_SUGGESTION_STYLES = `
|
|
|
6629
6664
|
* [chatWelcomeSuggestions] — projects suggestion rows below the input
|
|
6630
6665
|
*
|
|
6631
6666
|
* Host CSS variables (override on :host or any ancestor):
|
|
6632
|
-
* --
|
|
6633
|
-
* --
|
|
6634
|
-
* --
|
|
6667
|
+
* --tplane-chat-welcome-max-width default 36rem
|
|
6668
|
+
* --tplane-chat-welcome-gap default 1.25rem
|
|
6669
|
+
* --tplane-chat-welcome-padding default 24px
|
|
6635
6670
|
*/
|
|
6636
6671
|
class ChatWelcomeComponent {
|
|
6637
6672
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatWelcomeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -6646,7 +6681,7 @@ class ChatWelcomeComponent {
|
|
|
6646
6681
|
<ng-content select="[chatWelcomeSuggestions]" />
|
|
6647
6682
|
</div>
|
|
6648
6683
|
</div>
|
|
6649
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
6684
|
+
`, 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
6685
|
}
|
|
6651
6686
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatWelcomeComponent, decorators: [{
|
|
6652
6687
|
type: Component,
|
|
@@ -6661,7 +6696,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
6661
6696
|
<ng-content select="[chatWelcomeSuggestions]" />
|
|
6662
6697
|
</div>
|
|
6663
6698
|
</div>
|
|
6664
|
-
`, styles: [":host{font-family:var(--
|
|
6699
|
+
`, 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
6700
|
}] });
|
|
6666
6701
|
|
|
6667
6702
|
// SPDX-License-Identifier: MIT
|
|
@@ -6684,7 +6719,7 @@ class ChatWelcomeSuggestionComponent {
|
|
|
6684
6719
|
<span class="chat-welcome-suggestion__label">{{ label() }}</span>
|
|
6685
6720
|
<span class="chat-welcome-suggestion__chevron" aria-hidden="true">›</span>
|
|
6686
6721
|
</button>
|
|
6687
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
6722
|
+
`, 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
6723
|
}
|
|
6689
6724
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatWelcomeSuggestionComponent, decorators: [{
|
|
6690
6725
|
type: Component,
|
|
@@ -6700,9 +6735,286 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
6700
6735
|
<span class="chat-welcome-suggestion__label">{{ label() }}</span>
|
|
6701
6736
|
<span class="chat-welcome-suggestion__chevron" aria-hidden="true">›</span>
|
|
6702
6737
|
</button>
|
|
6703
|
-
`, styles: [":host{font-family:var(--
|
|
6738
|
+
`, 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
6739
|
}], 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
6740
|
|
|
6741
|
+
// libs/chat/src/lib/primitives/overlay/overlay-container.ts
|
|
6742
|
+
// SPDX-License-Identifier: MIT
|
|
6743
|
+
const CONTAINER_CLASS = 'chat-overlay-container';
|
|
6744
|
+
const STYLE_ID = 'chat-overlay-structure';
|
|
6745
|
+
// Structural CSS, injected once into <head> (same pattern as ROOT_TOKEN_STYLES
|
|
6746
|
+
// in chat-tokens.ts) so consumers need not import any stylesheet.
|
|
6747
|
+
const STRUCTURE_CSS = `
|
|
6748
|
+
.${CONTAINER_CLASS} {
|
|
6749
|
+
position: fixed;
|
|
6750
|
+
inset: 0;
|
|
6751
|
+
z-index: 1000;
|
|
6752
|
+
pointer-events: none;
|
|
6753
|
+
}
|
|
6754
|
+
.chat-overlay-pane {
|
|
6755
|
+
position: absolute;
|
|
6756
|
+
pointer-events: auto;
|
|
6757
|
+
}
|
|
6758
|
+
`;
|
|
6759
|
+
/** Returns the single shared overlay container appended to <body>, creating it
|
|
6760
|
+
* (and injecting structural CSS) on first call. */
|
|
6761
|
+
function getOverlayContainer(doc) {
|
|
6762
|
+
const existing = doc.querySelector('.' + CONTAINER_CLASS);
|
|
6763
|
+
if (existing)
|
|
6764
|
+
return existing;
|
|
6765
|
+
if (!doc.getElementById(STYLE_ID)) {
|
|
6766
|
+
const style = doc.createElement('style');
|
|
6767
|
+
style.id = STYLE_ID;
|
|
6768
|
+
style.textContent = STRUCTURE_CSS;
|
|
6769
|
+
doc.head.appendChild(style);
|
|
6770
|
+
}
|
|
6771
|
+
const container = doc.createElement('div');
|
|
6772
|
+
container.className = CONTAINER_CLASS;
|
|
6773
|
+
doc.body.appendChild(container);
|
|
6774
|
+
return container;
|
|
6775
|
+
}
|
|
6776
|
+
|
|
6777
|
+
// libs/chat/src/lib/primitives/overlay/connected-position.ts
|
|
6778
|
+
// SPDX-License-Identifier: MIT
|
|
6779
|
+
//
|
|
6780
|
+
// Minimal port of CDK's FlexibleConnectedPositionStrategy fit logic
|
|
6781
|
+
// (~/repos/components/src/cdk/overlay/position/flexible-connected-position-strategy.ts):
|
|
6782
|
+
// _getOriginPoint + _getOverlayPoint + _getOverlayFit + _pushOverlayOnScreen.
|
|
6783
|
+
// Omits flexible-dimensions, grow-after-open, RTL, and virtual-keyboard handling.
|
|
6784
|
+
function originPoint(origin, pos) {
|
|
6785
|
+
const x = pos.originX === 'center' ? origin.left + origin.width / 2 : pos.originX === 'start' ? origin.left : origin.right;
|
|
6786
|
+
const y = pos.originY === 'center' ? origin.top + origin.height / 2 : pos.originY === 'top' ? origin.top : origin.bottom;
|
|
6787
|
+
return { x, y };
|
|
6788
|
+
}
|
|
6789
|
+
function overlayPoint(origin, size, pos) {
|
|
6790
|
+
let x = origin.x;
|
|
6791
|
+
if (pos.overlayX === 'center')
|
|
6792
|
+
x -= size.width / 2;
|
|
6793
|
+
else if (pos.overlayX === 'end')
|
|
6794
|
+
x -= size.width;
|
|
6795
|
+
let y = origin.y;
|
|
6796
|
+
if (pos.overlayY === 'center')
|
|
6797
|
+
y -= size.height / 2;
|
|
6798
|
+
else if (pos.overlayY === 'bottom')
|
|
6799
|
+
y -= size.height;
|
|
6800
|
+
return { x: x + (pos.offsetX ?? 0), y: y + (pos.offsetY ?? 0) };
|
|
6801
|
+
}
|
|
6802
|
+
function fitArea(point, size, viewport) {
|
|
6803
|
+
const left = point.x;
|
|
6804
|
+
const right = point.x + size.width;
|
|
6805
|
+
const top = point.y;
|
|
6806
|
+
const bottom = point.y + size.height;
|
|
6807
|
+
const visibleW = Math.max(0, Math.min(right, viewport.right) - Math.max(left, viewport.left));
|
|
6808
|
+
const visibleH = Math.max(0, Math.min(bottom, viewport.bottom) - Math.max(top, viewport.top));
|
|
6809
|
+
const fits = left >= viewport.left && right <= viewport.right && top >= viewport.top && bottom <= viewport.bottom;
|
|
6810
|
+
return { area: visibleW * visibleH, fits };
|
|
6811
|
+
}
|
|
6812
|
+
function pushOnScreen(point, size, viewport) {
|
|
6813
|
+
const maxLeft = viewport.right - size.width;
|
|
6814
|
+
const maxTop = viewport.bottom - size.height;
|
|
6815
|
+
return {
|
|
6816
|
+
x: Math.max(viewport.left, Math.min(point.x, maxLeft)),
|
|
6817
|
+
y: Math.max(viewport.top, Math.min(point.y, maxTop)),
|
|
6818
|
+
};
|
|
6819
|
+
}
|
|
6820
|
+
/** Sensible fallback when no positions are supplied: below the origin, start-aligned. */
|
|
6821
|
+
const DEFAULT_POSITION = { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' };
|
|
6822
|
+
function computeConnectedPosition(args) {
|
|
6823
|
+
const { originRect, overlaySize, viewport, positions } = args;
|
|
6824
|
+
// An empty positions array (the directive's input default) must still anchor to
|
|
6825
|
+
// the trigger rather than crash on best! / render at 0,0.
|
|
6826
|
+
const list = positions.length ? positions : [DEFAULT_POSITION];
|
|
6827
|
+
let best = null;
|
|
6828
|
+
for (const pos of list) {
|
|
6829
|
+
const point = overlayPoint(originPoint(originRect, pos), overlaySize, pos);
|
|
6830
|
+
const { area, fits } = fitArea(point, overlaySize, viewport);
|
|
6831
|
+
if (fits) {
|
|
6832
|
+
return { top: point.y, left: point.x, position: pos };
|
|
6833
|
+
}
|
|
6834
|
+
if (!best || area > best.area)
|
|
6835
|
+
best = { point, pos, area };
|
|
6836
|
+
}
|
|
6837
|
+
const pushed = pushOnScreen(best.point, overlaySize, viewport);
|
|
6838
|
+
return { top: pushed.y, left: pushed.x, position: best.pos };
|
|
6839
|
+
}
|
|
6840
|
+
function narrowViewport(win, margin) {
|
|
6841
|
+
return {
|
|
6842
|
+
left: margin,
|
|
6843
|
+
top: margin,
|
|
6844
|
+
right: win.innerWidth - margin,
|
|
6845
|
+
bottom: win.innerHeight - margin,
|
|
6846
|
+
width: win.innerWidth - 2 * margin,
|
|
6847
|
+
height: win.innerHeight - 2 * margin,
|
|
6848
|
+
};
|
|
6849
|
+
}
|
|
6850
|
+
|
|
6851
|
+
// libs/chat/src/lib/primitives/overlay/connected-overlay.directive.ts
|
|
6852
|
+
// SPDX-License-Identifier: MIT
|
|
6853
|
+
/* eslint-disable @angular-eslint/no-input-rename, @angular-eslint/no-output-rename --
|
|
6854
|
+
* The `chatOverlay*` binding aliases ARE the intended public API: they namespace
|
|
6855
|
+
* the directive's inputs/outputs under the `chatOverlay` prefix (mirroring Angular
|
|
6856
|
+
* CDK's `cdkConnectedOverlay*` convention) rather than exposing bare names like
|
|
6857
|
+
* `open`/`positions` on an `<ng-template>`. The internal property names stay
|
|
6858
|
+
* concise, so aliasing here is deliberate, not a rename to avoid. */
|
|
6859
|
+
/** Marks the anchor element a connected overlay positions against. */
|
|
6860
|
+
class ChatOverlayOriginDirective {
|
|
6861
|
+
elementRef = inject(ElementRef);
|
|
6862
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatOverlayOriginDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6863
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.6", type: ChatOverlayOriginDirective, isStandalone: true, selector: "[chatOverlayOrigin]", exportAs: ["chatOverlayOrigin"], ngImport: i0 });
|
|
6864
|
+
}
|
|
6865
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatOverlayOriginDirective, decorators: [{
|
|
6866
|
+
type: Directive,
|
|
6867
|
+
args: [{
|
|
6868
|
+
selector: '[chatOverlayOrigin]',
|
|
6869
|
+
standalone: true,
|
|
6870
|
+
exportAs: 'chatOverlayOrigin',
|
|
6871
|
+
}]
|
|
6872
|
+
}] });
|
|
6873
|
+
const VIEWPORT_MARGIN = 8;
|
|
6874
|
+
/**
|
|
6875
|
+
* Applied to an `<ng-template>`. When `chatOverlayOpen` is true, the template
|
|
6876
|
+
* content is portaled into the shared body-level overlay container and
|
|
6877
|
+
* positioned connected to `chatOverlayOrigin`, repositioning live on
|
|
6878
|
+
* scroll/resize. Closes on outside mousedown (via the `chatOverlayOutsideClick`
|
|
6879
|
+
* output) and Tab; returns focus to the origin when focus was inside the pane.
|
|
6880
|
+
*
|
|
6881
|
+
* NOTE: the directive does not own the open state — it only emits. To fully
|
|
6882
|
+
* close the overlay, consumers MUST handle BOTH `(chatOverlayOutsideClick)` and
|
|
6883
|
+
* `(chatOverlayDetach)`. Tab-close (and Escape, when the consumer routes it)
|
|
6884
|
+
* surface through `chatOverlayDetach`, so wiring only `chatOverlayOutsideClick`
|
|
6885
|
+
* leaves the overlay stuck open on Tab.
|
|
6886
|
+
*/
|
|
6887
|
+
class ChatConnectedOverlayDirective {
|
|
6888
|
+
origin = input.required({ ...(ngDevMode ? { debugName: "origin" } : {}), alias: 'chatOverlayOrigin' });
|
|
6889
|
+
open = input(false, { ...(ngDevMode ? { debugName: "open" } : {}), alias: 'chatOverlayOpen' });
|
|
6890
|
+
positions = input([], { ...(ngDevMode ? { debugName: "positions" } : {}), alias: 'chatOverlayPositions' });
|
|
6891
|
+
panelClass = input('', { ...(ngDevMode ? { debugName: "panelClass" } : {}), alias: 'chatOverlayPanelClass' });
|
|
6892
|
+
/** Emits the pane element once attached (consumers focus content from it). */
|
|
6893
|
+
attached = output({ alias: 'chatOverlayAttached' });
|
|
6894
|
+
outsideClick = output({ alias: 'chatOverlayOutsideClick' });
|
|
6895
|
+
detached = output({ alias: 'chatOverlayDetach' });
|
|
6896
|
+
templateRef = inject((TemplateRef));
|
|
6897
|
+
viewContainerRef = inject(ViewContainerRef);
|
|
6898
|
+
document = inject(DOCUMENT);
|
|
6899
|
+
pane = null;
|
|
6900
|
+
viewRef = null;
|
|
6901
|
+
resizeObs = null;
|
|
6902
|
+
rafId = 0;
|
|
6903
|
+
previouslyFocused = null;
|
|
6904
|
+
onScrollOrResize = () => this.scheduleReposition();
|
|
6905
|
+
onDocMouseDown = (e) => {
|
|
6906
|
+
if (!this.pane)
|
|
6907
|
+
return;
|
|
6908
|
+
const path = e.composedPath();
|
|
6909
|
+
if (path.includes(this.pane) || path.includes(this.origin().elementRef.nativeElement))
|
|
6910
|
+
return;
|
|
6911
|
+
this.outsideClick.emit(e);
|
|
6912
|
+
};
|
|
6913
|
+
onKeydown = (e) => {
|
|
6914
|
+
if (e.key !== 'Tab' || !this.pane)
|
|
6915
|
+
return;
|
|
6916
|
+
const active = this.document.activeElement;
|
|
6917
|
+
if (this.pane.contains(active) || active === this.origin().elementRef.nativeElement) {
|
|
6918
|
+
this.detached.emit();
|
|
6919
|
+
}
|
|
6920
|
+
};
|
|
6921
|
+
constructor() {
|
|
6922
|
+
effect(() => {
|
|
6923
|
+
if (this.open())
|
|
6924
|
+
this.attach();
|
|
6925
|
+
else
|
|
6926
|
+
this.dispose();
|
|
6927
|
+
});
|
|
6928
|
+
inject(DestroyRef).onDestroy(() => this.dispose());
|
|
6929
|
+
}
|
|
6930
|
+
attach() {
|
|
6931
|
+
if (this.pane)
|
|
6932
|
+
return;
|
|
6933
|
+
const win = this.document.defaultView;
|
|
6934
|
+
if (!win)
|
|
6935
|
+
return; // SSR / detached document
|
|
6936
|
+
this.previouslyFocused = this.document.activeElement;
|
|
6937
|
+
const pane = this.document.createElement('div');
|
|
6938
|
+
pane.className = 'chat-overlay-pane';
|
|
6939
|
+
for (const c of this.normalizePanelClass())
|
|
6940
|
+
pane.classList.add(c);
|
|
6941
|
+
getOverlayContainer(this.document).appendChild(pane);
|
|
6942
|
+
this.viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef);
|
|
6943
|
+
this.viewRef.detectChanges();
|
|
6944
|
+
for (const node of this.viewRef.rootNodes)
|
|
6945
|
+
pane.appendChild(node);
|
|
6946
|
+
this.pane = pane;
|
|
6947
|
+
this.reposition();
|
|
6948
|
+
win.addEventListener('scroll', this.onScrollOrResize, { capture: true, passive: true });
|
|
6949
|
+
win.addEventListener('resize', this.onScrollOrResize, { passive: true });
|
|
6950
|
+
this.document.addEventListener('mousedown', this.onDocMouseDown, true);
|
|
6951
|
+
this.document.addEventListener('keydown', this.onKeydown, true);
|
|
6952
|
+
if (typeof win.ResizeObserver === 'function') {
|
|
6953
|
+
this.resizeObs = new win.ResizeObserver(() => this.scheduleReposition());
|
|
6954
|
+
this.resizeObs.observe(this.origin().elementRef.nativeElement);
|
|
6955
|
+
this.resizeObs.observe(pane);
|
|
6956
|
+
}
|
|
6957
|
+
this.attached.emit(pane);
|
|
6958
|
+
}
|
|
6959
|
+
scheduleReposition() {
|
|
6960
|
+
const win = this.document.defaultView;
|
|
6961
|
+
if (!win || !this.pane)
|
|
6962
|
+
return;
|
|
6963
|
+
if (this.rafId)
|
|
6964
|
+
win.cancelAnimationFrame(this.rafId);
|
|
6965
|
+
this.rafId = win.requestAnimationFrame(() => this.reposition());
|
|
6966
|
+
}
|
|
6967
|
+
reposition() {
|
|
6968
|
+
const win = this.document.defaultView;
|
|
6969
|
+
if (!win || !this.pane)
|
|
6970
|
+
return;
|
|
6971
|
+
const r = this.pane.getBoundingClientRect();
|
|
6972
|
+
const result = computeConnectedPosition({
|
|
6973
|
+
originRect: this.origin().elementRef.nativeElement.getBoundingClientRect(),
|
|
6974
|
+
overlaySize: { width: r.width, height: r.height },
|
|
6975
|
+
viewport: narrowViewport(win, VIEWPORT_MARGIN),
|
|
6976
|
+
positions: this.positions(),
|
|
6977
|
+
});
|
|
6978
|
+
this.pane.style.top = `${Math.round(result.top)}px`;
|
|
6979
|
+
this.pane.style.left = `${Math.round(result.left)}px`;
|
|
6980
|
+
}
|
|
6981
|
+
dispose() {
|
|
6982
|
+
const win = this.document.defaultView;
|
|
6983
|
+
if (this.rafId && win)
|
|
6984
|
+
win.cancelAnimationFrame(this.rafId);
|
|
6985
|
+
this.rafId = 0;
|
|
6986
|
+
if (win) {
|
|
6987
|
+
win.removeEventListener('scroll', this.onScrollOrResize, { capture: true });
|
|
6988
|
+
win.removeEventListener('resize', this.onScrollOrResize);
|
|
6989
|
+
}
|
|
6990
|
+
this.document.removeEventListener('mousedown', this.onDocMouseDown, true);
|
|
6991
|
+
this.document.removeEventListener('keydown', this.onKeydown, true);
|
|
6992
|
+
this.resizeObs?.disconnect();
|
|
6993
|
+
this.resizeObs = null;
|
|
6994
|
+
const focusWasInPane = !!this.pane && this.pane.contains(this.document.activeElement);
|
|
6995
|
+
this.viewRef?.destroy();
|
|
6996
|
+
this.viewRef = null;
|
|
6997
|
+
this.pane?.remove();
|
|
6998
|
+
this.pane = null;
|
|
6999
|
+
if (focusWasInPane && this.previouslyFocused)
|
|
7000
|
+
this.previouslyFocused.focus();
|
|
7001
|
+
this.previouslyFocused = null;
|
|
7002
|
+
}
|
|
7003
|
+
normalizePanelClass() {
|
|
7004
|
+
const pc = this.panelClass();
|
|
7005
|
+
return Array.isArray(pc) ? pc : pc ? [pc] : [];
|
|
7006
|
+
}
|
|
7007
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatConnectedOverlayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7008
|
+
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 });
|
|
7009
|
+
}
|
|
7010
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatConnectedOverlayDirective, decorators: [{
|
|
7011
|
+
type: Directive,
|
|
7012
|
+
args: [{
|
|
7013
|
+
selector: '[chatConnectedOverlay]',
|
|
7014
|
+
standalone: true,
|
|
7015
|
+
}]
|
|
7016
|
+
}], 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"] }] } });
|
|
7017
|
+
|
|
6706
7018
|
// libs/chat/src/lib/styles/chat-select.styles.ts
|
|
6707
7019
|
// SPDX-License-Identifier: MIT
|
|
6708
7020
|
const CHAT_SELECT_STYLES = `
|
|
@@ -6716,9 +7028,9 @@ const CHAT_SELECT_STYLES = `
|
|
|
6716
7028
|
border: 0;
|
|
6717
7029
|
border-radius: 9999px;
|
|
6718
7030
|
background: transparent;
|
|
6719
|
-
color: var(--
|
|
7031
|
+
color: var(--tplane-chat-text-muted);
|
|
6720
7032
|
font: inherit;
|
|
6721
|
-
font-size: var(--
|
|
7033
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
6722
7034
|
display: inline-flex;
|
|
6723
7035
|
align-items: center;
|
|
6724
7036
|
gap: 4px;
|
|
@@ -6726,8 +7038,8 @@ const CHAT_SELECT_STYLES = `
|
|
|
6726
7038
|
transition: background 120ms ease, color 120ms ease;
|
|
6727
7039
|
}
|
|
6728
7040
|
.chat-select__trigger:hover:not(:disabled) {
|
|
6729
|
-
background: var(--
|
|
6730
|
-
color: var(--
|
|
7041
|
+
background: var(--tplane-chat-surface-alt);
|
|
7042
|
+
color: var(--tplane-chat-text);
|
|
6731
7043
|
}
|
|
6732
7044
|
.chat-select__trigger:disabled {
|
|
6733
7045
|
opacity: 0.5;
|
|
@@ -6742,19 +7054,21 @@ const CHAT_SELECT_STYLES = `
|
|
|
6742
7054
|
.chat-select__trigger.is-open .chat-select__chevron {
|
|
6743
7055
|
transform: rotate(180deg);
|
|
6744
7056
|
}
|
|
7057
|
+
/* The menu is rendered inside the chat connected-overlay pane (a body-level
|
|
7058
|
+
portal), so it no longer positions itself — the overlay primitive places
|
|
7059
|
+
the pane. It keeps only its own box styling here. Min/max width can be
|
|
7060
|
+
overridden per consumer via the overlay panelClass (see chat-select
|
|
7061
|
+
panelClass input). */
|
|
6745
7062
|
.chat-select__menu {
|
|
6746
|
-
position: absolute;
|
|
6747
|
-
bottom: calc(100% + 8px);
|
|
6748
|
-
right: 0;
|
|
6749
7063
|
min-width: 180px;
|
|
6750
7064
|
max-height: 320px;
|
|
6751
7065
|
overflow-y: auto;
|
|
6752
|
-
background: var(--
|
|
6753
|
-
border: 1px solid var(--
|
|
7066
|
+
background: var(--tplane-chat-surface);
|
|
7067
|
+
border: 1px solid var(--tplane-chat-separator);
|
|
6754
7068
|
border-radius: 12px;
|
|
6755
|
-
box-shadow: var(--
|
|
7069
|
+
box-shadow: var(--tplane-chat-shadow-lg);
|
|
6756
7070
|
padding: 4px;
|
|
6757
|
-
|
|
7071
|
+
box-sizing: border-box;
|
|
6758
7072
|
}
|
|
6759
7073
|
.chat-select__option {
|
|
6760
7074
|
display: flex;
|
|
@@ -6767,24 +7081,24 @@ const CHAT_SELECT_STYLES = `
|
|
|
6767
7081
|
background: transparent;
|
|
6768
7082
|
padding: 8px 10px;
|
|
6769
7083
|
border-radius: 8px;
|
|
6770
|
-
color: var(--
|
|
7084
|
+
color: var(--tplane-chat-text);
|
|
6771
7085
|
font: inherit;
|
|
6772
|
-
font-size: var(--
|
|
7086
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
6773
7087
|
cursor: pointer;
|
|
6774
7088
|
}
|
|
6775
7089
|
.chat-select__option-desc {
|
|
6776
|
-
font-size: var(--
|
|
6777
|
-
color: var(--
|
|
7090
|
+
font-size: var(--tplane-chat-font-size-xs);
|
|
7091
|
+
color: var(--tplane-chat-text-muted);
|
|
6778
7092
|
line-height: 1.3;
|
|
6779
7093
|
white-space: normal;
|
|
6780
7094
|
}
|
|
6781
7095
|
.chat-select__option:hover:not(:disabled),
|
|
6782
7096
|
.chat-select__option:focus-visible {
|
|
6783
|
-
background: var(--
|
|
7097
|
+
background: var(--tplane-chat-surface-alt);
|
|
6784
7098
|
outline: none;
|
|
6785
7099
|
}
|
|
6786
7100
|
.chat-select__option.is-active {
|
|
6787
|
-
background: var(--
|
|
7101
|
+
background: var(--tplane-chat-surface-alt);
|
|
6788
7102
|
font-weight: 500;
|
|
6789
7103
|
}
|
|
6790
7104
|
.chat-select__option:disabled {
|
|
@@ -6795,16 +7109,16 @@ const CHAT_SELECT_STYLES = `
|
|
|
6795
7109
|
|
|
6796
7110
|
// libs/chat/src/lib/primitives/chat-select/chat-select.component.ts
|
|
6797
7111
|
// SPDX-License-Identifier: MIT
|
|
7112
|
+
// Unique listbox id per instance, for aria-controls (multiple selects per page).
|
|
7113
|
+
let nextChatSelectId = 0;
|
|
6798
7114
|
/**
|
|
6799
|
-
* Generic single-select dropdown.
|
|
6800
|
-
* (
|
|
7115
|
+
* Generic single-select dropdown. The menu renders through the chat
|
|
7116
|
+
* connected-overlay primitive (a body-level portal), so it is never clipped by
|
|
7117
|
+
* an ancestor's `overflow` and never trapped by an ancestor `transform`.
|
|
6801
7118
|
*
|
|
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
|
|
7119
|
+
* Inputs: options (required), value (two-way), placeholder, disabled, menuLabel,
|
|
7120
|
+
* panelClass (extra class(es) on the overlay pane — the menu is portaled, so
|
|
7121
|
+
* `::ng-deep chat-select .chat-select__menu` no longer reaches it).
|
|
6808
7122
|
*/
|
|
6809
7123
|
class ChatSelectComponent {
|
|
6810
7124
|
options = input.required(...(ngDevMode ? [{ debugName: "options" }] : []));
|
|
@@ -6812,43 +7126,34 @@ class ChatSelectComponent {
|
|
|
6812
7126
|
placeholder = input('Select', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
6813
7127
|
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
6814
7128
|
menuLabel = input(undefined, ...(ngDevMode ? [{ debugName: "menuLabel" }] : []));
|
|
7129
|
+
panelClass = input('', ...(ngDevMode ? [{ debugName: "panelClass" }] : []));
|
|
6815
7130
|
open = signal(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
|
|
7131
|
+
menuId = `chat-select-menu-${nextChatSelectId++}`;
|
|
7132
|
+
// Above-right preferred (input pill sits at the bottom), then below, then the
|
|
7133
|
+
// left-aligned variants. The positioner flips/clamps to keep it in view.
|
|
7134
|
+
overlayPositions = [
|
|
7135
|
+
{ originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -8 },
|
|
7136
|
+
{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 8 },
|
|
7137
|
+
{ originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -8 },
|
|
7138
|
+
{ originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 8 },
|
|
7139
|
+
];
|
|
7140
|
+
panelClasses = computed(() => {
|
|
7141
|
+
const extra = this.panelClass();
|
|
7142
|
+
const list = Array.isArray(extra) ? extra : extra ? [extra] : [];
|
|
7143
|
+
return ['chat-select__overlay', ...list];
|
|
7144
|
+
}, ...(ngDevMode ? [{ debugName: "panelClasses" }] : []));
|
|
6816
7145
|
currentLabel = computed(() => {
|
|
6817
7146
|
const v = this.value();
|
|
6818
|
-
|
|
6819
|
-
return match?.label ?? this.placeholder();
|
|
7147
|
+
return this.options().find((o) => o.value === v)?.label ?? this.placeholder();
|
|
6820
7148
|
}, ...(ngDevMode ? [{ debugName: "currentLabel" }] : []));
|
|
6821
7149
|
hostEl = inject(ElementRef).nativeElement;
|
|
6822
7150
|
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
|
-
});
|
|
7151
|
+
// The overlay primitive emits the pane element on attach; options live there
|
|
7152
|
+
// (portaled out of the host), so option queries go through it.
|
|
7153
|
+
menuPane = null;
|
|
7154
|
+
onAttached(pane) {
|
|
7155
|
+
this.menuPane = pane;
|
|
7156
|
+
this.focusOption(0);
|
|
6852
7157
|
}
|
|
6853
7158
|
toggle() {
|
|
6854
7159
|
if (this.disabled())
|
|
@@ -6864,10 +7169,6 @@ class ChatSelectComponent {
|
|
|
6864
7169
|
onTriggerKeydown(e) {
|
|
6865
7170
|
if (this.disabled())
|
|
6866
7171
|
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
7172
|
if (e.key === 'Escape' && this.open()) {
|
|
6872
7173
|
e.preventDefault();
|
|
6873
7174
|
this.open.set(false);
|
|
@@ -6876,14 +7177,14 @@ class ChatSelectComponent {
|
|
|
6876
7177
|
if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {
|
|
6877
7178
|
e.preventDefault();
|
|
6878
7179
|
this.open.set(true);
|
|
6879
|
-
|
|
7180
|
+
// focus happens in onAttached once the pane is live
|
|
6880
7181
|
}
|
|
6881
7182
|
}
|
|
6882
7183
|
onMenuKeydown(e) {
|
|
6883
7184
|
if (e.key === 'Escape') {
|
|
6884
7185
|
e.preventDefault();
|
|
6885
7186
|
this.open.set(false);
|
|
6886
|
-
this.
|
|
7187
|
+
this.queryTrigger()?.focus();
|
|
6887
7188
|
return;
|
|
6888
7189
|
}
|
|
6889
7190
|
if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
|
|
@@ -6900,11 +7201,7 @@ class ChatSelectComponent {
|
|
|
6900
7201
|
}
|
|
6901
7202
|
}
|
|
6902
7203
|
focusOption(index) {
|
|
6903
|
-
|
|
6904
|
-
opts[index]?.focus();
|
|
6905
|
-
}
|
|
6906
|
-
focusTrigger() {
|
|
6907
|
-
this.queryTrigger()?.focus();
|
|
7204
|
+
this.queryOptions()[index]?.focus();
|
|
6908
7205
|
}
|
|
6909
7206
|
moveFocus(dir) {
|
|
6910
7207
|
const opts = this.queryOptions().filter((b) => !b.disabled);
|
|
@@ -6912,24 +7209,27 @@ class ChatSelectComponent {
|
|
|
6912
7209
|
return;
|
|
6913
7210
|
const active = this.document.activeElement;
|
|
6914
7211
|
const idx = active ? opts.indexOf(active) : -1;
|
|
6915
|
-
|
|
6916
|
-
opts[next]?.focus();
|
|
7212
|
+
opts[(idx + dir + opts.length) % opts.length]?.focus();
|
|
6917
7213
|
}
|
|
6918
7214
|
queryOptions() {
|
|
6919
|
-
|
|
7215
|
+
const root = this.menuPane;
|
|
7216
|
+
return root ? Array.from(root.querySelectorAll('.chat-select__option')) : [];
|
|
6920
7217
|
}
|
|
6921
7218
|
queryTrigger() {
|
|
6922
7219
|
return this.hostEl.querySelector('.chat-select__trigger');
|
|
6923
7220
|
}
|
|
6924
7221
|
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: `
|
|
7222
|
+
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
7223
|
<button
|
|
6927
7224
|
type="button"
|
|
6928
7225
|
class="chat-select__trigger"
|
|
7226
|
+
chatOverlayOrigin
|
|
7227
|
+
#origin="chatOverlayOrigin"
|
|
6929
7228
|
[class.is-open]="open()"
|
|
6930
7229
|
[disabled]="disabled()"
|
|
6931
7230
|
[attr.aria-haspopup]="'listbox'"
|
|
6932
7231
|
[attr.aria-expanded]="open()"
|
|
7232
|
+
[attr.aria-controls]="open() ? menuId : null"
|
|
6933
7233
|
(click)="toggle()"
|
|
6934
7234
|
(keydown)="onTriggerKeydown($event)"
|
|
6935
7235
|
>
|
|
@@ -6938,11 +7238,21 @@ class ChatSelectComponent {
|
|
|
6938
7238
|
<path d="M4 6l4 4 4-4" stroke="currentColor" fill="none" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
6939
7239
|
</svg>
|
|
6940
7240
|
</button>
|
|
6941
|
-
|
|
7241
|
+
<ng-template
|
|
7242
|
+
chatConnectedOverlay
|
|
7243
|
+
[chatOverlayOrigin]="origin"
|
|
7244
|
+
[chatOverlayOpen]="open()"
|
|
7245
|
+
[chatOverlayPositions]="overlayPositions"
|
|
7246
|
+
[chatOverlayPanelClass]="panelClasses()"
|
|
7247
|
+
(chatOverlayAttached)="onAttached($event)"
|
|
7248
|
+
(chatOverlayOutsideClick)="open.set(false)"
|
|
7249
|
+
(chatOverlayDetach)="open.set(false)"
|
|
7250
|
+
>
|
|
6942
7251
|
<div
|
|
6943
7252
|
class="chat-select__menu"
|
|
6944
7253
|
role="listbox"
|
|
6945
7254
|
tabindex="-1"
|
|
7255
|
+
[id]="menuId"
|
|
6946
7256
|
[attr.aria-label]="menuLabel() ?? placeholder()"
|
|
6947
7257
|
(keydown)="onMenuKeydown($event)"
|
|
6948
7258
|
>
|
|
@@ -6963,19 +7273,22 @@ class ChatSelectComponent {
|
|
|
6963
7273
|
</button>
|
|
6964
7274
|
}
|
|
6965
7275
|
</div>
|
|
6966
|
-
|
|
6967
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
7276
|
+
</ng-template>
|
|
7277
|
+
`, 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
7278
|
}
|
|
6969
7279
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSelectComponent, decorators: [{
|
|
6970
7280
|
type: Component,
|
|
6971
|
-
args: [{ selector: 'chat-select', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
7281
|
+
args: [{ selector: 'chat-select', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ChatConnectedOverlayDirective, ChatOverlayOriginDirective], template: `
|
|
6972
7282
|
<button
|
|
6973
7283
|
type="button"
|
|
6974
7284
|
class="chat-select__trigger"
|
|
7285
|
+
chatOverlayOrigin
|
|
7286
|
+
#origin="chatOverlayOrigin"
|
|
6975
7287
|
[class.is-open]="open()"
|
|
6976
7288
|
[disabled]="disabled()"
|
|
6977
7289
|
[attr.aria-haspopup]="'listbox'"
|
|
6978
7290
|
[attr.aria-expanded]="open()"
|
|
7291
|
+
[attr.aria-controls]="open() ? menuId : null"
|
|
6979
7292
|
(click)="toggle()"
|
|
6980
7293
|
(keydown)="onTriggerKeydown($event)"
|
|
6981
7294
|
>
|
|
@@ -6984,11 +7297,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
6984
7297
|
<path d="M4 6l4 4 4-4" stroke="currentColor" fill="none" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
|
|
6985
7298
|
</svg>
|
|
6986
7299
|
</button>
|
|
6987
|
-
|
|
7300
|
+
<ng-template
|
|
7301
|
+
chatConnectedOverlay
|
|
7302
|
+
[chatOverlayOrigin]="origin"
|
|
7303
|
+
[chatOverlayOpen]="open()"
|
|
7304
|
+
[chatOverlayPositions]="overlayPositions"
|
|
7305
|
+
[chatOverlayPanelClass]="panelClasses()"
|
|
7306
|
+
(chatOverlayAttached)="onAttached($event)"
|
|
7307
|
+
(chatOverlayOutsideClick)="open.set(false)"
|
|
7308
|
+
(chatOverlayDetach)="open.set(false)"
|
|
7309
|
+
>
|
|
6988
7310
|
<div
|
|
6989
7311
|
class="chat-select__menu"
|
|
6990
7312
|
role="listbox"
|
|
6991
7313
|
tabindex="-1"
|
|
7314
|
+
[id]="menuId"
|
|
6992
7315
|
[attr.aria-label]="menuLabel() ?? placeholder()"
|
|
6993
7316
|
(keydown)="onMenuKeydown($event)"
|
|
6994
7317
|
>
|
|
@@ -7009,9 +7332,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
7009
7332
|
</button>
|
|
7010
7333
|
}
|
|
7011
7334
|
</div>
|
|
7012
|
-
|
|
7013
|
-
`, styles: [":host{font-family:var(--
|
|
7014
|
-
}],
|
|
7335
|
+
</ng-template>
|
|
7336
|
+
`, 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"] }]
|
|
7337
|
+
}], 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
7338
|
|
|
7016
7339
|
// SPDX-License-Identifier: MIT
|
|
7017
7340
|
const PACKAGE_NAME = '@threadplane/chat';
|
|
@@ -7513,7 +7836,7 @@ class A2uiDefaultFallbackComponent {
|
|
|
7513
7836
|
<div class="a2ui-default-fallback__row"></div>
|
|
7514
7837
|
</div>
|
|
7515
7838
|
</div>
|
|
7516
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
7839
|
+
`, 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
7840
|
}
|
|
7518
7841
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: A2uiDefaultFallbackComponent, decorators: [{
|
|
7519
7842
|
type: Component,
|
|
@@ -7529,7 +7852,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
7529
7852
|
<div class="a2ui-default-fallback__row"></div>
|
|
7530
7853
|
</div>
|
|
7531
7854
|
</div>
|
|
7532
|
-
`, styles: [":host{font-family:var(--
|
|
7855
|
+
`, 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
7856
|
}] });
|
|
7534
7857
|
|
|
7535
7858
|
// SPDX-License-Identifier: MIT
|
|
@@ -8070,7 +8393,7 @@ function isTraceEnabled() {
|
|
|
8070
8393
|
function trace(...args) {
|
|
8071
8394
|
if (isTraceEnabled()) {
|
|
8072
8395
|
// eslint-disable-next-line no-console
|
|
8073
|
-
console.debug('[
|
|
8396
|
+
console.debug('[tplane-chat-stream]', ...args);
|
|
8074
8397
|
}
|
|
8075
8398
|
}
|
|
8076
8399
|
|
|
@@ -9064,8 +9387,8 @@ class ChatComponent {
|
|
|
9064
9387
|
return last?.role === 'assistant';
|
|
9065
9388
|
}, ...(ngDevMode ? [{ debugName: "currentAssistantStreaming" }] : []));
|
|
9066
9389
|
constructor() {
|
|
9067
|
-
// Inject the chat lib's root CSS custom properties (--
|
|
9068
|
-
// --
|
|
9390
|
+
// Inject the chat lib's root CSS custom properties (--tplane-chat-bg,
|
|
9391
|
+
// --tplane-chat-surface, --tplane-chat-radius-input, etc.) the first
|
|
9069
9392
|
// time any chat composition is constructed. The module-eval side
|
|
9070
9393
|
// effect that previously handled this is unreliable under
|
|
9071
9394
|
// aggressive production tree-shaking — bundlers that don't see
|
|
@@ -9697,7 +10020,7 @@ class ChatComponent {
|
|
|
9697
10020
|
</div>
|
|
9698
10021
|
</div>
|
|
9699
10022
|
}
|
|
9700
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
10023
|
+
`, 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
10024
|
}
|
|
9702
10025
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatComponent, decorators: [{
|
|
9703
10026
|
type: Component,
|
|
@@ -9881,7 +10204,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
9881
10204
|
</div>
|
|
9882
10205
|
</div>
|
|
9883
10206
|
}
|
|
9884
|
-
`, styles: [":host{font-family:var(--
|
|
10207
|
+
`, 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
10208
|
}], 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
10209
|
|
|
9887
10210
|
// libs/chat/src/lib/compositions/chat-popup/chat-popup.component.ts
|
|
@@ -9969,7 +10292,7 @@ class ChatPopupComponent {
|
|
|
9969
10292
|
<ng-content select="[chatWelcomeSuggestions]" chatWelcomeSuggestions />
|
|
9970
10293
|
</chat>
|
|
9971
10294
|
</div>
|
|
9972
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
10295
|
+
`, 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
10296
|
}
|
|
9974
10297
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatPopupComponent, decorators: [{
|
|
9975
10298
|
type: Component,
|
|
@@ -9994,7 +10317,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
9994
10317
|
<ng-content select="[chatWelcomeSuggestions]" chatWelcomeSuggestions />
|
|
9995
10318
|
</chat>
|
|
9996
10319
|
</div>
|
|
9997
|
-
`, styles: [":host{font-family:var(--
|
|
10320
|
+
`, 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
10321
|
}], 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
10322
|
|
|
10000
10323
|
// libs/chat/src/lib/compositions/chat-sidebar/chat-sidebar.component.ts
|
|
@@ -10030,8 +10353,8 @@ class ChatSidebarComponent {
|
|
|
10030
10353
|
// for the full rationale. Idempotent + lifecycle-guaranteed.
|
|
10031
10354
|
ensureChatRootStyles();
|
|
10032
10355
|
// Publish the right-edge claim while the panel is open. Peer panels
|
|
10033
|
-
// (e.g. chat-debug) read --
|
|
10034
|
-
effect(() => {
|
|
10356
|
+
// (e.g. chat-debug) read --tplane-chat-occupy-right to leave room.
|
|
10357
|
+
effect((onCleanup) => {
|
|
10035
10358
|
if (typeof document === 'undefined')
|
|
10036
10359
|
return;
|
|
10037
10360
|
const html = document.documentElement;
|
|
@@ -10041,6 +10364,11 @@ class ChatSidebarComponent {
|
|
|
10041
10364
|
else {
|
|
10042
10365
|
delete html.dataset['threadplaneChatSidebar'];
|
|
10043
10366
|
}
|
|
10367
|
+
// Clear the global claim when the sidebar is destroyed (not just closed).
|
|
10368
|
+
// Without this, unmounting while open (e.g. switching demo modes) leaves
|
|
10369
|
+
// data-threadplane-chat-sidebar="open" stuck on <html>, so peer panels
|
|
10370
|
+
// keep reserving --tplane-chat-occupy-right and a phantom gap persists.
|
|
10371
|
+
onCleanup(() => { delete html.dataset['threadplaneChatSidebar']; });
|
|
10044
10372
|
});
|
|
10045
10373
|
effect((onCleanup) => {
|
|
10046
10374
|
const closeOnEscape = this.closeOnEscape();
|
|
@@ -10087,7 +10415,7 @@ class ChatSidebarComponent {
|
|
|
10087
10415
|
<ng-content select="[chatWelcomeSuggestions]" chatWelcomeSuggestions />
|
|
10088
10416
|
</chat>
|
|
10089
10417
|
</aside>
|
|
10090
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
10418
|
+
`, 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
10419
|
}
|
|
10092
10420
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSidebarComponent, decorators: [{
|
|
10093
10421
|
type: Component,
|
|
@@ -10121,7 +10449,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
10121
10449
|
<ng-content select="[chatWelcomeSuggestions]" chatWelcomeSuggestions />
|
|
10122
10450
|
</chat>
|
|
10123
10451
|
</aside>
|
|
10124
|
-
`, styles: [":host{font-family:var(--
|
|
10452
|
+
`, 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
10453
|
}], 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
10454
|
|
|
10127
10455
|
// libs/chat/src/lib/compositions/chat-timeline-slider/chat-timeline-slider.component.ts
|
|
@@ -10172,7 +10500,7 @@ class ChatTimelineSliderComponent {
|
|
|
10172
10500
|
}
|
|
10173
10501
|
</ul>
|
|
10174
10502
|
}
|
|
10175
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
10503
|
+
`, 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
10504
|
}
|
|
10177
10505
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatTimelineSliderComponent, decorators: [{
|
|
10178
10506
|
type: Component,
|
|
@@ -10206,7 +10534,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
10206
10534
|
}
|
|
10207
10535
|
</ul>
|
|
10208
10536
|
}
|
|
10209
|
-
`, styles: [":host{font-family:var(--
|
|
10537
|
+
`, 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
10538
|
}], 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
10539
|
|
|
10212
10540
|
// libs/chat/src/lib/styles/chat-sidenav.styles.ts
|
|
@@ -10232,10 +10560,10 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10232
10560
|
z-index: 100;
|
|
10233
10561
|
}
|
|
10234
10562
|
:host([data-mode="expanded"]) {
|
|
10235
|
-
width: var(--
|
|
10563
|
+
width: var(--tplane-chat-sidenav-width-expanded);
|
|
10236
10564
|
}
|
|
10237
10565
|
:host([data-mode="collapsed"]) {
|
|
10238
|
-
width: var(--
|
|
10566
|
+
width: var(--tplane-chat-sidenav-width-collapsed);
|
|
10239
10567
|
}
|
|
10240
10568
|
:host([data-mode="expanded"]) .chat-sidenav {
|
|
10241
10569
|
width: 100%;
|
|
@@ -10248,8 +10576,8 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10248
10576
|
top: 0;
|
|
10249
10577
|
left: 0;
|
|
10250
10578
|
bottom: 0;
|
|
10251
|
-
width: var(--
|
|
10252
|
-
z-index: var(--
|
|
10579
|
+
width: var(--tplane-chat-sidenav-width-drawer);
|
|
10580
|
+
z-index: var(--tplane-chat-z-drawer, 1001);
|
|
10253
10581
|
}
|
|
10254
10582
|
:host([data-mode="drawer"][data-open="true"]) {
|
|
10255
10583
|
box-shadow: 8px 0 32px rgba(0, 0, 0, 0.18);
|
|
@@ -10258,8 +10586,8 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10258
10586
|
display: flex;
|
|
10259
10587
|
flex-direction: column;
|
|
10260
10588
|
height: 100%;
|
|
10261
|
-
background: var(--
|
|
10262
|
-
border-right: 1px solid var(--
|
|
10589
|
+
background: var(--tplane-chat-bg);
|
|
10590
|
+
border-right: 1px solid var(--tplane-chat-separator);
|
|
10263
10591
|
box-sizing: border-box;
|
|
10264
10592
|
overflow: hidden;
|
|
10265
10593
|
}
|
|
@@ -10274,7 +10602,7 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10274
10602
|
}
|
|
10275
10603
|
.chat-sidenav__header {
|
|
10276
10604
|
flex-shrink: 0;
|
|
10277
|
-
padding: var(--
|
|
10605
|
+
padding: var(--tplane-chat-space-3);
|
|
10278
10606
|
}
|
|
10279
10607
|
/* Collapse the header slot when the consumer doesn't project content
|
|
10280
10608
|
* — matches the chat-window pattern. Avoids 24px of dead space above
|
|
@@ -10287,15 +10615,15 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10287
10615
|
align-items: center;
|
|
10288
10616
|
justify-content: space-between;
|
|
10289
10617
|
gap: 4px;
|
|
10290
|
-
padding: var(--
|
|
10291
|
-
border-bottom: 1px solid var(--
|
|
10618
|
+
padding: var(--tplane-chat-space-2) var(--tplane-chat-space-3);
|
|
10619
|
+
border-bottom: 1px solid var(--tplane-chat-separator);
|
|
10292
10620
|
}
|
|
10293
10621
|
:host([data-mode="collapsed"]) .chat-sidenav__topbar {
|
|
10294
10622
|
flex-direction: column;
|
|
10295
10623
|
align-items: center;
|
|
10296
10624
|
justify-content: center;
|
|
10297
10625
|
gap: 4px;
|
|
10298
|
-
padding: var(--
|
|
10626
|
+
padding: var(--tplane-chat-space-2) 0;
|
|
10299
10627
|
}
|
|
10300
10628
|
.chat-sidenav__topbar .chat-sidenav__action--close {
|
|
10301
10629
|
width: 36px;
|
|
@@ -10313,7 +10641,7 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10313
10641
|
border: 0;
|
|
10314
10642
|
padding: 12px 18px;
|
|
10315
10643
|
border-radius: 8px;
|
|
10316
|
-
font-size: var(--
|
|
10644
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
10317
10645
|
font-weight: 600;
|
|
10318
10646
|
display: flex;
|
|
10319
10647
|
align-items: center;
|
|
@@ -10322,7 +10650,7 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10322
10650
|
width: 100%;
|
|
10323
10651
|
}
|
|
10324
10652
|
.chat-sidenav__action--new:focus-visible {
|
|
10325
|
-
outline: 2px solid var(--
|
|
10653
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
10326
10654
|
outline-offset: 2px;
|
|
10327
10655
|
}
|
|
10328
10656
|
/* Collapsed mode: shrink to 32×32 icon-only square. */
|
|
@@ -10341,11 +10669,11 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10341
10669
|
display: flex;
|
|
10342
10670
|
flex-direction: column;
|
|
10343
10671
|
gap: 4px;
|
|
10344
|
-
padding: var(--
|
|
10672
|
+
padding: var(--tplane-chat-space-3);
|
|
10345
10673
|
}
|
|
10346
10674
|
:host([data-mode="collapsed"]) .chat-sidenav__actions {
|
|
10347
10675
|
align-items: center;
|
|
10348
|
-
padding: var(--
|
|
10676
|
+
padding: var(--tplane-chat-space-2);
|
|
10349
10677
|
}
|
|
10350
10678
|
.chat-sidenav__action {
|
|
10351
10679
|
display: flex;
|
|
@@ -10355,17 +10683,17 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10355
10683
|
padding: 8px 12px;
|
|
10356
10684
|
border: 0;
|
|
10357
10685
|
background: transparent;
|
|
10358
|
-
color: var(--
|
|
10686
|
+
color: var(--tplane-chat-text);
|
|
10359
10687
|
border-radius: 8px;
|
|
10360
10688
|
cursor: pointer;
|
|
10361
10689
|
font-family: inherit;
|
|
10362
|
-
font-size: var(--
|
|
10690
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
10363
10691
|
font-weight: 400;
|
|
10364
10692
|
text-align: left;
|
|
10365
10693
|
}
|
|
10366
|
-
.chat-sidenav__action:hover { background: var(--
|
|
10694
|
+
.chat-sidenav__action:hover { background: var(--tplane-chat-surface-alt); }
|
|
10367
10695
|
.chat-sidenav__action:focus-visible {
|
|
10368
|
-
outline: 2px solid var(--
|
|
10696
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
10369
10697
|
outline-offset: 2px;
|
|
10370
10698
|
}
|
|
10371
10699
|
:host([data-mode="collapsed"]) .chat-sidenav__action {
|
|
@@ -10383,15 +10711,15 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10383
10711
|
collapsed-mode overrides (which are :host-prefixed, higher
|
|
10384
10712
|
specificity, so they still apply). */
|
|
10385
10713
|
.chat-sidenav__action.chat-sidenav__action--new {
|
|
10386
|
-
background: var(--
|
|
10387
|
-
color: var(--
|
|
10714
|
+
background: var(--tplane-chat-text);
|
|
10715
|
+
color: var(--tplane-chat-bg);
|
|
10388
10716
|
border-radius: 8px;
|
|
10389
10717
|
padding: 12px 18px;
|
|
10390
10718
|
font-weight: 600;
|
|
10391
|
-
font-size: var(--
|
|
10719
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
10392
10720
|
}
|
|
10393
10721
|
.chat-sidenav__action.chat-sidenav__action--new:hover {
|
|
10394
|
-
background: var(--
|
|
10722
|
+
background: var(--tplane-chat-text);
|
|
10395
10723
|
filter: brightness(0.92);
|
|
10396
10724
|
}
|
|
10397
10725
|
.chat-sidenav__action-icon {
|
|
@@ -10411,7 +10739,7 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10411
10739
|
.chat-sidenav__threads-heading {
|
|
10412
10740
|
padding: 8px 12px 4px;
|
|
10413
10741
|
font-size: 11px;
|
|
10414
|
-
color: var(--
|
|
10742
|
+
color: var(--tplane-chat-text-muted);
|
|
10415
10743
|
text-transform: uppercase;
|
|
10416
10744
|
letter-spacing: 0.4px;
|
|
10417
10745
|
}
|
|
@@ -10423,7 +10751,7 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10423
10751
|
align-items: center;
|
|
10424
10752
|
justify-content: space-between;
|
|
10425
10753
|
padding: 10px 12px;
|
|
10426
|
-
border-top: 1px solid var(--
|
|
10754
|
+
border-top: 1px solid var(--tplane-chat-separator);
|
|
10427
10755
|
gap: 8px;
|
|
10428
10756
|
flex-shrink: 0;
|
|
10429
10757
|
}
|
|
@@ -10444,18 +10772,18 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10444
10772
|
border: 0;
|
|
10445
10773
|
border-radius: 8px;
|
|
10446
10774
|
background: transparent;
|
|
10447
|
-
color: var(--
|
|
10775
|
+
color: var(--tplane-chat-text-muted);
|
|
10448
10776
|
cursor: pointer;
|
|
10449
10777
|
font: inherit;
|
|
10450
10778
|
font-size: 12px;
|
|
10451
10779
|
font-weight: 500;
|
|
10452
10780
|
}
|
|
10453
10781
|
.chat-sidenav__debug:hover {
|
|
10454
|
-
background: var(--
|
|
10455
|
-
color: var(--
|
|
10782
|
+
background: var(--tplane-chat-surface-alt);
|
|
10783
|
+
color: var(--tplane-chat-text);
|
|
10456
10784
|
}
|
|
10457
10785
|
.chat-sidenav__debug:focus-visible {
|
|
10458
|
-
outline: 2px solid var(--
|
|
10786
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
10459
10787
|
outline-offset: 2px;
|
|
10460
10788
|
}
|
|
10461
10789
|
.chat-sidenav__debug-dot {
|
|
@@ -10486,15 +10814,15 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10486
10814
|
border-radius: 8px;
|
|
10487
10815
|
border: 0;
|
|
10488
10816
|
background: transparent;
|
|
10489
|
-
color: var(--
|
|
10817
|
+
color: var(--tplane-chat-text-muted);
|
|
10490
10818
|
cursor: pointer;
|
|
10491
10819
|
display: flex;
|
|
10492
10820
|
align-items: center;
|
|
10493
10821
|
justify-content: center;
|
|
10494
10822
|
}
|
|
10495
10823
|
.chat-sidenav__toggle:hover {
|
|
10496
|
-
background: var(--
|
|
10497
|
-
color: var(--
|
|
10824
|
+
background: var(--tplane-chat-surface-alt);
|
|
10825
|
+
color: var(--tplane-chat-text);
|
|
10498
10826
|
}
|
|
10499
10827
|
/* Collapsed mode: footer becomes a vertical stack; debug stays visible. */
|
|
10500
10828
|
:host([data-mode="collapsed"]) .chat-sidenav__footer {
|
|
@@ -10540,18 +10868,18 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10540
10868
|
border: 0;
|
|
10541
10869
|
border-radius: 8px;
|
|
10542
10870
|
background: transparent;
|
|
10543
|
-
color: var(--
|
|
10871
|
+
color: var(--tplane-chat-text);
|
|
10544
10872
|
font: inherit;
|
|
10545
|
-
font-size: var(--
|
|
10873
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
10546
10874
|
text-align: left;
|
|
10547
10875
|
cursor: pointer;
|
|
10548
10876
|
}
|
|
10549
10877
|
.chat-sidenav__archived-heading:hover {
|
|
10550
|
-
background: var(--
|
|
10551
|
-
color: var(--
|
|
10878
|
+
background: var(--tplane-chat-surface-alt);
|
|
10879
|
+
color: var(--tplane-chat-text);
|
|
10552
10880
|
}
|
|
10553
10881
|
.chat-sidenav__archived-heading:focus-visible {
|
|
10554
|
-
outline: 2px solid var(--
|
|
10882
|
+
outline: 2px solid var(--tplane-chat-primary);
|
|
10555
10883
|
outline-offset: 2px;
|
|
10556
10884
|
}
|
|
10557
10885
|
.chat-sidenav__archived-chevron {
|
|
@@ -10565,8 +10893,8 @@ const CHAT_SIDENAV_STYLES = `
|
|
|
10565
10893
|
}
|
|
10566
10894
|
.chat-sidenav__archived-empty {
|
|
10567
10895
|
padding: 8px 12px;
|
|
10568
|
-
color: var(--
|
|
10569
|
-
font-size: var(--
|
|
10896
|
+
color: var(--tplane-chat-text-muted);
|
|
10897
|
+
font-size: var(--tplane-chat-font-size-sm);
|
|
10570
10898
|
}
|
|
10571
10899
|
:host([data-mode="collapsed"]) .chat-sidenav__archived { display: none; }
|
|
10572
10900
|
.chat-sidenav__projects { flex-shrink: 0; }
|
|
@@ -11018,7 +11346,7 @@ class ChatSidenavComponent {
|
|
|
11018
11346
|
</div>
|
|
11019
11347
|
</nav>
|
|
11020
11348
|
<ng-container #debugHost />
|
|
11021
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
11349
|
+
`, 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
11350
|
}
|
|
11023
11351
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSidenavComponent, decorators: [{
|
|
11024
11352
|
type: Component,
|
|
@@ -11262,7 +11590,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
11262
11590
|
</div>
|
|
11263
11591
|
</nav>
|
|
11264
11592
|
<ng-container #debugHost />
|
|
11265
|
-
`, styles: [":host{font-family:var(--
|
|
11593
|
+
`, 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
11594
|
}], 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
11595
|
read: ViewContainerRef,
|
|
11268
11596
|
}, isSignal: true }] }] } });
|
|
@@ -11293,7 +11621,7 @@ class ChatSidenavScrimComponent {
|
|
|
11293
11621
|
(click)="dismiss.emit()"
|
|
11294
11622
|
></button>
|
|
11295
11623
|
}
|
|
11296
|
-
`, isInline: true, styles: [":host{display:contents}.chat-sidenav-scrim__button{position:fixed;inset:0;background:#0006;z-index:var(--
|
|
11624
|
+
`, 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
11625
|
}
|
|
11298
11626
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatSidenavScrimComponent, decorators: [{
|
|
11299
11627
|
type: Component,
|
|
@@ -11306,7 +11634,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
11306
11634
|
(click)="dismiss.emit()"
|
|
11307
11635
|
></button>
|
|
11308
11636
|
}
|
|
11309
|
-
`, styles: [":host{display:contents}.chat-sidenav-scrim__button{position:fixed;inset:0;background:#0006;z-index:var(--
|
|
11637
|
+
`, 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
11638
|
}], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], dismiss: [{ type: i0.Output, args: ["dismiss"] }] } });
|
|
11311
11639
|
|
|
11312
11640
|
// SPDX-License-Identifier: MIT
|
|
@@ -11357,7 +11685,7 @@ class ChatInterruptPanelComponent {
|
|
|
11357
11685
|
</div>
|
|
11358
11686
|
</div>
|
|
11359
11687
|
}
|
|
11360
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
11688
|
+
`, 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
11689
|
}
|
|
11362
11690
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatInterruptPanelComponent, decorators: [{
|
|
11363
11691
|
type: Component,
|
|
@@ -11377,7 +11705,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
11377
11705
|
</div>
|
|
11378
11706
|
</div>
|
|
11379
11707
|
}
|
|
11380
|
-
`, styles: [":host{font-family:var(--
|
|
11708
|
+
`, 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
11709
|
}], propDecorators: { agent: [{ type: i0.Input, args: [{ isSignal: true, alias: "agent", required: true }] }], action: [{ type: i0.Output, args: ["action"] }] } });
|
|
11382
11710
|
|
|
11383
11711
|
// SPDX-License-Identifier: MIT
|
|
@@ -11465,7 +11793,7 @@ class ChatApprovalCardComponent {
|
|
|
11465
11793
|
<button type="button" class="btn btn-primary" (click)="emit('approve')">Approve</button>
|
|
11466
11794
|
</div>
|
|
11467
11795
|
</dialog>
|
|
11468
|
-
`, isInline: true, styles: [":host{font-family:var(--
|
|
11796
|
+
`, 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
11797
|
}
|
|
11470
11798
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: ChatApprovalCardComponent, decorators: [{
|
|
11471
11799
|
type: Component,
|
|
@@ -11490,7 +11818,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
11490
11818
|
<button type="button" class="btn btn-primary" (click)="emit('approve')">Approve</button>
|
|
11491
11819
|
</div>
|
|
11492
11820
|
</dialog>
|
|
11493
|
-
`, styles: [":host{font-family:var(--
|
|
11821
|
+
`, 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
11822
|
}], 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
11823
|
|
|
11496
11824
|
// SPDX-License-Identifier: MIT
|
|
@@ -12813,5 +13141,5 @@ function mockAgent(opts = {}) {
|
|
|
12813
13141
|
* Generated bundle index. Do not edit.
|
|
12814
13142
|
*/
|
|
12815
13143
|
|
|
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 };
|
|
13144
|
+
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
13145
|
//# sourceMappingURL=threadplane-chat.mjs.map
|