@mbubela/oaa-assistant 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,7 +20,7 @@ ${t.map((n,r)=>`${r+1}) ${n.toString()}`).join(`
20
20
  <path d="M21 21l-4.35-4.35" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>`},edit:{viewBox:"0 0 24 24",path:`<path d="M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
21
21
  <path d="M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>`},check:{viewBox:"0 0 24 24",path:'<polyline points="20 6 9 17 4 12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>'},"chevron-left":{viewBox:"0 0 24 24",path:'<polyline points="15 18 9 12 15 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>'},"more-horizontal":{viewBox:"0 0 24 24",path:`<circle cx="12" cy="12" r="1.5" fill="currentColor"/>
22
22
  <circle cx="19" cy="12" r="1.5" fill="currentColor"/>
23
- <circle cx="5" cy="12" r="1.5" fill="currentColor"/>`}},Ct=class Ns{constructor(t){this.sanitizer=t}name="";width="24";height="24";fill="none";dropShadow="";get viewBox(){return Ta[this.name]?.viewBox||"0 0 24 24"}get svgContent(){let t=Ta[this.name];if(!t)return"";let n=t.path+(t.defs||"");return this.sanitizer.bypassSecurityTrustHtml(n)}static \u0275fac=function(t){return new(t||Ns)(F(jh))};static \u0275cmp=Te({type:Ns,selectors:[["app-icon"]],inputs:{name:"name",width:"width",height:"height",fill:"fill",dropShadow:"dropShadow"},decls:1,vars:7,consts:[["xmlns","http://www.w3.org/2000/svg",3,"innerHTML"]],template:function(t,n){t&1&&($g(),Kd(0,"svg",0)),t&2&&(ih("filter",n.dropShadow),th("innerHTML",n.svgContent,id),Go("width",n.width)("height",n.height)("viewBox",n.viewBox)("fill",n.fill))},dependencies:[ye],styles:["[_nghost-%COMP%]{display:inline-block;line-height:0}"]})};function Sw(e,t){if(e&1){let n=tn();p(0,"div",1),E("click",function(){G(n);let r=D();return W(r.onOverlayClick())}),p(1,"div",2),E("click",function(r){G(n);let i=D();return W(i.onModalClick(r))}),p(2,"div",3)(3,"button",4),E("click",function(){G(n);let r=D();return W(r.onBackClick())}),z(4,"app-icon",5),y(),p(5,"h2",6),N(6),y(),p(7,"button",7),E("click",function(){G(n);let r=D();return W(r.onCloseClick())}),z(8,"app-icon",8),y()(),p(9,"div",9)(10,"p",10),N(11),y()(),p(12,"div",11)(13,"button",12),E("click",function(){G(n);let r=D();return W(r.onCancel())}),N(14),y(),p(15,"button",13),E("click",function(){G(n);let r=D();return W(r.onConfirm())}),N(16),y()()()()}if(e&2){let n,r,i,s,o,l,a=D();O(6),ke(((n=a.config())==null?null:n.title)||"Back"),O(5),ke((r=a.config())==null?null:r.message),O(3),Mn(" ",((i=a.config())==null?null:i.cancelText)||"Cancel"," "),O(),Oe("btn-danger",((s=a.config())==null?null:s.confirmColor)==="danger")("btn-primary",((o=a.config())==null?null:o.confirmColor)==="primary"),O(),Mn(" ",((l=a.config())==null?null:l.confirmText)||"Confirm"," ")}}var Ew=class Rs{confirmationService=_(Ow);isOpen=this.confirmationService.isOpen$;config=this.confirmationService.config$;onConfirm(){this.confirmationService.close(!0)}onCancel(){this.confirmationService.close(!1)}onBackClick(){this.confirmationService.close(!1)}onCloseClick(){this.confirmationService.close(!1)}onOverlayClick(){this.confirmationService.close(!1)}onModalClick(t){t.stopPropagation()}static \u0275fac=function(t){return new(t||Rs)};static \u0275cmp=Te({type:Rs,selectors:[["app-confirmation-modal"]],decls:1,vars:1,consts:[["class","modal-overlay",3,"click",4,"ngIf"],[1,"modal-overlay",3,"click"],[1,"modal-container",3,"click"],[1,"modal-header"],["aria-label","Back",1,"icon-button","back-button",3,"click"],["name","chevron-left","width","24","height","24"],[1,"modal-title"],["aria-label","Close",1,"icon-button","close-button",3,"click"],["name","close","width","24","height","24"],[1,"modal-body"],[1,"modal-message"],[1,"modal-footer"],[1,"btn","btn-cancel",3,"click"],[1,"btn","btn-confirm",3,"click"]],template:function(t,n){t&1&&ce(0,Sw,17,8,"div",0),t&2&&A("ngIf",n.isOpen())},dependencies:[ye,nn,Ct],styles:[".modal-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:flex-end;justify-content:center;z-index:10000;animation:_ngcontent-%COMP%_fadeIn .2s ease-out}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0}to{opacity:1}}.modal-container[_ngcontent-%COMP%]{background-color:#fff;border-radius:16px 16px 0 0;width:100%;max-width:600px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 -2px 24px #00000026;animation:_ngcontent-%COMP%_slideUp .3s ease-out}@keyframes _ngcontent-%COMP%_slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e5e7eb;gap:12px}.modal-title[_ngcontent-%COMP%]{flex:1;text-align:center;font-size:18px;font-weight:600;color:#111827;margin:0}.icon-button[_ngcontent-%COMP%]{background:none;border:none;padding:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:8px;color:#6b7280;transition:all .2s ease}.icon-button[_ngcontent-%COMP%]:hover{background-color:#f3f4f6;color:#111827}.icon-button[_ngcontent-%COMP%]:active{transform:scale(.95)}.back-button[_ngcontent-%COMP%], .close-button[_ngcontent-%COMP%]{flex-shrink:0}.modal-body[_ngcontent-%COMP%]{padding:32px 20px;flex:1;overflow-y:auto}.modal-message[_ngcontent-%COMP%]{margin:0;font-size:16px;line-height:1.5;color:#111827;text-align:left}.modal-footer[_ngcontent-%COMP%]{display:flex;gap:12px;padding:16px 20px;border-top:1px solid #e5e7eb}.btn[_ngcontent-%COMP%]{flex:1;padding:12px 24px;font-size:16px;font-weight:500;border-radius:8px;border:none;cursor:pointer;transition:all .2s ease;font-family:inherit}.btn[_ngcontent-%COMP%]:active{transform:scale(.98)}.btn-cancel[_ngcontent-%COMP%]{background-color:#fff;color:#374151;border:1px solid #d1d5db}.btn-cancel[_ngcontent-%COMP%]:hover{background-color:#f9fafb;border-color:#9ca3af}.btn-confirm[_ngcontent-%COMP%]{color:#fff}.btn-primary[_ngcontent-%COMP%]{background-color:#3b82f6}.btn-primary[_ngcontent-%COMP%]:hover{background-color:#2563eb}.btn-danger[_ngcontent-%COMP%]{background-color:#ef4444}.btn-danger[_ngcontent-%COMP%]:hover{background-color:#dc2626}.btn-danger[_ngcontent-%COMP%]:disabled, .btn-primary[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}@media (min-width: 768px){.modal-overlay[_ngcontent-%COMP%]{align-items:center}.modal-container[_ngcontent-%COMP%]{border-radius:16px;max-height:500px}}"]})},He={TITLE:"App Agent",WELCOME:{GREETING:"Hi!",TEXT:"Welcome to Open as App!",DESCRIPTION:"I'm your AI assistant, and I'm here to help you get started.",PERSONALIZATION:"To personalize my guidance, could you tell me what you're hoping to do?"},INPUT:{PLACEHOLDER:"Ask me anything..."},SUGGESTIONS:["Summarize data","What are the key columns","What is this app about"]},Uh=class Fs{title=He.TITLE;menuClick=new M;closeClick=new M;onMenuClick(){this.menuClick.emit()}onCloseClick(){this.closeClick.emit()}static \u0275fac=function(t){return new(t||Fs)};static \u0275cmp=Te({type:Fs,selectors:[["app-header"]],inputs:{title:"title"},outputs:{menuClick:"menuClick",closeClick:"closeClick"},decls:9,vars:1,consts:[[1,"header"],["aria-label","Menu",1,"icon-button","menu-button",3,"click"],["name","menu","width","24","height","24"],[1,"header-title"],["name","sparkle","width","24","height","24",1,"title-icon"],["aria-label","Close",1,"icon-button","close-button",3,"click"],["name","close","width","24","height","24"]],template:function(t,n){t&1&&(p(0,"div",0)(1,"button",1),E("click",function(){return n.onMenuClick()}),z(2,"app-icon",2),y(),p(3,"div",3),z(4,"app-icon",4),p(5,"span"),N(6),y()(),p(7,"button",5),E("click",function(){return n.onCloseClick()}),z(8,"app-icon",6),y()()),t&2&&(O(6),ke(n.title))},dependencies:[ye,Ct],styles:[".header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:#fff;border-bottom:1px solid #f0f0f0;height:64px;box-sizing:border-box}.icon-button[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:background-color .2s;color:#333}.icon-button[_ngcontent-%COMP%]:hover{background-color:#f5f5f5}.icon-button[_ngcontent-%COMP%]:active{background-color:#e0e0e0}.header-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:20px;font-weight:600;color:#ff6b6b;flex:1;justify-content:center}.title-icon[_ngcontent-%COMP%]{width:24px;height:24px}.menu-button[_ngcontent-%COMP%], .close-button[_ngcontent-%COMP%]{width:40px;height:40px}.close-button[_ngcontent-%COMP%]{background-color:#f5f5f5;border-radius:50%}.close-button[_ngcontent-%COMP%]:hover{background-color:#e8e8e8}"]})},Zh=(()=>{class e{_renderer;_elementRef;onChange=n=>{};onTouched=()=>{};constructor(n,r){this._renderer=n,this._elementRef=r}setProperty(n,r){this._renderer.setProperty(this._elementRef.nativeElement,n,r)}registerOnTouched(n){this.onTouched=n}registerOnChange(n){this.onChange=n}setDisabledState(n){this.setProperty("disabled",n)}static \u0275fac=function(n){return new(n||e)(F(Dd),F(Kt))};static \u0275dir=Me({type:e})}return e})(),Tw=(()=>{class e extends Zh{static \u0275fac=(()=>{let n;return function(r){return(n||(n=Dc(e)))(r||e)}})();static \u0275dir=Me({type:e,features:[en]})}return e})(),$h=new k(""),Mw={provide:$h,useExisting:Pn(()=>Hn),multi:!0};function Pw(){let e=Zr()?Zr().getUserAgent():"";return/android (\d+)/.test(e.toLowerCase())}var Iw=new k(""),Hn=(()=>{class e extends Zh{_compositionMode;_composing=!1;constructor(n,r,i){super(n,r),this._compositionMode=i,this._compositionMode==null&&(this._compositionMode=!Pw())}writeValue(n){let r=n??"";this.setProperty("value",r)}_handleInput(n){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(n)}_compositionStart(){this._composing=!0}_compositionEnd(n){this._composing=!1,this._compositionMode&&this.onChange(n)}static \u0275fac=function(n){return new(n||e)(F(Dd),F(Kt),F(Iw,8))};static \u0275dir=Me({type:e,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(n,r){n&1&&E("input",function(i){return r._handleInput(i.target.value)})("blur",function(){return r.onTouched()})("compositionstart",function(){return r._compositionStart()})("compositionend",function(i){return r._compositionEnd(i.target.value)})},standalone:!1,features:[Jo([Mw]),en]})}return e})();function Dw(e){return e==null?null:Array.isArray(e)||typeof e=="string"?e.length:e instanceof Set?e.size:null}var qh=new k(""),Aw=new k("");function Vw(e){return t=>{let n=t.value?.length??Dw(t.value);return n!==null&&n>e?{maxlength:{requiredLength:e,actualLength:n}}:null}}function Ma(e){return null}function Gh(e){return e!=null}function Wh(e){return qo(e)?to(e):e}function Qh(e){let t={};return e.forEach(n=>{t=n!=null?q(q({},t),n):t}),Object.keys(t).length===0?null:t}function Yh(e,t){return t.map(n=>n(e))}function Nw(e){return!e.validate}function Kh(e){return e.map(t=>Nw(t)?t:n=>t.validate(n))}function Rw(e){if(!e)return null;let t=e.filter(Gh);return t.length==0?null:function(n){return Qh(Yh(n,t))}}function Jh(e){return e!=null?Rw(Kh(e)):null}function Fw(e){if(!e)return null;let t=e.filter(Gh);return t.length==0?null:function(n){let r=Yh(n,t).map(Wh);return Lp(r).pipe(Ce(Qh))}}function Xh(e){return e!=null?Fw(Kh(e)):null}function Pa(e,t){return e===null?[t]:Array.isArray(e)?[...e,t]:[e,t]}function Lw(e){return e._rawValidators}function jw(e){return e._rawAsyncValidators}function Ls(e){return e?Array.isArray(e)?e:[e]:[]}function qr(e,t){return Array.isArray(e)?e.includes(t):e===t}function Ia(e,t){let n=Ls(t);return Ls(e).forEach(r=>{qr(n,r)||n.push(r)}),n}function Da(e,t){return Ls(t).filter(n=>!qr(e,n))}var ef=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(e){this._rawValidators=e||[],this._composedValidatorFn=Jh(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=Xh(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control&&this.control.reset(e)}hasError(e,t){return this.control?this.control.hasError(e,t):!1}getError(e,t){return this.control?this.control.getError(e,t):null}},Hw=class extends ef{name;get formDirective(){return null}get path(){return null}},sl=class extends ef{_parent=null;name=null;valueAccessor=null},zw=class{_cd;constructor(e){this._cd=e}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}},Bw={"[class.ng-untouched]":"isUntouched","[class.ng-touched]":"isTouched","[class.ng-pristine]":"isPristine","[class.ng-dirty]":"isDirty","[class.ng-valid]":"isValid","[class.ng-invalid]":"isInvalid","[class.ng-pending]":"isPending"},FC=ne(q({},Bw),{"[class.ng-submitted]":"isSubmitted"}),ol=(()=>{class e extends zw{constructor(n){super(n)}static \u0275fac=function(n){return new(n||e)(F(sl,2))};static \u0275dir=Me({type:e,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(n,r){n&2&&Oe("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)},standalone:!1,features:[en]})}return e})(),ln="VALID",nr="INVALID",kt="PENDING",an="DISABLED",zn=class{},Aa=class extends zn{value;source;constructor(e,t){super(),this.value=e,this.source=t}},Wi=class extends zn{pristine;source;constructor(e,t){super(),this.pristine=e,this.source=t}},Qi=class extends zn{touched;source;constructor(e,t){super(),this.touched=e,this.source=t}},rr=class extends zn{status;source;constructor(e,t){super(),this.status=e,this.source=t}},Uw=class extends zn{source;constructor(e){super(),this.source=e}};function Zw(e){return(gi(e)?e.validators:e)||null}function $w(e){return Array.isArray(e)?Jh(e):e||null}function qw(e,t){return(gi(t)?t.asyncValidators:e)||null}function Gw(e){return Array.isArray(e)?Xh(e):e||null}function gi(e){return e!=null&&!Array.isArray(e)&&typeof e=="object"}var Ww=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(e,t){this._assignValidators(e),this._assignAsyncValidators(t)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get status(){return xt(this.statusReactive)}set status(e){xt(()=>this.statusReactive.set(e))}_status=ji(()=>this.statusReactive());statusReactive=Pt(void 0);get valid(){return this.status===ln}get invalid(){return this.status===nr}get pending(){return this.status==kt}get disabled(){return this.status===an}get enabled(){return this.status!==an}errors;get pristine(){return xt(this.pristineReactive)}set pristine(e){xt(()=>this.pristineReactive.set(e))}_pristine=ji(()=>this.pristineReactive());pristineReactive=Pt(!0);get dirty(){return!this.pristine}get touched(){return xt(this.touchedReactive)}set touched(e){xt(()=>this.touchedReactive.set(e))}_touched=ji(()=>this.touchedReactive());touchedReactive=Pt(!1);get untouched(){return!this.touched}_events=new nt;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(Ia(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(Ia(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(Da(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(Da(e,this._rawAsyncValidators))}hasValidator(e){return qr(this._rawValidators,e)}hasAsyncValidator(e){return qr(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){let t=this.touched===!1;this.touched=!0;let n=e.sourceControl??this;this._parent&&!e.onlySelf&&this._parent.markAsTouched(ne(q({},e),{sourceControl:n})),t&&e.emitEvent!==!1&&this._events.next(new Qi(!0,n))}markAllAsDirty(e={}){this.markAsDirty({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsDirty(e))}markAllAsTouched(e={}){this.markAsTouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsTouched(e))}markAsUntouched(e={}){let t=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let n=e.sourceControl??this;this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:n})}),this._parent&&!e.onlySelf&&this._parent._updateTouched(e,n),t&&e.emitEvent!==!1&&this._events.next(new Qi(!1,n))}markAsDirty(e={}){let t=this.pristine===!0;this.pristine=!1;let n=e.sourceControl??this;this._parent&&!e.onlySelf&&this._parent.markAsDirty(ne(q({},e),{sourceControl:n})),t&&e.emitEvent!==!1&&this._events.next(new Wi(!1,n))}markAsPristine(e={}){let t=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let n=e.sourceControl??this;this._forEachChild(r=>{r.markAsPristine({onlySelf:!0,emitEvent:e.emitEvent})}),this._parent&&!e.onlySelf&&this._parent._updatePristine(e,n),t&&e.emitEvent!==!1&&this._events.next(new Wi(!0,n))}markAsPending(e={}){this.status=kt;let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new rr(this.status,t)),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.markAsPending(ne(q({},e),{sourceControl:t}))}disable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=an,this.errors=null,this._forEachChild(r=>{r.disable(ne(q({},e),{onlySelf:!0}))}),this._updateValue();let n=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new Aa(this.value,n)),this._events.next(new rr(this.status,n)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(ne(q({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(r=>r(!0))}enable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=ln,this._forEachChild(n=>{n.enable(ne(q({},e),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(ne(q({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(n=>n(!1))}_updateAncestors(e,t){this._parent&&!e.onlySelf&&(this._parent.updateValueAndValidity(e),e.skipPristineCheck||this._parent._updatePristine({},t),this._parent._updateTouched({},t))}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let n=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===ln||this.status===kt)&&this._runAsyncValidator(n,e.emitEvent)}let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new Aa(this.value,t)),this._events.next(new rr(this.status,t)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.updateValueAndValidity(ne(q({},e),{sourceControl:t}))}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?an:ln}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e,t){if(this.asyncValidator){this.status=kt,this._hasOwnPendingAsyncValidator={emitEvent:t!==!1,shouldHaveEmitted:e!==!1};let n=Wh(this.asyncValidator(this));this._asyncValidationSubscription=n.subscribe(r=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(r,{emitEvent:t,shouldHaveEmitted:e})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let e=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,e}return!1}setErrors(e,t={}){this.errors=e,this._updateControlsErrors(t.emitEvent!==!1,this,t.shouldHaveEmitted)}get(e){let t=e;return t==null||(Array.isArray(t)||(t=t.split(".")),t.length===0)?null:t.reduce((n,r)=>n&&n._find(r),this)}getError(e,t){let n=t?this.get(t):this;return n&&n.errors?n.errors[e]:null}hasError(e,t){return!!this.getError(e,t)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e,t,n){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),(e||n)&&this._events.next(new rr(this.status,t)),this._parent&&this._parent._updateControlsErrors(e,t,n)}_initObservables(){this.valueChanges=new M,this.statusChanges=new M}_calculateStatus(){return this._allControlsDisabled()?an:this.errors?nr:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(kt)?kt:this._anyControlsHaveStatus(nr)?nr:ln}_anyControlsHaveStatus(e){return this._anyControls(t=>t.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e,t){let n=!this._anyControlsDirty(),r=this.pristine!==n;this.pristine=n,this._parent&&!e.onlySelf&&this._parent._updatePristine(e,t),r&&this._events.next(new Wi(this.pristine,t))}_updateTouched(e={},t){this.touched=this._anyControlsTouched(),this._events.next(new Qi(this.touched,t)),this._parent&&!e.onlySelf&&this._parent._updateTouched(e,t)}_onDisabledChange=[];_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){gi(e)&&e.updateOn!=null&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){let t=this._parent&&this._parent.dirty;return!e&&!!t&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=$w(this._rawValidators)}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=Gw(this._rawAsyncValidators)}},tf=new k("",{providedIn:"root",factory:()=>ll}),ll="always";function Qw(e,t){return[...t.path,e]}function Yw(e,t,n=ll){Jw(e,t),t.valueAccessor.writeValue(e.value),(e.disabled||n==="always")&&t.valueAccessor.setDisabledState?.(e.disabled),Xw(e,t),tC(e,t),eC(e,t),Kw(e,t)}function Va(e,t){e.forEach(n=>{n.registerOnValidatorChange&&n.registerOnValidatorChange(t)})}function Kw(e,t){if(t.valueAccessor.setDisabledState){let n=r=>{t.valueAccessor.setDisabledState(r)};e.registerOnDisabledChange(n),t._registerOnDestroy(()=>{e._unregisterOnDisabledChange(n)})}}function Jw(e,t){let n=Lw(e);t.validator!==null?e.setValidators(Pa(n,t.validator)):typeof n=="function"&&e.setValidators([n]);let r=jw(e);t.asyncValidator!==null?e.setAsyncValidators(Pa(r,t.asyncValidator)):typeof r=="function"&&e.setAsyncValidators([r]);let i=()=>e.updateValueAndValidity();Va(t._rawValidators,i),Va(t._rawAsyncValidators,i)}function Xw(e,t){t.valueAccessor.registerOnChange(n=>{e._pendingValue=n,e._pendingChange=!0,e._pendingDirty=!0,e.updateOn==="change"&&nf(e,t)})}function eC(e,t){t.valueAccessor.registerOnTouched(()=>{e._pendingTouched=!0,e.updateOn==="blur"&&e._pendingChange&&nf(e,t),e.updateOn!=="submit"&&e.markAsTouched()})}function nf(e,t){e._pendingDirty&&e.markAsDirty(),e.setValue(e._pendingValue,{emitModelToViewChange:!1}),t.viewToModelUpdate(e._pendingValue),e._pendingChange=!1}function tC(e,t){let n=(r,i)=>{t.valueAccessor.writeValue(r),i&&t.viewToModelUpdate(r)};e.registerOnChange(n),t._registerOnDestroy(()=>{e._unregisterOnChange(n)})}function nC(e,t){if(!e.hasOwnProperty("model"))return!1;let n=e.model;return n.isFirstChange()?!0:!Object.is(t,n.currentValue)}function rC(e){return Object.getPrototypeOf(e.constructor)===Tw}function iC(e,t){if(!t)return null;Array.isArray(t);let n,r,i;return t.forEach(s=>{s.constructor===Hn?n=s:rC(s)?r=s:i=s}),i||r||n||null}function Na(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function Ra(e){return typeof e=="object"&&e!==null&&Object.keys(e).length===2&&"value"in e&&"disabled"in e}var sC=class extends Ww{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(e=null,t,n){super(Zw(t),qw(n,t)),this._applyFormState(e),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),gi(t)&&(t.nonNullable||t.initialValueIsDefault)&&(Ra(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,t={}){this.value=this._pendingValue=e,this._onChange.length&&t.emitModelToViewChange!==!1&&this._onChange.forEach(n=>n(this.value,t.emitViewToModelChange!==!1)),this.updateValueAndValidity(t)}patchValue(e,t={}){this.setValue(e,t)}reset(e=this.defaultValue,t={}){this._applyFormState(e),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),this._pendingChange=!1,t?.emitEvent!==!1&&this._events.next(new Uw(this))}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){Na(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){Na(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(e){Ra(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}},oC={provide:sl,useExisting:Pn(()=>mi)},Fa=Promise.resolve(),mi=(()=>{class e extends sl{_changeDetectorRef;callSetDisabledState;control=new sC;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new M;constructor(n,r,i,s,o,l){super(),this._changeDetectorRef=o,this.callSetDisabledState=l,this._parent=n,this._setValidators(r),this._setAsyncValidators(i),this.valueAccessor=iC(this,s)}ngOnChanges(n){if(this._checkForErrors(),!this._registered||"name"in n){if(this._registered&&(this._checkName(),this.formDirective)){let r=n.name.previousValue;this.formDirective.removeControl({name:r,path:this._getPath(r)})}this._setUpControl()}"isDisabled"in n&&this._updateDisabled(n),nC(n,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(n){this.viewModel=n,this.update.emit(n)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){Yw(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(n){Fa.then(()=>{this.control.setValue(n,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(n){let r=n.isDisabled.currentValue,i=r!==0&&vb(r);Fa.then(()=>{i&&!this.control.disabled?this.control.disable():!i&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(n){return this._parent?Qw(n,this._parent):[n]}static \u0275fac=function(n){return new(n||e)(F(Hw,9),F(qh,10),F(Aw,10),F($h,10),F(ub,8),F(tf,8))};static \u0275dir=Me({type:e,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[Jo([oC]),en,ri]})}return e})();function lC(e){return typeof e=="number"?e:parseInt(e,10)}var aC=(()=>{class e{_validator=Ma;_onChange;_enabled;ngOnChanges(n){if(this.inputName in n){let r=this.normalizeInput(n[this.inputName].currentValue);this._enabled=this.enabled(r),this._validator=this._enabled?this.createValidator(r):Ma,this._onChange&&this._onChange()}}validate(n){return this._validator(n)}registerOnValidatorChange(n){this._onChange=n}enabled(n){return n!=null}static \u0275fac=function(n){return new(n||e)};static \u0275dir=Me({type:e,features:[ri]})}return e})(),uC={provide:qh,useExisting:Pn(()=>rf),multi:!0},rf=(()=>{class e extends aC{maxlength;inputName="maxlength";normalizeInput=n=>lC(n);createValidator=n=>Vw(n);static \u0275fac=(()=>{let n;return function(r){return(n||(n=Dc(e)))(r||e)}})();static \u0275dir=Me({type:e,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(n,r){n&2&&Go("maxlength",r._enabled?r.maxlength:null)},inputs:{maxlength:"maxlength"},standalone:!1,features:[Jo([uC]),en]})}return e})(),cC=(()=>{class e{static \u0275fac=function(n){return new(n||e)};static \u0275mod=ci({type:e});static \u0275inj=Wr({})}return e})(),al=(()=>{class e{static withConfig(n){return{ngModule:e,providers:[{provide:tf,useValue:n.callSetDisabledState??ll}]}}static \u0275fac=function(n){return new(n||e)};static \u0275mod=ci({type:e});static \u0275inj=Wr({imports:[cC]})}return e})(),sf=class js{placeholder=He.INPUT.PLACEHOLDER;disabled=!1;value="";voiceStatus={state:"idle",transcript:"",interimTranscript:""};valueChange=new M;submitMessage=new M;voiceClick=new M;addClick=new M;get isListening(){return this.voiceStatus.state==="listening"}get displayValue(){if(this.isListening){let t=this.voiceStatus.transcript||"",n=this.voiceStatus.interimTranscript||"";return t+(t&&n?" ":"")+n}return this.value}get displayPlaceholder(){return this.isListening?"Listening... Speak now":this.placeholder}onInputChange(t){!this.isListening&&t!==void 0&&(this.value=t,this.valueChange.emit(this.value))}onSubmit(){if(this.value.trim()&&!this.isListening){let t=this.value;this.value="",this.valueChange.emit(this.value),this.submitMessage.emit(t)}}onVoiceClick(){this.voiceClick.emit()}onAddClick(){this.addClick.emit()}static \u0275fac=function(t){return new(t||js)};static \u0275cmp=Te({type:js,selectors:[["app-input-field"]],inputs:{placeholder:"placeholder",disabled:"disabled",value:"value",voiceStatus:"voiceStatus"},outputs:{valueChange:"valueChange",submitMessage:"submitMessage",voiceClick:"voiceClick",addClick:"addClick"},decls:7,vars:8,consts:[[1,"input-container"],[1,"input-wrapper"],["aria-label","Add",1,"icon-button","add-button",3,"click"],["name","add","width","24","height","24"],["type","text",1,"input-field",3,"ngModelChange","keyup.enter","ngModel","placeholder","disabled","readonly"],["aria-label","Voice input",1,"icon-button","voice-button",3,"click"],["name","microphone","width","24","height","24","fill","currentColor"]],template:function(t,n){t&1&&(p(0,"div",0)(1,"div",1)(2,"button",2),E("click",function(){return n.onAddClick()}),z(3,"app-icon",3),y(),p(4,"input",4),E("ngModelChange",function(r){return n.onInputChange(r)})("keyup.enter",function(){return n.onSubmit()}),y(),p(5,"button",5),E("click",function(){return n.onVoiceClick()}),z(6,"app-icon",6),y()()()),t&2&&(O(4),Oe("listening",n.isListening),A("ngModel",n.displayValue)("placeholder",n.displayPlaceholder)("disabled",n.disabled||n.isListening)("readonly",n.isListening),O(),Oe("active",n.isListening))},dependencies:[ye,al,Hn,ol,mi,Ct],styles:[".input-container[_ngcontent-%COMP%]{padding:16px 20px;background:#fff;border-top:1px solid #f0f0f0}.input-wrapper[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;background:#f8f8f8;border-radius:12px;padding:8px 16px;transition:background-color .2s}.input-wrapper[_ngcontent-%COMP%]:focus-within{background:#f0f0f0}.input-field[_ngcontent-%COMP%]{flex:1;border:none;background:transparent;font-size:15px;color:#333;outline:none;padding:8px 0}.input-field[_ngcontent-%COMP%]::placeholder{color:#999}.input-field[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.input-field.listening[_ngcontent-%COMP%]{color:#ff6b6b;font-style:italic}.icon-button[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s;color:#666;min-width:40px;min-height:40px}.icon-button[_ngcontent-%COMP%]:hover{background-color:#0000000d;color:#333}.icon-button[_ngcontent-%COMP%]:active{background-color:#0000001a}.voice-button.active[_ngcontent-%COMP%]{color:#ff6b6b;animation:_ngcontent-%COMP%_pulse 1.5s ease-in-out infinite}@keyframes _ngcontent-%COMP%_pulse{0%,to{opacity:1}50%{opacity:.6}}"]})};function dC(e,t){if(e&1){let n=tn();p(0,"div",1),E("click",function(){G(n);let r=D();return W(r.onOverlayClick())}),p(1,"div",2),E("click",function(r){G(n);let i=D();return W(i.onModalClick(r))}),p(2,"div",3)(3,"button",4),E("click",function(){G(n);let r=D();return W(r.onBackClick())}),z(4,"app-icon",5),y(),p(5,"h2",6),N(6,"Rename Chat"),y(),p(7,"button",7),E("click",function(){G(n);let r=D();return W(r.onCloseClick())}),z(8,"app-icon",8),y()(),p(9,"div",9)(10,"input",10),Ko("ngModelChange",function(r){G(n);let i=D();return oh(i.editedTitle,r)||(i.editedTitle=r),W(r)}),E("keydown",function(r){G(n);let i=D();return W(i.onInputKeydown(r))}),y()(),p(11,"div",11)(12,"button",12),E("click",function(){G(n);let r=D();return W(r.onCancel())}),N(13," Cancel "),y(),p(14,"button",13),E("click",function(){G(n);let r=D();return W(r.onSave())}),N(15," Save "),y()()()()}if(e&2){let n=D();O(10),Yo("ngModel",n.editedTitle),A("maxlength",500)}}var of=class Hs{isOpen=!1;currentTitle="";close=new M;save=new M;editedTitle="";ngOnChanges(t){t.isOpen&&this.isOpen&&(this.editedTitle=this.currentTitle),t.currentTitle&&(this.editedTitle=this.currentTitle)}onBackClick(){this.close.emit()}onCloseClick(){this.close.emit()}onCancel(){this.close.emit()}onSave(){let t=this.editedTitle.trim();t&&t!==this.currentTitle&&this.save.emit(t),this.close.emit()}onOverlayClick(){this.close.emit()}onModalClick(t){t.stopPropagation()}onInputKeydown(t){t.key==="Enter"?(t.preventDefault(),this.onSave()):t.key==="Escape"&&(t.preventDefault(),this.onCancel())}static \u0275fac=function(t){return new(t||Hs)};static \u0275cmp=Te({type:Hs,selectors:[["app-rename-modal"]],inputs:{isOpen:"isOpen",currentTitle:"currentTitle"},outputs:{close:"close",save:"save"},features:[ri],decls:1,vars:1,consts:[["class","modal-overlay",3,"click",4,"ngIf"],[1,"modal-overlay",3,"click"],[1,"modal-container",3,"click"],[1,"modal-header"],["aria-label","Back",1,"icon-button","back-button",3,"click"],["name","chevron-left","width","24","height","24"],[1,"modal-title"],["aria-label","Close",1,"icon-button","close-button",3,"click"],["name","close","width","24","height","24"],[1,"modal-body"],["type","text","placeholder","Enter chat name","autofocus","",1,"rename-input",3,"ngModelChange","keydown","ngModel","maxlength"],[1,"modal-footer"],[1,"btn","btn-cancel",3,"click"],[1,"btn","btn-save",3,"click"]],template:function(t,n){t&1&&ce(0,dC,16,2,"div",0),t&2&&A("ngIf",n.isOpen)},dependencies:[ye,nn,al,Hn,ol,rf,mi,Ct],styles:[".modal-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:flex-end;justify-content:center;z-index:1000;animation:_ngcontent-%COMP%_fadeIn .2s ease-out}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0}to{opacity:1}}.modal-container[_ngcontent-%COMP%]{background-color:#fff;border-radius:16px 16px 0 0;width:100%;max-width:600px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 -2px 24px #00000026;animation:_ngcontent-%COMP%_slideUp .3s ease-out}@keyframes _ngcontent-%COMP%_slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e5e7eb;gap:12px}.modal-title[_ngcontent-%COMP%]{flex:1;text-align:center;font-size:18px;font-weight:600;color:#111827;margin:0}.icon-button[_ngcontent-%COMP%]{background:none;border:none;padding:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:8px;color:#6b7280;transition:all .2s ease}.icon-button[_ngcontent-%COMP%]:hover{background-color:#f3f4f6;color:#111827}.icon-button[_ngcontent-%COMP%]:active{transform:scale(.95)}.back-button[_ngcontent-%COMP%], .close-button[_ngcontent-%COMP%]{flex-shrink:0}.modal-body[_ngcontent-%COMP%]{padding:24px 20px;flex:1;overflow-y:auto}.rename-input[_ngcontent-%COMP%]{width:100%;padding:12px 16px;font-size:16px;border:1px solid #d1d5db;border-radius:8px;outline:none;transition:all .2s ease;font-family:inherit;color:#111827}.rename-input[_ngcontent-%COMP%]:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.rename-input[_ngcontent-%COMP%]::placeholder{color:#9ca3af}.modal-footer[_ngcontent-%COMP%]{display:flex;gap:12px;padding:16px 20px;border-top:1px solid #e5e7eb}.btn[_ngcontent-%COMP%]{flex:1;padding:12px 24px;font-size:16px;font-weight:500;border-radius:8px;border:none;cursor:pointer;transition:all .2s ease;font-family:inherit}.btn[_ngcontent-%COMP%]:active{transform:scale(.98)}.btn-cancel[_ngcontent-%COMP%]{background-color:#fff;color:#374151;border:1px solid #d1d5db}.btn-cancel[_ngcontent-%COMP%]:hover{background-color:#f9fafb;border-color:#9ca3af}.btn-save[_ngcontent-%COMP%]{background-color:#ef4444;color:#fff}.btn-save[_ngcontent-%COMP%]:hover{background-color:#dc2626}.btn-save[_ngcontent-%COMP%]:disabled{background-color:#fca5a5;cursor:not-allowed}@media (min-width: 768px){.modal-overlay[_ngcontent-%COMP%]{align-items:center}.modal-container[_ngcontent-%COMP%]{border-radius:16px;max-height:400px}}"]})};function hC(e,t){e&1&&(p(0,"div",22),z(1,"div",23),p(2,"p",24),N(3,"Loading conversations..."),y()())}function fC(e,t){if(e&1){let n=tn();p(0,"div",36)(1,"button",37),E("click",function(r){G(n);let i=D().$implicit,s=D(2);return W(s.onEditClick(i.id,i.title,r))}),z(2,"app-icon",38),p(3,"span"),N(4,"Rename"),y()(),p(5,"button",39),E("click",function(r){G(n);let i=D().$implicit,s=D(2);return W(s.onDeleteClick(i.id,r))}),z(6,"app-icon",40),p(7,"span"),N(8,"Delete"),y()()()}}function pC(e,t){if(e&1){let n=tn();p(0,"div",27),E("click",function(){let r=G(n).$implicit,i=D(2);return W(i.onConversationClick(r.id))}),p(1,"div",28)(2,"div",29)(3,"span",30),N(4),y()(),p(5,"span",31),N(6),y()(),p(7,"div",32)(8,"button",33),E("click",function(r){let i=G(n).$implicit,s=D(2);return W(s.toggleMenu(i.id,r))}),z(9,"app-icon",34),y(),ce(10,fC,9,0,"div",35),y()()}if(e&2){let n=t.$implicit,r=D(2);O(4),ke(n.title),O(2),ke(n.date),O(4),A("ngIf",r.isMenuOpen(n.id))}}function gC(e,t){if(e&1&&(p(0,"div",25),ce(1,pC,11,3,"div",26),y()),e&2){let n=D();O(),A("ngForOf",n.conversations)}}function mC(e,t){e&1&&(p(0,"div",41)(1,"p"),N(2,"No conversations yet"),y()())}var yC=class zs{isOpen=!1;conversations=[];isLoading=!1;backClick=new M;settingsClick=new M;closeClick=new M;conversationClick=new M;deleteClick=new M;newChatClick=new M;searchChange=new M;titleUpdate=new M;searchQuery="";isRenameModalOpen=!1;renamingConversationId=null;renamingConversationTitle="";activeMenuId=null;onBackClick(){this.backClick.emit()}onSettingsClick(){this.settingsClick.emit()}onCloseClick(){this.closeClick.emit()}onOverlayClick(){this.closeClick.emit(),this.closeMenu()}onConversationClick(t){this.conversationClick.emit(t)}onDeleteClick(t,n){n.stopPropagation(),this.deleteClick.emit(t),this.closeMenu()}onNewChatClick(){this.newChatClick.emit()}onSearchChange(){this.searchChange.emit(this.searchQuery)}onEditClick(t,n,r){r.stopPropagation(),this.renamingConversationId=t,this.renamingConversationTitle=n,this.isRenameModalOpen=!0,this.closeMenu()}onRenameModalClose(){this.isRenameModalOpen=!1,this.renamingConversationId=null,this.renamingConversationTitle=""}onRenameModalSave(t){this.renamingConversationId&&t.trim()&&this.titleUpdate.emit({id:this.renamingConversationId,title:t.trim()})}toggleMenu(t,n){n.stopPropagation(),this.activeMenuId===t?this.activeMenuId=null:this.activeMenuId=t}closeMenu(){this.activeMenuId=null}isMenuOpen(t){return this.activeMenuId===t}onSidebarClick(){this.closeMenu()}static \u0275fac=function(t){return new(t||zs)};static \u0275cmp=Te({type:zs,selectors:[["app-sidebar"]],inputs:{isOpen:"isOpen",conversations:"conversations",isLoading:"isLoading"},outputs:{backClick:"backClick",settingsClick:"settingsClick",closeClick:"closeClick",conversationClick:"conversationClick",deleteClick:"deleteClick",newChatClick:"newChatClick",searchChange:"searchChange",titleUpdate:"titleUpdate"},decls:25,vars:10,consts:[[1,"sidebar-overlay",3,"click"],[1,"sidebar",3,"click"],[1,"sidebar-header"],[1,"back-text-button",3,"click"],["name","chevron-left","width","16","height","16"],[1,"header-actions"],["aria-label","Settings",1,"icon-button","settings-button",3,"click"],["name","settings","width","20","height","20"],["aria-label","Close",1,"icon-button","close-button",3,"click"],["name","close","width","20","height","20"],[1,"sidebar-content"],[1,"conversations-title"],["class","loading-container",4,"ngIf"],["class","conversations-list",4,"ngIf"],["class","empty-conversations",4,"ngIf"],[1,"sidebar-footer"],[1,"search-container"],["name","search","width","18","height","18",1,"search-icon"],["type","text","placeholder","Search",1,"search-input",3,"ngModelChange","input","ngModel"],["aria-label","New Chat",1,"icon-button","new-chat-button",3,"click"],["name","edit","width","20","height","20"],[3,"close","save","isOpen","currentTitle"],[1,"loading-container"],[1,"spinner"],[1,"loading-text"],[1,"conversations-list"],["class","conversation-item",3,"click",4,"ngFor","ngForOf"],[1,"conversation-item",3,"click"],[1,"conversation-info"],[1,"conversation-title-container"],[1,"conversation-title"],[1,"conversation-date"],[1,"menu-container"],["aria-label","More options",1,"icon-button","menu-button",3,"click"],["name","more-horizontal","width","20","height","20"],["class","context-menu",4,"ngIf"],[1,"context-menu"],[1,"menu-item",3,"click"],["name","edit","width","16","height","16"],[1,"menu-item","delete-item",3,"click"],["name","trash","width","16","height","16"],[1,"empty-conversations"]],template:function(t,n){t&1&&(p(0,"div",0),E("click",function(){return n.onOverlayClick()}),y(),p(1,"div",1),E("click",function(){return n.onSidebarClick()}),p(2,"div",2)(3,"button",3),E("click",function(){return n.onBackClick()}),z(4,"app-icon",4),p(5,"span"),N(6,"Back to Chat"),y()(),p(7,"div",5)(8,"button",6),E("click",function(){return n.onSettingsClick()}),z(9,"app-icon",7),y(),p(10,"button",8),E("click",function(){return n.onCloseClick()}),z(11,"app-icon",9),y()()(),p(12,"div",10)(13,"h3",11),N(14,"Conversations"),y(),ce(15,hC,4,0,"div",12)(16,gC,2,1,"div",13)(17,mC,3,0,"div",14),y(),p(18,"div",15)(19,"div",16),z(20,"app-icon",17),p(21,"input",18),Ko("ngModelChange",function(r){return oh(n.searchQuery,r)||(n.searchQuery=r),r}),E("input",function(){return n.onSearchChange()}),y()(),p(22,"button",19),E("click",function(){return n.onNewChatClick()}),z(23,"app-icon",20),y()()(),p(24,"app-rename-modal",21),E("close",function(){return n.onRenameModalClose()})("save",function(r){return n.onRenameModalSave(r)}),y()),t&2&&(Oe("visible",n.isOpen),O(),Oe("open",n.isOpen),O(14),A("ngIf",n.isLoading),O(),A("ngIf",!n.isLoading&&n.conversations.length>0),O(),A("ngIf",!n.isLoading&&n.conversations.length===0),O(4),Yo("ngModel",n.searchQuery),O(3),A("isOpen",n.isRenameModalOpen)("currentTitle",n.renamingConversationTitle))},dependencies:[ye,hi,nn,al,Hn,ol,mi,Ct,of],styles:[".sidebar-overlay[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100%;height:100%;background:#0006;z-index:998;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.sidebar-overlay.visible[_ngcontent-%COMP%]{opacity:1;visibility:visible}.sidebar[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:85%;max-width:400px;height:100%;background:#fff;z-index:999;transform:translate(-100%);transition:transform .3s ease;display:flex;flex-direction:column;box-shadow:2px 0 8px #0000001a}.sidebar.open[_ngcontent-%COMP%]{transform:translate(0)}.sidebar-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid #e8ecf1}.back-text-button[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;background:none;border:none;cursor:pointer;font-size:16px;font-weight:500;color:#1a1a1a;padding:8px;border-radius:8px;transition:background .2s ease}.back-text-button[_ngcontent-%COMP%]:hover{background:#f5f7fa}.header-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.icon-button[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:background .2s ease;color:#5f6368}.icon-button[_ngcontent-%COMP%]:hover{background:#f5f7fa;color:#1a1a1a}.icon-button[_ngcontent-%COMP%]:active{background:#e8ecf1}.sidebar-content[_ngcontent-%COMP%]{flex:1;overflow-y:auto;padding:16px}.conversations-title[_ngcontent-%COMP%]{font-size:13px;font-weight:500;color:#95a5a6;text-transform:uppercase;letter-spacing:.5px;margin:0 0 16px}.conversations-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.conversation-item[_ngcontent-%COMP%]{display:flex;align-items:center;padding:12px;background:#fff;border-radius:8px;cursor:pointer;transition:background .2s ease;gap:12px;position:relative}.conversation-item[_ngcontent-%COMP%]:hover{background:#f5f7fa}.conversation-info[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.conversation-title-container[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;min-width:0}.conversation-title[_ngcontent-%COMP%]{flex:1;font-size:14px;font-weight:500;color:#1a1a1a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conversation-date[_ngcontent-%COMP%]{font-size:12px;color:#95a5a6}.menu-container[_ngcontent-%COMP%]{position:relative}.menu-button[_ngcontent-%COMP%]{opacity:0;transition:opacity .2s ease}.conversation-item[_ngcontent-%COMP%]:hover .menu-button[_ngcontent-%COMP%], .menu-button[_ngcontent-%COMP%]:focus, .menu-container[_ngcontent-%COMP%]:focus-within .menu-button[_ngcontent-%COMP%]{opacity:1}.context-menu[_ngcontent-%COMP%]{position:absolute;top:100%;right:0;background:#fff;border-radius:8px;box-shadow:0 4px 12px #00000026;border:1px solid #e8ecf1;padding:4px;min-width:140px;z-index:1000;display:flex;flex-direction:column;gap:2px}.menu-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:8px 12px;border:none;background:none;width:100%;text-align:left;cursor:pointer;border-radius:6px;font-size:14px;color:#1a1a1a;transition:background .2s ease}.menu-item[_ngcontent-%COMP%]:hover{background:#f5f7fa}.menu-item[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{color:#5f6368}.delete-item[_ngcontent-%COMP%]{color:#dc3545}.delete-item[_ngcontent-%COMP%]:hover{background:#fee}.delete-item[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{color:#dc3545}.loading-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;gap:16px}.spinner[_ngcontent-%COMP%]{width:40px;height:40px;border:3px solid #f5f7fa;border-top-color:#ff5337;border-radius:50%;animation:_ngcontent-%COMP%_spin .8s linear infinite}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}.loading-text[_ngcontent-%COMP%]{color:#95a5a6;font-size:14px;margin:0}.empty-conversations[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:40px 20px;text-align:center}.empty-conversations[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#95a5a6;font-size:14px;margin:0}.sidebar-footer[_ngcontent-%COMP%]{padding:16px;border-top:1px solid #e8ecf1;display:flex;align-items:center;gap:12px}.search-container[_ngcontent-%COMP%]{flex:1;position:relative;display:flex;align-items:center;background:#f5f7fa;border-radius:8px;padding:8px 12px;gap:8px}.search-icon[_ngcontent-%COMP%]{flex-shrink:0;color:#95a5a6}.search-input[_ngcontent-%COMP%]{flex:1;border:none;background:none;font-size:14px;color:#1a1a1a;outline:none;padding:0}.search-input[_ngcontent-%COMP%]::placeholder{color:#95a5a6}.new-chat-button[_ngcontent-%COMP%]{flex-shrink:0;background:#fff;border:1px solid #e8ecf1;border-radius:8px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.new-chat-button[_ngcontent-%COMP%]:hover{background:#f5f7fa;border-color:#d0d7de}@media (max-width: 480px){.sidebar[_ngcontent-%COMP%]{width:100%;max-width:none}}"]})},lf=class Bs{text="";disabled=!1;buttonClick=new M;onClick(){this.disabled||this.buttonClick.emit(this.text)}static \u0275fac=function(t){return new(t||Bs)};static \u0275cmp=Te({type:Bs,selectors:[["app-suggestion-button"]],inputs:{text:"text",disabled:"disabled"},outputs:{buttonClick:"buttonClick"},decls:2,vars:3,consts:[[1,"suggestion-button",3,"click"]],template:function(t,n){t&1&&(Wo(0,"button",0),nh("click",function(){return n.onClick()}),N(1),Qo()),t&2&&(Oe("disabled",n.disabled),O(),Mn(" ",n.text," "))},dependencies:[ye],styles:[".suggestion-button[_ngcontent-%COMP%]{background:#fff;border:1.5px solid #FF6B6B;border-radius:8px;padding:14px 24px;font-size:15px;font-weight:500;color:#ff6b6b;cursor:pointer;transition:all .2s ease;white-space:nowrap;box-shadow:0 2px 4px #0000000d;display:inline-block;width:auto;text-align:center}.suggestion-button[_ngcontent-%COMP%]:hover:not(.disabled){background:#fff5f5;border-color:#ff5252;transform:translateY(-1px);box-shadow:0 4px 8px #ff6b6b26}.suggestion-button[_ngcontent-%COMP%]:active:not(.disabled){transform:translateY(0);box-shadow:0 2px 4px #0000000d}.suggestion-button.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}"]})},vC=class vr{toasts=Pt([]);toasts$=this.toasts.asReadonly();show(t,n="info",r=3e3){let i=Math.random().toString(36).substring(7),s={id:i,message:t,type:n,duration:r};this.toasts.update(o=>[...o,s]),r>0&&setTimeout(()=>this.remove(i),r)}success(t,n){this.show(t,"success",n)}error(t,n){this.show(t,"error",n)}warning(t,n){this.show(t,"warning",n)}info(t,n){this.show(t,"info",n)}remove(t){this.toasts.update(n=>n.filter(r=>r.id!==t))}static \u0275fac=function(t){return new(t||vr)};static \u0275prov=T({token:vr,factory:vr.\u0275fac,providedIn:"root"})};function bC(e,t){e&1&&(p(0,"span"),N(1,"\u2713"),y())}function _C(e,t){e&1&&(p(0,"span"),N(1,"\u2715"),y())}function wC(e,t){e&1&&(p(0,"span"),N(1,"\u26A0"),y())}function CC(e,t){e&1&&(p(0,"span"),N(1,"\u2139"),y())}function xC(e,t){if(e&1){let n=tn();p(0,"div",2)(1,"div",3)(2,"span",4),Xd(3,5),ce(4,bC,2,0,"span",6)(5,_C,2,0,"span",6)(6,wC,2,0,"span",6)(7,CC,2,0,"span",6),eh(),y(),p(8,"span",7),N(9),y()(),p(10,"button",8),E("click",function(){let r=G(n).$implicit,i=D();return W(i.onClose(r.id))}),N(11,"\u2715"),y()()}if(e&2){let n=t.$implicit;Oe("success",n.type==="success")("error",n.type==="error")("warning",n.type==="warning")("info",n.type==="info"),O(3),A("ngSwitch",n.type),O(),A("ngSwitchCase","success"),O(),A("ngSwitchCase","error"),O(),A("ngSwitchCase","warning"),O(),A("ngSwitchCase","info"),O(2),ke(n.message)}}var kC=class Us{toastService=_(vC);toasts=this.toastService.toasts$;onClose(t){this.toastService.remove(t)}static \u0275fac=function(t){return new(t||Us)};static \u0275cmp=Te({type:Us,selectors:[["app-toast-container"]],decls:2,vars:1,consts:[[1,"toast-container"],["class","toast",3,"success","error","warning","info",4,"ngFor","ngForOf"],[1,"toast"],[1,"toast-content"],[1,"toast-icon"],[3,"ngSwitch"],[4,"ngSwitchCase"],[1,"toast-message"],[1,"toast-close",3,"click"]],template:function(t,n){t&1&&(p(0,"div",0),ce(1,xC,12,14,"div",1),y()),t&2&&(O(),A("ngForOf",n.toasts()))},dependencies:[ye,hi,gh,n_],styles:[".toast-container[_ngcontent-%COMP%]{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:12px;max-width:400px}.toast[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-radius:8px;box-shadow:0 4px 12px #00000026;background:#fff;min-width:300px;animation:_ngcontent-%COMP%_slideIn .3s ease-out}@keyframes _ngcontent-%COMP%_slideIn{0%{transform:translate(400px);opacity:0}to{transform:translate(0);opacity:1}}.toast-content[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex:1}.toast-icon[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:14px;font-weight:700}.toast.success[_ngcontent-%COMP%]{border-left:4px solid #10b981}.toast.success[_ngcontent-%COMP%] .toast-icon[_ngcontent-%COMP%]{background:#10b981;color:#fff}.toast.error[_ngcontent-%COMP%]{border-left:4px solid #ef4444}.toast.error[_ngcontent-%COMP%] .toast-icon[_ngcontent-%COMP%]{background:#ef4444;color:#fff}.toast.warning[_ngcontent-%COMP%]{border-left:4px solid #f59e0b}.toast.warning[_ngcontent-%COMP%] .toast-icon[_ngcontent-%COMP%]{background:#f59e0b;color:#fff}.toast.info[_ngcontent-%COMP%]{border-left:4px solid #3b82f6}.toast.info[_ngcontent-%COMP%] .toast-icon[_ngcontent-%COMP%]{background:#3b82f6;color:#fff}.toast-message[_ngcontent-%COMP%]{flex:1;font-size:14px;color:#2c3e50;line-height:1.4}.toast-close[_ngcontent-%COMP%]{background:none;border:none;color:#95a5a6;cursor:pointer;font-size:18px;padding:4px 8px;display:flex;align-items:center;justify-content:center;transition:color .2s}.toast-close[_ngcontent-%COMP%]:hover{color:#2c3e50}@media (max-width: 768px){.toast-container[_ngcontent-%COMP%]{top:10px;right:10px;left:10px;max-width:none}.toast[_ngcontent-%COMP%]{min-width:auto}}"]})};function OC(e,t){if(e&1&&(p(0,"div",7)(1,"div",8),z(2,"app-icon",9),y(),p(3,"h1",10),N(4),y(),p(5,"p",11),N(6),y(),p(7,"p",12),N(8),y()()),e&2){let n=D();O(4),ke(n.greeting),O(2),ke(n.welcomeText),O(2),ke(n.description)}}function SC(e,t){if(e&1&&z(0,"app-chat-history",13),e&2){let n=D();A("messages",n.messages)}}function EC(e,t){if(e&1){let n=tn();p(0,"app-suggestion-button",18),E("buttonClick",function(r){G(n);let i=D(2);return W(i.onSuggestionClick(r))}),y()}if(e&2){let n=t.$implicit,r=D(2);A("text",n)("disabled",r.isLoading)}}function TC(e,t){if(e&1&&(p(0,"div",14)(1,"p",15),N(2),y(),p(3,"div",16),ce(4,EC,1,2,"app-suggestion-button",17),y()()),e&2){let n=D();O(2),ke(n.personalizationText),O(2),A("ngForOf",n.suggestions)}}var MC=class Zs{title=He.TITLE;greeting=He.WELCOME.GREETING;welcomeText=He.WELCOME.TEXT;description=He.WELCOME.DESCRIPTION;personalizationText=He.WELCOME.PERSONALIZATION;inputPlaceholder=He.INPUT.PLACEHOLDER;suggestions=[...He.SUGGESTIONS];messages=[];hasMessages=!1;isLoading=!1;voiceStatus={state:"idle",transcript:"",interimTranscript:""};inputValue="";menuClick=new M;closeClick=new M;suggestionClick=new M;messageSubmit=new M;voiceClick=new M;addClick=new M;inputValueChange=new M;onMenuClick(){this.menuClick.emit()}onCloseClick(){this.closeClick.emit()}onSuggestionClick(t){this.suggestionClick.emit(t)}onMessageSubmit(t){this.messageSubmit.emit(t)}onVoiceClick(){this.voiceClick.emit()}onAddClick(){this.addClick.emit()}onInputValueChange(t){this.inputValueChange.emit(t)}static \u0275fac=function(t){return new(t||Zs)};static \u0275cmp=Te({type:Zs,selectors:[["app-assistant"]],inputs:{title:"title",greeting:"greeting",welcomeText:"welcomeText",description:"description",personalizationText:"personalizationText",inputPlaceholder:"inputPlaceholder",suggestions:"suggestions",messages:"messages",hasMessages:"hasMessages",isLoading:"isLoading",voiceStatus:"voiceStatus",inputValue:"inputValue"},outputs:{menuClick:"menuClick",closeClick:"closeClick",suggestionClick:"suggestionClick",messageSubmit:"messageSubmit",voiceClick:"voiceClick",addClick:"addClick",inputValueChange:"inputValueChange"},decls:7,vars:8,consts:[[1,"assistant-page"],[3,"menuClick","closeClick","title"],[1,"content"],["class","welcome-container",4,"ngIf"],[3,"messages",4,"ngIf"],["class","personalization-section",4,"ngIf"],[3,"valueChange","submitMessage","voiceClick","addClick","placeholder","disabled","voiceStatus","value"],[1,"welcome-container"],[1,"icon-wrapper"],["name","sparkle","width","64","height","64","dropShadow","drop-shadow(0 4px 8px rgba(255, 107, 107, 0.2))",1,"sparkle-icon"],[1,"greeting"],[1,"welcome-text"],[1,"description"],[3,"messages"],[1,"personalization-section"],[1,"personalization-text"],[1,"suggestions"],[3,"text","disabled","buttonClick",4,"ngFor","ngForOf"],[3,"buttonClick","text","disabled"]],template:function(t,n){t&1&&(p(0,"div",0)(1,"app-header",1),E("menuClick",function(){return n.onMenuClick()})("closeClick",function(){return n.onCloseClick()}),y(),p(2,"div",2),ce(3,OC,9,3,"div",3)(4,SC,1,1,"app-chat-history",4)(5,TC,5,2,"div",5),y(),p(6,"app-input-field",6),E("valueChange",function(r){return n.onInputValueChange(r)})("submitMessage",function(r){return n.onMessageSubmit(r)})("voiceClick",function(){return n.onVoiceClick()})("addClick",function(){return n.onAddClick()}),y()()),t&2&&(O(),A("title",n.title),O(2),A("ngIf",!n.hasMessages),O(),A("ngIf",n.hasMessages),O(),A("ngIf",!n.hasMessages),O(),A("placeholder",n.inputPlaceholder)("disabled",n.isLoading)("voiceStatus",n.voiceStatus)("value",n.inputValue))},dependencies:[ye,hi,nn,Uh,lf,sf,Ct,Bh],styles:[".assistant-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100vh;max-height:100vh;background:#fff;font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif;overflow:hidden}.content[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;position:relative}app-chat-history[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.welcome-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:20px 24px 30px;text-align:center;flex:1}.icon-wrapper[_ngcontent-%COMP%]{margin-bottom:16px}.greeting[_ngcontent-%COMP%]{font-size:28px;font-weight:700;margin:0 0 12px;color:#1a1a1a}.welcome-text[_ngcontent-%COMP%]{font-size:18px;font-weight:500;margin:0 0 12px;color:#333}.description[_ngcontent-%COMP%]{font-size:15px;font-weight:400;margin:0 0 20px;color:#666;max-width:400px;line-height:1.4}.personalization-section[_ngcontent-%COMP%]{padding:0 24px 24px;display:flex;flex-direction:column;align-items:center;gap:16px;flex-shrink:0}.personalization-text[_ngcontent-%COMP%]{font-size:15px;color:#666;margin:0;text-align:center;max-width:400px;line-height:1.4}.suggestions[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%;max-width:400px}@media (max-width: 768px){.suggestions[_ngcontent-%COMP%]{max-width:100%}}"]})},PC=class br{constructor(t){this.http=t}config=null;loadConfig(){return La(this,null,function*(){try{this.config=yield kp(this.http.get("/config.json")),console.log("Configuration loaded:",this.config?.environmentName)}catch(t){console.error("Failed to load configuration, using defaults",t),this.config={apiUrl:"https://localhost:7592",apiTimeout:3e4,environmentName:"local"}}})}get apiUrl(){return this.config?.apiUrl||"https://localhost:7592"}get apiTimeout(){return this.config?.apiTimeout||3e4}get environmentName(){return this.config?.environmentName||"local"}getConfig(){return this.config||{apiUrl:"https://localhost:7592",apiTimeout:3e4,environmentName:"local"}}static \u0275fac=function(t){return new(t||br)(b(Ah))};static \u0275prov=T({token:br,factory:br.\u0275fac,providedIn:"root"})},IC={production:!0};function af(e){return()=>e.loadConfig()}La(null,null,function*(){let e=yield x_({providers:[Jg(),K1({eventCoalescing:!0}),iw(sw()),{provide:Qd,useFactory:af,deps:[PC],multi:!0},mh,vw.forRoot({level:IC.production?Z.WARN:Z.DEBUG,serverLogLevel:Z.ERROR,disableConsoleLogging:!1,enableSourceMaps:!0,timestampFormat:"short"}).providers||[]]}),t=be(Bh,{injector:e.injector});customElements.define("app-chat-history",t);let n=be(Ew,{injector:e.injector});customElements.define("app-confirmation-modal",n);let r=be(Uh,{injector:e.injector});customElements.define("app-header",r);let i=be(Ct,{injector:e.injector});customElements.define("app-icon",i);let s=be(sf,{injector:e.injector});customElements.define("app-input-field",s);let o=be(zh,{injector:e.injector});customElements.define("app-message",o);let l=be(of,{injector:e.injector});customElements.define("app-rename-modal",l);let a=be(yC,{injector:e.injector});customElements.define("app-sidebar",a);let u=be(lf,{injector:e.injector});customElements.define("app-suggestion-button",u);let c=be(kC,{injector:e.injector});customElements.define("app-toast-container",c);let d=be(MC,{injector:e.injector});customElements.define("app-assistant",d),console.log("\u2705 Web Components registered!"),console.log("Available components:"),console.log(" - app-chat-history"),console.log(" - app-confirmation-modal"),console.log(" - app-header"),console.log(" - app-icon"),console.log(" - app-input-field"),console.log(" - app-message"),console.log(" - app-rename-modal"),console.log(" - app-sidebar"),console.log(" - app-suggestion-button"),console.log(" - app-toast-container"),console.log(" - app-assistant")});return pf(DC);})();
23
+ <circle cx="5" cy="12" r="1.5" fill="currentColor"/>`}},Ct=class Ns{constructor(t){this.sanitizer=t}name="";width="24";height="24";fill="none";dropShadow="";get viewBox(){return Ta[this.name]?.viewBox||"0 0 24 24"}get svgContent(){let t=Ta[this.name];if(!t)return"";let n=t.path+(t.defs||"");return this.sanitizer.bypassSecurityTrustHtml(n)}static \u0275fac=function(t){return new(t||Ns)(F(jh))};static \u0275cmp=Te({type:Ns,selectors:[["app-icon"]],inputs:{name:"name",width:"width",height:"height",fill:"fill",dropShadow:"dropShadow"},decls:1,vars:7,consts:[["xmlns","http://www.w3.org/2000/svg",3,"innerHTML"]],template:function(t,n){t&1&&($g(),Kd(0,"svg",0)),t&2&&(ih("filter",n.dropShadow),th("innerHTML",n.svgContent,id),Go("width",n.width)("height",n.height)("viewBox",n.viewBox)("fill",n.fill))},dependencies:[ye],styles:["[_nghost-%COMP%]{display:inline-block;line-height:0}"]})};function Sw(e,t){if(e&1){let n=tn();p(0,"div",1),E("click",function(){G(n);let r=D();return W(r.onOverlayClick())}),p(1,"div",2),E("click",function(r){G(n);let i=D();return W(i.onModalClick(r))}),p(2,"div",3)(3,"button",4),E("click",function(){G(n);let r=D();return W(r.onBackClick())}),z(4,"app-icon",5),y(),p(5,"h2",6),N(6),y(),p(7,"button",7),E("click",function(){G(n);let r=D();return W(r.onCloseClick())}),z(8,"app-icon",8),y()(),p(9,"div",9)(10,"p",10),N(11),y()(),p(12,"div",11)(13,"button",12),E("click",function(){G(n);let r=D();return W(r.onCancel())}),N(14),y(),p(15,"button",13),E("click",function(){G(n);let r=D();return W(r.onConfirm())}),N(16),y()()()()}if(e&2){let n,r,i,s,o,l,a=D();O(6),ke(((n=a.config())==null?null:n.title)||"Back"),O(5),ke((r=a.config())==null?null:r.message),O(3),Mn(" ",((i=a.config())==null?null:i.cancelText)||"Cancel"," "),O(),Oe("btn-danger",((s=a.config())==null?null:s.confirmColor)==="danger")("btn-primary",((o=a.config())==null?null:o.confirmColor)==="primary"),O(),Mn(" ",((l=a.config())==null?null:l.confirmText)||"Confirm"," ")}}var Ew=class Rs{confirmationService=_(Ow);isOpen=this.confirmationService.isOpen$;config=this.confirmationService.config$;onConfirm(){this.confirmationService.close(!0)}onCancel(){this.confirmationService.close(!1)}onBackClick(){this.confirmationService.close(!1)}onCloseClick(){this.confirmationService.close(!1)}onOverlayClick(){this.confirmationService.close(!1)}onModalClick(t){t.stopPropagation()}static \u0275fac=function(t){return new(t||Rs)};static \u0275cmp=Te({type:Rs,selectors:[["app-confirmation-modal"]],decls:1,vars:1,consts:[["class","modal-overlay",3,"click",4,"ngIf"],[1,"modal-overlay",3,"click"],[1,"modal-container",3,"click"],[1,"modal-header"],["aria-label","Back",1,"icon-button","back-button",3,"click"],["name","chevron-left","width","24","height","24"],[1,"modal-title"],["aria-label","Close",1,"icon-button","close-button",3,"click"],["name","close","width","24","height","24"],[1,"modal-body"],[1,"modal-message"],[1,"modal-footer"],[1,"btn","btn-cancel",3,"click"],[1,"btn","btn-confirm",3,"click"]],template:function(t,n){t&1&&ce(0,Sw,17,8,"div",0),t&2&&A("ngIf",n.isOpen())},dependencies:[ye,nn,Ct],styles:[".modal-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:flex-end;justify-content:center;z-index:10000;animation:_ngcontent-%COMP%_fadeIn .2s ease-out}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0}to{opacity:1}}.modal-container[_ngcontent-%COMP%]{background-color:#fff;border-radius:16px 16px 0 0;width:100%;max-width:600px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 -2px 24px #00000026;animation:_ngcontent-%COMP%_slideUp .3s ease-out}@keyframes _ngcontent-%COMP%_slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e5e7eb;gap:12px}.modal-title[_ngcontent-%COMP%]{flex:1;text-align:center;font-size:18px;font-weight:600;color:#111827;margin:0}.icon-button[_ngcontent-%COMP%]{background:none;border:none;padding:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:8px;color:#6b7280;transition:all .2s ease}.icon-button[_ngcontent-%COMP%]:hover{background-color:#f3f4f6;color:#111827}.icon-button[_ngcontent-%COMP%]:active{transform:scale(.95)}.back-button[_ngcontent-%COMP%], .close-button[_ngcontent-%COMP%]{flex-shrink:0}.modal-body[_ngcontent-%COMP%]{padding:32px 20px;flex:1;overflow-y:auto}.modal-message[_ngcontent-%COMP%]{margin:0;font-size:16px;line-height:1.5;color:#111827;text-align:left}.modal-footer[_ngcontent-%COMP%]{display:flex;gap:12px;padding:16px 20px;border-top:1px solid #e5e7eb}.btn[_ngcontent-%COMP%]{flex:1;padding:12px 24px;font-size:16px;font-weight:500;border-radius:8px;border:none;cursor:pointer;transition:all .2s ease;font-family:inherit}.btn[_ngcontent-%COMP%]:active{transform:scale(.98)}.btn-cancel[_ngcontent-%COMP%]{background-color:#fff;color:#374151;border:1px solid #d1d5db}.btn-cancel[_ngcontent-%COMP%]:hover{background-color:#f9fafb;border-color:#9ca3af}.btn-confirm[_ngcontent-%COMP%]{color:#fff}.btn-primary[_ngcontent-%COMP%]{background-color:#3b82f6}.btn-primary[_ngcontent-%COMP%]:hover{background-color:#2563eb}.btn-danger[_ngcontent-%COMP%]{background-color:#ef4444}.btn-danger[_ngcontent-%COMP%]:hover{background-color:#dc2626}.btn-danger[_ngcontent-%COMP%]:disabled, .btn-primary[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}@media (min-width: 768px){.modal-overlay[_ngcontent-%COMP%]{align-items:center}.modal-container[_ngcontent-%COMP%]{border-radius:16px;max-height:500px}}"]})},He={TITLE:"App Agent",WELCOME:{GREETING:"Hi!",TEXT:"Welcome to Open as App!",DESCRIPTION:"I'm your AI assistant, and I'm here to help you get started.",PERSONALIZATION:"To personalize my guidance, could you tell me what you're hoping to do?"},INPUT:{PLACEHOLDER:"Ask me anything..."},SUGGESTIONS:["Summarize data","What are the key columns","What is this app about"]},Uh=class Fs{title=He.TITLE;menuClick=new M;closeClick=new M;onMenuClick(){this.menuClick.emit()}onCloseClick(){this.closeClick.emit()}static \u0275fac=function(t){return new(t||Fs)};static \u0275cmp=Te({type:Fs,selectors:[["app-header"]],inputs:{title:"title"},outputs:{menuClick:"menuClick",closeClick:"closeClick"},decls:9,vars:1,consts:[[1,"header"],["aria-label","Menu",1,"icon-button","menu-button",3,"click"],["name","menu","width","24","height","24"],[1,"header-title"],["name","sparkle","width","24","height","24",1,"title-icon"],["aria-label","Close",1,"icon-button","close-button",3,"click"],["name","close","width","24","height","24"]],template:function(t,n){t&1&&(p(0,"div",0)(1,"button",1),E("click",function(){return n.onMenuClick()}),z(2,"app-icon",2),y(),p(3,"div",3),z(4,"app-icon",4),p(5,"span"),N(6),y()(),p(7,"button",5),E("click",function(){return n.onCloseClick()}),z(8,"app-icon",6),y()()),t&2&&(O(6),ke(n.title))},dependencies:[ye,Ct],styles:[".header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:#fff;border-bottom:1px solid #f0f0f0;height:64px;box-sizing:border-box}.icon-button[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:background-color .2s;color:#333}.icon-button[_ngcontent-%COMP%]:hover{background-color:#f5f5f5}.icon-button[_ngcontent-%COMP%]:active{background-color:#e0e0e0}.header-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:20px;font-weight:600;color:#ff6b6b;flex:1;justify-content:center}.title-icon[_ngcontent-%COMP%]{width:24px;height:24px}.menu-button[_ngcontent-%COMP%], .close-button[_ngcontent-%COMP%]{width:40px;height:40px}.close-button[_ngcontent-%COMP%]{background-color:#f5f5f5;border-radius:50%}.close-button[_ngcontent-%COMP%]:hover{background-color:#e8e8e8}"]})},Zh=(()=>{class e{_renderer;_elementRef;onChange=n=>{};onTouched=()=>{};constructor(n,r){this._renderer=n,this._elementRef=r}setProperty(n,r){this._renderer.setProperty(this._elementRef.nativeElement,n,r)}registerOnTouched(n){this.onTouched=n}registerOnChange(n){this.onChange=n}setDisabledState(n){this.setProperty("disabled",n)}static \u0275fac=function(n){return new(n||e)(F(Dd),F(Kt))};static \u0275dir=Me({type:e})}return e})(),Tw=(()=>{class e extends Zh{static \u0275fac=(()=>{let n;return function(r){return(n||(n=Dc(e)))(r||e)}})();static \u0275dir=Me({type:e,features:[en]})}return e})(),$h=new k(""),Mw={provide:$h,useExisting:Pn(()=>Hn),multi:!0};function Pw(){let e=Zr()?Zr().getUserAgent():"";return/android (\d+)/.test(e.toLowerCase())}var Iw=new k(""),Hn=(()=>{class e extends Zh{_compositionMode;_composing=!1;constructor(n,r,i){super(n,r),this._compositionMode=i,this._compositionMode==null&&(this._compositionMode=!Pw())}writeValue(n){let r=n??"";this.setProperty("value",r)}_handleInput(n){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(n)}_compositionStart(){this._composing=!0}_compositionEnd(n){this._composing=!1,this._compositionMode&&this.onChange(n)}static \u0275fac=function(n){return new(n||e)(F(Dd),F(Kt),F(Iw,8))};static \u0275dir=Me({type:e,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(n,r){n&1&&E("input",function(i){return r._handleInput(i.target.value)})("blur",function(){return r.onTouched()})("compositionstart",function(){return r._compositionStart()})("compositionend",function(i){return r._compositionEnd(i.target.value)})},standalone:!1,features:[Jo([Mw]),en]})}return e})();function Dw(e){return e==null?null:Array.isArray(e)||typeof e=="string"?e.length:e instanceof Set?e.size:null}var qh=new k(""),Aw=new k("");function Vw(e){return t=>{let n=t.value?.length??Dw(t.value);return n!==null&&n>e?{maxlength:{requiredLength:e,actualLength:n}}:null}}function Ma(e){return null}function Gh(e){return e!=null}function Wh(e){return qo(e)?to(e):e}function Qh(e){let t={};return e.forEach(n=>{t=n!=null?q(q({},t),n):t}),Object.keys(t).length===0?null:t}function Yh(e,t){return t.map(n=>n(e))}function Nw(e){return!e.validate}function Kh(e){return e.map(t=>Nw(t)?t:n=>t.validate(n))}function Rw(e){if(!e)return null;let t=e.filter(Gh);return t.length==0?null:function(n){return Qh(Yh(n,t))}}function Jh(e){return e!=null?Rw(Kh(e)):null}function Fw(e){if(!e)return null;let t=e.filter(Gh);return t.length==0?null:function(n){let r=Yh(n,t).map(Wh);return Lp(r).pipe(Ce(Qh))}}function Xh(e){return e!=null?Fw(Kh(e)):null}function Pa(e,t){return e===null?[t]:Array.isArray(e)?[...e,t]:[e,t]}function Lw(e){return e._rawValidators}function jw(e){return e._rawAsyncValidators}function Ls(e){return e?Array.isArray(e)?e:[e]:[]}function qr(e,t){return Array.isArray(e)?e.includes(t):e===t}function Ia(e,t){let n=Ls(t);return Ls(e).forEach(r=>{qr(n,r)||n.push(r)}),n}function Da(e,t){return Ls(t).filter(n=>!qr(e,n))}var ef=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(e){this._rawValidators=e||[],this._composedValidatorFn=Jh(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=Xh(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control&&this.control.reset(e)}hasError(e,t){return this.control?this.control.hasError(e,t):!1}getError(e,t){return this.control?this.control.getError(e,t):null}},Hw=class extends ef{name;get formDirective(){return null}get path(){return null}},sl=class extends ef{_parent=null;name=null;valueAccessor=null},zw=class{_cd;constructor(e){this._cd=e}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}},Bw={"[class.ng-untouched]":"isUntouched","[class.ng-touched]":"isTouched","[class.ng-pristine]":"isPristine","[class.ng-dirty]":"isDirty","[class.ng-valid]":"isValid","[class.ng-invalid]":"isInvalid","[class.ng-pending]":"isPending"},FC=ne(q({},Bw),{"[class.ng-submitted]":"isSubmitted"}),ol=(()=>{class e extends zw{constructor(n){super(n)}static \u0275fac=function(n){return new(n||e)(F(sl,2))};static \u0275dir=Me({type:e,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(n,r){n&2&&Oe("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)},standalone:!1,features:[en]})}return e})(),ln="VALID",nr="INVALID",kt="PENDING",an="DISABLED",zn=class{},Aa=class extends zn{value;source;constructor(e,t){super(),this.value=e,this.source=t}},Wi=class extends zn{pristine;source;constructor(e,t){super(),this.pristine=e,this.source=t}},Qi=class extends zn{touched;source;constructor(e,t){super(),this.touched=e,this.source=t}},rr=class extends zn{status;source;constructor(e,t){super(),this.status=e,this.source=t}},Uw=class extends zn{source;constructor(e){super(),this.source=e}};function Zw(e){return(gi(e)?e.validators:e)||null}function $w(e){return Array.isArray(e)?Jh(e):e||null}function qw(e,t){return(gi(t)?t.asyncValidators:e)||null}function Gw(e){return Array.isArray(e)?Xh(e):e||null}function gi(e){return e!=null&&!Array.isArray(e)&&typeof e=="object"}var Ww=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(e,t){this._assignValidators(e),this._assignAsyncValidators(t)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get status(){return xt(this.statusReactive)}set status(e){xt(()=>this.statusReactive.set(e))}_status=ji(()=>this.statusReactive());statusReactive=Pt(void 0);get valid(){return this.status===ln}get invalid(){return this.status===nr}get pending(){return this.status==kt}get disabled(){return this.status===an}get enabled(){return this.status!==an}errors;get pristine(){return xt(this.pristineReactive)}set pristine(e){xt(()=>this.pristineReactive.set(e))}_pristine=ji(()=>this.pristineReactive());pristineReactive=Pt(!0);get dirty(){return!this.pristine}get touched(){return xt(this.touchedReactive)}set touched(e){xt(()=>this.touchedReactive.set(e))}_touched=ji(()=>this.touchedReactive());touchedReactive=Pt(!1);get untouched(){return!this.touched}_events=new nt;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(Ia(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(Ia(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(Da(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(Da(e,this._rawAsyncValidators))}hasValidator(e){return qr(this._rawValidators,e)}hasAsyncValidator(e){return qr(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){let t=this.touched===!1;this.touched=!0;let n=e.sourceControl??this;this._parent&&!e.onlySelf&&this._parent.markAsTouched(ne(q({},e),{sourceControl:n})),t&&e.emitEvent!==!1&&this._events.next(new Qi(!0,n))}markAllAsDirty(e={}){this.markAsDirty({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsDirty(e))}markAllAsTouched(e={}){this.markAsTouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsTouched(e))}markAsUntouched(e={}){let t=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let n=e.sourceControl??this;this._forEachChild(r=>{r.markAsUntouched({onlySelf:!0,emitEvent:e.emitEvent,sourceControl:n})}),this._parent&&!e.onlySelf&&this._parent._updateTouched(e,n),t&&e.emitEvent!==!1&&this._events.next(new Qi(!1,n))}markAsDirty(e={}){let t=this.pristine===!0;this.pristine=!1;let n=e.sourceControl??this;this._parent&&!e.onlySelf&&this._parent.markAsDirty(ne(q({},e),{sourceControl:n})),t&&e.emitEvent!==!1&&this._events.next(new Wi(!1,n))}markAsPristine(e={}){let t=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let n=e.sourceControl??this;this._forEachChild(r=>{r.markAsPristine({onlySelf:!0,emitEvent:e.emitEvent})}),this._parent&&!e.onlySelf&&this._parent._updatePristine(e,n),t&&e.emitEvent!==!1&&this._events.next(new Wi(!0,n))}markAsPending(e={}){this.status=kt;let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new rr(this.status,t)),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.markAsPending(ne(q({},e),{sourceControl:t}))}disable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=an,this.errors=null,this._forEachChild(r=>{r.disable(ne(q({},e),{onlySelf:!0}))}),this._updateValue();let n=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new Aa(this.value,n)),this._events.next(new rr(this.status,n)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(ne(q({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(r=>r(!0))}enable(e={}){let t=this._parentMarkedDirty(e.onlySelf);this.status=ln,this._forEachChild(n=>{n.enable(ne(q({},e),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(ne(q({},e),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(n=>n(!1))}_updateAncestors(e,t){this._parent&&!e.onlySelf&&(this._parent.updateValueAndValidity(e),e.skipPristineCheck||this._parent._updatePristine({},t),this._parent._updateTouched({},t))}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let n=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===ln||this.status===kt)&&this._runAsyncValidator(n,e.emitEvent)}let t=e.sourceControl??this;e.emitEvent!==!1&&(this._events.next(new Aa(this.value,t)),this._events.next(new rr(this.status,t)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.updateValueAndValidity(ne(q({},e),{sourceControl:t}))}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?an:ln}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e,t){if(this.asyncValidator){this.status=kt,this._hasOwnPendingAsyncValidator={emitEvent:t!==!1,shouldHaveEmitted:e!==!1};let n=Wh(this.asyncValidator(this));this._asyncValidationSubscription=n.subscribe(r=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(r,{emitEvent:t,shouldHaveEmitted:e})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let e=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,e}return!1}setErrors(e,t={}){this.errors=e,this._updateControlsErrors(t.emitEvent!==!1,this,t.shouldHaveEmitted)}get(e){let t=e;return t==null||(Array.isArray(t)||(t=t.split(".")),t.length===0)?null:t.reduce((n,r)=>n&&n._find(r),this)}getError(e,t){let n=t?this.get(t):this;return n&&n.errors?n.errors[e]:null}hasError(e,t){return!!this.getError(e,t)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e,t,n){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),(e||n)&&this._events.next(new rr(this.status,t)),this._parent&&this._parent._updateControlsErrors(e,t,n)}_initObservables(){this.valueChanges=new M,this.statusChanges=new M}_calculateStatus(){return this._allControlsDisabled()?an:this.errors?nr:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(kt)?kt:this._anyControlsHaveStatus(nr)?nr:ln}_anyControlsHaveStatus(e){return this._anyControls(t=>t.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e,t){let n=!this._anyControlsDirty(),r=this.pristine!==n;this.pristine=n,this._parent&&!e.onlySelf&&this._parent._updatePristine(e,t),r&&this._events.next(new Wi(this.pristine,t))}_updateTouched(e={},t){this.touched=this._anyControlsTouched(),this._events.next(new Qi(this.touched,t)),this._parent&&!e.onlySelf&&this._parent._updateTouched(e,t)}_onDisabledChange=[];_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){gi(e)&&e.updateOn!=null&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){let t=this._parent&&this._parent.dirty;return!e&&!!t&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=$w(this._rawValidators)}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=Gw(this._rawAsyncValidators)}},tf=new k("",{providedIn:"root",factory:()=>ll}),ll="always";function Qw(e,t){return[...t.path,e]}function Yw(e,t,n=ll){Jw(e,t),t.valueAccessor.writeValue(e.value),(e.disabled||n==="always")&&t.valueAccessor.setDisabledState?.(e.disabled),Xw(e,t),tC(e,t),eC(e,t),Kw(e,t)}function Va(e,t){e.forEach(n=>{n.registerOnValidatorChange&&n.registerOnValidatorChange(t)})}function Kw(e,t){if(t.valueAccessor.setDisabledState){let n=r=>{t.valueAccessor.setDisabledState(r)};e.registerOnDisabledChange(n),t._registerOnDestroy(()=>{e._unregisterOnDisabledChange(n)})}}function Jw(e,t){let n=Lw(e);t.validator!==null?e.setValidators(Pa(n,t.validator)):typeof n=="function"&&e.setValidators([n]);let r=jw(e);t.asyncValidator!==null?e.setAsyncValidators(Pa(r,t.asyncValidator)):typeof r=="function"&&e.setAsyncValidators([r]);let i=()=>e.updateValueAndValidity();Va(t._rawValidators,i),Va(t._rawAsyncValidators,i)}function Xw(e,t){t.valueAccessor.registerOnChange(n=>{e._pendingValue=n,e._pendingChange=!0,e._pendingDirty=!0,e.updateOn==="change"&&nf(e,t)})}function eC(e,t){t.valueAccessor.registerOnTouched(()=>{e._pendingTouched=!0,e.updateOn==="blur"&&e._pendingChange&&nf(e,t),e.updateOn!=="submit"&&e.markAsTouched()})}function nf(e,t){e._pendingDirty&&e.markAsDirty(),e.setValue(e._pendingValue,{emitModelToViewChange:!1}),t.viewToModelUpdate(e._pendingValue),e._pendingChange=!1}function tC(e,t){let n=(r,i)=>{t.valueAccessor.writeValue(r),i&&t.viewToModelUpdate(r)};e.registerOnChange(n),t._registerOnDestroy(()=>{e._unregisterOnChange(n)})}function nC(e,t){if(!e.hasOwnProperty("model"))return!1;let n=e.model;return n.isFirstChange()?!0:!Object.is(t,n.currentValue)}function rC(e){return Object.getPrototypeOf(e.constructor)===Tw}function iC(e,t){if(!t)return null;Array.isArray(t);let n,r,i;return t.forEach(s=>{s.constructor===Hn?n=s:rC(s)?r=s:i=s}),i||r||n||null}function Na(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function Ra(e){return typeof e=="object"&&e!==null&&Object.keys(e).length===2&&"value"in e&&"disabled"in e}var sC=class extends Ww{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(e=null,t,n){super(Zw(t),qw(n,t)),this._applyFormState(e),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),gi(t)&&(t.nonNullable||t.initialValueIsDefault)&&(Ra(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,t={}){this.value=this._pendingValue=e,this._onChange.length&&t.emitModelToViewChange!==!1&&this._onChange.forEach(n=>n(this.value,t.emitViewToModelChange!==!1)),this.updateValueAndValidity(t)}patchValue(e,t={}){this.setValue(e,t)}reset(e=this.defaultValue,t={}){this._applyFormState(e),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),this._pendingChange=!1,t?.emitEvent!==!1&&this._events.next(new Uw(this))}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){Na(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){Na(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(e){Ra(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}},oC={provide:sl,useExisting:Pn(()=>mi)},Fa=Promise.resolve(),mi=(()=>{class e extends sl{_changeDetectorRef;callSetDisabledState;control=new sC;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new M;constructor(n,r,i,s,o,l){super(),this._changeDetectorRef=o,this.callSetDisabledState=l,this._parent=n,this._setValidators(r),this._setAsyncValidators(i),this.valueAccessor=iC(this,s)}ngOnChanges(n){if(this._checkForErrors(),!this._registered||"name"in n){if(this._registered&&(this._checkName(),this.formDirective)){let r=n.name.previousValue;this.formDirective.removeControl({name:r,path:this._getPath(r)})}this._setUpControl()}"isDisabled"in n&&this._updateDisabled(n),nC(n,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(n){this.viewModel=n,this.update.emit(n)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){Yw(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(n){Fa.then(()=>{this.control.setValue(n,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(n){let r=n.isDisabled.currentValue,i=r!==0&&vb(r);Fa.then(()=>{i&&!this.control.disabled?this.control.disable():!i&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(n){return this._parent?Qw(n,this._parent):[n]}static \u0275fac=function(n){return new(n||e)(F(Hw,9),F(qh,10),F(Aw,10),F($h,10),F(ub,8),F(tf,8))};static \u0275dir=Me({type:e,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[Jo([oC]),en,ri]})}return e})();function lC(e){return typeof e=="number"?e:parseInt(e,10)}var aC=(()=>{class e{_validator=Ma;_onChange;_enabled;ngOnChanges(n){if(this.inputName in n){let r=this.normalizeInput(n[this.inputName].currentValue);this._enabled=this.enabled(r),this._validator=this._enabled?this.createValidator(r):Ma,this._onChange&&this._onChange()}}validate(n){return this._validator(n)}registerOnValidatorChange(n){this._onChange=n}enabled(n){return n!=null}static \u0275fac=function(n){return new(n||e)};static \u0275dir=Me({type:e,features:[ri]})}return e})(),uC={provide:qh,useExisting:Pn(()=>rf),multi:!0},rf=(()=>{class e extends aC{maxlength;inputName="maxlength";normalizeInput=n=>lC(n);createValidator=n=>Vw(n);static \u0275fac=(()=>{let n;return function(r){return(n||(n=Dc(e)))(r||e)}})();static \u0275dir=Me({type:e,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(n,r){n&2&&Go("maxlength",r._enabled?r.maxlength:null)},inputs:{maxlength:"maxlength"},standalone:!1,features:[Jo([uC]),en]})}return e})(),cC=(()=>{class e{static \u0275fac=function(n){return new(n||e)};static \u0275mod=ci({type:e});static \u0275inj=Wr({})}return e})(),al=(()=>{class e{static withConfig(n){return{ngModule:e,providers:[{provide:tf,useValue:n.callSetDisabledState??ll}]}}static \u0275fac=function(n){return new(n||e)};static \u0275mod=ci({type:e});static \u0275inj=Wr({imports:[cC]})}return e})(),sf=class js{placeholder=He.INPUT.PLACEHOLDER;disabled=!1;value="";voiceStatus={state:"idle",transcript:"",interimTranscript:""};valueChange=new M;submitMessage=new M;voiceClick=new M;addClick=new M;get isListening(){return this.voiceStatus.state==="listening"}get displayValue(){if(this.isListening){let t=this.voiceStatus.transcript||"",n=this.voiceStatus.interimTranscript||"";return t+(t&&n?" ":"")+n}return this.value}get displayPlaceholder(){return this.isListening?"Listening... Speak now":this.placeholder}onInputChange(t){!this.isListening&&t!==void 0&&(this.value=t,this.valueChange.emit(this.value))}onSubmit(){if(this.value.trim()&&!this.isListening){let t=this.value;this.value="",this.valueChange.emit(this.value),this.submitMessage.emit(t)}}onVoiceClick(){this.voiceClick.emit()}onAddClick(){this.addClick.emit()}static \u0275fac=function(t){return new(t||js)};static \u0275cmp=Te({type:js,selectors:[["app-input-field"]],inputs:{placeholder:"placeholder",disabled:"disabled",value:"value",voiceStatus:"voiceStatus"},outputs:{valueChange:"valueChange",submitMessage:"submitMessage",voiceClick:"voiceClick",addClick:"addClick"},decls:7,vars:8,consts:[[1,"input-container"],[1,"input-wrapper"],["aria-label","Add",1,"icon-button","add-button",3,"click"],["name","add","width","24","height","24"],["type","text",1,"input-field",3,"ngModelChange","keyup.enter","ngModel","placeholder","disabled","readonly"],["aria-label","Voice input",1,"icon-button","voice-button",3,"click"],["name","microphone","width","24","height","24","fill","currentColor"]],template:function(t,n){t&1&&(p(0,"div",0)(1,"div",1)(2,"button",2),E("click",function(){return n.onAddClick()}),z(3,"app-icon",3),y(),p(4,"input",4),E("ngModelChange",function(r){return n.onInputChange(r)})("keyup.enter",function(){return n.onSubmit()}),y(),p(5,"button",5),E("click",function(){return n.onVoiceClick()}),z(6,"app-icon",6),y()()()),t&2&&(O(4),Oe("listening",n.isListening),A("ngModel",n.displayValue)("placeholder",n.displayPlaceholder)("disabled",n.disabled||n.isListening)("readonly",n.isListening),O(),Oe("active",n.isListening))},dependencies:[ye,al,Hn,ol,mi,Ct],styles:[".input-container[_ngcontent-%COMP%]{padding:16px 20px;background:#fff;border-top:1px solid #f0f0f0}.input-wrapper[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;background:#f8f8f8;border-radius:12px;padding:8px 16px;transition:background-color .2s}.input-wrapper[_ngcontent-%COMP%]:focus-within{background:#f0f0f0}.input-field[_ngcontent-%COMP%]{flex:1;border:none;background:transparent;font-size:15px;color:#333;outline:none;padding:8px 0}.input-field[_ngcontent-%COMP%]::placeholder{color:#999}.input-field[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.input-field.listening[_ngcontent-%COMP%]{color:#ff6b6b;font-style:italic}.icon-button[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s;color:#666;min-width:40px;min-height:40px}.icon-button[_ngcontent-%COMP%]:hover{background-color:#0000000d;color:#333}.icon-button[_ngcontent-%COMP%]:active{background-color:#0000001a}.voice-button.active[_ngcontent-%COMP%]{color:#ff6b6b;animation:_ngcontent-%COMP%_pulse 1.5s ease-in-out infinite}@keyframes _ngcontent-%COMP%_pulse{0%,to{opacity:1}50%{opacity:.6}}"]})};function dC(e,t){if(e&1){let n=tn();p(0,"div",1),E("click",function(){G(n);let r=D();return W(r.onOverlayClick())}),p(1,"div",2),E("click",function(r){G(n);let i=D();return W(i.onModalClick(r))}),p(2,"div",3)(3,"button",4),E("click",function(){G(n);let r=D();return W(r.onBackClick())}),z(4,"app-icon",5),y(),p(5,"h2",6),N(6,"Rename Chat"),y(),p(7,"button",7),E("click",function(){G(n);let r=D();return W(r.onCloseClick())}),z(8,"app-icon",8),y()(),p(9,"div",9)(10,"input",10),Ko("ngModelChange",function(r){G(n);let i=D();return oh(i.editedTitle,r)||(i.editedTitle=r),W(r)}),E("keydown",function(r){G(n);let i=D();return W(i.onInputKeydown(r))}),y()(),p(11,"div",11)(12,"button",12),E("click",function(){G(n);let r=D();return W(r.onCancel())}),N(13," Cancel "),y(),p(14,"button",13),E("click",function(){G(n);let r=D();return W(r.onSave())}),N(15," Save "),y()()()()}if(e&2){let n=D();O(10),Yo("ngModel",n.editedTitle),A("maxlength",500)}}var of=class Hs{isOpen=!1;currentTitle="";close=new M;save=new M;editedTitle="";ngOnChanges(t){t.isOpen&&this.isOpen&&(this.editedTitle=this.currentTitle),t.currentTitle&&(this.editedTitle=this.currentTitle)}onBackClick(){this.close.emit()}onCloseClick(){this.close.emit()}onCancel(){this.close.emit()}onSave(){let t=this.editedTitle.trim();t&&t!==this.currentTitle&&this.save.emit(t),this.close.emit()}onOverlayClick(){this.close.emit()}onModalClick(t){t.stopPropagation()}onInputKeydown(t){t.key==="Enter"?(t.preventDefault(),this.onSave()):t.key==="Escape"&&(t.preventDefault(),this.onCancel())}static \u0275fac=function(t){return new(t||Hs)};static \u0275cmp=Te({type:Hs,selectors:[["app-rename-modal"]],inputs:{isOpen:"isOpen",currentTitle:"currentTitle"},outputs:{close:"close",save:"save"},features:[ri],decls:1,vars:1,consts:[["class","modal-overlay",3,"click",4,"ngIf"],[1,"modal-overlay",3,"click"],[1,"modal-container",3,"click"],[1,"modal-header"],["aria-label","Back",1,"icon-button","back-button",3,"click"],["name","chevron-left","width","24","height","24"],[1,"modal-title"],["aria-label","Close",1,"icon-button","close-button",3,"click"],["name","close","width","24","height","24"],[1,"modal-body"],["type","text","placeholder","Enter chat name","autofocus","",1,"rename-input",3,"ngModelChange","keydown","ngModel","maxlength"],[1,"modal-footer"],[1,"btn","btn-cancel",3,"click"],[1,"btn","btn-save",3,"click"]],template:function(t,n){t&1&&ce(0,dC,16,2,"div",0),t&2&&A("ngIf",n.isOpen)},dependencies:[ye,nn,al,Hn,ol,rf,mi,Ct],styles:[".modal-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:flex-end;justify-content:center;z-index:1000;animation:_ngcontent-%COMP%_fadeIn .2s ease-out}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0}to{opacity:1}}.modal-container[_ngcontent-%COMP%]{background-color:#fff;border-radius:16px 16px 0 0;width:100%;max-width:600px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 -2px 24px #00000026;animation:_ngcontent-%COMP%_slideUp .3s ease-out}@keyframes _ngcontent-%COMP%_slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e5e7eb;gap:12px}.modal-title[_ngcontent-%COMP%]{flex:1;text-align:center;font-size:18px;font-weight:600;color:#111827;margin:0}.icon-button[_ngcontent-%COMP%]{background:none;border:none;padding:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:8px;color:#6b7280;transition:all .2s ease}.icon-button[_ngcontent-%COMP%]:hover{background-color:#f3f4f6;color:#111827}.icon-button[_ngcontent-%COMP%]:active{transform:scale(.95)}.back-button[_ngcontent-%COMP%], .close-button[_ngcontent-%COMP%]{flex-shrink:0}.modal-body[_ngcontent-%COMP%]{padding:24px 20px;flex:1;overflow-y:auto}.rename-input[_ngcontent-%COMP%]{width:100%;padding:12px 16px;font-size:16px;border:1px solid #d1d5db;border-radius:8px;outline:none;transition:all .2s ease;font-family:inherit;color:#111827}.rename-input[_ngcontent-%COMP%]:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.rename-input[_ngcontent-%COMP%]::placeholder{color:#9ca3af}.modal-footer[_ngcontent-%COMP%]{display:flex;gap:12px;padding:16px 20px;border-top:1px solid #e5e7eb}.btn[_ngcontent-%COMP%]{flex:1;padding:12px 24px;font-size:16px;font-weight:500;border-radius:8px;border:none;cursor:pointer;transition:all .2s ease;font-family:inherit}.btn[_ngcontent-%COMP%]:active{transform:scale(.98)}.btn-cancel[_ngcontent-%COMP%]{background-color:#fff;color:#374151;border:1px solid #d1d5db}.btn-cancel[_ngcontent-%COMP%]:hover{background-color:#f9fafb;border-color:#9ca3af}.btn-save[_ngcontent-%COMP%]{background-color:#ef4444;color:#fff}.btn-save[_ngcontent-%COMP%]:hover{background-color:#dc2626}.btn-save[_ngcontent-%COMP%]:disabled{background-color:#fca5a5;cursor:not-allowed}@media (min-width: 768px){.modal-overlay[_ngcontent-%COMP%]{align-items:center}.modal-container[_ngcontent-%COMP%]{border-radius:16px;max-height:400px}}"]})};function hC(e,t){e&1&&(p(0,"div",22),z(1,"div",23),p(2,"p",24),N(3,"Loading conversations..."),y()())}function fC(e,t){if(e&1){let n=tn();p(0,"div",36)(1,"button",37),E("click",function(r){G(n);let i=D().$implicit,s=D(2);return W(s.onEditClick(i.id,i.title,r))}),z(2,"app-icon",38),p(3,"span"),N(4,"Rename"),y()(),p(5,"button",39),E("click",function(r){G(n);let i=D().$implicit,s=D(2);return W(s.onDeleteClick(i.id,r))}),z(6,"app-icon",40),p(7,"span"),N(8,"Delete"),y()()()}}function pC(e,t){if(e&1){let n=tn();p(0,"div",27),E("click",function(){let r=G(n).$implicit,i=D(2);return W(i.onConversationClick(r.id))}),p(1,"div",28)(2,"div",29)(3,"span",30),N(4),y()(),p(5,"span",31),N(6),y()(),p(7,"div",32)(8,"button",33),E("click",function(r){let i=G(n).$implicit,s=D(2);return W(s.toggleMenu(i.id,r))}),z(9,"app-icon",34),y(),ce(10,fC,9,0,"div",35),y()()}if(e&2){let n=t.$implicit,r=D(2);O(4),ke(n.title),O(2),ke(n.date),O(4),A("ngIf",r.isMenuOpen(n.id))}}function gC(e,t){if(e&1&&(p(0,"div",25),ce(1,pC,11,3,"div",26),y()),e&2){let n=D();O(),A("ngForOf",n.conversations)}}function mC(e,t){e&1&&(p(0,"div",41)(1,"p"),N(2,"No conversations yet"),y()())}var yC=class zs{isOpen=!1;conversations=[];isLoading=!1;backClick=new M;settingsClick=new M;closeClick=new M;conversationClick=new M;deleteClick=new M;newChatClick=new M;searchChange=new M;titleUpdate=new M;searchQuery="";isRenameModalOpen=!1;renamingConversationId=null;renamingConversationTitle="";activeMenuId=null;onBackClick(){this.backClick.emit()}onSettingsClick(){this.settingsClick.emit()}onCloseClick(){this.closeClick.emit()}onOverlayClick(){this.closeClick.emit(),this.closeMenu()}onConversationClick(t){this.conversationClick.emit(t)}onDeleteClick(t,n){n.stopPropagation(),this.deleteClick.emit(t),this.closeMenu()}onNewChatClick(){this.newChatClick.emit()}onSearchChange(){this.searchChange.emit(this.searchQuery)}onEditClick(t,n,r){r.stopPropagation(),this.renamingConversationId=t,this.renamingConversationTitle=n,this.isRenameModalOpen=!0,this.closeMenu()}onRenameModalClose(){this.isRenameModalOpen=!1,this.renamingConversationId=null,this.renamingConversationTitle=""}onRenameModalSave(t){this.renamingConversationId&&t.trim()&&this.titleUpdate.emit({id:this.renamingConversationId,title:t.trim()})}toggleMenu(t,n){n.stopPropagation(),this.activeMenuId===t?this.activeMenuId=null:this.activeMenuId=t}closeMenu(){this.activeMenuId=null}isMenuOpen(t){return this.activeMenuId===t}onSidebarClick(){this.closeMenu()}static \u0275fac=function(t){return new(t||zs)};static \u0275cmp=Te({type:zs,selectors:[["app-sidebar"]],inputs:{isOpen:"isOpen",conversations:"conversations",isLoading:"isLoading"},outputs:{backClick:"backClick",settingsClick:"settingsClick",closeClick:"closeClick",conversationClick:"conversationClick",deleteClick:"deleteClick",newChatClick:"newChatClick",searchChange:"searchChange",titleUpdate:"titleUpdate"},decls:25,vars:10,consts:[[1,"sidebar-overlay",3,"click"],[1,"sidebar",3,"click"],[1,"sidebar-header"],[1,"back-text-button",3,"click"],["name","chevron-left","width","16","height","16"],[1,"header-actions"],["aria-label","Settings",1,"icon-button","settings-button",3,"click"],["name","settings","width","20","height","20"],["aria-label","Close",1,"icon-button","close-button",3,"click"],["name","close","width","20","height","20"],[1,"sidebar-content"],[1,"conversations-title"],["class","loading-container",4,"ngIf"],["class","conversations-list",4,"ngIf"],["class","empty-conversations",4,"ngIf"],[1,"sidebar-footer"],[1,"search-container"],["name","search","width","18","height","18",1,"search-icon"],["type","text","placeholder","Search",1,"search-input",3,"ngModelChange","input","ngModel"],["aria-label","New Chat",1,"icon-button","new-chat-button",3,"click"],["name","edit","width","20","height","20"],[3,"close","save","isOpen","currentTitle"],[1,"loading-container"],[1,"spinner"],[1,"loading-text"],[1,"conversations-list"],["class","conversation-item",3,"click",4,"ngFor","ngForOf"],[1,"conversation-item",3,"click"],[1,"conversation-info"],[1,"conversation-title-container"],[1,"conversation-title"],[1,"conversation-date"],[1,"menu-container"],["aria-label","More options",1,"icon-button","menu-button",3,"click"],["name","more-horizontal","width","20","height","20"],["class","context-menu",4,"ngIf"],[1,"context-menu"],[1,"menu-item",3,"click"],["name","edit","width","16","height","16"],[1,"menu-item","delete-item",3,"click"],["name","trash","width","16","height","16"],[1,"empty-conversations"]],template:function(t,n){t&1&&(p(0,"div",0),E("click",function(){return n.onOverlayClick()}),y(),p(1,"div",1),E("click",function(){return n.onSidebarClick()}),p(2,"div",2)(3,"button",3),E("click",function(){return n.onBackClick()}),z(4,"app-icon",4),p(5,"span"),N(6,"Back to Chat"),y()(),p(7,"div",5)(8,"button",6),E("click",function(){return n.onSettingsClick()}),z(9,"app-icon",7),y(),p(10,"button",8),E("click",function(){return n.onCloseClick()}),z(11,"app-icon",9),y()()(),p(12,"div",10)(13,"h3",11),N(14,"Conversations"),y(),ce(15,hC,4,0,"div",12)(16,gC,2,1,"div",13)(17,mC,3,0,"div",14),y(),p(18,"div",15)(19,"div",16),z(20,"app-icon",17),p(21,"input",18),Ko("ngModelChange",function(r){return oh(n.searchQuery,r)||(n.searchQuery=r),r}),E("input",function(){return n.onSearchChange()}),y()(),p(22,"button",19),E("click",function(){return n.onNewChatClick()}),z(23,"app-icon",20),y()()(),p(24,"app-rename-modal",21),E("close",function(){return n.onRenameModalClose()})("save",function(r){return n.onRenameModalSave(r)}),y()),t&2&&(Oe("visible",n.isOpen),O(),Oe("open",n.isOpen),O(14),A("ngIf",n.isLoading),O(),A("ngIf",!n.isLoading&&n.conversations.length>0),O(),A("ngIf",!n.isLoading&&n.conversations.length===0),O(4),Yo("ngModel",n.searchQuery),O(3),A("isOpen",n.isRenameModalOpen)("currentTitle",n.renamingConversationTitle))},dependencies:[ye,hi,nn,al,Hn,ol,mi,Ct,of],styles:[".sidebar-overlay[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100%;height:100%;background:#0006;z-index:998;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.sidebar-overlay.visible[_ngcontent-%COMP%]{opacity:1;visibility:visible}.sidebar[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:85%;max-width:400px;height:100%;background:#fff;z-index:999;transform:translate(-100%);transition:transform .3s ease;display:flex;flex-direction:column;box-shadow:2px 0 8px #0000001a}.sidebar.open[_ngcontent-%COMP%]{transform:translate(0)}.sidebar-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid #e8ecf1}.back-text-button[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;background:none;border:none;cursor:pointer;font-size:16px;font-weight:500;color:#1a1a1a;padding:8px;border-radius:8px;transition:background .2s ease}.back-text-button[_ngcontent-%COMP%]:hover{background:#f5f7fa}.header-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.icon-button[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:background .2s ease;color:#5f6368}.icon-button[_ngcontent-%COMP%]:hover{background:#f5f7fa;color:#1a1a1a}.icon-button[_ngcontent-%COMP%]:active{background:#e8ecf1}.sidebar-content[_ngcontent-%COMP%]{flex:1;overflow-y:auto;padding:16px}.conversations-title[_ngcontent-%COMP%]{font-size:13px;font-weight:500;color:#95a5a6;text-transform:uppercase;letter-spacing:.5px;margin:0 0 16px}.conversations-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.conversation-item[_ngcontent-%COMP%]{display:flex;align-items:center;padding:12px;background:#fff;border-radius:8px;cursor:pointer;transition:background .2s ease;gap:12px;position:relative}.conversation-item[_ngcontent-%COMP%]:hover{background:#f5f7fa}.conversation-info[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.conversation-title-container[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;min-width:0}.conversation-title[_ngcontent-%COMP%]{flex:1;font-size:14px;font-weight:500;color:#1a1a1a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conversation-date[_ngcontent-%COMP%]{font-size:12px;color:#95a5a6}.menu-container[_ngcontent-%COMP%]{position:relative}.menu-button[_ngcontent-%COMP%]{opacity:0;transition:opacity .2s ease}.conversation-item[_ngcontent-%COMP%]:hover .menu-button[_ngcontent-%COMP%], .menu-button[_ngcontent-%COMP%]:focus, .menu-container[_ngcontent-%COMP%]:focus-within .menu-button[_ngcontent-%COMP%]{opacity:1}.context-menu[_ngcontent-%COMP%]{position:absolute;top:100%;right:0;background:#fff;border-radius:8px;box-shadow:0 4px 12px #00000026;border:1px solid #e8ecf1;padding:4px;min-width:140px;z-index:1000;display:flex;flex-direction:column;gap:2px}.menu-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:8px 12px;border:none;background:none;width:100%;text-align:left;cursor:pointer;border-radius:6px;font-size:14px;color:#1a1a1a;transition:background .2s ease}.menu-item[_ngcontent-%COMP%]:hover{background:#f5f7fa}.menu-item[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{color:#5f6368}.delete-item[_ngcontent-%COMP%]{color:#dc3545}.delete-item[_ngcontent-%COMP%]:hover{background:#fee}.delete-item[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{color:#dc3545}.loading-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;gap:16px}.spinner[_ngcontent-%COMP%]{width:40px;height:40px;border:3px solid #f5f7fa;border-top-color:#ff5337;border-radius:50%;animation:_ngcontent-%COMP%_spin .8s linear infinite}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}.loading-text[_ngcontent-%COMP%]{color:#95a5a6;font-size:14px;margin:0}.empty-conversations[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:40px 20px;text-align:center}.empty-conversations[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#95a5a6;font-size:14px;margin:0}.sidebar-footer[_ngcontent-%COMP%]{padding:16px;border-top:1px solid #e8ecf1;display:flex;align-items:center;gap:12px}.search-container[_ngcontent-%COMP%]{flex:1;position:relative;display:flex;align-items:center;background:#f5f7fa;border-radius:8px;padding:8px 12px;gap:8px}.search-icon[_ngcontent-%COMP%]{flex-shrink:0;color:#95a5a6}.search-input[_ngcontent-%COMP%]{flex:1;border:none;background:none;font-size:14px;color:#1a1a1a;outline:none;padding:0}.search-input[_ngcontent-%COMP%]::placeholder{color:#95a5a6}.new-chat-button[_ngcontent-%COMP%]{flex-shrink:0;background:#fff;border:1px solid #e8ecf1;border-radius:8px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.new-chat-button[_ngcontent-%COMP%]:hover{background:#f5f7fa;border-color:#d0d7de}@media (max-width: 480px){.sidebar[_ngcontent-%COMP%]{width:100%;max-width:none}}"]})},lf=class Bs{text="";disabled=!1;buttonClick=new M;onClick(){this.disabled||this.buttonClick.emit(this.text)}static \u0275fac=function(t){return new(t||Bs)};static \u0275cmp=Te({type:Bs,selectors:[["app-suggestion-button"]],inputs:{text:"text",disabled:"disabled"},outputs:{buttonClick:"buttonClick"},decls:2,vars:3,consts:[[1,"suggestion-button",3,"click"]],template:function(t,n){t&1&&(Wo(0,"button",0),nh("click",function(){return n.onClick()}),N(1),Qo()),t&2&&(Oe("disabled",n.disabled),O(),Mn(" ",n.text," "))},dependencies:[ye],styles:[".suggestion-button[_ngcontent-%COMP%]{background:#fff;border:1.5px solid #FF6B6B;border-radius:8px;padding:14px 24px;font-size:15px;font-weight:500;color:#ff6b6b;cursor:pointer;transition:all .2s ease;white-space:nowrap;box-shadow:0 2px 4px #0000000d;display:inline-block;width:auto;text-align:center}.suggestion-button[_ngcontent-%COMP%]:hover:not(.disabled){background:#fff5f5;border-color:#ff5252;transform:translateY(-1px);box-shadow:0 4px 8px #ff6b6b26}.suggestion-button[_ngcontent-%COMP%]:active:not(.disabled){transform:translateY(0);box-shadow:0 2px 4px #0000000d}.suggestion-button.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}"]})},vC=class vr{toasts=Pt([]);toasts$=this.toasts.asReadonly();show(t,n="info",r=3e3){let i=Math.random().toString(36).substring(7),s={id:i,message:t,type:n,duration:r};this.toasts.update(o=>[...o,s]),r>0&&setTimeout(()=>this.remove(i),r)}success(t,n){this.show(t,"success",n)}error(t,n){this.show(t,"error",n)}warning(t,n){this.show(t,"warning",n)}info(t,n){this.show(t,"info",n)}remove(t){this.toasts.update(n=>n.filter(r=>r.id!==t))}static \u0275fac=function(t){return new(t||vr)};static \u0275prov=T({token:vr,factory:vr.\u0275fac,providedIn:"root"})};function bC(e,t){e&1&&(p(0,"span"),N(1,"\u2713"),y())}function _C(e,t){e&1&&(p(0,"span"),N(1,"\u2715"),y())}function wC(e,t){e&1&&(p(0,"span"),N(1,"\u26A0"),y())}function CC(e,t){e&1&&(p(0,"span"),N(1,"\u2139"),y())}function xC(e,t){if(e&1){let n=tn();p(0,"div",2)(1,"div",3)(2,"span",4),Xd(3,5),ce(4,bC,2,0,"span",6)(5,_C,2,0,"span",6)(6,wC,2,0,"span",6)(7,CC,2,0,"span",6),eh(),y(),p(8,"span",7),N(9),y()(),p(10,"button",8),E("click",function(){let r=G(n).$implicit,i=D();return W(i.onClose(r.id))}),N(11,"\u2715"),y()()}if(e&2){let n=t.$implicit;Oe("success",n.type==="success")("error",n.type==="error")("warning",n.type==="warning")("info",n.type==="info"),O(3),A("ngSwitch",n.type),O(),A("ngSwitchCase","success"),O(),A("ngSwitchCase","error"),O(),A("ngSwitchCase","warning"),O(),A("ngSwitchCase","info"),O(2),ke(n.message)}}var kC=class Us{toastService=_(vC);toasts=this.toastService.toasts$;onClose(t){this.toastService.remove(t)}static \u0275fac=function(t){return new(t||Us)};static \u0275cmp=Te({type:Us,selectors:[["app-toast-container"]],decls:2,vars:1,consts:[[1,"toast-container"],["class","toast",3,"success","error","warning","info",4,"ngFor","ngForOf"],[1,"toast"],[1,"toast-content"],[1,"toast-icon"],[3,"ngSwitch"],[4,"ngSwitchCase"],[1,"toast-message"],[1,"toast-close",3,"click"]],template:function(t,n){t&1&&(p(0,"div",0),ce(1,xC,12,14,"div",1),y()),t&2&&(O(),A("ngForOf",n.toasts()))},dependencies:[ye,hi,gh,n_],styles:[".toast-container[_ngcontent-%COMP%]{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:12px;max-width:400px}.toast[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-radius:8px;box-shadow:0 4px 12px #00000026;background:#fff;min-width:300px;animation:_ngcontent-%COMP%_slideIn .3s ease-out}@keyframes _ngcontent-%COMP%_slideIn{0%{transform:translate(400px);opacity:0}to{transform:translate(0);opacity:1}}.toast-content[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;flex:1}.toast-icon[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:14px;font-weight:700}.toast.success[_ngcontent-%COMP%]{border-left:4px solid #10b981}.toast.success[_ngcontent-%COMP%] .toast-icon[_ngcontent-%COMP%]{background:#10b981;color:#fff}.toast.error[_ngcontent-%COMP%]{border-left:4px solid #ef4444}.toast.error[_ngcontent-%COMP%] .toast-icon[_ngcontent-%COMP%]{background:#ef4444;color:#fff}.toast.warning[_ngcontent-%COMP%]{border-left:4px solid #f59e0b}.toast.warning[_ngcontent-%COMP%] .toast-icon[_ngcontent-%COMP%]{background:#f59e0b;color:#fff}.toast.info[_ngcontent-%COMP%]{border-left:4px solid #3b82f6}.toast.info[_ngcontent-%COMP%] .toast-icon[_ngcontent-%COMP%]{background:#3b82f6;color:#fff}.toast-message[_ngcontent-%COMP%]{flex:1;font-size:14px;color:#2c3e50;line-height:1.4}.toast-close[_ngcontent-%COMP%]{background:none;border:none;color:#95a5a6;cursor:pointer;font-size:18px;padding:4px 8px;display:flex;align-items:center;justify-content:center;transition:color .2s}.toast-close[_ngcontent-%COMP%]:hover{color:#2c3e50}@media (max-width: 768px){.toast-container[_ngcontent-%COMP%]{top:10px;right:10px;left:10px;max-width:none}.toast[_ngcontent-%COMP%]{min-width:auto}}"]})};function OC(e,t){if(e&1&&(p(0,"div",7)(1,"div",8),z(2,"app-icon",9),y(),p(3,"h1",10),N(4),y(),p(5,"p",11),N(6),y(),p(7,"p",12),N(8),y()()),e&2){let n=D();O(4),ke(n.greeting),O(2),ke(n.welcomeText),O(2),ke(n.description)}}function SC(e,t){if(e&1&&z(0,"app-chat-history",13),e&2){let n=D();A("messages",n.messages)}}function EC(e,t){if(e&1){let n=tn();p(0,"app-suggestion-button",18),E("buttonClick",function(r){G(n);let i=D(2);return W(i.onSuggestionClick(r))}),y()}if(e&2){let n=t.$implicit,r=D(2);A("text",n)("disabled",r.isLoading)}}function TC(e,t){if(e&1&&(p(0,"div",14)(1,"p",15),N(2),y(),p(3,"div",16),ce(4,EC,1,2,"app-suggestion-button",17),y()()),e&2){let n=D();O(2),ke(n.personalizationText),O(2),A("ngForOf",n.suggestions)}}var MC=class Zs{title=He.TITLE;greeting=He.WELCOME.GREETING;welcomeText=He.WELCOME.TEXT;description=He.WELCOME.DESCRIPTION;personalizationText=He.WELCOME.PERSONALIZATION;inputPlaceholder=He.INPUT.PLACEHOLDER;suggestions=[...He.SUGGESTIONS];messages=[];hasMessages=!1;isLoading=!1;voiceStatus={state:"idle",transcript:"",interimTranscript:""};inputValue="";menuClick=new M;closeClick=new M;suggestionClick=new M;messageSubmit=new M;voiceClick=new M;addClick=new M;inputValueChange=new M;onMenuClick(){this.menuClick.emit()}onCloseClick(){this.closeClick.emit()}onSuggestionClick(t){this.suggestionClick.emit(t)}onMessageSubmit(t){this.messageSubmit.emit(t)}onVoiceClick(){this.voiceClick.emit()}onAddClick(){this.addClick.emit()}onInputValueChange(t){this.inputValueChange.emit(t)}static \u0275fac=function(t){return new(t||Zs)};static \u0275cmp=Te({type:Zs,selectors:[["app-assistant"]],inputs:{title:"title",greeting:"greeting",welcomeText:"welcomeText",description:"description",personalizationText:"personalizationText",inputPlaceholder:"inputPlaceholder",suggestions:"suggestions",messages:"messages",hasMessages:"hasMessages",isLoading:"isLoading",voiceStatus:"voiceStatus",inputValue:"inputValue"},outputs:{menuClick:"menuClick",closeClick:"closeClick",suggestionClick:"suggestionClick",messageSubmit:"messageSubmit",voiceClick:"voiceClick",addClick:"addClick",inputValueChange:"inputValueChange"},decls:7,vars:8,consts:[[1,"assistant-page"],[3,"menuClick","closeClick","title"],[1,"content"],["class","welcome-container",4,"ngIf"],[3,"messages",4,"ngIf"],["class","personalization-section",4,"ngIf"],[3,"valueChange","submitMessage","voiceClick","addClick","placeholder","disabled","voiceStatus","value"],[1,"welcome-container"],[1,"icon-wrapper"],["name","sparkle","width","64","height","64","dropShadow","drop-shadow(0 4px 8px rgba(255, 107, 107, 0.2))",1,"sparkle-icon"],[1,"greeting"],[1,"welcome-text"],[1,"description"],[3,"messages"],[1,"personalization-section"],[1,"personalization-text"],[1,"suggestions"],[3,"text","disabled","buttonClick",4,"ngFor","ngForOf"],[3,"buttonClick","text","disabled"]],template:function(t,n){t&1&&(p(0,"div",0)(1,"app-header",1),E("menuClick",function(){return n.onMenuClick()})("closeClick",function(){return n.onCloseClick()}),y(),p(2,"div",2),ce(3,OC,9,3,"div",3)(4,SC,1,1,"app-chat-history",4)(5,TC,5,2,"div",5),y(),p(6,"app-input-field",6),E("valueChange",function(r){return n.onInputValueChange(r)})("submitMessage",function(r){return n.onMessageSubmit(r)})("voiceClick",function(){return n.onVoiceClick()})("addClick",function(){return n.onAddClick()}),y()()),t&2&&(O(),A("title",n.title),O(2),A("ngIf",!n.hasMessages),O(),A("ngIf",n.hasMessages),O(),A("ngIf",!n.hasMessages),O(),A("placeholder",n.inputPlaceholder)("disabled",n.isLoading)("voiceStatus",n.voiceStatus)("value",n.inputValue))},dependencies:[ye,hi,nn,Uh,lf,sf,Ct,Bh],styles:[".assistant-page[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100vh;max-height:100vh;background:#fff;font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif;overflow:hidden}.content[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;position:relative}app-chat-history[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.welcome-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:20px 24px 30px;text-align:center;flex:1}.icon-wrapper[_ngcontent-%COMP%]{margin-bottom:16px}.greeting[_ngcontent-%COMP%]{font-size:28px;font-weight:700;margin:0 0 12px;color:#1a1a1a}.welcome-text[_ngcontent-%COMP%]{font-size:18px;font-weight:500;margin:0 0 12px;color:#333}.description[_ngcontent-%COMP%]{font-size:15px;font-weight:400;margin:0 0 20px;color:#666;max-width:400px;line-height:1.4}.personalization-section[_ngcontent-%COMP%]{padding:0 24px 24px;display:flex;flex-direction:column;align-items:center;gap:16px;flex-shrink:0}.personalization-text[_ngcontent-%COMP%]{font-size:15px;color:#666;margin:0;text-align:center;max-width:400px;line-height:1.4}.suggestions[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%;max-width:400px}@media (max-width: 768px){.suggestions[_ngcontent-%COMP%]{max-width:100%}}"]})},PC=class br{constructor(t){this.http=t}config=null;loadConfig(){return La(this,null,function*(){try{this.config=yield kp(this.http.get("/config.json")),console.log("Configuration loaded:",this.config?.environmentName)}catch(t){console.error("Failed to load configuration, using defaults",t),this.config={apiUrl:"https://localhost:7592",apiTimeout:3e4,environmentName:"local"}}})}get apiUrl(){return this.config?.apiUrl||"https://localhost:7592"}get apiTimeout(){return this.config?.apiTimeout||3e4}get environmentName(){return this.config?.environmentName||"local"}getConfig(){return this.config||{apiUrl:"https://localhost:7592",apiTimeout:3e4,environmentName:"local"}}static \u0275fac=function(t){return new(t||br)(b(Ah))};static \u0275prov=T({token:br,factory:br.\u0275fac,providedIn:"root"})},IC={production:!0};function af(e){return()=>e.loadConfig()}La(null,null,function*(){if(customElements.get("app-assistant")){console.log("\u26A0\uFE0F Web Components already registered, skipping...");return}let e=yield x_({providers:[Jg(),K1({eventCoalescing:!0}),iw(sw()),{provide:Qd,useFactory:af,deps:[PC],multi:!0},mh,vw.forRoot({level:IC.production?Z.WARN:Z.DEBUG,serverLogLevel:Z.ERROR,disableConsoleLogging:!1,enableSourceMaps:!0,timestampFormat:"short"}).providers||[]]}),t=be(Bh,{injector:e.injector});customElements.define("app-chat-history",t);let n=be(Ew,{injector:e.injector});customElements.define("app-confirmation-modal",n);let r=be(Uh,{injector:e.injector});customElements.define("app-header",r);let i=be(Ct,{injector:e.injector});customElements.define("app-icon",i);let s=be(sf,{injector:e.injector});customElements.define("app-input-field",s);let o=be(zh,{injector:e.injector});customElements.define("app-message",o);let l=be(of,{injector:e.injector});customElements.define("app-rename-modal",l);let a=be(yC,{injector:e.injector});customElements.define("app-sidebar",a);let u=be(lf,{injector:e.injector});customElements.define("app-suggestion-button",u);let c=be(kC,{injector:e.injector});customElements.define("app-toast-container",c);let d=be(MC,{injector:e.injector});customElements.define("app-assistant",d),console.log("\u2705 Web Components registered!"),console.log("Available components:"),console.log(" - app-chat-history"),console.log(" - app-confirmation-modal"),console.log(" - app-header"),console.log(" - app-icon"),console.log(" - app-input-field"),console.log(" - app-message"),console.log(" - app-rename-modal"),console.log(" - app-sidebar"),console.log(" - app-suggestion-button"),console.log(" - app-toast-container"),console.log(" - app-assistant")});return pf(DC);})();
24
24
  /*! Bundled license information:
25
25
 
26
26
  @angular/core/fesm2022/not_found.mjs:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mbubela/oaa-assistant",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.0",
6
6
  "@angular/core": "^20.3.0"