@propbinder/mobile-design 0.3.1 → 0.3.3

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.
@@ -8627,6 +8627,29 @@ class DsMobileMessageComposerComponent {
8627
8627
  * Available users for mentions (if mentions enabled)
8628
8628
  */
8629
8629
  mentionUsers = input([], ...(ngDevMode ? [{ debugName: "mentionUsers" }] : []));
8630
+ /**
8631
+ * Whether to show the internal message toggle
8632
+ */
8633
+ showInternalToggle = input(false, ...(ngDevMode ? [{ debugName: "showInternalToggle" }] : []));
8634
+ /**
8635
+ * Label for the internal message toggle
8636
+ */
8637
+ internalToggleLabel = input('Intern besked', ...(ngDevMode ? [{ debugName: "internalToggleLabel" }] : []));
8638
+ /**
8639
+ * Label for the reply header
8640
+ */
8641
+ replyLabel = input('Besvar', ...(ngDevMode ? [{ debugName: "replyLabel" }] : []));
8642
+ /**
8643
+ * Description text shown when internal message is active
8644
+ */
8645
+ internalMessageDescription = input('Interne beskeder er kun synlige for interne brugere. Lejeren kan ikke se denne besked.', ...(ngDevMode ? [{ debugName: "internalMessageDescription" }] : []));
8646
+ /**
8647
+ * Local state for internal toggle
8648
+ */
8649
+ isInternal = signal(false, ...(ngDevMode ? [{ debugName: "isInternal" }] : []));
8650
+ toggleInternal() {
8651
+ this.isInternal.update(v => !v);
8652
+ }
8630
8653
  /**
8631
8654
  * Auto-focus input on mount
8632
8655
  */
@@ -8967,6 +8990,7 @@ class DsMobileMessageComposerComponent {
8967
8990
  this.replyingTo.set(null);
8968
8991
  this.showMentionMenu.set(false);
8969
8992
  this.attachments.set([]);
8993
+ this.isInternal.set(false);
8970
8994
  // Reset textarea height
8971
8995
  if (this.messageInputRef?.nativeElement) {
8972
8996
  this.messageInputRef.nativeElement.style.height = 'auto';
@@ -9233,6 +9257,7 @@ class DsMobileMessageComposerComponent {
9233
9257
  replyTo: this.replyingTo()?.authorName,
9234
9258
  isEdit,
9235
9259
  attachments: hasAttachments ? [...this.attachments()] : undefined,
9260
+ isInternal: this.isInternal(),
9236
9261
  });
9237
9262
  // Keep keyboard open by explicitly showing it before clearing
9238
9263
  // This prevents the keyboard from starting to close during the clear operation
@@ -9279,8 +9304,25 @@ class DsMobileMessageComposerComponent {
9279
9304
  }
9280
9305
  }
9281
9306
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileMessageComposerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
9282
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileMessageComposerComponent, isStandalone: true, selector: "ds-mobile-message-composer", inputs: { avatarInitials: { classPropertyName: "avatarInitials", publicName: "avatarInitials", isSignal: true, isRequired: false, transformFunction: null }, avatarType: { classPropertyName: "avatarType", publicName: "avatarType", isSignal: true, isRequired: false, transformFunction: null }, avatarSrc: { classPropertyName: "avatarSrc", publicName: "avatarSrc", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, sendButtonLabel: { classPropertyName: "sendButtonLabel", publicName: "sendButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, attachmentButtonLabel: { classPropertyName: "attachmentButtonLabel", publicName: "attachmentButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, showAttachmentButton: { classPropertyName: "showAttachmentButton", publicName: "showAttachmentButton", isSignal: true, isRequired: false, transformFunction: null }, showAiButton: { classPropertyName: "showAiButton", publicName: "showAiButton", isSignal: true, isRequired: false, transformFunction: null }, editIndicatorText: { classPropertyName: "editIndicatorText", publicName: "editIndicatorText", isSignal: true, isRequired: false, transformFunction: null }, replyIndicatorText: { classPropertyName: "replyIndicatorText", publicName: "replyIndicatorText", isSignal: true, isRequired: false, transformFunction: null }, enableMentions: { classPropertyName: "enableMentions", publicName: "enableMentions", isSignal: true, isRequired: false, transformFunction: null }, mentionUsers: { classPropertyName: "mentionUsers", publicName: "mentionUsers", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { messageSent: "messageSent", editCancelled: "editCancelled", replyCancelled: "replyCancelled", mentionSelected: "mentionSelected", attachmentClicked: "attachmentClicked", attachmentsChanged: "attachmentsChanged", aiClick: "aiClick" }, viewQueries: [{ propertyName: "messageInputRef", first: true, predicate: ["messageInputEl"], descendants: true }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: `
9283
- <div class="message-composer">
9307
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileMessageComposerComponent, isStandalone: true, selector: "ds-mobile-message-composer", inputs: { avatarInitials: { classPropertyName: "avatarInitials", publicName: "avatarInitials", isSignal: true, isRequired: false, transformFunction: null }, avatarType: { classPropertyName: "avatarType", publicName: "avatarType", isSignal: true, isRequired: false, transformFunction: null }, avatarSrc: { classPropertyName: "avatarSrc", publicName: "avatarSrc", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, sendButtonLabel: { classPropertyName: "sendButtonLabel", publicName: "sendButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, attachmentButtonLabel: { classPropertyName: "attachmentButtonLabel", publicName: "attachmentButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, showAttachmentButton: { classPropertyName: "showAttachmentButton", publicName: "showAttachmentButton", isSignal: true, isRequired: false, transformFunction: null }, showAiButton: { classPropertyName: "showAiButton", publicName: "showAiButton", isSignal: true, isRequired: false, transformFunction: null }, editIndicatorText: { classPropertyName: "editIndicatorText", publicName: "editIndicatorText", isSignal: true, isRequired: false, transformFunction: null }, replyIndicatorText: { classPropertyName: "replyIndicatorText", publicName: "replyIndicatorText", isSignal: true, isRequired: false, transformFunction: null }, enableMentions: { classPropertyName: "enableMentions", publicName: "enableMentions", isSignal: true, isRequired: false, transformFunction: null }, mentionUsers: { classPropertyName: "mentionUsers", publicName: "mentionUsers", isSignal: true, isRequired: false, transformFunction: null }, showInternalToggle: { classPropertyName: "showInternalToggle", publicName: "showInternalToggle", isSignal: true, isRequired: false, transformFunction: null }, internalToggleLabel: { classPropertyName: "internalToggleLabel", publicName: "internalToggleLabel", isSignal: true, isRequired: false, transformFunction: null }, replyLabel: { classPropertyName: "replyLabel", publicName: "replyLabel", isSignal: true, isRequired: false, transformFunction: null }, internalMessageDescription: { classPropertyName: "internalMessageDescription", publicName: "internalMessageDescription", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { messageSent: "messageSent", editCancelled: "editCancelled", replyCancelled: "replyCancelled", mentionSelected: "mentionSelected", attachmentClicked: "attachmentClicked", attachmentsChanged: "attachmentsChanged", aiClick: "aiClick" }, viewQueries: [{ propertyName: "messageInputRef", first: true, predicate: ["messageInputEl"], descendants: true }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: `
9308
+ <div class="message-composer" [class.is-internal]="isInternal()">
9309
+ <!-- Internal toggle header -->
9310
+ @if (showInternalToggle()) {
9311
+ <div class="internal-toggle-header">
9312
+ <button class="internal-toggle-btn" [class.active-primary]="!isInternal()" (click)="isInternal.set(false)" type="button">
9313
+ {{ replyLabel() }}
9314
+ </button>
9315
+ <button class="internal-toggle-btn" [class.active-warning]="isInternal()" (click)="isInternal.set(true)" type="button">
9316
+ {{ internalToggleLabel() }}
9317
+ </button>
9318
+ </div>
9319
+ @if (isInternal() && internalMessageDescription()) {
9320
+ <div class="internal-description">
9321
+ {{ internalMessageDescription() }}
9322
+ </div>
9323
+ }
9324
+ }
9325
+
9284
9326
  <!-- Edit indicator (optional) -->
9285
9327
  @if (editingMessage()) {
9286
9328
  <div class="edit-indicator">
@@ -9443,12 +9485,29 @@ class DsMobileMessageComposerComponent {
9443
9485
  (change)="handleFileSelect($event)"
9444
9486
  />
9445
9487
  </div>
9446
- `, isInline: true, styles: [":host{display:block}.message-composer{background:var(--color-background-neutral-primary, #ffffff);border-top:1px solid var(--border-color-default);border-bottom-left-radius:0;border-bottom-right-radius:0;padding:12px 16px;width:100%;display:flex;flex-direction:column;gap:8px}.edit-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-brand-subtle, #f0edfe);border-radius:8px;animation:slideDown .2s ease-out}.edit-indicator-content{display:flex;align-items:center;gap:8px;color:var(--color-accent, #6b5ff5);flex:1;min-width:0}.edit-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;line-height:18px;color:var(--color-accent, #6b5ff5)}.cancel-edit{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-accent, #6b5ff5);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-edit:active{background:var(--color-brand-subtle, #e0dbfe)}.reply-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:8px;animation:slideDown .2s ease-out}.reply-indicator-content{display:flex;align-items:center;gap:4px;color:var(--color-text-secondary, #737373);flex:1;min-width:0}.reply-to-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-author{color:var(--color-accent, #6b5ff5);font-weight:600}.cancel-reply{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary, #737373);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-reply:active{background:var(--color-background-neutral-secondary, #f5f5f5)}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.attachment-previews-section{overflow:hidden;max-height:0;opacity:0;margin-left:-16px;margin-right:-16px;padding:0;pointer-events:none;transition:max-height .35s cubic-bezier(.4,0,.2,1),opacity .28s ease,padding .35s cubic-bezier(.4,0,.2,1)}.attachment-previews-section.has-attachments{max-height:160px;opacity:1;padding:0 0 8px;pointer-events:auto}ds-mobile-attachment-preview{animation:attachment-appear var(--spring-bouncy) both;max-width:200px;margin-right:8px;overflow:hidden;flex-shrink:0;transition:max-width .6s var(--spring-curve-gentle),margin-right .6s var(--spring-curve-gentle)}ds-mobile-attachment-preview.is-exiting{animation:attachment-disappear .55s ease both;max-width:0;margin-right:0;pointer-events:none}@keyframes attachment-appear{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes attachment-disappear{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.6)}}.attachment-previews{display:flex;flex-wrap:nowrap;gap:0;overflow-x:auto;padding:0 16px;scrollbar-width:none;-ms-overflow-style:none}.attachment-previews::-webkit-scrollbar{display:none}.composer-content{display:flex;align-items:center;gap:12px;width:100%;position:relative}.composer-leading-button{flex-shrink:0}.composer-leading-button::ng-deep button{width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;padding:0!important;border-radius:50%!important;transition:transform .3s ease}.composer-leading-button--open::ng-deep button{transform:rotate(45deg)}.composer-input-wrapper{flex:1;display:flex;align-items:flex-start;gap:8px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:24px;padding:12px 16px;min-height:44px;position:relative}.mention-user-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.mention-user-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;color:var(--color-text-primary, #1a1a1a)}.mention-user-role{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373)}.composer-input{flex:1;border:none;background:transparent;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:20px;color:var(--color-text-primary, #1a1a1a);outline:none;resize:none;min-height:20px;max-height:120px;overflow-y:auto;padding:0;margin:0}.composer-input::placeholder{color:var(--color-text-tertiary, #a0a0a0);font-size:var(--font-size-sm)}.send-button-inline{position:absolute;top:6px;right:6px;z-index:10;flex-shrink:0;opacity:0;transform:translate(20px) scale(.8);pointer-events:none;transition:opacity .15s ease-in,transform .15s ease-in}.send-button-inline.show{opacity:1;transform:translate(0) scale(1);pointer-events:auto;animation:slideInFromRight var(--spring-bouncy)}.send-button-inline::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important}@keyframes slideInFromRight{0%{opacity:0;transform:translate(20px) scale(.8)}to{opacity:1;transform:translate(0) scale(1)}}.ai-button-inline{position:absolute;top:6px;right:6px;z-index:9;flex-shrink:0;transition:opacity .15s ease-in,transform .15s ease-in}.ai-button-inline::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important;color:var(--color-primary-base, #6b5ff5)!important;background-color:var(--color-background-brand-subtle, #f0edfe)!important}.ai-button-inline.hide{opacity:0;transform:scale(.8);pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: DsIconButtonComponent, selector: "ds-icon-button", inputs: ["variant", "size", "icon", "disabled", "loading", "pressed", "expanded", "ariaLabel", "tooltip", "tooltipDisabled", "tooltipPlacement"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsMobileAttachmentPreviewComponent, selector: "ds-mobile-attachment-preview", inputs: ["attachment"], outputs: ["remove"] }, { kind: "component", type: DsMobileDropdownComponent, selector: "ds-mobile-dropdown", inputs: ["trigger", "keepFocusOn", "items", "isOpen", "position", "align", "maxHeight", "emptyMessage", "ariaLabel", "maxWidth"], outputs: ["itemSelected", "closed"] }, { kind: "component", type: DsMobileMediaActionsPanelComponent, selector: "ds-mobile-media-actions-panel", inputs: ["items", "isOpen"], outputs: ["itemSelected"] }] });
9488
+ `, isInline: true, styles: [":host{display:block}.message-composer{background:var(--color-background-neutral-primary, #ffffff);border-top:1px solid var(--border-color-default);border-bottom-left-radius:0;border-bottom-right-radius:0;padding:12px 16px;width:100%;display:flex;flex-direction:column;gap:8px;transition:background-color .3s ease}.message-composer.is-internal{background-color:var(--color-background-warning-subtle, #fffbeb)}.internal-toggle-header{display:flex;align-items:center;gap:12px;padding-bottom:4px}.reply-label{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:500;color:var(--color-text-primary, #1a1a1a)}.internal-toggle-btn{background:var(--color-background-neutral-secondary, #f5f5f5);border:1px solid var(--border-color-default, #e5e5e5);color:var(--color-text-secondary, #737373);border-radius:9999px;padding:4px 12px;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all .2s ease}.internal-toggle-btn.active-primary{background:var(--color-background-brand-subtle, #f0edfe);border-color:var(--color-background-brand-subtle, #f0edfe);color:var(--color-primary-base, #6b5ff5)}.internal-toggle-btn.active-warning{background:var(--color-background-warning-subtle, #fef3c7);border-color:var(--color-background-warning-subtle, #fef3c7);color:var(--color-text-warning, #b45309)}.internal-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);color:var(--color-text-secondary, #737373);padding-bottom:4px;line-height:1.4}.edit-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-brand-subtle, #f0edfe);border-radius:8px;animation:slideDown .2s ease-out}.edit-indicator-content{display:flex;align-items:center;gap:8px;color:var(--color-accent, #6b5ff5);flex:1;min-width:0}.edit-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;line-height:18px;color:var(--color-accent, #6b5ff5)}.cancel-edit{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-accent, #6b5ff5);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-edit:active{background:var(--color-brand-subtle, #e0dbfe)}.reply-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:8px;animation:slideDown .2s ease-out}.reply-indicator-content{display:flex;align-items:center;gap:4px;color:var(--color-text-secondary, #737373);flex:1;min-width:0}.reply-to-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-author{color:var(--color-accent, #6b5ff5);font-weight:600}.cancel-reply{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary, #737373);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-reply:active{background:var(--color-background-neutral-secondary, #f5f5f5)}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.attachment-previews-section{overflow:hidden;max-height:0;opacity:0;margin-left:-16px;margin-right:-16px;padding:0;pointer-events:none;transition:max-height .35s cubic-bezier(.4,0,.2,1),opacity .28s ease,padding .35s cubic-bezier(.4,0,.2,1)}.attachment-previews-section.has-attachments{max-height:160px;opacity:1;padding:0 0 8px;pointer-events:auto}ds-mobile-attachment-preview{animation:attachment-appear var(--spring-bouncy) both;max-width:200px;margin-right:8px;overflow:hidden;flex-shrink:0;transition:max-width .6s var(--spring-curve-gentle),margin-right .6s var(--spring-curve-gentle)}ds-mobile-attachment-preview.is-exiting{animation:attachment-disappear .55s ease both;max-width:0;margin-right:0;pointer-events:none}@keyframes attachment-appear{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes attachment-disappear{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.6)}}.attachment-previews{display:flex;flex-wrap:nowrap;gap:0;overflow-x:auto;padding:0 16px;scrollbar-width:none;-ms-overflow-style:none}.attachment-previews::-webkit-scrollbar{display:none}.composer-content{display:flex;align-items:center;gap:12px;width:100%;position:relative}.composer-leading-button{flex-shrink:0}.composer-leading-button::ng-deep button{width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;padding:0!important;border-radius:50%!important;transition:transform .3s ease}.composer-leading-button--open::ng-deep button{transform:rotate(45deg)}.composer-input-wrapper{flex:1;display:flex;align-items:flex-start;gap:8px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:24px;padding:12px 16px;min-height:44px;position:relative}.mention-user-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.mention-user-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;color:var(--color-text-primary, #1a1a1a)}.mention-user-role{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373)}.composer-input{flex:1;border:none;background:transparent;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:20px;color:var(--color-text-primary, #1a1a1a);outline:none;resize:none;min-height:20px;max-height:120px;overflow-y:auto;padding:0;margin:0}.composer-input::placeholder{color:var(--color-text-tertiary, #a0a0a0);font-size:var(--font-size-sm)}.send-button-inline{position:absolute;top:6px;right:6px;z-index:10;flex-shrink:0;opacity:0;transform:translate(20px) scale(.8);pointer-events:none;transition:opacity .15s ease-in,transform .15s ease-in}.send-button-inline.show{opacity:1;transform:translate(0) scale(1);pointer-events:auto;animation:slideInFromRight var(--spring-bouncy)}.send-button-inline::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important}@keyframes slideInFromRight{0%{opacity:0;transform:translate(20px) scale(.8)}to{opacity:1;transform:translate(0) scale(1)}}.ai-button-inline{position:absolute;top:6px;right:6px;z-index:9;flex-shrink:0;transition:opacity .15s ease-in,transform .15s ease-in}.ai-button-inline::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important;color:var(--color-primary-base, #6b5ff5)!important;background-color:var(--color-background-brand-subtle, #f0edfe)!important}.ai-button-inline.hide{opacity:0;transform:scale(.8);pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: DsIconButtonComponent, selector: "ds-icon-button", inputs: ["variant", "size", "icon", "disabled", "loading", "pressed", "expanded", "ariaLabel", "tooltip", "tooltipDisabled", "tooltipPlacement"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsMobileAttachmentPreviewComponent, selector: "ds-mobile-attachment-preview", inputs: ["attachment"], outputs: ["remove"] }, { kind: "component", type: DsMobileDropdownComponent, selector: "ds-mobile-dropdown", inputs: ["trigger", "keepFocusOn", "items", "isOpen", "position", "align", "maxHeight", "emptyMessage", "ariaLabel", "maxWidth"], outputs: ["itemSelected", "closed"] }, { kind: "component", type: DsMobileMediaActionsPanelComponent, selector: "ds-mobile-media-actions-panel", inputs: ["items", "isOpen"], outputs: ["itemSelected"] }] });
9447
9489
  }
9448
9490
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileMessageComposerComponent, decorators: [{
9449
9491
  type: Component,
9450
9492
  args: [{ selector: 'ds-mobile-message-composer', standalone: true, imports: [CommonModule, FormsModule, DsAvatarComponent, DsIconButtonComponent, DsIconComponent, DsMobileAttachmentPreviewComponent, DsMobileDropdownComponent, DsMobileMediaActionsPanelComponent], template: `
9451
- <div class="message-composer">
9493
+ <div class="message-composer" [class.is-internal]="isInternal()">
9494
+ <!-- Internal toggle header -->
9495
+ @if (showInternalToggle()) {
9496
+ <div class="internal-toggle-header">
9497
+ <button class="internal-toggle-btn" [class.active-primary]="!isInternal()" (click)="isInternal.set(false)" type="button">
9498
+ {{ replyLabel() }}
9499
+ </button>
9500
+ <button class="internal-toggle-btn" [class.active-warning]="isInternal()" (click)="isInternal.set(true)" type="button">
9501
+ {{ internalToggleLabel() }}
9502
+ </button>
9503
+ </div>
9504
+ @if (isInternal() && internalMessageDescription()) {
9505
+ <div class="internal-description">
9506
+ {{ internalMessageDescription() }}
9507
+ </div>
9508
+ }
9509
+ }
9510
+
9452
9511
  <!-- Edit indicator (optional) -->
9453
9512
  @if (editingMessage()) {
9454
9513
  <div class="edit-indicator">
@@ -9611,8 +9670,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9611
9670
  (change)="handleFileSelect($event)"
9612
9671
  />
9613
9672
  </div>
9614
- `, styles: [":host{display:block}.message-composer{background:var(--color-background-neutral-primary, #ffffff);border-top:1px solid var(--border-color-default);border-bottom-left-radius:0;border-bottom-right-radius:0;padding:12px 16px;width:100%;display:flex;flex-direction:column;gap:8px}.edit-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-brand-subtle, #f0edfe);border-radius:8px;animation:slideDown .2s ease-out}.edit-indicator-content{display:flex;align-items:center;gap:8px;color:var(--color-accent, #6b5ff5);flex:1;min-width:0}.edit-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;line-height:18px;color:var(--color-accent, #6b5ff5)}.cancel-edit{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-accent, #6b5ff5);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-edit:active{background:var(--color-brand-subtle, #e0dbfe)}.reply-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:8px;animation:slideDown .2s ease-out}.reply-indicator-content{display:flex;align-items:center;gap:4px;color:var(--color-text-secondary, #737373);flex:1;min-width:0}.reply-to-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-author{color:var(--color-accent, #6b5ff5);font-weight:600}.cancel-reply{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary, #737373);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-reply:active{background:var(--color-background-neutral-secondary, #f5f5f5)}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.attachment-previews-section{overflow:hidden;max-height:0;opacity:0;margin-left:-16px;margin-right:-16px;padding:0;pointer-events:none;transition:max-height .35s cubic-bezier(.4,0,.2,1),opacity .28s ease,padding .35s cubic-bezier(.4,0,.2,1)}.attachment-previews-section.has-attachments{max-height:160px;opacity:1;padding:0 0 8px;pointer-events:auto}ds-mobile-attachment-preview{animation:attachment-appear var(--spring-bouncy) both;max-width:200px;margin-right:8px;overflow:hidden;flex-shrink:0;transition:max-width .6s var(--spring-curve-gentle),margin-right .6s var(--spring-curve-gentle)}ds-mobile-attachment-preview.is-exiting{animation:attachment-disappear .55s ease both;max-width:0;margin-right:0;pointer-events:none}@keyframes attachment-appear{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes attachment-disappear{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.6)}}.attachment-previews{display:flex;flex-wrap:nowrap;gap:0;overflow-x:auto;padding:0 16px;scrollbar-width:none;-ms-overflow-style:none}.attachment-previews::-webkit-scrollbar{display:none}.composer-content{display:flex;align-items:center;gap:12px;width:100%;position:relative}.composer-leading-button{flex-shrink:0}.composer-leading-button::ng-deep button{width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;padding:0!important;border-radius:50%!important;transition:transform .3s ease}.composer-leading-button--open::ng-deep button{transform:rotate(45deg)}.composer-input-wrapper{flex:1;display:flex;align-items:flex-start;gap:8px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:24px;padding:12px 16px;min-height:44px;position:relative}.mention-user-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.mention-user-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;color:var(--color-text-primary, #1a1a1a)}.mention-user-role{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373)}.composer-input{flex:1;border:none;background:transparent;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:20px;color:var(--color-text-primary, #1a1a1a);outline:none;resize:none;min-height:20px;max-height:120px;overflow-y:auto;padding:0;margin:0}.composer-input::placeholder{color:var(--color-text-tertiary, #a0a0a0);font-size:var(--font-size-sm)}.send-button-inline{position:absolute;top:6px;right:6px;z-index:10;flex-shrink:0;opacity:0;transform:translate(20px) scale(.8);pointer-events:none;transition:opacity .15s ease-in,transform .15s ease-in}.send-button-inline.show{opacity:1;transform:translate(0) scale(1);pointer-events:auto;animation:slideInFromRight var(--spring-bouncy)}.send-button-inline::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important}@keyframes slideInFromRight{0%{opacity:0;transform:translate(20px) scale(.8)}to{opacity:1;transform:translate(0) scale(1)}}.ai-button-inline{position:absolute;top:6px;right:6px;z-index:9;flex-shrink:0;transition:opacity .15s ease-in,transform .15s ease-in}.ai-button-inline::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important;color:var(--color-primary-base, #6b5ff5)!important;background-color:var(--color-background-brand-subtle, #f0edfe)!important}.ai-button-inline.hide{opacity:0;transform:scale(.8);pointer-events:none}\n"] }]
9615
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { avatarInitials: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarInitials", required: false }] }], avatarType: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarType", required: false }] }], avatarSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarSrc", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], sendButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "sendButtonLabel", required: false }] }], attachmentButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "attachmentButtonLabel", required: false }] }], showAttachmentButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAttachmentButton", required: false }] }], showAiButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAiButton", required: false }] }], editIndicatorText: [{ type: i0.Input, args: [{ isSignal: true, alias: "editIndicatorText", required: false }] }], replyIndicatorText: [{ type: i0.Input, args: [{ isSignal: true, alias: "replyIndicatorText", required: false }] }], enableMentions: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableMentions", required: false }] }], mentionUsers: [{ type: i0.Input, args: [{ isSignal: true, alias: "mentionUsers", required: false }] }], autoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoFocus", required: false }] }], messageInputRef: [{
9673
+ `, styles: [":host{display:block}.message-composer{background:var(--color-background-neutral-primary, #ffffff);border-top:1px solid var(--border-color-default);border-bottom-left-radius:0;border-bottom-right-radius:0;padding:12px 16px;width:100%;display:flex;flex-direction:column;gap:8px;transition:background-color .3s ease}.message-composer.is-internal{background-color:var(--color-background-warning-subtle, #fffbeb)}.internal-toggle-header{display:flex;align-items:center;gap:12px;padding-bottom:4px}.reply-label{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:500;color:var(--color-text-primary, #1a1a1a)}.internal-toggle-btn{background:var(--color-background-neutral-secondary, #f5f5f5);border:1px solid var(--border-color-default, #e5e5e5);color:var(--color-text-secondary, #737373);border-radius:9999px;padding:4px 12px;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all .2s ease}.internal-toggle-btn.active-primary{background:var(--color-background-brand-subtle, #f0edfe);border-color:var(--color-background-brand-subtle, #f0edfe);color:var(--color-primary-base, #6b5ff5)}.internal-toggle-btn.active-warning{background:var(--color-background-warning-subtle, #fef3c7);border-color:var(--color-background-warning-subtle, #fef3c7);color:var(--color-text-warning, #b45309)}.internal-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);color:var(--color-text-secondary, #737373);padding-bottom:4px;line-height:1.4}.edit-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-brand-subtle, #f0edfe);border-radius:8px;animation:slideDown .2s ease-out}.edit-indicator-content{display:flex;align-items:center;gap:8px;color:var(--color-accent, #6b5ff5);flex:1;min-width:0}.edit-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:500;line-height:18px;color:var(--color-accent, #6b5ff5)}.cancel-edit{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-accent, #6b5ff5);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-edit:active{background:var(--color-brand-subtle, #e0dbfe)}.reply-indicator{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:8px;animation:slideDown .2s ease-out}.reply-indicator-content{display:flex;align-items:center;gap:4px;color:var(--color-text-secondary, #737373);flex:1;min-width:0}.reply-to-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-author{color:var(--color-accent, #6b5ff5);font-weight:600}.cancel-reply{background:none;border:none;padding:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary, #737373);border-radius:4px;transition:background .2s ease;flex-shrink:0}.cancel-reply:active{background:var(--color-background-neutral-secondary, #f5f5f5)}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.attachment-previews-section{overflow:hidden;max-height:0;opacity:0;margin-left:-16px;margin-right:-16px;padding:0;pointer-events:none;transition:max-height .35s cubic-bezier(.4,0,.2,1),opacity .28s ease,padding .35s cubic-bezier(.4,0,.2,1)}.attachment-previews-section.has-attachments{max-height:160px;opacity:1;padding:0 0 8px;pointer-events:auto}ds-mobile-attachment-preview{animation:attachment-appear var(--spring-bouncy) both;max-width:200px;margin-right:8px;overflow:hidden;flex-shrink:0;transition:max-width .6s var(--spring-curve-gentle),margin-right .6s var(--spring-curve-gentle)}ds-mobile-attachment-preview.is-exiting{animation:attachment-disappear .55s ease both;max-width:0;margin-right:0;pointer-events:none}@keyframes attachment-appear{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes attachment-disappear{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.6)}}.attachment-previews{display:flex;flex-wrap:nowrap;gap:0;overflow-x:auto;padding:0 16px;scrollbar-width:none;-ms-overflow-style:none}.attachment-previews::-webkit-scrollbar{display:none}.composer-content{display:flex;align-items:center;gap:12px;width:100%;position:relative}.composer-leading-button{flex-shrink:0}.composer-leading-button::ng-deep button{width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;padding:0!important;border-radius:50%!important;transition:transform .3s ease}.composer-leading-button--open::ng-deep button{transform:rotate(45deg)}.composer-input-wrapper{flex:1;display:flex;align-items:flex-start;gap:8px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:24px;padding:12px 16px;min-height:44px;position:relative}.mention-user-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.mention-user-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:20px;color:var(--color-text-primary, #1a1a1a)}.mention-user-role{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:18px;color:var(--color-text-secondary, #737373)}.composer-input{flex:1;border:none;background:transparent;font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);line-height:20px;color:var(--color-text-primary, #1a1a1a);outline:none;resize:none;min-height:20px;max-height:120px;overflow-y:auto;padding:0;margin:0}.composer-input::placeholder{color:var(--color-text-tertiary, #a0a0a0);font-size:var(--font-size-sm)}.send-button-inline{position:absolute;top:6px;right:6px;z-index:10;flex-shrink:0;opacity:0;transform:translate(20px) scale(.8);pointer-events:none;transition:opacity .15s ease-in,transform .15s ease-in}.send-button-inline.show{opacity:1;transform:translate(0) scale(1);pointer-events:auto;animation:slideInFromRight var(--spring-bouncy)}.send-button-inline::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important}@keyframes slideInFromRight{0%{opacity:0;transform:translate(20px) scale(.8)}to{opacity:1;transform:translate(0) scale(1)}}.ai-button-inline{position:absolute;top:6px;right:6px;z-index:9;flex-shrink:0;transition:opacity .15s ease-in,transform .15s ease-in}.ai-button-inline::ng-deep button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;border-radius:50%!important;color:var(--color-primary-base, #6b5ff5)!important;background-color:var(--color-background-brand-subtle, #f0edfe)!important}.ai-button-inline.hide{opacity:0;transform:scale(.8);pointer-events:none}\n"] }]
9674
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { avatarInitials: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarInitials", required: false }] }], avatarType: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarType", required: false }] }], avatarSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarSrc", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], sendButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "sendButtonLabel", required: false }] }], attachmentButtonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "attachmentButtonLabel", required: false }] }], showAttachmentButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAttachmentButton", required: false }] }], showAiButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAiButton", required: false }] }], editIndicatorText: [{ type: i0.Input, args: [{ isSignal: true, alias: "editIndicatorText", required: false }] }], replyIndicatorText: [{ type: i0.Input, args: [{ isSignal: true, alias: "replyIndicatorText", required: false }] }], enableMentions: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableMentions", required: false }] }], mentionUsers: [{ type: i0.Input, args: [{ isSignal: true, alias: "mentionUsers", required: false }] }], showInternalToggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showInternalToggle", required: false }] }], internalToggleLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "internalToggleLabel", required: false }] }], replyLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "replyLabel", required: false }] }], internalMessageDescription: [{ type: i0.Input, args: [{ isSignal: true, alias: "internalMessageDescription", required: false }] }], autoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoFocus", required: false }] }], messageInputRef: [{
9616
9675
  type: ViewChild,
9617
9676
  args: ['messageInputEl']
9618
9677
  }], fileInput: [{
@@ -9670,6 +9729,14 @@ class DsMobileMessageBubbleComponent {
9670
9729
  * Sender's name (for display purposes)
9671
9730
  */
9672
9731
  senderName = input('', ...(ngDevMode ? [{ debugName: "senderName" }] : []));
9732
+ /**
9733
+ * Whether the message is an internal message
9734
+ */
9735
+ isInternal = input(false, ...(ngDevMode ? [{ debugName: "isInternal" }] : []));
9736
+ /**
9737
+ * Text for the internal message badge
9738
+ */
9739
+ internalMessageBadgeText = input('Intern besked', ...(ngDevMode ? [{ debugName: "internalMessageBadgeText" }] : []));
9673
9740
  /**
9674
9741
  * Timestamp text (e.g., "12:34", "08-12-2025 13:18")
9675
9742
  */
@@ -9841,7 +9908,7 @@ class DsMobileMessageBubbleComponent {
9841
9908
  this.longPress.emit();
9842
9909
  }
9843
9910
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileMessageBubbleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9844
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileMessageBubbleComponent, isStandalone: true, selector: "ds-mobile-message-bubble", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, isOwnMessage: { classPropertyName: "isOwnMessage", publicName: "isOwnMessage", isSignal: true, isRequired: false, transformFunction: null }, senderName: { classPropertyName: "senderName", publicName: "senderName", isSignal: true, isRequired: false, transformFunction: null }, timestamp: { classPropertyName: "timestamp", publicName: "timestamp", isSignal: true, isRequired: true, transformFunction: null }, showTimestamp: { classPropertyName: "showTimestamp", publicName: "showTimestamp", isSignal: true, isRequired: false, transformFunction: null }, avatarInitials: { classPropertyName: "avatarInitials", publicName: "avatarInitials", isSignal: true, isRequired: false, transformFunction: null }, avatarType: { classPropertyName: "avatarType", publicName: "avatarType", isSignal: true, isRequired: false, transformFunction: null }, avatarSrc: { classPropertyName: "avatarSrc", publicName: "avatarSrc", isSignal: true, isRequired: false, transformFunction: null }, showAvatar: { classPropertyName: "showAvatar", publicName: "showAvatar", isSignal: true, isRequired: false, transformFunction: null }, clusterPosition: { classPropertyName: "clusterPosition", publicName: "clusterPosition", isSignal: true, isRequired: false, transformFunction: null }, attachments: { classPropertyName: "attachments", publicName: "attachments", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, isNewMessage: { classPropertyName: "isNewMessage", publicName: "isNewMessage", isSignal: true, isRequired: false, transformFunction: null }, isDeleted: { classPropertyName: "isDeleted", publicName: "isDeleted", isSignal: true, isRequired: false, transformFunction: null }, showEditedHint: { classPropertyName: "showEditedHint", publicName: "showEditedHint", isSignal: true, isRequired: false, transformFunction: null }, editedHintText: { classPropertyName: "editedHintText", publicName: "editedHintText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { attachmentClick: "attachmentClick", longPress: "longPress", messageClick: "messageClick" }, host: { listeners: { "touchstart": "handleTouchStart($event)", "touchend": "handleTouchEnd($event)", "touchmove": "handleTouchMove($event)", "contextmenu": "handleContextMenu($event)" }, properties: { "class.is-own-message": "isOwnMessage()", "class.has-attachments": "attachments() && attachments()!.length > 0", "class.cluster-single": "clusterPosition() === \"single\"", "class.cluster-first": "clusterPosition() === \"first\"", "class.cluster-middle": "clusterPosition() === \"middle\"", "class.cluster-last": "clusterPosition() === \"last\"", "class.tapped": "isTapped", "class.is-new-message": "isNewMessage()", "class.is-deleted": "isDeleted()" } }, ngImport: i0, template: `
9911
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DsMobileMessageBubbleComponent, isStandalone: true, selector: "ds-mobile-message-bubble", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: true, transformFunction: null }, isOwnMessage: { classPropertyName: "isOwnMessage", publicName: "isOwnMessage", isSignal: true, isRequired: false, transformFunction: null }, senderName: { classPropertyName: "senderName", publicName: "senderName", isSignal: true, isRequired: false, transformFunction: null }, isInternal: { classPropertyName: "isInternal", publicName: "isInternal", isSignal: true, isRequired: false, transformFunction: null }, internalMessageBadgeText: { classPropertyName: "internalMessageBadgeText", publicName: "internalMessageBadgeText", isSignal: true, isRequired: false, transformFunction: null }, timestamp: { classPropertyName: "timestamp", publicName: "timestamp", isSignal: true, isRequired: true, transformFunction: null }, showTimestamp: { classPropertyName: "showTimestamp", publicName: "showTimestamp", isSignal: true, isRequired: false, transformFunction: null }, avatarInitials: { classPropertyName: "avatarInitials", publicName: "avatarInitials", isSignal: true, isRequired: false, transformFunction: null }, avatarType: { classPropertyName: "avatarType", publicName: "avatarType", isSignal: true, isRequired: false, transformFunction: null }, avatarSrc: { classPropertyName: "avatarSrc", publicName: "avatarSrc", isSignal: true, isRequired: false, transformFunction: null }, showAvatar: { classPropertyName: "showAvatar", publicName: "showAvatar", isSignal: true, isRequired: false, transformFunction: null }, clusterPosition: { classPropertyName: "clusterPosition", publicName: "clusterPosition", isSignal: true, isRequired: false, transformFunction: null }, attachments: { classPropertyName: "attachments", publicName: "attachments", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, isNewMessage: { classPropertyName: "isNewMessage", publicName: "isNewMessage", isSignal: true, isRequired: false, transformFunction: null }, isDeleted: { classPropertyName: "isDeleted", publicName: "isDeleted", isSignal: true, isRequired: false, transformFunction: null }, showEditedHint: { classPropertyName: "showEditedHint", publicName: "showEditedHint", isSignal: true, isRequired: false, transformFunction: null }, editedHintText: { classPropertyName: "editedHintText", publicName: "editedHintText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { attachmentClick: "attachmentClick", longPress: "longPress", messageClick: "messageClick" }, host: { listeners: { "touchstart": "handleTouchStart($event)", "touchend": "handleTouchEnd($event)", "touchmove": "handleTouchMove($event)", "contextmenu": "handleContextMenu($event)" }, properties: { "class.is-own-message": "isOwnMessage()", "class.has-attachments": "attachments() && attachments()!.length > 0", "class.cluster-single": "clusterPosition() === \"single\"", "class.cluster-first": "clusterPosition() === \"first\"", "class.cluster-middle": "clusterPosition() === \"middle\"", "class.cluster-last": "clusterPosition() === \"last\"", "class.tapped": "isTapped", "class.is-new-message": "isNewMessage()", "class.is-deleted": "isDeleted()" } }, ngImport: i0, template: `
9845
9912
  @if (!isOwnMessage()) {
9846
9913
  <div class="avatar-wrapper" [class.hidden]="!showAvatar()">
9847
9914
  <ds-avatar
@@ -9853,7 +9920,13 @@ class DsMobileMessageBubbleComponent {
9853
9920
  }
9854
9921
 
9855
9922
  <div class="message-content-wrapper" (click)="handleClick($event)">
9856
- <div class="message-bubble">
9923
+ @if (isInternal()) {
9924
+ <div class="internal-message-badge">
9925
+ <ds-icon name="remixLockLine" size="12px"></ds-icon>
9926
+ <span>{{ internalMessageBadgeText() }}</span>
9927
+ </div>
9928
+ }
9929
+ <div class="message-bubble" [class.is-internal]="isInternal()">
9857
9930
  <!-- Only show text if content is not empty -->
9858
9931
  @if (content().trim()) {
9859
9932
  <p class="message-text">{{ content() }}</p>
@@ -9890,7 +9963,7 @@ class DsMobileMessageBubbleComponent {
9890
9963
  </div>
9891
9964
  </div>
9892
9965
  </div>
9893
- `, isInline: true, styles: [":host{display:flex;gap:8px;margin-bottom:4px;width:100%;align-items:flex-end;box-sizing:border-box}:host.cluster-single{margin-bottom:12px}:host.cluster-first{margin-bottom:2px}:host.cluster-middle{margin-bottom:2px}:host.cluster-last{margin-bottom:12px}:host:not(.is-own-message){justify-content:flex-start!important;flex-direction:row!important}:host.is-own-message{justify-content:flex-end!important;flex-direction:row-reverse!important;margin-left:auto!important;margin-right:0!important}.avatar-wrapper{flex-shrink:0;display:flex;align-items:flex-end;width:32px}.avatar-wrapper.hidden{visibility:hidden}.message-content-wrapper{display:flex;flex-direction:column;gap:0;max-width:75%;min-width:0}:host:not(.is-own-message) .message-content-wrapper{align-items:flex-start}:host.is-own-message .message-content-wrapper{align-items:flex-end!important;margin-left:auto!important;margin-right:0!important}.message-bubble{padding:8px 12px;border-radius:20px;position:relative;word-wrap:break-word;white-space:pre-wrap;max-width:100%;display:flex;flex-direction:column;transition:transform var(--spring-bouncy),border-radius var(--spring-bouncy);will-change:transform,border-radius}:host:active .message-bubble{transform:scale(.98);transition:transform .1s ease-out,border-radius .1s ease-out}:host.is-own-message.cluster-first .message-bubble{border-radius:20px 20px 4px}:host.is-own-message.cluster-middle .message-bubble{border-radius:20px 4px 4px 20px}:host.is-own-message.cluster-last .message-bubble{border-radius:20px 4px 20px 20px}:host:not(.is-own-message).cluster-first .message-bubble{border-radius:20px 20px 20px 4px}:host:not(.is-own-message).cluster-middle .message-bubble{border-radius:4px 20px 20px 4px}:host:not(.is-own-message).cluster-last .message-bubble{border-radius:4px 20px 20px}:host:not(.is-own-message) .message-bubble{background:var(--color-background-neutral-secondary, #f5f5f5)}:host.is-own-message .message-bubble{background:var(--color-accent, var(--color-accent, #6B5FF5));color:var(--color-on-accent, #ffffff)}.message-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:20px;letter-spacing:-.3px;margin:0}:host:not(.is-own-message) .message-text{color:var(--color-text-primary, #1a1a1a)}:host.is-own-message .message-text{color:var(--color-on-accent, #ffffff)}:host.is-deleted .message-bubble{background:var(--color-background-neutral-secondary, #f5f5f5)!important}:host.is-deleted.is-own-message .message-bubble{background:var(--color-background-neutral-tertiary, #e8e8e8)!important}:host.is-deleted .message-text{font-style:italic;color:var(--text-color-default-tertiary, #737373)!important}:host.is-deleted.is-own-message .message-text{color:var(--text-color-default-secondary, #545b66)!important}.edited-hint{font-family:Brockmann,sans-serif;font-size:10px;font-weight:400;opacity:.75;margin:4px 0 0;align-self:flex-end}:host:not(.is-own-message) .edited-hint{align-self:flex-start;color:var(--text-color-default-tertiary, #737373)}:host.is-own-message .edited-hint{color:var(--color-on-accent, #ffffff)}.attachments{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}:host:not(.is-own-message) .attachments{justify-content:flex-start}:host.is-own-message .attachments{justify-content:flex-end}.attachment-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:8px;border:1px solid var(--border-color-default, #e5e5e5);cursor:pointer;transition:background .2s ease}:host.is-own-message .attachment-item{background:#fff3;border-color:#ffffff4d}.attachment-item:active{background:var(--color-background-neutral-secondary-hover, #ebebeb)}:host.is-own-message .attachment-item:active{background:#ffffff4d}.attachment-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;background:var(--color-background-neutral-primary, #ffffff)}:host.is-own-message .attachment-icon{background:#ffffff4d}.attachment-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:16px;color:var(--color-text-primary, #1a1a1a);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host.is-own-message .attachment-name{color:var(--color-text-on-brand, #ffffff)}.message-footer{display:flex;align-items:center;gap:4px;align-self:flex-end;height:0;margin-top:0;opacity:0;overflow:hidden;transform:scale(.95);transition:height var(--spring-bouncy),margin-top var(--spring-bouncy),opacity var(--spring-bouncy),transform var(--spring-bouncy)}.message-footer.visible{height:14px;margin-top:4px;opacity:1;transform:scale(1)}:host:not(.is-own-message) .message-footer{align-self:flex-end}.timestamp{font-family:Brockmann,sans-serif;font-size:11px;font-weight:400;line-height:14px;white-space:nowrap}:host:not(.is-own-message) .timestamp{color:var(--color-text-tertiary, #a0a0a0)}:host.is-own-message .timestamp{color:var(--color-on-accent, #ffffff);opacity:.7}:host{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:host.is-new-message{animation:message-appear var(--spring-bouncy) forwards}@keyframes message-appear{0%{opacity:0;transform:translateY(20px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }] });
9966
+ `, isInline: true, styles: [":host{display:flex;gap:8px;margin-bottom:4px;width:100%;align-items:flex-end;box-sizing:border-box}:host.cluster-single{margin-bottom:12px}:host.cluster-first{margin-bottom:2px}:host.cluster-middle{margin-bottom:2px}:host.cluster-last{margin-bottom:12px}:host:not(.is-own-message){justify-content:flex-start!important;flex-direction:row!important}:host.is-own-message{justify-content:flex-end!important;flex-direction:row-reverse!important;margin-left:auto!important;margin-right:0!important}.avatar-wrapper{flex-shrink:0;display:flex;align-items:flex-end;width:32px}.avatar-wrapper.hidden{visibility:hidden}.message-content-wrapper{display:flex;flex-direction:column;gap:0;max-width:75%;min-width:0}:host:not(.is-own-message) .message-content-wrapper{align-items:flex-start}:host.is-own-message .message-content-wrapper{align-items:flex-end!important;margin-left:auto!important;margin-right:0!important}.message-bubble{padding:8px 12px;border-radius:20px;position:relative;word-wrap:break-word;white-space:pre-wrap;max-width:100%;display:flex;flex-direction:column;transition:transform var(--spring-bouncy),border-radius var(--spring-bouncy);will-change:transform,border-radius}:host:active .message-bubble{transform:scale(.98);transition:transform .1s ease-out,border-radius .1s ease-out}:host.is-own-message.cluster-first .message-bubble{border-radius:20px 20px 4px}:host.is-own-message.cluster-middle .message-bubble{border-radius:20px 4px 4px 20px}:host.is-own-message.cluster-last .message-bubble{border-radius:20px 4px 20px 20px}:host:not(.is-own-message).cluster-first .message-bubble{border-radius:20px 20px 20px 4px}:host:not(.is-own-message).cluster-middle .message-bubble{border-radius:4px 20px 20px 4px}:host:not(.is-own-message).cluster-last .message-bubble{border-radius:4px 20px 20px}:host:not(.is-own-message) .message-bubble{background:var(--color-background-neutral-secondary, #f5f5f5)}:host.is-own-message .message-bubble{background:var(--color-accent, var(--color-accent, #6B5FF5));color:var(--color-on-accent, #ffffff)}.message-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:20px;letter-spacing:-.3px;margin:0}:host:not(.is-own-message) .message-text{color:var(--color-text-primary, #1a1a1a)}:host.is-own-message .message-text{color:var(--color-on-accent, #ffffff)}:host.is-deleted .message-bubble{background:var(--color-background-neutral-secondary, #f5f5f5)!important}:host.is-deleted.is-own-message .message-bubble{background:var(--color-background-neutral-tertiary, #e8e8e8)!important}:host.is-deleted .message-text{font-style:italic;color:var(--text-color-default-tertiary, #737373)!important}:host.is-deleted.is-own-message .message-text{color:var(--text-color-default-secondary, #545b66)!important}.edited-hint{font-family:Brockmann,sans-serif;font-size:10px;font-weight:400;opacity:.75;margin:4px 0 0;align-self:flex-end}:host:not(.is-own-message) .edited-hint{align-self:flex-start;color:var(--text-color-default-tertiary, #737373)}:host.is-own-message .edited-hint{color:var(--color-on-accent, #ffffff)}.attachments{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}:host:not(.is-own-message) .attachments{justify-content:flex-start}:host.is-own-message .attachments{justify-content:flex-end}.attachment-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:8px;border:1px solid var(--border-color-default, #e5e5e5);cursor:pointer;transition:background .2s ease}:host.is-own-message .attachment-item{background:#fff3;border-color:#ffffff4d}.attachment-item:active{background:var(--color-background-neutral-secondary-hover, #ebebeb)}:host.is-own-message .attachment-item:active{background:#ffffff4d}.attachment-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;background:var(--color-background-neutral-primary, #ffffff)}:host.is-own-message .attachment-icon{background:#ffffff4d}.attachment-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:16px;color:var(--color-text-primary, #1a1a1a);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host.is-own-message .attachment-name{color:var(--color-text-on-brand, #ffffff)}.message-footer{display:flex;align-items:center;gap:4px;align-self:flex-end;height:0;margin-top:0;opacity:0;overflow:hidden;transform:scale(.95);transition:height var(--spring-bouncy),margin-top var(--spring-bouncy),opacity var(--spring-bouncy),transform var(--spring-bouncy)}.message-footer.visible{height:14px;margin-top:4px;opacity:1;transform:scale(1)}:host:not(.is-own-message) .message-footer{align-self:flex-end}.timestamp{font-family:Brockmann,sans-serif;font-size:11px;font-weight:400;line-height:14px;white-space:nowrap}:host:not(.is-own-message) .timestamp{color:var(--color-text-tertiary, #a0a0a0)}:host.is-own-message .timestamp{color:var(--color-on-accent, #ffffff);opacity:.7}:host{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:host.is-new-message{animation:message-appear var(--spring-bouncy) forwards}@keyframes message-appear{0%{opacity:0;transform:translateY(20px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}.message-bubble.is-internal{background:var(--color-background-warning-subtle, #fefce8)!important;border:1px solid var(--color-border-warning-muted, #fde047)}:host.is-own-message .message-bubble.is-internal{background:var(--color-background-warning-subtle, #fefce8)!important;color:var(--color-text-primary, #1a1a1a)}:host.is-own-message .message-bubble.is-internal .message-text{color:var(--color-text-primary, #1a1a1a)}.internal-message-badge{display:flex;align-items:center;gap:4px;font-family:Brockmann,sans-serif;font-size:11px;font-weight:500;color:var(--color-text-warning, #eab308);margin-bottom:4px;padding-left:12px}:host.is-own-message .internal-message-badge{align-self:flex-end;padding-left:0;padding-right:12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsAvatarComponent, selector: "ds-avatar", inputs: ["type", "size", "initials", "src", "alt", "iconName", "iconColor"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }] });
9894
9967
  }
9895
9968
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileMessageBubbleComponent, decorators: [{
9896
9969
  type: Component,
@@ -9920,7 +9993,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9920
9993
  }
9921
9994
 
9922
9995
  <div class="message-content-wrapper" (click)="handleClick($event)">
9923
- <div class="message-bubble">
9996
+ @if (isInternal()) {
9997
+ <div class="internal-message-badge">
9998
+ <ds-icon name="remixLockLine" size="12px"></ds-icon>
9999
+ <span>{{ internalMessageBadgeText() }}</span>
10000
+ </div>
10001
+ }
10002
+ <div class="message-bubble" [class.is-internal]="isInternal()">
9924
10003
  <!-- Only show text if content is not empty -->
9925
10004
  @if (content().trim()) {
9926
10005
  <p class="message-text">{{ content() }}</p>
@@ -9957,8 +10036,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9957
10036
  </div>
9958
10037
  </div>
9959
10038
  </div>
9960
- `, styles: [":host{display:flex;gap:8px;margin-bottom:4px;width:100%;align-items:flex-end;box-sizing:border-box}:host.cluster-single{margin-bottom:12px}:host.cluster-first{margin-bottom:2px}:host.cluster-middle{margin-bottom:2px}:host.cluster-last{margin-bottom:12px}:host:not(.is-own-message){justify-content:flex-start!important;flex-direction:row!important}:host.is-own-message{justify-content:flex-end!important;flex-direction:row-reverse!important;margin-left:auto!important;margin-right:0!important}.avatar-wrapper{flex-shrink:0;display:flex;align-items:flex-end;width:32px}.avatar-wrapper.hidden{visibility:hidden}.message-content-wrapper{display:flex;flex-direction:column;gap:0;max-width:75%;min-width:0}:host:not(.is-own-message) .message-content-wrapper{align-items:flex-start}:host.is-own-message .message-content-wrapper{align-items:flex-end!important;margin-left:auto!important;margin-right:0!important}.message-bubble{padding:8px 12px;border-radius:20px;position:relative;word-wrap:break-word;white-space:pre-wrap;max-width:100%;display:flex;flex-direction:column;transition:transform var(--spring-bouncy),border-radius var(--spring-bouncy);will-change:transform,border-radius}:host:active .message-bubble{transform:scale(.98);transition:transform .1s ease-out,border-radius .1s ease-out}:host.is-own-message.cluster-first .message-bubble{border-radius:20px 20px 4px}:host.is-own-message.cluster-middle .message-bubble{border-radius:20px 4px 4px 20px}:host.is-own-message.cluster-last .message-bubble{border-radius:20px 4px 20px 20px}:host:not(.is-own-message).cluster-first .message-bubble{border-radius:20px 20px 20px 4px}:host:not(.is-own-message).cluster-middle .message-bubble{border-radius:4px 20px 20px 4px}:host:not(.is-own-message).cluster-last .message-bubble{border-radius:4px 20px 20px}:host:not(.is-own-message) .message-bubble{background:var(--color-background-neutral-secondary, #f5f5f5)}:host.is-own-message .message-bubble{background:var(--color-accent, var(--color-accent, #6B5FF5));color:var(--color-on-accent, #ffffff)}.message-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:20px;letter-spacing:-.3px;margin:0}:host:not(.is-own-message) .message-text{color:var(--color-text-primary, #1a1a1a)}:host.is-own-message .message-text{color:var(--color-on-accent, #ffffff)}:host.is-deleted .message-bubble{background:var(--color-background-neutral-secondary, #f5f5f5)!important}:host.is-deleted.is-own-message .message-bubble{background:var(--color-background-neutral-tertiary, #e8e8e8)!important}:host.is-deleted .message-text{font-style:italic;color:var(--text-color-default-tertiary, #737373)!important}:host.is-deleted.is-own-message .message-text{color:var(--text-color-default-secondary, #545b66)!important}.edited-hint{font-family:Brockmann,sans-serif;font-size:10px;font-weight:400;opacity:.75;margin:4px 0 0;align-self:flex-end}:host:not(.is-own-message) .edited-hint{align-self:flex-start;color:var(--text-color-default-tertiary, #737373)}:host.is-own-message .edited-hint{color:var(--color-on-accent, #ffffff)}.attachments{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}:host:not(.is-own-message) .attachments{justify-content:flex-start}:host.is-own-message .attachments{justify-content:flex-end}.attachment-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:8px;border:1px solid var(--border-color-default, #e5e5e5);cursor:pointer;transition:background .2s ease}:host.is-own-message .attachment-item{background:#fff3;border-color:#ffffff4d}.attachment-item:active{background:var(--color-background-neutral-secondary-hover, #ebebeb)}:host.is-own-message .attachment-item:active{background:#ffffff4d}.attachment-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;background:var(--color-background-neutral-primary, #ffffff)}:host.is-own-message .attachment-icon{background:#ffffff4d}.attachment-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:16px;color:var(--color-text-primary, #1a1a1a);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host.is-own-message .attachment-name{color:var(--color-text-on-brand, #ffffff)}.message-footer{display:flex;align-items:center;gap:4px;align-self:flex-end;height:0;margin-top:0;opacity:0;overflow:hidden;transform:scale(.95);transition:height var(--spring-bouncy),margin-top var(--spring-bouncy),opacity var(--spring-bouncy),transform var(--spring-bouncy)}.message-footer.visible{height:14px;margin-top:4px;opacity:1;transform:scale(1)}:host:not(.is-own-message) .message-footer{align-self:flex-end}.timestamp{font-family:Brockmann,sans-serif;font-size:11px;font-weight:400;line-height:14px;white-space:nowrap}:host:not(.is-own-message) .timestamp{color:var(--color-text-tertiary, #a0a0a0)}:host.is-own-message .timestamp{color:var(--color-on-accent, #ffffff);opacity:.7}:host{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:host.is-new-message{animation:message-appear var(--spring-bouncy) forwards}@keyframes message-appear{0%{opacity:0;transform:translateY(20px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}\n"] }]
9961
- }], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], isOwnMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOwnMessage", required: false }] }], senderName: [{ type: i0.Input, args: [{ isSignal: true, alias: "senderName", required: false }] }], timestamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "timestamp", required: true }] }], showTimestamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTimestamp", required: false }] }], avatarInitials: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarInitials", required: false }] }], avatarType: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarType", required: false }] }], avatarSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarSrc", required: false }] }], showAvatar: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAvatar", required: false }] }], clusterPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "clusterPosition", required: false }] }], attachments: [{ type: i0.Input, args: [{ isSignal: true, alias: "attachments", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], isNewMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "isNewMessage", required: false }] }], isDeleted: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDeleted", required: false }] }], showEditedHint: [{ type: i0.Input, args: [{ isSignal: true, alias: "showEditedHint", required: false }] }], editedHintText: [{ type: i0.Input, args: [{ isSignal: true, alias: "editedHintText", required: false }] }], attachmentClick: [{ type: i0.Output, args: ["attachmentClick"] }], longPress: [{ type: i0.Output, args: ["longPress"] }], messageClick: [{ type: i0.Output, args: ["messageClick"] }] } });
10039
+ `, styles: [":host{display:flex;gap:8px;margin-bottom:4px;width:100%;align-items:flex-end;box-sizing:border-box}:host.cluster-single{margin-bottom:12px}:host.cluster-first{margin-bottom:2px}:host.cluster-middle{margin-bottom:2px}:host.cluster-last{margin-bottom:12px}:host:not(.is-own-message){justify-content:flex-start!important;flex-direction:row!important}:host.is-own-message{justify-content:flex-end!important;flex-direction:row-reverse!important;margin-left:auto!important;margin-right:0!important}.avatar-wrapper{flex-shrink:0;display:flex;align-items:flex-end;width:32px}.avatar-wrapper.hidden{visibility:hidden}.message-content-wrapper{display:flex;flex-direction:column;gap:0;max-width:75%;min-width:0}:host:not(.is-own-message) .message-content-wrapper{align-items:flex-start}:host.is-own-message .message-content-wrapper{align-items:flex-end!important;margin-left:auto!important;margin-right:0!important}.message-bubble{padding:8px 12px;border-radius:20px;position:relative;word-wrap:break-word;white-space:pre-wrap;max-width:100%;display:flex;flex-direction:column;transition:transform var(--spring-bouncy),border-radius var(--spring-bouncy);will-change:transform,border-radius}:host:active .message-bubble{transform:scale(.98);transition:transform .1s ease-out,border-radius .1s ease-out}:host.is-own-message.cluster-first .message-bubble{border-radius:20px 20px 4px}:host.is-own-message.cluster-middle .message-bubble{border-radius:20px 4px 4px 20px}:host.is-own-message.cluster-last .message-bubble{border-radius:20px 4px 20px 20px}:host:not(.is-own-message).cluster-first .message-bubble{border-radius:20px 20px 20px 4px}:host:not(.is-own-message).cluster-middle .message-bubble{border-radius:4px 20px 20px 4px}:host:not(.is-own-message).cluster-last .message-bubble{border-radius:4px 20px 20px}:host:not(.is-own-message) .message-bubble{background:var(--color-background-neutral-secondary, #f5f5f5)}:host.is-own-message .message-bubble{background:var(--color-accent, var(--color-accent, #6B5FF5));color:var(--color-on-accent, #ffffff)}.message-text{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:20px;letter-spacing:-.3px;margin:0}:host:not(.is-own-message) .message-text{color:var(--color-text-primary, #1a1a1a)}:host.is-own-message .message-text{color:var(--color-on-accent, #ffffff)}:host.is-deleted .message-bubble{background:var(--color-background-neutral-secondary, #f5f5f5)!important}:host.is-deleted.is-own-message .message-bubble{background:var(--color-background-neutral-tertiary, #e8e8e8)!important}:host.is-deleted .message-text{font-style:italic;color:var(--text-color-default-tertiary, #737373)!important}:host.is-deleted.is-own-message .message-text{color:var(--text-color-default-secondary, #545b66)!important}.edited-hint{font-family:Brockmann,sans-serif;font-size:10px;font-weight:400;opacity:.75;margin:4px 0 0;align-self:flex-end}:host:not(.is-own-message) .edited-hint{align-self:flex-start;color:var(--text-color-default-tertiary, #737373)}:host.is-own-message .edited-hint{color:var(--color-on-accent, #ffffff)}.attachments{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}:host:not(.is-own-message) .attachments{justify-content:flex-start}:host.is-own-message .attachments{justify-content:flex-end}.attachment-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--color-background-neutral-secondary, #f5f5f5);border-radius:8px;border:1px solid var(--border-color-default, #e5e5e5);cursor:pointer;transition:background .2s ease}:host.is-own-message .attachment-item{background:#fff3;border-color:#ffffff4d}.attachment-item:active{background:var(--color-background-neutral-secondary-hover, #ebebeb)}:host.is-own-message .attachment-item:active{background:#ffffff4d}.attachment-icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;background:var(--color-background-neutral-primary, #ffffff)}:host.is-own-message .attachment-icon{background:#ffffff4d}.attachment-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:500;line-height:16px;color:var(--color-text-primary, #1a1a1a);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host.is-own-message .attachment-name{color:var(--color-text-on-brand, #ffffff)}.message-footer{display:flex;align-items:center;gap:4px;align-self:flex-end;height:0;margin-top:0;opacity:0;overflow:hidden;transform:scale(.95);transition:height var(--spring-bouncy),margin-top var(--spring-bouncy),opacity var(--spring-bouncy),transform var(--spring-bouncy)}.message-footer.visible{height:14px;margin-top:4px;opacity:1;transform:scale(1)}:host:not(.is-own-message) .message-footer{align-self:flex-end}.timestamp{font-family:Brockmann,sans-serif;font-size:11px;font-weight:400;line-height:14px;white-space:nowrap}:host:not(.is-own-message) .timestamp{color:var(--color-text-tertiary, #a0a0a0)}:host.is-own-message .timestamp{color:var(--color-on-accent, #ffffff);opacity:.7}:host{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:host.is-new-message{animation:message-appear var(--spring-bouncy) forwards}@keyframes message-appear{0%{opacity:0;transform:translateY(20px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}.message-bubble.is-internal{background:var(--color-background-warning-subtle, #fefce8)!important;border:1px solid var(--color-border-warning-muted, #fde047)}:host.is-own-message .message-bubble.is-internal{background:var(--color-background-warning-subtle, #fefce8)!important;color:var(--color-text-primary, #1a1a1a)}:host.is-own-message .message-bubble.is-internal .message-text{color:var(--color-text-primary, #1a1a1a)}.internal-message-badge{display:flex;align-items:center;gap:4px;font-family:Brockmann,sans-serif;font-size:11px;font-weight:500;color:var(--color-text-warning, #eab308);margin-bottom:4px;padding-left:12px}:host.is-own-message .internal-message-badge{align-self:flex-end;padding-left:0;padding-right:12px}\n"] }]
10040
+ }], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], isOwnMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOwnMessage", required: false }] }], senderName: [{ type: i0.Input, args: [{ isSignal: true, alias: "senderName", required: false }] }], isInternal: [{ type: i0.Input, args: [{ isSignal: true, alias: "isInternal", required: false }] }], internalMessageBadgeText: [{ type: i0.Input, args: [{ isSignal: true, alias: "internalMessageBadgeText", required: false }] }], timestamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "timestamp", required: true }] }], showTimestamp: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTimestamp", required: false }] }], avatarInitials: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarInitials", required: false }] }], avatarType: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarType", required: false }] }], avatarSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatarSrc", required: false }] }], showAvatar: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAvatar", required: false }] }], clusterPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "clusterPosition", required: false }] }], attachments: [{ type: i0.Input, args: [{ isSignal: true, alias: "attachments", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], isNewMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "isNewMessage", required: false }] }], isDeleted: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDeleted", required: false }] }], showEditedHint: [{ type: i0.Input, args: [{ isSignal: true, alias: "showEditedHint", required: false }] }], editedHintText: [{ type: i0.Input, args: [{ isSignal: true, alias: "editedHintText", required: false }] }], attachmentClick: [{ type: i0.Output, args: ["attachmentClick"] }], longPress: [{ type: i0.Output, args: ["longPress"] }], messageClick: [{ type: i0.Output, args: ["messageClick"] }] } });
9962
10041
 
9963
10042
  /**
9964
10043
  * DsMobileListItemStaticComponent
@@ -15978,6 +16057,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
15978
16057
  const DEFAULT_CHAT_LABELS = {
15979
16058
  composerPlaceholder: 'Skriv en besked...',
15980
16059
  composerEditIndicator: 'Redigerer besked',
16060
+ internalToggleLabel: 'Intern besked',
16061
+ replyLabel: 'Besvar',
16062
+ internalMessageDescription: 'Interne beskeder er kun synlige for interne brugere. Lejeren kan ikke se denne besked.',
16063
+ internalMessageBadge: 'Intern besked',
15981
16064
  addMembersTitle: 'Tilføj beboere',
15982
16065
  youSenderName: 'You',
15983
16066
  actionCopy: 'Kopiér',
@@ -16301,7 +16384,7 @@ class DsMobileChatModalComponent {
16301
16384
  });
16302
16385
  // Executing the onSend callback if provided
16303
16386
  if (this.chatData.onSend) {
16304
- this.chatData.onSend(event.content, event.attachments || []);
16387
+ this.chatData.onSend(event.content, event.attachments || [], event.isInternal);
16305
16388
  }
16306
16389
  }
16307
16390
  /**
@@ -17020,6 +17103,8 @@ class DsMobileChatModalComponent {
17020
17103
  <ds-mobile-message-bubble
17021
17104
  [content]="deletePlaceholder(message)"
17022
17105
  [isOwnMessage]="message.isOwnMessage"
17106
+ [isInternal]="message.isInternal || false"
17107
+ [internalMessageBadgeText]="lbl.internalMessageBadge"
17023
17108
  [timestamp]="formatMessageTimestamp(message.timestamp)"
17024
17109
  [showTimestamp]="selectedMessageId() === message.id"
17025
17110
  [avatarInitials]="message.avatarInitials || ''"
@@ -17037,6 +17122,8 @@ class DsMobileChatModalComponent {
17037
17122
  <ds-mobile-message-bubble
17038
17123
  [content]="message.content"
17039
17124
  [isOwnMessage]="message.isOwnMessage"
17125
+ [isInternal]="message.isInternal || false"
17126
+ [internalMessageBadgeText]="lbl.internalMessageBadge"
17040
17127
  [timestamp]="formatMessageTimestamp(message.timestamp)"
17041
17128
  [showTimestamp]="selectedMessageId() === message.id"
17042
17129
  [avatarInitials]="message.avatarInitials || ''"
@@ -17107,6 +17194,10 @@ class DsMobileChatModalComponent {
17107
17194
  [autoFocus]="autoFocus()"
17108
17195
  [showAttachmentButton]="true"
17109
17196
  [showAiButton]="!!chatData.onAiReplyClick"
17197
+ [showInternalToggle]="chatData.showInternalToggle || false"
17198
+ [internalToggleLabel]="lbl.internalToggleLabel"
17199
+ [replyLabel]="lbl.replyLabel"
17200
+ [internalMessageDescription]="lbl.internalMessageDescription"
17110
17201
  (aiClick)="handleAiClick()"
17111
17202
  (messageSent)="handleMessageSent($event)"
17112
17203
  (editCancelled)="handleEditCancelled()"
@@ -17116,7 +17207,7 @@ class DsMobileChatModalComponent {
17116
17207
  </ds-mobile-message-composer>
17117
17208
  </div>
17118
17209
  </ds-mobile-modal-base>
17119
- `, isInline: true, styles: [".author-details{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.author-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.author-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:6px}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.lightbox-context .author-name,.overlay-context .author-name{color:#fffffff2}.lightbox-context .author-meta,.overlay-context .author-meta{color:#ffffffb3}.lightbox-context .author-meta .separator,.overlay-context .author-meta .separator{color:#ffffff80}.section-headline{font-size:var(--font-size-base);font-weight:600;color:var(--text-color-default-primary);padding:16px 0;margin:0;letter-spacing:-.2px;display:flex;align-items:center;gap:6px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--text-color-default-primary, #202227);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--text-color-default-secondary, #545B66);margin:0}.ghost-input-clean ::ng-deep .ds-input,.ghost-input-clean ::ng-deep .ds-textarea,.ghost-input-clean ::ng-deep .textarea-container{outline:none!important;border:none!important;padding:0!important}:host ::ng-deep ds-textarea.ghost-input-clean .textarea-container{padding:0!important}.ghost-input-clean ::ng-deep .ds-input:hover,.ghost-input-clean ::ng-deep .ds-textarea:hover,.ghost-input-clean ::ng-deep .textarea-container:hover,.ghost-input-clean ::ng-deep .ds-input:focus,.ghost-input-clean ::ng-deep .ds-textarea:focus,.ghost-input-clean ::ng-deep .textarea-container:focus,.ghost-input-clean ::ng-deep .ds-input:focus-within,.ghost-input-clean ::ng-deep .ds-textarea:focus-within,.ghost-input-clean ::ng-deep .textarea-container:focus-within{outline:none!important;border:none!important;box-shadow:none!important}.ghost-input-clean ::ng-deep textarea{outline:none!important;border:none!important;box-shadow:none!important;resize:none!important}.ghost-input-clean ::ng-deep textarea:hover,.ghost-input-clean ::ng-deep textarea:focus{outline:none!important;border:none!important;box-shadow:none!important}\n", ":host ::ng-deep .modal-content-container{padding-top:0}:host-context(.chat-modal--settings) ::ng-deep .modal-header{border-bottom:none}:host-context(.chat-modal--add-members) ::ng-deep .modal-header{border-bottom:1px solid var(--border-color-default)}.chat-messages-container{display:flex;flex-direction:column;width:100%}.chat-system-line{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.35;color:var(--text-color-default-tertiary, #737373);text-align:center;margin:8px 24px}.chat-avatar-section{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 0 0;background:var(--color-background-neutral-primary, #ffffff)}.chat-avatar-info{display:flex;flex-direction:column;align-items:center;gap:4px}.chat-avatar-name{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a)}.chat-avatar-role{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;color:var(--color-text-secondary, #666666)}.chat-avatar-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:4px}.messages-list{display:flex;flex-direction:column;width:100%;padding:16px 0 0;align-items:stretch}.messages-list ds-mobile-message-bubble{width:100%;display:flex}.timestamp-header{display:flex;justify-content:center;margin:16px 0 8px}.timestamp-text{font-family:Brockmann,sans-serif;font-size:12px;font-weight:400;color:var(--color-text-secondary);padding:4px 12px}.message-file-attachments{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;padding:0 20px 0 60px;max-width:100%}.message-file-attachments.own-message{padding:0 0 0 96px;align-items:flex-end}.message-file-attachments ds-mobile-card-inline-file{max-width:280px;width:100%}.message-image-attachment{width:96px;height:96px;cursor:pointer;border-radius:12px;overflow:hidden;position:relative;transition:transform .2s ease;border:1px solid var(--border-color-default, #e5e5e5)}.message-image-attachment:active{transform:scale(.98)}.message-image-attachment .inline-image{width:100%;height:100%;display:block;-o-object-fit:cover;object-fit:cover}.group-settings-back-btn{flex-shrink:0;border-radius:50%}.group-settings-back-btn::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsAvatarWithBadgeComponent, selector: "ds-avatar-with-badge", inputs: ["type", "size", "initials", "src", "iconName", "showBadge", "badgePosition"] }, { kind: "component", type: DsMobileVendorAvatarComponent, selector: "ds-mobile-vendor-avatar", inputs: ["name", "logo", "size"] }, { kind: "component", type: DsMobileMessageComposerComponent, selector: "ds-mobile-message-composer", inputs: ["avatarInitials", "avatarType", "avatarSrc", "placeholder", "sendButtonLabel", "attachmentButtonLabel", "showAttachmentButton", "showAiButton", "editIndicatorText", "replyIndicatorText", "enableMentions", "mentionUsers", "autoFocus"], outputs: ["messageSent", "editCancelled", "replyCancelled", "mentionSelected", "attachmentClicked", "attachmentsChanged", "aiClick"] }, { kind: "component", type: DsMobileMessageBubbleComponent, selector: "ds-mobile-message-bubble", inputs: ["content", "isOwnMessage", "senderName", "timestamp", "showTimestamp", "avatarInitials", "avatarType", "avatarSrc", "showAvatar", "clusterPosition", "attachments", "clickable", "isNewMessage", "isDeleted", "showEditedHint", "editedHintText"], outputs: ["attachmentClick", "longPress", "messageClick"] }, { kind: "component", type: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["headerTitleInteractive", "textLoading", "textErrorTitle", "showHeader"], outputs: ["titleClick"] }, { kind: "component", type: DsMobileCardInlineFileComponent, selector: "ds-mobile-card-inline-file", inputs: ["fileName", "fileSize", "variant", "layout", "fileUrl"], outputs: ["fileClick"] }, { kind: "component", type: DsMobileSystemMessageBannerComponent, selector: "ds-mobile-system-message-banner", inputs: ["message", "iconName", "afterTimestamp"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsIconButtonComponent, selector: "ds-icon-button", inputs: ["variant", "size", "icon", "disabled", "loading", "pressed", "expanded", "ariaLabel", "tooltip", "tooltipDisabled", "tooltipPlacement"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "paddingDesktop", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileGroupAvatarStackComponent, selector: "ds-mobile-group-avatar-stack", inputs: ["members", "customAvatarUrl", "size", "layout", "currentUserId"] }, { kind: "component", type: DsMobileListSearchComponent, selector: "ds-mobile-list-search", inputs: ["placeholder", "ariaLabel", "value", "showDivider"], outputs: ["valueChange"] }, { kind: "component", type: DsMobileChatGroupPanelsComponent, selector: "ds-mobile-chat-group-panels", inputs: ["panelView", "group", "membersForStack", "participantName", "currentUserId", "isAdmin", "canEditGroupDetails", "canAddGroupMembers", "canLeaveGroup", "canRemoveMember", "canMessageMember", "allTenantsForPicker", "searchQuery", "labels"], outputs: ["navigateTo", "renameGroup", "setGroupAvatarUrl", "addMembers", "removeMember", "messageMember", "leaveGroup"] }] });
17210
+ `, isInline: true, styles: [".author-details{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.author-name{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:600;line-height:20px;letter-spacing:-.3px;color:var(--color-text-primary, #1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.author-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;letter-spacing:-.26px;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:6px}.author-meta .separator{color:var(--color-text-tertiary, #a0a0a0)}.lightbox-context .author-name,.overlay-context .author-name{color:#fffffff2}.lightbox-context .author-meta,.overlay-context .author-meta{color:#ffffffb3}.lightbox-context .author-meta .separator,.overlay-context .author-meta .separator{color:#ffffff80}.section-headline{font-size:var(--font-size-base);font-weight:600;color:var(--text-color-default-primary);padding:16px 0;margin:0;letter-spacing:-.2px;display:flex;align-items:center;gap:6px}.empty-state-title{font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--text-color-default-primary, #202227);margin:0 0 8px}.empty-state-description{font-family:Brockmann,sans-serif;font-size:var(--font-size-sm);font-weight:400;line-height:1.4;color:var(--text-color-default-secondary, #545B66);margin:0}.ghost-input-clean ::ng-deep .ds-input,.ghost-input-clean ::ng-deep .ds-textarea,.ghost-input-clean ::ng-deep .textarea-container{outline:none!important;border:none!important;padding:0!important}:host ::ng-deep ds-textarea.ghost-input-clean .textarea-container{padding:0!important}.ghost-input-clean ::ng-deep .ds-input:hover,.ghost-input-clean ::ng-deep .ds-textarea:hover,.ghost-input-clean ::ng-deep .textarea-container:hover,.ghost-input-clean ::ng-deep .ds-input:focus,.ghost-input-clean ::ng-deep .ds-textarea:focus,.ghost-input-clean ::ng-deep .textarea-container:focus,.ghost-input-clean ::ng-deep .ds-input:focus-within,.ghost-input-clean ::ng-deep .ds-textarea:focus-within,.ghost-input-clean ::ng-deep .textarea-container:focus-within{outline:none!important;border:none!important;box-shadow:none!important}.ghost-input-clean ::ng-deep textarea{outline:none!important;border:none!important;box-shadow:none!important;resize:none!important}.ghost-input-clean ::ng-deep textarea:hover,.ghost-input-clean ::ng-deep textarea:focus{outline:none!important;border:none!important;box-shadow:none!important}\n", ":host ::ng-deep .modal-content-container{padding-top:0}:host-context(.chat-modal--settings) ::ng-deep .modal-header{border-bottom:none}:host-context(.chat-modal--add-members) ::ng-deep .modal-header{border-bottom:1px solid var(--border-color-default)}.chat-messages-container{display:flex;flex-direction:column;width:100%}.chat-system-line{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs, 12px);font-weight:400;line-height:1.35;color:var(--text-color-default-tertiary, #737373);text-align:center;margin:8px 24px}.chat-avatar-section{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 0 0;background:var(--color-background-neutral-primary, #ffffff)}.chat-avatar-info{display:flex;flex-direction:column;align-items:center;gap:4px}.chat-avatar-name{display:flex;align-items:center;gap:6px;font-family:Brockmann,sans-serif;font-size:var(--font-size-base);font-weight:600;line-height:1.3;color:var(--color-text-primary, #1a1a1a)}.chat-avatar-role{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;color:var(--color-text-secondary, #666666)}.chat-avatar-meta{font-family:Brockmann,sans-serif;font-size:var(--font-size-xs);font-weight:400;line-height:1.2;color:var(--color-text-tertiary, #737373);display:flex;align-items:center;gap:4px}.messages-list{display:flex;flex-direction:column;width:100%;padding:16px 0 0;align-items:stretch}.messages-list ds-mobile-message-bubble{width:100%;display:flex}.timestamp-header{display:flex;justify-content:center;margin:16px 0 8px}.timestamp-text{font-family:Brockmann,sans-serif;font-size:12px;font-weight:400;color:var(--color-text-secondary);padding:4px 12px}.message-file-attachments{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;padding:0 20px 0 60px;max-width:100%}.message-file-attachments.own-message{padding:0 0 0 96px;align-items:flex-end}.message-file-attachments ds-mobile-card-inline-file{max-width:280px;width:100%}.message-image-attachment{width:96px;height:96px;cursor:pointer;border-radius:12px;overflow:hidden;position:relative;transition:transform .2s ease;border:1px solid var(--border-color-default, #e5e5e5)}.message-image-attachment:active{transform:scale(.98)}.message-image-attachment .inline-image{width:100%;height:100%;display:block;-o-object-fit:cover;object-fit:cover}.group-settings-back-btn{flex-shrink:0;border-radius:50%}.group-settings-back-btn::ng-deep button{border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: DsAvatarWithBadgeComponent, selector: "ds-avatar-with-badge", inputs: ["type", "size", "initials", "src", "iconName", "showBadge", "badgePosition"] }, { kind: "component", type: DsMobileVendorAvatarComponent, selector: "ds-mobile-vendor-avatar", inputs: ["name", "logo", "size"] }, { kind: "component", type: DsMobileMessageComposerComponent, selector: "ds-mobile-message-composer", inputs: ["avatarInitials", "avatarType", "avatarSrc", "placeholder", "sendButtonLabel", "attachmentButtonLabel", "showAttachmentButton", "showAiButton", "editIndicatorText", "replyIndicatorText", "enableMentions", "mentionUsers", "showInternalToggle", "internalToggleLabel", "replyLabel", "internalMessageDescription", "autoFocus"], outputs: ["messageSent", "editCancelled", "replyCancelled", "mentionSelected", "attachmentClicked", "attachmentsChanged", "aiClick"] }, { kind: "component", type: DsMobileMessageBubbleComponent, selector: "ds-mobile-message-bubble", inputs: ["content", "isOwnMessage", "senderName", "isInternal", "internalMessageBadgeText", "timestamp", "showTimestamp", "avatarInitials", "avatarType", "avatarSrc", "showAvatar", "clusterPosition", "attachments", "clickable", "isNewMessage", "isDeleted", "showEditedHint", "editedHintText"], outputs: ["attachmentClick", "longPress", "messageClick"] }, { kind: "component", type: DsMobileModalBaseComponent, selector: "ds-mobile-modal-base", inputs: ["headerTitleInteractive", "textLoading", "textErrorTitle", "showHeader"], outputs: ["titleClick"] }, { kind: "component", type: DsMobileCardInlineFileComponent, selector: "ds-mobile-card-inline-file", inputs: ["fileName", "fileSize", "variant", "layout", "fileUrl"], outputs: ["fileClick"] }, { kind: "component", type: DsMobileSystemMessageBannerComponent, selector: "ds-mobile-system-message-banner", inputs: ["message", "iconName", "afterTimestamp"] }, { kind: "component", type: DsIconComponent, selector: "ds-icon", inputs: ["name", "size", "color", "interactive"] }, { kind: "component", type: DsIconButtonComponent, selector: "ds-icon-button", inputs: ["variant", "size", "icon", "disabled", "loading", "pressed", "expanded", "ariaLabel", "tooltip", "tooltipDisabled", "tooltipPlacement"], outputs: ["clicked", "focused", "blurred"] }, { kind: "component", type: DsMobileSectionComponent, selector: "ds-mobile-section", inputs: ["headline", "icon", "linkText", "padding", "paddingDesktop", "gap", "contentGap", "showBorder", "overflow"], outputs: ["linkClick"] }, { kind: "component", type: DsMobileGroupAvatarStackComponent, selector: "ds-mobile-group-avatar-stack", inputs: ["members", "customAvatarUrl", "size", "layout", "currentUserId"] }, { kind: "component", type: DsMobileListSearchComponent, selector: "ds-mobile-list-search", inputs: ["placeholder", "ariaLabel", "value", "showDivider"], outputs: ["valueChange"] }, { kind: "component", type: DsMobileChatGroupPanelsComponent, selector: "ds-mobile-chat-group-panels", inputs: ["panelView", "group", "membersForStack", "participantName", "currentUserId", "isAdmin", "canEditGroupDetails", "canAddGroupMembers", "canLeaveGroup", "canRemoveMember", "canMessageMember", "allTenantsForPicker", "searchQuery", "labels"], outputs: ["navigateTo", "renameGroup", "setGroupAvatarUrl", "addMembers", "removeMember", "messageMember", "leaveGroup"] }] });
17120
17211
  }
17121
17212
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DsMobileChatModalComponent, decorators: [{
17122
17213
  type: Component,
@@ -17304,6 +17395,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
17304
17395
  <ds-mobile-message-bubble
17305
17396
  [content]="deletePlaceholder(message)"
17306
17397
  [isOwnMessage]="message.isOwnMessage"
17398
+ [isInternal]="message.isInternal || false"
17399
+ [internalMessageBadgeText]="lbl.internalMessageBadge"
17307
17400
  [timestamp]="formatMessageTimestamp(message.timestamp)"
17308
17401
  [showTimestamp]="selectedMessageId() === message.id"
17309
17402
  [avatarInitials]="message.avatarInitials || ''"
@@ -17321,6 +17414,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
17321
17414
  <ds-mobile-message-bubble
17322
17415
  [content]="message.content"
17323
17416
  [isOwnMessage]="message.isOwnMessage"
17417
+ [isInternal]="message.isInternal || false"
17418
+ [internalMessageBadgeText]="lbl.internalMessageBadge"
17324
17419
  [timestamp]="formatMessageTimestamp(message.timestamp)"
17325
17420
  [showTimestamp]="selectedMessageId() === message.id"
17326
17421
  [avatarInitials]="message.avatarInitials || ''"
@@ -17391,6 +17486,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
17391
17486
  [autoFocus]="autoFocus()"
17392
17487
  [showAttachmentButton]="true"
17393
17488
  [showAiButton]="!!chatData.onAiReplyClick"
17489
+ [showInternalToggle]="chatData.showInternalToggle || false"
17490
+ [internalToggleLabel]="lbl.internalToggleLabel"
17491
+ [replyLabel]="lbl.replyLabel"
17492
+ [internalMessageDescription]="lbl.internalMessageDescription"
17394
17493
  (aiClick)="handleAiClick()"
17395
17494
  (messageSent)="handleMessageSent($event)"
17396
17495
  (editCancelled)="handleEditCancelled()"
@@ -33572,6 +33671,29 @@ class MobileInquiryDetailPageComponent {
33572
33671
  isOwnMessage: false,
33573
33672
  avatarInitials: messageThread.senderInitials,
33574
33673
  avatarType: 'initials',
33674
+ },
33675
+ {
33676
+ id: '11',
33677
+ content: 'Note til intern brug: Tjek også om ventilationen skal renses under besøget.',
33678
+ senderId: 'current-user',
33679
+ senderName: 'You',
33680
+ timestamp: new Date(Date.now() - 30000),
33681
+ isOwnMessage: true,
33682
+ isInternal: true,
33683
+ avatarInitials: this.userService.avatarInitials(),
33684
+ avatarType: 'initials',
33685
+ },
33686
+ {
33687
+ id: '12',
33688
+ content: 'Modtaget, jeg tager udstyr med til ventilationen også.',
33689
+ senderId: messageId,
33690
+ senderName: messageThread.senderName,
33691
+ senderRole: messageThread.role,
33692
+ timestamp: new Date(Date.now() - 10000),
33693
+ isOwnMessage: false,
33694
+ isInternal: true,
33695
+ avatarInitials: messageThread.senderInitials,
33696
+ avatarType: 'initials',
33575
33697
  }
33576
33698
  ],
33577
33699
  currentUserId: 'current-user',