@symphony-talent/component-library 4.180.0 → 4.181.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/esm2020/lib/atoms/atoms.module.mjs +5 -1
- package/esm2020/lib/atoms/input-textarea-with-send/input-textarea-with-send.component.mjs +156 -0
- package/esm2020/lib/atoms/input-textarea-with-send/input-textarea-with-send.module.mjs +36 -0
- package/esm2020/lib/organisms/ai-search-assistant-drawer/ai-search-assistant-drawer.component.mjs +172 -0
- package/esm2020/lib/organisms/ai-search-assistant-drawer/ai-search-assistant-drawer.model.mjs +2 -0
- package/esm2020/lib/organisms/ai-search-assistant-drawer/ai-search-assistant-drawer.module.mjs +60 -0
- package/esm2020/lib/organisms/ai-search-assistant-drawer/pipes/new-line-to-br.pipe.mjs +22 -0
- package/esm2020/lib/organisms/organisms.module.mjs +12 -4
- package/esm2020/projects/component-library/lib/atoms/atoms.module.mjs +5 -1
- package/esm2020/projects/component-library/lib/atoms/input-textarea-with-send/input-textarea-with-send.component.mjs +156 -0
- package/esm2020/projects/component-library/lib/atoms/input-textarea-with-send/input-textarea-with-send.module.mjs +36 -0
- package/esm2020/projects/component-library/lib/organisms/ai-search-assistant-drawer/ai-search-assistant-drawer.component.mjs +172 -0
- package/esm2020/projects/component-library/lib/organisms/ai-search-assistant-drawer/ai-search-assistant-drawer.model.mjs +2 -0
- package/esm2020/projects/component-library/lib/organisms/ai-search-assistant-drawer/ai-search-assistant-drawer.module.mjs +60 -0
- package/esm2020/projects/component-library/lib/organisms/ai-search-assistant-drawer/pipes/new-line-to-br.pipe.mjs +22 -0
- package/esm2020/projects/component-library/lib/organisms/organisms.module.mjs +12 -4
- package/esm2020/projects/component-library/public-api.mjs +6 -1
- package/esm2020/public-api.mjs +6 -1
- package/fesm2015/symphony-talent-component-library-projects-component-library.mjs +423 -6
- package/fesm2015/symphony-talent-component-library-projects-component-library.mjs.map +1 -1
- package/fesm2015/symphony-talent-component-library.mjs +423 -6
- package/fesm2015/symphony-talent-component-library.mjs.map +1 -1
- package/fesm2020/symphony-talent-component-library-projects-component-library.mjs +420 -6
- package/fesm2020/symphony-talent-component-library-projects-component-library.mjs.map +1 -1
- package/fesm2020/symphony-talent-component-library.mjs +420 -6
- package/fesm2020/symphony-talent-component-library.mjs.map +1 -1
- package/lib/atoms/atoms.module.d.ts +13 -12
- package/lib/atoms/input-textarea-with-send/input-textarea-with-send.component.d.ts +38 -0
- package/lib/atoms/input-textarea-with-send/input-textarea-with-send.module.d.ts +10 -0
- package/lib/organisms/ai-search-assistant-drawer/ai-search-assistant-drawer.component.d.ts +39 -0
- package/lib/organisms/ai-search-assistant-drawer/ai-search-assistant-drawer.model.d.ts +53 -0
- package/lib/organisms/ai-search-assistant-drawer/ai-search-assistant-drawer.module.d.ts +16 -0
- package/lib/organisms/ai-search-assistant-drawer/pipes/new-line-to-br.pipe.d.ts +7 -0
- package/lib/organisms/organisms.module.d.ts +2 -1
- package/package.json +1 -1
- package/projects/component-library/lib/atoms/atoms.module.d.ts +13 -12
- package/projects/component-library/lib/atoms/input-textarea-with-send/input-textarea-with-send.component.d.ts +38 -0
- package/projects/component-library/lib/atoms/input-textarea-with-send/input-textarea-with-send.module.d.ts +10 -0
- package/projects/component-library/lib/organisms/ai-search-assistant-drawer/ai-search-assistant-drawer.component.d.ts +39 -0
- package/projects/component-library/lib/organisms/ai-search-assistant-drawer/ai-search-assistant-drawer.model.d.ts +53 -0
- package/projects/component-library/lib/organisms/ai-search-assistant-drawer/ai-search-assistant-drawer.module.d.ts +16 -0
- package/projects/component-library/lib/organisms/ai-search-assistant-drawer/pipes/new-line-to-br.pipe.d.ts +7 -0
- package/projects/component-library/lib/organisms/organisms.module.d.ts +2 -1
- package/projects/component-library/public-api.d.ts +5 -0
- package/public-api.d.ts +5 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Input, NgModule, EventEmitter, Output, Pipe, Injectable, ViewEncapsulation, ViewChild, HostListener } from '@angular/core';
|
|
2
|
+
import { Component, Input, NgModule, EventEmitter, Output, Pipe, Injectable, ViewEncapsulation, ViewChild, forwardRef, HostListener } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { SlicePipe, CommonModule, DecimalPipe } from '@angular/common';
|
|
5
5
|
import * as i1$1 from 'ngx-bootstrap/dropdown';
|
|
@@ -12,7 +12,7 @@ import { AgGridModule } from 'ag-grid-angular';
|
|
|
12
12
|
import { BrowserModule } from '@angular/platform-browser';
|
|
13
13
|
import { LicenseManager } from 'ag-grid-enterprise';
|
|
14
14
|
import * as i1$4 from '@angular/forms';
|
|
15
|
-
import { FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';
|
|
15
|
+
import { FormsModule, ReactiveFormsModule, NG_VALUE_ACCESSOR, FormControl } from '@angular/forms';
|
|
16
16
|
import { Subject, timer } from 'rxjs';
|
|
17
17
|
import { debounceTime, delay } from 'rxjs/operators';
|
|
18
18
|
import * as i3 from 'ngx-bootstrap/popover';
|
|
@@ -1972,6 +1972,187 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
1972
1972
|
}]
|
|
1973
1973
|
}] });
|
|
1974
1974
|
|
|
1975
|
+
class InputTextareaWithSendComponent {
|
|
1976
|
+
constructor() {
|
|
1977
|
+
this.placeholder = 'Type your message...';
|
|
1978
|
+
this.isDisabled = false;
|
|
1979
|
+
this.showCharacterCount = false;
|
|
1980
|
+
this.minRows = 1;
|
|
1981
|
+
this.maxRows = 6;
|
|
1982
|
+
this.sendButtonIcon = 'si-arrow-next';
|
|
1983
|
+
this.sendButtonAriaLabel = 'Send message';
|
|
1984
|
+
this.autoResize = true;
|
|
1985
|
+
this.sendClicked = new EventEmitter();
|
|
1986
|
+
this.enterPressed = new EventEmitter();
|
|
1987
|
+
this.valueChanged = new EventEmitter();
|
|
1988
|
+
this.value = '';
|
|
1989
|
+
this.currentRows = 1;
|
|
1990
|
+
this.onChange = (value) => { };
|
|
1991
|
+
this.onTouched = () => { };
|
|
1992
|
+
}
|
|
1993
|
+
ngAfterViewInit() {
|
|
1994
|
+
if (this.autoResize) {
|
|
1995
|
+
this.adjustTextareaHeight();
|
|
1996
|
+
}
|
|
1997
|
+
}
|
|
1998
|
+
// ControlValueAccessor implementation
|
|
1999
|
+
writeValue(value) {
|
|
2000
|
+
this.value = value || '';
|
|
2001
|
+
if (this.autoResize) {
|
|
2002
|
+
setTimeout(() => this.adjustTextareaHeight(), 0);
|
|
2003
|
+
}
|
|
2004
|
+
}
|
|
2005
|
+
registerOnChange(fn) {
|
|
2006
|
+
this.onChange = fn;
|
|
2007
|
+
}
|
|
2008
|
+
registerOnTouched(fn) {
|
|
2009
|
+
this.onTouched = fn;
|
|
2010
|
+
}
|
|
2011
|
+
setDisabledState(isDisabled) {
|
|
2012
|
+
this.isDisabled = isDisabled;
|
|
2013
|
+
}
|
|
2014
|
+
onInputChange(event) {
|
|
2015
|
+
const target = event.target;
|
|
2016
|
+
this.value = target.value;
|
|
2017
|
+
this.onChange(this.value);
|
|
2018
|
+
this.valueChanged.emit(this.value);
|
|
2019
|
+
if (this.autoResize) {
|
|
2020
|
+
this.adjustTextareaHeight();
|
|
2021
|
+
}
|
|
2022
|
+
}
|
|
2023
|
+
onInputKeyPress(event) {
|
|
2024
|
+
if (event.key === 'Enter' && !event.shiftKey) {
|
|
2025
|
+
event.preventDefault();
|
|
2026
|
+
if (this.canSend()) {
|
|
2027
|
+
this.onSendClick();
|
|
2028
|
+
}
|
|
2029
|
+
}
|
|
2030
|
+
}
|
|
2031
|
+
onSendClick() {
|
|
2032
|
+
if (this.canSend()) {
|
|
2033
|
+
this.sendClicked.emit(this.value);
|
|
2034
|
+
this.enterPressed.emit(this.value);
|
|
2035
|
+
}
|
|
2036
|
+
}
|
|
2037
|
+
adjustTextareaHeight() {
|
|
2038
|
+
if (!this.textareaElement)
|
|
2039
|
+
return;
|
|
2040
|
+
const textarea = this.textareaElement.nativeElement;
|
|
2041
|
+
// Reset height to auto to get the scroll height
|
|
2042
|
+
textarea.style.height = 'auto';
|
|
2043
|
+
// Calculate the number of lines
|
|
2044
|
+
const lineHeight = 24; // Base line height in pixels
|
|
2045
|
+
const padding = 16; // Top + bottom padding
|
|
2046
|
+
const minHeight = this.minRows * lineHeight + padding;
|
|
2047
|
+
const maxHeight = this.maxRows * lineHeight + padding;
|
|
2048
|
+
let newHeight = Math.max(textarea.scrollHeight, minHeight);
|
|
2049
|
+
newHeight = Math.min(newHeight, maxHeight);
|
|
2050
|
+
textarea.style.height = newHeight + 'px';
|
|
2051
|
+
// Update current rows for styling purposes
|
|
2052
|
+
this.currentRows = Math.ceil((newHeight - padding) / lineHeight);
|
|
2053
|
+
}
|
|
2054
|
+
canSend() {
|
|
2055
|
+
var _a;
|
|
2056
|
+
const trimmedValue = (_a = this.value) === null || _a === void 0 ? void 0 : _a.trim();
|
|
2057
|
+
const hasValue = !!trimmedValue;
|
|
2058
|
+
const withinLimit = !this.maxCharacterLimit || this.value.length <= this.maxCharacterLimit;
|
|
2059
|
+
return !this.isDisabled && hasValue && withinLimit;
|
|
2060
|
+
}
|
|
2061
|
+
getCharacterCount() {
|
|
2062
|
+
var _a;
|
|
2063
|
+
return ((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) || 0;
|
|
2064
|
+
}
|
|
2065
|
+
isCharacterLimitExceeded() {
|
|
2066
|
+
return !!this.maxCharacterLimit && this.getCharacterCount() > this.maxCharacterLimit;
|
|
2067
|
+
}
|
|
2068
|
+
focus() {
|
|
2069
|
+
if (this.textareaElement) {
|
|
2070
|
+
this.textareaElement.nativeElement.focus();
|
|
2071
|
+
}
|
|
2072
|
+
}
|
|
2073
|
+
clear() {
|
|
2074
|
+
this.value = '';
|
|
2075
|
+
this.onChange('');
|
|
2076
|
+
this.valueChanged.emit('');
|
|
2077
|
+
if (this.autoResize) {
|
|
2078
|
+
setTimeout(() => this.adjustTextareaHeight(), 0);
|
|
2079
|
+
}
|
|
2080
|
+
}
|
|
2081
|
+
}
|
|
2082
|
+
InputTextareaWithSendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: InputTextareaWithSendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2083
|
+
InputTextareaWithSendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: InputTextareaWithSendComponent, selector: "symphony-input-textarea-with-send", inputs: { placeholder: "placeholder", isDisabled: "isDisabled", maxCharacterLimit: "maxCharacterLimit", showCharacterCount: "showCharacterCount", minRows: "minRows", maxRows: "maxRows", sendButtonIcon: "sendButtonIcon", sendButtonAriaLabel: "sendButtonAriaLabel", autoResize: "autoResize" }, outputs: { sendClicked: "sendClicked", enterPressed: "enterPressed", valueChanged: "valueChanged" }, providers: [
|
|
2084
|
+
{
|
|
2085
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2086
|
+
useExisting: forwardRef(() => InputTextareaWithSendComponent),
|
|
2087
|
+
multi: true
|
|
2088
|
+
}
|
|
2089
|
+
], viewQueries: [{ propertyName: "textareaElement", first: true, predicate: ["textareaElement"], descendants: true }], ngImport: i0, template: "<div class=\"input-textarea-with-send-container\">\n <!-- Character Counter -->\n <div \n class=\"character-counter sfx-mb-10\"\n *ngIf=\"showCharacterCount && maxCharacterLimit\">\n <span \n class=\"counter-text\"\n [class.counter-exceeded]=\"isCharacterLimitExceeded()\">\n {{ getCharacterCount() }} / {{ maxCharacterLimit }}\n </span>\n </div>\n\n <!-- Input with Send Button -->\n <div class=\"input-wrapper\">\n <textarea\n #textareaElement\n class=\"textarea-input\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"isDisabled\"\n [maxLength]=\"maxCharacterLimit\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"onInputKeyPress($event)\"\n (blur)=\"onTouched()\"\n rows=\"1\">\n </textarea>\n \n <!-- Send Button -->\n <button\n type=\"button\"\n class=\"send-button\"\n [class.enabled]=\"canSend()\"\n [class.disabled]=\"!canSend()\"\n [disabled]=\"!canSend()\"\n (click)=\"onSendClick()\"\n [attr.aria-label]=\"sendButtonAriaLabel\">\n <symphony-icon [icon]=\"sendButtonIcon\" [size]=\"'10px'\"></symphony-icon>\n </button>\n </div>\n</div> ", styles: [".sfx-p-0{padding:0}.sfx-p-5{padding:.3rem}.sfx-p-10{padding:.625rem}.sfx-p-15{padding:.9375rem}.sfx-p-20{padding:1.25rem}.sfx-p-30{padding:1.875rem}.sfx-pt-0{padding-top:0}.sfx-pt-5{padding-top:.3rem}.sfx-pt-10{padding-top:.625rem}.sfx-pt-15{padding-top:.9375rem}.sfx-pt-20{padding-top:1.25rem}.sfx-pt-25{padding-top:1.5625rem}.sfx-pt-30{padding-top:1.875rem}.sfx-pt-35{padding-top:2.1875rem}.sfx-pt-40{padding-top:2.5rem}.sfx-pt-50{padding-top:3.125rem}.sfx-pb-0{padding-bottom:0}.sfx-pb-5{padding-bottom:.3rem}.sfx-pb-10{padding-bottom:.625rem}.sfx-pb-15{padding-bottom:.9375rem}.sfx-pb-20{padding-bottom:1.25rem}.sfx-pb-25{padding-bottom:1.5625rem}.sfx-pb-30{padding-bottom:1.875rem}.sfx-pb-35{padding-bottom:2.1875rem}.sfx-pb-40{padding-bottom:2.5rem}.sfx-pb-50{padding-bottom:3.125rem}.sfx-pl-0{padding-left:0}.sfx-pl-5{padding-left:.3rem}.sfx-pl-10{padding-left:.625rem}.sfx-pl-15{padding-left:.9375rem}.sfx-pl-20{padding-left:1.25rem}.sfx-pl-25{padding-left:1.5625rem}.sfx-pl-30{padding-left:1.875rem}.sfx-pr-0{padding-right:0}.sfx-pr-5{padding-right:.3rem}.sfx-pr-10{padding-right:.625rem}.sfx-pr-15{padding-right:.9375rem}.sfx-pr-20{padding-right:1.25rem}.sfx-pr-25{padding-right:1.5625rem}.sfx-pr-30{padding-right:1.875rem}.sfx-py-15{padding-left:.9375rem;padding-right:.9375rem}.sfx-py-30{padding-left:1.875rem;padding-right:1.875rem}.sfx-px-0{padding-top:0;padding-bottom:0}.sfx-px-15{padding-top:.9375rem;padding-bottom:.9375rem}.sfx-px-20{padding-top:1.25rem;padding-bottom:1.25rem}.sfx-px-30{padding-top:1.875rem;padding-bottom:1.875rem}.sfx-m-0{margin:0}.sfx-m-5{margin:.3rem}.sfx-m-10{margin:.625rem}.sfx-m-15{margin:.9375rem}.sfx-m-20{margin:1.25rem}.sfx-m-auto{margin:0 auto}.sfx-mt-0{margin-top:0}.sfx-mt-5{margin-top:.3rem}.sfx-mt-10{margin-top:.625rem}.sfx-mt-15{margin-top:.9375rem}.sfx-mt-20{margin-top:1.25rem}.sfx-mt-25{margin-top:1.5625rem}.sfx-mt-30{margin-top:1.875rem}.sfx-mt-40{margin-top:2.5rem}.sfx-mt-80{margin-top:5rem}.sfx-mb-0{margin-bottom:0}.sfx-mb-5{margin-bottom:.3rem}.sfx-mb-10{margin-bottom:.625rem}.sfx-mb-15{margin-bottom:.9375rem}.sfx-mb-20{margin-bottom:1.25rem}.sfx-mb-25{margin-bottom:1.5625rem}.sfx-mb-30{margin-bottom:1.875rem}.sfx-mb-40{margin-bottom:2.5rem}.sfx-mb-50{margin-bottom:3.125rem}.sfx-ml-0{margin-left:0}.sfx-ml-5{margin-left:.3rem}.sfx-ml-10{margin-left:.625rem}.sfx-ml-15{margin-left:.9375rem}.sfx-ml-20{margin-left:1.25rem}.sfx-ml-auto{margin-left:auto}.sfx-mr-0{margin-right:0}.sfx-mr-5{margin-right:.3rem}.sfx-mr-10{margin-right:.625rem}.sfx-mr-15{margin-right:.9375rem}.sfx-mr-20{margin-right:1.25rem}.sfx-mr-25{margin-right:1.5625rem}.sfx-mr-30{margin-right:1.875rem}.sfx-mr-40{margin-right:2.5rem}.input-textarea-with-send-container{width:100%}.character-counter{text-align:right}.character-counter .counter-text{font-size:.75rem;color:#5b6d80}.character-counter .counter-text.counter-exceeded{color:#ac4463;font-weight:500}.input-wrapper{position:relative;display:flex;align-items:flex-end}.input-wrapper .textarea-input{flex:1;width:100%;min-height:52px;max-height:200px;padding:.9375rem 56px .9375rem .9375rem;font-size:.875rem;line-height:1.5rem;font-family:runda,sans-serif;background:#ffffff;border:1px solid #334860;border-radius:4px;resize:none;overflow-y:auto;transition:border-color .2s ease}.input-wrapper .textarea-input::-moz-placeholder{color:#5b6d80}.input-wrapper .textarea-input:-ms-input-placeholder{color:#5b6d80}.input-wrapper .textarea-input::placeholder{color:#5b6d80}.input-wrapper .textarea-input:focus{border-color:#2b8ff3;outline:none}.input-wrapper .textarea-input:disabled{background-color:#f1f2f5;border-color:#c3cbdc;color:#5b6d80;cursor:not-allowed}.input-wrapper .textarea-input::-webkit-scrollbar{width:4px}.input-wrapper .textarea-input::-webkit-scrollbar-track{background:transparent}.input-wrapper .textarea-input::-webkit-scrollbar-thumb{background:#C3CBDC;border-radius:2px}.input-wrapper .textarea-input::-webkit-scrollbar-thumb:hover{background:#5B6D80}.input-wrapper .send-button{position:absolute;right:.625rem;bottom:.625rem;width:36px;height:36px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;z-index:10;flex-shrink:0}.input-wrapper .send-button.enabled{background-color:#2b8ff3}.input-wrapper .send-button.enabled:hover{background-color:#0d76de;transform:scale(1.05)}.input-wrapper .send-button.enabled:active{transform:scale(.95)}.input-wrapper .send-button.enabled symphony-icon{color:#fff;font-size:16px}.input-wrapper .send-button.disabled{background-color:#d2d8e5;cursor:not-allowed}.input-wrapper .send-button.disabled symphony-icon{color:#5b6d80;font-size:16px}.input-wrapper .send-button symphony-icon{transition:color .2s ease}.input-wrapper .send-button:focus{outline:2px solid #2B8FF3;outline-offset:2px}@media (max-width: 768px){.input-wrapper .textarea-input{min-height:48px;padding:.625rem 50px .625rem .9375rem;font-size:.875rem;line-height:22px}.input-wrapper .send-button{width:32px;height:32px;right:.625rem;bottom:.625rem}.input-wrapper .send-button symphony-icon{font-size:.875rem}}@media (prefers-contrast: high){.textarea-input{border:2px solid #08203E}.textarea-input:focus{border-color:#2b8ff3}.send-button.enabled{border:2px solid #0a5cae}}@media (prefers-reduced-motion: reduce){.textarea-input,.send-button{transition:none}.send-button:hover,.send-button:active{transform:none}}\n"], components: [{ type: IconComponent, selector: "symphony-icon", inputs: ["icon", "isSecondary", "size", "iconColor"], outputs: ["clicked"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
2090
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: InputTextareaWithSendComponent, decorators: [{
|
|
2091
|
+
type: Component,
|
|
2092
|
+
args: [{ selector: 'symphony-input-textarea-with-send', providers: [
|
|
2093
|
+
{
|
|
2094
|
+
provide: NG_VALUE_ACCESSOR,
|
|
2095
|
+
useExisting: forwardRef(() => InputTextareaWithSendComponent),
|
|
2096
|
+
multi: true
|
|
2097
|
+
}
|
|
2098
|
+
], template: "<div class=\"input-textarea-with-send-container\">\n <!-- Character Counter -->\n <div \n class=\"character-counter sfx-mb-10\"\n *ngIf=\"showCharacterCount && maxCharacterLimit\">\n <span \n class=\"counter-text\"\n [class.counter-exceeded]=\"isCharacterLimitExceeded()\">\n {{ getCharacterCount() }} / {{ maxCharacterLimit }}\n </span>\n </div>\n\n <!-- Input with Send Button -->\n <div class=\"input-wrapper\">\n <textarea\n #textareaElement\n class=\"textarea-input\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"isDisabled\"\n [maxLength]=\"maxCharacterLimit\"\n (input)=\"onInputChange($event)\"\n (keydown)=\"onInputKeyPress($event)\"\n (blur)=\"onTouched()\"\n rows=\"1\">\n </textarea>\n \n <!-- Send Button -->\n <button\n type=\"button\"\n class=\"send-button\"\n [class.enabled]=\"canSend()\"\n [class.disabled]=\"!canSend()\"\n [disabled]=\"!canSend()\"\n (click)=\"onSendClick()\"\n [attr.aria-label]=\"sendButtonAriaLabel\">\n <symphony-icon [icon]=\"sendButtonIcon\" [size]=\"'10px'\"></symphony-icon>\n </button>\n </div>\n</div> ", styles: [".sfx-p-0{padding:0}.sfx-p-5{padding:.3rem}.sfx-p-10{padding:.625rem}.sfx-p-15{padding:.9375rem}.sfx-p-20{padding:1.25rem}.sfx-p-30{padding:1.875rem}.sfx-pt-0{padding-top:0}.sfx-pt-5{padding-top:.3rem}.sfx-pt-10{padding-top:.625rem}.sfx-pt-15{padding-top:.9375rem}.sfx-pt-20{padding-top:1.25rem}.sfx-pt-25{padding-top:1.5625rem}.sfx-pt-30{padding-top:1.875rem}.sfx-pt-35{padding-top:2.1875rem}.sfx-pt-40{padding-top:2.5rem}.sfx-pt-50{padding-top:3.125rem}.sfx-pb-0{padding-bottom:0}.sfx-pb-5{padding-bottom:.3rem}.sfx-pb-10{padding-bottom:.625rem}.sfx-pb-15{padding-bottom:.9375rem}.sfx-pb-20{padding-bottom:1.25rem}.sfx-pb-25{padding-bottom:1.5625rem}.sfx-pb-30{padding-bottom:1.875rem}.sfx-pb-35{padding-bottom:2.1875rem}.sfx-pb-40{padding-bottom:2.5rem}.sfx-pb-50{padding-bottom:3.125rem}.sfx-pl-0{padding-left:0}.sfx-pl-5{padding-left:.3rem}.sfx-pl-10{padding-left:.625rem}.sfx-pl-15{padding-left:.9375rem}.sfx-pl-20{padding-left:1.25rem}.sfx-pl-25{padding-left:1.5625rem}.sfx-pl-30{padding-left:1.875rem}.sfx-pr-0{padding-right:0}.sfx-pr-5{padding-right:.3rem}.sfx-pr-10{padding-right:.625rem}.sfx-pr-15{padding-right:.9375rem}.sfx-pr-20{padding-right:1.25rem}.sfx-pr-25{padding-right:1.5625rem}.sfx-pr-30{padding-right:1.875rem}.sfx-py-15{padding-left:.9375rem;padding-right:.9375rem}.sfx-py-30{padding-left:1.875rem;padding-right:1.875rem}.sfx-px-0{padding-top:0;padding-bottom:0}.sfx-px-15{padding-top:.9375rem;padding-bottom:.9375rem}.sfx-px-20{padding-top:1.25rem;padding-bottom:1.25rem}.sfx-px-30{padding-top:1.875rem;padding-bottom:1.875rem}.sfx-m-0{margin:0}.sfx-m-5{margin:.3rem}.sfx-m-10{margin:.625rem}.sfx-m-15{margin:.9375rem}.sfx-m-20{margin:1.25rem}.sfx-m-auto{margin:0 auto}.sfx-mt-0{margin-top:0}.sfx-mt-5{margin-top:.3rem}.sfx-mt-10{margin-top:.625rem}.sfx-mt-15{margin-top:.9375rem}.sfx-mt-20{margin-top:1.25rem}.sfx-mt-25{margin-top:1.5625rem}.sfx-mt-30{margin-top:1.875rem}.sfx-mt-40{margin-top:2.5rem}.sfx-mt-80{margin-top:5rem}.sfx-mb-0{margin-bottom:0}.sfx-mb-5{margin-bottom:.3rem}.sfx-mb-10{margin-bottom:.625rem}.sfx-mb-15{margin-bottom:.9375rem}.sfx-mb-20{margin-bottom:1.25rem}.sfx-mb-25{margin-bottom:1.5625rem}.sfx-mb-30{margin-bottom:1.875rem}.sfx-mb-40{margin-bottom:2.5rem}.sfx-mb-50{margin-bottom:3.125rem}.sfx-ml-0{margin-left:0}.sfx-ml-5{margin-left:.3rem}.sfx-ml-10{margin-left:.625rem}.sfx-ml-15{margin-left:.9375rem}.sfx-ml-20{margin-left:1.25rem}.sfx-ml-auto{margin-left:auto}.sfx-mr-0{margin-right:0}.sfx-mr-5{margin-right:.3rem}.sfx-mr-10{margin-right:.625rem}.sfx-mr-15{margin-right:.9375rem}.sfx-mr-20{margin-right:1.25rem}.sfx-mr-25{margin-right:1.5625rem}.sfx-mr-30{margin-right:1.875rem}.sfx-mr-40{margin-right:2.5rem}.input-textarea-with-send-container{width:100%}.character-counter{text-align:right}.character-counter .counter-text{font-size:.75rem;color:#5b6d80}.character-counter .counter-text.counter-exceeded{color:#ac4463;font-weight:500}.input-wrapper{position:relative;display:flex;align-items:flex-end}.input-wrapper .textarea-input{flex:1;width:100%;min-height:52px;max-height:200px;padding:.9375rem 56px .9375rem .9375rem;font-size:.875rem;line-height:1.5rem;font-family:runda,sans-serif;background:#ffffff;border:1px solid #334860;border-radius:4px;resize:none;overflow-y:auto;transition:border-color .2s ease}.input-wrapper .textarea-input::-moz-placeholder{color:#5b6d80}.input-wrapper .textarea-input:-ms-input-placeholder{color:#5b6d80}.input-wrapper .textarea-input::placeholder{color:#5b6d80}.input-wrapper .textarea-input:focus{border-color:#2b8ff3;outline:none}.input-wrapper .textarea-input:disabled{background-color:#f1f2f5;border-color:#c3cbdc;color:#5b6d80;cursor:not-allowed}.input-wrapper .textarea-input::-webkit-scrollbar{width:4px}.input-wrapper .textarea-input::-webkit-scrollbar-track{background:transparent}.input-wrapper .textarea-input::-webkit-scrollbar-thumb{background:#C3CBDC;border-radius:2px}.input-wrapper .textarea-input::-webkit-scrollbar-thumb:hover{background:#5B6D80}.input-wrapper .send-button{position:absolute;right:.625rem;bottom:.625rem;width:36px;height:36px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;z-index:10;flex-shrink:0}.input-wrapper .send-button.enabled{background-color:#2b8ff3}.input-wrapper .send-button.enabled:hover{background-color:#0d76de;transform:scale(1.05)}.input-wrapper .send-button.enabled:active{transform:scale(.95)}.input-wrapper .send-button.enabled symphony-icon{color:#fff;font-size:16px}.input-wrapper .send-button.disabled{background-color:#d2d8e5;cursor:not-allowed}.input-wrapper .send-button.disabled symphony-icon{color:#5b6d80;font-size:16px}.input-wrapper .send-button symphony-icon{transition:color .2s ease}.input-wrapper .send-button:focus{outline:2px solid #2B8FF3;outline-offset:2px}@media (max-width: 768px){.input-wrapper .textarea-input{min-height:48px;padding:.625rem 50px .625rem .9375rem;font-size:.875rem;line-height:22px}.input-wrapper .send-button{width:32px;height:32px;right:.625rem;bottom:.625rem}.input-wrapper .send-button symphony-icon{font-size:.875rem}}@media (prefers-contrast: high){.textarea-input{border:2px solid #08203E}.textarea-input:focus{border-color:#2b8ff3}.send-button.enabled{border:2px solid #0a5cae}}@media (prefers-reduced-motion: reduce){.textarea-input,.send-button{transition:none}.send-button:hover,.send-button:active{transform:none}}\n"] }]
|
|
2099
|
+
}], propDecorators: { placeholder: [{
|
|
2100
|
+
type: Input
|
|
2101
|
+
}], isDisabled: [{
|
|
2102
|
+
type: Input
|
|
2103
|
+
}], maxCharacterLimit: [{
|
|
2104
|
+
type: Input
|
|
2105
|
+
}], showCharacterCount: [{
|
|
2106
|
+
type: Input
|
|
2107
|
+
}], minRows: [{
|
|
2108
|
+
type: Input
|
|
2109
|
+
}], maxRows: [{
|
|
2110
|
+
type: Input
|
|
2111
|
+
}], sendButtonIcon: [{
|
|
2112
|
+
type: Input
|
|
2113
|
+
}], sendButtonAriaLabel: [{
|
|
2114
|
+
type: Input
|
|
2115
|
+
}], autoResize: [{
|
|
2116
|
+
type: Input
|
|
2117
|
+
}], sendClicked: [{
|
|
2118
|
+
type: Output
|
|
2119
|
+
}], enterPressed: [{
|
|
2120
|
+
type: Output
|
|
2121
|
+
}], valueChanged: [{
|
|
2122
|
+
type: Output
|
|
2123
|
+
}], textareaElement: [{
|
|
2124
|
+
type: ViewChild,
|
|
2125
|
+
args: ['textareaElement']
|
|
2126
|
+
}] } });
|
|
2127
|
+
|
|
2128
|
+
class InputTextareaWithSendModule {
|
|
2129
|
+
}
|
|
2130
|
+
InputTextareaWithSendModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: InputTextareaWithSendModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2131
|
+
InputTextareaWithSendModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: InputTextareaWithSendModule, declarations: [InputTextareaWithSendComponent], imports: [CommonModule,
|
|
2132
|
+
FormsModule,
|
|
2133
|
+
IconModule], exports: [InputTextareaWithSendComponent] });
|
|
2134
|
+
InputTextareaWithSendModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: InputTextareaWithSendModule, imports: [[
|
|
2135
|
+
CommonModule,
|
|
2136
|
+
FormsModule,
|
|
2137
|
+
IconModule
|
|
2138
|
+
]] });
|
|
2139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: InputTextareaWithSendModule, decorators: [{
|
|
2140
|
+
type: NgModule,
|
|
2141
|
+
args: [{
|
|
2142
|
+
declarations: [
|
|
2143
|
+
InputTextareaWithSendComponent
|
|
2144
|
+
],
|
|
2145
|
+
imports: [
|
|
2146
|
+
CommonModule,
|
|
2147
|
+
FormsModule,
|
|
2148
|
+
IconModule
|
|
2149
|
+
],
|
|
2150
|
+
exports: [
|
|
2151
|
+
InputTextareaWithSendComponent
|
|
2152
|
+
]
|
|
2153
|
+
}]
|
|
2154
|
+
}] });
|
|
2155
|
+
|
|
1975
2156
|
class InputRadioToggleComponent {
|
|
1976
2157
|
constructor() {
|
|
1977
2158
|
this.changedValue = new EventEmitter();
|
|
@@ -3061,6 +3242,7 @@ AtomsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
|
|
|
3061
3242
|
NotificationsModule,
|
|
3062
3243
|
CharacterCounterModule,
|
|
3063
3244
|
InputTextareaModule,
|
|
3245
|
+
InputTextareaWithSendModule,
|
|
3064
3246
|
ColoredTextIndicatorModule,
|
|
3065
3247
|
InputFileUploadModule,
|
|
3066
3248
|
ChatHistoryMessageAvatarModule,
|
|
@@ -3107,6 +3289,7 @@ AtomsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "1
|
|
|
3107
3289
|
NotificationsModule,
|
|
3108
3290
|
CharacterCounterModule,
|
|
3109
3291
|
InputTextareaModule,
|
|
3292
|
+
InputTextareaWithSendModule,
|
|
3110
3293
|
ColoredTextIndicatorModule,
|
|
3111
3294
|
InputFileUploadModule,
|
|
3112
3295
|
ChatHistoryMessageAvatarModule,
|
|
@@ -3159,6 +3342,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
3159
3342
|
NotificationsModule,
|
|
3160
3343
|
CharacterCounterModule,
|
|
3161
3344
|
InputTextareaModule,
|
|
3345
|
+
InputTextareaWithSendModule,
|
|
3162
3346
|
ColoredTextIndicatorModule,
|
|
3163
3347
|
InputFileUploadModule,
|
|
3164
3348
|
ChatHistoryMessageAvatarModule,
|
|
@@ -7117,6 +7301,233 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
7117
7301
|
}]
|
|
7118
7302
|
}] });
|
|
7119
7303
|
|
|
7304
|
+
class NewLineToBrPipe {
|
|
7305
|
+
transform(value) {
|
|
7306
|
+
if (!value) {
|
|
7307
|
+
return value;
|
|
7308
|
+
}
|
|
7309
|
+
return value
|
|
7310
|
+
.replace(/\n/g, '<br>')
|
|
7311
|
+
.replace(/\r\n/g, '<br>')
|
|
7312
|
+
.replace(/\r/g, '<br>');
|
|
7313
|
+
}
|
|
7314
|
+
}
|
|
7315
|
+
NewLineToBrPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: NewLineToBrPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
7316
|
+
NewLineToBrPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: NewLineToBrPipe, name: "newLineToBr" });
|
|
7317
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: NewLineToBrPipe, decorators: [{
|
|
7318
|
+
type: Pipe,
|
|
7319
|
+
args: [{
|
|
7320
|
+
name: 'newLineToBr'
|
|
7321
|
+
}]
|
|
7322
|
+
}] });
|
|
7323
|
+
|
|
7324
|
+
class AISearchAssistantDrawerComponent {
|
|
7325
|
+
constructor(cdr) {
|
|
7326
|
+
this.cdr = cdr;
|
|
7327
|
+
this.model = {
|
|
7328
|
+
isOpen: false,
|
|
7329
|
+
messages: [],
|
|
7330
|
+
suggestedPrompts: [],
|
|
7331
|
+
isLoading: false,
|
|
7332
|
+
hasError: false,
|
|
7333
|
+
inputValue: '',
|
|
7334
|
+
maxCharacterLimit: 1000
|
|
7335
|
+
};
|
|
7336
|
+
this.config = {
|
|
7337
|
+
welcomeMessage: 'Hello! I\'m your AI Writing Assistant. How can I help you today?',
|
|
7338
|
+
placeholder: 'Message AI Assistant',
|
|
7339
|
+
maxMessages: 100,
|
|
7340
|
+
autoScroll: true,
|
|
7341
|
+
showTimestamps: true,
|
|
7342
|
+
enableSuggestedPrompts: true
|
|
7343
|
+
};
|
|
7344
|
+
// Simple event outputs following Symphony patterns
|
|
7345
|
+
this.drawerClosed = new EventEmitter();
|
|
7346
|
+
this.promptSelected = new EventEmitter();
|
|
7347
|
+
this.messageSent = new EventEmitter();
|
|
7348
|
+
this.inputChanged = new EventEmitter();
|
|
7349
|
+
this.retryClicked = new EventEmitter();
|
|
7350
|
+
this.shouldScrollToBottom = false;
|
|
7351
|
+
this.hasAddedWelcomeMessage = false;
|
|
7352
|
+
}
|
|
7353
|
+
ngOnInit() {
|
|
7354
|
+
// Add welcome message if configured and no messages exist
|
|
7355
|
+
this.addWelcomeMessageIfNeeded();
|
|
7356
|
+
}
|
|
7357
|
+
ngAfterViewChecked() {
|
|
7358
|
+
if (this.shouldScrollToBottom && this.config.autoScroll) {
|
|
7359
|
+
this.scrollToBottom();
|
|
7360
|
+
this.shouldScrollToBottom = false;
|
|
7361
|
+
}
|
|
7362
|
+
}
|
|
7363
|
+
trackByMessageId(index, message) {
|
|
7364
|
+
return message.id;
|
|
7365
|
+
}
|
|
7366
|
+
onToggleDrawer() {
|
|
7367
|
+
this.model.isOpen = !this.model.isOpen;
|
|
7368
|
+
if (this.model.isOpen) {
|
|
7369
|
+
// Add welcome message as first message if not already added and no messages exist
|
|
7370
|
+
this.addWelcomeMessageIfNeeded();
|
|
7371
|
+
// Focus the input field when opening
|
|
7372
|
+
setTimeout(() => {
|
|
7373
|
+
if (this.messageInput) {
|
|
7374
|
+
this.messageInput.focus();
|
|
7375
|
+
}
|
|
7376
|
+
}, 300); // Wait for animation to complete
|
|
7377
|
+
}
|
|
7378
|
+
else {
|
|
7379
|
+
this.drawerClosed.emit();
|
|
7380
|
+
}
|
|
7381
|
+
}
|
|
7382
|
+
onPromptClick(prompt) {
|
|
7383
|
+
this.promptSelected.emit(prompt);
|
|
7384
|
+
// Copy prompt text to input instead of auto-sending
|
|
7385
|
+
this.model.inputValue = prompt.text;
|
|
7386
|
+
this.inputChanged.emit(prompt.text);
|
|
7387
|
+
// Focus the input field for better UX
|
|
7388
|
+
setTimeout(() => {
|
|
7389
|
+
if (this.messageInput) {
|
|
7390
|
+
this.messageInput.focus();
|
|
7391
|
+
}
|
|
7392
|
+
}, 100);
|
|
7393
|
+
}
|
|
7394
|
+
onSendMessage() {
|
|
7395
|
+
var _a;
|
|
7396
|
+
const message = (_a = this.model.inputValue) === null || _a === void 0 ? void 0 : _a.trim();
|
|
7397
|
+
if (message && !this.model.isLoading) {
|
|
7398
|
+
// Create generic event payload
|
|
7399
|
+
const messageEvent = {
|
|
7400
|
+
content: message,
|
|
7401
|
+
context: this.model.context // Pass any context data
|
|
7402
|
+
};
|
|
7403
|
+
// Clear input immediately for better UX
|
|
7404
|
+
this.model.inputValue = '';
|
|
7405
|
+
// Emit event for parent to handle
|
|
7406
|
+
this.messageSent.emit(messageEvent);
|
|
7407
|
+
}
|
|
7408
|
+
}
|
|
7409
|
+
onInputChange(value) {
|
|
7410
|
+
this.model.inputValue = value;
|
|
7411
|
+
this.inputChanged.emit(value);
|
|
7412
|
+
}
|
|
7413
|
+
onRetry() {
|
|
7414
|
+
this.retryClicked.emit();
|
|
7415
|
+
}
|
|
7416
|
+
scrollToBottom() {
|
|
7417
|
+
if (this.chatContainer) {
|
|
7418
|
+
const element = this.chatContainer.nativeElement;
|
|
7419
|
+
element.scrollTop = element.scrollHeight;
|
|
7420
|
+
}
|
|
7421
|
+
}
|
|
7422
|
+
/**
|
|
7423
|
+
* Gets formatted time string for message timestamp
|
|
7424
|
+
*/
|
|
7425
|
+
getMessageTime(timestamp) {
|
|
7426
|
+
const date = typeof timestamp === 'string' ? new Date(timestamp) : timestamp;
|
|
7427
|
+
return date.toLocaleString('en-US', {
|
|
7428
|
+
month: 'short',
|
|
7429
|
+
day: 'numeric',
|
|
7430
|
+
hour: 'numeric',
|
|
7431
|
+
minute: '2-digit',
|
|
7432
|
+
hour12: true
|
|
7433
|
+
});
|
|
7434
|
+
}
|
|
7435
|
+
/**
|
|
7436
|
+
* Gets the display text for message status
|
|
7437
|
+
*/
|
|
7438
|
+
getStatusText(status) {
|
|
7439
|
+
const statusMap = {
|
|
7440
|
+
'pending': 'Sending...',
|
|
7441
|
+
'delivered': 'Delivered',
|
|
7442
|
+
'error': 'Failed to send'
|
|
7443
|
+
};
|
|
7444
|
+
return statusMap[status] || '';
|
|
7445
|
+
}
|
|
7446
|
+
addWelcomeMessageIfNeeded() {
|
|
7447
|
+
if (!this.hasAddedWelcomeMessage && this.model.messages.length === 0 && this.config.welcomeMessage) {
|
|
7448
|
+
this.model.messages.push({
|
|
7449
|
+
id: 'welcome-message',
|
|
7450
|
+
content: this.config.welcomeMessage,
|
|
7451
|
+
timestamp: new Date(),
|
|
7452
|
+
type: 'ai'
|
|
7453
|
+
});
|
|
7454
|
+
this.hasAddedWelcomeMessage = true;
|
|
7455
|
+
this.shouldScrollToBottom = true;
|
|
7456
|
+
}
|
|
7457
|
+
}
|
|
7458
|
+
}
|
|
7459
|
+
AISearchAssistantDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AISearchAssistantDrawerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
7460
|
+
AISearchAssistantDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: AISearchAssistantDrawerComponent, selector: "symphony-ai-search-assistant-drawer", inputs: { model: "model", config: "config" }, outputs: { drawerClosed: "drawerClosed", promptSelected: "promptSelected", messageSent: "messageSent", inputChanged: "inputChanged", retryClicked: "retryClicked" }, viewQueries: [{ propertyName: "chatContainer", first: true, predicate: ["chatContainer"], descendants: true }, { propertyName: "messageInput", first: true, predicate: ["messageInput"], descendants: true }], ngImport: i0, template: "<!-- Drawer Container -->\n<div \n class=\"ai-drawer-container\" \n [class.open]=\"model.isOpen\">\n \n <!-- Edge Toggle Button (inside drawer container) -->\n <button \n class=\"ai-drawer-edge-toggle\"\n [class.drawer-open]=\"model.isOpen\"\n (click)=\"model.isOpen = !model.isOpen; onToggleDrawer()\"\n [attr.aria-label]=\"model.isOpen ? 'Close AI Assistant' : 'Open AI Assistant'\"\n [title]=\"model.isOpen ? 'Close AI Assistant' : 'AI Assisted Messaging'\">\n <symphony-icon [icon]=\"model.isOpen ? 'si-arrow-next' : 'si-arrow-prev'\"></symphony-icon>\n </button>\n \n <!-- Header -->\n <div class=\"ai-drawer-header\" *ngIf=\"model.isOpen\">\n <symphony-h3 class=\"ai-drawer-title sfx-m-0\">AI Writing Assistant</symphony-h3>\n </div>\n\n <!-- Chat Container -->\n <div class=\"ai-drawer-body\" *ngIf=\"model.isOpen\">\n \n <!-- Messages Area -->\n <div \n class=\"ai-chat-container\" \n #chatContainer>\n \n <!-- Message List -->\n <div class=\"ai-message-list sfx-mb-20\">\n <div \n *ngFor=\"let message of model.messages; trackBy: trackByMessageId\"\n class=\"ai-message-wrapper\"\n [attr.data-message-type]=\"message.type\">\n \n <!-- Timestamp Above Message -->\n <div \n class=\"ai-message-timestamp-container\"\n *ngIf=\"config.showTimestamps\">\n <span class=\"ai-message-timestamp\">\n {{ getMessageTime(message.timestamp) }}\n </span>\n </div>\n \n <!-- Message Bubble -->\n <div \n class=\"ai-message-bubble\"\n [class.user-message]=\"message.type === 'user'\"\n [class.ai-message]=\"message.type === 'ai'\"\n [class.system-message]=\"message.type === 'system'\">\n \n <!-- AI Message Icon -->\n <div \n class=\"ai-message-icon\" \n *ngIf=\"message.type === 'ai'\">\n <symphony-icon [icon]=\"'si-chatbot'\"></symphony-icon>\n </div>\n \n <div class=\"ai-message-content-wrapper\">\n <symphony-paragraph \n class=\"ai-message-content sfx-m-0\"\n [innerHTML]=\"message.content | newLineToBr\">\n </symphony-paragraph>\n </div>\n </div>\n \n <!-- Message Status (for user messages) -->\n <div \n class=\"ai-message-status\"\n *ngIf=\"message.type === 'user' && message.status\">\n <span \n class=\"ai-status-text\"\n [class.status-delivered]=\"message.status === 'delivered'\"\n [class.status-pending]=\"message.status === 'pending'\"\n [class.status-error]=\"message.status === 'error'\">\n {{ getStatusText(message.status) }}\n </span>\n </div>\n </div>\n\n <!-- Loading Message -->\n <div \n class=\"ai-message-wrapper ai-loading-message\"\n *ngIf=\"model.isLoading\">\n <div class=\"ai-message-bubble ai-message\">\n <div class=\"ai-message-icon\">\n <symphony-icon [icon]=\"'si-chatbot'\"></symphony-icon>\n </div>\n <div class=\"ai-loading-content\">\n <symphony-sfx-loader size=\"small\"></symphony-sfx-loader>\n <symphony-paragraph class=\"ai-loading-text sfx-m-0\">\n AI is thinking...\n </symphony-paragraph>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Error State -->\n <div \n class=\"ai-error-container sfx-mt-15\"\n *ngIf=\"model.hasError\">\n <symphony-paragraph class=\"ai-error-message sfx-m-0\">\n {{ model.errorMessage }}\n </symphony-paragraph>\n <symphony-button-v2 \n variant=\"secondary\"\n size=\"small\"\n (click)=\"onRetry()\">\n Try Again\n </symphony-button-v2>\n </div>\n </div>\n\n <!-- Suggested Prompts -->\n <div \n class=\"ai-suggested-prompts\"\n *ngIf=\"config.enableSuggestedPrompts && model.suggestedPrompts.length > 0\">\n \n <symphony-paragraph class=\"ai-prompts-intro sfx-mb-15\">\n Need help writing an email? Here are a few suggested prompts to get you started.\n </symphony-paragraph>\n \n <div class=\"ai-prompts-list\">\n <button\n *ngFor=\"let prompt of model.suggestedPrompts\"\n class=\"ai-prompt-button\"\n (click)=\"onPromptClick(prompt)\">\n <symphony-icon \n *ngIf=\"prompt.icon\" \n [icon]=\"'si-' + prompt.icon\"\n class=\"ai-prompt-icon\">\n </symphony-icon>\n <span class=\"ai-prompt-text\">{{ prompt.text }}</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Footer / Input Area -->\n <div class=\"ai-drawer-footer\" *ngIf=\"model.isOpen\">\n \n <!-- Input Row -->\n <div class=\"ai-input-row\">\n <symphony-input-textarea-with-send\n #messageInput\n [(ngModel)]=\"model.inputValue\"\n [placeholder]=\"config.placeholder\"\n [isDisabled]=\"model.isLoading\"\n [maxCharacterLimit]=\"model.maxCharacterLimit\"\n [showCharacterCount]=\"!!model.maxCharacterLimit\"\n (sendClicked)=\"onSendMessage()\"\n (valueChanged)=\"onInputChange($event)\"\n (enterPressed)=\"onSendMessage()\">\n </symphony-input-textarea-with-send>\n </div>\n </div>\n</div> ", styles: [".sfx-p-0{padding:0}.sfx-p-5{padding:.3rem}.sfx-p-10{padding:.625rem}.sfx-p-15{padding:.9375rem}.sfx-p-20{padding:1.25rem}.sfx-p-30{padding:1.875rem}.sfx-pt-0{padding-top:0}.sfx-pt-5{padding-top:.3rem}.sfx-pt-10{padding-top:.625rem}.sfx-pt-15{padding-top:.9375rem}.sfx-pt-20{padding-top:1.25rem}.sfx-pt-25{padding-top:1.5625rem}.sfx-pt-30{padding-top:1.875rem}.sfx-pt-35{padding-top:2.1875rem}.sfx-pt-40{padding-top:2.5rem}.sfx-pt-50{padding-top:3.125rem}.sfx-pb-0{padding-bottom:0}.sfx-pb-5{padding-bottom:.3rem}.sfx-pb-10{padding-bottom:.625rem}.sfx-pb-15{padding-bottom:.9375rem}.sfx-pb-20{padding-bottom:1.25rem}.sfx-pb-25{padding-bottom:1.5625rem}.sfx-pb-30{padding-bottom:1.875rem}.sfx-pb-35{padding-bottom:2.1875rem}.sfx-pb-40{padding-bottom:2.5rem}.sfx-pb-50{padding-bottom:3.125rem}.sfx-pl-0{padding-left:0}.sfx-pl-5{padding-left:.3rem}.sfx-pl-10{padding-left:.625rem}.sfx-pl-15{padding-left:.9375rem}.sfx-pl-20{padding-left:1.25rem}.sfx-pl-25{padding-left:1.5625rem}.sfx-pl-30{padding-left:1.875rem}.sfx-pr-0{padding-right:0}.sfx-pr-5{padding-right:.3rem}.sfx-pr-10{padding-right:.625rem}.sfx-pr-15{padding-right:.9375rem}.sfx-pr-20{padding-right:1.25rem}.sfx-pr-25{padding-right:1.5625rem}.sfx-pr-30{padding-right:1.875rem}.sfx-py-15{padding-left:.9375rem;padding-right:.9375rem}.sfx-py-30{padding-left:1.875rem;padding-right:1.875rem}.sfx-px-0{padding-top:0;padding-bottom:0}.sfx-px-15{padding-top:.9375rem;padding-bottom:.9375rem}.sfx-px-20{padding-top:1.25rem;padding-bottom:1.25rem}.sfx-px-30{padding-top:1.875rem;padding-bottom:1.875rem}.sfx-m-0{margin:0}.sfx-m-5{margin:.3rem}.sfx-m-10{margin:.625rem}.sfx-m-15{margin:.9375rem}.sfx-m-20{margin:1.25rem}.sfx-m-auto{margin:0 auto}.sfx-mt-0{margin-top:0}.sfx-mt-5{margin-top:.3rem}.sfx-mt-10{margin-top:.625rem}.sfx-mt-15{margin-top:.9375rem}.sfx-mt-20{margin-top:1.25rem}.sfx-mt-25{margin-top:1.5625rem}.sfx-mt-30{margin-top:1.875rem}.sfx-mt-40{margin-top:2.5rem}.sfx-mt-80{margin-top:5rem}.sfx-mb-0{margin-bottom:0}.sfx-mb-5{margin-bottom:.3rem}.sfx-mb-10{margin-bottom:.625rem}.sfx-mb-15{margin-bottom:.9375rem}.sfx-mb-20{margin-bottom:1.25rem}.sfx-mb-25{margin-bottom:1.5625rem}.sfx-mb-30{margin-bottom:1.875rem}.sfx-mb-40{margin-bottom:2.5rem}.sfx-mb-50{margin-bottom:3.125rem}.sfx-ml-0{margin-left:0}.sfx-ml-5{margin-left:.3rem}.sfx-ml-10{margin-left:.625rem}.sfx-ml-15{margin-left:.9375rem}.sfx-ml-20{margin-left:1.25rem}.sfx-ml-auto{margin-left:auto}.sfx-mr-0{margin-right:0}.sfx-mr-5{margin-right:.3rem}.sfx-mr-10{margin-right:.625rem}.sfx-mr-15{margin-right:.9375rem}.sfx-mr-20{margin-right:1.25rem}.sfx-mr-25{margin-right:1.5625rem}.sfx-mr-30{margin-right:1.875rem}.sfx-mr-40{margin-right:2.5rem}.ai-drawer-container{position:absolute;top:0;right:0;width:100%;max-width:500px;height:100%;background-color:#fff;box-shadow:-4px 0 24px rgba(0,0,0,.15);z-index:9999;display:flex;flex-direction:column;transform:translate(100%);transition:transform .3s cubic-bezier(.4,0,.2,1)}.ai-drawer-container.open{transform:translate(0)}@media (max-width: 768px){.ai-drawer-container{width:100%;box-shadow:none}}.ai-drawer-edge-toggle{position:absolute;top:50%;left:-48px;transform:translateY(-50%);width:48px;height:48px;border:1px solid #D2D8E5;border-radius:8px 0 0 8px;background-color:#2b8ff3;color:#fff;cursor:pointer;box-shadow:-2px 0 8px rgba(0,0,0,.15);z-index:10001;display:flex;align-items:center;justify-content:center;transition:all .3s ease}.ai-drawer-edge-toggle:hover{background-color:#0d76de;box-shadow:-4px 0 12px rgba(0,0,0,.2);transform:translateY(-50%) scale(1.02)}.ai-drawer-edge-toggle:focus{outline:2px solid #2B8FF3;outline-offset:2px}.ai-drawer-edge-toggle symphony-icon{font-size:20px;transition:transform .2s ease;display:block;line-height:1;color:#fff}.ai-drawer-edge-toggle.drawer-open{left:-35px;background-color:#fff;color:#2b8ff3;border-color:#d2d8e5;border-radius:8px 0 0 8px;box-shadow:-2px 0 8px rgba(0,0,0,.1)}.ai-drawer-edge-toggle.drawer-open:hover{background-color:#f1f2f5;color:#0d76de;box-shadow:-4px 0 12px rgba(0,0,0,.15);transform:translateY(-50%) scale(1.02)}.ai-drawer-edge-toggle.drawer-open symphony-icon{font-size:18px;color:#2b8ff3}@media (max-width: 768px){.ai-drawer-edge-toggle{left:-40px;width:40px;height:40px}.ai-drawer-edge-toggle symphony-icon{font-size:18px}.ai-drawer-edge-toggle.drawer-open{left:-40px;width:40px;height:40px}.ai-drawer-edge-toggle.drawer-open symphony-icon{font-size:16px}}.ai-drawer-header{display:flex;align-items:center;justify-content:center;padding:1.25rem 1.5625rem;border-bottom:1px solid #D2D8E5;background-color:#fff;position:relative;z-index:1}.ai-drawer-header .ai-drawer-title{font-size:1.125rem;font-weight:600;color:#08203e}.ai-drawer-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;z-index:1}.ai-chat-container{flex:1;display:flex;flex-direction:column;overflow-y:auto;padding:.9375rem 1.5625rem}.ai-chat-container::-webkit-scrollbar{width:6px}.ai-chat-container::-webkit-scrollbar-track{background:#F1F2F5}.ai-chat-container::-webkit-scrollbar-thumb{background:#C3CBDC;border-radius:3px}.ai-chat-container::-webkit-scrollbar-thumb:hover{background:#5B6D80}.ai-message-list{display:flex;flex-direction:column;gap:.9375rem}.ai-message-wrapper{display:flex;flex-direction:column}.ai-message-wrapper[data-message-type=user]{align-items:flex-end}.ai-message-wrapper[data-message-type=ai],.ai-message-wrapper[data-message-type=system],.ai-message-wrapper.ai-loading-message{align-items:flex-start}.ai-message-timestamp-container{margin-bottom:.625rem;text-align:center;width:100%;align-self:center}.ai-message-timestamp-container .ai-message-timestamp{font-size:.75rem;color:#82919f;font-weight:500}.ai-message-bubble{max-width:80%;border-radius:12px;word-wrap:break-word;animation:messageSlideIn .3s ease-out;display:flex;gap:.625rem}.ai-message-bubble.user-message{background-color:#2b8ff3;color:#fff;border-bottom-right-radius:4px;padding:.625rem .9375rem;justify-content:flex-end}.ai-message-bubble.user-message .ai-message-content-wrapper{display:flex;flex-direction:column;align-items:flex-end}.ai-message-bubble.ai-message{background-color:#fff;border:1px solid #D2D8E5;color:#08203e;border-bottom-left-radius:4px;padding:.625rem .9375rem;align-items:flex-start}.ai-message-bubble.ai-message .ai-message-icon{flex:0 0 auto;width:24px;height:24px;background-color:#f0f8ff;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-top:2px}.ai-message-bubble.ai-message .ai-message-icon symphony-icon{color:#2b8ff3;font-size:.875rem}.ai-message-bubble.ai-message .ai-message-content-wrapper{flex:1;display:flex;flex-direction:column}.ai-message-bubble.system-message{background-color:#f1f2f5;border:1px solid #E4E7EF;color:#5b6d80;border-radius:8px;text-align:center;max-width:90%;padding:.625rem .9375rem;justify-content:center}.ai-message-bubble.system-message .ai-message-content{font-size:.875rem}@media (max-width: 768px){.ai-message-bubble{max-width:90%}}.ai-message-status{margin-top:.3rem;text-align:right}.ai-message-status .ai-status-text{display:inline-flex;gap:4px;font-size:.75rem;font-weight:500}.ai-message-status .ai-status-text.status-delivered{color:#5b6d80}.ai-message-status .ai-status-text.status-delivered .ai-status-icon{color:#2cb45f;font-size:12px}.ai-message-status .ai-status-text.status-pending{color:#5b6d80}.ai-message-status .ai-status-text.status-pending .ai-status-loader{width:12px;height:12px}.ai-message-status .ai-status-text.status-error{color:#ac4463}.ai-message-status .ai-status-text.status-error .ai-status-icon{color:#ac4463;font-size:12px}.ai-loading-message .ai-message-bubble .ai-message-icon{flex:0 0 auto;width:24px;height:24px;background-color:#f0f8ff;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-top:2px}.ai-loading-message .ai-message-bubble .ai-message-icon symphony-icon{color:#2b8ff3;font-size:.875rem}.ai-loading-message .ai-message-bubble .ai-loading-content{display:flex;align-items:center;gap:.625rem;flex:1}.ai-loading-message .ai-message-bubble .ai-loading-text{font-style:italic;color:#5b6d80;font-size:.875rem}.ai-error-container{display:flex;flex-direction:column;align-items:center;gap:.625rem;padding:.9375rem;background-color:#fdf2f2;border:1px solid #AC4463;border-radius:8px}.ai-error-container .ai-error-message{color:#ac4463;text-align:center}.ai-suggested-prompts{padding:1.25rem 1.5625rem;border-top:1px solid #E4E7EF;background-color:#f1f2f5}.ai-suggested-prompts .ai-prompts-intro{font-size:.875rem;color:#5b6d80;text-align:center;line-height:1.4}.ai-suggested-prompts .ai-prompts-list{display:flex;flex-direction:column;gap:.625rem}.ai-suggested-prompts .ai-prompts-list .ai-prompt-button{display:flex;align-items:center;gap:.625rem;padding:.625rem .9375rem;border:1px solid #C5AEFF;border-radius:24px;background-color:transparent;color:#712ace;cursor:pointer;transition:all .2s ease;text-align:left;font-size:.875rem;min-height:48px}.ai-suggested-prompts .ai-prompts-list .ai-prompt-button:hover{background-color:#f3f0ff;border-color:#9d79ff;transform:translateY(-1px)}.ai-suggested-prompts .ai-prompts-list .ai-prompt-button:active{transform:translateY(0)}.ai-suggested-prompts .ai-prompts-list .ai-prompt-button .ai-prompt-icon{flex:0 0 auto;color:#712ace;font-size:16px}.ai-suggested-prompts .ai-prompts-list .ai-prompt-button .ai-prompt-text{flex:1;font-weight:400;line-height:1.3}.ai-drawer-footer{padding:.9375rem 1.5625rem 1.25rem;border-top:1px solid #D2D8E5;background-color:#fff;position:relative;z-index:1}.ai-input-row symphony-input-textarea-with-send{width:100%}.ai-footer-actions{text-align:center}.ai-footer-actions symphony-button-v2{font-size:.75rem;color:#5b6d80}.ai-footer-actions symphony-button-v2:hover{color:#08203e}@keyframes messageSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-contrast: high){.ai-drawer-container{border:2px solid #08203E}.ai-message-bubble.user-message{border:1px solid #0a5cae}.ai-message-bubble.ai-message{border:2px solid #5B6D80}.ai-message-bubble.system-message{border:2px solid #C3CBDC}}@media (prefers-reduced-motion: reduce){.ai-drawer-container,.ai-message-bubble,.ai-drawer-edge-toggle{transition:none;animation:none}}\n"], components: [{ type: IconComponent, selector: "symphony-icon", inputs: ["icon", "isSecondary", "size", "iconColor"], outputs: ["clicked"] }, { type: H3Component, selector: "symphony-h3", inputs: ["text", "isSecondary"] }, { type: ParagraphComponent, selector: "symphony-paragraph", inputs: ["text", "isSecondary", "isFontBold"] }, { type: SfxLoaderComponent, selector: "symphony-sfx-loader", inputs: ["leftStyle", "message", "hasCustomMessage"] }, { type: ButtonV2Component, selector: "symphony-button-v2" }, { type: InputTextareaWithSendComponent, selector: "symphony-input-textarea-with-send", inputs: ["placeholder", "isDisabled", "maxCharacterLimit", "showCharacterCount", "minRows", "maxRows", "sendButtonIcon", "sendButtonAriaLabel", "autoResize"], outputs: ["sendClicked", "enterPressed", "valueChanged"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "newLineToBr": NewLineToBrPipe } });
|
|
7461
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AISearchAssistantDrawerComponent, decorators: [{
|
|
7462
|
+
type: Component,
|
|
7463
|
+
args: [{ selector: 'symphony-ai-search-assistant-drawer', template: "<!-- Drawer Container -->\n<div \n class=\"ai-drawer-container\" \n [class.open]=\"model.isOpen\">\n \n <!-- Edge Toggle Button (inside drawer container) -->\n <button \n class=\"ai-drawer-edge-toggle\"\n [class.drawer-open]=\"model.isOpen\"\n (click)=\"model.isOpen = !model.isOpen; onToggleDrawer()\"\n [attr.aria-label]=\"model.isOpen ? 'Close AI Assistant' : 'Open AI Assistant'\"\n [title]=\"model.isOpen ? 'Close AI Assistant' : 'AI Assisted Messaging'\">\n <symphony-icon [icon]=\"model.isOpen ? 'si-arrow-next' : 'si-arrow-prev'\"></symphony-icon>\n </button>\n \n <!-- Header -->\n <div class=\"ai-drawer-header\" *ngIf=\"model.isOpen\">\n <symphony-h3 class=\"ai-drawer-title sfx-m-0\">AI Writing Assistant</symphony-h3>\n </div>\n\n <!-- Chat Container -->\n <div class=\"ai-drawer-body\" *ngIf=\"model.isOpen\">\n \n <!-- Messages Area -->\n <div \n class=\"ai-chat-container\" \n #chatContainer>\n \n <!-- Message List -->\n <div class=\"ai-message-list sfx-mb-20\">\n <div \n *ngFor=\"let message of model.messages; trackBy: trackByMessageId\"\n class=\"ai-message-wrapper\"\n [attr.data-message-type]=\"message.type\">\n \n <!-- Timestamp Above Message -->\n <div \n class=\"ai-message-timestamp-container\"\n *ngIf=\"config.showTimestamps\">\n <span class=\"ai-message-timestamp\">\n {{ getMessageTime(message.timestamp) }}\n </span>\n </div>\n \n <!-- Message Bubble -->\n <div \n class=\"ai-message-bubble\"\n [class.user-message]=\"message.type === 'user'\"\n [class.ai-message]=\"message.type === 'ai'\"\n [class.system-message]=\"message.type === 'system'\">\n \n <!-- AI Message Icon -->\n <div \n class=\"ai-message-icon\" \n *ngIf=\"message.type === 'ai'\">\n <symphony-icon [icon]=\"'si-chatbot'\"></symphony-icon>\n </div>\n \n <div class=\"ai-message-content-wrapper\">\n <symphony-paragraph \n class=\"ai-message-content sfx-m-0\"\n [innerHTML]=\"message.content | newLineToBr\">\n </symphony-paragraph>\n </div>\n </div>\n \n <!-- Message Status (for user messages) -->\n <div \n class=\"ai-message-status\"\n *ngIf=\"message.type === 'user' && message.status\">\n <span \n class=\"ai-status-text\"\n [class.status-delivered]=\"message.status === 'delivered'\"\n [class.status-pending]=\"message.status === 'pending'\"\n [class.status-error]=\"message.status === 'error'\">\n {{ getStatusText(message.status) }}\n </span>\n </div>\n </div>\n\n <!-- Loading Message -->\n <div \n class=\"ai-message-wrapper ai-loading-message\"\n *ngIf=\"model.isLoading\">\n <div class=\"ai-message-bubble ai-message\">\n <div class=\"ai-message-icon\">\n <symphony-icon [icon]=\"'si-chatbot'\"></symphony-icon>\n </div>\n <div class=\"ai-loading-content\">\n <symphony-sfx-loader size=\"small\"></symphony-sfx-loader>\n <symphony-paragraph class=\"ai-loading-text sfx-m-0\">\n AI is thinking...\n </symphony-paragraph>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Error State -->\n <div \n class=\"ai-error-container sfx-mt-15\"\n *ngIf=\"model.hasError\">\n <symphony-paragraph class=\"ai-error-message sfx-m-0\">\n {{ model.errorMessage }}\n </symphony-paragraph>\n <symphony-button-v2 \n variant=\"secondary\"\n size=\"small\"\n (click)=\"onRetry()\">\n Try Again\n </symphony-button-v2>\n </div>\n </div>\n\n <!-- Suggested Prompts -->\n <div \n class=\"ai-suggested-prompts\"\n *ngIf=\"config.enableSuggestedPrompts && model.suggestedPrompts.length > 0\">\n \n <symphony-paragraph class=\"ai-prompts-intro sfx-mb-15\">\n Need help writing an email? Here are a few suggested prompts to get you started.\n </symphony-paragraph>\n \n <div class=\"ai-prompts-list\">\n <button\n *ngFor=\"let prompt of model.suggestedPrompts\"\n class=\"ai-prompt-button\"\n (click)=\"onPromptClick(prompt)\">\n <symphony-icon \n *ngIf=\"prompt.icon\" \n [icon]=\"'si-' + prompt.icon\"\n class=\"ai-prompt-icon\">\n </symphony-icon>\n <span class=\"ai-prompt-text\">{{ prompt.text }}</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Footer / Input Area -->\n <div class=\"ai-drawer-footer\" *ngIf=\"model.isOpen\">\n \n <!-- Input Row -->\n <div class=\"ai-input-row\">\n <symphony-input-textarea-with-send\n #messageInput\n [(ngModel)]=\"model.inputValue\"\n [placeholder]=\"config.placeholder\"\n [isDisabled]=\"model.isLoading\"\n [maxCharacterLimit]=\"model.maxCharacterLimit\"\n [showCharacterCount]=\"!!model.maxCharacterLimit\"\n (sendClicked)=\"onSendMessage()\"\n (valueChanged)=\"onInputChange($event)\"\n (enterPressed)=\"onSendMessage()\">\n </symphony-input-textarea-with-send>\n </div>\n </div>\n</div> ", styles: [".sfx-p-0{padding:0}.sfx-p-5{padding:.3rem}.sfx-p-10{padding:.625rem}.sfx-p-15{padding:.9375rem}.sfx-p-20{padding:1.25rem}.sfx-p-30{padding:1.875rem}.sfx-pt-0{padding-top:0}.sfx-pt-5{padding-top:.3rem}.sfx-pt-10{padding-top:.625rem}.sfx-pt-15{padding-top:.9375rem}.sfx-pt-20{padding-top:1.25rem}.sfx-pt-25{padding-top:1.5625rem}.sfx-pt-30{padding-top:1.875rem}.sfx-pt-35{padding-top:2.1875rem}.sfx-pt-40{padding-top:2.5rem}.sfx-pt-50{padding-top:3.125rem}.sfx-pb-0{padding-bottom:0}.sfx-pb-5{padding-bottom:.3rem}.sfx-pb-10{padding-bottom:.625rem}.sfx-pb-15{padding-bottom:.9375rem}.sfx-pb-20{padding-bottom:1.25rem}.sfx-pb-25{padding-bottom:1.5625rem}.sfx-pb-30{padding-bottom:1.875rem}.sfx-pb-35{padding-bottom:2.1875rem}.sfx-pb-40{padding-bottom:2.5rem}.sfx-pb-50{padding-bottom:3.125rem}.sfx-pl-0{padding-left:0}.sfx-pl-5{padding-left:.3rem}.sfx-pl-10{padding-left:.625rem}.sfx-pl-15{padding-left:.9375rem}.sfx-pl-20{padding-left:1.25rem}.sfx-pl-25{padding-left:1.5625rem}.sfx-pl-30{padding-left:1.875rem}.sfx-pr-0{padding-right:0}.sfx-pr-5{padding-right:.3rem}.sfx-pr-10{padding-right:.625rem}.sfx-pr-15{padding-right:.9375rem}.sfx-pr-20{padding-right:1.25rem}.sfx-pr-25{padding-right:1.5625rem}.sfx-pr-30{padding-right:1.875rem}.sfx-py-15{padding-left:.9375rem;padding-right:.9375rem}.sfx-py-30{padding-left:1.875rem;padding-right:1.875rem}.sfx-px-0{padding-top:0;padding-bottom:0}.sfx-px-15{padding-top:.9375rem;padding-bottom:.9375rem}.sfx-px-20{padding-top:1.25rem;padding-bottom:1.25rem}.sfx-px-30{padding-top:1.875rem;padding-bottom:1.875rem}.sfx-m-0{margin:0}.sfx-m-5{margin:.3rem}.sfx-m-10{margin:.625rem}.sfx-m-15{margin:.9375rem}.sfx-m-20{margin:1.25rem}.sfx-m-auto{margin:0 auto}.sfx-mt-0{margin-top:0}.sfx-mt-5{margin-top:.3rem}.sfx-mt-10{margin-top:.625rem}.sfx-mt-15{margin-top:.9375rem}.sfx-mt-20{margin-top:1.25rem}.sfx-mt-25{margin-top:1.5625rem}.sfx-mt-30{margin-top:1.875rem}.sfx-mt-40{margin-top:2.5rem}.sfx-mt-80{margin-top:5rem}.sfx-mb-0{margin-bottom:0}.sfx-mb-5{margin-bottom:.3rem}.sfx-mb-10{margin-bottom:.625rem}.sfx-mb-15{margin-bottom:.9375rem}.sfx-mb-20{margin-bottom:1.25rem}.sfx-mb-25{margin-bottom:1.5625rem}.sfx-mb-30{margin-bottom:1.875rem}.sfx-mb-40{margin-bottom:2.5rem}.sfx-mb-50{margin-bottom:3.125rem}.sfx-ml-0{margin-left:0}.sfx-ml-5{margin-left:.3rem}.sfx-ml-10{margin-left:.625rem}.sfx-ml-15{margin-left:.9375rem}.sfx-ml-20{margin-left:1.25rem}.sfx-ml-auto{margin-left:auto}.sfx-mr-0{margin-right:0}.sfx-mr-5{margin-right:.3rem}.sfx-mr-10{margin-right:.625rem}.sfx-mr-15{margin-right:.9375rem}.sfx-mr-20{margin-right:1.25rem}.sfx-mr-25{margin-right:1.5625rem}.sfx-mr-30{margin-right:1.875rem}.sfx-mr-40{margin-right:2.5rem}.ai-drawer-container{position:absolute;top:0;right:0;width:100%;max-width:500px;height:100%;background-color:#fff;box-shadow:-4px 0 24px rgba(0,0,0,.15);z-index:9999;display:flex;flex-direction:column;transform:translate(100%);transition:transform .3s cubic-bezier(.4,0,.2,1)}.ai-drawer-container.open{transform:translate(0)}@media (max-width: 768px){.ai-drawer-container{width:100%;box-shadow:none}}.ai-drawer-edge-toggle{position:absolute;top:50%;left:-48px;transform:translateY(-50%);width:48px;height:48px;border:1px solid #D2D8E5;border-radius:8px 0 0 8px;background-color:#2b8ff3;color:#fff;cursor:pointer;box-shadow:-2px 0 8px rgba(0,0,0,.15);z-index:10001;display:flex;align-items:center;justify-content:center;transition:all .3s ease}.ai-drawer-edge-toggle:hover{background-color:#0d76de;box-shadow:-4px 0 12px rgba(0,0,0,.2);transform:translateY(-50%) scale(1.02)}.ai-drawer-edge-toggle:focus{outline:2px solid #2B8FF3;outline-offset:2px}.ai-drawer-edge-toggle symphony-icon{font-size:20px;transition:transform .2s ease;display:block;line-height:1;color:#fff}.ai-drawer-edge-toggle.drawer-open{left:-35px;background-color:#fff;color:#2b8ff3;border-color:#d2d8e5;border-radius:8px 0 0 8px;box-shadow:-2px 0 8px rgba(0,0,0,.1)}.ai-drawer-edge-toggle.drawer-open:hover{background-color:#f1f2f5;color:#0d76de;box-shadow:-4px 0 12px rgba(0,0,0,.15);transform:translateY(-50%) scale(1.02)}.ai-drawer-edge-toggle.drawer-open symphony-icon{font-size:18px;color:#2b8ff3}@media (max-width: 768px){.ai-drawer-edge-toggle{left:-40px;width:40px;height:40px}.ai-drawer-edge-toggle symphony-icon{font-size:18px}.ai-drawer-edge-toggle.drawer-open{left:-40px;width:40px;height:40px}.ai-drawer-edge-toggle.drawer-open symphony-icon{font-size:16px}}.ai-drawer-header{display:flex;align-items:center;justify-content:center;padding:1.25rem 1.5625rem;border-bottom:1px solid #D2D8E5;background-color:#fff;position:relative;z-index:1}.ai-drawer-header .ai-drawer-title{font-size:1.125rem;font-weight:600;color:#08203e}.ai-drawer-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;z-index:1}.ai-chat-container{flex:1;display:flex;flex-direction:column;overflow-y:auto;padding:.9375rem 1.5625rem}.ai-chat-container::-webkit-scrollbar{width:6px}.ai-chat-container::-webkit-scrollbar-track{background:#F1F2F5}.ai-chat-container::-webkit-scrollbar-thumb{background:#C3CBDC;border-radius:3px}.ai-chat-container::-webkit-scrollbar-thumb:hover{background:#5B6D80}.ai-message-list{display:flex;flex-direction:column;gap:.9375rem}.ai-message-wrapper{display:flex;flex-direction:column}.ai-message-wrapper[data-message-type=user]{align-items:flex-end}.ai-message-wrapper[data-message-type=ai],.ai-message-wrapper[data-message-type=system],.ai-message-wrapper.ai-loading-message{align-items:flex-start}.ai-message-timestamp-container{margin-bottom:.625rem;text-align:center;width:100%;align-self:center}.ai-message-timestamp-container .ai-message-timestamp{font-size:.75rem;color:#82919f;font-weight:500}.ai-message-bubble{max-width:80%;border-radius:12px;word-wrap:break-word;animation:messageSlideIn .3s ease-out;display:flex;gap:.625rem}.ai-message-bubble.user-message{background-color:#2b8ff3;color:#fff;border-bottom-right-radius:4px;padding:.625rem .9375rem;justify-content:flex-end}.ai-message-bubble.user-message .ai-message-content-wrapper{display:flex;flex-direction:column;align-items:flex-end}.ai-message-bubble.ai-message{background-color:#fff;border:1px solid #D2D8E5;color:#08203e;border-bottom-left-radius:4px;padding:.625rem .9375rem;align-items:flex-start}.ai-message-bubble.ai-message .ai-message-icon{flex:0 0 auto;width:24px;height:24px;background-color:#f0f8ff;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-top:2px}.ai-message-bubble.ai-message .ai-message-icon symphony-icon{color:#2b8ff3;font-size:.875rem}.ai-message-bubble.ai-message .ai-message-content-wrapper{flex:1;display:flex;flex-direction:column}.ai-message-bubble.system-message{background-color:#f1f2f5;border:1px solid #E4E7EF;color:#5b6d80;border-radius:8px;text-align:center;max-width:90%;padding:.625rem .9375rem;justify-content:center}.ai-message-bubble.system-message .ai-message-content{font-size:.875rem}@media (max-width: 768px){.ai-message-bubble{max-width:90%}}.ai-message-status{margin-top:.3rem;text-align:right}.ai-message-status .ai-status-text{display:inline-flex;gap:4px;font-size:.75rem;font-weight:500}.ai-message-status .ai-status-text.status-delivered{color:#5b6d80}.ai-message-status .ai-status-text.status-delivered .ai-status-icon{color:#2cb45f;font-size:12px}.ai-message-status .ai-status-text.status-pending{color:#5b6d80}.ai-message-status .ai-status-text.status-pending .ai-status-loader{width:12px;height:12px}.ai-message-status .ai-status-text.status-error{color:#ac4463}.ai-message-status .ai-status-text.status-error .ai-status-icon{color:#ac4463;font-size:12px}.ai-loading-message .ai-message-bubble .ai-message-icon{flex:0 0 auto;width:24px;height:24px;background-color:#f0f8ff;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-top:2px}.ai-loading-message .ai-message-bubble .ai-message-icon symphony-icon{color:#2b8ff3;font-size:.875rem}.ai-loading-message .ai-message-bubble .ai-loading-content{display:flex;align-items:center;gap:.625rem;flex:1}.ai-loading-message .ai-message-bubble .ai-loading-text{font-style:italic;color:#5b6d80;font-size:.875rem}.ai-error-container{display:flex;flex-direction:column;align-items:center;gap:.625rem;padding:.9375rem;background-color:#fdf2f2;border:1px solid #AC4463;border-radius:8px}.ai-error-container .ai-error-message{color:#ac4463;text-align:center}.ai-suggested-prompts{padding:1.25rem 1.5625rem;border-top:1px solid #E4E7EF;background-color:#f1f2f5}.ai-suggested-prompts .ai-prompts-intro{font-size:.875rem;color:#5b6d80;text-align:center;line-height:1.4}.ai-suggested-prompts .ai-prompts-list{display:flex;flex-direction:column;gap:.625rem}.ai-suggested-prompts .ai-prompts-list .ai-prompt-button{display:flex;align-items:center;gap:.625rem;padding:.625rem .9375rem;border:1px solid #C5AEFF;border-radius:24px;background-color:transparent;color:#712ace;cursor:pointer;transition:all .2s ease;text-align:left;font-size:.875rem;min-height:48px}.ai-suggested-prompts .ai-prompts-list .ai-prompt-button:hover{background-color:#f3f0ff;border-color:#9d79ff;transform:translateY(-1px)}.ai-suggested-prompts .ai-prompts-list .ai-prompt-button:active{transform:translateY(0)}.ai-suggested-prompts .ai-prompts-list .ai-prompt-button .ai-prompt-icon{flex:0 0 auto;color:#712ace;font-size:16px}.ai-suggested-prompts .ai-prompts-list .ai-prompt-button .ai-prompt-text{flex:1;font-weight:400;line-height:1.3}.ai-drawer-footer{padding:.9375rem 1.5625rem 1.25rem;border-top:1px solid #D2D8E5;background-color:#fff;position:relative;z-index:1}.ai-input-row symphony-input-textarea-with-send{width:100%}.ai-footer-actions{text-align:center}.ai-footer-actions symphony-button-v2{font-size:.75rem;color:#5b6d80}.ai-footer-actions symphony-button-v2:hover{color:#08203e}@keyframes messageSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-contrast: high){.ai-drawer-container{border:2px solid #08203E}.ai-message-bubble.user-message{border:1px solid #0a5cae}.ai-message-bubble.ai-message{border:2px solid #5B6D80}.ai-message-bubble.system-message{border:2px solid #C3CBDC}}@media (prefers-reduced-motion: reduce){.ai-drawer-container,.ai-message-bubble,.ai-drawer-edge-toggle{transition:none;animation:none}}\n"] }]
|
|
7464
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
|
|
7465
|
+
type: Input
|
|
7466
|
+
}], config: [{
|
|
7467
|
+
type: Input
|
|
7468
|
+
}], drawerClosed: [{
|
|
7469
|
+
type: Output
|
|
7470
|
+
}], promptSelected: [{
|
|
7471
|
+
type: Output
|
|
7472
|
+
}], messageSent: [{
|
|
7473
|
+
type: Output
|
|
7474
|
+
}], inputChanged: [{
|
|
7475
|
+
type: Output
|
|
7476
|
+
}], retryClicked: [{
|
|
7477
|
+
type: Output
|
|
7478
|
+
}], chatContainer: [{
|
|
7479
|
+
type: ViewChild,
|
|
7480
|
+
args: ['chatContainer']
|
|
7481
|
+
}], messageInput: [{
|
|
7482
|
+
type: ViewChild,
|
|
7483
|
+
args: ['messageInput']
|
|
7484
|
+
}] } });
|
|
7485
|
+
|
|
7486
|
+
class AISearchAssistantDrawerModule {
|
|
7487
|
+
}
|
|
7488
|
+
AISearchAssistantDrawerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AISearchAssistantDrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7489
|
+
AISearchAssistantDrawerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AISearchAssistantDrawerModule, declarations: [AISearchAssistantDrawerComponent,
|
|
7490
|
+
NewLineToBrPipe], imports: [CommonModule,
|
|
7491
|
+
FormsModule,
|
|
7492
|
+
H3Module,
|
|
7493
|
+
IconModule,
|
|
7494
|
+
ParagraphModule,
|
|
7495
|
+
ButtonV2Module,
|
|
7496
|
+
SfxLoaderModule,
|
|
7497
|
+
InputTextareaWithSendModule], exports: [AISearchAssistantDrawerComponent] });
|
|
7498
|
+
AISearchAssistantDrawerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AISearchAssistantDrawerModule, imports: [[
|
|
7499
|
+
CommonModule,
|
|
7500
|
+
FormsModule,
|
|
7501
|
+
H3Module,
|
|
7502
|
+
IconModule,
|
|
7503
|
+
ParagraphModule,
|
|
7504
|
+
ButtonV2Module,
|
|
7505
|
+
SfxLoaderModule,
|
|
7506
|
+
InputTextareaWithSendModule
|
|
7507
|
+
]] });
|
|
7508
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: AISearchAssistantDrawerModule, decorators: [{
|
|
7509
|
+
type: NgModule,
|
|
7510
|
+
args: [{
|
|
7511
|
+
declarations: [
|
|
7512
|
+
AISearchAssistantDrawerComponent,
|
|
7513
|
+
NewLineToBrPipe
|
|
7514
|
+
],
|
|
7515
|
+
imports: [
|
|
7516
|
+
CommonModule,
|
|
7517
|
+
FormsModule,
|
|
7518
|
+
H3Module,
|
|
7519
|
+
IconModule,
|
|
7520
|
+
ParagraphModule,
|
|
7521
|
+
ButtonV2Module,
|
|
7522
|
+
SfxLoaderModule,
|
|
7523
|
+
InputTextareaWithSendModule
|
|
7524
|
+
],
|
|
7525
|
+
exports: [
|
|
7526
|
+
AISearchAssistantDrawerComponent
|
|
7527
|
+
]
|
|
7528
|
+
}]
|
|
7529
|
+
}] });
|
|
7530
|
+
|
|
7120
7531
|
class OrganismsModule {
|
|
7121
7532
|
}
|
|
7122
7533
|
OrganismsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: OrganismsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -7152,7 +7563,9 @@ OrganismsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version
|
|
|
7152
7563
|
FilterDetailModule,
|
|
7153
7564
|
ReportsCardListModule,
|
|
7154
7565
|
GridActionBarV2Module,
|
|
7155
|
-
GenerateLicenseModalModule
|
|
7566
|
+
GenerateLicenseModalModule,
|
|
7567
|
+
// MergeContactsModalModule,
|
|
7568
|
+
AISearchAssistantDrawerModule] });
|
|
7156
7569
|
OrganismsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: OrganismsModule, imports: [[
|
|
7157
7570
|
CommonModule,
|
|
7158
7571
|
NoteListModule,
|
|
@@ -7186,7 +7599,9 @@ OrganismsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version
|
|
|
7186
7599
|
FilterDetailModule,
|
|
7187
7600
|
ReportsCardListModule,
|
|
7188
7601
|
GridActionBarV2Module,
|
|
7189
|
-
GenerateLicenseModalModule
|
|
7602
|
+
GenerateLicenseModalModule,
|
|
7603
|
+
// MergeContactsModalModule,
|
|
7604
|
+
AISearchAssistantDrawerModule
|
|
7190
7605
|
]] });
|
|
7191
7606
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: OrganismsModule, decorators: [{
|
|
7192
7607
|
type: NgModule,
|
|
@@ -7225,7 +7640,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
7225
7640
|
FilterDetailModule,
|
|
7226
7641
|
ReportsCardListModule,
|
|
7227
7642
|
GridActionBarV2Module,
|
|
7228
|
-
GenerateLicenseModalModule
|
|
7643
|
+
GenerateLicenseModalModule,
|
|
7644
|
+
// MergeContactsModalModule,
|
|
7645
|
+
AISearchAssistantDrawerModule
|
|
7229
7646
|
]
|
|
7230
7647
|
}]
|
|
7231
7648
|
}] });
|
|
@@ -10216,5 +10633,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
10216
10633
|
* Generated bundle index. Do not edit.
|
|
10217
10634
|
*/
|
|
10218
10635
|
|
|
10219
|
-
export { ActionBarComponent, ActionBarJobListComponent, ActionBarJobListModule, ActionBarModule, ActionBarSelectionCounterComponent, ActionBarSelectionCounterModule, ActivityScoreLevel, AdditionModalComponent, AdditionModalModule, AdditionalInformationCardListComponent, AdditionalInformationCardListModule, AdvanceFilterSelectedCounterComponent, AdvanceFilterSelectedCounterModule, AdvanceSearchModalComponent, AdvanceSearchModalModule, AdvertiseModalComponent, AdvertiseModalModule, AdvertisedJobPostingsListPageComponent, AdvertisedJobPostingsListPageModule, AdvertisedJobPostingsModalComponent, AdvertisedJobPostingsModalModule, AdvertisedJobsCostComponent, AdvertisedJobsCostModule, AlertDuration, AssignToUserModalComponent, AssignToUserModalModule, AssignedToWidgetComponent, AssignedToWidgetModule, AtomsModule, AvatarComponent, AvatarModule, BreadcrumbComponent, BreadcrumbModule, BulkImportAdminListPageComponent, BulkImportAdminListPageModule, ButtonComponent, ButtonDropdownComponent, ButtonDropdownModule, ButtonModule, ButtonV2Component, ButtonV2Module, ButtonWithIconComponent, ButtonWithIconModule, CapitalizeFirstCharacterPipe, CardComponent, CardListComponent, CardListModule, CardModule, CharacterCounterComponent, CharacterCounterModule, ChatHistoryDateStampComponent, ChatHistoryDateStampModule, ChatHistoryMessageAvatarComponent, ChatHistoryMessageAvatarModule, ChatHistoryMessageBubbleComponent, ChatHistoryMessageBubbleModule, ChatHistoryMessageItemComponent, ChatHistoryMessageItemModule, ChatHistoryMessageListComponent, ChatHistoryMessageListModule, ChatbotHistoryModalComponent, ChatbotHistoryModalModule, ColorNames, ColoredTextIndicatorComponent, ColoredTextIndicatorModule, ConfirmationModalComponent, ConfirmationModalModule, ContactActivityScoreComponent, ContactActivityScoreModule, ContextualMenuComponent, ContextualMenuModule, DocumentManagementItemComponent, DocumentManagementItemModule, DocumentManagementListComponent, DocumentManagementListModule, DomainWhitelistingPartialPageComponent, DomainWhitelistingPartialPageModule, EditableSettingItemComponent, EditableSettingItemListComponent, EditableSettingItemListModule, EditableSettingItemModule, EditableSettingKey, EditableSettingPartialPageComponent, EditableSettingPartialPageModule, EmailValidator, EventSettingsMoreOptionsComponent, EventSettingsMoreOptionsModule, EventsSettingsPageComponent, EventsSettingsPageModule, FeedbackCardComponent, FeedbackCardListComponent, FeedbackCardListModule, FeedbackCardModule, FeedbackCardState, FeedbackDetailPageComponent, FeedbackDetailPageModule, FeedbackListPageComponent, FeedbackListPageModule, FeedbackLoginModalComponent, FeedbackLoginModalModule, FeedbackRequestListPageComponent, FeedbackRequestListPageModule, FeedbackSettingDetailsPageComponent, FeedbackSettingDetailsPageModule, FileUploadComponent, FileUploadModule, FileUploadV2Component, FileUploadV2Module, FilterAreaComponent, FilterAreaModule, FilterDetailComponent, FilterDetailModule, FilterDetailTreeComponent, FilterDetailTreeModule, FilterTabsComponent, FilterTabsModule, FilterTabsV2Component, FilterTabsV2Module, FormattedCounterComponent, FormattedCounterModule, FrameworkModule, GenerateLicenseModalComponent, GenerateLicenseModalModule, GridActionBarV2Component, GridActionBarV2Module, GridActionsComponent, GridActionsModule, GridCellClickableComponent, GridCellClickableModule, GridCellClickedOpenNewTabComponent, GridCellClickedOpenNewTabModule, GridCellLoaderModule, GridComponent, GridControlsComponent, GridControlsModule, GridDownloadComponent, GridDownloadModule, GridLoadingCellComponent, GridModule, GridNoRowsOverlayComponent, GridNoRowsOverlayModule, GridToggleCellRendererComponent, GridToggleCellRendererModule, H1Component, H1Module, H2Component, H2Module, H3Component, H3Module, H4Component, H4Module, H5Component, H5Module, H5WithIconComponent, H5WithIconModule, IconComponent, IconModule, IconWithTooltipComponent, IconWithTooltipModule, IconWrapperComponent, IconWrapperModule, Icons, InformationModalComponent, InformationModalModule, InputCheckboxComponent, InputCheckboxListComponent, InputCheckboxListModule, InputCheckboxModule, InputChipsComponent, InputChipsModule, InputDropdownComponent, InputDropdownList, InputDropdownListItemModel, InputDropdownModule, InputFileUploadComponent, InputFileUploadModule, InputLimitedTextComponent, InputLimitedTextModule, InputNumberComponent, InputNumberModule, InputRadioComponent, InputRadioModule, InputRadioToggleComponent, InputRadioToggleModule, InputSearchCheckboxDropdownComponent, InputSearchCheckboxDropdownModule, InputTextComponent, InputTextModule, InputTextareaComponent, InputTextareaModule, InputToggleComponent, InputToggleModule, JobListPageComponent, JobListPageModule, LibrariesPageComponent, LibrariesPageModule, LinkedinPremiumJobPostingsModalComponent, LinkedinPremiumJobPostingsModalModule, MergeContactClickedOpenModalComponent, MergeContactClickedOpenModalModule, MoleculesModule, MultiSelectDataModule, MultiselectSearchCheckbox, NavigationLinkComponent, NavigationLinkModule, NotificationsComponent, NotificationsModule, OrganismsModule, OverflowTextComponent, OverflowTextModule, OverflowTextTooltipComponent, OverflowTextTooltipModule, ParagraphComponent, ParagraphModule, PartialPages, PhaserCardComponent, PhaserCardModule, PhaserComponent, PhaserModule, PillComponent, PillModule, PillsComponent, PillsModule, PipeModule, RelevanceScoreComponent, RelevanceScoreModule, ReportLicenseDetailsPageComponent, ReportLicenseDetailsPageModule, ReportsCardComponent, ReportsCardListComponent, ReportsCardListModule, ReportsCardModule, ReportsPageComponent, ReportsPageModule, ScheduleInterviewModalComponent, ScheduleInterviewModalModule, SettingDetailPageComponent, SettingDetailPageModule, SettingListPageComponent, SettingListPageModule, SettingsDetailNavigationItemComponent, SettingsDetailNavigationItemModule, SettingsDetailNavigationListComponent, SettingsDetailNavigationListModule, SettingsLicenseManagementComponent, SettingsLicenseManagementModule, SettingsReportManagementComponent, SettingsReportManagementModule, SfxLoaderComponent, SfxLoaderModule, SfxPageLoaderComponent, SfxPageLoaderModule, SfxProgressBarComponent, SfxProgressBarModule, SidebarNavigationComponent, SidebarNavigationModule, SidebarNavigationV2Component, SidebarNavigationV2Module, SmsUsageReportPageComponent, SmsUsageReportPageModule, StatusCardComponent, StatusCardModule, StatusIndicatorComponent, StatusIndicatorModule, StatusPillComponent, StatusPillModule, SymphonyModalComponent, SymphonyModalModule, TabsComponent, TabsModules, ToasterAlertComponent, ToasterAlertModel, ToasterAlertModule, ToasterAlertType, TooltipWrapperComponent, TooltipWrapperModule, TrimIdPipe, TwoColumnFilterAreaComponent, TwoColumnFilterAreaModule, UploadResumeModalComponent, UploadResumeModalModule, VerticalSeparatorComponent, VerticalSeparatorModule, gridType };
|
|
10636
|
+
export { AISearchAssistantDrawerComponent, AISearchAssistantDrawerModule, ActionBarComponent, ActionBarJobListComponent, ActionBarJobListModule, ActionBarModule, ActionBarSelectionCounterComponent, ActionBarSelectionCounterModule, ActivityScoreLevel, AdditionModalComponent, AdditionModalModule, AdditionalInformationCardListComponent, AdditionalInformationCardListModule, AdvanceFilterSelectedCounterComponent, AdvanceFilterSelectedCounterModule, AdvanceSearchModalComponent, AdvanceSearchModalModule, AdvertiseModalComponent, AdvertiseModalModule, AdvertisedJobPostingsListPageComponent, AdvertisedJobPostingsListPageModule, AdvertisedJobPostingsModalComponent, AdvertisedJobPostingsModalModule, AdvertisedJobsCostComponent, AdvertisedJobsCostModule, AlertDuration, AssignToUserModalComponent, AssignToUserModalModule, AssignedToWidgetComponent, AssignedToWidgetModule, AtomsModule, AvatarComponent, AvatarModule, BreadcrumbComponent, BreadcrumbModule, BulkImportAdminListPageComponent, BulkImportAdminListPageModule, ButtonComponent, ButtonDropdownComponent, ButtonDropdownModule, ButtonModule, ButtonV2Component, ButtonV2Module, ButtonWithIconComponent, ButtonWithIconModule, CapitalizeFirstCharacterPipe, CardComponent, CardListComponent, CardListModule, CardModule, CharacterCounterComponent, CharacterCounterModule, ChatHistoryDateStampComponent, ChatHistoryDateStampModule, ChatHistoryMessageAvatarComponent, ChatHistoryMessageAvatarModule, ChatHistoryMessageBubbleComponent, ChatHistoryMessageBubbleModule, ChatHistoryMessageItemComponent, ChatHistoryMessageItemModule, ChatHistoryMessageListComponent, ChatHistoryMessageListModule, ChatbotHistoryModalComponent, ChatbotHistoryModalModule, ColorNames, ColoredTextIndicatorComponent, ColoredTextIndicatorModule, ConfirmationModalComponent, ConfirmationModalModule, ContactActivityScoreComponent, ContactActivityScoreModule, ContextualMenuComponent, ContextualMenuModule, DocumentManagementItemComponent, DocumentManagementItemModule, DocumentManagementListComponent, DocumentManagementListModule, DomainWhitelistingPartialPageComponent, DomainWhitelistingPartialPageModule, EditableSettingItemComponent, EditableSettingItemListComponent, EditableSettingItemListModule, EditableSettingItemModule, EditableSettingKey, EditableSettingPartialPageComponent, EditableSettingPartialPageModule, EmailValidator, EventSettingsMoreOptionsComponent, EventSettingsMoreOptionsModule, EventsSettingsPageComponent, EventsSettingsPageModule, FeedbackCardComponent, FeedbackCardListComponent, FeedbackCardListModule, FeedbackCardModule, FeedbackCardState, FeedbackDetailPageComponent, FeedbackDetailPageModule, FeedbackListPageComponent, FeedbackListPageModule, FeedbackLoginModalComponent, FeedbackLoginModalModule, FeedbackRequestListPageComponent, FeedbackRequestListPageModule, FeedbackSettingDetailsPageComponent, FeedbackSettingDetailsPageModule, FileUploadComponent, FileUploadModule, FileUploadV2Component, FileUploadV2Module, FilterAreaComponent, FilterAreaModule, FilterDetailComponent, FilterDetailModule, FilterDetailTreeComponent, FilterDetailTreeModule, FilterTabsComponent, FilterTabsModule, FilterTabsV2Component, FilterTabsV2Module, FormattedCounterComponent, FormattedCounterModule, FrameworkModule, GenerateLicenseModalComponent, GenerateLicenseModalModule, GridActionBarV2Component, GridActionBarV2Module, GridActionsComponent, GridActionsModule, GridCellClickableComponent, GridCellClickableModule, GridCellClickedOpenNewTabComponent, GridCellClickedOpenNewTabModule, GridCellLoaderModule, GridComponent, GridControlsComponent, GridControlsModule, GridDownloadComponent, GridDownloadModule, GridLoadingCellComponent, GridModule, GridNoRowsOverlayComponent, GridNoRowsOverlayModule, GridToggleCellRendererComponent, GridToggleCellRendererModule, H1Component, H1Module, H2Component, H2Module, H3Component, H3Module, H4Component, H4Module, H5Component, H5Module, H5WithIconComponent, H5WithIconModule, IconComponent, IconModule, IconWithTooltipComponent, IconWithTooltipModule, IconWrapperComponent, IconWrapperModule, Icons, InformationModalComponent, InformationModalModule, InputCheckboxComponent, InputCheckboxListComponent, InputCheckboxListModule, InputCheckboxModule, InputChipsComponent, InputChipsModule, InputDropdownComponent, InputDropdownList, InputDropdownListItemModel, InputDropdownModule, InputFileUploadComponent, InputFileUploadModule, InputLimitedTextComponent, InputLimitedTextModule, InputNumberComponent, InputNumberModule, InputRadioComponent, InputRadioModule, InputRadioToggleComponent, InputRadioToggleModule, InputSearchCheckboxDropdownComponent, InputSearchCheckboxDropdownModule, InputTextComponent, InputTextModule, InputTextareaComponent, InputTextareaModule, InputTextareaWithSendComponent, InputTextareaWithSendModule, InputToggleComponent, InputToggleModule, JobListPageComponent, JobListPageModule, LibrariesPageComponent, LibrariesPageModule, LinkedinPremiumJobPostingsModalComponent, LinkedinPremiumJobPostingsModalModule, MergeContactClickedOpenModalComponent, MergeContactClickedOpenModalModule, MoleculesModule, MultiSelectDataModule, MultiselectSearchCheckbox, NavigationLinkComponent, NavigationLinkModule, NotificationsComponent, NotificationsModule, OrganismsModule, OverflowTextComponent, OverflowTextModule, OverflowTextTooltipComponent, OverflowTextTooltipModule, ParagraphComponent, ParagraphModule, PartialPages, PhaserCardComponent, PhaserCardModule, PhaserComponent, PhaserModule, PillComponent, PillModule, PillsComponent, PillsModule, PipeModule, RelevanceScoreComponent, RelevanceScoreModule, ReportLicenseDetailsPageComponent, ReportLicenseDetailsPageModule, ReportsCardComponent, ReportsCardListComponent, ReportsCardListModule, ReportsCardModule, ReportsPageComponent, ReportsPageModule, ScheduleInterviewModalComponent, ScheduleInterviewModalModule, SettingDetailPageComponent, SettingDetailPageModule, SettingListPageComponent, SettingListPageModule, SettingsDetailNavigationItemComponent, SettingsDetailNavigationItemModule, SettingsDetailNavigationListComponent, SettingsDetailNavigationListModule, SettingsLicenseManagementComponent, SettingsLicenseManagementModule, SettingsReportManagementComponent, SettingsReportManagementModule, SfxLoaderComponent, SfxLoaderModule, SfxPageLoaderComponent, SfxPageLoaderModule, SfxProgressBarComponent, SfxProgressBarModule, SidebarNavigationComponent, SidebarNavigationModule, SidebarNavigationV2Component, SidebarNavigationV2Module, SmsUsageReportPageComponent, SmsUsageReportPageModule, StatusCardComponent, StatusCardModule, StatusIndicatorComponent, StatusIndicatorModule, StatusPillComponent, StatusPillModule, SymphonyModalComponent, SymphonyModalModule, TabsComponent, TabsModules, ToasterAlertComponent, ToasterAlertModel, ToasterAlertModule, ToasterAlertType, TooltipWrapperComponent, TooltipWrapperModule, TrimIdPipe, TwoColumnFilterAreaComponent, TwoColumnFilterAreaModule, UploadResumeModalComponent, UploadResumeModalModule, VerticalSeparatorComponent, VerticalSeparatorModule, gridType };
|
|
10220
10637
|
//# sourceMappingURL=symphony-talent-component-library.mjs.map
|